code: @Trivial
      private final static FutureRefExecutor supportsAsync(Executor executor) {
          if (executor instanceof ExecutorService)
              return new FutureRefExecutor((ExecutorService) executor); // valid
          if (executor instanceof UnusableExecutor)
              throw new UnsupportedOperationException(); // not valid for executing tasks
          return null; // valid
      }
docs: Convenience method to validate that an executor supports running asynchronously
  and to wrap the executor, if an ExecutorService, with FutureRefExecutor.
  This method is named supportsAsync to make failure stacks more meaningful to users.
  
  @param executor executor instance supplied to *Async methods.
  @return FutureRefExecutor if an ExecutorService is supplied. Null if a valid executor is supplied.
  @throws UnsupportedOperation if the executor is incapable of running tasks.