code: public static List<Object> getAllByPath(Object target, List<String> path) {
          List<Object> results = new LinkedList<>();
  
          // TODO: Can we unroll this and do it iteratively?
          getAllByPath(target, path, 0, results);
  
          return results;
      }
docs: Evaluates the given path expression and returns the list of all matching
  objects. If the path expression does not contain any wildcards, this
  will return a list of at most one item. If the path contains one or more
  wildcards, the returned list will include the full set of values
  obtained by evaluating the expression with all legal value for the
  given wildcard.
  
  @param target the object to evaluate the expression against
  @param path the path expression to evaluate
  @return the list of matching values