logback-android/src/main/java/ch/qos/logback/core/pattern/parser/Compiler.java
@SuppressWarnings("unchecked")
  CompositeConverter<E> createCompositeConverter(CompositeNode cn) {
    String keyword = (String) cn.getValue();
    String converterClassStr = (String) converterMap.get(keyword);

    if (converterClassStr != null) {
      try {
        return (CompositeConverter<E>) OptionHelper.instantiateByClassName(
                converterClassStr, CompositeConverter.class, context);
      } catch (Exception e) {
        addError("Failed to instantiate converter class [" + converterClassStr
                + "] as a composite converter for keyword ["+keyword+"]", e);
        return null;
      }
    } else {
      addError("There is no conversion class registered for composite conversion word ["
              + keyword + "]");
      return null;
    }
  }
@SuppressWarnings("unchecked")
  CompositeConverter<E> createCompositeConverter(CompositeNode cn) {
    String keyword = (String) cn.getValue();
    String converterClassStr = (String) converterMap.get(keyword);

    if (converterClassStr != null) {
      try {
        return (CompositeConverter<E>) OptionHelper.instantiateByClassName(
                converterClassStr, CompositeConverter.class, context);
      } catch (Exception e) {
        addError("Failed to instantiate converter class [" + converterClassStr
                + "] as a composite converter for keyword ["+keyword+"]", e);
        return null;
      }
    } else {
      addError("There is no conversion class registered for composite conversion word ["
              + keyword + "]");
      return null;
    }
  }
Attempt to create a converter using the information found in
'compositeConverterMap'.

@param cn
@return