Annotators are prohibited from calling CAS.reset() but not CAS.release().
Since release() in turn calls reset(), previously this was effectively prohibited as well. However, Marshall undid that in his recent work - making release() "unlock" the CAS prohibited functions.
This was done to allow CAS Mutipliers to release the CAS - which we currently say is a best practice when an error occurs in a CAS Multiplier.
So I think CAS Multipliers need to be allowed to call release() on CASes that they obtain from the CAS pool. But analysis components (either annotators or CAS multipliers) should not be allowed to release() CASes passed to their process() methods.