final class com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl extends com.oracle.truffle.api.impl.Accessor$InstrumentSupport
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl
  super_class: com.oracle.truffle.api.impl.Accessor$InstrumentSupport
{
  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 108
            ldc Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
         0: .line 108
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.impl.Accessor$InstrumentSupport.<init>:()V
            return
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;

  public java.lang.Object createInstrumentationHandler(java.lang.Object, com.oracle.truffle.api.impl.DispatchOutputStream, com.oracle.truffle.api.impl.DispatchOutputStream, java.io.InputStream, org.graalvm.polyglot.io.MessageTransport, boolean);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/api/impl/DispatchOutputStream;Lcom/oracle/truffle/api/impl/DispatchOutputStream;Ljava/io/InputStream;Lorg/graalvm/polyglot/io/MessageTransport;Z)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=7, args_size=7
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // java.lang.Object polyglotEngine
        start local 2 // com.oracle.truffle.api.impl.DispatchOutputStream out
        start local 3 // com.oracle.truffle.api.impl.DispatchOutputStream err
        start local 4 // java.io.InputStream in
        start local 5 // org.graalvm.polyglot.io.MessageTransport messageInterceptor
        start local 6 // boolean strongReferences
         0: .line 113
            new com.oracle.truffle.api.instrumentation.InstrumentationHandler
            dup
            aload 1 /* polyglotEngine */
            aload 2 /* out */
            aload 3 /* err */
            aload 4 /* in */
            aload 5 /* messageInterceptor */
            invokespecial com.oracle.truffle.api.instrumentation.InstrumentationHandler.<init>:(Ljava/lang/Object;Lcom/oracle/truffle/api/impl/DispatchOutputStream;Lcom/oracle/truffle/api/impl/DispatchOutputStream;Ljava/io/InputStream;Lorg/graalvm/polyglot/io/MessageTransport;)V
            areturn
        end local 6 // boolean strongReferences
        end local 5 // org.graalvm.polyglot.io.MessageTransport messageInterceptor
        end local 4 // java.io.InputStream in
        end local 3 // com.oracle.truffle.api.impl.DispatchOutputStream err
        end local 2 // com.oracle.truffle.api.impl.DispatchOutputStream out
        end local 1 // java.lang.Object polyglotEngine
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    1     0                this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    1     1      polyglotEngine  Ljava/lang/Object;
            0    1     2                 out  Lcom/oracle/truffle/api/impl/DispatchOutputStream;
            0    1     3                 err  Lcom/oracle/truffle/api/impl/DispatchOutputStream;
            0    1     4                  in  Ljava/io/InputStream;
            0    1     5  messageInterceptor  Lorg/graalvm/polyglot/io/MessageTransport;
            0    1     6    strongReferences  Z
    MethodParameters:
                    Name  Flags
      polyglotEngine      
      out                 
      err                 
      in                  
      messageInterceptor  
      strongReferences    

  public void initializeInstrument(, , java.lang.String, java.util.function.Supplier<? extends java.lang.Object>);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;Ljava/util/function/Supplier;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=5
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // java.lang.Object instrumentationHandler
        start local 2 // java.lang.Object polyglotInstrument
        start local 3 // java.lang.String instrumentClassName
        start local 4 // java.util.function.Supplier instrumentSupplier
         0: .line 118
            aload 1 /* instrumentationHandler */
            checkcast com.oracle.truffle.api.instrumentation.InstrumentationHandler
            aload 2 /* polyglotInstrument */
            aload 3 /* instrumentClassName */
            aload 4 /* instrumentSupplier */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler.initializeInstrument:(Ljava/lang/Object;Ljava/lang/String;Ljava/util/function/Supplier;)V
         1: .line 119
            return
        end local 4 // java.util.function.Supplier instrumentSupplier
        end local 3 // java.lang.String instrumentClassName
        end local 2 // java.lang.Object polyglotInstrument
        end local 1 // java.lang.Object instrumentationHandler
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    2     0                    this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    2     1  instrumentationHandler  Ljava/lang/Object;
            0    2     2      polyglotInstrument  Ljava/lang/Object;
            0    2     3     instrumentClassName  Ljava/lang/String;
            0    2     4      instrumentSupplier  Ljava/util/function/Supplier<+Ljava/lang/Object;>;
    Signature: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;Ljava/util/function/Supplier<+Ljava/lang/Object;>;)V
    MethodParameters:
                        Name  Flags
      instrumentationHandler  
      polyglotInstrument      
      instrumentClassName     
      instrumentSupplier      

  public void createInstrument(java.lang.Object, java.lang.Object, java.lang.String[], org.graalvm.options.OptionValues);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/String;Lorg/graalvm/options/OptionValues;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=5
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // java.lang.Object instrumentationHandler
        start local 2 // java.lang.Object polyglotInstrument
        start local 3 // java.lang.String[] expectedServices
        start local 4 // org.graalvm.options.OptionValues options
         0: .line 123
            aload 1 /* instrumentationHandler */
            checkcast com.oracle.truffle.api.instrumentation.InstrumentationHandler
            aload 2 /* polyglotInstrument */
            aload 3 /* expectedServices */
            aload 4 /* options */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler.createInstrument:(Ljava/lang/Object;[Ljava/lang/String;Lorg/graalvm/options/OptionValues;)V
         1: .line 124
            return
        end local 4 // org.graalvm.options.OptionValues options
        end local 3 // java.lang.String[] expectedServices
        end local 2 // java.lang.Object polyglotInstrument
        end local 1 // java.lang.Object instrumentationHandler
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    2     0                    this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    2     1  instrumentationHandler  Ljava/lang/Object;
            0    2     2      polyglotInstrument  Ljava/lang/Object;
            0    2     3        expectedServices  [Ljava/lang/String;
            0    2     4                 options  Lorg/graalvm/options/OptionValues;
    MethodParameters:
                        Name  Flags
      instrumentationHandler  
      polyglotInstrument      
      expectedServices        
      options                 

  public java.lang.Object getEngineInstrumenter(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // java.lang.Object instrumentationHandler
         0: .line 128
            aload 1 /* instrumentationHandler */
            checkcast com.oracle.truffle.api.instrumentation.InstrumentationHandler
            getfield com.oracle.truffle.api.instrumentation.InstrumentationHandler.engineInstrumenter:Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$EngineInstrumenter;
            areturn
        end local 1 // java.lang.Object instrumentationHandler
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    1     0                    this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    1     1  instrumentationHandler  Ljava/lang/Object;
    MethodParameters:
                        Name  Flags
      instrumentationHandler  

  public void onNodeInserted(com.oracle.truffle.api.nodes.RootNode, com.oracle.truffle.api.nodes.Node);
    descriptor: (Lcom/oracle/truffle/api/nodes/RootNode;Lcom/oracle/truffle/api/nodes/Node;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // com.oracle.truffle.api.nodes.RootNode rootNode
        start local 2 // com.oracle.truffle.api.nodes.Node tree
         0: .line 133
            aload 1 /* rootNode */
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl.getHandler:(Lcom/oracle/truffle/api/nodes/RootNode;)Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
            astore 3 /* handler */
        start local 3 // com.oracle.truffle.api.instrumentation.InstrumentationHandler handler
         1: .line 134
            aload 3 /* handler */
            ifnull 3
         2: .line 135
            aload 3 /* handler */
            aload 1 /* rootNode */
            aload 2 /* tree */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler.onNodeInserted:(Lcom/oracle/truffle/api/nodes/RootNode;Lcom/oracle/truffle/api/nodes/Node;)V
         3: .line 137
      StackMap locals: com.oracle.truffle.api.instrumentation.InstrumentationHandler
      StackMap stack:
            return
        end local 3 // com.oracle.truffle.api.instrumentation.InstrumentationHandler handler
        end local 2 // com.oracle.truffle.api.nodes.Node tree
        end local 1 // com.oracle.truffle.api.nodes.RootNode rootNode
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    4     1  rootNode  Lcom/oracle/truffle/api/nodes/RootNode;
            0    4     2      tree  Lcom/oracle/truffle/api/nodes/Node;
            1    4     3   handler  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
    MethodParameters:
          Name  Flags
      rootNode  
      tree      

  public org.graalvm.options.OptionDescriptors describeEngineOptions(java.lang.Object, java.lang.Object, java.lang.String);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;)Lorg/graalvm/options/OptionDescriptors;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=6, args_size=4
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // java.lang.Object instrumentationHandler
        start local 2 // java.lang.Object key
        start local 3 // java.lang.String requiredGroup
         0: .line 141
            aload 1 /* instrumentationHandler */
            checkcast com.oracle.truffle.api.instrumentation.InstrumentationHandler
            getfield com.oracle.truffle.api.instrumentation.InstrumentationHandler.instrumenterMap:Ljava/util/concurrent/ConcurrentHashMap;
            aload 2 /* key */
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter
            astore 4 /* instrumenter */
        start local 4 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter instrumenter
         1: .line 142
            aload 4 /* instrumenter */
            getfield com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.instrument:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument.getOptionDescriptors:()Lorg/graalvm/options/OptionDescriptors;
            astore 5 /* descriptors */
        start local 5 // org.graalvm.options.OptionDescriptors descriptors
         2: .line 143
            aload 3 /* requiredGroup */
            aload 4 /* instrumenter */
            aload 5 /* descriptors */
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl.validateOptions:(Ljava/lang/String;Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$InstrumentClientInstrumenter;Lorg/graalvm/options/OptionDescriptors;)Lorg/graalvm/options/OptionDescriptors;
            areturn
        end local 5 // org.graalvm.options.OptionDescriptors descriptors
        end local 4 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter instrumenter
        end local 3 // java.lang.String requiredGroup
        end local 2 // java.lang.Object key
        end local 1 // java.lang.Object instrumentationHandler
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    3     0                    this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    3     1  instrumentationHandler  Ljava/lang/Object;
            0    3     2                     key  Ljava/lang/Object;
            0    3     3           requiredGroup  Ljava/lang/String;
            1    3     4            instrumenter  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$InstrumentClientInstrumenter;
            2    3     5             descriptors  Lorg/graalvm/options/OptionDescriptors;
    MethodParameters:
                        Name  Flags
      instrumentationHandler  
      key                     
      requiredGroup           

  public org.graalvm.options.OptionDescriptors describeContextOptions(java.lang.Object, java.lang.Object, java.lang.String);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;)Lorg/graalvm/options/OptionDescriptors;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=6, args_size=4
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // java.lang.Object instrumentationHandler
        start local 2 // java.lang.Object key
        start local 3 // java.lang.String requiredGroup
         0: .line 148
            aload 1 /* instrumentationHandler */
            checkcast com.oracle.truffle.api.instrumentation.InstrumentationHandler
            getfield com.oracle.truffle.api.instrumentation.InstrumentationHandler.instrumenterMap:Ljava/util/concurrent/ConcurrentHashMap;
            aload 2 /* key */
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter
            astore 4 /* instrumenter */
        start local 4 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter instrumenter
         1: .line 149
            aload 4 /* instrumenter */
            getfield com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.instrument:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument.getContextOptionDescriptors:()Lorg/graalvm/options/OptionDescriptors;
            astore 5 /* descriptors */
        start local 5 // org.graalvm.options.OptionDescriptors descriptors
         2: .line 150
            aload 3 /* requiredGroup */
            aload 4 /* instrumenter */
            aload 5 /* descriptors */
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl.validateOptions:(Ljava/lang/String;Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$InstrumentClientInstrumenter;Lorg/graalvm/options/OptionDescriptors;)Lorg/graalvm/options/OptionDescriptors;
            areturn
        end local 5 // org.graalvm.options.OptionDescriptors descriptors
        end local 4 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter instrumenter
        end local 3 // java.lang.String requiredGroup
        end local 2 // java.lang.Object key
        end local 1 // java.lang.Object instrumentationHandler
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    3     0                    this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    3     1  instrumentationHandler  Ljava/lang/Object;
            0    3     2                     key  Ljava/lang/Object;
            0    3     3           requiredGroup  Ljava/lang/String;
            1    3     4            instrumenter  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$InstrumentClientInstrumenter;
            2    3     5             descriptors  Lorg/graalvm/options/OptionDescriptors;
    MethodParameters:
                        Name  Flags
      instrumentationHandler  
      key                     
      requiredGroup           

  private static org.graalvm.options.OptionDescriptors validateOptions(java.lang.String, com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter, org.graalvm.options.OptionDescriptors);
    descriptor: (Ljava/lang/String;Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$InstrumentClientInstrumenter;Lorg/graalvm/options/OptionDescriptors;)Lorg/graalvm/options/OptionDescriptors;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=7, locals=6, args_size=3
        start local 0 // java.lang.String requiredGroup
        start local 1 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter instrumenter
        start local 2 // org.graalvm.options.OptionDescriptors descriptors
         0: .line 154
            aload 2 /* descriptors */
            ifnonnull 2
         1: .line 155
            getstatic org.graalvm.options.OptionDescriptors.EMPTY:Lorg/graalvm/options/OptionDescriptors;
            areturn
         2: .line 157
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 0 /* requiredGroup */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 3 /* groupPlusDot */
        start local 3 // java.lang.String groupPlusDot
         3: .line 158
            aload 2 /* descriptors */
            invokeinterface org.graalvm.options.OptionDescriptors.iterator:()Ljava/util/Iterator;
            astore 5
            goto 9
      StackMap locals: java.lang.String com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter org.graalvm.options.OptionDescriptors java.lang.String top java.util.Iterator
      StackMap stack:
         4: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.options.OptionDescriptor
            astore 4 /* descriptor */
        start local 4 // org.graalvm.options.OptionDescriptor descriptor
         5: .line 159
            aload 4 /* descriptor */
            invokevirtual org.graalvm.options.OptionDescriptor.getName:()Ljava/lang/String;
            aload 0 /* requiredGroup */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 9
            aload 4 /* descriptor */
            invokevirtual org.graalvm.options.OptionDescriptor.getName:()Ljava/lang/String;
            aload 3 /* groupPlusDot */
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 9
         6: .line 160
            new java.lang.IllegalArgumentException
            dup
            ldc "Illegal option prefix in name '%s' specified for option described by instrument '%s'. The option prefix must match the id of the instrument '%s'."
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
         7: .line 162
            aload 4 /* descriptor */
            invokevirtual org.graalvm.options.OptionDescriptor.getName:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 1 /* instrumenter */
            getfield com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.instrument:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument;
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            aastore
            dup
            iconst_2
            aload 0 /* requiredGroup */
            aastore
         8: .line 160
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 4 // org.graalvm.options.OptionDescriptor descriptor
         9: .line 158
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        10: .line 165
            aload 2 /* descriptors */
            areturn
        end local 3 // java.lang.String groupPlusDot
        end local 2 // org.graalvm.options.OptionDescriptors descriptors
        end local 1 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter instrumenter
        end local 0 // java.lang.String requiredGroup
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   11     0  requiredGroup  Ljava/lang/String;
            0   11     1   instrumenter  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$InstrumentClientInstrumenter;
            0   11     2    descriptors  Lorg/graalvm/options/OptionDescriptors;
            3   11     3   groupPlusDot  Ljava/lang/String;
            5    9     4     descriptor  Lorg/graalvm/options/OptionDescriptor;
    MethodParameters:
               Name  Flags
      requiredGroup  
      instrumenter   
      descriptors    

  public void finalizeInstrument(java.lang.Object, java.lang.Object);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // java.lang.Object instrumentationHandler
        start local 2 // java.lang.Object polyglotInstrument
         0: .line 170
            aload 1 /* instrumentationHandler */
            checkcast com.oracle.truffle.api.instrumentation.InstrumentationHandler
            aload 2 /* polyglotInstrument */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler.finalizeInstrumenter:(Ljava/lang/Object;)V
         1: .line 171
            return
        end local 2 // java.lang.Object polyglotInstrument
        end local 1 // java.lang.Object instrumentationHandler
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    2     0                    this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    2     1  instrumentationHandler  Ljava/lang/Object;
            0    2     2      polyglotInstrument  Ljava/lang/Object;
    MethodParameters:
                        Name  Flags
      instrumentationHandler  
      polyglotInstrument      

  public void disposeInstrument(java.lang.Object, java.lang.Object, boolean);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // java.lang.Object instrumentationHandler
        start local 2 // java.lang.Object polyglotInstrument
        start local 3 // boolean cleanupRequired
         0: .line 175
            aload 1 /* instrumentationHandler */
            checkcast com.oracle.truffle.api.instrumentation.InstrumentationHandler
            aload 2 /* polyglotInstrument */
            iload 3 /* cleanupRequired */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler.disposeInstrumenter:(Ljava/lang/Object;Z)V
         1: .line 176
            return
        end local 3 // boolean cleanupRequired
        end local 2 // java.lang.Object polyglotInstrument
        end local 1 // java.lang.Object instrumentationHandler
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    2     0                    this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    2     1  instrumentationHandler  Ljava/lang/Object;
            0    2     2      polyglotInstrument  Ljava/lang/Object;
            0    2     3         cleanupRequired  Z
    MethodParameters:
                        Name  Flags
      instrumentationHandler  
      polyglotInstrument      
      cleanupRequired         

  public void collectEnvServices(java.util.Set<java.lang.Object>, , com.oracle.truffle.api.TruffleLanguage<?>);
    descriptor: (Ljava/util/Set;Ljava/lang/Object;Lcom/oracle/truffle/api/TruffleLanguage;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=4
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // java.util.Set collectTo
        start local 2 // java.lang.Object polyglotLanguage
        start local 3 // com.oracle.truffle.api.TruffleLanguage language
         0: .line 180
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentAccessor.engineAccess:()Lcom/oracle/truffle/api/impl/Accessor$EngineSupport;
            aload 2 /* polyglotLanguage */
            invokevirtual com.oracle.truffle.api.impl.Accessor$EngineSupport.getInstrumentationHandler:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.InstrumentationHandler
            astore 4 /* instrumentationHandler */
        start local 4 // com.oracle.truffle.api.instrumentation.InstrumentationHandler instrumentationHandler
         1: .line 181
            aload 4 /* instrumentationHandler */
            aload 3 /* language */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler.forLanguage:(Lcom/oracle/truffle/api/TruffleLanguage;)Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            astore 5 /* instrumenter */
        start local 5 // com.oracle.truffle.api.instrumentation.Instrumenter instrumenter
         2: .line 182
            aload 1 /* collectTo */
            aload 5 /* instrumenter */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         3: .line 183
            aload 4 /* instrumentationHandler */
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentAccessor.langAccess:()Lcom/oracle/truffle/api/impl/Accessor$LanguageSupport;
            aload 3 /* language */
            invokevirtual com.oracle.truffle.api.impl.Accessor$LanguageSupport.getLanguageInfo:(Lcom/oracle/truffle/api/TruffleLanguage;)Lcom/oracle/truffle/api/nodes/LanguageInfo;
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler.getAllocationReporter:(Lcom/oracle/truffle/api/nodes/LanguageInfo;)Lcom/oracle/truffle/api/instrumentation/AllocationReporter;
            astore 6 /* allocationReporter */
        start local 6 // com.oracle.truffle.api.instrumentation.AllocationReporter allocationReporter
         4: .line 184
            aload 1 /* collectTo */
            aload 6 /* allocationReporter */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         5: .line 185
            return
        end local 6 // com.oracle.truffle.api.instrumentation.AllocationReporter allocationReporter
        end local 5 // com.oracle.truffle.api.instrumentation.Instrumenter instrumenter
        end local 4 // com.oracle.truffle.api.instrumentation.InstrumentationHandler instrumentationHandler
        end local 3 // com.oracle.truffle.api.TruffleLanguage language
        end local 2 // java.lang.Object polyglotLanguage
        end local 1 // java.util.Set collectTo
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    6     0                    this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    6     1               collectTo  Ljava/util/Set<Ljava/lang/Object;>;
            0    6     2        polyglotLanguage  Ljava/lang/Object;
            0    6     3                language  Lcom/oracle/truffle/api/TruffleLanguage<*>;
            1    6     4  instrumentationHandler  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
            2    6     5            instrumenter  Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            4    6     6      allocationReporter  Lcom/oracle/truffle/api/instrumentation/AllocationReporter;
    Signature: (Ljava/util/Set<Ljava/lang/Object;>;Ljava/lang/Object;Lcom/oracle/truffle/api/TruffleLanguage<*>;)V
    MethodParameters:
                  Name  Flags
      collectTo         
      polyglotLanguage  
      language          

  public <T> T getInstrumentationHandlerService(, , java.lang.Class<T>);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // java.lang.Object instrumentationHandler
        start local 2 // java.lang.Object key
        start local 3 // java.lang.Class type
         0: .line 189
            aload 1 /* instrumentationHandler */
            checkcast com.oracle.truffle.api.instrumentation.InstrumentationHandler
            aload 2 /* key */
            aload 3 /* type */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler.lookup:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
            areturn
        end local 3 // java.lang.Class type
        end local 2 // java.lang.Object key
        end local 1 // java.lang.Object instrumentationHandler
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    1     0                    this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    1     1  instrumentationHandler  Ljava/lang/Object;
            0    1     2                     key  Ljava/lang/Object;
            0    1     3                    type  Ljava/lang/Class<TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Class<TT;>;)TT;
    MethodParameters:
                        Name  Flags
      instrumentationHandler  
      key                     
      type                    

  public void onFirstExecution(com.oracle.truffle.api.nodes.RootNode, boolean);
    descriptor: (Lcom/oracle/truffle/api/nodes/RootNode;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // com.oracle.truffle.api.nodes.RootNode rootNode
        start local 2 // boolean validate
         0: .line 194
            getstatic com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl.$assertionsDisabled:Z
            ifne 1
            iload 2 /* validate */
            ifeq 1
            aload 1 /* rootNode */
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl.validEngine:(Lcom/oracle/truffle/api/nodes/RootNode;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 195
      StackMap locals:
      StackMap stack:
            aload 1 /* rootNode */
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl.getHandler:(Lcom/oracle/truffle/api/nodes/RootNode;)Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
            astore 3 /* handler */
        start local 3 // com.oracle.truffle.api.instrumentation.InstrumentationHandler handler
         2: .line 196
            aload 3 /* handler */
            ifnull 4
         3: .line 197
            aload 3 /* handler */
            aload 1 /* rootNode */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler.onFirstExecution:(Lcom/oracle/truffle/api/nodes/RootNode;)V
         4: .line 199
      StackMap locals: com.oracle.truffle.api.instrumentation.InstrumentationHandler
      StackMap stack:
            return
        end local 3 // com.oracle.truffle.api.instrumentation.InstrumentationHandler handler
        end local 2 // boolean validate
        end local 1 // com.oracle.truffle.api.nodes.RootNode rootNode
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0      this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    5     1  rootNode  Lcom/oracle/truffle/api/nodes/RootNode;
            0    5     2  validate  Z
            2    5     3   handler  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
    MethodParameters:
          Name  Flags
      rootNode  
      validate  

  public void onLoad(com.oracle.truffle.api.nodes.RootNode);
    descriptor: (Lcom/oracle/truffle/api/nodes/RootNode;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // com.oracle.truffle.api.nodes.RootNode rootNode
         0: .line 203
            aload 1 /* rootNode */
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl.getHandler:(Lcom/oracle/truffle/api/nodes/RootNode;)Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
            astore 2 /* handler */
        start local 2 // com.oracle.truffle.api.instrumentation.InstrumentationHandler handler
         1: .line 204
            aload 2 /* handler */
            ifnull 3
         2: .line 205
            aload 2 /* handler */
            aload 1 /* rootNode */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler.onLoad:(Lcom/oracle/truffle/api/nodes/RootNode;)V
         3: .line 207
      StackMap locals: com.oracle.truffle.api.instrumentation.InstrumentationHandler
      StackMap stack:
            return
        end local 2 // com.oracle.truffle.api.instrumentation.InstrumentationHandler handler
        end local 1 // com.oracle.truffle.api.nodes.RootNode rootNode
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    4     1  rootNode  Lcom/oracle/truffle/api/nodes/RootNode;
            1    4     2   handler  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
    MethodParameters:
          Name  Flags
      rootNode  

  public boolean hasContextBindings(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // java.lang.Object engine
         0: .line 211
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentAccessor.engineAccess:()Lcom/oracle/truffle/api/impl/Accessor$EngineSupport;
            aload 1 /* engine */
            invokevirtual com.oracle.truffle.api.impl.Accessor$EngineSupport.getInstrumentationHandler:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.InstrumentationHandler
            astore 2 /* instrumentationHandler */
        start local 2 // com.oracle.truffle.api.instrumentation.InstrumentationHandler instrumentationHandler
         1: .line 212
            aload 2 /* instrumentationHandler */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler.hasContextBindings:()Z
            ireturn
        end local 2 // com.oracle.truffle.api.instrumentation.InstrumentationHandler instrumentationHandler
        end local 1 // java.lang.Object engine
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    2     0                    this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    2     1                  engine  Ljava/lang/Object;
            1    2     2  instrumentationHandler  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
    MethodParameters:
        Name  Flags
      engine  

  public void notifyContextCreated(java.lang.Object, com.oracle.truffle.api.TruffleContext);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/api/TruffleContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // java.lang.Object engine
        start local 2 // com.oracle.truffle.api.TruffleContext context
         0: .line 218
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentAccessor.engineAccess:()Lcom/oracle/truffle/api/impl/Accessor$EngineSupport;
            aload 1 /* engine */
            invokevirtual com.oracle.truffle.api.impl.Accessor$EngineSupport.getInstrumentationHandler:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.InstrumentationHandler
            astore 3 /* instrumentationHandler */
        start local 3 // com.oracle.truffle.api.instrumentation.InstrumentationHandler instrumentationHandler
         1: .line 219
            aload 3 /* instrumentationHandler */
            aload 2 /* context */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler.notifyContextCreated:(Lcom/oracle/truffle/api/TruffleContext;)V
         2: .line 220
            return
        end local 3 // com.oracle.truffle.api.instrumentation.InstrumentationHandler instrumentationHandler
        end local 2 // com.oracle.truffle.api.TruffleContext context
        end local 1 // java.lang.Object engine
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    3     0                    this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    3     1                  engine  Ljava/lang/Object;
            0    3     2                 context  Lcom/oracle/truffle/api/TruffleContext;
            1    3     3  instrumentationHandler  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
         Name  Flags
      engine   
      context  

  public void notifyContextClosed(java.lang.Object, com.oracle.truffle.api.TruffleContext);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/api/TruffleContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // java.lang.Object engine
        start local 2 // com.oracle.truffle.api.TruffleContext context
         0: .line 225
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentAccessor.engineAccess:()Lcom/oracle/truffle/api/impl/Accessor$EngineSupport;
            aload 1 /* engine */
            invokevirtual com.oracle.truffle.api.impl.Accessor$EngineSupport.getInstrumentationHandler:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.InstrumentationHandler
            astore 3 /* instrumentationHandler */
        start local 3 // com.oracle.truffle.api.instrumentation.InstrumentationHandler instrumentationHandler
         1: .line 226
            aload 3 /* instrumentationHandler */
            aload 2 /* context */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler.notifyContextClosed:(Lcom/oracle/truffle/api/TruffleContext;)V
         2: .line 227
            return
        end local 3 // com.oracle.truffle.api.instrumentation.InstrumentationHandler instrumentationHandler
        end local 2 // com.oracle.truffle.api.TruffleContext context
        end local 1 // java.lang.Object engine
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    3     0                    this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    3     1                  engine  Ljava/lang/Object;
            0    3     2                 context  Lcom/oracle/truffle/api/TruffleContext;
            1    3     3  instrumentationHandler  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
         Name  Flags
      engine   
      context  

  public void notifyContextResetLimit(java.lang.Object, com.oracle.truffle.api.TruffleContext);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/api/TruffleContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // java.lang.Object engine
        start local 2 // com.oracle.truffle.api.TruffleContext context
         0: .line 231
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentAccessor.engineAccess:()Lcom/oracle/truffle/api/impl/Accessor$EngineSupport;
            aload 1 /* engine */
            invokevirtual com.oracle.truffle.api.impl.Accessor$EngineSupport.getInstrumentationHandler:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.InstrumentationHandler
            astore 3 /* instrumentationHandler */
        start local 3 // com.oracle.truffle.api.instrumentation.InstrumentationHandler instrumentationHandler
         1: .line 232
            aload 3 /* instrumentationHandler */
            aload 2 /* context */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler.notifyContextResetLimit:(Lcom/oracle/truffle/api/TruffleContext;)V
         2: .line 233
            return
        end local 3 // com.oracle.truffle.api.instrumentation.InstrumentationHandler instrumentationHandler
        end local 2 // com.oracle.truffle.api.TruffleContext context
        end local 1 // java.lang.Object engine
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    3     0                    this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    3     1                  engine  Ljava/lang/Object;
            0    3     2                 context  Lcom/oracle/truffle/api/TruffleContext;
            1    3     3  instrumentationHandler  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
    MethodParameters:
         Name  Flags
      engine   
      context  

  public void notifyLanguageContextCreated(java.lang.Object, com.oracle.truffle.api.TruffleContext, com.oracle.truffle.api.nodes.LanguageInfo);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/api/TruffleContext;Lcom/oracle/truffle/api/nodes/LanguageInfo;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // java.lang.Object engine
        start local 2 // com.oracle.truffle.api.TruffleContext context
        start local 3 // com.oracle.truffle.api.nodes.LanguageInfo info
         0: .line 237
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentAccessor.engineAccess:()Lcom/oracle/truffle/api/impl/Accessor$EngineSupport;
            aload 1 /* engine */
            invokevirtual com.oracle.truffle.api.impl.Accessor$EngineSupport.getInstrumentationHandler:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.InstrumentationHandler
            astore 4 /* instrumentationHandler */
        start local 4 // com.oracle.truffle.api.instrumentation.InstrumentationHandler instrumentationHandler
         1: .line 238
            aload 4 /* instrumentationHandler */
            aload 2 /* context */
            aload 3 /* info */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler.notifyLanguageContextCreated:(Lcom/oracle/truffle/api/TruffleContext;Lcom/oracle/truffle/api/nodes/LanguageInfo;)V
         2: .line 239
            return
        end local 4 // com.oracle.truffle.api.instrumentation.InstrumentationHandler instrumentationHandler
        end local 3 // com.oracle.truffle.api.nodes.LanguageInfo info
        end local 2 // com.oracle.truffle.api.TruffleContext context
        end local 1 // java.lang.Object engine
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    3     0                    this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    3     1                  engine  Ljava/lang/Object;
            0    3     2                 context  Lcom/oracle/truffle/api/TruffleContext;
            0    3     3                    info  Lcom/oracle/truffle/api/nodes/LanguageInfo;
            1    3     4  instrumentationHandler  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
    MethodParameters:
         Name  Flags
      engine   
      context  
      info     

  public void notifyLanguageContextInitialized(java.lang.Object, com.oracle.truffle.api.TruffleContext, com.oracle.truffle.api.nodes.LanguageInfo);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/api/TruffleContext;Lcom/oracle/truffle/api/nodes/LanguageInfo;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // java.lang.Object engine
        start local 2 // com.oracle.truffle.api.TruffleContext context
        start local 3 // com.oracle.truffle.api.nodes.LanguageInfo info
         0: .line 243
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentAccessor.engineAccess:()Lcom/oracle/truffle/api/impl/Accessor$EngineSupport;
            aload 1 /* engine */
            invokevirtual com.oracle.truffle.api.impl.Accessor$EngineSupport.getInstrumentationHandler:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.InstrumentationHandler
            astore 4 /* instrumentationHandler */
        start local 4 // com.oracle.truffle.api.instrumentation.InstrumentationHandler instrumentationHandler
         1: .line 244
            aload 4 /* instrumentationHandler */
            aload 2 /* context */
            aload 3 /* info */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler.notifyLanguageContextInitialized:(Lcom/oracle/truffle/api/TruffleContext;Lcom/oracle/truffle/api/nodes/LanguageInfo;)V
         2: .line 245
            return
        end local 4 // com.oracle.truffle.api.instrumentation.InstrumentationHandler instrumentationHandler
        end local 3 // com.oracle.truffle.api.nodes.LanguageInfo info
        end local 2 // com.oracle.truffle.api.TruffleContext context
        end local 1 // java.lang.Object engine
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    3     0                    this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    3     1                  engine  Ljava/lang/Object;
            0    3     2                 context  Lcom/oracle/truffle/api/TruffleContext;
            0    3     3                    info  Lcom/oracle/truffle/api/nodes/LanguageInfo;
            1    3     4  instrumentationHandler  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
    MethodParameters:
         Name  Flags
      engine   
      context  
      info     

  public void notifyLanguageContextFinalized(java.lang.Object, com.oracle.truffle.api.TruffleContext, com.oracle.truffle.api.nodes.LanguageInfo);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/api/TruffleContext;Lcom/oracle/truffle/api/nodes/LanguageInfo;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // java.lang.Object engine
        start local 2 // com.oracle.truffle.api.TruffleContext context
        start local 3 // com.oracle.truffle.api.nodes.LanguageInfo info
         0: .line 249
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentAccessor.engineAccess:()Lcom/oracle/truffle/api/impl/Accessor$EngineSupport;
            aload 1 /* engine */
            invokevirtual com.oracle.truffle.api.impl.Accessor$EngineSupport.getInstrumentationHandler:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.InstrumentationHandler
            astore 4 /* instrumentationHandler */
        start local 4 // com.oracle.truffle.api.instrumentation.InstrumentationHandler instrumentationHandler
         1: .line 250
            aload 4 /* instrumentationHandler */
            aload 2 /* context */
            aload 3 /* info */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler.notifyLanguageContextFinalized:(Lcom/oracle/truffle/api/TruffleContext;Lcom/oracle/truffle/api/nodes/LanguageInfo;)V
         2: .line 251
            return
        end local 4 // com.oracle.truffle.api.instrumentation.InstrumentationHandler instrumentationHandler
        end local 3 // com.oracle.truffle.api.nodes.LanguageInfo info
        end local 2 // com.oracle.truffle.api.TruffleContext context
        end local 1 // java.lang.Object engine
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    3     0                    this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    3     1                  engine  Ljava/lang/Object;
            0    3     2                 context  Lcom/oracle/truffle/api/TruffleContext;
            0    3     3                    info  Lcom/oracle/truffle/api/nodes/LanguageInfo;
            1    3     4  instrumentationHandler  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
    MethodParameters:
         Name  Flags
      engine   
      context  
      info     

  public void notifyLanguageContextDisposed(java.lang.Object, com.oracle.truffle.api.TruffleContext, com.oracle.truffle.api.nodes.LanguageInfo);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/api/TruffleContext;Lcom/oracle/truffle/api/nodes/LanguageInfo;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // java.lang.Object engine
        start local 2 // com.oracle.truffle.api.TruffleContext context
        start local 3 // com.oracle.truffle.api.nodes.LanguageInfo info
         0: .line 255
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentAccessor.engineAccess:()Lcom/oracle/truffle/api/impl/Accessor$EngineSupport;
            aload 1 /* engine */
            invokevirtual com.oracle.truffle.api.impl.Accessor$EngineSupport.getInstrumentationHandler:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.InstrumentationHandler
            astore 4 /* instrumentationHandler */
        start local 4 // com.oracle.truffle.api.instrumentation.InstrumentationHandler instrumentationHandler
         1: .line 256
            aload 4 /* instrumentationHandler */
            aload 2 /* context */
            aload 3 /* info */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler.notifyLanguageContextDisposed:(Lcom/oracle/truffle/api/TruffleContext;Lcom/oracle/truffle/api/nodes/LanguageInfo;)V
         2: .line 257
            return
        end local 4 // com.oracle.truffle.api.instrumentation.InstrumentationHandler instrumentationHandler
        end local 3 // com.oracle.truffle.api.nodes.LanguageInfo info
        end local 2 // com.oracle.truffle.api.TruffleContext context
        end local 1 // java.lang.Object engine
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    3     0                    this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    3     1                  engine  Ljava/lang/Object;
            0    3     2                 context  Lcom/oracle/truffle/api/TruffleContext;
            0    3     3                    info  Lcom/oracle/truffle/api/nodes/LanguageInfo;
            1    3     4  instrumentationHandler  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
    MethodParameters:
         Name  Flags
      engine   
      context  
      info     

  public void notifyThreadStarted(java.lang.Object, com.oracle.truffle.api.TruffleContext, java.lang.Thread);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/api/TruffleContext;Ljava/lang/Thread;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // java.lang.Object engine
        start local 2 // com.oracle.truffle.api.TruffleContext context
        start local 3 // java.lang.Thread thread
         0: .line 262
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentAccessor.engineAccess:()Lcom/oracle/truffle/api/impl/Accessor$EngineSupport;
            aload 1 /* engine */
            invokevirtual com.oracle.truffle.api.impl.Accessor$EngineSupport.getInstrumentationHandler:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.InstrumentationHandler
            astore 4 /* instrumentationHandler */
        start local 4 // com.oracle.truffle.api.instrumentation.InstrumentationHandler instrumentationHandler
         1: .line 263
            aload 4 /* instrumentationHandler */
            aload 2 /* context */
            aload 3 /* thread */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler.notifyThreadStarted:(Lcom/oracle/truffle/api/TruffleContext;Ljava/lang/Thread;)V
         2: .line 264
            return
        end local 4 // com.oracle.truffle.api.instrumentation.InstrumentationHandler instrumentationHandler
        end local 3 // java.lang.Thread thread
        end local 2 // com.oracle.truffle.api.TruffleContext context
        end local 1 // java.lang.Object engine
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    3     0                    this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    3     1                  engine  Ljava/lang/Object;
            0    3     2                 context  Lcom/oracle/truffle/api/TruffleContext;
            0    3     3                  thread  Ljava/lang/Thread;
            1    3     4  instrumentationHandler  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
         Name  Flags
      engine   
      context  
      thread   

  public void notifyThreadFinished(java.lang.Object, com.oracle.truffle.api.TruffleContext, java.lang.Thread);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/api/TruffleContext;Ljava/lang/Thread;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // java.lang.Object engine
        start local 2 // com.oracle.truffle.api.TruffleContext context
        start local 3 // java.lang.Thread thread
         0: .line 269
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentAccessor.engineAccess:()Lcom/oracle/truffle/api/impl/Accessor$EngineSupport;
            aload 1 /* engine */
            invokevirtual com.oracle.truffle.api.impl.Accessor$EngineSupport.getInstrumentationHandler:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.InstrumentationHandler
            astore 4 /* instrumentationHandler */
        start local 4 // com.oracle.truffle.api.instrumentation.InstrumentationHandler instrumentationHandler
         1: .line 270
            aload 4 /* instrumentationHandler */
            aload 2 /* context */
            aload 3 /* thread */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler.notifyThreadFinished:(Lcom/oracle/truffle/api/TruffleContext;Ljava/lang/Thread;)V
         2: .line 271
            return
        end local 4 // com.oracle.truffle.api.instrumentation.InstrumentationHandler instrumentationHandler
        end local 3 // java.lang.Thread thread
        end local 2 // com.oracle.truffle.api.TruffleContext context
        end local 1 // java.lang.Object engine
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    3     0                    this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    3     1                  engine  Ljava/lang/Object;
            0    3     2                 context  Lcom/oracle/truffle/api/TruffleContext;
            0    3     3                  thread  Ljava/lang/Thread;
            1    3     4  instrumentationHandler  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
         Name  Flags
      engine   
      context  
      thread   

  public org.graalvm.polyglot.SourceSection createSourceSection(java.lang.Object, org.graalvm.polyglot.Source, com.oracle.truffle.api.source.SourceSection);
    descriptor: (Ljava/lang/Object;Lorg/graalvm/polyglot/Source;Lcom/oracle/truffle/api/source/SourceSection;)Lorg/graalvm/polyglot/SourceSection;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // java.lang.Object instrumentEnv
        start local 2 // org.graalvm.polyglot.Source source
        start local 3 // com.oracle.truffle.api.source.SourceSection ss
         0: .line 275
            aload 1 /* instrumentEnv */
            checkcast com.oracle.truffle.api.instrumentation.TruffleInstrument$Env
            astore 4 /* env */
        start local 4 // com.oracle.truffle.api.instrumentation.TruffleInstrument$Env env
         1: .line 276
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentAccessor.engineAccess:()Lcom/oracle/truffle/api/impl/Accessor$EngineSupport;
            aload 4 /* env */
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getPolyglotInstrument:()Ljava/lang/Object;
            aload 2 /* source */
            aload 3 /* ss */
            invokevirtual com.oracle.truffle.api.impl.Accessor$EngineSupport.createSourceSection:(Ljava/lang/Object;Lorg/graalvm/polyglot/Source;Lcom/oracle/truffle/api/source/SourceSection;)Lorg/graalvm/polyglot/SourceSection;
            areturn
        end local 4 // com.oracle.truffle.api.instrumentation.TruffleInstrument$Env env
        end local 3 // com.oracle.truffle.api.source.SourceSection ss
        end local 2 // org.graalvm.polyglot.Source source
        end local 1 // java.lang.Object instrumentEnv
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    2     1  instrumentEnv  Ljava/lang/Object;
            0    2     2         source  Lorg/graalvm/polyglot/Source;
            0    2     3             ss  Lcom/oracle/truffle/api/source/SourceSection;
            1    2     4            env  Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
    MethodParameters:
               Name  Flags
      instrumentEnv  
      source         
      ss             

  public void patchInstrumentationHandler(java.lang.Object, com.oracle.truffle.api.impl.DispatchOutputStream, com.oracle.truffle.api.impl.DispatchOutputStream, java.io.InputStream);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/api/impl/DispatchOutputStream;Lcom/oracle/truffle/api/impl/DispatchOutputStream;Ljava/io/InputStream;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=5
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // java.lang.Object instrumentationHandler
        start local 2 // com.oracle.truffle.api.impl.DispatchOutputStream out
        start local 3 // com.oracle.truffle.api.impl.DispatchOutputStream err
        start local 4 // java.io.InputStream in
         0: .line 281
            aload 1 /* instrumentationHandler */
            checkcast com.oracle.truffle.api.instrumentation.InstrumentationHandler
            aload 2 /* out */
            aload 3 /* err */
            aload 4 /* in */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler.patch:(Lcom/oracle/truffle/api/impl/DispatchOutputStream;Lcom/oracle/truffle/api/impl/DispatchOutputStream;Ljava/io/InputStream;)V
         1: .line 282
            return
        end local 4 // java.io.InputStream in
        end local 3 // com.oracle.truffle.api.impl.DispatchOutputStream err
        end local 2 // com.oracle.truffle.api.impl.DispatchOutputStream out
        end local 1 // java.lang.Object instrumentationHandler
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    2     0                    this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    2     1  instrumentationHandler  Ljava/lang/Object;
            0    2     2                     out  Lcom/oracle/truffle/api/impl/DispatchOutputStream;
            0    2     3                     err  Lcom/oracle/truffle/api/impl/DispatchOutputStream;
            0    2     4                      in  Ljava/io/InputStream;
    MethodParameters:
                        Name  Flags
      instrumentationHandler  
      out                     
      err                     
      in                      

  public void finalizeStoreInstrumentationHandler(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // java.lang.Object instrumentationHandler
         0: .line 286
            aload 1 /* instrumentationHandler */
            checkcast com.oracle.truffle.api.instrumentation.InstrumentationHandler
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler.finalizeStore:()V
         1: .line 287
            return
        end local 1 // java.lang.Object instrumentationHandler
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    2     0                    this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    2     1  instrumentationHandler  Ljava/lang/Object;
    MethodParameters:
                        Name  Flags
      instrumentationHandler  

  public boolean isInputValueSlotIdentifier(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // java.lang.Object identifier
         0: .line 291
            aload 1 /* identifier */
            instanceof com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode$SavedInputValueID
            ireturn
        end local 1 // java.lang.Object identifier
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    1     1  identifier  Ljava/lang/Object;
    MethodParameters:
            Name  Flags
      identifier  

  public java.util.Collection<com.oracle.truffle.api.CallTarget> getLoadedCallTargets();
    descriptor: (Ljava/lang/Object;)Ljava/util/Collection;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=7, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // java.lang.Object instrumentationHandler
         0: .line 296
            aload 1 /* instrumentationHandler */
            checkcast com.oracle.truffle.api.instrumentation.InstrumentationHandler
            getfield com.oracle.truffle.api.instrumentation.InstrumentationHandler.loadedRoots:Ljava/util/Collection;
            astore 2 /* roots */
        start local 2 // java.util.Collection roots
         1: .line 297
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 3 /* targets */
        start local 3 // java.util.List targets
         2: .line 298
            aload 2 /* roots */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 5
            goto 7
      StackMap locals: com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl java.lang.Object java.util.Collection java.util.List top java.util.Iterator
      StackMap stack:
         3: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.nodes.RootNode
            astore 4 /* root */
        start local 4 // com.oracle.truffle.api.nodes.RootNode root
         4: .line 299
            aload 4 /* root */
            invokevirtual com.oracle.truffle.api.nodes.RootNode.getCallTarget:()Lcom/oracle/truffle/api/RootCallTarget;
            astore 6 /* target */
        start local 6 // com.oracle.truffle.api.CallTarget target
         5: .line 300
            aload 6 /* target */
            ifnull 7
         6: .line 301
            aload 3 /* targets */
            aload 6 /* target */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 6 // com.oracle.truffle.api.CallTarget target
        end local 4 // com.oracle.truffle.api.nodes.RootNode root
         7: .line 298
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         8: .line 304
            aload 3 /* targets */
            areturn
        end local 3 // java.util.List targets
        end local 2 // java.util.Collection roots
        end local 1 // java.lang.Object instrumentationHandler
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    9     0                    this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    9     1  instrumentationHandler  Ljava/lang/Object;
            1    9     2                   roots  Ljava/util/Collection<Lcom/oracle/truffle/api/nodes/RootNode;>;
            2    9     3                 targets  Ljava/util/List<Lcom/oracle/truffle/api/CallTarget;>;
            4    7     4                    root  Lcom/oracle/truffle/api/nodes/RootNode;
            5    7     6                  target  Lcom/oracle/truffle/api/CallTarget;
    Signature: (Ljava/lang/Object;)Ljava/util/Collection<Lcom/oracle/truffle/api/CallTarget;>;
    MethodParameters:
                        Name  Flags
      instrumentationHandler  

  private static com.oracle.truffle.api.instrumentation.InstrumentationHandler getHandler(com.oracle.truffle.api.nodes.RootNode);
    descriptor: (Lcom/oracle/truffle/api/nodes/RootNode;)Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.nodes.RootNode rootNode
         0: .line 308
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentAccessor.nodesAccess:()Lcom/oracle/truffle/api/impl/Accessor$NodeSupport;
            aload 0 /* rootNode */
            invokevirtual com.oracle.truffle.api.impl.Accessor$NodeSupport.getPolyglotEngine:(Lcom/oracle/truffle/api/nodes/RootNode;)Ljava/lang/Object;
            astore 1 /* polyglotEngineImpl */
        start local 1 // java.lang.Object polyglotEngineImpl
         1: .line 309
            aload 1 /* polyglotEngineImpl */
            ifnonnull 3
         2: .line 310
            aconst_null
            areturn
         3: .line 312
      StackMap locals: java.lang.Object
      StackMap stack:
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentAccessor.engineAccess:()Lcom/oracle/truffle/api/impl/Accessor$EngineSupport;
            aload 1 /* polyglotEngineImpl */
            invokevirtual com.oracle.truffle.api.impl.Accessor$EngineSupport.getInstrumentationHandler:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.InstrumentationHandler
            areturn
        end local 1 // java.lang.Object polyglotEngineImpl
        end local 0 // com.oracle.truffle.api.nodes.RootNode rootNode
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    4     0            rootNode  Lcom/oracle/truffle/api/nodes/RootNode;
            1    4     1  polyglotEngineImpl  Ljava/lang/Object;
    MethodParameters:
          Name  Flags
      rootNode  

  public boolean isInstrumentable(com.oracle.truffle.api.nodes.Node);
    descriptor: (Lcom/oracle/truffle/api/nodes/Node;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // com.oracle.truffle.api.nodes.Node node
         0: .line 317
            aload 1 /* node */
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentationHandler.isInstrumentableNode:(Lcom/oracle/truffle/api/nodes/Node;)Z
            ireturn
        end local 1 // com.oracle.truffle.api.nodes.Node node
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    1     1  node  Lcom/oracle/truffle/api/nodes/Node;
    MethodParameters:
      Name  Flags
      node  

  private static boolean validEngine(com.oracle.truffle.api.nodes.RootNode);
    descriptor: (Lcom/oracle/truffle/api/nodes/RootNode;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.nodes.RootNode rootNode
         0: .line 321
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentAccessor.engineAccess:()Lcom/oracle/truffle/api/impl/Accessor$EngineSupport;
            invokevirtual com.oracle.truffle.api.impl.Accessor$EngineSupport.getCurrentPolyglotEngine:()Ljava/lang/Object;
            astore 1 /* currentPolyglotEngine */
        start local 1 // java.lang.Object currentPolyglotEngine
         1: .line 322
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentAccessor.engineAccess:()Lcom/oracle/truffle/api/impl/Accessor$EngineSupport;
            aload 0 /* rootNode */
            invokevirtual com.oracle.truffle.api.impl.Accessor$EngineSupport.isHostToGuestRootNode:(Lcom/oracle/truffle/api/nodes/RootNode;)Z
            ifne 4
         2: .line 323
            aload 1 /* currentPolyglotEngine */
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentAccessor.nodesAccess:()Lcom/oracle/truffle/api/impl/Accessor$NodeSupport;
            aload 0 /* rootNode */
            invokevirtual com.oracle.truffle.api.impl.Accessor$NodeSupport.getPolyglotEngine:(Lcom/oracle/truffle/api/nodes/RootNode;)Ljava/lang/Object;
            if_acmpeq 4
         3: .line 324
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentAccessor.engineAccess:()Lcom/oracle/truffle/api/impl/Accessor$EngineSupport;
            aload 1 /* currentPolyglotEngine */
            invokevirtual com.oracle.truffle.api.impl.Accessor$EngineSupport.invalidSharingError:(Ljava/lang/Object;)Ljava/lang/AssertionError;
            athrow
         4: .line 326
      StackMap locals: java.lang.Object
      StackMap stack:
            iconst_1
            ireturn
        end local 1 // java.lang.Object currentPolyglotEngine
        end local 0 // com.oracle.truffle.api.nodes.RootNode rootNode
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0    5     0               rootNode  Lcom/oracle/truffle/api/nodes/RootNode;
            1    5     1  currentPolyglotEngine  Ljava/lang/Object;
    MethodParameters:
          Name  Flags
      rootNode  

  public java.lang.Object invokeContextLocalFactory(java.lang.Object, com.oracle.truffle.api.TruffleContext);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/api/TruffleContext;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=4, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // java.lang.Object factory
        start local 2 // com.oracle.truffle.api.TruffleContext truffleContext
         0: .line 331
            aload 1 /* factory */
            checkcast com.oracle.truffle.api.instrumentation.TruffleInstrument$ContextLocalFactory
            aload 2 /* truffleContext */
            invokeinterface com.oracle.truffle.api.instrumentation.TruffleInstrument$ContextLocalFactory.create:(Lcom/oracle/truffle/api/TruffleContext;)Ljava/lang/Object;
            astore 3 /* result */
        start local 3 // java.lang.Object result
         1: .line 332
            aload 3 /* result */
            ifnonnull 3
         2: .line 333
            new java.lang.IllegalStateException
            dup
            ldc "%s.create is not allowed to return null."
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            ldc Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$ContextLocalFactory;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 335
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 3 /* result */
            areturn
        end local 3 // java.lang.Object result
        end local 2 // com.oracle.truffle.api.TruffleContext truffleContext
        end local 1 // java.lang.Object factory
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0            this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    4     1         factory  Ljava/lang/Object;
            0    4     2  truffleContext  Lcom/oracle/truffle/api/TruffleContext;
            1    4     3          result  Ljava/lang/Object;
    MethodParameters:
                Name  Flags
      factory         
      truffleContext  

  public java.lang.Object invokeContextThreadLocalFactory(java.lang.Object, com.oracle.truffle.api.TruffleContext, java.lang.Thread);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/api/TruffleContext;Ljava/lang/Thread;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=5, args_size=4
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // java.lang.Object factory
        start local 2 // com.oracle.truffle.api.TruffleContext truffleContext
        start local 3 // java.lang.Thread t
         0: .line 340
            aload 1 /* factory */
            checkcast com.oracle.truffle.api.instrumentation.TruffleInstrument$ContextThreadLocalFactory
            aload 2 /* truffleContext */
            aload 3 /* t */
            invokeinterface com.oracle.truffle.api.instrumentation.TruffleInstrument$ContextThreadLocalFactory.create:(Lcom/oracle/truffle/api/TruffleContext;Ljava/lang/Thread;)Ljava/lang/Object;
            astore 4 /* result */
        start local 4 // java.lang.Object result
         1: .line 341
            aload 4 /* result */
            ifnonnull 3
         2: .line 342
            new java.lang.IllegalStateException
            dup
            ldc "%s.create is not allowed to return null."
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            ldc Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$ContextThreadLocalFactory;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 344
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 4 /* result */
            areturn
        end local 4 // java.lang.Object result
        end local 3 // java.lang.Thread t
        end local 2 // com.oracle.truffle.api.TruffleContext truffleContext
        end local 1 // java.lang.Object factory
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0            this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    4     1         factory  Ljava/lang/Object;
            0    4     2  truffleContext  Lcom/oracle/truffle/api/TruffleContext;
            0    4     3               t  Ljava/lang/Thread;
            1    4     4          result  Ljava/lang/Object;
    MethodParameters:
                Name  Flags
      factory         
      truffleContext  
      t               

  public void notifyEnter(java.lang.Object, com.oracle.truffle.api.TruffleContext);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/api/TruffleContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=8, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // java.lang.Object instrumentationHandler
        start local 2 // com.oracle.truffle.api.TruffleContext truffleContext
         0: .line 350
            aload 1 /* instrumentationHandler */
            checkcast com.oracle.truffle.api.instrumentation.InstrumentationHandler
            astore 3 /* handler */
        start local 3 // com.oracle.truffle.api.instrumentation.InstrumentationHandler handler
         1: .line 351
            aload 3 /* handler */
            invokestatic com.oracle.truffle.api.CompilerAsserts.partialEvaluationConstant:(Ljava/lang/Object;)V
         2: .line 352
            aload 3 /* handler */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler.getThreadsActivationListeners:()[Lcom/oracle/truffle/api/instrumentation/ThreadsActivationListener;
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 6
      StackMap locals: com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl java.lang.Object com.oracle.truffle.api.TruffleContext com.oracle.truffle.api.instrumentation.InstrumentationHandler top int int com.oracle.truffle.api.instrumentation.ThreadsActivationListener[]
      StackMap stack:
         3: aload 7
            iload 5
            aaload
            astore 4 /* listener */
        start local 4 // com.oracle.truffle.api.instrumentation.ThreadsActivationListener listener
         4: .line 353
            aload 4 /* listener */
            aload 2 /* truffleContext */
            invokeinterface com.oracle.truffle.api.instrumentation.ThreadsActivationListener.onEnterThread:(Lcom/oracle/truffle/api/TruffleContext;)V
        end local 4 // com.oracle.truffle.api.instrumentation.ThreadsActivationListener listener
         5: .line 352
            iinc 5 1
      StackMap locals:
      StackMap stack:
         6: iload 5
            iload 6
            if_icmplt 3
         7: .line 355
            return
        end local 3 // com.oracle.truffle.api.instrumentation.InstrumentationHandler handler
        end local 2 // com.oracle.truffle.api.TruffleContext truffleContext
        end local 1 // java.lang.Object instrumentationHandler
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    8     0                    this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    8     1  instrumentationHandler  Ljava/lang/Object;
            0    8     2          truffleContext  Lcom/oracle/truffle/api/TruffleContext;
            1    8     3                 handler  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
            4    5     4                listener  Lcom/oracle/truffle/api/instrumentation/ThreadsActivationListener;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.ExplodeLoop()
    MethodParameters:
                        Name  Flags
      instrumentationHandler  
      truffleContext          

  public void notifyLeave(java.lang.Object, com.oracle.truffle.api.TruffleContext);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/api/TruffleContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=8, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
        start local 1 // java.lang.Object instrumentationHandler
        start local 2 // com.oracle.truffle.api.TruffleContext truffleContext
         0: .line 360
            aload 1 /* instrumentationHandler */
            checkcast com.oracle.truffle.api.instrumentation.InstrumentationHandler
            astore 3 /* handler */
        start local 3 // com.oracle.truffle.api.instrumentation.InstrumentationHandler handler
         1: .line 361
            aload 3 /* handler */
            invokestatic com.oracle.truffle.api.CompilerAsserts.partialEvaluationConstant:(Ljava/lang/Object;)V
         2: .line 362
            aload 3 /* handler */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler.getThreadsActivationListeners:()[Lcom/oracle/truffle/api/instrumentation/ThreadsActivationListener;
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 6
      StackMap locals: com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl java.lang.Object com.oracle.truffle.api.TruffleContext com.oracle.truffle.api.instrumentation.InstrumentationHandler top int int com.oracle.truffle.api.instrumentation.ThreadsActivationListener[]
      StackMap stack:
         3: aload 7
            iload 5
            aaload
            astore 4 /* listener */
        start local 4 // com.oracle.truffle.api.instrumentation.ThreadsActivationListener listener
         4: .line 363
            aload 4 /* listener */
            aload 2 /* truffleContext */
            invokeinterface com.oracle.truffle.api.instrumentation.ThreadsActivationListener.onLeaveThread:(Lcom/oracle/truffle/api/TruffleContext;)V
        end local 4 // com.oracle.truffle.api.instrumentation.ThreadsActivationListener listener
         5: .line 362
            iinc 5 1
      StackMap locals:
      StackMap stack:
         6: iload 5
            iload 6
            if_icmplt 3
         7: .line 365
            return
        end local 3 // com.oracle.truffle.api.instrumentation.InstrumentationHandler handler
        end local 2 // com.oracle.truffle.api.TruffleContext truffleContext
        end local 1 // java.lang.Object instrumentationHandler
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    8     0                    this  Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor$InstrumentImpl;
            0    8     1  instrumentationHandler  Ljava/lang/Object;
            0    8     2          truffleContext  Lcom/oracle/truffle/api/TruffleContext;
            1    8     3                 handler  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
            4    5     4                listener  Lcom/oracle/truffle/api/instrumentation/ThreadsActivationListener;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.ExplodeLoop()
    MethodParameters:
                        Name  Flags
      instrumentationHandler  
      truffleContext          
}
SourceFile: "InstrumentAccessor.java"
NestHost: com.oracle.truffle.api.instrumentation.InstrumentAccessor
InnerClasses:
  public abstract TruffleBoundary = com.oracle.truffle.api.CompilerDirectives$TruffleBoundary of com.oracle.truffle.api.CompilerDirectives
  public abstract EngineSupport = com.oracle.truffle.api.impl.Accessor$EngineSupport of com.oracle.truffle.api.impl.Accessor
  public abstract InstrumentSupport = com.oracle.truffle.api.impl.Accessor$InstrumentSupport of com.oracle.truffle.api.impl.Accessor
  public abstract LanguageSupport = com.oracle.truffle.api.impl.Accessor$LanguageSupport of com.oracle.truffle.api.impl.Accessor
  public abstract NodeSupport = com.oracle.truffle.api.impl.Accessor$NodeSupport of com.oracle.truffle.api.impl.Accessor
  final InstrumentImpl = com.oracle.truffle.api.instrumentation.InstrumentAccessor$InstrumentImpl of com.oracle.truffle.api.instrumentation.InstrumentAccessor
  final InstrumentClientInstrumenter = com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter of com.oracle.truffle.api.instrumentation.InstrumentationHandler
  EventProviderWithInputChainNode = com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode of com.oracle.truffle.api.instrumentation.ProbeNode
  final SavedInputValueID = com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode$SavedInputValueID of com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode
  protected abstract ContextLocalFactory = com.oracle.truffle.api.instrumentation.TruffleInstrument$ContextLocalFactory of com.oracle.truffle.api.instrumentation.TruffleInstrument
  protected abstract ContextThreadLocalFactory = com.oracle.truffle.api.instrumentation.TruffleInstrument$ContextThreadLocalFactory of com.oracle.truffle.api.instrumentation.TruffleInstrument
  public final Env = com.oracle.truffle.api.instrumentation.TruffleInstrument$Env of com.oracle.truffle.api.instrumentation.TruffleInstrument