code: GeometryCursor prepareVector_(VertexDescription descr, int dimensionMask,
  			Geometry[] res_vec) {
  		int inext = 0;
  		if ((dimensionMask & 1) != 0) {
  			if (res_vec[0] == null)
  				res_vec[0] = new MultiPoint(descr);
  			inext++;
  		} else {
  			for (int i = 0; i < res_vec.length - 1; i++)
  				res_vec[i] = res_vec[i + 1];
  		}
  
  		if ((dimensionMask & 2) != 0) {
  			if (res_vec[inext] == null)
  				res_vec[inext] = new Polyline(descr);
  			inext++;
  		} else {
  			for (int i = inext; i < res_vec.length - 1; i++)
  				res_vec[i] = res_vec[i + 1];
  		}
  
  		if ((dimensionMask & 4) != 0) {
  			if (res_vec[inext] == null)
  				res_vec[inext] = new Polygon(descr);
  			inext++;
  		} else {
  			for (int i = inext; i < res_vec.length - 1; i++)
  				res_vec[i] = res_vec[i + 1];
  		}
  		
  		if (inext != 3) {
  			Geometry[] r = new Geometry[inext];
  			for (int i = 0; i < inext; i++)
  				r[i] = res_vec[i];
  
  			return new SimpleGeometryCursor(r);
  		} else {
  			return new SimpleGeometryCursor(res_vec);
  		}
  	}
docs: as indicated with the dimensionMask