# File lib/facet/module/methods.rb, line 29
  def methods(*args)
    args = [ :public ] if args.empty?
    raise ArgumentError if args.any?{ |a| ! METHODS_SYMBOLS.include?(a) }
    m = []
    a = args.include?( :all )
    i = ( args.include?( :inherited ) or args.include?( :ancestors ) )
    l = ( args.include?( :local ) or args.include?( :no_ancestors ) )
    if a
      m |= public_instance_methods( true )
      m |= private_instance_methods( true )
      m |= protected_instance_methods( true )
    elsif i and l
      m |= public_instance_methods( true ) if args.include?( :public )
      m |= private_instance_methods( true ) if args.include?( :private )
      m |= protected_instance_methods( true ) if args.include?( :protected )
    elsif i
      m |= (public_instance_methods( true ) - public_instance_methods( false )) if args.include?( :public )
      m |= (private_instance_methods( true ) - private_instance_methods( false )) if args.include?( :private )
      m |= (protected_instance_methods( true ) - protected_instance_methods( false )) if args.include?( :protected )
    else
      m |= public_instance_methods( ! l ) if args.include?( :public )
      m |= private_instance_methods( ! l ) if args.include?( :private )
      m |= protected_instance_methods( ! l ) if args.include?( :protected )
      m
    end
  end