ImmutableDittoLogger implements ThreadSafeDittoLogger { static ImmutableDittoLogger of(final Logger logger) { return new ImmutableDittoLogger(checkNotNull(logger, "logger"), new HashMap<>(5)); } private  ImmutableDittoLogger(final Logger plainSlf4jLogger, final Map<String, String> localMdc); @Override String getName(); @Override boolean isTraceEnabled(); @Override void trace(final String msg); @Override void trace(final String format, final Object arg); @Override void trace(final String format, final Object arg1, final Object arg2); @Override void trace(final String format, final Object... arguments); @Override void trace(final String msg, final Throwable t); @Override boolean isTraceEnabled(final Marker marker); @Override void trace(final Marker marker, final String msg); @Override void trace(final Marker marker, final String format, final Object arg); @Override void trace(final Marker marker, final String format, final Object arg1, final Object arg2); @Override void trace(final Marker marker, final String format, final Object... argArray); @Override void trace(final Marker marker, final String msg, final Throwable t); @Override boolean isDebugEnabled(); @Override void debug(final String msg); @Override void debug(final String format, final Object arg); @Override void debug(final String format, final Object arg1, final Object arg2); @Override void debug(final String format, final Object... arguments); @Override void debug(final String msg, final Throwable t); @Override boolean isDebugEnabled(final Marker marker); @Override void debug(final Marker marker, final String msg); @Override void debug(final Marker marker, final String format, final Object arg); @Override void debug(final Marker marker, final String format, final Object arg1, final Object arg2); @Override void debug(final Marker marker, final String format, final Object... arguments); @Override void debug(final Marker marker, final String msg, final Throwable t); @Override boolean isInfoEnabled(); @Override void info(final String msg); @Override void info(final String format, final Object arg); @Override void info(final String format, final Object arg1, final Object arg2); @Override void info(final String format, final Object... arguments); @Override void info(final String msg, final Throwable t); @Override boolean isInfoEnabled(final Marker marker); @Override void info(final Marker marker, final String msg); @Override void info(final Marker marker, final String format, final Object arg); @Override void info(final Marker marker, final String format, final Object arg1, final Object arg2); @Override void info(final Marker marker, final String format, final Object... arguments); @Override void info(final Marker marker, final String msg, final Throwable t); @Override boolean isWarnEnabled(); @Override void warn(final String msg); @Override void warn(final String format, final Object arg); @Override void warn(final String format, final Object... arguments); @Override void warn(final String format, final Object arg1, final Object arg2); @Override void warn(final String msg, final Throwable t); @Override boolean isWarnEnabled(final Marker marker); @Override void warn(final Marker marker, final String msg); @Override void warn(final Marker marker, final String format, final Object arg); @Override void warn(final Marker marker, final String format, final Object arg1, final Object arg2); @Override void warn(final Marker marker, final String format, final Object... arguments); @Override void warn(final Marker marker, final String msg, final Throwable t); @Override boolean isErrorEnabled(); @Override void error(final String msg); @Override void error(final String format, final Object arg); @Override void error(final String format, final Object arg1, final Object arg2); @Override void error(final String format, final Object... arguments); @Override void error(final String msg, final Throwable t); @Override boolean isErrorEnabled(final Marker marker); @Override void error(final Marker marker, final String msg); @Override void error(final Marker marker, final String format, final Object arg); @Override void error(final Marker marker, final String format, final Object arg1, final Object arg2); @Override void error(final Marker marker, final String format, final Object... arguments); @Override void error(final Marker marker, final String msg, final Throwable t); @Override ImmutableDittoLogger withCorrelationId(@Nullable final CharSequence correlationId); @Override ImmutableDittoLogger withCorrelationId(final WithDittoHeaders<?> withDittoHeaders); @Override ImmutableDittoLogger withCorrelationId(final DittoHeaders dittoHeaders); @Override ImmutableDittoLogger discardCorrelationId(); @Override ImmutableDittoLogger withMdcEntry(final CharSequence key, @Nullable final CharSequence value); @Override ImmutableDittoLogger withMdcEntries(final CharSequence k1, @Nullable final CharSequence v1,
            final CharSequence k2, @Nullable final CharSequence v2); @Override ImmutableDittoLogger withMdcEntries(final CharSequence k1, @Nullable final CharSequence v1,
            final CharSequence k2, @Nullable final CharSequence v2,
            final CharSequence k3, @Nullable final CharSequence v3); @Override ImmutableDittoLogger withMdcEntry(final MdcEntry mdcEntry, final MdcEntry... furtherMdcEntries); @Override ImmutableDittoLogger removeMdcEntry(final CharSequence key);  }
@Test public void getInstanceWithNullLogger() { assertThatNullPointerException() .isThrownBy(() -> ImmutableDittoLogger.of(null)) .withMessage("The logger must not be null!") .withNoCause(); }