code: public final synchronized <RESULT, OPERATION extends Operation<RESULT>> RESULT evalIfSupported(OPERATION operation,
          RESULT defaultValue, Hint... hints) {
          return evalSuccess(operation, hints) ? operation.getResult() : defaultValue;
      }
docs: Evaluates {@code operation} if supported; otherwise returns {@code defaultValue}.
  
  @param operation
  @param defaultValue
  @param hints
  @return RESULT or {@code defaultValue}
  @throws NullPointerException on {@code null} input
  @throws OperationException potentially, via {@link Operation#getResult()}