docs: private synchronized void deleteEntry(Entry entry,
                                            Transaction transaction)
                      throws ObjectManagerException {
          final String methodName = "deleteEntry";
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.entry(this, cclass, methodName, new Object[] { entry,
                                                                  transaction });
  
          // managedObjectsToAdd.clear(); // Not used.
          managedObjectsToReplace.clear(); // Reset from last time.
          tokensToNotify.clear(); // Reset from last time.
          reservedSpaceInStore = (int) storeSpaceForRemove();
  
          rbDelete(entry);
  
          // We have changed the size at least.
          managedObjectsToReplace.add(this);
          // Harden the updates. Release some of the space we reserved earlier,
          // when we deleted the entry, or, if we are backing out, when we added it.
          // Releasing the reserved space ensures that the replace will succeed.
          tokensToNotify.add(entry.getToken());
          transaction.optimisticReplace(null,
                                        new java.util.ArrayList(managedObjectsToReplace),
                                        null, // No tokens to delete.
                                        new java.util.ArrayList(tokensToNotify),
                                        -logSpaceForDelete);
          // Release any surplus space we reserved in the store.
          // During recovery we don't do this because we will not have reserved the space anyway.
          if (transaction.getObjectManagerStateState() != ObjectManagerState.stateReplayingLog)
              owningToken.objectStore.reserve(-(int) reservedSpaceInStore, false);
  
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.exit(this, cclass, methodName);
      }