I think in the cases where code "cares" it just takes a `BlockCipher` and not a `BlockCipher*cryptionContext` and calls `.encryptor()` or `.decryptor()` itself.  If code doesn't care (is generalized to just pass through bytes) then it takes a `BlockCipher*cryptionContext` and calls `.update()` and `.finalize()`.