def advice_wrapper jp
begin
returned_value = next_node.call jp
update_current_context jp
jp.context.advice_kind = :after
jp.context.returned_value = returned_value
call_advice jp
result = jp.context.returned_value
reset_current_context jp
result
rescue Object => raised_exception
update_current_context jp
jp.context.advice_kind = :after
jp.context.raised_exception = raised_exception
call_advice jp
raised_exception = jp.context.raised_exception
reset_current_context jp
raise raised_exception
end
end