class com.oracle.svm.agent.TraceFileWriter extends com.oracle.svm.agent.TraceWriter
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.oracle.svm.agent.TraceFileWriter
  super_class: com.oracle.svm.agent.TraceWriter
{
  private final java.lang.Object lock;
    descriptor: Ljava/lang/Object;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.io.BufferedWriter writer;
    descriptor: Ljava/io/BufferedWriter;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private boolean open;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

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

  void <init>(java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.oracle.svm.agent.TraceFileWriter this
        start local 1 // java.nio.file.Path path
         0: .line 44
            aload 0 /* this */
            invokespecial com.oracle.svm.agent.TraceWriter.<init>:()V
         1: .line 39
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield com.oracle.svm.agent.TraceFileWriter.lock:Ljava/lang/Object;
         2: .line 41
            aload 0 /* this */
            iconst_1
            putfield com.oracle.svm.agent.TraceFileWriter.open:Z
         3: .line 42
            aload 0 /* this */
            iconst_0
            putfield com.oracle.svm.agent.TraceFileWriter.written:I
         4: .line 45
            aload 0 /* this */
            aload 1 /* path */
            iconst_0
            anewarray java.nio.file.OpenOption
            invokestatic java.nio.file.Files.newBufferedWriter:(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/io/BufferedWriter;
            putfield com.oracle.svm.agent.TraceFileWriter.writer:Ljava/io/BufferedWriter;
         5: .line 46
            new com.oracle.svm.configure.json.JsonWriter
            dup
            aload 0 /* this */
            getfield com.oracle.svm.agent.TraceFileWriter.writer:Ljava/io/BufferedWriter;
            invokespecial com.oracle.svm.configure.json.JsonWriter.<init>:(Ljava/io/Writer;)V
            astore 2 /* json */
        start local 2 // com.oracle.svm.configure.json.JsonWriter json
         6: .line 47
            aload 2 /* json */
            bipush 91
            invokevirtual com.oracle.svm.configure.json.JsonWriter.append:(C)Lcom/oracle/svm/configure/json/JsonWriter;
            invokevirtual com.oracle.svm.configure.json.JsonWriter.newline:()Lcom/oracle/svm/configure/json/JsonWriter;
            pop
         7: .line 48
            aload 0 /* this */
            invokevirtual com.oracle.svm.agent.TraceFileWriter.traceInitialization:()V
         8: .line 49
            aload 2 /* json */
            invokevirtual com.oracle.svm.configure.json.JsonWriter.flush:()V
         9: .line 50
            return
        end local 2 // com.oracle.svm.configure.json.JsonWriter json
        end local 1 // java.nio.file.Path path
        end local 0 // com.oracle.svm.agent.TraceFileWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lcom/oracle/svm/agent/TraceFileWriter;
            0   10     1  path  Ljava/nio/file/Path;
            6   10     2  json  Lcom/oracle/svm/configure/json/JsonWriter;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      path  

  void traceEntry(java.util.Map<java.lang.String, java.lang.Object>);
    descriptor: (Ljava/util/Map;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=9, args_size=2
        start local 0 // com.oracle.svm.agent.TraceFileWriter this
        start local 1 // java.util.Map entry
         0: .line 55
            new java.io.StringWriter
            dup
            invokespecial java.io.StringWriter.<init>:()V
            astore 2 /* str */
        start local 2 // java.io.StringWriter str
         1: .line 56
            aconst_null
            astore 3
            aconst_null
            astore 4
         2: new com.oracle.svm.configure.json.JsonWriter
            dup
            aload 2 /* str */
            invokespecial com.oracle.svm.configure.json.JsonWriter.<init>:(Ljava/io/Writer;)V
            astore 5 /* json */
        start local 5 // com.oracle.svm.configure.json.JsonWriter json
         3: .line 57
            aload 5 /* json */
            bipush 123
            invokevirtual com.oracle.svm.configure.json.JsonWriter.append:(C)Lcom/oracle/svm/configure/json/JsonWriter;
            pop
         4: .line 58
            iconst_1
            istore 6 /* first */
        start local 6 // boolean first
         5: .line 59
            aload 1 /* entry */
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 8
            goto 15
      StackMap locals: com.oracle.svm.agent.TraceFileWriter java.util.Map java.io.StringWriter java.lang.Throwable java.lang.Throwable com.oracle.svm.configure.json.JsonWriter int top java.util.Iterator
      StackMap stack:
         6: aload 8
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 7 /* mapEntry */
        start local 7 // java.util.Map$Entry mapEntry
         7: .line 60
            iload 6 /* first */
            ifne 9
         8: .line 61
            aload 5 /* json */
            ldc ", "
            invokevirtual com.oracle.svm.configure.json.JsonWriter.append:(Ljava/lang/String;)Lcom/oracle/svm/configure/json/JsonWriter;
            pop
         9: .line 63
      StackMap locals: com.oracle.svm.agent.TraceFileWriter java.util.Map java.io.StringWriter java.lang.Throwable java.lang.Throwable com.oracle.svm.configure.json.JsonWriter int java.util.Map$Entry java.util.Iterator
      StackMap stack:
            aload 5 /* json */
            aload 7 /* mapEntry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual com.oracle.svm.configure.json.JsonWriter.quote:(Ljava/lang/String;)Lcom/oracle/svm/configure/json/JsonWriter;
            bipush 58
            invokevirtual com.oracle.svm.configure.json.JsonWriter.append:(C)Lcom/oracle/svm/configure/json/JsonWriter;
            pop
        10: .line 64
            aload 7 /* mapEntry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            instanceof java.lang.Object[]
            ifeq 13
        11: .line 65
            aload 0 /* this */
            aload 5 /* json */
            aload 7 /* mapEntry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.lang.Object[]
            invokevirtual com.oracle.svm.agent.TraceFileWriter.printArray:(Lcom/oracle/svm/configure/json/JsonWriter;[Ljava/lang/Object;)V
        12: .line 66
            goto 14
        13: .line 67
      StackMap locals:
      StackMap stack:
            aload 5 /* json */
            aload 7 /* mapEntry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            invokevirtual com.oracle.svm.configure.json.JsonWriter.quote:(Ljava/lang/Object;)Lcom/oracle/svm/configure/json/JsonWriter;
            pop
        14: .line 69
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 6 /* first */
        end local 7 // java.util.Map$Entry mapEntry
        15: .line 59
      StackMap locals: com.oracle.svm.agent.TraceFileWriter java.util.Map java.io.StringWriter java.lang.Throwable java.lang.Throwable com.oracle.svm.configure.json.JsonWriter int top java.util.Iterator
      StackMap stack:
            aload 8
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
        16: .line 71
            aload 5 /* json */
            bipush 125
            invokevirtual com.oracle.svm.configure.json.JsonWriter.append:(C)Lcom/oracle/svm/configure/json/JsonWriter;
            pop
        end local 6 // boolean first
        17: .line 72
            aload 5 /* json */
            ifnull 23
            aload 5 /* json */
            invokevirtual com.oracle.svm.configure.json.JsonWriter.close:()V
            goto 23
      StackMap locals: com.oracle.svm.agent.TraceFileWriter java.util.Map java.io.StringWriter java.lang.Throwable java.lang.Throwable com.oracle.svm.configure.json.JsonWriter
      StackMap stack: java.lang.Throwable
        18: astore 3
            aload 5 /* json */
            ifnull 19
            aload 5 /* json */
            invokevirtual com.oracle.svm.configure.json.JsonWriter.close:()V
        end local 5 // com.oracle.svm.configure.json.JsonWriter json
      StackMap locals:
      StackMap stack:
        19: aload 3
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        20: astore 4
            aload 3
            ifnonnull 21
            aload 4
            astore 3
            goto 22
      StackMap locals:
      StackMap stack:
        21: aload 3
            aload 4
            if_acmpeq 22
            aload 3
            aload 4
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        22: aload 3
            athrow
        23: .line 73
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* str */
            invokevirtual java.io.StringWriter.toString:()Ljava/lang/String;
            invokevirtual com.oracle.svm.agent.TraceFileWriter.traceEntry:(Ljava/lang/String;)V
        end local 2 // java.io.StringWriter str
        24: .line 74
            goto 27
      StackMap locals: com.oracle.svm.agent.TraceFileWriter java.util.Map
      StackMap stack: java.io.IOException
        25: astore 2 /* e */
        start local 2 // java.io.IOException e
        26: .line 75
            aload 2 /* e */
            invokestatic com.oracle.svm.core.util.VMError.shouldNotReachHere:(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
            athrow
        end local 2 // java.io.IOException e
        27: .line 77
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.util.Map entry
        end local 0 // com.oracle.svm.agent.TraceFileWriter this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   28     0      this  Lcom/oracle/svm/agent/TraceFileWriter;
            0   28     1     entry  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
            1   24     2       str  Ljava/io/StringWriter;
            3   19     5      json  Lcom/oracle/svm/configure/json/JsonWriter;
            5   17     6     first  Z
            7   15     7  mapEntry  Ljava/util/Map$Entry<Ljava/lang/String;*>;
           26   27     2         e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           3    17      18  any
           2    20      20  any
           0    24      25  Class java.io.IOException
    Signature: (Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;)V
    MethodParameters:
       Name  Flags
      entry  

  private void printArray(com.oracle.svm.configure.json.JsonWriter, java.lang.Object[]);
    descriptor: (Lcom/oracle/svm/configure/json/JsonWriter;[Ljava/lang/Object;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // com.oracle.svm.agent.TraceFileWriter this
        start local 1 // com.oracle.svm.configure.json.JsonWriter json
        start local 2 // java.lang.Object[] array
         0: .line 80
            aload 1 /* json */
            bipush 91
            invokevirtual com.oracle.svm.configure.json.JsonWriter.append:(C)Lcom/oracle/svm/configure/json/JsonWriter;
            pop
         1: .line 81
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         2: goto 11
         3: .line 82
      StackMap locals: int
      StackMap stack:
            iload 3 /* i */
            ifle 5
         4: .line 83
            aload 1 /* json */
            bipush 44
            invokevirtual com.oracle.svm.configure.json.JsonWriter.append:(C)Lcom/oracle/svm/configure/json/JsonWriter;
            pop
         5: .line 85
      StackMap locals:
      StackMap stack:
            aload 2 /* array */
            iload 3 /* i */
            aaload
            astore 4 /* obj */
        start local 4 // java.lang.Object obj
         6: .line 86
            aload 4 /* obj */
            instanceof java.lang.Object[]
            ifeq 9
         7: .line 87
            aload 0 /* this */
            aload 1 /* json */
            aload 4 /* obj */
            checkcast java.lang.Object[]
            invokevirtual com.oracle.svm.agent.TraceFileWriter.printArray:(Lcom/oracle/svm/configure/json/JsonWriter;[Ljava/lang/Object;)V
         8: .line 88
            goto 10
         9: .line 89
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 1 /* json */
            aload 2 /* array */
            iload 3 /* i */
            aaload
            invokevirtual com.oracle.svm.configure.json.JsonWriter.quote:(Ljava/lang/Object;)Lcom/oracle/svm/configure/json/JsonWriter;
            pop
        end local 4 // java.lang.Object obj
        10: .line 81
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 3 /* i */
            aload 2 /* array */
            arraylength
            if_icmplt 3
        end local 3 // int i
        12: .line 92
            aload 1 /* json */
            bipush 93
            invokevirtual com.oracle.svm.configure.json.JsonWriter.append:(C)Lcom/oracle/svm/configure/json/JsonWriter;
            pop
        13: .line 93
            return
        end local 2 // java.lang.Object[] array
        end local 1 // com.oracle.svm.configure.json.JsonWriter json
        end local 0 // com.oracle.svm.agent.TraceFileWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   14     0   this  Lcom/oracle/svm/agent/TraceFileWriter;
            0   14     1   json  Lcom/oracle/svm/configure/json/JsonWriter;
            0   14     2  array  [Ljava/lang/Object;
            2   12     3      i  I
            6   10     4    obj  Ljava/lang/Object;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      json   
      array  

  private void traceEntry(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.oracle.svm.agent.TraceFileWriter this
        start local 1 // java.lang.String s
         0: .line 96
            aload 0 /* this */
            getfield com.oracle.svm.agent.TraceFileWriter.lock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         1: .line 97
            aload 0 /* this */
            getfield com.oracle.svm.agent.TraceFileWriter.open:Z
            ifeq 6
         2: .line 98
            aload 0 /* this */
            getfield com.oracle.svm.agent.TraceFileWriter.written:I
            ifle 4
         3: .line 99
            aload 0 /* this */
            getfield com.oracle.svm.agent.TraceFileWriter.writer:Ljava/io/BufferedWriter;
            ldc ",\n"
            invokevirtual java.io.BufferedWriter.write:(Ljava/lang/String;)V
         4: .line 101
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.svm.agent.TraceFileWriter.writer:Ljava/io/BufferedWriter;
            aload 1 /* s */
            invokevirtual java.io.BufferedWriter.write:(Ljava/lang/String;)V
         5: .line 102
            aload 0 /* this */
            dup
            getfield com.oracle.svm.agent.TraceFileWriter.written:I
            iconst_1
            iadd
            putfield com.oracle.svm.agent.TraceFileWriter.written:I
         6: .line 96
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
         7: goto 10
      StackMap locals:
      StackMap stack: java.lang.Throwable
         8: aload 2
            monitorexit
         9: athrow
        10: .line 105
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.String s
        end local 0 // com.oracle.svm.agent.TraceFileWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lcom/oracle/svm/agent/TraceFileWriter;
            0   11     1     s  Ljava/lang/String;
      Exception table:
        from    to  target  type
           1     7       8  any
           8     9       8  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      s     

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.oracle.svm.agent.TraceFileWriter this
         0: .line 109
            aload 0 /* this */
            getfield com.oracle.svm.agent.TraceFileWriter.lock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 111
            aload 0 /* this */
            getfield com.oracle.svm.agent.TraceFileWriter.writer:Ljava/io/BufferedWriter;
            ldc "\n]\n"
            invokevirtual java.io.BufferedWriter.write:(Ljava/lang/String;)V
         2: .line 112
            aload 0 /* this */
            getfield com.oracle.svm.agent.TraceFileWriter.writer:Ljava/io/BufferedWriter;
            invokevirtual java.io.BufferedWriter.close:()V
         3: .line 113
            goto 5
      StackMap locals: com.oracle.svm.agent.TraceFileWriter java.lang.Object
      StackMap stack: java.io.IOException
         4: pop
         5: .line 115
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield com.oracle.svm.agent.TraceFileWriter.open:Z
         6: .line 109
            aload 1
            monitorexit
         7: goto 10
      StackMap locals:
      StackMap stack: java.lang.Throwable
         8: aload 1
            monitorexit
         9: athrow
        10: .line 117
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.oracle.svm.agent.TraceFileWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lcom/oracle/svm/agent/TraceFileWriter;
      Exception table:
        from    to  target  type
           1     3       4  Class java.io.IOException
           1     7       8  any
           8     9       8  any
}
SourceFile: "TraceFileWriter.java"
InnerClasses:
  public abstract Entry = java.util.Map$Entry of java.util.Map