final class com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter extends com.oracle.truffle.api.instrumentation.InstrumentationHandler$AbstractInstrumenter
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter
  super_class: com.oracle.truffle.api.instrumentation.InstrumentationHandler$AbstractInstrumenter
{
  private final java.lang.String instrumentClassName;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private java.lang.Object[] services;
    descriptor: [Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE

  com.oracle.truffle.api.instrumentation.TruffleInstrument instrument;
    descriptor: Lcom/oracle/truffle/api/instrumentation/TruffleInstrument;
    flags: (0x0000) 

  private final com.oracle.truffle.api.instrumentation.TruffleInstrument$Env env;
    descriptor: Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  final com.oracle.truffle.api.instrumentation.InstrumentationHandler this$0;
    descriptor: Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  void <init>(com.oracle.truffle.api.instrumentation.InstrumentationHandler, com.oracle.truffle.api.instrumentation.TruffleInstrument$Env, java.lang.String);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;Ljava/lang/String;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
        start local 2 // com.oracle.truffle.api.instrumentation.TruffleInstrument$Env env
        start local 3 // java.lang.String instrumentClassName
         0: .line 1986
            aload 0 /* this */
            aload 1
            putfield com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.this$0:Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
            aload 0 /* this */
            aload 1
            invokespecial com.oracle.truffle.api.instrumentation.InstrumentationHandler$AbstractInstrumenter.<init>:(Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;)V
         1: .line 1987
            aload 0 /* this */
            aload 3 /* instrumentClassName */
            putfield com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.instrumentClassName:Ljava/lang/String;
         2: .line 1988
            aload 0 /* this */
            aload 2 /* env */
            putfield com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
         3: .line 1989
            return
        end local 3 // java.lang.String instrumentClassName
        end local 2 // com.oracle.truffle.api.instrumentation.TruffleInstrument$Env env
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    4     0                 this  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$InstrumentClientInstrumenter;
            0    4     2                  env  Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            0    4     3  instrumentClassName  Ljava/lang/String;
    MethodParameters:
                     Name  Flags
      this$0               final
      env                  
      instrumentClassName  

  boolean isInstrumentableSource(com.oracle.truffle.api.source.Source);
    descriptor: (Lcom/oracle/truffle/api/source/Source;)Z
    flags: (0x0000) 
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
        start local 1 // com.oracle.truffle.api.source.Source source
         0: .line 1993
            iconst_1
            ireturn
        end local 1 // com.oracle.truffle.api.source.Source source
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$InstrumentClientInstrumenter;
            0    1     1  source  Lcom/oracle/truffle/api/source/Source;
    MethodParameters:
        Name  Flags
      source  

  boolean isInstrumentableRoot(com.oracle.truffle.api.nodes.RootNode);
    descriptor: (Lcom/oracle/truffle/api/nodes/RootNode;)Z
    flags: (0x0000) 
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
        start local 1 // com.oracle.truffle.api.nodes.RootNode rootNode
         0: .line 1998
            iconst_1
            ireturn
        end local 1 // com.oracle.truffle.api.nodes.RootNode rootNode
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$InstrumentClientInstrumenter;
            0    1     1  rootNode  Lcom/oracle/truffle/api/nodes/RootNode;
    MethodParameters:
          Name  Flags
      rootNode  

  public java.util.Set<java.lang.Class<?>> queryTags(com.oracle.truffle.api.nodes.Node);
    descriptor: (Lcom/oracle/truffle/api/nodes/Node;)Ljava/util/Set;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
        start local 1 // com.oracle.truffle.api.nodes.Node node
         0: .line 2003
            aload 0 /* this */
            aload 1 /* node */
            aconst_null
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.queryTagsImpl:(Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/nodes/LanguageInfo;)Ljava/util/Set;
            areturn
        end local 1 // com.oracle.truffle.api.nodes.Node node
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$InstrumentClientInstrumenter;
            0    1     1  node  Lcom/oracle/truffle/api/nodes/Node;
    Signature: (Lcom/oracle/truffle/api/nodes/Node;)Ljava/util/Set<Ljava/lang/Class<*>;>;
    MethodParameters:
      Name  Flags
      node  

  void verifyFilter(com.oracle.truffle.api.instrumentation.SourceSectionFilter);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)V
    flags: (0x0000) 
    Code:
      stack=0, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
        start local 1 // com.oracle.truffle.api.instrumentation.SourceSectionFilter filter
         0: .line 2008
            return
        end local 1 // com.oracle.truffle.api.instrumentation.SourceSectionFilter filter
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$InstrumentClientInstrumenter;
            0    1     1  filter  Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
    MethodParameters:
        Name  Flags
      filter  

  java.lang.String getInstrumentClassName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
         0: .line 2011
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.instrumentClassName:Ljava/lang/String;
            areturn
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$InstrumentClientInstrumenter;

  com.oracle.truffle.api.instrumentation.TruffleInstrument$Env getEnv();
    descriptor: ()Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
         0: .line 2015
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            areturn
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$InstrumentClientInstrumenter;

  void create(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0000) 
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
        start local 1 // java.lang.String[] expectedServices
         0: .line 2019
            getstatic com.oracle.truffle.api.instrumentation.InstrumentationHandler.TRACE:Z
            ifeq 2
         1: .line 2020
            ldc "Create instrument %s class %s %n"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.instrument:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.instrumentClassName:Ljava/lang/String;
            aastore
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentationHandler.trace:(Ljava/lang/String;[Ljava/lang/Object;)V
         2: .line 2022
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.instrument:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.onCreate:(Lcom/oracle/truffle/api/instrumentation/TruffleInstrument;)[Ljava/lang/Object;
            putfield com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.services:[Ljava/lang/Object;
         3: .line 2023
            aload 1 /* expectedServices */
            ifnull 5
            getstatic com.oracle.truffle.api.TruffleOptions.AOT:Z
            ifne 5
         4: .line 2024
            aload 0 /* this */
            aload 1 /* expectedServices */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.checkServices:([Ljava/lang/String;)Z
            pop
         5: .line 2026
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.api.instrumentation.InstrumentationHandler.TRACE:Z
            ifeq 7
         6: .line 2027
            ldc "Created instrument %s class %s %n"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.instrument:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.instrumentClassName:Ljava/lang/String;
            aastore
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentationHandler.trace:(Ljava/lang/String;[Ljava/lang/Object;)V
         7: .line 2029
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.String[] expectedServices
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    8     0              this  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$InstrumentClientInstrumenter;
            0    8     1  expectedServices  [Ljava/lang/String;
    MethodParameters:
                  Name  Flags
      expectedServices  

  private boolean checkServices(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=10, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
        start local 1 // java.lang.String[] expectedServices
         0: .line 2032
            aload 1 /* expectedServices */
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 10
      StackMap locals: com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter java.lang.String[] top int int java.lang.String[]
      StackMap stack:
         1: aload 5
            iload 3
            aaload
            astore 2 /* name */
        start local 2 // java.lang.String name
         2: .line 2033
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.services:[Ljava/lang/Object;
            dup
            astore 9
            arraylength
            istore 8
            iconst_0
            istore 7
            goto 7
      StackMap locals: com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter java.lang.String[] java.lang.String int int java.lang.String[] top int int java.lang.Object[]
      StackMap stack:
         3: aload 9
            iload 7
            aaload
            astore 6 /* obj */
        start local 6 // java.lang.Object obj
         4: .line 2034
            aload 0 /* this */
            aload 2 /* name */
            aload 6 /* obj */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.findType:(Ljava/lang/String;Ljava/lang/Class;)Z
            ifeq 6
         5: .line 2035
            goto 9
        end local 6 // java.lang.Object obj
         6: .line 2033
      StackMap locals:
      StackMap stack:
            iinc 7 1
      StackMap locals:
      StackMap stack:
         7: iload 7
            iload 8
            if_icmplt 3
         8: .line 2038
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            ldc "%s declares service %s but doesn't register it"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.instrumentClassName:Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 2 /* name */
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aconst_null
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentationHandler.failInstrumentInitialization:(Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 2 // java.lang.String name
         9: .line 2032
      StackMap locals: com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter java.lang.String[] top int int java.lang.String[]
      StackMap stack:
            iinc 3 1
      StackMap locals:
      StackMap stack:
        10: iload 3
            iload 4
            if_icmplt 1
        11: .line 2040
            iconst_1
            ireturn
        end local 1 // java.lang.String[] expectedServices
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   12     0              this  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$InstrumentClientInstrumenter;
            0   12     1  expectedServices  [Ljava/lang/String;
            2    9     2              name  Ljava/lang/String;
            4    6     6               obj  Ljava/lang/Object;
    MethodParameters:
                  Name  Flags
      expectedServices  

  private boolean findType(java.lang.String, java.lang.Class<?>);
    descriptor: (Ljava/lang/String;Ljava/lang/Class;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=7, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
        start local 1 // java.lang.String name
        start local 2 // java.lang.Class type
         0: .line 2044
            aload 2 /* type */
            ifnonnull 2
         1: .line 2045
            iconst_0
            ireturn
         2: .line 2047
      StackMap locals:
      StackMap stack:
            aload 2 /* type */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            aload 1 /* name */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 3
            aload 2 /* type */
            invokevirtual java.lang.Class.getCanonicalName:()Ljava/lang/String;
            ifnull 4
            aload 2 /* type */
            invokevirtual java.lang.Class.getCanonicalName:()Ljava/lang/String;
            aload 1 /* name */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 2048
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
         4: .line 2050
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* name */
            aload 2 /* type */
            invokevirtual java.lang.Class.getSuperclass:()Ljava/lang/Class;
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.findType:(Ljava/lang/String;Ljava/lang/Class;)Z
            ifeq 6
         5: .line 2051
            iconst_1
            ireturn
         6: .line 2053
      StackMap locals:
      StackMap stack:
            aload 2 /* type */
            invokevirtual java.lang.Class.getInterfaces:()[Ljava/lang/Class;
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 11
      StackMap locals: com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter java.lang.String java.lang.Class top int int java.lang.Class[]
      StackMap stack:
         7: aload 6
            iload 4
            aaload
            astore 3 /* inter */
        start local 3 // java.lang.Class inter
         8: .line 2054
            aload 0 /* this */
            aload 1 /* name */
            aload 3 /* inter */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.findType:(Ljava/lang/String;Ljava/lang/Class;)Z
            ifeq 10
         9: .line 2055
            iconst_1
            ireturn
        end local 3 // java.lang.Class inter
        10: .line 2053
      StackMap locals:
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
        11: iload 4
            iload 5
            if_icmplt 7
        12: .line 2058
            iconst_0
            ireturn
        end local 2 // java.lang.Class type
        end local 1 // java.lang.String name
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   13     0   this  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$InstrumentClientInstrumenter;
            0   13     1   name  Ljava/lang/String;
            0   13     2   type  Ljava/lang/Class<*>;
            8   10     3  inter  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/String;Ljava/lang/Class<*>;)Z
    MethodParameters:
      Name  Flags
      name  
      type  

  boolean isInitialized();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
         0: .line 2062
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.instrument:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$InstrumentClientInstrumenter;

  com.oracle.truffle.api.instrumentation.TruffleInstrument getInstrument();
    descriptor: ()Lcom/oracle/truffle/api/instrumentation/TruffleInstrument;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
         0: .line 2066
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.instrument:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument;
            areturn
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$InstrumentClientInstrumenter;

  public <T extends com.oracle.truffle.api.instrumentation.ContextsListener> com.oracle.truffle.api.instrumentation.EventBinding<T> attachContextsListener(T, boolean);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/ContextsListener;Z)Lcom/oracle/truffle/api/instrumentation/EventBinding;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
        start local 1 // com.oracle.truffle.api.instrumentation.ContextsListener listener
        start local 2 // boolean includeActiveContexts
         0: .line 2071
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.this$0:Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
            aload 0 /* this */
            aload 1 /* listener */
            iload 2 /* includeActiveContexts */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler.attachContextsListener:(Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$AbstractInstrumenter;Lcom/oracle/truffle/api/instrumentation/ContextsListener;Z)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            areturn
        end local 2 // boolean includeActiveContexts
        end local 1 // com.oracle.truffle.api.instrumentation.ContextsListener listener
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0    1     0                   this  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$InstrumentClientInstrumenter;
            0    1     1               listener  TT;
            0    1     2  includeActiveContexts  Z
    Signature: <T::Lcom/oracle/truffle/api/instrumentation/ContextsListener;>(TT;Z)Lcom/oracle/truffle/api/instrumentation/EventBinding<TT;>;
    MethodParameters:
                       Name  Flags
      listener               
      includeActiveContexts  

  public <T extends com.oracle.truffle.api.instrumentation.ThreadsListener> com.oracle.truffle.api.instrumentation.EventBinding<T> attachThreadsListener(T, boolean);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/ThreadsListener;Z)Lcom/oracle/truffle/api/instrumentation/EventBinding;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
        start local 1 // com.oracle.truffle.api.instrumentation.ThreadsListener listener
        start local 2 // boolean includeStartedThreads
         0: .line 2076
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.this$0:Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
            aload 0 /* this */
            aload 1 /* listener */
            iload 2 /* includeStartedThreads */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler.attachThreadsListener:(Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$AbstractInstrumenter;Lcom/oracle/truffle/api/instrumentation/ThreadsListener;Z)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            areturn
        end local 2 // boolean includeStartedThreads
        end local 1 // com.oracle.truffle.api.instrumentation.ThreadsListener listener
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0    1     0                   this  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$InstrumentClientInstrumenter;
            0    1     1               listener  TT;
            0    1     2  includeStartedThreads  Z
    Signature: <T::Lcom/oracle/truffle/api/instrumentation/ThreadsListener;>(TT;Z)Lcom/oracle/truffle/api/instrumentation/EventBinding<TT;>;
    MethodParameters:
                       Name  Flags
      listener               
      includeStartedThreads  

  void doFinalize();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
         0: .line 2081
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.instrument:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument;
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument.onFinalize:(Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;)V
         1: .line 2082
            return
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$InstrumentClientInstrumenter;

  void dispose();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
         0: .line 2086
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.instrument:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument;
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument.onDispose:(Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;)V
         1: .line 2087
            return
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$InstrumentClientInstrumenter;

  public com.oracle.truffle.api.instrumentation.EventBinding<? extends com.oracle.truffle.api.instrumentation.ThreadsActivationListener> attachThreadsActivationListener(com.oracle.truffle.api.instrumentation.ThreadsActivationListener);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/ThreadsActivationListener;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
        start local 1 // com.oracle.truffle.api.instrumentation.ThreadsActivationListener listener
         0: .line 2091
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.this$0:Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
            aload 0 /* this */
            aload 1 /* listener */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler.attachThreadsActivationListener:(Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$AbstractInstrumenter;Lcom/oracle/truffle/api/instrumentation/ThreadsActivationListener;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            areturn
        end local 1 // com.oracle.truffle.api.instrumentation.ThreadsActivationListener listener
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$InstrumentClientInstrumenter;
            0    1     1  listener  Lcom/oracle/truffle/api/instrumentation/ThreadsActivationListener;
    Signature: (Lcom/oracle/truffle/api/instrumentation/ThreadsActivationListener;)Lcom/oracle/truffle/api/instrumentation/EventBinding<+Lcom/oracle/truffle/api/instrumentation/ThreadsActivationListener;>;
    MethodParameters:
          Name  Flags
      listener  

  <T> T lookup(com.oracle.truffle.api.instrumentation.InstrumentationHandler, java.lang.Class<T>);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;Ljava/lang/Class;)Ljava/lang/Object;
    flags: (0x0000) 
    Code:
      stack=2, locals=7, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
        start local 1 // com.oracle.truffle.api.instrumentation.InstrumentationHandler handler
        start local 2 // java.lang.Class type
         0: .line 2096
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.services:[Ljava/lang/Object;
            ifnull 7
         1: .line 2097
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.services:[Ljava/lang/Object;
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 6
      StackMap locals: com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter com.oracle.truffle.api.instrumentation.InstrumentationHandler java.lang.Class top int int java.lang.Object[]
      StackMap stack:
         2: aload 6
            iload 4
            aaload
            astore 3 /* service */
        start local 3 // java.lang.Object service
         3: .line 2098
            aload 2 /* type */
            aload 3 /* service */
            invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
            ifeq 5
         4: .line 2099
            aload 2 /* type */
            aload 3 /* service */
            invokevirtual java.lang.Class.cast:(Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 3 // java.lang.Object service
         5: .line 2097
      StackMap locals:
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
         6: iload 4
            iload 5
            if_icmplt 2
         7: .line 2103
      StackMap locals: com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter com.oracle.truffle.api.instrumentation.InstrumentationHandler java.lang.Class
      StackMap stack:
            aconst_null
            areturn
        end local 2 // java.lang.Class type
        end local 1 // com.oracle.truffle.api.instrumentation.InstrumentationHandler handler
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    8     0     this  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$InstrumentClientInstrumenter;
            0    8     1  handler  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
            0    8     2     type  Ljava/lang/Class<TT;>;
            3    5     3  service  Ljava/lang/Object;
    Signature: <T:Ljava/lang/Object;>(Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;Ljava/lang/Class<TT;>;)TT;
    MethodParameters:
         Name  Flags
      handler  
      type     
}
SourceFile: "InstrumentationHandler.java"
NestHost: com.oracle.truffle.api.instrumentation.InstrumentationHandler
InnerClasses:
  abstract AbstractInstrumenter = com.oracle.truffle.api.instrumentation.InstrumentationHandler$AbstractInstrumenter of com.oracle.truffle.api.instrumentation.InstrumentationHandler
  final InstrumentClientInstrumenter = com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter of com.oracle.truffle.api.instrumentation.InstrumentationHandler
  public final Env = com.oracle.truffle.api.instrumentation.TruffleInstrument$Env of com.oracle.truffle.api.instrumentation.TruffleInstrument