public void accumulateFreeSlot(
      TransactionalIdSystemImpl idSystem,
      FreespaceCommitter freespaceCommitter,
      boolean forFreespace) {
    if (forFreespace() != forFreespace) {
      return;
    }
    if (_firstOperation == SlotChangeOperation.create) {
      return;
    }
    if (_currentOperation == SlotChangeOperation.update
        || _currentOperation == SlotChangeOperation.delete) {

      Slot slot = modifiedSlotInParentIdSystem(idSystem);
      if (Slot.isNull(slot)) {
        slot = idSystem.committedSlot(_key);
      }

      // No old slot at all can be the case if the object
      // has been deleted by another transaction and we add it again.
      if (!Slot.isNull(slot)) {
        freespaceCommitter.delayedFree(slot, freeToSystemFreespaceSystem());
      }
    }
  }
 protected Slot modifiedSlotInParentIdSystem(TransactionalIdSystemImpl idSystem) {
   return idSystem.modifiedSlotInParentIdSystem(_key);
 }