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