# File lib/buildr/packaging/artifact_namespace.rb, line 894
    def method_missing(name, *args, &block)
      case name.to_s
      when /!$/ then
        name = $`.intern
        if args.size < 1 || args.size > 2
          raise ArgumentError.new("wrong number of arguments for #{name}!(spec, version_requirement?)")
        end
        need name => args.first
        get(name).tap { |r| r.requirement = args.last if args.size == 2 }
      when /=$/ then use $` => args.first
      when /\?$/ then
        name = $`.gsub(/^(has|have)_/, '').intern
        [get(name)].flatten.all? { |a| a && a.selected? }
      else
        if block || args.size > 0
          raise ArgumentError.new("wrong number of arguments #{args.size} for 0 or block given")
        end
        get(name)
      end
    end