function genFcn( dims ) {
	var len;
	var n;
	var f;
	var i;

	// Code generation. Start with the function definition:
	f = 'return function flattenArray(x){';

	// Create the function body...
	len = dims.length;
	n = len - 1;

	// Create the variables...
	f += 'var o=[];var ';
	for ( i = 0; i < len; i++ ) {
		f += 'i' + i;
		if ( i < n ) {
			f += ',';
		} else {
			f += ';';
		}
	}
	// Create the nested for loops...
	for ( i = 0; i < len; i++ ) {
		f += 'for(i' + i + '=0;i' + i + '<' + dims[ i ] + ';i' + i + '++){';
	}
	// Create the code which accesses the nested array values and pushes them onto the flattened array.
	f += 'o.push(x';
	for ( i = 0; i < len; i++ ) {
		f += '[i' + i + ']';
	}
	f += ');';

	// Closing braces...
	for ( i = 0; i < len; i++ ) {
		f += '}';
	}
	f += 'return o;';

	// Close the function:
	f += '}';

	// Add a source directive for debugging:
	f += '//# sourceURL=flatten_array.gen_fcn.js';

	// Create the function in the global scope:
	return ( new Fcn( f ) )();

	/*
	* e.g.,
	*
	*   function flattenArray( x ) {
	*       var o = [];
	*       var i0, i1;
	*       for ( i0 = 0; i0 < 2; i0++ ) {
	*           for ( i1 = 0; i1 < 2; i1++ ) {
	*               o.push( x[i0][i1] );
	*           }
	*       }
	*       return o;
	*   }
	*/
}
Returns a function to flatten an array containing elements all having the same dimensions.

@private
@param {PositiveIntegerArray} dims - dimensions
@returns {Function} flatten function