def methods_available?(obj)
      methods.each do |m|
        if obj.is_a?(Class)
          return false unless obj.public_method_defined?(m)
        else
          return false unless obj.respond_to?(m)
        end
      end
      true
    end
def methods_available?(obj)
      methods.each do |m|
        if obj.is_a?(Class)
          return false unless obj.public_method_defined?(m)
        else
          return false unless obj.respond_to?(m)
        end
      end
      true
    end
Checks whether all feature predicate methods are available.
 @param obj [Object, Class] the object or class to check if feature predicates are available or not.
 @return [Boolean] Returns whether all of the required methods are available or not in the given object.