code: public final synchronized <RESULT, OPERATION extends Operation<RESULT>> RESULT evalIfSupported(OPERATION operation,
          Hint... hints) {
          return evalIfSupported(operation, null, hints);
      }
docs: Evaluates {@code operation} if supported; otherwise returns {@code null}. You may distinguish between a
  {@code null} result and "not supported" by calling {@link #supports(Operation)} and {@link #eval(Operation)}
  independently.
  
  @param operation
  @param hints
  @return RESULT or {@code null}
  @throws NullPointerException on {@code null} input
  @throws OperationException potentially, via {@link Operation#getResult()}