def parse(data)
      return unless data

      @parse_object_id ||= data[Protocol::KEY_OBJECT_ID]

      if data.key? Protocol::KEY_CREATED_AT
        @created_at = DateTime.parse data[Protocol::KEY_CREATED_AT]
      end

      if data.key? Protocol::KEY_UPDATED_AT
        @updated_at = DateTime.parse data[Protocol::KEY_UPDATED_AT]
      end

      data.each do |k, v|
        k = k.to_s if k.is_a? Symbol

        self[k] = v if k != Parse::Protocol::KEY_TYPE
      end

      self
    end
def parse(data)
      return unless data

      @parse_object_id ||= data[Protocol::KEY_OBJECT_ID]

      if data.key? Protocol::KEY_CREATED_AT
        @created_at = DateTime.parse data[Protocol::KEY_CREATED_AT]
      end

      if data.key? Protocol::KEY_UPDATED_AT
        @updated_at = DateTime.parse data[Protocol::KEY_UPDATED_AT]
      end

      data.each do |k, v|
        k = k.to_s if k.is_a? Symbol

        self[k] = v if k != Parse::Protocol::KEY_TYPE
      end

      self
    end
Merge a hash parsed from the JSON representation into
 this instance. This will extract the reserved fields,
 merge the hash keys, and then ensure that the reserved
 fields do not occur in the underlying hash storage.