UIMA AS aggregate uses a child counter along with a few booleans kept in a cache to determine when to put parent CAS in play. If there are no more child CASes in play and the parent CAS has returned from a CM, the CAS may proceed into a finalStep() or into process() if parentProcessLast=true. Upon return from a CM, the state of the CAS is marked as returned from CM. Problem is it remains set to as returned even though it may be subsequently sent to another delegate CM. When the last child CAS is processed, the parent CAS is released even though it may still be in a CM delegate. The fix for this is to reset "return from delegate" flag to false before dispatching a CAS to the next delegate in a flow.