docs: public void performRecovery(ObjectManagerState objectManagerState)
                      throws ObjectManagerException
      {
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.entry(this, cclass,
                          "performRecovery",
                          "objectManagerState=" + objectManagerState + "(ObjectManagerState)");
  
          if (Tracing.isAnyTracingEnabled() && trace.isDebugEnabled())
              trace.debug(this, cclass,
                          "logicalUnitOfWork=" + logicalUnitOfWork + "(LogicalUnitOfWork)"
                                          + " transactionState=" + transactionState + "(int)"
                                          + " token=" + token + "(token)"
                                          + " managedObjectBytes.length=" + managedObjectBytes.length + "(int)");
  
          // Recover the ManagedObject from its serialized bytes.
          ManagedObject addedManagedObject = ManagedObject.restoreFromSerializedBytes(managedObjectBytes,
                                                                                      objectManagerState);
  
          // Redo the add of the ManagedObject using its original Transaction.
          Transaction transactionForRecovery = objectManagerState.getTransaction(logicalUnitOfWork);
          // Reestablish the restored ManagedObject.
          ManagedObject managedObject = token.setManagedObject(addedManagedObject);
          managedObject.state = ManagedObject.stateConstructed;
  
          transactionForRecovery.add(managedObject); // Redo the add.
          // No need to reset the transaction state because Add can only be executed before
          // the transaction is prepared.
          // transactionForRecovery.internalTransaction.resetState(transactionState);
  
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.exit(this, cclass,
                         "performRecovery");
      }