}         // public override string ToString()

        /// <summary>
        /// Projects each item in a geometry collection.
        /// </summary>
        /// <param name="coordinateTransform">The transformation to use.</param>
        /// <returns>The resulting projected geometry.</returns>
        public override Geometry Project(ICoordinateTransformation coordinateTransform)
        {
            if (coordinateTransform == null)
            {
                throw new ArgumentNullException("coordinateTransform");
            }
            if (!(coordinateTransform.MathTransform is Geotools.CoordinateTransformations.MapProjection))
            {
                throw new ArgumentException("CoordinateTransform must be a MapProjection.");
            }

            Geometry[] geometryArray     = new Geometry[_geometries.Length];
            Geometry   geometry          = null;
            Geometry   projectedGeometry = null;

            for (int i = 0; i < _geometries.Length; i++)
            {
                geometry          = (Geometry)_geometries.GetValue(i);
                projectedGeometry = (Geometry)geometry.Project(coordinateTransform);
                geometryArray[i]  = projectedGeometry;
            }

            return(_geometryFactory.CreateGeometryCollection(geometryArray));
        }