code: private static Token createThreadContextToken(final String configuration) {
  		if (configuration == null) {
  			InternalLogger.log(Level.ERROR, "\"{context}\" requires a key");
  			return new PlainTextToken("");
  		} else {
  			int splitIndex = configuration.indexOf(',');
  			String key = splitIndex == -1 ? configuration.trim() : configuration.substring(0, splitIndex).trim();
  			if (key.isEmpty()) {
  				InternalLogger.log(Level.ERROR, "\"{context}\" requires a key");
  				return new PlainTextToken("");
  			} else {
  				String defaultValue = splitIndex == -1 ? null : configuration.substring(splitIndex + 1).trim();
  				return defaultValue == null ? new ThreadContextToken(key) : new ThreadContextToken(key, defaultValue);
  			}
  		}
  	}
docs: Creates a new {@link ThreadContextToken}.
  
  @param configuration
  Key and optional placeholder for empty values
  @return New instance of {@link ThreadContextToken} or {@code null} if key is missing