public final class org.graalvm.compiler.replacements.processor.ClassSubstitutionHandler extends org.graalvm.compiler.replacements.processor.AnnotationHandler
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.graalvm.compiler.replacements.processor.ClassSubstitutionHandler
  super_class: org.graalvm.compiler.replacements.processor.AnnotationHandler
{
  static final java.lang.String CLASS_SUBSTITUTION_CLASS_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "org.graalvm.compiler.api.replacements.ClassSubstitution"

  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 46
            ldc Lorg/graalvm/compiler/replacements/processor/ClassSubstitutionHandler;
            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 org.graalvm.compiler.replacements.processor.ClassSubstitutionHandler.$assertionsDisabled:Z
         3: .line 48
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.graalvm.compiler.processor.AbstractProcessor);
    descriptor: (Lorg/graalvm/compiler/processor/AbstractProcessor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.replacements.processor.ClassSubstitutionHandler this
        start local 1 // org.graalvm.compiler.processor.AbstractProcessor env
         0: .line 51
            aload 0 /* this */
            aload 1 /* env */
            ldc "org.graalvm.compiler.api.replacements.ClassSubstitution"
            invokespecial org.graalvm.compiler.replacements.processor.AnnotationHandler.<init>:(Lorg/graalvm/compiler/processor/AbstractProcessor;Ljava/lang/String;)V
         1: .line 52
            return
        end local 1 // org.graalvm.compiler.processor.AbstractProcessor env
        end local 0 // org.graalvm.compiler.replacements.processor.ClassSubstitutionHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/replacements/processor/ClassSubstitutionHandler;
            0    2     1   env  Lorg/graalvm/compiler/processor/AbstractProcessor;
    MethodParameters:
      Name  Flags
      env   

  public void process(javax.lang.model.element.Element, javax.lang.model.element.AnnotationMirror, org.graalvm.compiler.replacements.processor.PluginGenerator);
    descriptor: (Ljavax/lang/model/element/Element;Ljavax/lang/model/element/AnnotationMirror;Lorg/graalvm/compiler/replacements/processor/PluginGenerator;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=6, args_size=4
        start local 0 // org.graalvm.compiler.replacements.processor.ClassSubstitutionHandler this
        start local 1 // javax.lang.model.element.Element element
        start local 2 // javax.lang.model.element.AnnotationMirror classSubstitution
        start local 3 // org.graalvm.compiler.replacements.processor.PluginGenerator generator
         0: .line 56
            aload 1 /* element */
            invokeinterface javax.lang.model.element.Element.getKind:()Ljavax/lang/model/element/ElementKind;
            invokevirtual javax.lang.model.element.ElementKind.isClass:()Z
            ifne 3
         1: .line 57
            getstatic org.graalvm.compiler.replacements.processor.ClassSubstitutionHandler.$assertionsDisabled:Z
            ifne 2
            new java.lang.AssertionError
            dup
            ldc "Element is guaranteed to be a class."
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         2: .line 58
      StackMap locals:
      StackMap stack:
            return
         3: .line 60
      StackMap locals:
      StackMap stack:
            aload 1 /* element */
            checkcast javax.lang.model.element.TypeElement
            astore 4 /* type */
        start local 4 // javax.lang.model.element.TypeElement type
         4: .line 62
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.processor.ClassSubstitutionHandler.processor:Lorg/graalvm/compiler/processor/AbstractProcessor;
            aload 4 /* type */
            aload 2 /* classSubstitution */
            invokestatic org.graalvm.compiler.replacements.processor.ClassSubstitutionHandler.resolveOriginalType:(Lorg/graalvm/compiler/processor/AbstractProcessor;Ljavax/lang/model/element/Element;Ljavax/lang/model/element/AnnotationMirror;)Ljavax/lang/model/element/TypeElement;
            astore 5 /* substitutionType */
        start local 5 // javax.lang.model.element.TypeElement substitutionType
         5: .line 63
            aload 5 /* substitutionType */
            ifnonnull 7
         6: .line 64
            return
         7: .line 66
      StackMap locals: javax.lang.model.element.TypeElement javax.lang.model.element.TypeElement
      StackMap stack:
            return
        end local 5 // javax.lang.model.element.TypeElement substitutionType
        end local 4 // javax.lang.model.element.TypeElement type
        end local 3 // org.graalvm.compiler.replacements.processor.PluginGenerator generator
        end local 2 // javax.lang.model.element.AnnotationMirror classSubstitution
        end local 1 // javax.lang.model.element.Element element
        end local 0 // org.graalvm.compiler.replacements.processor.ClassSubstitutionHandler this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    8     0               this  Lorg/graalvm/compiler/replacements/processor/ClassSubstitutionHandler;
            0    8     1            element  Ljavax/lang/model/element/Element;
            0    8     2  classSubstitution  Ljavax/lang/model/element/AnnotationMirror;
            0    8     3          generator  Lorg/graalvm/compiler/replacements/processor/PluginGenerator;
            4    8     4               type  Ljavax/lang/model/element/TypeElement;
            5    8     5   substitutionType  Ljavax/lang/model/element/TypeElement;
    MethodParameters:
                   Name  Flags
      element            
      classSubstitution  
      generator          

  static javax.lang.model.element.TypeElement resolveOriginalType(org.graalvm.compiler.processor.AbstractProcessor, javax.lang.model.element.Element, javax.lang.model.element.AnnotationMirror);
    descriptor: (Lorg/graalvm/compiler/processor/AbstractProcessor;Ljavax/lang/model/element/Element;Ljavax/lang/model/element/AnnotationMirror;)Ljavax/lang/model/element/TypeElement;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=7, locals=10, args_size=3
        start local 0 // org.graalvm.compiler.processor.AbstractProcessor processor
        start local 1 // javax.lang.model.element.Element sourceElement
        start local 2 // javax.lang.model.element.AnnotationMirror classSubstition
         0: .line 69
            aload 2 /* classSubstition */
            ldc "value"
            ldc Ljavax/lang/model/type/TypeMirror;
            invokestatic org.graalvm.compiler.processor.AbstractProcessor.getAnnotationValue:(Ljavax/lang/model/element/AnnotationMirror;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast javax.lang.model.type.TypeMirror
            astore 3 /* type */
        start local 3 // javax.lang.model.type.TypeMirror type
         1: .line 70
            aload 2 /* classSubstition */
            ldc "className"
            ldc Ljava/lang/String;
            invokestatic org.graalvm.compiler.processor.AbstractProcessor.getAnnotationValueList:(Ljavax/lang/model/element/AnnotationMirror;Ljava/lang/String;Ljava/lang/Class;)Ljava/util/List;
            astore 4 /* classNames */
        start local 4 // java.util.List classNames
         2: .line 71
            aload 2 /* classSubstition */
            ldc "optional"
            ldc Ljava/lang/Boolean;
            invokestatic org.graalvm.compiler.processor.AbstractProcessor.getAnnotationValue:(Ljavax/lang/model/element/AnnotationMirror;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            istore 5 /* optional */
        start local 5 // boolean optional
         3: .line 73
            aload 0 /* processor */
            invokevirtual org.graalvm.compiler.processor.AbstractProcessor.env:()Ljavax/annotation/processing/ProcessingEnvironment;
            invokeinterface javax.annotation.processing.ProcessingEnvironment.getMessager:()Ljavax/annotation/processing/Messager;
            astore 6 /* messager */
        start local 6 // javax.annotation.processing.Messager messager
         4: .line 74
            aload 3 /* type */
            invokeinterface javax.lang.model.type.TypeMirror.getKind:()Ljavax/lang/model/type/TypeKind;
            getstatic javax.lang.model.type.TypeKind.DECLARED:Ljavax/lang/model/type/TypeKind;
            if_acmpeq 7
         5: .line 75
            aload 6 /* messager */
            getstatic javax.tools.Diagnostic$Kind.ERROR:Ljavax/tools/Diagnostic$Kind;
            ldc "The provided class must be a declared type."
            aload 1 /* sourceElement */
            aload 2 /* classSubstition */
            invokeinterface javax.annotation.processing.Messager.printMessage:(Ljavax/tools/Diagnostic$Kind;Ljava/lang/CharSequence;Ljavax/lang/model/element/Element;Ljavax/lang/model/element/AnnotationMirror;)V
         6: .line 76
            aconst_null
            areturn
         7: .line 79
      StackMap locals: org.graalvm.compiler.processor.AbstractProcessor javax.lang.model.element.Element javax.lang.model.element.AnnotationMirror javax.lang.model.type.TypeMirror java.util.List int javax.annotation.processing.Messager
      StackMap stack:
            aload 2 /* classSubstition */
            invokeinterface javax.lang.model.element.AnnotationMirror.getAnnotationType:()Ljavax/lang/model/type/DeclaredType;
            invokeinterface javax.lang.model.type.DeclaredType.asElement:()Ljavax/lang/model/element/Element;
            aload 3 /* type */
            checkcast javax.lang.model.type.DeclaredType
            invokeinterface javax.lang.model.type.DeclaredType.asElement:()Ljavax/lang/model/element/Element;
            invokeinterface javax.lang.model.element.Element.equals:(Ljava/lang/Object;)Z
            ifne 13
         8: .line 80
            aload 4 /* classNames */
            invokeinterface java.util.List.size:()I
            ifeq 12
         9: .line 81
            ldc "The usage of value and className is exclusive."
            astore 7 /* msg */
        start local 7 // java.lang.String msg
        10: .line 82
            aload 6 /* messager */
            getstatic javax.tools.Diagnostic$Kind.ERROR:Ljavax/tools/Diagnostic$Kind;
            aload 7 /* msg */
            aload 1 /* sourceElement */
            aload 2 /* classSubstition */
            invokeinterface javax.annotation.processing.Messager.printMessage:(Ljavax/tools/Diagnostic$Kind;Ljava/lang/CharSequence;Ljavax/lang/model/element/Element;Ljavax/lang/model/element/AnnotationMirror;)V
        11: .line 83
            aload 6 /* messager */
            getstatic javax.tools.Diagnostic$Kind.ERROR:Ljavax/tools/Diagnostic$Kind;
            aload 7 /* msg */
            aload 1 /* sourceElement */
            aload 2 /* classSubstition */
            invokeinterface javax.annotation.processing.Messager.printMessage:(Ljavax/tools/Diagnostic$Kind;Ljava/lang/CharSequence;Ljavax/lang/model/element/Element;Ljavax/lang/model/element/AnnotationMirror;)V
        end local 7 // java.lang.String msg
        12: .line 86
      StackMap locals:
      StackMap stack:
            aload 3 /* type */
            checkcast javax.lang.model.type.DeclaredType
            invokeinterface javax.lang.model.type.DeclaredType.asElement:()Ljavax/lang/model/element/Element;
            checkcast javax.lang.model.element.TypeElement
            areturn
        13: .line 89
      StackMap locals:
      StackMap stack:
            aload 4 /* classNames */
            invokeinterface java.util.List.size:()I
            ifeq 24
        14: .line 90
            aconst_null
            astore 7 /* typeElement */
        start local 7 // javax.lang.model.element.TypeElement typeElement
        15: .line 91
            aload 4 /* classNames */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 9
            goto 20
      StackMap locals: org.graalvm.compiler.processor.AbstractProcessor javax.lang.model.element.Element javax.lang.model.element.AnnotationMirror javax.lang.model.type.TypeMirror java.util.List int javax.annotation.processing.Messager javax.lang.model.element.TypeElement top java.util.Iterator
      StackMap stack:
        16: aload 9
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 8 /* className */
        start local 8 // java.lang.String className
        17: .line 92
            aload 0 /* processor */
            aload 8 /* className */
            invokevirtual org.graalvm.compiler.processor.AbstractProcessor.getTypeElementOrNull:(Ljava/lang/String;)Ljavax/lang/model/element/TypeElement;
            astore 7 /* typeElement */
        18: .line 93
            aload 7 /* typeElement */
            ifnull 20
        19: .line 94
            goto 21
        end local 8 // java.lang.String className
        20: .line 91
      StackMap locals:
      StackMap stack:
            aload 9
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 16
        21: .line 97
      StackMap locals: org.graalvm.compiler.processor.AbstractProcessor javax.lang.model.element.Element javax.lang.model.element.AnnotationMirror javax.lang.model.type.TypeMirror java.util.List int javax.annotation.processing.Messager javax.lang.model.element.TypeElement
      StackMap stack:
            aload 7 /* typeElement */
            ifnonnull 23
            iload 5 /* optional */
            ifne 23
        22: .line 98
            aload 6 /* messager */
            getstatic javax.tools.Diagnostic$Kind.ERROR:Ljavax/tools/Diagnostic$Kind;
            ldc "None of the classes %s were found on the classpath."
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* classNames */
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 1 /* sourceElement */
            aload 2 /* classSubstition */
            invokeinterface javax.annotation.processing.Messager.printMessage:(Ljavax/tools/Diagnostic$Kind;Ljava/lang/CharSequence;Ljavax/lang/model/element/Element;Ljavax/lang/model/element/AnnotationMirror;)V
        23: .line 101
      StackMap locals:
      StackMap stack:
            aload 7 /* typeElement */
            areturn
        end local 7 // javax.lang.model.element.TypeElement typeElement
        24: .line 104
      StackMap locals:
      StackMap stack:
            iload 5 /* optional */
            ifne 26
        25: .line 105
            aload 6 /* messager */
            getstatic javax.tools.Diagnostic$Kind.ERROR:Ljavax/tools/Diagnostic$Kind;
            ldc "No value for 'value' or 'className' provided."
            iconst_0
            anewarray java.lang.Object
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 1 /* sourceElement */
            aload 2 /* classSubstition */
            invokeinterface javax.annotation.processing.Messager.printMessage:(Ljavax/tools/Diagnostic$Kind;Ljava/lang/CharSequence;Ljavax/lang/model/element/Element;Ljavax/lang/model/element/AnnotationMirror;)V
        26: .line 108
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 6 // javax.annotation.processing.Messager messager
        end local 5 // boolean optional
        end local 4 // java.util.List classNames
        end local 3 // javax.lang.model.type.TypeMirror type
        end local 2 // javax.lang.model.element.AnnotationMirror classSubstition
        end local 1 // javax.lang.model.element.Element sourceElement
        end local 0 // org.graalvm.compiler.processor.AbstractProcessor processor
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   27     0        processor  Lorg/graalvm/compiler/processor/AbstractProcessor;
            0   27     1    sourceElement  Ljavax/lang/model/element/Element;
            0   27     2  classSubstition  Ljavax/lang/model/element/AnnotationMirror;
            1   27     3             type  Ljavax/lang/model/type/TypeMirror;
            2   27     4       classNames  Ljava/util/List<Ljava/lang/String;>;
            3   27     5         optional  Z
            4   27     6         messager  Ljavax/annotation/processing/Messager;
           10   12     7              msg  Ljava/lang/String;
           15   24     7      typeElement  Ljavax/lang/model/element/TypeElement;
           17   20     8        className  Ljava/lang/String;
    MethodParameters:
                 Name  Flags
      processor        
      sourceElement    
      classSubstition  
}
SourceFile: "ClassSubstitutionHandler.java"
InnerClasses:
  public final Kind = javax.tools.Diagnostic$Kind of javax.tools.Diagnostic