docs: private int findBase(int index, List<Trie.Node> nodes) {
          int base = baseBuffer.get(index);
          if (base < 0) {
              return base;
          }
  
          while (true) {
              boolean collision = false; // already taken?
              for (Trie.Node node : nodes) {
                  int nextIndex = index + base + node.getKey();
                  maxBaseCheckIndex = Math.max(maxBaseCheckIndex, nextIndex);
  
                  if (baseBuffer.capacity() <= nextIndex) {
                      extendBuffers(nextIndex);
                  }
  
                  if (baseBuffer.get(nextIndex) != 0) { // already taken
                      base++; // check next base value
                      collision = true;
                      break;
                  }
              }
  
              if (!collision) {
                  break; // if there is no collision, found proper base value. Break the while loop.
              }
  
          }
  
          for (Trie.Node node : nodes) {
              baseBuffer.put(index + base + node.getKey(), node.getKey() == TERMINATING_CHARACTER ? -1 : 1); // Set -1 if key is terminating character. Set default base value 1 if not.
          }
  
          return base;
      }