Juste->fExpStmt(Assign(NameLhs(Name[fromJust'"fReturn"(retinh)]))EqualAe)(inh{acc=id})-- We treat "return e" as an assignment to a variable specifically created to store the return value in
fSynchronized_=fStmtBlock
fThroweinh=casecatchinhof
fThroweinh=(casecatchinhof
Nothing->((\q->q&*throwExceptione))-- acc is ignored, as the rest of the block is not executed
fTry(Blockbs)csfinh=letr=(fStmtBlock(Blockbs)(inh{acc=id,catch=Just(cs,isJustf)}))in(r.maybe(accinh)(flipfStmtBlockinh)f)-- The finally-block is always executed