public class org.eclipse.jdt.internal.compiler.util.GenericXMLWriter extends java.io.PrintWriter
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.eclipse.jdt.internal.compiler.util.GenericXMLWriter
  super_class: java.io.PrintWriter
{
  private static final java.lang.String XML_VERSION;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"

  private java.lang.String lineSeparator;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private int tab;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private static void appendEscapedChar(java.lang.StringBuffer, char);
    descriptor: (Ljava/lang/StringBuffer;C)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.lang.StringBuffer buffer
        start local 1 // char c
         0: .line 29
            iload 1 /* c */
            invokestatic org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.getReplacement:(C)Ljava/lang/String;
            astore 2 /* replacement */
        start local 2 // java.lang.String replacement
         1: .line 30
            aload 2 /* replacement */
            ifnull 6
         2: .line 31
            aload 0 /* buffer */
            bipush 38
            invokevirtual java.lang.StringBuffer.append:(C)Ljava/lang/StringBuffer;
            pop
         3: .line 32
            aload 0 /* buffer */
            aload 2 /* replacement */
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
         4: .line 33
            aload 0 /* buffer */
            bipush 59
            invokevirtual java.lang.StringBuffer.append:(C)Ljava/lang/StringBuffer;
            pop
         5: .line 34
            goto 7
         6: .line 35
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* buffer */
            iload 1 /* c */
            invokevirtual java.lang.StringBuffer.append:(C)Ljava/lang/StringBuffer;
            pop
         7: .line 37
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.String replacement
        end local 1 // char c
        end local 0 // java.lang.StringBuffer buffer
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    8     0       buffer  Ljava/lang/StringBuffer;
            0    8     1            c  C
            1    8     2  replacement  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      buffer  
      c       

  private static java.lang.String getEscaped(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // java.lang.String s
         0: .line 39
            new java.lang.StringBuffer
            dup
            aload 0 /* s */
            invokevirtual java.lang.String.length:()I
            bipush 10
            iadd
            invokespecial java.lang.StringBuffer.<init>:(I)V
            astore 1 /* result */
        start local 1 // java.lang.StringBuffer result
         1: .line 40
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 5
         3: .line 41
      StackMap locals: java.lang.StringBuffer int
      StackMap stack:
            aload 1 /* result */
            aload 0 /* s */
            iload 2 /* i */
            invokevirtual java.lang.String.charAt:(I)C
            invokestatic org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.appendEscapedChar:(Ljava/lang/StringBuffer;C)V
         4: .line 40
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 2 /* i */
            aload 0 /* s */
            invokevirtual java.lang.String.length:()I
            if_icmplt 3
        end local 2 // int i
         6: .line 42
            aload 1 /* result */
            invokevirtual java.lang.StringBuffer.toString:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.StringBuffer result
        end local 0 // java.lang.String s
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0       s  Ljava/lang/String;
            1    7     1  result  Ljava/lang/StringBuffer;
            2    6     2       i  I
    MethodParameters:
      Name  Flags
      s     

  private static java.lang.String getReplacement(char);
    descriptor: (C)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // char c
         0: .line 47
            iload 0 /* c */
            lookupswitch { // 5
                   34: 3
                   38: 5
                   39: 4
                   60: 1
                   62: 2
              default: 6
          }
         1: .line 49
      StackMap locals:
      StackMap stack:
            ldc "lt"
            areturn
         2: .line 51
      StackMap locals:
      StackMap stack:
            ldc "gt"
            areturn
         3: .line 53
      StackMap locals:
      StackMap stack:
            ldc "quot"
            areturn
         4: .line 55
      StackMap locals:
      StackMap stack:
            ldc "apos"
            areturn
         5: .line 57
      StackMap locals:
      StackMap stack:
            ldc "amp"
            areturn
         6: .line 59
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 0 // char c
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0     c  C
    MethodParameters:
      Name  Flags
      c     

  public void <init>(java.io.OutputStream, java.lang.String, boolean);
    descriptor: (Ljava/io/OutputStream;Ljava/lang/String;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // org.eclipse.jdt.internal.compiler.util.GenericXMLWriter this
        start local 1 // java.io.OutputStream stream
        start local 2 // java.lang.String lineSeparator
        start local 3 // boolean printXmlVersion
         0: .line 64
            aload 0 /* this */
            new java.io.PrintWriter
            dup
            aload 1 /* stream */
            invokespecial java.io.PrintWriter.<init>:(Ljava/io/OutputStream;)V
            aload 2 /* lineSeparator */
            iload 3 /* printXmlVersion */
            invokespecial org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.<init>:(Ljava/io/Writer;Ljava/lang/String;Z)V
         1: .line 65
            return
        end local 3 // boolean printXmlVersion
        end local 2 // java.lang.String lineSeparator
        end local 1 // java.io.OutputStream stream
        end local 0 // org.eclipse.jdt.internal.compiler.util.GenericXMLWriter this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    2     0             this  Lorg/eclipse/jdt/internal/compiler/util/GenericXMLWriter;
            0    2     1           stream  Ljava/io/OutputStream;
            0    2     2    lineSeparator  Ljava/lang/String;
            0    2     3  printXmlVersion  Z
    MethodParameters:
                 Name  Flags
      stream           
      lineSeparator    
      printXmlVersion  

  public void <init>(java.io.Writer, java.lang.String, boolean);
    descriptor: (Ljava/io/Writer;Ljava/lang/String;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // org.eclipse.jdt.internal.compiler.util.GenericXMLWriter this
        start local 1 // java.io.Writer writer
        start local 2 // java.lang.String lineSeparator
        start local 3 // boolean printXmlVersion
         0: .line 67
            aload 0 /* this */
            aload 1 /* writer */
            invokespecial java.io.PrintWriter.<init>:(Ljava/io/Writer;)V
         1: .line 68
            aload 0 /* this */
            iconst_0
            putfield org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.tab:I
         2: .line 69
            aload 0 /* this */
            aload 2 /* lineSeparator */
            putfield org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.lineSeparator:Ljava/lang/String;
         3: .line 70
            iload 3 /* printXmlVersion */
            ifeq 6
         4: .line 71
            aload 0 /* this */
            ldc "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
            invokevirtual org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.print:(Ljava/lang/String;)V
         5: .line 72
            aload 0 /* this */
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.lineSeparator:Ljava/lang/String;
            invokevirtual org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.print:(Ljava/lang/String;)V
         6: .line 74
      StackMap locals: org.eclipse.jdt.internal.compiler.util.GenericXMLWriter java.io.Writer java.lang.String int
      StackMap stack:
            return
        end local 3 // boolean printXmlVersion
        end local 2 // java.lang.String lineSeparator
        end local 1 // java.io.Writer writer
        end local 0 // org.eclipse.jdt.internal.compiler.util.GenericXMLWriter this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    7     0             this  Lorg/eclipse/jdt/internal/compiler/util/GenericXMLWriter;
            0    7     1           writer  Ljava/io/Writer;
            0    7     2    lineSeparator  Ljava/lang/String;
            0    7     3  printXmlVersion  Z
    MethodParameters:
                 Name  Flags
      writer           
      lineSeparator    
      printXmlVersion  

  public void endTag(java.lang.String, boolean, boolean);
    descriptor: (Ljava/lang/String;ZZ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=4
        start local 0 // org.eclipse.jdt.internal.compiler.util.GenericXMLWriter this
        start local 1 // java.lang.String name
        start local 2 // boolean insertTab
        start local 3 // boolean insertNewLine
         0: .line 76
            aload 0 /* this */
            dup
            getfield org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.tab:I
            iconst_1
            isub
            putfield org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.tab:I
         1: .line 77
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            bipush 47
            invokestatic java.lang.String.valueOf:(C)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* name */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aconst_null
            iload 2 /* insertTab */
            iload 3 /* insertNewLine */
            iconst_0
            invokevirtual org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.printTag:(Ljava/lang/String;Ljava/util/HashMap;ZZZ)V
         2: .line 78
            return
        end local 3 // boolean insertNewLine
        end local 2 // boolean insertTab
        end local 1 // java.lang.String name
        end local 0 // org.eclipse.jdt.internal.compiler.util.GenericXMLWriter this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0           this  Lorg/eclipse/jdt/internal/compiler/util/GenericXMLWriter;
            0    3     1           name  Ljava/lang/String;
            0    3     2      insertTab  Z
            0    3     3  insertNewLine  Z
    MethodParameters:
               Name  Flags
      name           
      insertTab      
      insertNewLine  

  public void printString(java.lang.String, boolean, boolean);
    descriptor: (Ljava/lang/String;ZZ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // org.eclipse.jdt.internal.compiler.util.GenericXMLWriter this
        start local 1 // java.lang.String string
        start local 2 // boolean insertTab
        start local 3 // boolean insertNewLine
         0: .line 83
            iload 2 /* insertTab */
            ifeq 2
         1: .line 84
            aload 0 /* this */
            invokevirtual org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.printTabulation:()V
         2: .line 86
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* string */
            invokevirtual org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.print:(Ljava/lang/String;)V
         3: .line 87
            iload 3 /* insertNewLine */
            ifeq 5
         4: .line 88
            aload 0 /* this */
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.lineSeparator:Ljava/lang/String;
            invokevirtual org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.print:(Ljava/lang/String;)V
         5: .line 90
      StackMap locals:
      StackMap stack:
            return
        end local 3 // boolean insertNewLine
        end local 2 // boolean insertTab
        end local 1 // java.lang.String string
        end local 0 // org.eclipse.jdt.internal.compiler.util.GenericXMLWriter this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0           this  Lorg/eclipse/jdt/internal/compiler/util/GenericXMLWriter;
            0    6     1         string  Ljava/lang/String;
            0    6     2      insertTab  Z
            0    6     3  insertNewLine  Z
    MethodParameters:
               Name  Flags
      string         
      insertTab      
      insertNewLine  

  private void printTabulation();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.eclipse.jdt.internal.compiler.util.GenericXMLWriter this
         0: .line 92
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         1: goto 3
      StackMap locals: int
      StackMap stack:
         2: aload 0 /* this */
            bipush 9
            invokevirtual org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.print:(C)V
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
         3: iload 1 /* i */
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.tab:I
            if_icmplt 2
        end local 1 // int i
         4: .line 93
            return
        end local 0 // org.eclipse.jdt.internal.compiler.util.GenericXMLWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/eclipse/jdt/internal/compiler/util/GenericXMLWriter;
            1    4     1     i  I

  public void printTag(java.lang.String, java.util.HashMap, boolean, boolean, boolean);
    descriptor: (Ljava/lang/String;Ljava/util/HashMap;ZZZ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=9, args_size=6
        start local 0 // org.eclipse.jdt.internal.compiler.util.GenericXMLWriter this
        start local 1 // java.lang.String name
        start local 2 // java.util.HashMap parameters
        start local 3 // boolean insertTab
        start local 4 // boolean insertNewLine
        start local 5 // boolean closeTag
         0: .line 95
            iload 3 /* insertTab */
            ifeq 2
         1: .line 96
            aload 0 /* this */
            invokevirtual org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.printTabulation:()V
         2: .line 98
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            bipush 60
            invokevirtual org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.print:(C)V
         3: .line 99
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.print:(Ljava/lang/String;)V
         4: .line 100
            aload 2 /* parameters */
            ifnull 18
         5: .line 101
            aload 2 /* parameters */
            invokevirtual java.util.HashMap.size:()I
            istore 6 /* length */
        start local 6 // int length
         6: .line 102
            iload 6 /* length */
            anewarray java.util.Map$Entry
            astore 7 /* entries */
        start local 7 // java.util.Map$Entry[] entries
         7: .line 103
            aload 2 /* parameters */
            invokevirtual java.util.HashMap.entrySet:()Ljava/util/Set;
            aload 7 /* entries */
            invokeinterface java.util.Set.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            pop
         8: .line 104
            aload 7 /* entries */
            new org.eclipse.jdt.internal.compiler.util.GenericXMLWriter$1
            dup
            aload 0 /* this */
            invokespecial org.eclipse.jdt.internal.compiler.util.GenericXMLWriter$1.<init>:(Lorg/eclipse/jdt/internal/compiler/util/GenericXMLWriter;)V
            invokestatic java.util.Arrays.sort:([Ljava/lang/Object;Ljava/util/Comparator;)V
         9: .line 112
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        10: goto 17
        11: .line 113
      StackMap locals: int java.util.Map$Entry[] int
      StackMap stack:
            aload 0 /* this */
            bipush 32
            invokevirtual org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.print:(C)V
        12: .line 114
            aload 0 /* this */
            aload 7 /* entries */
            iload 8 /* i */
            aaload
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            invokevirtual org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.print:(Ljava/lang/Object;)V
        13: .line 115
            aload 0 /* this */
            ldc "=\""
            invokevirtual org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.print:(Ljava/lang/String;)V
        14: .line 116
            aload 0 /* this */
            aload 7 /* entries */
            iload 8 /* i */
            aaload
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokestatic org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.getEscaped:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.print:(Ljava/lang/String;)V
        15: .line 117
            aload 0 /* this */
            bipush 34
            invokevirtual org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.print:(C)V
        16: .line 112
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        17: iload 8 /* i */
            iload 6 /* length */
            if_icmplt 11
        end local 8 // int i
        end local 7 // java.util.Map$Entry[] entries
        end local 6 // int length
        18: .line 120
      StackMap locals:
      StackMap stack:
            iload 5 /* closeTag */
            ifeq 21
        19: .line 121
            aload 0 /* this */
            ldc "/>"
            invokevirtual org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.print:(Ljava/lang/String;)V
        20: .line 122
            goto 22
        21: .line 123
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc ">"
            invokevirtual org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.print:(Ljava/lang/String;)V
        22: .line 125
      StackMap locals:
      StackMap stack:
            iload 4 /* insertNewLine */
            ifeq 24
        23: .line 126
            aload 0 /* this */
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.lineSeparator:Ljava/lang/String;
            invokevirtual org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.print:(Ljava/lang/String;)V
        24: .line 128
      StackMap locals:
      StackMap stack:
            aload 2 /* parameters */
            ifnull 26
            iload 5 /* closeTag */
            ifne 26
        25: .line 129
            aload 0 /* this */
            dup
            getfield org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.tab:I
            iconst_1
            iadd
            putfield org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.tab:I
        26: .line 131
      StackMap locals:
      StackMap stack:
            return
        end local 5 // boolean closeTag
        end local 4 // boolean insertNewLine
        end local 3 // boolean insertTab
        end local 2 // java.util.HashMap parameters
        end local 1 // java.lang.String name
        end local 0 // org.eclipse.jdt.internal.compiler.util.GenericXMLWriter this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   27     0           this  Lorg/eclipse/jdt/internal/compiler/util/GenericXMLWriter;
            0   27     1           name  Ljava/lang/String;
            0   27     2     parameters  Ljava/util/HashMap;
            0   27     3      insertTab  Z
            0   27     4  insertNewLine  Z
            0   27     5       closeTag  Z
            6   18     6         length  I
            7   18     7        entries  [Ljava/util/Map$Entry;
           10   18     8              i  I
    MethodParameters:
               Name  Flags
      name           
      parameters     
      insertTab      
      insertNewLine  
      closeTag       

  public void startTag(java.lang.String, boolean);
    descriptor: (Ljava/lang/String;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // org.eclipse.jdt.internal.compiler.util.GenericXMLWriter this
        start local 1 // java.lang.String name
        start local 2 // boolean insertTab
         0: .line 133
            aload 0 /* this */
            aload 1 /* name */
            aconst_null
            iload 2 /* insertTab */
            iconst_1
            iconst_0
            invokevirtual org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.printTag:(Ljava/lang/String;Ljava/util/HashMap;ZZZ)V
         1: .line 134
            aload 0 /* this */
            dup
            getfield org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.tab:I
            iconst_1
            iadd
            putfield org.eclipse.jdt.internal.compiler.util.GenericXMLWriter.tab:I
         2: .line 135
            return
        end local 2 // boolean insertTab
        end local 1 // java.lang.String name
        end local 0 // org.eclipse.jdt.internal.compiler.util.GenericXMLWriter this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       this  Lorg/eclipse/jdt/internal/compiler/util/GenericXMLWriter;
            0    3     1       name  Ljava/lang/String;
            0    3     2  insertTab  Z
    MethodParameters:
           Name  Flags
      name       
      insertTab  
}
SourceFile: "GenericXMLWriter.java"
NestMembers:
  org.eclipse.jdt.internal.compiler.util.GenericXMLWriter$1
InnerClasses:
  public abstract Entry = java.util.Map$Entry of java.util.Map
  org.eclipse.jdt.internal.compiler.util.GenericXMLWriter$1