def matches_without_owner_attribute?(other)
      return false unless other.class == self.class
      # check the primary key
      return false unless self.class.primary_key_attributes.all? do |ka|
        kv = send(ka)
        okv = other.send(ka)
        kv.nil? or okv.nil? or kv == okv
      end
      # match on the non-owner secondary key
      oas = self.class.owner_attributes
      self.class.secondary_key_attributes.all? do |ka|
        oas.include?(ka) or other.matches_attribute_value?(ka, send(ka))
      end
    end
def matches_without_owner_attribute?(other)
      return false unless other.class == self.class
      # check the primary key
      return false unless self.class.primary_key_attributes.all? do |ka|
        kv = send(ka)
        okv = other.send(ka)
        kv.nil? or okv.nil? or kv == okv
      end
      # match on the non-owner secondary key
      oas = self.class.owner_attributes
      self.class.secondary_key_attributes.all? do |ka|
        oas.include?(ka) or other.matches_attribute_value?(ka, send(ka))
      end
    end
Returns whether this domain object matches the other domain object as follows:
 * The classes are the same.
 * There are not conflicting primary key values.
 * Each non-owner secondary key value matches.

 Note that objects without a secondary key match.

 @param (see #match_in)
 @return [Boolean] whether there is a non-owner match