% % execute the next closure step, if any % [=Closure] [Any?] { % % execute the next closure command % this command may alter closure stack, add execs or remove execs % command may delay closures until an event occurs because % it is also responsible for initiating another closing step % [PopLast] execstr } { % % no more exiting steps, desired closures reached % } ifelse