docs: private Interactable findNextLeftOrRight(Interactable interactable, boolean isRight) {
          int directionTerm = isRight ? 1 : -1;
          TerminalPosition startPosition = interactable.getCursorLocation();
          if(startPosition == null) {
              // If the currently active interactable component is not showing the cursor, use the top-left position
              // instead if we're going left, or the top-right position if we're going right
              if(isRight) {
                  startPosition = new TerminalPosition(interactable.getSize().getColumns() - 1, 0);
              }
              else {
                  startPosition = TerminalPosition.TOP_LEFT_CORNER;
              }
          }
          else {
              //Adjust position so that it's on the left-most side if we're going left or right-most side if we're going
              //right. Otherwise the lookup might product odd results in certain cases
              if(isRight) {
                  startPosition = startPosition.withColumn(interactable.getSize().getColumns() - 1);
              }
              else {
                  startPosition = startPosition.withColumn(0);
              }
          }
          startPosition = interactable.toBasePane(startPosition);
          if(startPosition == null) {
              // The structure has changed, our interactable is no longer inside the base pane!
              return null;
          }
          Set<Interactable> disqualified = getDisqualifiedInteractables(startPosition, false);
          TerminalSize size = getSize();
          int maxShiftUp = interactable.toBasePane(TerminalPosition.TOP_LEFT_CORNER).getRow();
          maxShiftUp = Math.max(maxShiftUp, 0);
          int maxShiftDown = interactable.toBasePane(new TerminalPosition(0, interactable.getSize().getRows() - 1)).getRow();
          maxShiftDown = Math.min(maxShiftDown, size.getRows() - 1);
          int maxShift = Math.max(startPosition.getRow() - maxShiftUp, maxShiftDown - startPosition.getRow());
          for(int searchColumn = startPosition.getColumn() + directionTerm;
              searchColumn >= 0 && searchColumn < size.getColumns();
              searchColumn += directionTerm) {
  
              for(int yShift = 0; yShift <= maxShift; yShift++) {
                  for(int modifier: new int[] { 1, -1 }) {
                      if(yShift == 0 && modifier == -1) {
                          break;
                      }
                      int searchRow = startPosition.getRow() + (yShift * modifier);
                      if(searchRow < maxShiftUp || searchRow > maxShiftDown) {
                          continue;
                      }
                      int index = lookupMap[searchRow][searchColumn];
                      if (index != -1 && !disqualified.contains(interactables.get(index))) {
                          return interactables.get(index);
                      }
                  }
              }
          }
          return null;
      }