docs: public synchronized void open(ObjectManagerState objectManagerState)
                      throws ObjectManagerException
      {
          final String methodName = "open";
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.entry(this,
                          cclass,
                          methodName,
                          new Object[] { objectManagerState, new Integer(storeStrategy), strategyNames[storeStrategy], storeName });
  
          this.objectManagerState = objectManagerState;
          // All ManagedObjects are new, sequence number zero through initialSequenceNumbers are reserved.
          sequenceNumber = initialSequenceNumber;
          sequenceNumberLock = new SequenceNumberLock();
          allocationAllowed = true;
  
          // Tokens can drop out of memory, once they are unreferenced.
          // Other classes need to hold ManagedObjects in memory as long as they need their transient state,
          // for example Transactions hold included ManagedObjects in memory via a strong 
          // reference from a HashTable.
          // This can be a weakValueHashMap because MemoryObjectStore holds a reference to all of its managed
          // objects which in turn hold a reference to their owningToken.
          inMemoryTokens = new WeakValueConcurrentHashMap(concurrency);
  
          // Set switches depending on the flush strategy.
          switch (storeStrategy) {
              case (STRATEGY_KEEP_ALWAYS):
                  persistent = true;
                  containsRestartData = true;
                  usesSerializedForm = true;
                  break;
  
              case (STRATEGY_KEEP_UNTIL_NEXT_OPEN):
                  persistent = false;
                  containsRestartData = false;
                  usesSerializedForm = true;
                  break;
  
              case (STRATEGY_SAVE_ONLY_ON_SHUTDOWN):
                  persistent = false;
                  containsRestartData = true;
                  usesSerializedForm = false;
                  break;
  
              default:
                  if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
                      trace.exit(this, cclass, methodName, new Integer(storeStrategy));
                  throw new InvalidStoreStrategyException(this, storeStrategy);
          } // switch (storeStrategy).
  
          objectManagerState.notifyCallbacks(ObjectManagerEventCallback.objectStoreOpened,
                                             new Object[] { this });
  
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.exit(this,
                         cclass,
                         methodName,
                         new Object[] { new Boolean(persistent), new Boolean(containsRestartData), new Boolean(usesSerializedForm) });
      }