let <hidden>
  minReads=(Right 0)
  mayRaise=[ExceptionFailure]
| catch ExceptionFailure
|   minReads=(Right 0)
|   mayRaise=[ExceptionFailure]
| | <ok>
| | | pushValue (\u1 -> (\u2 -> (\u3 -> u1 (u2 u3))))
| | |   minReads=(Right 1)
| | |   mayRaise=[ExceptionFailure]
| | | pushValue cons
| | |   minReads=(Right 1)
| | |   mayRaise=[ExceptionFailure]
| | | pushValue (\u1 -> (\u2 -> u1))
| | |   minReads=(Right 1)
| | |   mayRaise=[ExceptionFailure]
| | | pushValue 'a'
| | |   minReads=(Right 1)
| | |   mayRaise=[ExceptionFailure]
| | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | |   minReads=(Right 1)
| | |   mayRaise=[ExceptionFailure]
| | | read ('a' ==)
| | |   minReads=(Right 1)
| | |   mayRaise=[ExceptionFailure]
| | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | |   minReads=(Right 0)
| | |   mayRaise=[ExceptionFailure]
| | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | |   minReads=(Right 0)
| | |   mayRaise=[ExceptionFailure]
| | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | |   minReads=(Right 0)
| | |   mayRaise=[ExceptionFailure]
| | | call <hidden>
| | |   minReads=(Right 0)
| | |   mayRaise=[ExceptionFailure]
| | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | |   minReads=(Right 0)
| | |   mayRaise=[]
| | | commit ExceptionFailure
| | |   minReads=(Right 0)
| | |   mayRaise=[]
| | | ret
| | |   minReads=(Right 0)
| | |   mayRaise=[]
| | <ko>
| | | pushInput
| | |   minReads=(Right 0)
| | |   mayRaise=[ExceptionFailure]
| | | lift2Value Term
| | |   minReads=(Right 0)
| | |   mayRaise=[ExceptionFailure]
| | | choicesBranch [(\u1 -> u1)]
| | |   minReads=(Right 0)
| | |   mayRaise=[ExceptionFailure]
| | | | <branch>
| | | | | pushValue (\u1 -> u1)
| | | | |   minReads=(Right 0)
| | | | |   mayRaise=[]
| | | | | ret
| | | | |   minReads=(Right 0)
| | | | |   mayRaise=[]
| | | | <default>
| | | | | fail []
| | | | |   minReads=(Left ExceptionFailure)
| | | | |   mayRaise=[ExceptionFailure]
pushValue Term
  minReads=(Right 0)
  mayRaise=[ExceptionFailure]
call <hidden>
  minReads=(Right 0)
  mayRaise=[ExceptionFailure]
pushValue Term
  minReads=(Right 0)
  mayRaise=[]
lift2Value (\u1 -> (\u2 -> u1 u2))
  minReads=(Right 0)
  mayRaise=[]
lift2Value (\u1 -> (\u2 -> u1 u2))
  minReads=(Right 0)
  mayRaise=[]
ret
  minReads=(Right 0)
  mayRaise=[]