function getData( polygonVertexIndex, polygonIndex, vertexIndex, infoObject ) {

								var GetData = {

									ByPolygonVertex: {

										/**
										 * Function uses the infoObject and given indices to return value array of object.
										 * @param {number} polygonVertexIndex - Index of vertex in draw order (which index of the index buffer refers to this vertex).
										 * @param {number} polygonIndex - Index of polygon in geometry.
										 * @param {number} vertexIndex - Index of vertex inside vertex buffer (used because some data refers to old index buffer that we don't use anymore).
										 * @param {{datasize: number, buffer: number[], indices: number[], mappingType: string, referenceType: string}} infoObject - Object containing data and how to access data.
										 * @returns {number[]}
										 */
										Direct: function ( polygonVertexIndex, polygonIndex, vertexIndex, infoObject ) {

											return infoObject.buffer.slice( ( polygonVertexIndex * infoObject.dataSize ), ( polygonVertexIndex * infoObject.dataSize ) + infoObject.dataSize );

										},

										/**
										 * Function uses the infoObject and given indices to return value array of object.
										 * @param {number} polygonVertexIndex - Index of vertex in draw order (which index of the index buffer refers to this vertex).
										 * @param {number} polygonIndex - Index of polygon in geometry.
										 * @param {number} vertexIndex - Index of vertex inside vertex buffer (used because some data refers to old index buffer that we don't use anymore).
										 * @param {{datasize: number, buffer: number[], indices: number[], mappingType: string, referenceType: string}} infoObject - Object containing data and how to access data.
										 * @returns {number[]}
										 */
										IndexToDirect: function ( polygonVertexIndex, polygonIndex, vertexIndex, infoObject ) {

											var index = infoObject.indices[ polygonVertexIndex ];
											return infoObject.buffer.slice( ( index * infoObject.dataSize ), ( index * infoObject.dataSize ) + infoObject.dataSize );

										}

									},

									ByPolygon: {

										/**
										 * Function uses the infoObject and given indices to return value array of object.
										 * @param {number} polygonVertexIndex - Index of vertex in draw order (which index of the index buffer refers to this vertex).
										 * @param {number} polygonIndex - Index of polygon in geometry.
										 * @param {number} vertexIndex - Index of vertex inside vertex buffer (used because some data refers to old index buffer that we don't use anymore).
										 * @param {{datasize: number, buffer: number[], indices: number[], mappingType: string, referenceType: string}} infoObject - Object containing data and how to access data.
										 * @returns {number[]}
										 */
										Direct: function ( polygonVertexIndex, polygonIndex, vertexIndex, infoObject ) {

											return infoObject.buffer.slice( polygonIndex * infoObject.dataSize, polygonIndex * infoObject.dataSize + infoObject.dataSize );

										},

										/**
										 * Function uses the infoObject and given indices to return value array of object.
										 * @param {number} polygonVertexIndex - Index of vertex in draw order (which index of the index buffer refers to this vertex).
										 * @param {number} polygonIndex - Index of polygon in geometry.
										 * @param {number} vertexIndex - Index of vertex inside vertex buffer (used because some data refers to old index buffer that we don't use anymore).
										 * @param {{datasize: number, buffer: number[], indices: number[], mappingType: string, referenceType: string}} infoObject - Object containing data and how to access data.
										 * @returns {number[]}
										 */
										IndexToDirect: function ( polygonVertexIndex, polygonIndex, vertexIndex, infoObject ) {

											var index = infoObject.indices[ polygonIndex ];
											return infoObject.buffer.slice( index * infoObject.dataSize, index * infoObject.dataSize + infoObject.dataSize );

										}

									},

									AllSame: {

										/**
										 * Function uses the infoObject and given indices to return value array of object.
										 * @param {number} polygonVertexIndex - Index of vertex in draw order (which index of the index buffer refers to this vertex).
										 * @param {number} polygonIndex - Index of polygon in geometry.
										 * @param {number} vertexIndex - Index of vertex inside vertex buffer (used because some data refers to old index buffer that we don't use anymore).
										 * @param {{datasize: number, buffer: number[], indices: number[], mappingType: string, referenceType: string}} infoObject - Object containing data and how to access data.
										 * @returns {number[]}
										 */
										IndexToDirect: function ( polygonVertexIndex, polygonIndex, vertexIndex, infoObject ) {

											return infoObject.buffer.slice( infoObject.indices[ 0 ] * infoObject.dataSize, infoObject.indices[ 0 ] * infoObject.dataSize + infoObject.dataSize );

										}

									}

								};

								return GetData[ infoObject.mappingType ][ infoObject.referenceType ]( polygonVertexIndex, polygonIndex, vertexIndex, infoObject );

							}
Function uses the infoObject and given indices to return value array of object.
@param {number} polygonVertexIndex - Index of vertex in draw order (which index of the index buffer refers to this vertex).
@param {number} polygonIndex - Index of polygon in geometry.
@param {number} vertexIndex - Index of vertex inside vertex buffer (used because some data refers to old index buffer that we don't use anymore).
@param {{datasize: number, buffer: number[], indices: number[], mappingType: string, referenceType: string}} infoObject - Object containing data and how to access data.
@returns {number[]}