pushValue Term
  minReads=(Right 2)
  mayRaise=[ExceptionFailure]
join <hidden>
  minReads=(Right 0)
  mayRaise=[]
| lift2Value (\u1 -> (\u2 -> u1 u2))
|   minReads=(Right 0)
|   mayRaise=[]
| ret
|   minReads=(Right 0)
|   mayRaise=[]
catch ExceptionFailure
  minReads=(Right 2)
  mayRaise=[ExceptionFailure]
| <ok>
| | pushValue cons
| |   minReads=(Right 2)
| |   mayRaise=[ExceptionFailure]
| | pushValue (\u1 -> (\u2 -> u1))
| |   minReads=(Right 2)
| |   mayRaise=[ExceptionFailure]
| | pushValue 'a'
| |   minReads=(Right 2)
| |   mayRaise=[ExceptionFailure]
| | lift2Value (\u1 -> (\u2 -> u1 u2))
| |   minReads=(Right 2)
| |   mayRaise=[ExceptionFailure]
| | read ('a' ==)
| |   minReads=(Right 2)
| |   mayRaise=[ExceptionFailure]
| | lift2Value (\u1 -> (\u2 -> u1 u2))
| |   minReads=(Right 1)
| |   mayRaise=[ExceptionFailure]
| | lift2Value (\u1 -> (\u2 -> u1 u2))
| |   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=[]
| | lift2Value (\u1 -> (\u2 -> u1 u2))
| |   minReads=(Right 0)
| |   mayRaise=[]
| | pushValue Term
| |   minReads=(Right 0)
| |   mayRaise=[]
| | lift2Value (\u1 -> (\u2 -> u1 u2))
| |   minReads=(Right 0)
| |   mayRaise=[]
| | lift2Value (\u1 -> (\u2 -> u1 u2))
| |   minReads=(Right 0)
| |   mayRaise=[]
| | commit ExceptionFailure
| |   minReads=(Right 0)
| |   mayRaise=[]
| | refJoin <hidden>
| |   minReads=(Right 0)
| |   mayRaise=[]
| <ko>
| | pushInput
| |   minReads=(Right 2)
| |   mayRaise=[ExceptionFailure]
| | lift2Value Term
| |   minReads=(Right 2)
| |   mayRaise=[ExceptionFailure]
| | choicesBranch [(\u1 -> u1)]
| |   minReads=(Right 2)
| |   mayRaise=[ExceptionFailure]
| | | <branch>
| | | | pushValue cons
| | | |   minReads=(Right 2)
| | | |   mayRaise=[ExceptionFailure]
| | | | pushValue (\u1 -> (\u2 -> u1))
| | | |   minReads=(Right 2)
| | | |   mayRaise=[ExceptionFailure]
| | | | pushValue 'a'
| | | |   minReads=(Right 2)
| | | |   mayRaise=[ExceptionFailure]
| | | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | | |   minReads=(Right 2)
| | | |   mayRaise=[ExceptionFailure]
| | | | read ('a' ==)
| | | |   minReads=(Right 2)
| | | |   mayRaise=[ExceptionFailure]
| | | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | | |   minReads=(Right 1)
| | | |   mayRaise=[ExceptionFailure]
| | | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | | |   minReads=(Right 1)
| | | |   mayRaise=[ExceptionFailure]
| | | | pushValue cons
| | | |   minReads=(Right 1)
| | | |   mayRaise=[ExceptionFailure]
| | | | pushValue (\u1 -> (\u2 -> u1))
| | | |   minReads=(Right 1)
| | | |   mayRaise=[ExceptionFailure]
| | | | pushValue 'b'
| | | |   minReads=(Right 1)
| | | |   mayRaise=[ExceptionFailure]
| | | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | | |   minReads=(Right 1)
| | | |   mayRaise=[ExceptionFailure]
| | | | read ('b' ==)
| | | |   minReads=(Right 1)
| | | |   mayRaise=[ExceptionFailure]
| | | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | | |   minReads=(Right 0)
| | | |   mayRaise=[]
| | | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | | |   minReads=(Right 0)
| | | |   mayRaise=[]
| | | | pushValue Term
| | | |   minReads=(Right 0)
| | | |   mayRaise=[]
| | | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | | |   minReads=(Right 0)
| | | |   mayRaise=[]
| | | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | | |   minReads=(Right 0)
| | | |   mayRaise=[]
| | | | refJoin <hidden>
| | | |   minReads=(Right 0)
| | | |   mayRaise=[]
| | | <default>
| | | | fail []
| | | |   minReads=(Left ExceptionFailure)
| | | |   mayRaise=[ExceptionFailure]