code: protected <T extends TokenBase> List<T> createTokenList(String text) {
  
          if (!split) {
              return createTokenList(0, text);
          }
  
          List<Integer> splitPositions = getSplitPositions(text);
  
          if (splitPositions.isEmpty()) {
              return createTokenList(0, text);
          }
  
          ArrayList<T> result = new ArrayList<>();
  
          int offset = 0;
  
          for (int position : splitPositions) {
              result.addAll(this.<T>createTokenList(offset, text.substring(offset, position + 1)));
              offset = position + 1;
          }
  
          if (offset < text.length()) {
              result.addAll(this.<T>createTokenList(offset, text.substring(offset)));
          }
  
          return result;
      }
docs: Tokenizes the provided text and returns a list of tokens with various feature information
  <p>
  This method is thread safe
  
  @param text  text to tokenize
  @param <T>  token type
  @return list of Token, not null