public <L> SSOManager<A, D, L, TransactionBatch> createSSOManager(IdentifierFactory<String> identifierFactory, LocalContextFactory<L> localContextFactory) {
Cache<String, CoarseAuthenticationEntry<A, D, L>> authenticationCache = this.cache.getValue();
Cache<CoarseSessionsKey, Map<D, String>> sessionsCache = this.cache.getValue();
SSOFactory<CoarseSSOEntry<A, D, L>, A, D, L> factory = new CoarseSSOFactory<>(authenticationCache, sessionsCache, localContextFactory);
IdentifierFactory<String> idFactory = new AffinityIdentifierFactory<>(identifierFactory, authenticationCache, this.affinityFactory.getValue());
Batcher<TransactionBatch> batcher = new InfinispanBatcher(authenticationCache);
return new InfinispanSSOManager<>(factory, idFactory, batcher);
}