code: public final <T> List<T> eval(final Object object, final Class<T> resultClass)
              throws IllegalArgumentException {
  
          Preconditions.checkNotNull(object);
          Preconditions.checkNotNull(resultClass);
  
          try {
              return toList(doEval(object), resultClass);
  
          } catch (final Exception ex) {
              if (isLenient()) {
                  return ImmutableList.of();
              }
              throw new IllegalArgumentException("Evaluation of XPath failed: " + ex.getMessage()
                      + "\nXPath is: " + this.support.string + "\nInput is: " + object
                      + "\nExpected result is: List<" + resultClass.getSimpleName() + ">", ex);
          }
      }
docs: Evaluates this {@code XPath} expression on the object supplied, producing as result a list
  of objects of the type {@code T} specified.
  
  @param object
  the object to evaluate this expression on
  @param resultClass
  the {@code Class} object for the elements of the result list
  @param <T>
  the type of element of the result list
  @return the list of objects of the requested type produced by the evaluation, on success;
  an empty list on failure if on lenient mode
  @throws IllegalArgumentException
  if this {@code XPath} expression is not lenient and evaluation fails for the
  object supplied