feck, groups do need some kind of stackful handling, since something like guard c err ok { if c { ok } { err } } has a hierarhcy, where if we just linearly go through it we mark `ok` as used and then `err` gets used as well, not ideal. Luckily easily fixed, just create a new stack element for each closure and run stuff locally within it, no need to merge results (yet)