docs: @Override
      public Root delete(Root root) throws WIMException {
          Map<String, Control> ctrlMap = ControlsHelper.getControlMap(root);
  
          DeleteControl deleteCtrl = (DeleteControl) ctrlMap.get(SchemaConstants.DO_DELETE_CONTROL);
  
          boolean delDesc = false;
          if (deleteCtrl != null) {
              delDesc = deleteCtrl.isDeleteDescendants();
          }
  
          Entity inEntity = root.getEntities().get(0);
          IdentifierType inId = inEntity.getIdentifier();
  
          LdapEntry ldapEntry = iLdapConn.getEntityByIdentifier(inId, null, null, false, false);
  
          Root outRoot = new Root();
  
          List<LdapEntry> delEntries = deleteAll(ldapEntry, delDesc);
          for (int i = 0; i < delEntries.size(); i++) {
              LdapEntry delEntry = delEntries.get(i);
              createEntityFromLdapEntry(outRoot, SchemaConstants.DO_ENTITIES, delEntry, null);
              updateGroupMember(ldapEntry.getDN(), null);
              // Invalidate Attributes Cache.
              iLdapConn.invalidateAttributes(delEntry.getDN(), delEntry.getExtId(), delEntry.getUniqueName());
          }
          // Invalidate Names Cache
          iLdapConn.invalidateSearchCache();
  
          return outRoot;
      }