Chapter 4.2 The UimaAsynchronousEngine Interface describes UIMA AS client interface. Its description of getCAS() tells the reader to call reset() or release() on the CAS before calling getCAS() again. This is wrong when the client application uses an async style of sending CASes using sendCAS() method. When using async calls, the framework actually releases a CAS after the user's listener callback completes. The code calls release() if the user callback is not provided. The only time when the user's code must call release() or reset() is when the synchronous calls are made via sendAndReceive(). In this style of invocation, the framework does not call release() nor reset() and it is user's responsibility to do so.