docs: private void doReverseKNNQuery(DBIDRef q, MkMaxTreeNode<O> node, MkMaxEntry node_entry, ModifiableDoubleDBIDList result) {
      // data node
      if (node.isLeaf()) {
        for (int i = 0; i < node.getNumEntries(); i++) {
          MkMaxEntry entry = node.getEntry(i);
          double distance = distance(entry.getRoutingObjectID(), q);
          if (distance <= entry.getKnnDistance()) {
            result.add(distance, entry.getRoutingObjectID());
          }
        }
      }
  
      // directory node
      else {
        for (int i = 0; i < node.getNumEntries(); i++) {
          MkMaxEntry entry = node.getEntry(i);
          double node_knnDist = node_entry != null ? node_entry.getKnnDistance() : Double.POSITIVE_INFINITY;
  
          double distance = distance(entry.getRoutingObjectID(), q);
          double minDist = (entry.getCoveringRadius() > distance) ? 0.0 : distance - entry.getCoveringRadius();
  
          if (minDist <= node_knnDist) {
            MkMaxTreeNode<O> childNode = getNode(entry);
            doReverseKNNQuery(q, childNode, entry, result);
          }
        }
      }
    }