    # File lib/standard/facets/shellwords.rb, line 37
      def run(argv, opts)
        argv = (String === argv ? shellwords(argv) : argv.to_a.dup)
        args = []
        while argv.any?
          item = argv.shift
          flag = opts[item]
          if flag
            # Work around lambda semantics in 1.8.7.
            arity = [flag.arity, 0].max
            # Raise if there are not enough parameters
            # available for the flag.
            if argv.size < arity
              raise ArgumentError
            end
            # Call the lambda with N items from argv,
            # where N is the lambda's arity.
            flag.call(*argv.shift(arity))
          else
            # Collect the items that don't correspond to
            # flags.
            args << item
          end
        end
        args
      end