def process_masgn exp
exp[2] = process exp[2] if sexp? exp[2]
if node_type? exp[2], :to_ary and array? exp[2][1]
exp[2] = exp[2][1]
end
unless array? exp[1] and array? exp[2] and exp[1].length == exp[2].length
return process_default(exp)
end
vars = exp[1].dup
vals = exp[2].dup
vars.shift
vals.shift
vars.each_with_index do |var, i|
val = vals[i]
if val
if node_type? var, :masgn
m = var.dup
m[2] = s(:to_ary, val)
process_masgn m
else
assign = var.dup
assign.rhs = val
process assign
end
end
end
exp
end