protected PersistenceSession createPersistenceSession(final PersistenceSessionFactory persistenceSessionFactory, final AdapterManagerExtended adapterManager, final ObjectAdapterFactory adapterFactory, final ObjectFactory objectFactory, final OidGenerator oidGenerator,
final ServicesInjector servicesInjector) {
final PersistenceSessionProxy persistenceSession = new PersistenceSessionProxy(persistenceSessionFactory, adapterFactory, objectFactory, servicesInjector, oidGenerator, adapterManager, getServerFacade(), getEncoderDecoder());
final IsisTransactionManager transactionManager = createTransactionManager(getConfiguration(), persistenceSession.getAdapterManager(), persistenceSession);
ensureThatArg(persistenceSession, is(not(nullValue())));
ensureThatArg(transactionManager, is(not(nullValue())));
transactionManager.injectInto(persistenceSession);
// ... and finally return
return persistenceSession;
}