abstract class com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor extends javax.annotation.processing.AbstractProcessor
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor
  super_class: javax.annotation.processing.AbstractProcessor
{
  private final java.util.Map<java.lang.String, javax.lang.model.element.Element> registrations;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/String;Ljavax/lang/model/element/Element;>;

  private final java.util.List<javax.lang.model.element.TypeElement> legacyRegistrations;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Ljavax/lang/model/element/TypeElement;>;

  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 91
            ldc Lcom/oracle/truffle/dsl/processor/AbstractRegistrationProcessor;
            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.dsl.processor.AbstractRegistrationProcessor.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor this
         0: .line 91
            aload 0 /* this */
            invokespecial javax.annotation.processing.AbstractProcessor.<init>:()V
         1: .line 93
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.registrations:Ljava/util/Map;
         2: .line 94
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.legacyRegistrations:Ljava/util/List;
         3: .line 91
            return
        end local 0 // com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/oracle/truffle/dsl/processor/AbstractRegistrationProcessor;

  public final javax.lang.model.SourceVersion getSupportedSourceVersion();
    descriptor: ()Ljavax/lang/model/SourceVersion;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor this
         0: .line 98
            invokestatic javax.lang.model.SourceVersion.latest:()Ljavax/lang/model/SourceVersion;
            areturn
        end local 0 // com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/dsl/processor/AbstractRegistrationProcessor;

  public final boolean process(java.util.Set<? extends javax.lang.model.element.TypeElement>, javax.annotation.processing.RoundEnvironment);
    descriptor: (Ljava/util/Set;Ljavax/annotation/processing/RoundEnvironment;)Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=7, locals=14, args_size=3
        start local 0 // com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor this
        start local 1 // java.util.Set annotations
        start local 2 // javax.annotation.processing.RoundEnvironment roundEnv
         0: .line 104
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.processingEnv:Ljavax/annotation/processing/ProcessingEnvironment;
            invokestatic com.oracle.truffle.dsl.processor.ProcessorContext.enter:(Ljavax/annotation/processing/ProcessingEnvironment;)Lcom/oracle/truffle/dsl/processor/ProcessorContext;
            pop
         1: .line 106
            invokestatic com.oracle.truffle.dsl.processor.ProcessorContext.getInstance:()Lcom/oracle/truffle/dsl/processor/ProcessorContext;
            astore 3 /* context */
        start local 3 // com.oracle.truffle.dsl.processor.ProcessorContext context
         2: .line 107
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.processingEnv:Ljavax/annotation/processing/ProcessingEnvironment;
            invokeinterface javax.annotation.processing.ProcessingEnvironment.getElementUtils:()Ljavax/lang/model/util/Elements;
            aload 3 /* context */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.getProviderClass:()Ljavax/lang/model/type/DeclaredType;
            invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getTypeElement:(Ljavax/lang/model/type/DeclaredType;)Ljavax/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;
            astore 4 /* providerServiceBinName */
        start local 4 // java.lang.String providerServiceBinName
         3: .line 108
            aload 2 /* roundEnv */
            invokeinterface javax.annotation.processing.RoundEnvironment.processingOver:()Z
            ifeq 10
         4: .line 109
            aload 4 /* providerServiceBinName */
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.registrations:Ljava/util/Map;
            invokestatic com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.generateServicesRegistration:(Ljava/lang/String;Ljava/util/Map;)V
         5: .line 110
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.legacyRegistrations:Ljava/util/List;
            invokevirtual com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.generateLegacyRegistration:(Ljava/util/List;)V
         6: .line 111
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.registrations:Ljava/util/Map;
            invokeinterface java.util.Map.clear:()V
         7: .line 112
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.legacyRegistrations:Ljava/util/List;
            invokeinterface java.util.List.clear:()V
         8: .line 142
            invokestatic com.oracle.truffle.dsl.processor.ProcessorContext.leave:()V
         9: .line 113
            iconst_1
            ireturn
        10: .line 115
      StackMap locals: com.oracle.truffle.dsl.processor.ProcessorContext java.lang.String
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            ldc Ljavax/annotation/processing/SupportedAnnotationTypes;
            invokevirtual java.lang.Class.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            checkcast javax.annotation.processing.SupportedAnnotationTypes
            invokeinterface javax.annotation.processing.SupportedAnnotationTypes.value:()[Ljava/lang/String;
            astore 5 /* supportedAnnotations */
        start local 5 // java.lang.String[] supportedAnnotations
        11: .line 116
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.processingEnv:Ljavax/annotation/processing/ProcessingEnvironment;
            invokeinterface javax.annotation.processing.ProcessingEnvironment.getElementUtils:()Ljavax/lang/model/util/Elements;
            aload 5 /* supportedAnnotations */
            iconst_0
            aaload
            invokeinterface javax.lang.model.util.Elements.getTypeElement:(Ljava/lang/CharSequence;)Ljavax/lang/model/element/TypeElement;
            astore 6 /* supportedAnnotation */
        start local 6 // javax.lang.model.element.TypeElement supportedAnnotation
        12: .line 117
            aload 6 /* supportedAnnotation */
            ifnonnull 14
        13: .line 118
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Cannot resolve "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* supportedAnnotations */
            iconst_0
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 120
      StackMap locals: java.lang.String[] javax.lang.model.element.TypeElement
      StackMap stack:
            aload 2 /* roundEnv */
            aload 6 /* supportedAnnotation */
            invokeinterface javax.annotation.processing.RoundEnvironment.getElementsAnnotatedWith:(Ljavax/lang/model/element/TypeElement;)Ljava/util/Set;
            astore 7 /* annotatedElements */
        start local 7 // java.util.Set annotatedElements
        15: .line 121
            aload 7 /* annotatedElements */
            invokeinterface java.util.Set.isEmpty:()Z
            ifne 30
        16: .line 122
            aload 7 /* annotatedElements */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 9
            goto 29
      StackMap locals: com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor java.util.Set javax.annotation.processing.RoundEnvironment com.oracle.truffle.dsl.processor.ProcessorContext java.lang.String java.lang.String[] javax.lang.model.element.TypeElement java.util.Set top java.util.Iterator
      StackMap stack:
        17: aload 9
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast javax.lang.model.element.Element
            astore 8 /* e */
        start local 8 // javax.lang.model.element.Element e
        18: .line 123
            aload 8 /* e */
            aload 6 /* supportedAnnotation */
            invokeinterface javax.lang.model.element.TypeElement.asType:()Ljavax/lang/model/type/TypeMirror;
            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 10 /* mirror */
        start local 10 // javax.lang.model.element.AnnotationMirror mirror
        19: .line 124
            aload 10 /* mirror */
            ifnull 29
            aload 8 /* e */
            invokeinterface javax.lang.model.element.Element.getKind:()Ljavax/lang/model/element/ElementKind;
            getstatic javax.lang.model.element.ElementKind.CLASS:Ljavax/lang/model/element/ElementKind;
            if_acmpne 29
        20: .line 125
            aload 0 /* this */
            aload 8 /* e */
            aload 10 /* mirror */
            invokevirtual com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.validateRegistration:(Ljavax/lang/model/element/Element;Ljavax/lang/model/element/AnnotationMirror;)Z
            ifeq 29
        21: .line 126
            aload 8 /* e */
            checkcast javax.lang.model.element.TypeElement
            astore 11 /* annotatedElement */
        start local 11 // javax.lang.model.element.TypeElement annotatedElement
        22: .line 127
            aload 11 /* annotatedElement */
            invokestatic com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.requiresLegacyRegistration:(Ljavax/lang/model/element/TypeElement;)Z
            ifeq 25
        23: .line 128
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.legacyRegistrations:Ljava/util/List;
            aload 11 /* annotatedElement */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        24: .line 129
            goto 29
        25: .line 130
      StackMap locals: com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor java.util.Set javax.annotation.processing.RoundEnvironment com.oracle.truffle.dsl.processor.ProcessorContext java.lang.String java.lang.String[] javax.lang.model.element.TypeElement java.util.Set javax.lang.model.element.Element java.util.Iterator javax.lang.model.element.AnnotationMirror javax.lang.model.element.TypeElement
      StackMap stack:
            aload 0 /* this */
            aload 11 /* annotatedElement */
            invokevirtual com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.generateProvider:(Ljavax/lang/model/element/TypeElement;)Ljava/lang/String;
            astore 12 /* providerImplBinName */
        start local 12 // java.lang.String providerImplBinName
        26: .line 131
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.registrations:Ljava/util/Map;
            aload 12 /* providerImplBinName */
            aload 11 /* annotatedElement */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        27: .line 132
            aload 11 /* annotatedElement */
            invokestatic com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.shouldGenerateProviderFiles:(Ljavax/lang/model/element/Element;)Z
            ifeq 29
        28: .line 133
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.processingEnv:Ljavax/annotation/processing/ProcessingEnvironment;
            aload 12 /* providerImplBinName */
            aload 4 /* providerServiceBinName */
            iconst_1
            anewarray javax.lang.model.element.Element
            dup
            iconst_0
            aload 11 /* annotatedElement */
            aastore
            invokestatic com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.generateProviderFile:(Ljavax/annotation/processing/ProcessingEnvironment;Ljava/lang/String;Ljava/lang/String;[Ljavax/lang/model/element/Element;)V
        end local 12 // java.lang.String providerImplBinName
        end local 11 // javax.lang.model.element.TypeElement annotatedElement
        end local 10 // javax.lang.model.element.AnnotationMirror mirror
        end local 8 // javax.lang.model.element.Element e
        29: .line 122
      StackMap locals: com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor java.util.Set javax.annotation.processing.RoundEnvironment com.oracle.truffle.dsl.processor.ProcessorContext java.lang.String java.lang.String[] javax.lang.model.element.TypeElement java.util.Set top java.util.Iterator
      StackMap stack:
            aload 9
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 17
        30: .line 142
      StackMap locals: com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor java.util.Set javax.annotation.processing.RoundEnvironment com.oracle.truffle.dsl.processor.ProcessorContext java.lang.String java.lang.String[] javax.lang.model.element.TypeElement java.util.Set
      StackMap stack:
            invokestatic com.oracle.truffle.dsl.processor.ProcessorContext.leave:()V
        31: .line 140
            iconst_1
            ireturn
        end local 7 // java.util.Set annotatedElements
        end local 6 // javax.lang.model.element.TypeElement supportedAnnotation
        end local 5 // java.lang.String[] supportedAnnotations
        end local 4 // java.lang.String providerServiceBinName
        end local 3 // com.oracle.truffle.dsl.processor.ProcessorContext context
        32: .line 141
      StackMap locals: com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor java.util.Set javax.annotation.processing.RoundEnvironment
      StackMap stack: java.lang.Throwable
            astore 13
        33: .line 142
            invokestatic com.oracle.truffle.dsl.processor.ProcessorContext.leave:()V
        34: .line 143
            aload 13
            athrow
        end local 2 // javax.annotation.processing.RoundEnvironment roundEnv
        end local 1 // java.util.Set annotations
        end local 0 // com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   35     0                    this  Lcom/oracle/truffle/dsl/processor/AbstractRegistrationProcessor;
            0   35     1             annotations  Ljava/util/Set<+Ljavax/lang/model/element/TypeElement;>;
            0   35     2                roundEnv  Ljavax/annotation/processing/RoundEnvironment;
            2   32     3                 context  Lcom/oracle/truffle/dsl/processor/ProcessorContext;
            3   32     4  providerServiceBinName  Ljava/lang/String;
           11   32     5    supportedAnnotations  [Ljava/lang/String;
           12   32     6     supportedAnnotation  Ljavax/lang/model/element/TypeElement;
           15   32     7       annotatedElements  Ljava/util/Set<+Ljavax/lang/model/element/Element;>;
           18   29     8                       e  Ljavax/lang/model/element/Element;
           19   29    10                  mirror  Ljavax/lang/model/element/AnnotationMirror;
           22   29    11        annotatedElement  Ljavax/lang/model/element/TypeElement;
           26   29    12     providerImplBinName  Ljava/lang/String;
      Exception table:
        from    to  target  type
           1     8      32  any
          10    30      32  any
    Signature: (Ljava/util/Set<+Ljavax/lang/model/element/TypeElement;>;Ljavax/annotation/processing/RoundEnvironment;)Z
    MethodParameters:
             Name  Flags
      annotations  
      roundEnv     

  abstract 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: (0x0400) ACC_ABSTRACT
    MethodParameters:
                    Name  Flags
      annotatedElement    
      registrationMirror  

  abstract javax.lang.model.type.DeclaredType getProviderClass();
    descriptor: ()Ljavax/lang/model/type/DeclaredType;
    flags: (0x0400) ACC_ABSTRACT

  abstract java.lang.Iterable<javax.lang.model.element.AnnotationMirror> getProviderAnnotations(javax.lang.model.element.TypeElement);
    descriptor: (Ljavax/lang/model/element/TypeElement;)Ljava/lang/Iterable;
    flags: (0x0400) ACC_ABSTRACT
    Signature: (Ljavax/lang/model/element/TypeElement;)Ljava/lang/Iterable<Ljavax/lang/model/element/AnnotationMirror;>;
    MethodParameters:
                  Name  Flags
      annotatedElement  

  abstract 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: (0x0400) ACC_ABSTRACT
    MethodParameters:
                   Name  Flags
      annotatedElement   
      methodToImplement  

  abstract java.lang.String getRegistrationFileName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0400) ACC_ABSTRACT

  abstract void storeRegistrations(java.util.Properties, java.lang.Iterable<? extends javax.lang.model.element.TypeElement>);
    descriptor: (Ljava/util/Properties;Ljava/lang/Iterable;)V
    flags: (0x0400) ACC_ABSTRACT
    Signature: (Ljava/util/Properties;Ljava/lang/Iterable<+Ljavax/lang/model/element/TypeElement;>;)V
    MethodParameters:
                   Name  Flags
      into               
      annotatedElements  

  final void assertNoErrorExpected(javax.lang.model.element.Element);
    descriptor: (Ljavax/lang/model/element/Element;)V
    flags: (0x0010) ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor this
        start local 1 // javax.lang.model.element.Element e
         0: .line 159
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.processingEnv:Ljavax/annotation/processing/ProcessingEnvironment;
            aload 1 /* e */
            invokestatic com.oracle.truffle.dsl.processor.ExpectError.assertNoErrorExpected:(Ljavax/annotation/processing/ProcessingEnvironment;Ljavax/lang/model/element/Element;)V
         1: .line 160
            return
        end local 1 // javax.lang.model.element.Element e
        end local 0 // com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/dsl/processor/AbstractRegistrationProcessor;
            0    2     1     e  Ljavax/lang/model/element/Element;
    MethodParameters:
      Name  Flags
      e     

  final void emitError(java.lang.String, javax.lang.model.element.Element);
    descriptor: (Ljava/lang/String;Ljavax/lang/model/element/Element;)V
    flags: (0x0010) ACC_FINAL
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor this
        start local 1 // java.lang.String msg
        start local 2 // javax.lang.model.element.Element e
         0: .line 163
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.processingEnv:Ljavax/annotation/processing/ProcessingEnvironment;
            aload 2 /* e */
            aload 1 /* msg */
            invokestatic com.oracle.truffle.dsl.processor.ExpectError.isExpectedError:(Ljavax/annotation/processing/ProcessingEnvironment;Ljavax/lang/model/element/Element;Ljava/lang/String;)Z
            ifeq 2
         1: .line 164
            return
         2: .line 166
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.processingEnv:Ljavax/annotation/processing/ProcessingEnvironment;
            invokeinterface javax.annotation.processing.ProcessingEnvironment.getMessager:()Ljavax/annotation/processing/Messager;
            getstatic javax.tools.Diagnostic$Kind.ERROR:Ljavax/tools/Diagnostic$Kind;
            aload 1 /* msg */
            aload 2 /* e */
            invokeinterface javax.annotation.processing.Messager.printMessage:(Ljavax/tools/Diagnostic$Kind;Ljava/lang/CharSequence;Ljavax/lang/model/element/Element;)V
         3: .line 167
            return
        end local 2 // javax.lang.model.element.Element e
        end local 1 // java.lang.String msg
        end local 0 // com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/oracle/truffle/dsl/processor/AbstractRegistrationProcessor;
            0    4     1   msg  Ljava/lang/String;
            0    4     2     e  Ljavax/lang/model/element/Element;
    MethodParameters:
      Name  Flags
      msg   
      e     

  final void emitError(java.lang.String, javax.lang.model.element.Element, javax.lang.model.element.AnnotationMirror, javax.lang.model.element.AnnotationValue);
    descriptor: (Ljava/lang/String;Ljavax/lang/model/element/Element;Ljavax/lang/model/element/AnnotationMirror;Ljavax/lang/model/element/AnnotationValue;)V
    flags: (0x0010) ACC_FINAL
    Code:
      stack=6, locals=5, args_size=5
        start local 0 // com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor this
        start local 1 // java.lang.String msg
        start local 2 // javax.lang.model.element.Element e
        start local 3 // javax.lang.model.element.AnnotationMirror mirror
        start local 4 // javax.lang.model.element.AnnotationValue value
         0: .line 170
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.processingEnv:Ljavax/annotation/processing/ProcessingEnvironment;
            aload 2 /* e */
            aload 1 /* msg */
            invokestatic com.oracle.truffle.dsl.processor.ExpectError.isExpectedError:(Ljavax/annotation/processing/ProcessingEnvironment;Ljavax/lang/model/element/Element;Ljava/lang/String;)Z
            ifeq 2
         1: .line 171
            return
         2: .line 173
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.processingEnv:Ljavax/annotation/processing/ProcessingEnvironment;
            invokeinterface javax.annotation.processing.ProcessingEnvironment.getMessager:()Ljavax/annotation/processing/Messager;
            getstatic javax.tools.Diagnostic$Kind.ERROR:Ljavax/tools/Diagnostic$Kind;
            aload 1 /* msg */
            aload 2 /* e */
            aload 3 /* mirror */
            aload 4 /* value */
            invokeinterface javax.annotation.processing.Messager.printMessage:(Ljavax/tools/Diagnostic$Kind;Ljava/lang/CharSequence;Ljavax/lang/model/element/Element;Ljavax/lang/model/element/AnnotationMirror;Ljavax/lang/model/element/AnnotationValue;)V
         3: .line 174
            return
        end local 4 // javax.lang.model.element.AnnotationValue value
        end local 3 // javax.lang.model.element.AnnotationMirror mirror
        end local 2 // javax.lang.model.element.Element e
        end local 1 // java.lang.String msg
        end local 0 // com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lcom/oracle/truffle/dsl/processor/AbstractRegistrationProcessor;
            0    4     1     msg  Ljava/lang/String;
            0    4     2       e  Ljavax/lang/model/element/Element;
            0    4     3  mirror  Ljavax/lang/model/element/AnnotationMirror;
            0    4     4   value  Ljavax/lang/model/element/AnnotationValue;
    MethodParameters:
        Name  Flags
      msg     
      e       
      mirror  
      value   

  final void emitWarning(java.lang.String, javax.lang.model.element.Element);
    descriptor: (Ljava/lang/String;Ljavax/lang/model/element/Element;)V
    flags: (0x0010) ACC_FINAL
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor this
        start local 1 // java.lang.String msg
        start local 2 // javax.lang.model.element.Element e
         0: .line 177
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.processingEnv:Ljavax/annotation/processing/ProcessingEnvironment;
            aload 2 /* e */
            aload 1 /* msg */
            invokestatic com.oracle.truffle.dsl.processor.ExpectError.isExpectedError:(Ljavax/annotation/processing/ProcessingEnvironment;Ljavax/lang/model/element/Element;Ljava/lang/String;)Z
            ifeq 2
         1: .line 178
            return
         2: .line 180
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.processingEnv:Ljavax/annotation/processing/ProcessingEnvironment;
            invokeinterface javax.annotation.processing.ProcessingEnvironment.getMessager:()Ljavax/annotation/processing/Messager;
            getstatic javax.tools.Diagnostic$Kind.WARNING:Ljavax/tools/Diagnostic$Kind;
            aload 1 /* msg */
            aload 2 /* e */
            invokeinterface javax.annotation.processing.Messager.printMessage:(Ljavax/tools/Diagnostic$Kind;Ljava/lang/CharSequence;Ljavax/lang/model/element/Element;)V
         3: .line 181
            return
        end local 2 // javax.lang.model.element.Element e
        end local 1 // java.lang.String msg
        end local 0 // com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/oracle/truffle/dsl/processor/AbstractRegistrationProcessor;
            0    4     1   msg  Ljava/lang/String;
            0    4     2     e  Ljavax/lang/model/element/Element;
    MethodParameters:
      Name  Flags
      msg   
      e     

  final void emitWarning(java.lang.String, javax.lang.model.element.Element, javax.lang.model.element.AnnotationMirror, javax.lang.model.element.AnnotationValue);
    descriptor: (Ljava/lang/String;Ljavax/lang/model/element/Element;Ljavax/lang/model/element/AnnotationMirror;Ljavax/lang/model/element/AnnotationValue;)V
    flags: (0x0010) ACC_FINAL
    Code:
      stack=6, locals=5, args_size=5
        start local 0 // com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor this
        start local 1 // java.lang.String msg
        start local 2 // javax.lang.model.element.Element e
        start local 3 // javax.lang.model.element.AnnotationMirror mirror
        start local 4 // javax.lang.model.element.AnnotationValue value
         0: .line 184
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.processingEnv:Ljavax/annotation/processing/ProcessingEnvironment;
            aload 2 /* e */
            aload 1 /* msg */
            invokestatic com.oracle.truffle.dsl.processor.ExpectError.isExpectedError:(Ljavax/annotation/processing/ProcessingEnvironment;Ljavax/lang/model/element/Element;Ljava/lang/String;)Z
            ifeq 2
         1: .line 185
            return
         2: .line 187
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.processingEnv:Ljavax/annotation/processing/ProcessingEnvironment;
            invokeinterface javax.annotation.processing.ProcessingEnvironment.getMessager:()Ljavax/annotation/processing/Messager;
            getstatic javax.tools.Diagnostic$Kind.WARNING:Ljavax/tools/Diagnostic$Kind;
            aload 1 /* msg */
            aload 2 /* e */
            aload 3 /* mirror */
            aload 4 /* value */
            invokeinterface javax.annotation.processing.Messager.printMessage:(Ljavax/tools/Diagnostic$Kind;Ljava/lang/CharSequence;Ljavax/lang/model/element/Element;Ljavax/lang/model/element/AnnotationMirror;Ljavax/lang/model/element/AnnotationValue;)V
         3: .line 188
            return
        end local 4 // javax.lang.model.element.AnnotationValue value
        end local 3 // javax.lang.model.element.AnnotationMirror mirror
        end local 2 // javax.lang.model.element.Element e
        end local 1 // java.lang.String msg
        end local 0 // com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lcom/oracle/truffle/dsl/processor/AbstractRegistrationProcessor;
            0    4     1     msg  Ljava/lang/String;
            0    4     2       e  Ljavax/lang/model/element/Element;
            0    4     3  mirror  Ljavax/lang/model/element/AnnotationMirror;
            0    4     4   value  Ljavax/lang/model/element/AnnotationValue;
    MethodParameters:
        Name  Flags
      msg     
      e       
      mirror  
      value   

  static javax.lang.model.element.AnnotationMirror copyAnnotations(javax.lang.model.element.AnnotationMirror, java.util.function.Predicate<javax.lang.model.element.ExecutableElement>);
    descriptor: (Ljavax/lang/model/element/AnnotationMirror;Ljava/util/function/Predicate;)Ljavax/lang/model/element/AnnotationMirror;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=7, args_size=2
        start local 0 // javax.lang.model.element.AnnotationMirror mirror
        start local 1 // java.util.function.Predicate filter
         0: .line 191
            new com.oracle.truffle.dsl.processor.java.model.CodeAnnotationMirror
            dup
            aload 0 /* mirror */
            invokeinterface javax.lang.model.element.AnnotationMirror.getAnnotationType:()Ljavax/lang/model/type/DeclaredType;
            invokespecial com.oracle.truffle.dsl.processor.java.model.CodeAnnotationMirror.<init>:(Ljavax/lang/model/type/DeclaredType;)V
            astore 2 /* res */
        start local 2 // com.oracle.truffle.dsl.processor.java.model.CodeAnnotationMirror res
         1: .line 192
            aload 0 /* mirror */
            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 4
            goto 7
      StackMap locals: javax.lang.model.element.AnnotationMirror java.util.function.Predicate com.oracle.truffle.dsl.processor.java.model.CodeAnnotationMirror top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 3 /* e */
        start local 3 // java.util.Map$Entry e
         3: .line 193
            aload 3 /* e */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast javax.lang.model.element.ExecutableElement
            astore 5 /* executable */
        start local 5 // javax.lang.model.element.ExecutableElement executable
         4: .line 194
            aload 3 /* e */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast javax.lang.model.element.AnnotationValue
            astore 6 /* value */
        start local 6 // javax.lang.model.element.AnnotationValue value
         5: .line 195
            aload 1 /* filter */
            aload 5 /* executable */
            invokeinterface java.util.function.Predicate.test:(Ljava/lang/Object;)Z
            ifeq 7
         6: .line 196
            aload 2 /* res */
            aload 5 /* executable */
            aload 6 /* value */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeAnnotationMirror.setElementValue:(Ljavax/lang/model/element/ExecutableElement;Ljavax/lang/model/element/AnnotationValue;)V
        end local 6 // javax.lang.model.element.AnnotationValue value
        end local 5 // javax.lang.model.element.ExecutableElement executable
        end local 3 // java.util.Map$Entry e
         7: .line 192
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         8: .line 199
            aload 2 /* res */
            areturn
        end local 2 // com.oracle.truffle.dsl.processor.java.model.CodeAnnotationMirror res
        end local 1 // java.util.function.Predicate filter
        end local 0 // javax.lang.model.element.AnnotationMirror mirror
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0      mirror  Ljavax/lang/model/element/AnnotationMirror;
            0    9     1      filter  Ljava/util/function/Predicate<Ljavax/lang/model/element/ExecutableElement;>;
            1    9     2         res  Lcom/oracle/truffle/dsl/processor/java/model/CodeAnnotationMirror;
            3    7     3           e  Ljava/util/Map$Entry<+Ljavax/lang/model/element/ExecutableElement;+Ljavax/lang/model/element/AnnotationValue;>;
            4    7     5  executable  Ljavax/lang/model/element/ExecutableElement;
            5    7     6       value  Ljavax/lang/model/element/AnnotationValue;
    Signature: (Ljavax/lang/model/element/AnnotationMirror;Ljava/util/function/Predicate<Ljavax/lang/model/element/ExecutableElement;>;)Ljavax/lang/model/element/AnnotationMirror;
    MethodParameters:
        Name  Flags
      mirror  
      filter  

  private static boolean requiresLegacyRegistration(javax.lang.model.element.TypeElement);
    descriptor: (Ljavax/lang/model/element/TypeElement;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // javax.lang.model.element.TypeElement annotatedElement
         0: .line 203
            aload 0 /* annotatedElement */
            invokeinterface javax.lang.model.element.TypeElement.getAnnotationMirrors:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 2
            goto 5
      StackMap locals: javax.lang.model.element.TypeElement top java.util.Iterator
      StackMap stack:
         1: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast javax.lang.model.element.AnnotationMirror
            astore 1 /* mirror */
        start local 1 // javax.lang.model.element.AnnotationMirror mirror
         2: .line 204
            aload 1 /* mirror */
            invokeinterface javax.lang.model.element.AnnotationMirror.getAnnotationType:()Ljavax/lang/model/type/DeclaredType;
            invokeinterface javax.lang.model.type.DeclaredType.asElement:()Ljavax/lang/model/element/Element;
            astore 3 /* annotationType */
        start local 3 // javax.lang.model.element.Element annotationType
         3: .line 205
            ldc "GenerateLegacyRegistration"
            aload 3 /* annotationType */
            invokeinterface javax.lang.model.element.Element.getSimpleName:()Ljavax/lang/model/element/Name;
            invokevirtual java.lang.String.contentEquals:(Ljava/lang/CharSequence;)Z
            ifeq 5
         4: .line 206
            iconst_1
            ireturn
        end local 3 // javax.lang.model.element.Element annotationType
        end local 1 // javax.lang.model.element.AnnotationMirror mirror
         5: .line 203
      StackMap locals:
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         6: .line 209
            iconst_0
            ireturn
        end local 0 // javax.lang.model.element.TypeElement annotatedElement
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    7     0  annotatedElement  Ljavax/lang/model/element/TypeElement;
            2    5     1            mirror  Ljavax/lang/model/element/AnnotationMirror;
            3    5     3    annotationType  Ljavax/lang/model/element/Element;
    MethodParameters:
                  Name  Flags
      annotatedElement  

  private java.lang.String generateProvider(javax.lang.model.element.TypeElement);
    descriptor: (Ljavax/lang/model/element/TypeElement;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=9, args_size=2
        start local 0 // com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor this
        start local 1 // javax.lang.model.element.TypeElement annotatedElement
         0: .line 213
            invokestatic com.oracle.truffle.dsl.processor.ProcessorContext.getInstance:()Lcom/oracle/truffle/dsl/processor/ProcessorContext;
            astore 2 /* context */
        start local 2 // com.oracle.truffle.dsl.processor.ProcessorContext context
         1: .line 214
            new com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor$1
            dup
            aload 0 /* this */
            aload 2 /* context */
            aload 1 /* annotatedElement */
            aconst_null
            invokespecial com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor$1.<init>:(Lcom/oracle/truffle/dsl/processor/AbstractRegistrationProcessor;Lcom/oracle/truffle/dsl/processor/ProcessorContext;Ljavax/lang/model/element/TypeElement;Ljavax/lang/model/element/AnnotationMirror;)V
            astore 3 /* model */
        start local 3 // com.oracle.truffle.dsl.processor.model.Template model
         2: .line 216
            aload 2 /* context */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.getProviderClass:()Ljavax/lang/model/type/DeclaredType;
            invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getTypeElement:(Ljavax/lang/model/type/DeclaredType;)Ljavax/lang/model/element/TypeElement;
            astore 4 /* providerElement */
        start local 4 // javax.lang.model.element.TypeElement providerElement
         3: .line 217
            aload 3 /* model */
            aconst_null
            getstatic javax.lang.model.element.Modifier.PUBLIC:Ljavax/lang/model/element/Modifier;
            invokestatic java.util.EnumSet.of:(Ljava/lang/Enum;)Ljava/util/EnumSet;
         4: .line 218
            aload 1 /* annotatedElement */
            invokestatic com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.createProviderSimpleName:(Ljavax/lang/model/element/TypeElement;)Ljava/lang/String;
            aconst_null
         5: .line 217
            invokestatic com.oracle.truffle.dsl.processor.generator.GeneratorUtils.createClass:(Lcom/oracle/truffle/dsl/processor/model/Template;Lcom/oracle/truffle/dsl/processor/model/TemplateMethod;Ljava/util/Set;Ljava/lang/String;Ljavax/lang/model/type/TypeMirror;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTypeElement;
            astore 5 /* providerClass */
        start local 5 // com.oracle.truffle.dsl.processor.java.model.CodeTypeElement providerClass
         6: .line 219
            aload 5 /* providerClass */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTypeElement.getModifiers:()Ljava/util/Set;
            getstatic javax.lang.model.element.Modifier.FINAL:Ljavax/lang/model/element/Modifier;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         7: .line 220
            aload 5 /* providerClass */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTypeElement.getImplements:()Ljava/util/List;
            aload 4 /* providerElement */
            invokeinterface javax.lang.model.element.TypeElement.asType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         8: .line 221
            aload 4 /* providerElement */
            invokeinterface javax.lang.model.element.TypeElement.getEnclosedElements:()Ljava/util/List;
            invokestatic javax.lang.model.util.ElementFilter.methodsIn:(Ljava/lang/Iterable;)Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 7
            goto 14
      StackMap locals: com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor javax.lang.model.element.TypeElement com.oracle.truffle.dsl.processor.ProcessorContext com.oracle.truffle.dsl.processor.model.Template javax.lang.model.element.TypeElement com.oracle.truffle.dsl.processor.java.model.CodeTypeElement top java.util.Iterator
      StackMap stack:
         9: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast javax.lang.model.element.Element
            astore 6 /* method */
        start local 6 // javax.lang.model.element.Element method
        10: .line 222
            aload 6 /* method */
            checkcast javax.lang.model.element.ExecutableElement
            invokestatic com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.clone:(Ljavax/lang/model/element/ExecutableElement;)Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;
            astore 8 /* implementedMethod */
        start local 8 // com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement implementedMethod
        11: .line 223
            aload 8 /* implementedMethod */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.getModifiers:()Ljava/util/Set;
            getstatic javax.lang.model.element.Modifier.ABSTRACT:Ljavax/lang/model/element/Modifier;
            invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
            pop
        12: .line 224
            aload 0 /* this */
            aload 1 /* annotatedElement */
            aload 8 /* implementedMethod */
            invokevirtual com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.implementMethod:(Ljavax/lang/model/element/TypeElement;Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;)V
        13: .line 225
            aload 5 /* providerClass */
            aload 8 /* implementedMethod */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTypeElement.add:(Ljavax/lang/model/element/Element;)Ljavax/lang/model/element/Element;
            pop
        end local 8 // com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement implementedMethod
        end local 6 // javax.lang.model.element.Element method
        14: .line 221
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 9
        15: .line 228
            aload 0 /* this */
            aload 1 /* annotatedElement */
            invokevirtual com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.getProviderAnnotations:(Ljavax/lang/model/element/TypeElement;)Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 7
            goto 18
      StackMap locals:
      StackMap stack:
        16: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast javax.lang.model.element.AnnotationMirror
            astore 6 /* annotationMirror */
        start local 6 // javax.lang.model.element.AnnotationMirror annotationMirror
        17: .line 229
            aload 5 /* providerClass */
            aload 6 /* annotationMirror */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTypeElement.addAnnotationMirror:(Ljavax/lang/model/element/AnnotationMirror;)V
        end local 6 // javax.lang.model.element.AnnotationMirror annotationMirror
        18: .line 228
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 16
        19: .line 231
            aload 2 /* context */
            ldc Ljava/lang/Override;
            invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getType:(Ljava/lang/Class;)Ljavax/lang/model/type/TypeMirror;
            checkcast javax.lang.model.type.DeclaredType
            astore 6 /* overrideType */
        start local 6 // javax.lang.model.type.DeclaredType overrideType
        20: .line 232
            aload 5 /* providerClass */
            new com.oracle.truffle.dsl.processor.java.transform.GenerateOverrideVisitor
            dup
            aload 6 /* overrideType */
            invokespecial com.oracle.truffle.dsl.processor.java.transform.GenerateOverrideVisitor.<init>:(Ljavax/lang/model/type/DeclaredType;)V
            aconst_null
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTypeElement.accept:(Ljavax/lang/model/element/ElementVisitor;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        21: .line 233
            aload 5 /* providerClass */
            new com.oracle.truffle.dsl.processor.java.transform.FixWarningsVisitor
            dup
            aload 1 /* annotatedElement */
            aload 6 /* overrideType */
            invokespecial com.oracle.truffle.dsl.processor.java.transform.FixWarningsVisitor.<init>:(Ljavax/lang/model/element/Element;Ljavax/lang/model/type/DeclaredType;)V
            aconst_null
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTypeElement.accept:(Ljavax/lang/model/element/ElementVisitor;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        22: .line 234
            aload 5 /* providerClass */
            new com.oracle.truffle.dsl.processor.CodeWriter
            dup
            aload 2 /* context */
            invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getEnvironment:()Ljavax/annotation/processing/ProcessingEnvironment;
            aload 1 /* annotatedElement */
            invokespecial com.oracle.truffle.dsl.processor.CodeWriter.<init>:(Ljavax/annotation/processing/ProcessingEnvironment;Ljavax/lang/model/element/Element;)V
            aconst_null
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTypeElement.accept:(Ljavax/lang/model/element/ElementVisitor;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        23: .line 235
            aload 5 /* providerClass */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTypeElement.getQualifiedName:()Ljavax/lang/model/element/Name;
            invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
            areturn
        end local 6 // javax.lang.model.type.DeclaredType overrideType
        end local 5 // com.oracle.truffle.dsl.processor.java.model.CodeTypeElement providerClass
        end local 4 // javax.lang.model.element.TypeElement providerElement
        end local 3 // com.oracle.truffle.dsl.processor.model.Template model
        end local 2 // com.oracle.truffle.dsl.processor.ProcessorContext context
        end local 1 // javax.lang.model.element.TypeElement annotatedElement
        end local 0 // com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   24     0               this  Lcom/oracle/truffle/dsl/processor/AbstractRegistrationProcessor;
            0   24     1   annotatedElement  Ljavax/lang/model/element/TypeElement;
            1   24     2            context  Lcom/oracle/truffle/dsl/processor/ProcessorContext;
            2   24     3              model  Lcom/oracle/truffle/dsl/processor/model/Template;
            3   24     4    providerElement  Ljavax/lang/model/element/TypeElement;
            6   24     5      providerClass  Lcom/oracle/truffle/dsl/processor/java/model/CodeTypeElement;
           10   14     6             method  Ljavax/lang/model/element/Element;
           11   14     8  implementedMethod  Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;
           17   18     6   annotationMirror  Ljavax/lang/model/element/AnnotationMirror;
           20   24     6       overrideType  Ljavax/lang/model/type/DeclaredType;
    MethodParameters:
                  Name  Flags
      annotatedElement  

  private static java.lang.String createProviderSimpleName(javax.lang.model.element.TypeElement);
    descriptor: (Ljavax/lang/model/element/TypeElement;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=5, args_size=1
        start local 0 // javax.lang.model.element.TypeElement annotatedElement
         0: .line 239
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 1 /* nameBuilder */
        start local 1 // java.lang.StringBuilder nameBuilder
         1: .line 240
            aload 0 /* annotatedElement */
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.getElementHierarchy:(Ljavax/lang/model/element/Element;)Ljava/util/List;
            astore 2 /* hierarchy */
        start local 2 // java.util.List hierarchy
         2: .line 241
            aload 2 /* hierarchy */
            aload 2 /* hierarchy */
            invokeinterface java.util.List.size:()I
            invokeinterface java.util.List.listIterator:(I)Ljava/util/ListIterator;
            astore 3 /* it */
        start local 3 // java.util.ListIterator it
         3: goto 7
         4: .line 242
      StackMap locals: java.lang.StringBuilder java.util.List java.util.ListIterator
      StackMap stack:
            aload 3 /* it */
            invokeinterface java.util.ListIterator.previous:()Ljava/lang/Object;
            checkcast javax.lang.model.element.Element
            astore 4 /* enc */
        start local 4 // javax.lang.model.element.Element enc
         5: .line 243
            aload 4 /* enc */
            invokeinterface javax.lang.model.element.Element.getKind:()Ljavax/lang/model/element/ElementKind;
            invokevirtual javax.lang.model.element.ElementKind.isClass:()Z
            ifne 6
            aload 4 /* enc */
            invokeinterface javax.lang.model.element.Element.getKind:()Ljavax/lang/model/element/ElementKind;
            invokevirtual javax.lang.model.element.ElementKind.isInterface:()Z
            ifeq 7
         6: .line 244
      StackMap locals: javax.lang.model.element.Element
      StackMap stack:
            aload 1 /* nameBuilder */
            aload 4 /* enc */
            invokeinterface javax.lang.model.element.Element.getSimpleName:()Ljavax/lang/model/element/Name;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/CharSequence;)Ljava/lang/StringBuilder;
            pop
        end local 4 // javax.lang.model.element.Element enc
         7: .line 241
      StackMap locals:
      StackMap stack:
            aload 3 /* it */
            invokeinterface java.util.ListIterator.hasPrevious:()Z
            ifne 4
        end local 3 // java.util.ListIterator it
         8: .line 247
            aload 1 /* nameBuilder */
            ldc "Provider"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         9: .line 248
            aload 1 /* nameBuilder */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 2 // java.util.List hierarchy
        end local 1 // java.lang.StringBuilder nameBuilder
        end local 0 // javax.lang.model.element.TypeElement annotatedElement
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   10     0  annotatedElement  Ljavax/lang/model/element/TypeElement;
            1   10     1       nameBuilder  Ljava/lang/StringBuilder;
            2   10     2         hierarchy  Ljava/util/List<Ljavax/lang/model/element/Element;>;
            3    8     3                it  Ljava/util/ListIterator<Ljavax/lang/model/element/Element;>;
            5    7     4               enc  Ljavax/lang/model/element/Element;
    MethodParameters:
                  Name  Flags
      annotatedElement  

  static void generateProviderFile(javax.annotation.processing.ProcessingEnvironment, java.lang.String, java.lang.String, javax.lang.model.element.Element[]);
    descriptor: (Ljavax/annotation/processing/ProcessingEnvironment;Ljava/lang/String;Ljava/lang/String;[Ljavax/lang/model/element/Element;)V
    flags: (0x0088) ACC_STATIC, ACC_VARARGS
    Code:
      stack=6, locals=7, args_size=4
        start local 0 // javax.annotation.processing.ProcessingEnvironment env
        start local 1 // java.lang.String providerClassName
        start local 2 // java.lang.String serviceClassName
        start local 3 // javax.lang.model.element.Element[] originatingElements
         0: .line 252
            getstatic com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.$assertionsDisabled:Z
            ifne 1
            aload 3 /* originatingElements */
            arraylength
            ifgt 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 253
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "META-INF/truffle-registrations/"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* providerClassName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 4 /* filename */
        start local 4 // java.lang.String filename
         2: .line 255
            aload 0 /* env */
            invokeinterface javax.annotation.processing.ProcessingEnvironment.getFiler:()Ljavax/annotation/processing/Filer;
            getstatic javax.tools.StandardLocation.CLASS_OUTPUT:Ljavax/tools/StandardLocation;
            ldc ""
            aload 4 /* filename */
            aload 3 /* originatingElements */
            invokeinterface javax.annotation.processing.Filer.createResource:(Ljavax/tools/JavaFileManager$Location;Ljava/lang/CharSequence;Ljava/lang/CharSequence;[Ljavax/lang/model/element/Element;)Ljavax/tools/FileObject;
            astore 5 /* file */
        start local 5 // javax.tools.FileObject file
         3: .line 256
            new java.io.PrintWriter
            dup
            new java.io.OutputStreamWriter
            dup
            aload 5 /* file */
            invokeinterface javax.tools.FileObject.openOutputStream:()Ljava/io/OutputStream;
            ldc "UTF-8"
            invokespecial java.io.OutputStreamWriter.<init>:(Ljava/io/OutputStream;Ljava/lang/String;)V
            invokespecial java.io.PrintWriter.<init>:(Ljava/io/Writer;)V
            astore 6 /* writer */
        start local 6 // java.io.PrintWriter writer
         4: .line 257
            aload 6 /* writer */
            aload 2 /* serviceClassName */
            invokevirtual java.io.PrintWriter.println:(Ljava/lang/String;)V
         5: .line 258
            aload 6 /* writer */
            invokevirtual java.io.PrintWriter.close:()V
        end local 6 // java.io.PrintWriter writer
        end local 5 // javax.tools.FileObject file
         6: .line 259
            goto 9
      StackMap locals: javax.annotation.processing.ProcessingEnvironment java.lang.String java.lang.String javax.lang.model.element.Element[] java.lang.String
      StackMap stack: java.io.IOException
         7: astore 5 /* e */
        start local 5 // java.io.IOException e
         8: .line 260
            aload 5 /* e */
            aload 0 /* env */
            aload 3 /* originatingElements */
            iconst_0
            aaload
            invokestatic com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.handleIOError:(Ljava/io/IOException;Ljavax/annotation/processing/ProcessingEnvironment;Ljavax/lang/model/element/Element;)V
        end local 5 // java.io.IOException e
         9: .line 262
      StackMap locals:
      StackMap stack:
            return
        end local 4 // java.lang.String filename
        end local 3 // javax.lang.model.element.Element[] originatingElements
        end local 2 // java.lang.String serviceClassName
        end local 1 // java.lang.String providerClassName
        end local 0 // javax.annotation.processing.ProcessingEnvironment env
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   10     0                  env  Ljavax/annotation/processing/ProcessingEnvironment;
            0   10     1    providerClassName  Ljava/lang/String;
            0   10     2     serviceClassName  Ljava/lang/String;
            0   10     3  originatingElements  [Ljavax/lang/model/element/Element;
            2   10     4             filename  Ljava/lang/String;
            3    6     5                 file  Ljavax/tools/FileObject;
            4    6     6               writer  Ljava/io/PrintWriter;
            8    9     5                    e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           2     6       7  Class java.io.IOException
    MethodParameters:
                     Name  Flags
      env                  
      providerClassName    
      serviceClassName     
      originatingElements  

  private static boolean isBug367599(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=5, args_size=1
        start local 0 // java.lang.Throwable t
         0: .line 269
            aload 0 /* t */
            instanceof javax.annotation.processing.FilerException
            ifeq 7
         1: .line 270
            aload 0 /* t */
            invokevirtual java.lang.Throwable.getStackTrace:()[Ljava/lang/StackTraceElement;
            dup
            astore 4
            arraylength
            istore 3
            iconst_0
            istore 2
            goto 6
      StackMap locals: java.lang.Throwable top int int java.lang.StackTraceElement[]
      StackMap stack:
         2: aload 4
            iload 2
            aaload
            astore 1 /* ste */
        start local 1 // java.lang.StackTraceElement ste
         3: .line 271
            aload 1 /* ste */
            invokevirtual java.lang.StackTraceElement.toString:()Ljava/lang/String;
            ldc "org.eclipse.jdt.internal.apt.pluggable.core.filer.IdeFilerImpl.create"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 5
         4: .line 273
            iconst_1
            ireturn
        end local 1 // java.lang.StackTraceElement ste
         5: .line 270
      StackMap locals:
      StackMap stack:
            iinc 2 1
      StackMap locals:
      StackMap stack:
         6: iload 2
            iload 3
            if_icmplt 2
         7: .line 277
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 0 /* t */
            invokevirtual java.lang.Throwable.getCause:()Ljava/lang/Throwable;
            ifnull 8
            aload 0 /* t */
            invokevirtual java.lang.Throwable.getCause:()Ljava/lang/Throwable;
            invokestatic com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.isBug367599:(Ljava/lang/Throwable;)Z
            ifeq 8
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         8: iconst_0
            ireturn
        end local 0 // java.lang.Throwable t
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0     t  Ljava/lang/Throwable;
            3    5     1   ste  Ljava/lang/StackTraceElement;
    MethodParameters:
      Name  Flags
      t     

  static void generateServicesRegistration(java.lang.String, java.util.Map<java.lang.String, javax.lang.model.element.Element>);
    descriptor: (Ljava/lang/String;Ljava/util/Map;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=13, args_size=2
        start local 0 // java.lang.String providerBinName
        start local 1 // java.util.Map providerRegistrations
         0: .line 281
            invokestatic com.oracle.truffle.dsl.processor.ProcessorContext.getInstance:()Lcom/oracle/truffle/dsl/processor/ProcessorContext;
            astore 2 /* context */
        start local 2 // com.oracle.truffle.dsl.processor.ProcessorContext context
         1: .line 282
            aload 2 /* context */
            invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getEnvironment:()Ljavax/annotation/processing/ProcessingEnvironment;
            astore 3 /* env */
        start local 3 // javax.annotation.processing.ProcessingEnvironment env
         2: .line 283
            aload 3 /* env */
            invokeinterface javax.annotation.processing.ProcessingEnvironment.getElementUtils:()Ljavax/lang/model/util/Elements;
            astore 4 /* elements */
        start local 4 // javax.lang.model.util.Elements elements
         3: .line 284
            new java.lang.StringBuilder
            dup
            ldc "META-INF/services/"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* providerBinName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 5 /* filename */
        start local 5 // java.lang.String filename
         4: .line 285
            new java.util.ArrayList
            dup
            aload 1 /* providerRegistrations */
            invokeinterface java.util.Map.size:()I
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 6 /* providerClassNames */
        start local 6 // java.util.List providerClassNames
         5: .line 286
            aload 1 /* providerRegistrations */
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 8
            goto 12
      StackMap locals: java.lang.String java.util.Map com.oracle.truffle.dsl.processor.ProcessorContext javax.annotation.processing.ProcessingEnvironment javax.lang.model.util.Elements java.lang.String java.util.List top java.util.Iterator
      StackMap stack:
         6: aload 8
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 7 /* providerFqn */
        start local 7 // java.lang.String providerFqn
         7: .line 287
            aload 3 /* env */
            aload 7 /* providerFqn */
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.getTypeElement:(Ljavax/annotation/processing/ProcessingEnvironment;Ljava/lang/CharSequence;)Ljavax/lang/model/element/TypeElement;
            astore 9 /* te */
        start local 9 // javax.lang.model.element.TypeElement te
         8: .line 288
            aload 9 /* te */
            ifnonnull 11
         9: .line 289
            aload 6 /* providerClassNames */
            aload 7 /* providerFqn */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        10: .line 290
            goto 12
        11: .line 291
      StackMap locals: java.lang.String java.util.Map com.oracle.truffle.dsl.processor.ProcessorContext javax.annotation.processing.ProcessingEnvironment javax.lang.model.util.Elements java.lang.String java.util.List java.lang.String java.util.Iterator javax.lang.model.element.TypeElement
      StackMap stack:
            aload 6 /* providerClassNames */
            aload 4 /* elements */
            aload 9 /* te */
            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;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 9 // javax.lang.model.element.TypeElement te
        end local 7 // java.lang.String providerFqn
        12: .line 286
      StackMap locals: java.lang.String java.util.Map com.oracle.truffle.dsl.processor.ProcessorContext javax.annotation.processing.ProcessingEnvironment javax.lang.model.util.Elements java.lang.String java.util.List top java.util.Iterator
      StackMap stack:
            aload 8
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
        13: .line 294
            aload 6 /* providerClassNames */
            invokestatic java.util.Collections.sort:(Ljava/util/List;)V
        14: .line 295
            aload 6 /* providerClassNames */
            invokeinterface java.util.List.isEmpty:()Z
            ifne 30
        15: .line 297
            aload 3 /* env */
            invokeinterface javax.annotation.processing.ProcessingEnvironment.getFiler:()Ljavax/annotation/processing/Filer;
            getstatic javax.tools.StandardLocation.CLASS_OUTPUT:Ljavax/tools/StandardLocation;
            ldc ""
            aload 5 /* filename */
            aload 1 /* providerRegistrations */
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            aload 1 /* providerRegistrations */
            invokeinterface java.util.Map.size:()I
            anewarray javax.lang.model.element.Element
            invokeinterface java.util.Collection.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast javax.lang.model.element.Element[]
            invokeinterface javax.annotation.processing.Filer.createResource:(Ljavax/tools/JavaFileManager$Location;Ljava/lang/CharSequence;Ljava/lang/CharSequence;[Ljavax/lang/model/element/Element;)Ljavax/tools/FileObject;
            astore 7 /* file */
        start local 7 // javax.tools.FileObject file
        16: .line 298
            aconst_null
            astore 8
            aconst_null
            astore 9
        17: new java.io.PrintWriter
            dup
            new java.io.OutputStreamWriter
            dup
            aload 7 /* file */
            invokeinterface javax.tools.FileObject.openOutputStream:()Ljava/io/OutputStream;
            ldc "UTF-8"
            invokespecial java.io.OutputStreamWriter.<init>:(Ljava/io/OutputStream;Ljava/lang/String;)V
            invokespecial java.io.PrintWriter.<init>:(Ljava/io/Writer;)V
            astore 10 /* out */
        start local 10 // java.io.PrintWriter out
        18: .line 299
            aload 6 /* providerClassNames */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 12
            goto 21
      StackMap locals: java.lang.String java.util.Map com.oracle.truffle.dsl.processor.ProcessorContext javax.annotation.processing.ProcessingEnvironment javax.lang.model.util.Elements java.lang.String java.util.List javax.tools.FileObject java.lang.Throwable java.lang.Throwable java.io.PrintWriter top java.util.Iterator
      StackMap stack:
        19: aload 12
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 11 /* providerClassName */
        start local 11 // java.lang.String providerClassName
        20: .line 300
            aload 10 /* out */
            aload 11 /* providerClassName */
            invokevirtual java.io.PrintWriter.println:(Ljava/lang/String;)V
        end local 11 // java.lang.String providerClassName
        21: .line 299
      StackMap locals:
      StackMap stack:
            aload 12
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 19
        22: .line 302
            aload 10 /* out */
            ifnull 30
            aload 10 /* out */
            invokevirtual java.io.PrintWriter.close:()V
            goto 30
      StackMap locals: java.lang.String java.util.Map com.oracle.truffle.dsl.processor.ProcessorContext javax.annotation.processing.ProcessingEnvironment javax.lang.model.util.Elements java.lang.String java.util.List javax.tools.FileObject java.lang.Throwable java.lang.Throwable java.io.PrintWriter
      StackMap stack: java.lang.Throwable
        23: astore 8
            aload 10 /* out */
            ifnull 24
            aload 10 /* out */
            invokevirtual java.io.PrintWriter.close:()V
        end local 10 // java.io.PrintWriter out
      StackMap locals:
      StackMap stack:
        24: aload 8
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        25: astore 9
            aload 8
            ifnonnull 26
            aload 9
            astore 8
            goto 27
      StackMap locals:
      StackMap stack:
        26: aload 8
            aload 9
            if_acmpeq 27
            aload 8
            aload 9
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        27: aload 8
            athrow
        end local 7 // javax.tools.FileObject file
        28: .line 303
      StackMap locals: java.lang.String java.util.Map com.oracle.truffle.dsl.processor.ProcessorContext javax.annotation.processing.ProcessingEnvironment javax.lang.model.util.Elements java.lang.String java.util.List
      StackMap stack: java.io.IOException
            astore 7 /* e */
        start local 7 // java.io.IOException e
        29: .line 304
            aload 7 /* e */
            aload 3 /* env */
            aload 1 /* providerRegistrations */
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast javax.lang.model.element.Element
            invokestatic com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.handleIOError:(Ljava/io/IOException;Ljavax/annotation/processing/ProcessingEnvironment;Ljavax/lang/model/element/Element;)V
        end local 7 // java.io.IOException e
        30: .line 307
      StackMap locals:
      StackMap stack:
            return
        end local 6 // java.util.List providerClassNames
        end local 5 // java.lang.String filename
        end local 4 // javax.lang.model.util.Elements elements
        end local 3 // javax.annotation.processing.ProcessingEnvironment env
        end local 2 // com.oracle.truffle.dsl.processor.ProcessorContext context
        end local 1 // java.util.Map providerRegistrations
        end local 0 // java.lang.String providerBinName
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   31     0        providerBinName  Ljava/lang/String;
            0   31     1  providerRegistrations  Ljava/util/Map<Ljava/lang/String;Ljavax/lang/model/element/Element;>;
            1   31     2                context  Lcom/oracle/truffle/dsl/processor/ProcessorContext;
            2   31     3                    env  Ljavax/annotation/processing/ProcessingEnvironment;
            3   31     4               elements  Ljavax/lang/model/util/Elements;
            4   31     5               filename  Ljava/lang/String;
            5   31     6     providerClassNames  Ljava/util/List<Ljava/lang/String;>;
            7   12     7            providerFqn  Ljava/lang/String;
            8   12     9                     te  Ljavax/lang/model/element/TypeElement;
           16   28     7                   file  Ljavax/tools/FileObject;
           18   24    10                    out  Ljava/io/PrintWriter;
           20   21    11      providerClassName  Ljava/lang/String;
           29   30     7                      e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
          18    22      23  any
          17    25      25  any
          15    28      28  Class java.io.IOException
    Signature: (Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;Ljavax/lang/model/element/Element;>;)V
    MethodParameters:
                       Name  Flags
      providerBinName        
      providerRegistrations  

  private static void handleIOError(java.io.IOException, javax.annotation.processing.ProcessingEnvironment, javax.lang.model.element.Element);
    descriptor: (Ljava/io/IOException;Ljavax/annotation/processing/ProcessingEnvironment;Ljavax/lang/model/element/Element;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // java.io.IOException e
        start local 1 // javax.annotation.processing.ProcessingEnvironment env
        start local 2 // javax.lang.model.element.Element element
         0: .line 310
            aload 0 /* e */
            instanceof javax.annotation.processing.FilerException
            ifeq 3
         1: .line 311
            aload 0 /* e */
            invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
            ldc "Source file already created"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 2
            aload 0 /* e */
            invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
            ldc "Resource already created"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 3
         2: .line 313
      StackMap locals:
      StackMap stack:
            return
         3: .line 316
      StackMap locals:
      StackMap stack:
            aload 1 /* env */
            invokeinterface javax.annotation.processing.ProcessingEnvironment.getMessager:()Ljavax/annotation/processing/Messager;
            aload 0 /* e */
            invokestatic com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.isBug367599:(Ljava/lang/Throwable;)Z
            ifeq 4
            getstatic javax.tools.Diagnostic$Kind.NOTE:Ljavax/tools/Diagnostic$Kind;
            goto 5
      StackMap locals:
      StackMap stack: javax.annotation.processing.Messager
         4: getstatic javax.tools.Diagnostic$Kind.ERROR:Ljavax/tools/Diagnostic$Kind;
      StackMap locals: java.io.IOException javax.annotation.processing.ProcessingEnvironment javax.lang.model.element.Element
      StackMap stack: javax.annotation.processing.Messager javax.tools.Diagnostic$Kind
         5: aload 0 /* e */
            invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
            aload 2 /* element */
            invokeinterface javax.annotation.processing.Messager.printMessage:(Ljavax/tools/Diagnostic$Kind;Ljava/lang/CharSequence;Ljavax/lang/model/element/Element;)V
         6: .line 317
            return
        end local 2 // javax.lang.model.element.Element element
        end local 1 // javax.annotation.processing.ProcessingEnvironment env
        end local 0 // java.io.IOException e
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0        e  Ljava/io/IOException;
            0    7     1      env  Ljavax/annotation/processing/ProcessingEnvironment;
            0    7     2  element  Ljavax/lang/model/element/Element;
    MethodParameters:
         Name  Flags
      e        
      env      
      element  

  private void generateLegacyRegistration(java.util.List<javax.lang.model.element.TypeElement>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=8, args_size=2
        start local 0 // com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor this
        start local 1 // java.util.List annotatedElements
         0: .line 320
            aload 0 /* this */
            invokevirtual com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.getRegistrationFileName:()Ljava/lang/String;
            astore 2 /* filename */
        start local 2 // java.lang.String filename
         1: .line 322
            new com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor$SortedProperties
            dup
            invokespecial com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor$SortedProperties.<init>:()V
            astore 3 /* p */
        start local 3 // java.util.Properties p
         2: .line 323
            aload 0 /* this */
            aload 3 /* p */
            aload 1 /* annotatedElements */
            invokevirtual com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.storeRegistrations:(Ljava/util/Properties;Ljava/lang/Iterable;)V
         3: .line 324
            aload 3 /* p */
            invokevirtual java.util.Properties.isEmpty:()Z
            ifne 16
         4: .line 326
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.processingEnv:Ljavax/annotation/processing/ProcessingEnvironment;
            invokeinterface javax.annotation.processing.ProcessingEnvironment.getFiler:()Ljavax/annotation/processing/Filer;
            getstatic javax.tools.StandardLocation.CLASS_OUTPUT:Ljavax/tools/StandardLocation;
            ldc ""
            aload 2 /* filename */
            aload 1 /* annotatedElements */
            iconst_0
            anewarray javax.lang.model.element.Element
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast javax.lang.model.element.Element[]
            invokeinterface javax.annotation.processing.Filer.createResource:(Ljavax/tools/JavaFileManager$Location;Ljava/lang/CharSequence;Ljava/lang/CharSequence;[Ljavax/lang/model/element/Element;)Ljavax/tools/FileObject;
            astore 4 /* file */
        start local 4 // javax.tools.FileObject file
         5: .line 327
            aconst_null
            astore 5
            aconst_null
            astore 6
         6: aload 4 /* file */
            invokeinterface javax.tools.FileObject.openOutputStream:()Ljava/io/OutputStream;
            astore 7 /* os */
        start local 7 // java.io.OutputStream os
         7: .line 328
            aload 3 /* p */
            aload 7 /* os */
            new java.lang.StringBuilder
            dup
            ldc "Generated by "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.util.Properties.store:(Ljava/io/OutputStream;Ljava/lang/String;)V
         8: .line 329
            aload 7 /* os */
            ifnull 16
            aload 7 /* os */
            invokevirtual java.io.OutputStream.close:()V
            goto 16
      StackMap locals: com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor java.util.List java.lang.String java.util.Properties javax.tools.FileObject java.lang.Throwable java.lang.Throwable java.io.OutputStream
      StackMap stack: java.lang.Throwable
         9: astore 5
            aload 7 /* os */
            ifnull 10
            aload 7 /* os */
            invokevirtual java.io.OutputStream.close:()V
        end local 7 // java.io.OutputStream os
      StackMap locals:
      StackMap stack:
        10: aload 5
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        11: astore 6
            aload 5
            ifnonnull 12
            aload 6
            astore 5
            goto 13
      StackMap locals:
      StackMap stack:
        12: aload 5
            aload 6
            if_acmpeq 13
            aload 5
            aload 6
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        13: aload 5
            athrow
        end local 4 // javax.tools.FileObject file
        14: .line 330
      StackMap locals: com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor java.util.List java.lang.String java.util.Properties
      StackMap stack: java.io.IOException
            astore 4 /* e */
        start local 4 // java.io.IOException e
        15: .line 331
            aload 4 /* e */
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.processingEnv:Ljavax/annotation/processing/ProcessingEnvironment;
            aload 1 /* annotatedElements */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast javax.lang.model.element.Element
            invokestatic com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor.handleIOError:(Ljava/io/IOException;Ljavax/annotation/processing/ProcessingEnvironment;Ljavax/lang/model/element/Element;)V
        end local 4 // java.io.IOException e
        16: .line 334
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.util.Properties p
        end local 2 // java.lang.String filename
        end local 1 // java.util.List annotatedElements
        end local 0 // com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   17     0               this  Lcom/oracle/truffle/dsl/processor/AbstractRegistrationProcessor;
            0   17     1  annotatedElements  Ljava/util/List<Ljavax/lang/model/element/TypeElement;>;
            1   17     2           filename  Ljava/lang/String;
            2   17     3                  p  Ljava/util/Properties;
            5   14     4               file  Ljavax/tools/FileObject;
            7   10     7                 os  Ljava/io/OutputStream;
           15   16     4                  e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           7     8       9  any
           6    11      11  any
           4    14      14  Class java.io.IOException
    Signature: (Ljava/util/List<Ljavax/lang/model/element/TypeElement;>;)V
    MethodParameters:
                   Name  Flags
      annotatedElements  

  static boolean shouldGenerateProviderFiles(javax.lang.model.element.Element);
    descriptor: (Ljavax/lang/model/element/Element;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // javax.lang.model.element.Element currentElement
         0: .line 337
            aload 0 /* currentElement */
            invokestatic com.oracle.truffle.dsl.processor.java.compiler.CompilerFactory.getCompiler:(Ljavax/lang/model/element/Element;)Lcom/oracle/truffle/dsl/processor/java/compiler/Compiler;
            instanceof com.oracle.truffle.dsl.processor.java.compiler.JDTCompiler
            ireturn
        end local 0 // javax.lang.model.element.Element currentElement
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0  currentElement  Ljavax/lang/model/element/Element;
    MethodParameters:
                Name  Flags
      currentElement  
}
SourceFile: "AbstractRegistrationProcessor.java"
NestMembers:
  com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor$1  com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor$SortedProperties
InnerClasses:
  com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor$1
  SortedProperties = com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor$SortedProperties of com.oracle.truffle.dsl.processor.AbstractRegistrationProcessor
  public abstract Entry = java.util.Map$Entry of java.util.Map
  public final Kind = javax.tools.Diagnostic$Kind of javax.tools.Diagnostic
  public abstract Location = javax.tools.JavaFileManager$Location of javax.tools.JavaFileManager