code: private GlobalSplitter<I> findSplitterGlobal() {
          DTNode<I> bestBlockRoot = null;
          Splitter<I> bestSplitter = null;
  
          for (DTNode<I> blockRoot : blockList) {
              Splitter<I> splitter = findSplitter(blockRoot);
  
              if (splitter != null) {
                  if (bestSplitter == null ||
                      splitter.getNewDiscriminatorLength() < bestSplitter.getNewDiscriminatorLength()) {
                      bestSplitter = splitter;
                      bestBlockRoot = blockRoot;
                  }
              }
          }
  
          if (bestSplitter == null) {
              return null;
          }
  
          return new GlobalSplitter<>(bestBlockRoot, bestSplitter);
      }
docs: Determines a global splitter, i.e., a splitter for any block. This method may (but is not required to) employ
  heuristics to obtain a splitter with a relatively short suffix length.
  
  @return a splitter for any of the blocks