As per the TODO in AbstractStandardBasicType, have SessionImplementor expose WrapperOptions via a new WrapperOptionsContext contract. This removes the need to allocate a new WrapperOptions for every call and saves a lot of allocations.
There are 2 pieces 2 this:
Introduction of the new WrapperOptionsContext contract (composition/delegation)
Having SessionImplementor implement WrapperOptionsContext
5.1 will have both. In the interest of compatibility, for 5.0 I will do this slightly differently, namely limiting the implementation of WrapperOptionsContext to just SessionImpl, StatelessSessionImpl and SessionDelegatprBaseImpl specifically. This allows custom Session implementors to continue to work as is.