public class com.oracle.mxtool.compilerserver.CompilerDaemon$Connection implements java.lang.Runnable
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.mxtool.compilerserver.CompilerDaemon$Connection
  super_class: java.lang.Object
{
  private final java.net.Socket connectionSocket;
    descriptor: Ljava/net/Socket;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.mxtool.compilerserver.CompilerDaemon$Compiler compiler;
    descriptor: Lcom/oracle/mxtool/compilerserver/CompilerDaemon$Compiler;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  final com.oracle.mxtool.compilerserver.CompilerDaemon this$0;
    descriptor: Lcom/oracle/mxtool/compilerserver/CompilerDaemon;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  public void <init>(com.oracle.mxtool.compilerserver.CompilerDaemon, java.net.Socket, com.oracle.mxtool.compilerserver.CompilerDaemon$Compiler);
    descriptor: (Lcom/oracle/mxtool/compilerserver/CompilerDaemon;Ljava/net/Socket;Lcom/oracle/mxtool/compilerserver/CompilerDaemon$Compiler;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // com.oracle.mxtool.compilerserver.CompilerDaemon$Connection this
        start local 2 // java.net.Socket connectionSocket
        start local 3 // com.oracle.mxtool.compilerserver.CompilerDaemon$Compiler compiler
         0: .line 126
            aload 0 /* this */
            aload 1
            putfield com.oracle.mxtool.compilerserver.CompilerDaemon$Connection.this$0:Lcom/oracle/mxtool/compilerserver/CompilerDaemon;
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 127
            aload 0 /* this */
            aload 2 /* connectionSocket */
            putfield com.oracle.mxtool.compilerserver.CompilerDaemon$Connection.connectionSocket:Ljava/net/Socket;
         2: .line 128
            aload 0 /* this */
            aload 3 /* compiler */
            putfield com.oracle.mxtool.compilerserver.CompilerDaemon$Connection.compiler:Lcom/oracle/mxtool/compilerserver/CompilerDaemon$Compiler;
         3: .line 129
            return
        end local 3 // com.oracle.mxtool.compilerserver.CompilerDaemon$Compiler compiler
        end local 2 // java.net.Socket connectionSocket
        end local 0 // com.oracle.mxtool.compilerserver.CompilerDaemon$Connection this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    4     0              this  Lcom/oracle/mxtool/compilerserver/CompilerDaemon$Connection;
            0    4     2  connectionSocket  Ljava/net/Socket;
            0    4     3          compiler  Lcom/oracle/mxtool/compilerserver/CompilerDaemon$Compiler;
    MethodParameters:
                  Name  Flags
      this$0            final
      connectionSocket  
      compiler          

  public void run();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=7, args_size=1
        start local 0 // com.oracle.mxtool.compilerserver.CompilerDaemon$Connection this
         0: .line 133
            new java.io.BufferedReader
            dup
            new java.io.InputStreamReader
            dup
            aload 0 /* this */
            getfield com.oracle.mxtool.compilerserver.CompilerDaemon$Connection.connectionSocket:Ljava/net/Socket;
            invokevirtual java.net.Socket.getInputStream:()Ljava/io/InputStream;
            ldc "UTF-8"
            invokespecial java.io.InputStreamReader.<init>:(Ljava/io/InputStream;Ljava/lang/String;)V
            invokespecial java.io.BufferedReader.<init>:(Ljava/io/Reader;)V
            astore 1 /* input */
        start local 1 // java.io.BufferedReader input
         1: .line 134
            new java.io.OutputStreamWriter
            dup
            aload 0 /* this */
            getfield com.oracle.mxtool.compilerserver.CompilerDaemon$Connection.connectionSocket:Ljava/net/Socket;
            invokevirtual java.net.Socket.getOutputStream:()Ljava/io/OutputStream;
            ldc "UTF-8"
            invokespecial java.io.OutputStreamWriter.<init>:(Ljava/io/OutputStream;Ljava/lang/String;)V
            astore 2 /* output */
        start local 2 // java.io.OutputStreamWriter output
         2: .line 137
            aload 1 /* input */
            invokevirtual java.io.BufferedReader.readLine:()Ljava/lang/String;
            astore 3 /* commandLine */
        start local 3 // java.lang.String commandLine
         3: .line 138
            aload 3 /* commandLine */
            ifnull 4
            aload 3 /* commandLine */
            invokevirtual java.lang.String.length:()I
            ifne 12
         4: .line 139
      StackMap locals: java.io.BufferedReader java.io.OutputStreamWriter java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.mxtool.compilerserver.CompilerDaemon$Connection.this$0:Lcom/oracle/mxtool/compilerserver/CompilerDaemon;
            ldc "Shutting down\n"
            iconst_0
            anewarray java.lang.Object
            invokevirtual com.oracle.mxtool.compilerserver.CompilerDaemon.logf:(Ljava/lang/String;[Ljava/lang/Object;)V
         5: .line 140
            aload 0 /* this */
            getfield com.oracle.mxtool.compilerserver.CompilerDaemon$Connection.this$0:Lcom/oracle/mxtool/compilerserver/CompilerDaemon;
            iconst_0
            putfield com.oracle.mxtool.compilerserver.CompilerDaemon.running:Z
         6: .line 141
            goto 8
         7: .line 142
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.mxtool.compilerserver.CompilerDaemon$Connection.this$0:Lcom/oracle/mxtool/compilerserver/CompilerDaemon;
            getfield com.oracle.mxtool.compilerserver.CompilerDaemon.threadPool:Ljava/util/concurrent/ThreadPoolExecutor;
            ldc 50
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual java.util.concurrent.ThreadPoolExecutor.awaitTermination:(JLjava/util/concurrent/TimeUnit;)Z
            pop
         8: .line 141
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.mxtool.compilerserver.CompilerDaemon$Connection.this$0:Lcom/oracle/mxtool/compilerserver/CompilerDaemon;
            getfield com.oracle.mxtool.compilerserver.CompilerDaemon.threadPool:Ljava/util/concurrent/ThreadPoolExecutor;
            invokevirtual java.util.concurrent.ThreadPoolExecutor.getActiveCount:()I
            iconst_1
            if_icmpgt 7
         9: .line 144
            aload 0 /* this */
            getfield com.oracle.mxtool.compilerserver.CompilerDaemon$Connection.this$0:Lcom/oracle/mxtool/compilerserver/CompilerDaemon;
            getfield com.oracle.mxtool.compilerserver.CompilerDaemon.serverSocket:Ljava/net/ServerSocket;
            invokevirtual java.net.ServerSocket.close:()V
        10: .line 146
            iconst_0
            invokestatic java.lang.System.exit:(I)V
        11: .line 147
            goto 23
        12: .line 148
      StackMap locals:
      StackMap stack:
            aload 3 /* commandLine */
            ldc "\u0000"
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            astore 4 /* args */
        start local 4 // java.lang.String[] args
        13: .line 149
            aload 0 /* this */
            getfield com.oracle.mxtool.compilerserver.CompilerDaemon$Connection.this$0:Lcom/oracle/mxtool/compilerserver/CompilerDaemon;
            ldc "Compiling %s\n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.mxtool.compilerserver.CompilerDaemon$Connection.this$0:Lcom/oracle/mxtool/compilerserver/CompilerDaemon;
            ldc " "
            aload 4 /* args */
            invokevirtual com.oracle.mxtool.compilerserver.CompilerDaemon.join:(Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/String;
            aastore
            invokevirtual com.oracle.mxtool.compilerserver.CompilerDaemon.logf:(Ljava/lang/String;[Ljava/lang/Object;)V
        14: .line 151
            aload 0 /* this */
            getfield com.oracle.mxtool.compilerserver.CompilerDaemon$Connection.compiler:Lcom/oracle/mxtool/compilerserver/CompilerDaemon$Compiler;
            aload 4 /* args */
            invokeinterface com.oracle.mxtool.compilerserver.CompilerDaemon$Compiler.compile:([Ljava/lang/String;)I
            istore 5 /* result */
        start local 5 // int result
        15: .line 152
            aload 0 /* this */
            getfield com.oracle.mxtool.compilerserver.CompilerDaemon$Connection.this$0:Lcom/oracle/mxtool/compilerserver/CompilerDaemon;
            ldc "Result = %d\n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            iload 5 /* result */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokevirtual com.oracle.mxtool.compilerserver.CompilerDaemon.logf:(Ljava/lang/String;[Ljava/lang/Object;)V
        16: .line 154
            aload 2 /* output */
            new java.lang.StringBuilder
            dup
            iload 5 /* result */
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.OutputStreamWriter.write:(Ljava/lang/String;)V
        end local 5 // int result
        end local 4 // java.lang.String[] args
        end local 3 // java.lang.String commandLine
        17: .line 156
            goto 23
      StackMap locals: com.oracle.mxtool.compilerserver.CompilerDaemon$Connection java.io.BufferedReader java.io.OutputStreamWriter
      StackMap stack: java.lang.Throwable
        18: astore 6
        19: .line 158
            aload 2 /* output */
            invokevirtual java.io.OutputStreamWriter.close:()V
        20: .line 159
            aload 1 /* input */
            invokevirtual java.io.BufferedReader.close:()V
        21: .line 160
            aload 0 /* this */
            getfield com.oracle.mxtool.compilerserver.CompilerDaemon$Connection.connectionSocket:Ljava/net/Socket;
            invokevirtual java.net.Socket.close:()V
        22: .line 161
            aload 6
            athrow
        23: .line 158
      StackMap locals:
      StackMap stack:
            aload 2 /* output */
            invokevirtual java.io.OutputStreamWriter.close:()V
        24: .line 159
            aload 1 /* input */
            invokevirtual java.io.BufferedReader.close:()V
        25: .line 160
            aload 0 /* this */
            getfield com.oracle.mxtool.compilerserver.CompilerDaemon$Connection.connectionSocket:Ljava/net/Socket;
            invokevirtual java.net.Socket.close:()V
        end local 2 // java.io.OutputStreamWriter output
        end local 1 // java.io.BufferedReader input
        26: .line 162
            goto 29
      StackMap locals: com.oracle.mxtool.compilerserver.CompilerDaemon$Connection
      StackMap stack: java.lang.Exception
        27: astore 1 /* ioe */
        start local 1 // java.lang.Exception ioe
        28: .line 163
            aload 1 /* ioe */
            invokevirtual java.lang.Exception.printStackTrace:()V
        end local 1 // java.lang.Exception ioe
        29: .line 165
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.oracle.mxtool.compilerserver.CompilerDaemon$Connection this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   30     0         this  Lcom/oracle/mxtool/compilerserver/CompilerDaemon$Connection;
            1   26     1        input  Ljava/io/BufferedReader;
            2   26     2       output  Ljava/io/OutputStreamWriter;
            3   17     3  commandLine  Ljava/lang/String;
           13   17     4         args  [Ljava/lang/String;
           15   17     5       result  I
           28   29     1          ioe  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           2    18      18  any
           0    26      27  Class java.lang.Exception
}
SourceFile: "CompilerDaemon.java"
NestHost: com.oracle.mxtool.compilerserver.CompilerDaemon
InnerClasses:
  abstract Compiler = com.oracle.mxtool.compilerserver.CompilerDaemon$Compiler of com.oracle.mxtool.compilerserver.CompilerDaemon
  public Connection = com.oracle.mxtool.compilerserver.CompilerDaemon$Connection of com.oracle.mxtool.compilerserver.CompilerDaemon