stagesupport/src/main/java/com/streamsets/pipeline/lib/util/FieldPathExpressionUtil.java
public static List<String> evaluateMatchingFieldPaths(
      String fieldExpression,
      ELEval elEval,
      ELVars elVars,
      Record record,
      Iterable<String> recordEscapedFieldPaths
  ) throws ELEvalException {
    if (isFieldPathExpressionFast(fieldExpression)) {
      // this field path expression actually does contain an EL expression, so need to evaluate against all fields
      return evaluateMatchingFieldPathsImpl(fieldExpression, elEval, elVars, record);
    } else {
      // else it does NOT contain one, so the field regex util (which is faster) can be used
      return FieldRegexUtil.getMatchingFieldPaths(fieldExpression, recordEscapedFieldPaths);
    }
  }
public static List<String> evaluateMatchingFieldPaths(
      String fieldExpression,
      ELEval elEval,
      ELVars elVars,
      Record record,
      Iterable<String> recordEscapedFieldPaths
  ) throws ELEvalException {
    if (isFieldPathExpressionFast(fieldExpression)) {
      // this field path expression actually does contain an EL expression, so need to evaluate against all fields
      return evaluateMatchingFieldPathsImpl(fieldExpression, elEval, elVars, record);
    } else {
      // else it does NOT contain one, so the field regex util (which is faster) can be used
      return FieldRegexUtil.getMatchingFieldPaths(fieldExpression, recordEscapedFieldPaths);
    }
  }
Evaluates a given field path expression against a given record and returns all field paths that satisfy the
expression upon evaluation.  Analagous in function to {@link FieldRegexUtil#getMatchingFieldPaths(String, Set)},
and even identical in behavior to it when the given {@code fieldExpression} does not contain any EL expressions.

@param fieldExpression the field path expression to evaluate
@param elEval the {@link ELEval} instance in which to evaluate the expression
@param elVars the {@link ELVars} instance to use when evaluating the expression
@param record the record against which to evaluate the expression; all returned values will be valid field paths
within it
@param recordEscapedFieldPaths the record's complete set of escaped field paths; should be identical to calling
record.getEscapedFieldPaths() on the record param
@return a {@link List} of field paths satisfying the given expression within the given {@code record}
@throws ELEvalException