code: @Override
      public void put(String key, String val) {
          if (key == null) {
              throw new IllegalArgumentException("key cannot be null");
          }
          Map<String, String> map = inheritableThreadLocal.get();
          if (map == null) {
              map = new HashMap<>();
              inheritableThreadLocal.set(map);
          }
          map.put(key, val);
      }
docs: Put a context value (the <code>val</code> parameter) as identified with
  the <code>key</code> parameter into the current thread's context map.
  Note that contrary to log4j, the <code>val</code> parameter can be null.
  <p>
  <p>
  If the current thread does not have a context map it is created as a side
  effect of this call.
  
  @throws IllegalArgumentException in case the "key" parameter is null