def initialize_copy(source)
      @ptr = FFI::AutoPointer.new(
        FFIGeos.GEOSCoordSeq_clone_r(Geos.current_handle_pointer, source.ptr),
        self.class.method(:release)
      )

      @x = CoordinateAccessor.new(self, 0)
      @y = CoordinateAccessor.new(self, 1)
      @z = CoordinateAccessor.new(self, 2)
    end
def initialize_copy(source)
      @ptr = FFI::AutoPointer.new(
        FFIGeos.GEOSCoordSeq_clone_r(Geos.current_handle_pointer, source.ptr),
        self.class.method(:release)
      )

      @x = CoordinateAccessor.new(self, 0)
      @y = CoordinateAccessor.new(self, 1)
      @z = CoordinateAccessor.new(self, 2)
    end
:call-seq:
   new(ptr, auto_free = true, parent = nil)
   new(size = 0, dimensions = 0)
   new(options)
   new(points)

 The ptr version of the initializer is for internal use.

 new(points) will try to glean the size and dimensions of your
 CoordinateSequence from an Array of points. The Array should contain
 uniform-sized Arrays which represent the [ x, y, z ] values of your
 coordinates.