digraph try_finally_swftools { label = "Try..Finally clause in swftools"; node[shape=rect]; start->before; before->in_try; try_f_begin->in_try; try_c_begin->in_try; in_try->finally; try_c_end->finally; in_catch->finally; try_c_target->in_catch; try_f_end->finally; try_f_target->catch_f; finally->after; after->end; catch_f[label="finally;\lthrow exception;\l"]; try_c_target[shape=ellipse]; try_c_begin[shape=ellipse]; try_c_end[shape=ellipse]; try_f_target[shape=ellipse]; try_f_begin[shape=ellipse]; try_f_end[shape=ellipse]; start[shape=ellipse]; end[shape=ellipse]; in_try->in_try_ret[label=return]; in_try_ret[label="§§push(returnedValue);\lfinally;\lreturn §§pop();\l"] in_try->in_try_continue[label=continue]; in_try_continue[label="finally;\lcontinue label;\l"]; /* Finally is inlined in every its usage. In try_f_target there is finally alone with throw - we can take it from there. */ }