Blender 2.74 and the FBX Exporter

I’ve written a FBX file loader for my 3D graphics application. The FBX file was created with Blender and saved in ASCII format. I’m having trouble converting the UV data. In the file is the following:
LayerElementUV: 0 {
Version: 101
Name: “UVMap”
MappingInformationType: “ByPolygonVertex”
ReferenceInformationType: “IndexToDirect”
UV: 0.000000,1.000000,1.000000,0.000000,0.000000,0.000000,1.000000,1.000000
UVIndex: 2,1,3,0,2,1,3,0,2,1,3,0,2,1,3,0,2,1,3,0,2,1,3,0,2,1,3,0,2,1,3,0,2,1,3,0,2,1,3,0,2,1,3,0,2,1,3,0,2,1,3,0,2,1,3,0,2,1,3,0,2,1,3,0,
2,1,3,0,2,1,3,0
} The mesh for this file has 3 cubes…all of which have quads for faces( ie. 4 vertices per face and 6 faces per cube means 72 vertex references ).
My solution is to iterate the faces of the mesh and set the vertex UV coordinates:
// inst. uv array
meshData._uvs = new Vector2[meshData._positions.Length];

                    meshData.HasUVs = true;

                    bool[] b = new bool[meshData._positions.Length];

// iterate mesh faces( there is an array of 4 indices per face )
int niUV = 0;
for(int iFace = 0; iFace < meshData._faceIndices.Count; ++iFace)
{
// position indices
int[] posIndices = meshData._faceIndices[iFace];

                        // index count
                        int ncIndices = posIndices.Length;

                        for (int iVertex = 0; iVertex &lt; ncIndices; ++iVertex)
                        {
                            // position index
                            int niPos = posIndices[iVertex];

                            // validate parsed state
                            if (b[niPos])
                                continue;

                            // set parsed state
                            b[niPos] = true;

                            // uv index
                            int index = Convert.ToInt32(uvIndex.Properties[niUV++]);

                            // scale by two in order to index into uv buffer( which is comprised of floating point variables )
                            index *= 2;

                            // set us
                            meshData._uvs[niPos] = new Vector2(Convert.ToSingle(uvs.Properties[index + 0]), Convert.ToSingle(uvs.Properties[index + 1]));
                        }
                    }  As I understand it, each UVIndex corresponds to a vertex found within  a polygon. So, the first face has UVs: 2, 1, 3, and 0. And the second  face has UVs: 2, 1, 3, and 0.

Here are position indices for first face: 1, 3, 2, 0 Here are position indices for second face: 3, 7, 6, 2
Notice that vertex reference ‘3’ appears in the first and second face. If I am mapping the UVs by polygon vertex(as is indicated in file) then vertex reference ‘3’ would have UV ‘1’ in the first face and UV ‘2’ in the second face…which doesn’t make any sense.
My question is this: Am I misunderstanding the method of mapping UVs to their vertices or is this file(exported from Blender 2.74) incorrect?