def belongs_to?(value, domain, target_domain = domain)
      if domain.is_a?(Proc) and domain.arity==2
        domain.call(value, target_domain)
      else
        domain.respond_to?(:===) && (domain === value)
      end
    end
def belongs_to?(value, domain, target_domain = domain)
      if domain.is_a?(Proc) and domain.arity==2
        domain.call(value, target_domain)
      else
        domain.respond_to?(:===) && (domain === value)
      end
    end
Returns true if `value` can be considered as a valid element of the
 domain `domain`, false otherwise.

 @param [Object] value any ruby value
 @param [Domain] domain a domain (mimic Domain)
 @return [Boolean] true if `value` belongs to `domain`, false otherwise