def deep_dup
      pointer = FFI::MemoryPointer.new(self.class.ary_type, max_size)
      pointer.write_bytes(self.bytes)
      self.class.new(pointer)
    end
def deep_dup
      pointer = FFI::MemoryPointer.new(self.class.ary_type, max_size)
      pointer.write_bytes(self.bytes)
      self.class.new(pointer)
    end
@todo
def to_ary

end

 @return [ArrayPointerSync]
 dup copies everything to a new pointer, is this needed? does it copy
 @return [ArrayPointerSync]