docs: private static void searchMtasTree(MtasTreeItem treeItem, int startPosition,
        int endPosition, IndexInput in, AtomicBoolean isSinglePoint,
        AtomicBoolean isStoreAdditionalId, long objectRefApproxOffset,
        ArrayList<MtasTreeHit<?>> list, AtomicLong nodeRefApproxOffset,
        ArrayList<MtasTreeItem> checkList) throws IOException {
      if (startPosition <= treeItem.max) {
        // match current node
        if ((endPosition >= treeItem.left) && (startPosition <= treeItem.right)) {
          for (int i = 0; i < treeItem.objectRefs.length; i++) {
            list.add(new MtasTreeHit<>(treeItem.left, treeItem.right,
                treeItem.objectRefs[i],
                treeItem.additionalIds == null ? 0 : treeItem.additionalIds[i],
                treeItem.additionalRefs == null ? 0
                    : treeItem.additionalRefs[i]));
          }
        }
        // check leftChild
        if (!treeItem.leftChild.equals(treeItem.ref)) {
          MtasTreeItem treeItemLeft = getMtasTreeItem(treeItem.leftChild,
              isSinglePoint, isStoreAdditionalId, nodeRefApproxOffset, in,
              objectRefApproxOffset);
          if (treeItemLeft.max >= startPosition) {
            checkList.add(treeItemLeft);
          }
        }
        // check rightChild
        if (treeItem.left <= endPosition) {
          if (!treeItem.rightChild.equals(treeItem.ref)) {
            MtasTreeItem treeItemRight = getMtasTreeItem(treeItem.rightChild,
                isSinglePoint, isStoreAdditionalId, nodeRefApproxOffset, in,
                objectRefApproxOffset);
            if ((treeItemRight.left >= endPosition)
                || (treeItemRight.max >= startPosition)) {
              checkList.add(treeItemRight);
            }
          }
        }
      }
    }