initialise-binding initialise-storing initialise-giving finalise-failing finalise-throwing scope (collateral (bind ("main", allocate-variable (functions (tuples ((values)*), values)))), sequential (assign (bound ("main"), function closure (scope (match (given, tuple ()), handle-return (handle-thrown (sequential (effect (decimal-natural ("1")), handle-thrown (effect (decimal-natural ("2")), scope (bind ("a", allocate-initialised-variable (values, given)), print (decimal-natural ("2")))), throw (decimal-natural ("1"))), scope (bind ("b", allocate-initialised-variable (values, given)), print (decimal-natural ("1"), "\n"))))))), apply (assigned (bound ("main")), tuple ())))