code: void safeLog(SignalType signalType, Object signalValue) {
  		if (signalValue instanceof Fuseable.QueueSubscription) {
  			signalValue = String.valueOf(signalValue);
  			if (log.isDebugEnabled()) {
  				log.debug("A Fuseable Subscription has been passed to the logging framework, this is generally a sign of a misplaced log(), " +
  						"eg. 'window(2).log()' instead of 'window(2).flatMap(w -> w.log())'");
  			}
  		}
  		try {
  			log(signalType, signalValue);
  		}
  		catch (UnsupportedOperationException uoe) {
  			log(signalType, String.valueOf(signalValue));
  			if (log.isDebugEnabled()) {
  				log.debug("UnsupportedOperationException has been raised by the logging framework, does your log() placement make sense? " +
  						"eg. 'window(2).log()' instead of 'window(2).flatMap(w -> w.log())'", uoe);
  			}
  		}
  	}
docs: Structured logging with level adaptation and operator ascii graph if required +
  protection against loggers that detect objects like {@link Fuseable.QueueSubscription}
  as {@link java.util.Collection} and attempt to use their iterator for logging.
  
  @see #log