# File lib/ruby2ruby.rb, line 66
  def process_args(exp)
    args = []

    until exp.empty? do
      arg = exp.shift
      case arg
      when Symbol then
        args << arg
      when Array then
        case arg.first
        when :block then
          asgns = {}
          arg[1..-1].each do |lasgn|
            asgns[lasgn[1]] = process(lasgn)
          end

          args.each_with_index do |name, index|
            args[index] = asgns[name] if asgns.has_key? name
          end
        when :block_arg then
          args << "&#{arg.last}"
        when :array then
          names = arg
          vals  = exp.shift
          names.shift
          vals.shift
          v_size = vals.size

          args << process(names.shift) until names.size == v_size
          names.zip(vals) do |name, val|
            args << "#{process name} = #{process val}"
          end
        else
          raise "unknown arg type #{arg.first.inspect}"
        end
      else
        raise "unknown arg type #{arg.inspect}"
      end
    end

    return "(#{args.join ', '})"
  end