def inverse_property(prop, klass=nil)
      inv_prop = prop.inverse_property
      return inv_prop if inv_prop
      if prop.dependent? and klass then
        klass.owner_property_hash.each { |otype, op|
        return op if self <= otype }
      end
    end
def inverse_property(prop, klass=nil)
      inv_prop = prop.inverse_property
      return inv_prop if inv_prop
      if prop.dependent? and klass then
        klass.owner_property_hash.each { |otype, op|
        return op if self <= otype }
      end
    end
Returns the inverse of the given attribute. If the attribute has an #{Property#inverse_property},
 then that attribute's inverse is returned. Otherwise, if the attribute is an #{Property#owner?},
 then the target class dependent attribute which matches this type is returned, if it exists.

 @param [Property] prop the subject attribute
 @param [Class, nil] klass the target class
 @return [Property, nil] the inverse attribute, if any