docs: private static <T, N extends IntervalTreeNode<T, N>> void searchMtasTreeItemWithIntervalTree(
        Collection<Integer> requiredAdditionalIds,
        IntervalTreeNode<T, N> intervalTreeItem, int startPosition,
        int endPosition, long[] refs, int[] additionalIds, long[] additionalRefs,
        ArrayList<IntervalTreeNode<T, N>> checkList) {
      if (startPosition <= intervalTreeItem.max) {
        // match current node
        if ((endPosition >= intervalTreeItem.left)
            && (startPosition <= intervalTreeItem.right)) {
          // System.out.print("[" + startPosition + "-" + endPosition + "] ");
          if (requiredAdditionalIds == null || additionalIds == null) {
            for (int i = 0; i < refs.length; i++) {
              MtasTreeHit<T> hit = new MtasTreeHit<T>(startPosition, endPosition,
                  refs[i], 0, 0);
              for (ArrayList<MtasTreeHit<T>> list : intervalTreeItem.lists) {
                list.add(hit);
              }
            }
          } else {
            for (int i = 0; i < refs.length; i++) {
              MtasTreeHit<T> hit = new MtasTreeHit<T>(startPosition, endPosition,
                  refs[i], additionalIds[i], additionalRefs[i]);
              for (ArrayList<MtasTreeHit<T>> list : intervalTreeItem.lists) {
                if (requiredAdditionalIds.contains(hit.additionalId)) {
                  list.add(hit);
                }
              }
            }
          }
        }
        // check leftChild
        if (intervalTreeItem.leftChild != null) {
          IntervalTreeNode<T, N> treeItemLeft = intervalTreeItem.leftChild;
          if (treeItemLeft.max >= startPosition) {
            checkList.add(treeItemLeft);
          }
        }
        // check rightChild
        if (intervalTreeItem.left < endPosition) {
          if (intervalTreeItem.rightChild != null) {
            IntervalTreeNode<T, N> treeItemRight = intervalTreeItem.rightChild;
            if ((treeItemRight.left >= endPosition)
                || (treeItemRight.max >= startPosition)) {
              checkList.add(treeItemRight);
            }
          }
        }
      }
  
    }