# File lib/main/parameter.rb, line 312
      def parse main
        @main, @argv, @env = main, main.argv, main.env

        ignore, stop = [], argv.index('--')

        if stop
          ignore = argv[stop .. -1]
          (argv.size - stop).times{ argv.pop }
        end

        parse_options argv

        return 'help' if detect{|p| p.name.to_s == 'help' and p.given?}

        parse_keywords argv
        parse_arguments argv
        parse_environment env

        defaults!
        validate!

        argv.push *ignore[1 .. -1] unless ignore.empty? 

        return self
      ensure
        @main, @argv, @env = nil
      end