code: @MustBeLocked (ELockType.WRITE)
    @Nullable
    protected final IMPLTYPE internalDeleteItem (@Nullable final String sID, final boolean bInvokeCallbacks)
    {
      if (StringHelper.hasNoText (sID))
        return null;
  
      final IMPLTYPE aDeletedItem = m_aMap.remove (sID);
      if (aDeletedItem == null)
        return null;
  
      // Trigger save changes
      super.markAsChanged (aDeletedItem, EDAOActionType.DELETE);
  
      if (bInvokeCallbacks)
      {
        // Invoke callbacks
        m_aCallbacks.forEach (aCB -> aCB.onDeleteItem (aDeletedItem));
      }
      return aDeletedItem;
    }
docs: Delete the item by removing it from the map. If something was remove the
  onDeleteItem callback is invoked. Must only be invoked inside a write-lock.
  
  @param sID
  The ID to be removed. May be <code>null</code>.
  @param bInvokeCallbacks
  <code>true</code> to invoke callbacks, <code>false</code> to not do
  so.
  @return The deleted item. If <code>null</code> no such item was found and
  therefore nothing was removed.
  @since 9.2.1