code: @Nullable
  	static final Object scanExecutor(Executor executor, Scannable.Attr key) {
  		if (executor instanceof DelegateServiceScheduler.UnsupportedScheduledExecutorService) {
  			executor = ((DelegateServiceScheduler.UnsupportedScheduledExecutorService) executor).get();
  		}
  		if (executor instanceof Scannable) {
  			return ((Scannable) executor).scanUnsafe(key);
  		}
  
  		if (executor instanceof ExecutorService) {
  			ExecutorService service = (ExecutorService) executor;
  			if (key == Scannable.Attr.TERMINATED) return service.isTerminated();
  			if (key == Scannable.Attr.CANCELLED) return service.isShutdown();
  		}
  
  		if (executor instanceof ThreadPoolExecutor) {
  				final ThreadPoolExecutor poolExecutor = (ThreadPoolExecutor) executor;
  				if (key == Scannable.Attr.CAPACITY) return poolExecutor.getMaximumPoolSize();
  				if (key == Scannable.Attr.BUFFERED) return ((Long) (poolExecutor.getTaskCount() - poolExecutor.getCompletedTaskCount())).intValue();
  				if (key == Scannable.Attr.LARGE_BUFFERED) return poolExecutor.getTaskCount() - poolExecutor.getCompletedTaskCount();
  		}
  
  		return null;
  	}
docs: Scan an {@link Executor} or {@link ExecutorService}, recognizing several special
  implementations. Unwraps some decorating schedulers, recognizes {@link Scannable}
  schedulers and delegates to their {@link Scannable#scanUnsafe(Scannable.Attr)}
  method, introspects {@link ThreadPoolExecutor} instances.
  <p>
  If no data can be extracted, defaults to the provided {@code orElse}
  {@link Scannable#scanUnsafe(Scannable.Attr) scanUnsafe}.
  
  @param executor the executor to introspect in a best effort manner.
  @param key the key to scan for. CAPACITY and BUFFERED mainly.
  @return an equivalent of {@link Scannable#scanUnsafe(Scannable.Attr)} but that can
  also work on some implementations of {@link Executor}