code: @VisibleForTesting
      public List<Token> resplitLocally(String startToken, String endToken, int numResplits) {
          List<Token> splitTokens = ImmutableList.of(_tokenFactory.fromString(startToken), _tokenFactory.fromString(endToken));
          for (int i = 0; i < numResplits; i++) {
              List<Token> newTokens = new ArrayList<>(splitTokens.size() * 2 - 1);
              for (int j = 0; j < splitTokens.size() - 1; j++) {
                  newTokens.add(splitTokens.get(j));
                  newTokens.add(ByteOrderedPartitioner.instance.midpoint(splitTokens.get(j), splitTokens.get(j + 1)));
              }
              newTokens.add(splitTokens.get(splitTokens.size() - 1));
              splitTokens = newTokens;
          }
          return splitTokens;
      }
docs: Manually split the token ranges using ByteOrderedPartitioner's midpoint method