docs: public synchronized IndexTreePath<DeLiCluEntry> setHandled(DBID id, O obj) {
      if(LOG.isDebugging()) {
        LOG.debugFine("setHandled " + id + ", " + obj + "\n");
      }
  
      // find the leaf node containing o
      IndexTreePath<DeLiCluEntry> pathToObject = findPathToObject(getRootPath(), obj, id);
  
      if(pathToObject == null) {
        throw new AbortException("Object not found in setHandled.");
      }
  
      // set o handled
      DeLiCluEntry entry = pathToObject.getEntry();
      entry.setHasHandled(true);
      entry.setHasUnhandled(false);
  
      for(IndexTreePath<DeLiCluEntry> path = pathToObject; path.getParentPath() != null; path = path.getParentPath()) {
        DeLiCluEntry parentEntry = path.getParentPath().getEntry();
        DeLiCluNode node = getNode(parentEntry);
        boolean hasHandled = false;
        boolean hasUnhandled = false;
        for(int i = 0; i < node.getNumEntries(); i++) {
          final DeLiCluEntry nodeEntry = node.getEntry(i);
          hasHandled = hasHandled || nodeEntry.hasHandled();
          hasUnhandled = hasUnhandled || nodeEntry.hasUnhandled();
        }
        parentEntry.setHasUnhandled(hasUnhandled);
        parentEntry.setHasHandled(hasHandled);
      }
  
      return pathToObject;
    }