push (\u1 -> (\u2 -> u2))
<hidden>:
| push (\u1 -> Term)
| <hidden>:
| | catchFail
| |   <try>
| |   | push (\u1 -> (\u2 -> (\u3 -> u2 u3)))
| |   | read Term
| |   | lift (\u1 -> (\u2 -> u1 u2))
| |   | call <hidden>
| |   | lift (\u1 -> (\u2 -> u1 u2))
| |   | popFail
| |   | ret
| |   <handler>
| |     pushInput
| |     lift Term
| |     choices [(\u1 -> u1)]
| |       <branch>
| |       | push (\u1 -> u1)
| |       | ret
| |       <default>
| |         fail
| call <hidden>
| lift (\u1 -> (\u2 -> u1 u2))
| ret
call <hidden>
lift (\u1 -> (\u2 -> u1 u2))
<hidden>:
| push (\u1 -> u1 Term)
| <hidden>:
| | catchFail
| |   <try>
| |   | push (\u1 -> (\u2 -> (\u3 -> (\u4 -> (u1 u2) (u3 u4)))))
| |   | <hidden>:
| |   | | lift (\u1 -> (\u2 -> u1 u2))
| |   | | call <hidden>
| |   | | lift (\u1 -> (\u2 -> u1 u2))
| |   | | call <hidden>
| |   | | lift (\u1 -> (\u2 -> u1 u2))
| |   | | popFail
| |   | | ret
| |   | pushInput
| |   | read ((\u1 -> (\u2 -> u1)) Term)
| |   | swap
| |   | loadInput
| |   | choices [(Term ==),(Term ==),(Term ==),(Term ==),(Term ==),(Term ==),(Term ==)]
| |   |   <branch>
| |   |   | push (\u1 -> (\u2 -> cons Term))
| |   |   | read ((\u1 -> (\u2 -> u1)) Term)
| |   |   | lift (\u1 -> (\u2 -> u1 u2))
| |   |   | refJoin <hidden>
| |   |   <branch>
| |   |   | push (\u1 -> (\u2 -> cons Term))
| |   |   | read ((\u1 -> (\u2 -> u1)) Term)
| |   |   | lift (\u1 -> (\u2 -> u1 u2))
| |   |   | refJoin <hidden>
| |   |   <branch>
| |   |   | push (\u1 -> (\u2 -> cons Term))
| |   |   | read ((\u1 -> (\u2 -> u1)) Term)
| |   |   | lift (\u1 -> (\u2 -> u1 u2))
| |   |   | refJoin <hidden>
| |   |   <branch>
| |   |   | push (\u1 -> (\u2 -> cons Term))
| |   |   | read ((\u1 -> (\u2 -> u1)) Term)
| |   |   | lift (\u1 -> (\u2 -> u1 u2))
| |   |   | refJoin <hidden>
| |   |   <branch>
| |   |   | push (\u1 -> (\u2 -> cons Term))
| |   |   | read ((\u1 -> (\u2 -> u1)) Term)
| |   |   | lift (\u1 -> (\u2 -> u1 u2))
| |   |   | refJoin <hidden>
| |   |   <branch>
| |   |   | push (\u1 -> (\u2 -> cons Term))
| |   |   | read ((\u1 -> (\u2 -> u1)) Term)
| |   |   | lift (\u1 -> (\u2 -> u1 u2))
| |   |   | refJoin <hidden>
| |   |   <branch>
| |   |   | push (\u1 -> (\u2 -> (\u3 -> (\u4 -> (\u5 -> cons (Term u3))))))
| |   |   | read ((\u1 -> (\u2 -> u1)) Term)
| |   |   | lift (\u1 -> (\u2 -> u1 u2))
| |   |   | call <hidden>
| |   |   | lift (\u1 -> (\u2 -> u1 u2))
| |   |   | call <hidden>
| |   |   | lift (\u1 -> (\u2 -> u1 u2))
| |   |   | read (']' ==)
| |   |   | lift (\u1 -> (\u2 -> u1 u2))
| |   |   | refJoin <hidden>
| |   |   <default>
| |   |     fail
| |   <handler>
| |     pushInput
| |     lift Term
| |     choices [(\u1 -> u1)]
| |       <branch>
| |       | push (\u1 -> u1)
| |       | ret
| |       <default>
| |         fail
| call <hidden>
| lift (\u1 -> (\u2 -> u1 u2))
| ret
call <hidden>
lift (\u1 -> (\u2 -> u1 u2))
ret