-pushValue (\u1 -> (\u2 -> u1 : u2 Term))
-name_785:
-| catchException "fail"
-| <try>
-| | pushValue (\u1 -> (\u2 -> (\u3 -> (\u4 -> 'a' : ('b' : ('c' : ('d' : Term)))))))
-| | read ('a' ==)
-| | lift2Value (\u1 -> (\u2 -> u1 u2))
-| | read ('b' ==)
-| | lift2Value (\u1 -> (\u2 -> u1 u2))
-| | read ('c' ==)
-| | lift2Value (\u1 -> (\u2 -> u1 u2))
-| | read ('d' ==)
-| | lift2Value (\u1 -> (\u2 -> u1 u2))
-| | popException "fail"
-| | ret
-| <handler>
-| loadInput
-| raiseException "fail"
-call name_785
-lift2Value (\u1 -> (\u2 -> u1 u2))
-name_784:
-| catchException "fail"
-| <try>
-| | pushValue (\u1 -> (\u2 -> (\u3 -> u1 : u2 u3)))
-| | call name_785
-| | lift2Value (\u1 -> (\u2 -> u1 u2))
-| | call name_784
-| | lift2Value (\u1 -> (\u2 -> u1 u2))
-| | popException "fail"
-| | ret
-| <handler>
-| pushInput
-| lift2Value Term
-| choicesBranch [(\u1 -> u1)]
-| <branch>
-| | pushValue (\u1 -> u1)
-| | ret
-| <default>
-| raiseException "fail"
-call name_784
-lift2Value (\u1 -> (\u2 -> u1 u2))
-ret
+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]