public final class com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor extends com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor
  super_class: com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor
{
  private static final int NUMBER_OF_PROPERTIES_PER_ENTRY;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor this
         0: .line 72
            aload 0 /* this */
            invokespecial com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.<init>:()V
            return
        end local 0 // com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/dsl/processor/InstrumentRegistrationProcessor;

  boolean validateRegistration(javax.lang.model.element.Element, javax.lang.model.element.AnnotationMirror);
    descriptor: (Ljavax/lang/model/element/Element;Ljavax/lang/model/element/AnnotationMirror;)Z
    flags: (0x0000) 
    Code:
      stack=3, locals=7, args_size=3
        start local 0 // com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor this
        start local 1 // javax.lang.model.element.Element annotatedElement
        start local 2 // javax.lang.model.element.AnnotationMirror registrationMirror
         0: .line 78
            aload 1 /* annotatedElement */
            invokeinterface javax.lang.model.element.Element.getModifiers:()Ljava/util/Set;
            getstatic javax.lang.model.element.Modifier.PUBLIC:Ljavax/lang/model/element/Modifier;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 3
         1: .line 79
            aload 0 /* this */
            ldc "Registered instrument class must be public"
            aload 1 /* annotatedElement */
            invokevirtual com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor.emitError:(Ljava/lang/String;Ljavax/lang/model/element/Element;)V
         2: .line 80
            iconst_0
            ireturn
         3: .line 82
      StackMap locals:
      StackMap stack:
            aload 1 /* annotatedElement */
            invokeinterface javax.lang.model.element.Element.getEnclosingElement:()Ljavax/lang/model/element/Element;
            invokeinterface javax.lang.model.element.Element.getKind:()Ljavax/lang/model/element/ElementKind;
            getstatic javax.lang.model.element.ElementKind.PACKAGE:Ljavax/lang/model/element/ElementKind;
            if_acmpeq 6
            aload 1 /* annotatedElement */
            invokeinterface javax.lang.model.element.Element.getModifiers:()Ljava/util/Set;
            getstatic javax.lang.model.element.Modifier.STATIC:Ljavax/lang/model/element/Modifier;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 6
         4: .line 83
            aload 0 /* this */
            ldc "Registered instrument inner-class must be static"
            aload 1 /* annotatedElement */
            invokevirtual com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor.emitError:(Ljava/lang/String;Ljavax/lang/model/element/Element;)V
         5: .line 84
            iconst_0
            ireturn
         6: .line 86
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.truffle.dsl.processor.ProcessorContext.getInstance:()Lcom/oracle/truffle/dsl/processor/ProcessorContext;
            invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getTypes:()Lcom/oracle/truffle/dsl/processor/TruffleTypes;
            astore 3 /* types */
        start local 3 // com.oracle.truffle.dsl.processor.TruffleTypes types
         7: .line 87
            aload 3 /* types */
            getfield com.oracle.truffle.dsl.processor.TruffleTypes.TruffleInstrument:Ljavax/lang/model/type/DeclaredType;
            astore 4 /* truffleInstrument */
        start local 4 // javax.lang.model.type.TypeMirror truffleInstrument
         8: .line 88
            aload 3 /* types */
            getfield com.oracle.truffle.dsl.processor.TruffleTypes.TruffleInstrument_Provider:Ljavax/lang/model/type/DeclaredType;
            astore 5 /* truffleInstrumentProvider */
        start local 5 // javax.lang.model.type.TypeMirror truffleInstrumentProvider
         9: .line 90
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor.processingEnv:Ljavax/annotation/processing/ProcessingEnvironment;
            invokeinterface javax.annotation.processing.ProcessingEnvironment.getTypeUtils:()Ljavax/lang/model/util/Types;
            aload 1 /* annotatedElement */
            invokeinterface javax.lang.model.element.Element.asType:()Ljavax/lang/model/type/TypeMirror;
            aload 4 /* truffleInstrument */
            invokeinterface javax.lang.model.util.Types.isAssignable:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
            ifeq 12
        10: .line 91
            iconst_1
            istore 6 /* processingTruffleInstrument */
        start local 6 // boolean processingTruffleInstrument
        11: .line 92
            goto 17
        end local 6 // boolean processingTruffleInstrument
      StackMap locals: com.oracle.truffle.dsl.processor.TruffleTypes javax.lang.model.type.TypeMirror javax.lang.model.type.TypeMirror
      StackMap stack:
        12: aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor.processingEnv:Ljavax/annotation/processing/ProcessingEnvironment;
            invokeinterface javax.annotation.processing.ProcessingEnvironment.getTypeUtils:()Ljavax/lang/model/util/Types;
            aload 1 /* annotatedElement */
            invokeinterface javax.lang.model.element.Element.asType:()Ljavax/lang/model/type/TypeMirror;
            aload 5 /* truffleInstrumentProvider */
            invokeinterface javax.lang.model.util.Types.isAssignable:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
            ifeq 15
        13: .line 93
            iconst_0
            istore 6 /* processingTruffleInstrument */
        start local 6 // boolean processingTruffleInstrument
        14: .line 94
            goto 17
        end local 6 // boolean processingTruffleInstrument
        15: .line 95
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "Registered instrument class must subclass TruffleInstrument"
            aload 1 /* annotatedElement */
            invokevirtual com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor.emitError:(Ljava/lang/String;Ljavax/lang/model/element/Element;)V
        16: .line 96
            iconst_0
            ireturn
        start local 6 // boolean processingTruffleInstrument
        17: .line 98
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            aload 1 /* annotatedElement */
            invokevirtual com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor.assertNoErrorExpected:(Ljavax/lang/model/element/Element;)V
        18: .line 99
            iload 6 /* processingTruffleInstrument */
            ireturn
        end local 6 // boolean processingTruffleInstrument
        end local 5 // javax.lang.model.type.TypeMirror truffleInstrumentProvider
        end local 4 // javax.lang.model.type.TypeMirror truffleInstrument
        end local 3 // com.oracle.truffle.dsl.processor.TruffleTypes types
        end local 2 // javax.lang.model.element.AnnotationMirror registrationMirror
        end local 1 // javax.lang.model.element.Element annotatedElement
        end local 0 // com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor this
      LocalVariableTable:
        Start  End  Slot                         Name  Signature
            0   19     0                         this  Lcom/oracle/truffle/dsl/processor/InstrumentRegistrationProcessor;
            0   19     1             annotatedElement  Ljavax/lang/model/element/Element;
            0   19     2           registrationMirror  Ljavax/lang/model/element/AnnotationMirror;
            7   19     3                        types  Lcom/oracle/truffle/dsl/processor/TruffleTypes;
            8   19     4            truffleInstrument  Ljavax/lang/model/type/TypeMirror;
            9   19     5    truffleInstrumentProvider  Ljavax/lang/model/type/TypeMirror;
           11   12     6  processingTruffleInstrument  Z
           14   15     6  processingTruffleInstrument  Z
           17   19     6  processingTruffleInstrument  Z
    MethodParameters:
                    Name  Flags
      annotatedElement    
      registrationMirror  

  javax.lang.model.type.DeclaredType getProviderClass();
    descriptor: ()Ljavax/lang/model/type/DeclaredType;
    flags: (0x0000) 
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor this
         0: .line 104
            invokestatic com.oracle.truffle.dsl.processor.ProcessorContext.getInstance:()Lcom/oracle/truffle/dsl/processor/ProcessorContext;
            invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getTypes:()Lcom/oracle/truffle/dsl/processor/TruffleTypes;
            astore 1 /* types */
        start local 1 // com.oracle.truffle.dsl.processor.TruffleTypes types
         1: .line 105
            aload 1 /* types */
            getfield com.oracle.truffle.dsl.processor.TruffleTypes.TruffleInstrument_Provider:Ljavax/lang/model/type/DeclaredType;
            areturn
        end local 1 // com.oracle.truffle.dsl.processor.TruffleTypes types
        end local 0 // com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/oracle/truffle/dsl/processor/InstrumentRegistrationProcessor;
            1    2     1  types  Lcom/oracle/truffle/dsl/processor/TruffleTypes;

  java.lang.Iterable<javax.lang.model.element.AnnotationMirror> getProviderAnnotations(javax.lang.model.element.TypeElement);
    descriptor: (Ljavax/lang/model/element/TypeElement;)Ljava/lang/Iterable;
    flags: (0x0000) 
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor this
        start local 1 // javax.lang.model.element.TypeElement annotatedElement
         0: .line 110
            invokestatic com.oracle.truffle.dsl.processor.ProcessorContext.getInstance:()Lcom/oracle/truffle/dsl/processor/ProcessorContext;
            invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getTypes:()Lcom/oracle/truffle/dsl/processor/TruffleTypes;
            astore 2 /* types */
        start local 2 // com.oracle.truffle.dsl.processor.TruffleTypes types
         1: .line 111
            aload 2 /* types */
            getfield com.oracle.truffle.dsl.processor.TruffleTypes.TruffleInstrument_Registration:Ljavax/lang/model/type/DeclaredType;
            astore 3 /* registrationType */
        start local 3 // javax.lang.model.type.DeclaredType registrationType
         2: .line 112
            aload 1 /* annotatedElement */
            invokeinterface javax.lang.model.element.TypeElement.getAnnotationMirrors:()Ljava/util/List;
            aload 3 /* registrationType */
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.findAnnotationMirror:(Ljava/util/List;Ljavax/lang/model/type/TypeMirror;)Ljavax/lang/model/element/AnnotationMirror;
         3: .line 113
            new com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor$1
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor$1.<init>:(Lcom/oracle/truffle/dsl/processor/InstrumentRegistrationProcessor;)V
         4: .line 112
            invokestatic com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor.copyAnnotations:(Ljavax/lang/model/element/AnnotationMirror;Ljava/util/function/Predicate;)Ljavax/lang/model/element/AnnotationMirror;
            astore 4 /* registration */
        start local 4 // javax.lang.model.element.AnnotationMirror registration
         5: .line 119
            aload 4 /* registration */
            invokestatic java.util.Collections.singleton:(Ljava/lang/Object;)Ljava/util/Set;
            areturn
        end local 4 // javax.lang.model.element.AnnotationMirror registration
        end local 3 // javax.lang.model.type.DeclaredType registrationType
        end local 2 // com.oracle.truffle.dsl.processor.TruffleTypes types
        end local 1 // javax.lang.model.element.TypeElement annotatedElement
        end local 0 // com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    6     0              this  Lcom/oracle/truffle/dsl/processor/InstrumentRegistrationProcessor;
            0    6     1  annotatedElement  Ljavax/lang/model/element/TypeElement;
            1    6     2             types  Lcom/oracle/truffle/dsl/processor/TruffleTypes;
            2    6     3  registrationType  Ljavax/lang/model/type/DeclaredType;
            5    6     4      registration  Ljavax/lang/model/element/AnnotationMirror;
    Signature: (Ljavax/lang/model/element/TypeElement;)Ljava/lang/Iterable<Ljavax/lang/model/element/AnnotationMirror;>;
    MethodParameters:
                  Name  Flags
      annotatedElement  

  void implementMethod(javax.lang.model.element.TypeElement, com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement);
    descriptor: (Ljavax/lang/model/element/TypeElement;Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;)V
    flags: (0x0000) 
    Code:
      stack=5, locals=12, args_size=3
        start local 0 // com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor this
        start local 1 // javax.lang.model.element.TypeElement annotatedElement
        start local 2 // com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement methodToImplement
         0: .line 124
            aload 2 /* methodToImplement */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.createBuilder:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            astore 3 /* builder */
        start local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder builder
         1: .line 125
            aload 2 /* methodToImplement */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.getSimpleName:()Ljavax/lang/model/element/Name;
            invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
            dup
            astore 4
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 3
          -1820186426: 2
          -1352294148: 3
           1124293028: 4
              default: 29
          }
      StackMap locals: com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder java.lang.String
      StackMap stack:
         2: aload 4
            ldc "getInstrumentClassName"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 7
            goto 29
      StackMap locals:
      StackMap stack:
         3: aload 4
            ldc "create"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 5
            goto 29
      StackMap locals:
      StackMap stack:
         4: aload 4
            ldc "getServicesClassNames"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 11
            goto 29
         5: .line 127
      StackMap locals:
      StackMap stack:
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startReturn:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            aload 1 /* annotatedElement */
            invokeinterface javax.lang.model.element.TypeElement.asType:()Ljavax/lang/model/type/TypeMirror;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startNew:(Ljavax/lang/model/type/TypeMirror;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
         6: .line 128
            goto 30
         7: .line 130
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.truffle.dsl.processor.ProcessorContext.getInstance:()Lcom/oracle/truffle/dsl/processor/ProcessorContext;
            astore 5 /* context */
        start local 5 // com.oracle.truffle.dsl.processor.ProcessorContext context
         8: .line 131
            aload 5 /* context */
            invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getEnvironment:()Ljavax/annotation/processing/ProcessingEnvironment;
            invokeinterface javax.annotation.processing.ProcessingEnvironment.getElementUtils:()Ljavax/lang/model/util/Elements;
            astore 6 /* elements */
        start local 6 // javax.lang.model.util.Elements elements
         9: .line 132
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startReturn:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            aload 6 /* elements */
            aload 1 /* annotatedElement */
            invokeinterface javax.lang.model.util.Elements.getBinaryName:(Ljavax/lang/model/element/TypeElement;)Ljavax/lang/model/element/Name;
            invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.doubleQuote:(Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        10: .line 133
            goto 30
        end local 6 // javax.lang.model.util.Elements elements
        end local 5 // com.oracle.truffle.dsl.processor.ProcessorContext context
        11: .line 136
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.truffle.dsl.processor.ProcessorContext.getInstance:()Lcom/oracle/truffle/dsl/processor/ProcessorContext;
            astore 5 /* context */
        start local 5 // com.oracle.truffle.dsl.processor.ProcessorContext context
        12: .line 137
            aload 1 /* annotatedElement */
            invokeinterface javax.lang.model.element.TypeElement.getAnnotationMirrors:()Ljava/util/List;
        13: .line 138
            aload 5 /* context */
            invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getTypes:()Lcom/oracle/truffle/dsl/processor/TruffleTypes;
            getfield com.oracle.truffle.dsl.processor.TruffleTypes.TruffleInstrument_Registration:Ljavax/lang/model/type/DeclaredType;
        14: .line 137
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.findAnnotationMirror:(Ljava/util/List;Ljavax/lang/model/type/TypeMirror;)Ljavax/lang/model/element/AnnotationMirror;
            astore 6 /* registration */
        start local 6 // javax.lang.model.element.AnnotationMirror registration
        15: .line 139
            ldc Ljavax/lang/model/type/TypeMirror;
            aload 6 /* registration */
            ldc "services"
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.getAnnotationValueList:(Ljava/lang/Class;Ljavax/lang/model/element/AnnotationMirror;Ljava/lang/String;)Ljava/util/List;
            astore 7 /* services */
        start local 7 // java.util.List services
        16: .line 140
            aload 7 /* services */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 19
        17: .line 141
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startReturn:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            aload 5 /* context */
            ldc Ljava/util/Collections;
            invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getType:(Ljava/lang/Class;)Ljavax/lang/model/type/TypeMirror;
            ldc "emptySet"
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startStaticCall:(Ljavax/lang/model/type/TypeMirror;Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        18: .line 142
            goto 30
        19: .line 143
      StackMap locals: com.oracle.truffle.dsl.processor.ProcessorContext javax.lang.model.element.AnnotationMirror java.util.List
      StackMap stack:
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startReturn:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        20: .line 144
            aload 3 /* builder */
            aload 5 /* context */
            ldc Ljava/util/Arrays;
            invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getType:(Ljava/lang/Class;)Ljavax/lang/model/type/TypeMirror;
            ldc "asList"
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startStaticCall:(Ljavax/lang/model/type/TypeMirror;Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        21: .line 145
            aload 7 /* services */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 9
            goto 26
      StackMap locals: com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor javax.lang.model.element.TypeElement com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder java.lang.String com.oracle.truffle.dsl.processor.ProcessorContext javax.lang.model.element.AnnotationMirror java.util.List top java.util.Iterator
      StackMap stack:
        22: aload 9
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast javax.lang.model.type.TypeMirror
            astore 8 /* service */
        start local 8 // javax.lang.model.type.TypeMirror service
        23: .line 146
            aload 5 /* context */
            invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getEnvironment:()Ljavax/annotation/processing/ProcessingEnvironment;
            invokeinterface javax.annotation.processing.ProcessingEnvironment.getElementUtils:()Ljavax/lang/model/util/Elements;
            astore 10 /* elements */
        start local 10 // javax.lang.model.util.Elements elements
        24: .line 147
            aload 5 /* context */
            invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getEnvironment:()Ljavax/annotation/processing/ProcessingEnvironment;
            invokeinterface javax.annotation.processing.ProcessingEnvironment.getTypeUtils:()Ljavax/lang/model/util/Types;
            astore 11 /* types */
        start local 11 // javax.lang.model.util.Types types
        25: .line 148
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startGroup:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            aload 10 /* elements */
            aload 11 /* types */
            aload 8 /* service */
            invokeinterface javax.lang.model.util.Types.erasure:(Ljavax/lang/model/type/TypeMirror;)Ljavax/lang/model/type/TypeMirror;
            checkcast javax.lang.model.type.DeclaredType
            invokeinterface javax.lang.model.type.DeclaredType.asElement:()Ljavax/lang/model/element/Element;
            checkcast javax.lang.model.element.TypeElement
            invokeinterface javax.lang.model.util.Elements.getBinaryName:(Ljavax/lang/model/element/TypeElement;)Ljavax/lang/model/element/Name;
            invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.doubleQuote:(Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        end local 11 // javax.lang.model.util.Types types
        end local 10 // javax.lang.model.util.Elements elements
        end local 8 // javax.lang.model.type.TypeMirror service
        26: .line 145
      StackMap locals:
      StackMap stack:
            aload 9
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 22
        27: .line 150
            aload 3 /* builder */
            iconst_2
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:(I)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        28: .line 152
            goto 30
        end local 7 // java.util.List services
        end local 6 // javax.lang.model.element.AnnotationMirror registration
        end local 5 // com.oracle.truffle.dsl.processor.ProcessorContext context
        29: .line 155
      StackMap locals: com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor javax.lang.model.element.TypeElement com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder java.lang.String
      StackMap stack:
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unsupported method: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* methodToImplement */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.getSimpleName:()Ljavax/lang/model/element/Name;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        30: .line 157
      StackMap locals:
      StackMap stack:
            return
        end local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder builder
        end local 2 // com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement methodToImplement
        end local 1 // javax.lang.model.element.TypeElement annotatedElement
        end local 0 // com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   31     0               this  Lcom/oracle/truffle/dsl/processor/InstrumentRegistrationProcessor;
            0   31     1   annotatedElement  Ljavax/lang/model/element/TypeElement;
            0   31     2  methodToImplement  Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;
            1   31     3            builder  Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            8   11     5            context  Lcom/oracle/truffle/dsl/processor/ProcessorContext;
            9   11     6           elements  Ljavax/lang/model/util/Elements;
           12   29     5            context  Lcom/oracle/truffle/dsl/processor/ProcessorContext;
           15   29     6       registration  Ljavax/lang/model/element/AnnotationMirror;
           16   29     7           services  Ljava/util/List<Ljavax/lang/model/type/TypeMirror;>;
           23   26     8            service  Ljavax/lang/model/type/TypeMirror;
           24   26    10           elements  Ljavax/lang/model/util/Elements;
           25   26    11              types  Ljavax/lang/model/util/Types;
    MethodParameters:
                   Name  Flags
      annotatedElement   
      methodToImplement  

  java.lang.String getRegistrationFileName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor this
         0: .line 161
            ldc "META-INF/truffle/instrument"
            areturn
        end local 0 // com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/dsl/processor/InstrumentRegistrationProcessor;

  void storeRegistrations(java.util.Properties, java.lang.Iterable<? extends javax.lang.model.element.TypeElement>);
    descriptor: (Ljava/util/Properties;Ljava/lang/Iterable;)V
    flags: (0x0000) 
    Code:
      stack=5, locals=21, args_size=3
        start local 0 // com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor this
        start local 1 // java.util.Properties into
        start local 2 // java.lang.Iterable instruments
         0: .line 166
            invokestatic com.oracle.truffle.dsl.processor.ProcessorContext.getInstance:()Lcom/oracle/truffle/dsl/processor/ProcessorContext;
            invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getTypes:()Lcom/oracle/truffle/dsl/processor/TruffleTypes;
            astore 3 /* types */
        start local 3 // com.oracle.truffle.dsl.processor.TruffleTypes types
         1: .line 167
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor.getRegistrationFileName:()Ljava/lang/String;
            aload 1 /* into */
            invokevirtual com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor.loadIfFileAlreadyExists:(Ljava/lang/String;Ljava/util/Properties;)I
            istore 4 /* numInstruments */
        start local 4 // int numInstruments
         2: .line 168
            aload 2 /* instruments */
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 6
            goto 32
      StackMap locals: com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor java.util.Properties java.lang.Iterable com.oracle.truffle.dsl.processor.TruffleTypes int top java.util.Iterator
      StackMap stack:
         3: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast javax.lang.model.element.TypeElement
            astore 5 /* l */
        start local 5 // javax.lang.model.element.TypeElement l
         4: .line 169
            aload 5 /* l */
            aload 3 /* types */
            getfield com.oracle.truffle.dsl.processor.TruffleTypes.TruffleInstrument_Registration:Ljavax/lang/model/type/DeclaredType;
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.findAnnotationMirror:(Ljavax/lang/model/element/Element;Ljavax/lang/model/type/TypeMirror;)Ljavax/lang/model/element/AnnotationMirror;
            astore 7 /* annotation */
        start local 7 // javax.lang.model.element.AnnotationMirror annotation
         5: .line 170
            aload 7 /* annotation */
            ifnonnull 7
         6: .line 171
            goto 32
         7: .line 174
      StackMap locals: com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor java.util.Properties java.lang.Iterable com.oracle.truffle.dsl.processor.TruffleTypes int javax.lang.model.element.TypeElement java.util.Iterator javax.lang.model.element.AnnotationMirror
      StackMap stack:
            ldc Ljava/lang/String;
            aload 7 /* annotation */
            ldc "id"
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.getAnnotationValue:(Ljava/lang/Class;Ljavax/lang/model/element/AnnotationMirror;Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 8 /* id */
        start local 8 // java.lang.String id
         8: .line 175
            aload 8 /* id */
            aload 1 /* into */
            invokestatic com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor.findInstrument:(Ljava/lang/String;Ljava/util/Properties;)I
            istore 9 /* instNum */
        start local 9 // int instNum
         9: .line 176
            iload 9 /* instNum */
            ifne 12
        10: .line 177
            iinc 4 /* numInstruments */ 1
        11: .line 178
            iload 4 /* numInstruments */
            istore 9 /* instNum */
        12: .line 181
      StackMap locals: java.lang.String int
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "instrument"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 9 /* instNum */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 10 /* prefix */
        start local 10 // java.lang.String prefix
        13: .line 182
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor.processingEnv:Ljavax/annotation/processing/ProcessingEnvironment;
            invokeinterface javax.annotation.processing.ProcessingEnvironment.getElementUtils:()Ljavax/lang/model/util/Elements;
            aload 5 /* l */
            invokeinterface javax.lang.model.util.Elements.getBinaryName:(Ljavax/lang/model/element/TypeElement;)Ljavax/lang/model/element/Name;
            invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
            astore 11 /* className */
        start local 11 // java.lang.String className
        14: .line 184
            aload 1 /* into */
            new java.lang.StringBuilder
            dup
            aload 10 /* prefix */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "id"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 8 /* id */
            invokevirtual java.util.Properties.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
            pop
        15: .line 185
            aload 1 /* into */
            new java.lang.StringBuilder
            dup
            aload 10 /* prefix */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "name"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            ldc Ljava/lang/String;
            aload 7 /* annotation */
            ldc "name"
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.getAnnotationValue:(Ljava/lang/Class;Ljavax/lang/model/element/AnnotationMirror;Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.util.Properties.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
            pop
        16: .line 186
            aload 1 /* into */
            new java.lang.StringBuilder
            dup
            aload 10 /* prefix */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "version"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            ldc Ljava/lang/String;
            aload 7 /* annotation */
            ldc "version"
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.getAnnotationValue:(Ljava/lang/Class;Ljavax/lang/model/element/AnnotationMirror;Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.util.Properties.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
            pop
        17: .line 187
            aload 1 /* into */
            new java.lang.StringBuilder
            dup
            aload 10 /* prefix */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "className"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 11 /* className */
            invokevirtual java.util.Properties.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
            pop
        18: .line 188
            aload 1 /* into */
            new java.lang.StringBuilder
            dup
            aload 10 /* prefix */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "internal"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            ldc Ljava/lang/Boolean;
            aload 7 /* annotation */
            ldc "internal"
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.getAnnotationValue:(Ljava/lang/Class;Ljavax/lang/model/element/AnnotationMirror;Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            invokestatic java.lang.Boolean.toString:(Z)Ljava/lang/String;
            invokevirtual java.util.Properties.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
            pop
        19: .line 190
            iconst_0
            istore 12 /* serviceCounter */
        start local 12 // int serviceCounter
        20: .line 191
            aload 7 /* annotation */
            invokeinterface javax.lang.model.element.AnnotationMirror.getElementValues:()Ljava/util/Map;
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 14
            goto 31
      StackMap locals: com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor java.util.Properties java.lang.Iterable com.oracle.truffle.dsl.processor.TruffleTypes int javax.lang.model.element.TypeElement java.util.Iterator javax.lang.model.element.AnnotationMirror java.lang.String int java.lang.String java.lang.String int top java.util.Iterator
      StackMap stack:
        21: aload 14
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 13 /* entry */
        start local 13 // java.util.Map$Entry entry
        22: .line 192
            aload 13 /* entry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast javax.lang.model.element.ExecutableElement
            invokeinterface javax.lang.model.element.ExecutableElement.getSimpleName:()Ljavax/lang/model/element/Name;
            astore 15 /* attrName */
        start local 15 // javax.lang.model.element.Name attrName
        23: .line 193
            aload 15 /* attrName */
            ldc "services"
            invokeinterface javax.lang.model.element.Name.contentEquals:(Ljava/lang/CharSequence;)Z
            ifeq 31
        24: .line 194
            aload 13 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast javax.lang.model.element.AnnotationValue
            astore 16 /* attrValue */
        start local 16 // javax.lang.model.element.AnnotationValue attrValue
        25: .line 195
            aload 16 /* attrValue */
            invokeinterface javax.lang.model.element.AnnotationValue.getValue:()Ljava/lang/Object;
            checkcast java.util.List
            astore 17 /* classes */
        start local 17 // java.util.List classes
        26: .line 196
            aload 17 /* classes */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 19
            goto 30
      StackMap locals: com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor java.util.Properties java.lang.Iterable com.oracle.truffle.dsl.processor.TruffleTypes int javax.lang.model.element.TypeElement java.util.Iterator javax.lang.model.element.AnnotationMirror java.lang.String int java.lang.String java.lang.String int java.util.Map$Entry java.util.Iterator javax.lang.model.element.Name javax.lang.model.element.AnnotationValue java.util.List top java.util.Iterator
      StackMap stack:
        27: aload 19
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            astore 18 /* clazz */
        start local 18 // java.lang.Object clazz
        28: .line 197
            aload 18 /* clazz */
            checkcast javax.lang.model.element.AnnotationValue
            astore 20 /* clazzValue */
        start local 20 // javax.lang.model.element.AnnotationValue clazzValue
        29: .line 198
            aload 1 /* into */
            new java.lang.StringBuilder
            dup
            aload 10 /* prefix */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "service"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 12 /* serviceCounter */
            iinc 12 /* serviceCounter */ 1
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 20 /* clazzValue */
            invokeinterface javax.lang.model.element.AnnotationValue.getValue:()Ljava/lang/Object;
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            invokevirtual java.util.Properties.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
            pop
        end local 20 // javax.lang.model.element.AnnotationValue clazzValue
        end local 18 // java.lang.Object clazz
        30: .line 196
      StackMap locals:
      StackMap stack:
            aload 19
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 27
        end local 17 // java.util.List classes
        end local 16 // javax.lang.model.element.AnnotationValue attrValue
        end local 15 // javax.lang.model.element.Name attrName
        end local 13 // java.util.Map$Entry entry
        31: .line 191
      StackMap locals: com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor java.util.Properties java.lang.Iterable com.oracle.truffle.dsl.processor.TruffleTypes int javax.lang.model.element.TypeElement java.util.Iterator javax.lang.model.element.AnnotationMirror java.lang.String int java.lang.String java.lang.String int top java.util.Iterator
      StackMap stack:
            aload 14
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 21
        end local 12 // int serviceCounter
        end local 11 // java.lang.String className
        end local 10 // java.lang.String prefix
        end local 9 // int instNum
        end local 8 // java.lang.String id
        end local 7 // javax.lang.model.element.AnnotationMirror annotation
        end local 5 // javax.lang.model.element.TypeElement l
        32: .line 168
      StackMap locals: com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor java.util.Properties java.lang.Iterable com.oracle.truffle.dsl.processor.TruffleTypes int top java.util.Iterator
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
        33: .line 203
            return
        end local 4 // int numInstruments
        end local 3 // com.oracle.truffle.dsl.processor.TruffleTypes types
        end local 2 // java.lang.Iterable instruments
        end local 1 // java.util.Properties into
        end local 0 // com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   34     0            this  Lcom/oracle/truffle/dsl/processor/InstrumentRegistrationProcessor;
            0   34     1            into  Ljava/util/Properties;
            0   34     2     instruments  Ljava/lang/Iterable<+Ljavax/lang/model/element/TypeElement;>;
            1   34     3           types  Lcom/oracle/truffle/dsl/processor/TruffleTypes;
            2   34     4  numInstruments  I
            4   32     5               l  Ljavax/lang/model/element/TypeElement;
            5   32     7      annotation  Ljavax/lang/model/element/AnnotationMirror;
            8   32     8              id  Ljava/lang/String;
            9   32     9         instNum  I
           13   32    10          prefix  Ljava/lang/String;
           14   32    11       className  Ljava/lang/String;
           20   32    12  serviceCounter  I
           22   31    13           entry  Ljava/util/Map$Entry<+Ljavax/lang/model/element/ExecutableElement;+Ljavax/lang/model/element/AnnotationValue;>;
           23   31    15        attrName  Ljavax/lang/model/element/Name;
           25   31    16       attrValue  Ljavax/lang/model/element/AnnotationValue;
           26   31    17         classes  Ljava/util/List<*>;
           28   30    18           clazz  Ljava/lang/Object;
           29   30    20      clazzValue  Ljavax/lang/model/element/AnnotationValue;
    Signature: (Ljava/util/Properties;Ljava/lang/Iterable<+Ljavax/lang/model/element/TypeElement;>;)V
    MethodParameters:
             Name  Flags
      into         
      instruments  

  private static int findInstrument(java.lang.String, java.util.Properties);
    descriptor: (Ljava/lang/String;Ljava/util/Properties;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // java.lang.String id
        start local 1 // java.util.Properties p
         0: .line 206
            iconst_1
            istore 2 /* cnt */
        start local 2 // int cnt
         1: .line 208
            goto 5
        start local 3 // java.lang.String val
         2: .line 209
      StackMap locals: int java.lang.String
      StackMap stack:
            aload 0 /* id */
            aload 3 /* val */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 210
            iload 2 /* cnt */
            ireturn
         4: .line 212
      StackMap locals:
      StackMap stack:
            iinc 2 /* cnt */ 1
        end local 3 // java.lang.String val
         5: .line 208
      StackMap locals:
      StackMap stack:
            aload 1 /* p */
            new java.lang.StringBuilder
            dup
            ldc "instrument"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* cnt */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ".id"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            dup
            astore 3 /* val */
        start local 3 // java.lang.String val
         6: ifnonnull 2
         7: .line 214
            iconst_0
            ireturn
        end local 3 // java.lang.String val
        end local 2 // int cnt
        end local 1 // java.util.Properties p
        end local 0 // java.lang.String id
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0    id  Ljava/lang/String;
            0    8     1     p  Ljava/util/Properties;
            1    8     2   cnt  I
            2    5     3   val  Ljava/lang/String;
            6    8     3   val  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      id    
      p     

  private int loadIfFileAlreadyExists(java.lang.String, java.util.Properties);
    descriptor: (Ljava/lang/String;Ljava/util/Properties;)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor this
        start local 1 // java.lang.String filename
        start local 2 // java.util.Properties p
         0: .line 219
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor.processingEnv:Ljavax/annotation/processing/ProcessingEnvironment;
            invokeinterface javax.annotation.processing.ProcessingEnvironment.getFiler:()Ljavax/annotation/processing/Filer;
         1: .line 220
            getstatic javax.tools.StandardLocation.CLASS_OUTPUT:Ljavax/tools/StandardLocation;
            ldc ""
            aload 1 /* filename */
         2: .line 219
            invokeinterface javax.annotation.processing.Filer.getResource:(Ljavax/tools/JavaFileManager$Location;Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljavax/tools/FileObject;
            astore 3 /* file */
        start local 3 // javax.tools.FileObject file
         3: .line 221
            aload 2 /* p */
            aload 3 /* file */
            invokeinterface javax.tools.FileObject.openInputStream:()Ljava/io/InputStream;
            invokevirtual java.util.Properties.load:(Ljava/io/InputStream;)V
         4: .line 223
            aload 2 /* p */
            invokevirtual java.util.Properties.keySet:()Ljava/util/Set;
            invokeinterface java.util.Set.size:()I
            iconst_4
            idiv
         5: ireturn
        end local 3 // javax.tools.FileObject file
         6: .line 224
      StackMap locals:
      StackMap stack: java.io.IOException
            pop
         7: .line 226
            iconst_0
            ireturn
        end local 2 // java.util.Properties p
        end local 1 // java.lang.String filename
        end local 0 // com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    8     0      this  Lcom/oracle/truffle/dsl/processor/InstrumentRegistrationProcessor;
            0    8     1  filename  Ljava/lang/String;
            0    8     2         p  Ljava/util/Properties;
            3    6     3      file  Ljavax/tools/FileObject;
      Exception table:
        from    to  target  type
           0     5       6  Class java.io.IOException
    MethodParameters:
          Name  Flags
      filename  
      p         
}
SourceFile: "InstrumentRegistrationProcessor.java"
NestMembers:
  com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor$1
InnerClasses:
  com.oracle.truffle.dsl.processor.InstrumentRegistrationProcessor$1
  public abstract Entry = java.util.Map$Entry of java.util.Map
  public abstract Location = javax.tools.JavaFileManager$Location of javax.tools.JavaFileManager
    RuntimeVisibleAnnotations: 
      javax.annotation.processing.SupportedAnnotationTypes(value = {"com.oracle.truffle.api.instrumentation.TruffleInstrument.Registration"})