public <T> T construct(Class<T> componentType) {
boolean notTransactional = !configuration.transaction().transactionMode().isTransactional();
LockContainer<?> lockContainer = configuration.locking().useLockStriping() ?
notTransactional ? new ReentrantStripedLockContainer(configuration.locking().concurrencyLevel(),
configuration.dataContainer().keyEquivalence())
: new OwnableReentrantStripedLockContainer(configuration.locking().concurrencyLevel(),
configuration.dataContainer().keyEquivalence()) :
notTransactional ? new ReentrantPerEntryLockContainer(configuration.locking().concurrencyLevel(),
configuration.dataContainer().keyEquivalence())
: new OwnableReentrantPerEntryLockContainer(configuration.locking().concurrencyLevel(),
configuration.dataContainer().keyEquivalence());