code: def updates(include_all = false)
        h = {}
        changed.each do |key|
          next if include_all == false && Parse::Properties::BASE_KEYS.include?(key.to_sym)
          # lookup the remote Parse field name incase it is different from the local attribute name
          remote_field = self.field_map[key.to_sym] || key
          h[remote_field] = send key
          # make an exception to Parse::Objects, we should return a pointer to them instead
          h[remote_field] = h[remote_field].parse_pointers if h[remote_field].is_a?(Parse::PointerCollectionProxy)
          h[remote_field] = h[remote_field].pointer if h[remote_field].respond_to?(:pointer)
        end
        h
      end
docs: Returns a hash of all the changes that have been made to the object. By default
   changes to the Parse::Properties::BASE_KEYS are ignored unless you pass true as
   an argument.
   @param include_all [Boolean] whether to include all keys in result.
   @return [Hash] a hash containing only the change information.
   @see Properties::BASE_KEYS