code: static CachedScheduler cache(AtomicReference<CachedScheduler> reference, String key, Supplier<Scheduler> supplier) {
  		CachedScheduler s = reference.get();
  		if (s != null) {
  			return s;
  		}
  		s = new CachedScheduler(key, supplier.get());
  		if (reference.compareAndSet(null, s)) {
  			return s;
  		}
  		//the reference was updated in the meantime with a cached scheduler
  		//fallback to it and dispose the extraneous one
  		s._dispose();
  		return reference.get();
  	}
docs: Get a {@link CachedScheduler} out of the {@code reference} or create one using the
  {@link Supplier} if the reference is empty, effectively creating a single instance
  to be reused as a default scheduler for the given {@code key} category.
  
  @param reference the cache reference that holds the scheduler
  @param key the "name" for the Scheduler's category/type
  @param supplier the {@link Scheduler} generator to use and wrap into a {@link CachedScheduler}.
  Note that in case of a race, an extraneous Scheduler can be created, but it'll get
  immediately {@link Scheduler#dispose() disposed}.
  @return a {@link CachedScheduler} to be reused, either pre-existing or created