class Opal::Rewriters::MlhsArgs::Arguments

def initialize(args)

def initialize(args)
  @args = args
  @rewritten = []
  @initialization = []
  @rewriter = MlhsRewriter.new
  split!
end

def new_mlhs_tmp

def new_mlhs_tmp
  @counter ||= 0
  @counter += 1
  :"$mlhs_tmp#{@counter}"
end

def reset_tmp_counter!

def reset_tmp_counter!
  @counter = 0
end

def split!

def split!
  @args.children.each do |arg|
    if arg.type == :mlhs
      var_name = new_mlhs_tmp
      rhs = s(:lvar, var_name)
      mlhs = @rewriter.process(arg)
      @initialization << s(:masgn, mlhs, rhs)
      @rewritten << s(:arg, var_name).updated(nil, nil, meta: { arg_name: var_name })
    else
      @rewritten << arg
    end
  end
  if @initialization.length == 1
    @initialization = @initialization[0]
  elsif @initialization.empty?
    @initialization = nil
  else
    @initialization = s(:begin, *@initialization)
  end
end