def process_rescue exp
body = process(exp.shift) unless exp.first.first == :resbody
els = process(exp.pop) unless exp.last.first == :resbody
body ||= "# do nothing"
simple = exp.size == 1 && !exp.resbody.block
resbodies = []
until exp.empty? do
resbody = exp.shift
simple &&= resbody[1] == s(:array)
simple &&= resbody[2] != nil && resbody[2].node_type != :block
resbodies << process(resbody)
end
if els then
"#{indent body}\n#{resbodies.join("\n")}\nelse\n#{indent els}"
elsif simple then
resbody = resbodies.first.sub(/\n\s*/, ' ')
"#{body} #{resbody}"
else
"#{indent body}\n#{resbodies.join("\n")}"
end
end