final class com.oracle.truffle.polyglot.PolyglotLoggers
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.polyglot.PolyglotLoggers
  super_class: java.lang.Object
{
  private static final java.util.Map<java.nio.file.Path, com.oracle.truffle.polyglot.PolyglotLoggers$SharedFileHandler> fileHandlers;
    descriptor: Ljava/util/Map;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/nio/file/Path;Lcom/oracle/truffle/polyglot/PolyglotLoggers$SharedFileHandler;>;

  private static final java.lang.String GRAAL_COMPILER_LOG_ID;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "graal"

  private static final java.util.Set<java.lang.String> INTERNAL_IDS;
    descriptor: Ljava/util/Set;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Set<Ljava/lang/String;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=1, args_size=0
         0: .line 74
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putstatic com.oracle.truffle.polyglot.PolyglotLoggers.fileHandlers:Ljava/util/Map;
         1: .line 79
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 0 /* s */
        start local 0 // java.util.Set s
         2: .line 80
            aload 0 /* s */
            iconst_2
            anewarray java.lang.String
            dup
            iconst_0
            ldc "engine"
            aastore
            dup
            iconst_1
            ldc "graal"
            aastore
            invokestatic java.util.Collections.addAll:(Ljava/util/Collection;[Ljava/lang/Object;)Z
            pop
         3: .line 81
            aload 0 /* s */
            invokestatic java.util.Collections.unmodifiableSet:(Ljava/util/Set;)Ljava/util/Set;
            putstatic com.oracle.truffle.polyglot.PolyglotLoggers.INTERNAL_IDS:Ljava/util/Set;
        end local 0 // java.util.Set s
         4: .line 82
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            2    4     0     s  Ljava/util/Set<Ljava/lang/String;>;

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.polyglot.PolyglotLoggers this
         0: .line 84
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 85
            return
        end local 0 // com.oracle.truffle.polyglot.PolyglotLoggers this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/polyglot/PolyglotLoggers;

  static java.util.Set<java.lang.String> getInternalIds();
    descriptor: ()Ljava/util/Set;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 88
            getstatic com.oracle.truffle.polyglot.PolyglotLoggers.INTERNAL_IDS:Ljava/util/Set;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Signature: ()Ljava/util/Set<Ljava/lang/String;>;

  static com.oracle.truffle.polyglot.PolyglotLoggers$LoggerCache defaultSPI();
    descriptor: ()Lcom/oracle/truffle/polyglot/PolyglotLoggers$LoggerCache;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 92
            getstatic com.oracle.truffle.polyglot.PolyglotLoggers$LoggerCacheImpl.DEFAULT:Lcom/oracle/truffle/polyglot/PolyglotLoggers$LoggerCache;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static com.oracle.truffle.polyglot.PolyglotLoggers$LoggerCache createEngineSPI(com.oracle.truffle.polyglot.PolyglotEngineImpl);
    descriptor: (Lcom/oracle/truffle/polyglot/PolyglotEngineImpl;)Lcom/oracle/truffle/polyglot/PolyglotLoggers$LoggerCache;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // com.oracle.truffle.polyglot.PolyglotEngineImpl engine
         0: .line 96
            new com.oracle.truffle.polyglot.PolyglotLoggers$PolyglotLogHandler
            dup
            aload 0 /* engine */
            invokespecial com.oracle.truffle.polyglot.PolyglotLoggers$PolyglotLogHandler.<init>:(Lcom/oracle/truffle/polyglot/PolyglotEngineImpl;)V
            aload 0 /* engine */
            iconst_1
            invokestatic java.util.Collections.emptySet:()Ljava/util/Set;
            iconst_0
            anewarray java.util.logging.Level
            invokestatic com.oracle.truffle.polyglot.PolyglotLoggers$LoggerCacheImpl.newEngineLoggerCache:(Ljava/util/logging/Handler;Lcom/oracle/truffle/polyglot/PolyglotEngineImpl;ZLjava/util/Set;[Ljava/util/logging/Level;)Lcom/oracle/truffle/polyglot/PolyglotLoggers$LoggerCacheImpl;
            areturn
        end local 0 // com.oracle.truffle.polyglot.PolyglotEngineImpl engine
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  engine  Lcom/oracle/truffle/polyglot/PolyglotEngineImpl;
    MethodParameters:
        Name  Flags
      engine  

  static com.oracle.truffle.polyglot.PolyglotContextImpl getCurrentOuterContext();
    descriptor: ()Lcom/oracle/truffle/polyglot/PolyglotContextImpl;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=0
         0: .line 100
            invokestatic com.oracle.truffle.polyglot.PolyglotContextImpl.currentNotEntered:()Lcom/oracle/truffle/polyglot/PolyglotContextImpl;
            astore 0 /* currentContext */
        start local 0 // com.oracle.truffle.polyglot.PolyglotContextImpl currentContext
         1: .line 101
            aload 0 /* currentContext */
            ifnull 5
         2: .line 102
            goto 4
         3: .line 103
      StackMap locals: com.oracle.truffle.polyglot.PolyglotContextImpl
      StackMap stack:
            aload 0 /* currentContext */
            getfield com.oracle.truffle.polyglot.PolyglotContextImpl.parent:Lcom/oracle/truffle/polyglot/PolyglotContextImpl;
            astore 0 /* currentContext */
         4: .line 102
      StackMap locals:
      StackMap stack:
            aload 0 /* currentContext */
            getfield com.oracle.truffle.polyglot.PolyglotContextImpl.parent:Lcom/oracle/truffle/polyglot/PolyglotContextImpl;
            ifnonnull 3
         5: .line 106
      StackMap locals:
      StackMap stack:
            aload 0 /* currentContext */
            areturn
        end local 0 // com.oracle.truffle.polyglot.PolyglotContextImpl currentContext
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            1    6     0  currentContext  Lcom/oracle/truffle/polyglot/PolyglotContextImpl;

  static boolean isSameLogSink(java.util.logging.Handler, java.util.logging.Handler);
    descriptor: (Ljava/util/logging/Handler;Ljava/util/logging/Handler;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.util.logging.Handler h1
        start local 1 // java.util.logging.Handler h2
         0: .line 110
            aload 0 /* h1 */
            aload 1 /* h2 */
            if_acmpne 2
         1: .line 111
            iconst_1
            ireturn
         2: .line 113
      StackMap locals:
      StackMap stack:
            aload 0 /* h1 */
            instanceof com.oracle.truffle.polyglot.PolyglotLoggers$PolyglotStreamHandler
            ifeq 5
            aload 1 /* h2 */
            instanceof com.oracle.truffle.polyglot.PolyglotLoggers$PolyglotStreamHandler
            ifeq 5
         3: .line 114
            aload 0 /* h1 */
            checkcast com.oracle.truffle.polyglot.PolyglotLoggers$PolyglotStreamHandler
            getfield com.oracle.truffle.polyglot.PolyglotLoggers$PolyglotStreamHandler.sink:Ljava/io/OutputStream;
            aload 1 /* h2 */
            checkcast com.oracle.truffle.polyglot.PolyglotLoggers$PolyglotStreamHandler
            getfield com.oracle.truffle.polyglot.PolyglotLoggers$PolyglotStreamHandler.sink:Ljava/io/OutputStream;
            if_acmpne 4
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         4: iconst_0
            ireturn
         5: .line 116
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // java.util.logging.Handler h2
        end local 0 // java.util.logging.Handler h1
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0    h1  Ljava/util/logging/Handler;
            0    6     1    h2  Ljava/util/logging/Handler;
    MethodParameters:
      Name  Flags
      h1    
      h2    

  static java.util.logging.Handler asHandler(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/util/logging/Handler;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // java.lang.Object logHandlerOrStream
         0: .line 133
            aload 0 /* logHandlerOrStream */
            ifnonnull 2
         1: .line 134
            aconst_null
            areturn
         2: .line 136
      StackMap locals:
      StackMap stack:
            aload 0 /* logHandlerOrStream */
            instanceof java.util.logging.Handler
            ifeq 4
         3: .line 137
            aload 0 /* logHandlerOrStream */
            checkcast java.util.logging.Handler
            areturn
         4: .line 139
      StackMap locals:
      StackMap stack:
            aload 0 /* logHandlerOrStream */
            instanceof java.io.OutputStream
            ifeq 6
         5: .line 140
            aload 0 /* logHandlerOrStream */
            checkcast java.io.OutputStream
            iconst_1
            iconst_1
            invokestatic com.oracle.truffle.polyglot.PolyglotLoggers.createStreamHandler:(Ljava/io/OutputStream;ZZ)Ljava/util/logging/Handler;
            areturn
         6: .line 142
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unexpected logHandlerOrStream parameter: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* logHandlerOrStream */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // java.lang.Object logHandlerOrStream
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    7     0  logHandlerOrStream  Ljava/lang/Object;
    MethodParameters:
                    Name  Flags
      logHandlerOrStream  

  static java.util.logging.Handler createDefaultHandler(java.io.OutputStream);
    descriptor: (Ljava/io/OutputStream;)Ljava/util/logging/Handler;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // java.io.OutputStream out
         0: .line 151
            new com.oracle.truffle.polyglot.PolyglotLoggers$PolyglotStreamHandler
            dup
            new com.oracle.truffle.polyglot.PolyglotLoggers$RedirectNotificationOutputStream
            dup
            aload 0 /* out */
            invokespecial com.oracle.truffle.polyglot.PolyglotLoggers$RedirectNotificationOutputStream.<init>:(Ljava/io/OutputStream;)V
            iconst_0
            iconst_1
            iconst_1
            invokespecial com.oracle.truffle.polyglot.PolyglotLoggers$PolyglotStreamHandler.<init>:(Ljava/io/OutputStream;ZZZ)V
            areturn
        end local 0 // java.io.OutputStream out
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   out  Ljava/io/OutputStream;
    MethodParameters:
      Name  Flags
      out   final

  static java.util.logging.Handler getFileHandler(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/logging/Handler;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // java.lang.String path
         0: .line 155
            aload 0 /* path */
            iconst_0
            anewarray java.lang.String
            invokestatic java.nio.file.Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.toAbsolutePath:()Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.normalize:()Ljava/nio/file/Path;
            astore 1 /* absolutePath */
        start local 1 // java.nio.file.Path absolutePath
         1: .line 156
            getstatic com.oracle.truffle.polyglot.PolyglotLoggers.fileHandlers:Ljava/util/Map;
            dup
            astore 2
            monitorenter
         2: .line 157
            getstatic com.oracle.truffle.polyglot.PolyglotLoggers.fileHandlers:Ljava/util/Map;
            aload 1 /* absolutePath */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.polyglot.PolyglotLoggers$SharedFileHandler
            astore 3 /* handler */
        start local 3 // com.oracle.truffle.polyglot.PolyglotLoggers$SharedFileHandler handler
         3: .line 158
            aload 3 /* handler */
            ifnonnull 11
         4: .line 160
            new com.oracle.truffle.polyglot.PolyglotLoggers$SharedFileHandler
            dup
            aload 1 /* absolutePath */
            invokespecial com.oracle.truffle.polyglot.PolyglotLoggers$SharedFileHandler.<init>:(Ljava/nio/file/Path;)V
            astore 3 /* handler */
         5: .line 161
            getstatic com.oracle.truffle.polyglot.PolyglotLoggers.fileHandlers:Ljava/util/Map;
            aload 1 /* absolutePath */
            aload 3 /* handler */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         6: .line 162
            goto 11
      StackMap locals: java.lang.String java.nio.file.Path java.util.Map com.oracle.truffle.polyglot.PolyglotLoggers$SharedFileHandler
      StackMap stack: java.io.IOException
         7: astore 4 /* ioe */
        start local 4 // java.io.IOException ioe
         8: .line 163
            new java.lang.StringBuilder
            dup
            ldc "Cannot open log file "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* path */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " for writing, IO error: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* ioe */
            invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
            ifnull 9
            aload 4 /* ioe */
            invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
            goto 10
      StackMap locals: java.lang.String java.nio.file.Path java.util.Map com.oracle.truffle.polyglot.PolyglotLoggers$SharedFileHandler java.io.IOException
      StackMap stack: java.lang.StringBuilder
         9: aconst_null
      StackMap locals: java.lang.String java.nio.file.Path java.util.Map com.oracle.truffle.polyglot.PolyglotLoggers$SharedFileHandler java.io.IOException
      StackMap stack: java.lang.StringBuilder java.lang.String
        10: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic com.oracle.truffle.polyglot.PolyglotEngineException.illegalArgument:(Ljava/lang/String;)Lcom/oracle/truffle/polyglot/PolyglotEngineException;
            athrow
        end local 4 // java.io.IOException ioe
        11: .line 166
      StackMap locals:
      StackMap stack:
            aload 3 /* handler */
            invokevirtual com.oracle.truffle.polyglot.PolyglotLoggers$SharedFileHandler.retain:()Lcom/oracle/truffle/polyglot/PolyglotLoggers$SharedFileHandler;
            aload 2
            monitorexit
        12: areturn
        end local 3 // com.oracle.truffle.polyglot.PolyglotLoggers$SharedFileHandler handler
        13: .line 156
      StackMap locals: java.lang.String java.nio.file.Path java.util.Map
      StackMap stack: java.lang.Throwable
            aload 2
            monitorexit
        14: athrow
        end local 1 // java.nio.file.Path absolutePath
        end local 0 // java.lang.String path
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   15     0          path  Ljava/lang/String;
            1   15     1  absolutePath  Ljava/nio/file/Path;
            3   13     3       handler  Lcom/oracle/truffle/polyglot/PolyglotLoggers$SharedFileHandler;
            8   11     4           ioe  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           4     6       7  Class java.io.IOException
           2    12      13  any
          13    14      13  any
    MethodParameters:
      Name  Flags
      path  

  static java.util.logging.Handler createStreamHandler(java.io.OutputStream, boolean, boolean);
    descriptor: (Ljava/io/OutputStream;ZZ)Ljava/util/logging/Handler;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // java.io.OutputStream out
        start local 1 // boolean closeStream
        start local 2 // boolean flushOnPublish
         0: .line 181
            new com.oracle.truffle.polyglot.PolyglotLoggers$PolyglotStreamHandler
            dup
            aload 0 /* out */
            iload 1 /* closeStream */
            iload 2 /* flushOnPublish */
            iconst_0
            invokespecial com.oracle.truffle.polyglot.PolyglotLoggers$PolyglotStreamHandler.<init>:(Ljava/io/OutputStream;ZZZ)V
            areturn
        end local 2 // boolean flushOnPublish
        end local 1 // boolean closeStream
        end local 0 // java.io.OutputStream out
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0             out  Ljava/io/OutputStream;
            0    1     1     closeStream  Z
            0    1     2  flushOnPublish  Z
    MethodParameters:
                Name  Flags
      out             final
      closeStream     final
      flushOnPublish  final

  static boolean isDefaultHandler(java.util.logging.Handler);
    descriptor: (Ljava/util/logging/Handler;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // java.util.logging.Handler handler
         0: .line 185
            aload 0 /* handler */
            instanceof com.oracle.truffle.polyglot.PolyglotLoggers$PolyglotStreamHandler
            ifne 2
         1: .line 186
            iconst_0
            ireturn
         2: .line 188
      StackMap locals:
      StackMap stack:
            aload 0 /* handler */
            checkcast com.oracle.truffle.polyglot.PolyglotLoggers$PolyglotStreamHandler
            astore 1 /* phandler */
        start local 1 // com.oracle.truffle.polyglot.PolyglotLoggers$PolyglotStreamHandler phandler
         3: .line 189
            aload 1 /* phandler */
            getfield com.oracle.truffle.polyglot.PolyglotLoggers$PolyglotStreamHandler.isDefault:Z
            ireturn
        end local 1 // com.oracle.truffle.polyglot.PolyglotLoggers$PolyglotStreamHandler phandler
        end local 0 // java.util.logging.Handler handler
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0   handler  Ljava/util/logging/Handler;
            3    4     1  phandler  Lcom/oracle/truffle/polyglot/PolyglotLoggers$PolyglotStreamHandler;
    MethodParameters:
         Name  Flags
      handler  
}
SourceFile: "PolyglotLoggers.java"
NestMembers:
  com.oracle.truffle.polyglot.PolyglotLoggers$EngineLoggerProvider  com.oracle.truffle.polyglot.PolyglotLoggers$ImmutableLogRecord  com.oracle.truffle.polyglot.PolyglotLoggers$ImmutableLogRecord$FormatKind  com.oracle.truffle.polyglot.PolyglotLoggers$LoggerCache  com.oracle.truffle.polyglot.PolyglotLoggers$LoggerCacheImpl  com.oracle.truffle.polyglot.PolyglotLoggers$PolyglotLogHandler  com.oracle.truffle.polyglot.PolyglotLoggers$PolyglotStreamHandler  com.oracle.truffle.polyglot.PolyglotLoggers$PolyglotStreamHandler$FormatterImpl  com.oracle.truffle.polyglot.PolyglotLoggers$RedirectNotificationOutputStream  com.oracle.truffle.polyglot.PolyglotLoggers$SafeHandler  com.oracle.truffle.polyglot.PolyglotLoggers$SharedFileHandler
InnerClasses:
  final EngineLoggerProvider = com.oracle.truffle.polyglot.PolyglotLoggers$EngineLoggerProvider of com.oracle.truffle.polyglot.PolyglotLoggers
  private final ImmutableLogRecord = com.oracle.truffle.polyglot.PolyglotLoggers$ImmutableLogRecord of com.oracle.truffle.polyglot.PolyglotLoggers
  abstract LoggerCache = com.oracle.truffle.polyglot.PolyglotLoggers$LoggerCache of com.oracle.truffle.polyglot.PolyglotLoggers
  final LoggerCacheImpl = com.oracle.truffle.polyglot.PolyglotLoggers$LoggerCacheImpl of com.oracle.truffle.polyglot.PolyglotLoggers
  private final PolyglotLogHandler = com.oracle.truffle.polyglot.PolyglotLoggers$PolyglotLogHandler of com.oracle.truffle.polyglot.PolyglotLoggers
  private PolyglotStreamHandler = com.oracle.truffle.polyglot.PolyglotLoggers$PolyglotStreamHandler of com.oracle.truffle.polyglot.PolyglotLoggers
  private final RedirectNotificationOutputStream = com.oracle.truffle.polyglot.PolyglotLoggers$RedirectNotificationOutputStream of com.oracle.truffle.polyglot.PolyglotLoggers
  private final SafeHandler = com.oracle.truffle.polyglot.PolyglotLoggers$SafeHandler of com.oracle.truffle.polyglot.PolyglotLoggers
  private final SharedFileHandler = com.oracle.truffle.polyglot.PolyglotLoggers$SharedFileHandler of com.oracle.truffle.polyglot.PolyglotLoggers