code: @CheckForNull
      public static LockingStrategy create( @Nullable final LockingMode lockingMode, @Nullable final Pattern uriPattern,
              @Nullable final StorageClient storage, @Nonnull final MemcachedSessionService manager,
              @Nonnull final MemcachedNodesManager memcachedNodesManager,
              @Nonnull final LRUCache<String, Boolean> missingSessionsCache, final boolean storeSecondaryBackup,
              @Nonnull final Statistics stats,
              @Nonnull final CurrentRequest currentRequest ) {
          if ( lockingMode == null || storage == null ) {
              return null;
          }
          switch ( lockingMode ) {
          case ALL:
              return new LockingStrategyAll( manager, memcachedNodesManager, storage, missingSessionsCache, storeSecondaryBackup, stats, currentRequest );
          case AUTO:
              return new LockingStrategyAuto( manager, memcachedNodesManager, storage, missingSessionsCache, storeSecondaryBackup, stats, currentRequest );
          case URI_PATTERN:
              return new LockingStrategyUriPattern( manager, memcachedNodesManager, uriPattern, storage, missingSessionsCache, storeSecondaryBackup,
                      stats, currentRequest );
          case NONE:
              return new LockingStrategyNone( manager, memcachedNodesManager, storage, missingSessionsCache, storeSecondaryBackup, stats, currentRequest );
          default:
              throw new IllegalArgumentException( "LockingMode not yet supported: " + lockingMode );
          }
      }
docs: Creates the appropriate {@link LockingStrategy} for the given {@link LockingMode}.