code: protected List<Token> tokenize(FeatureState featureState, String parameterName, TokenTransformer transformer) {
          List<String> values = Strings.splitAndTrim(featureState.getParameter(parameterName), "[\\s,]+");
          List<Token> tokens = new ArrayList<>(values.size());
          for (String value : values) {
              if (transformer != null) {
                  value = transformer.transform(value);
              }
  
              boolean negated = value.startsWith("!");
              if (negated) {
                  value = value.substring(1);
              }
  
              tokens.add(new Token(value, negated));
          }
  
          return tokens;
      }
docs: <p>
  Looks up and tokenizes the value of the parameter with the given name on the feature.
  </p>
  <p>
  If {@code transformer} is not {@literal null}, it will be asked to transform each individual token value.
  </p>
  
  @param featureState
  the {@link FeatureState} which represents the current configuration of the feature
  @param parameterName
  the name of the parameter whose value is to be tokenized
  @param transformer
  the {@link TokenTransformer} to be used to transform the value of each token (may be {@literal null} to use
  the token values as-provided)
  @return A {@code List} of {@link Token Tokens} extracted from the value of the parameter with the specified name.