     open override class func geometryTypeId() -> Int32 {
         return 4 // GEOS_MULTIPOINT
     }
-    public required init(GEOSGeom: OpaquePointer, destroyOnDeinit: Bool) {
-        super.init(GEOSGeom: GEOSGeom, destroyOnDeinit: destroyOnDeinit)
-    }
-    fileprivate convenience init(GEOSGeom: OpaquePointer) {
-        self.init(GEOSGeom: GEOSGeom, destroyOnDeinit: true)
-    }
     public convenience init?(points: Array<Waypoint>) {
         let coordsPointer = UnsafeMutablePointer<OpaquePointer?>.allocate(capacity: points.count)
         defer { coordsPointer.deallocate(capacity: points.count) }

    
    fileprivate(set) open lazy var geometries: GeometriesCollection<T> = {
        return GeometriesCollection<T>(geometry: self.geometry)
        }()
    public required init(GEOSGeom: OpaquePointer, destroyOnDeinit: Bool) {
        super.init(GEOSGeom: GEOSGeom, destroyOnDeinit: destroyOnDeinit)
    }
    fileprivate convenience init(GEOSGeom: OpaquePointer) {
        self.init(GEOSGeom: GEOSGeom, destroyOnDeinit: true)
    }

/**
    - returns: An Array of geometries in this GeometryCollection.
*/
    public convenience init?(geometries: Array<Geometry>) {
        let geometriesPointer = UnsafeMutablePointer<OpaquePointer?>.allocate(capacity: geometries.count)
        defer { geometriesPointer.deallocate(capacity: geometries.count) }

    open override class func geometryTypeId() -> Int32 {
        return 6 // GEOS_MULTIPOLYGON
    }
    public convenience init?(polygons: Array<Polygon>) {
        let coordsPointer = UnsafeMutablePointer<OpaquePointer?>.allocate(capacity: polygons.count)
        defer { coordsPointer.deallocate(capacity: polygons.count) }
