private static void appendClassName(GenericType type, StringBuilder sb, List<TypeAnnotationWriteHelper> typeAnnWriteHelpers) {
    List<GenericType> enclosingTypes = type.getEnclosingClasses();
    typeAnnWriteHelpers = ExprProcessor.writeTypeAnnotationBeforeType(type, sb, typeAnnWriteHelpers);
    if (enclosingTypes.isEmpty()) {
      List<String> nestedTypes = Arrays.asList(
        DecompilerContext.getImportCollector().getNestedName(type.getValue().replace('/', '.')).split("\\.")
      );
      ExprProcessor.writeNestedClass(sb, type, nestedTypes, typeAnnWriteHelpers);
      ExprProcessor.popNestedTypeAnnotation(typeAnnWriteHelpers);
    }
    else {
      for (GenericType tp : enclosingTypes) {
        List<String> nestedTypes = Arrays.asList(
          DecompilerContext.getImportCollector().getNestedName(tp.getValue().replace('/', '.')).split("\\.")
        );
        typeAnnWriteHelpers = ExprProcessor.writeNestedClass(sb, type, nestedTypes, typeAnnWriteHelpers);
        typeAnnWriteHelpers = appendTypeArguments(tp, sb, typeAnnWriteHelpers);
        ExprProcessor.popNestedTypeAnnotation(typeAnnWriteHelpers);
        sb.append('.');
      }
      typeAnnWriteHelpers = ExprProcessor.writeNestedTypeAnnotations(sb, typeAnnWriteHelpers);
      ExprProcessor.popNestedTypeAnnotation(typeAnnWriteHelpers);
      sb.append(type.getValue());
    }
    appendTypeArguments(type, sb, typeAnnWriteHelpers);
  }
private static void appendClassName(GenericType type, StringBuilder sb, List<TypeAnnotationWriteHelper> typeAnnWriteHelpers)