public class com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor extends com.oracle.svm.hosted.substitute.AnnotationSubstitutionProcessor
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor
  super_class: com.oracle.svm.hosted.substitute.AnnotationSubstitutionProcessor
{
  private final java.util.Map<java.lang.Class<?>, com.oracle.svm.hosted.substitute.ClassDescriptor> classDescriptors;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/Class<*>;Lcom/oracle/svm/hosted/substitute/ClassDescriptor;>;

  private final java.util.Map<java.lang.reflect.Executable, com.oracle.svm.hosted.substitute.MethodDescriptor> methodDescriptors;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/reflect/Executable;Lcom/oracle/svm/hosted/substitute/MethodDescriptor;>;

  private final java.util.Map<java.lang.reflect.Field, com.oracle.svm.hosted.substitute.FieldDescriptor> fieldDescriptors;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/reflect/Field;Lcom/oracle/svm/hosted/substitute/FieldDescriptor;>;

  public void <init>(com.oracle.svm.hosted.ImageClassLoader, jdk.vm.ci.meta.MetaAccessProvider, com.oracle.svm.hosted.classinitialization.ClassInitializationSupport);
    descriptor: (Lcom/oracle/svm/hosted/ImageClassLoader;Ljdk/vm/ci/meta/MetaAccessProvider;Lcom/oracle/svm/hosted/classinitialization/ClassInitializationSupport;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=7, args_size=4
        start local 0 // com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor this
        start local 1 // com.oracle.svm.hosted.ImageClassLoader imageClassLoader
        start local 2 // jdk.vm.ci.meta.MetaAccessProvider metaAccess
        start local 3 // com.oracle.svm.hosted.classinitialization.ClassInitializationSupport classInitializationSupport
         0: .line 97
            aload 0 /* this */
            aload 1 /* imageClassLoader */
            aload 2 /* metaAccess */
            aload 3 /* classInitializationSupport */
            invokespecial com.oracle.svm.hosted.substitute.AnnotationSubstitutionProcessor.<init>:(Lcom/oracle/svm/hosted/ImageClassLoader;Ljdk/vm/ci/meta/MetaAccessProvider;Lcom/oracle/svm/hosted/classinitialization/ClassInitializationSupport;)V
         1: .line 99
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor.classDescriptors:Ljava/util/Map;
         2: .line 100
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor.methodDescriptors:Ljava/util/Map;
         3: .line 101
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor.fieldDescriptors:Ljava/util/Map;
         4: .line 103
            ldc ","
            getstatic com.oracle.svm.core.configure.ConfigurationFiles$Options.SubstitutionFiles:Lcom/oracle/svm/core/option/HostedOptionKey;
            invokevirtual com.oracle.svm.core.option.HostedOptionKey.getValue:()Ljava/lang/Object;
            checkcast java.lang.String[]
            invokestatic com.oracle.svm.core.option.OptionUtils.flatten:(Ljava/lang/String;[Ljava/lang/String;)Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 12
      StackMap locals: com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor com.oracle.svm.hosted.ImageClassLoader jdk.vm.ci.meta.MetaAccessProvider com.oracle.svm.hosted.classinitialization.ClassInitializationSupport top java.util.Iterator
      StackMap stack:
         5: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 4 /* substitutionFileName */
        start local 4 // java.lang.String substitutionFileName
         6: .line 105
            aload 0 /* this */
            new java.io.FileReader
            dup
            aload 4 /* substitutionFileName */
            invokespecial java.io.FileReader.<init>:(Ljava/lang/String;)V
            invokevirtual com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor.loadFile:(Ljava/io/Reader;)V
         7: .line 106
            goto 12
      StackMap locals: com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor com.oracle.svm.hosted.ImageClassLoader jdk.vm.ci.meta.MetaAccessProvider com.oracle.svm.hosted.classinitialization.ClassInitializationSupport java.lang.String java.util.Iterator
      StackMap stack: java.io.FileNotFoundException
         8: pop
         9: .line 107
            ldc "Substitution file %s not found."
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* substitutionFileName */
            aastore
            invokestatic com.oracle.svm.core.util.UserError.abort:(Ljava/lang/String;[Ljava/lang/Object;)Lcom/oracle/svm/core/util/UserError$UserException;
            athrow
        10: .line 108
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 6 /* ex */
        start local 6 // java.lang.Exception ex
        11: .line 109
            ldc "Could not parse substitution file %s: %s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* substitutionFileName */
            aastore
            dup
            iconst_1
            aload 6 /* ex */
            invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
            aastore
            invokestatic com.oracle.svm.core.util.UserError.abort:(Ljava/lang/String;[Ljava/lang/Object;)Lcom/oracle/svm/core/util/UserError$UserException;
            athrow
        end local 6 // java.lang.Exception ex
        end local 4 // java.lang.String substitutionFileName
        12: .line 103
      StackMap locals: com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor com.oracle.svm.hosted.ImageClassLoader jdk.vm.ci.meta.MetaAccessProvider com.oracle.svm.hosted.classinitialization.ClassInitializationSupport top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
        13: .line 112
            ldc ","
            getstatic com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor$Options.SubstitutionResources:Lcom/oracle/svm/core/option/HostedOptionKey;
            invokevirtual com.oracle.svm.core.option.HostedOptionKey.getValue:()Ljava/lang/Object;
            checkcast java.lang.String[]
            invokestatic com.oracle.svm.core.option.OptionUtils.flatten:(Ljava/lang/String;[Ljava/lang/String;)Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 22
      StackMap locals:
      StackMap stack:
        14: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 4 /* substitutionResourceName */
        start local 4 // java.lang.String substitutionResourceName
        15: .line 114
            aload 1 /* imageClassLoader */
            aload 4 /* substitutionResourceName */
            invokevirtual com.oracle.svm.hosted.ImageClassLoader.findResourceAsStreamByName:(Ljava/lang/String;)Ljava/io/InputStream;
            astore 6 /* substitutionStream */
        start local 6 // java.io.InputStream substitutionStream
        16: .line 115
            aload 6 /* substitutionStream */
            ifnonnull 18
        17: .line 116
            ldc "Substitution resource not found: %s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* substitutionResourceName */
            aastore
            invokestatic com.oracle.svm.core.util.UserError.abort:(Ljava/lang/String;[Ljava/lang/Object;)Lcom/oracle/svm/core/util/UserError$UserException;
            athrow
        18: .line 118
      StackMap locals: com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor com.oracle.svm.hosted.ImageClassLoader jdk.vm.ci.meta.MetaAccessProvider com.oracle.svm.hosted.classinitialization.ClassInitializationSupport java.lang.String java.util.Iterator java.io.InputStream
      StackMap stack:
            aload 0 /* this */
            new java.io.InputStreamReader
            dup
            aload 6 /* substitutionStream */
            invokespecial java.io.InputStreamReader.<init>:(Ljava/io/InputStream;)V
            invokevirtual com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor.loadFile:(Ljava/io/Reader;)V
        end local 6 // java.io.InputStream substitutionStream
        19: .line 119
            goto 22
      StackMap locals: com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor com.oracle.svm.hosted.ImageClassLoader jdk.vm.ci.meta.MetaAccessProvider com.oracle.svm.hosted.classinitialization.ClassInitializationSupport java.lang.String java.util.Iterator
      StackMap stack: java.lang.Exception
        20: astore 6 /* ex */
        start local 6 // java.lang.Exception ex
        21: .line 120
            ldc "Could not parse substitution resource %s: %s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* substitutionResourceName */
            aastore
            dup
            iconst_1
            aload 6 /* ex */
            invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
            aastore
            invokestatic com.oracle.svm.core.util.UserError.abort:(Ljava/lang/String;[Ljava/lang/Object;)Lcom/oracle/svm/core/util/UserError$UserException;
            athrow
        end local 6 // java.lang.Exception ex
        end local 4 // java.lang.String substitutionResourceName
        22: .line 112
      StackMap locals: com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor com.oracle.svm.hosted.ImageClassLoader jdk.vm.ci.meta.MetaAccessProvider com.oracle.svm.hosted.classinitialization.ClassInitializationSupport top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 14
        23: .line 123
            return
        end local 3 // com.oracle.svm.hosted.classinitialization.ClassInitializationSupport classInitializationSupport
        end local 2 // jdk.vm.ci.meta.MetaAccessProvider metaAccess
        end local 1 // com.oracle.svm.hosted.ImageClassLoader imageClassLoader
        end local 0 // com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor this
      LocalVariableTable:
        Start  End  Slot                        Name  Signature
            0   24     0                        this  Lcom/oracle/svm/hosted/substitute/DeclarativeSubstitutionProcessor;
            0   24     1            imageClassLoader  Lcom/oracle/svm/hosted/ImageClassLoader;
            0   24     2                  metaAccess  Ljdk/vm/ci/meta/MetaAccessProvider;
            0   24     3  classInitializationSupport  Lcom/oracle/svm/hosted/classinitialization/ClassInitializationSupport;
            6   12     4        substitutionFileName  Ljava/lang/String;
           11   12     6                          ex  Ljava/lang/Exception;
           15   22     4    substitutionResourceName  Ljava/lang/String;
           16   19     6          substitutionStream  Ljava/io/InputStream;
           21   22     6                          ex  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           6     7       8  Class java.io.FileNotFoundException
           6     7      10  Class java.io.IOException
           6     7      10  Class com.oracle.svm.core.util.json.JSONParserException
          15    19      20  Class java.io.IOException
          15    19      20  Class com.oracle.svm.core.util.json.JSONParserException
    MethodParameters:
                            Name  Flags
      imageClassLoader            
      metaAccess                  
      classInitializationSupport  

  private void loadFile(java.io.Reader);
    descriptor: (Ljava/io/Reader;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=13, args_size=2
        start local 0 // com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor this
        start local 1 // java.io.Reader reader
         0: .line 126
            new java.util.HashSet
            dup
            aload 0 /* this */
            getfield com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor.imageClassLoader:Lcom/oracle/svm/hosted/ImageClassLoader;
            ldc Lcom/oracle/svm/core/annotate/TargetClass;
            iconst_0
            invokevirtual com.oracle.svm.hosted.ImageClassLoader.findAnnotatedClasses:(Ljava/lang/Class;Z)Ljava/util/List;
            invokespecial java.util.HashSet.<init>:(Ljava/util/Collection;)V
            astore 2 /* annotatedClasses */
        start local 2 // java.util.Set annotatedClasses
         1: .line 128
            new com.oracle.svm.core.util.json.JSONParser
            dup
            aload 1 /* reader */
            invokespecial com.oracle.svm.core.util.json.JSONParser.<init>:(Ljava/io/Reader;)V
            astore 3 /* parser */
        start local 3 // com.oracle.svm.core.util.json.JSONParser parser
         2: .line 130
            aload 3 /* parser */
            invokevirtual com.oracle.svm.core.util.json.JSONParser.parse:()Ljava/lang/Object;
            checkcast java.util.List
            astore 4 /* allDescriptors */
        start local 4 // java.util.List allDescriptors
         3: .line 132
            aload 4 /* allDescriptors */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 6
            goto 31
      StackMap locals: com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor java.io.Reader java.util.Set com.oracle.svm.core.util.json.JSONParser java.util.List top java.util.Iterator
      StackMap stack:
         4: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            astore 5 /* classDescriptorData */
        start local 5 // java.lang.Object classDescriptorData
         5: .line 133
            aload 5 /* classDescriptorData */
            ifnonnull 7
         6: .line 135
            goto 31
         7: .line 137
      StackMap locals: com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor java.io.Reader java.util.Set com.oracle.svm.core.util.json.JSONParser java.util.List java.lang.Object java.util.Iterator
      StackMap stack:
            new com.oracle.svm.hosted.substitute.ClassDescriptor
            dup
            aload 5 /* classDescriptorData */
            invokespecial com.oracle.svm.hosted.substitute.ClassDescriptor.<init>:(Ljava/lang/Object;)V
            astore 7 /* classDescriptor */
        start local 7 // com.oracle.svm.hosted.substitute.ClassDescriptor classDescriptor
         8: .line 139
            aload 0 /* this */
            getfield com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor.imageClassLoader:Lcom/oracle/svm/hosted/ImageClassLoader;
            aload 7 /* classDescriptor */
            invokevirtual com.oracle.svm.hosted.substitute.ClassDescriptor.annotatedClass:()Ljava/lang/String;
            invokevirtual com.oracle.svm.hosted.ImageClassLoader.findClassOrFail:(Ljava/lang/String;)Ljava/lang/Class;
            astore 8 /* annotatedClass */
        start local 8 // java.lang.Class annotatedClass
         9: .line 141
            aload 2 /* annotatedClasses */
            aload 8 /* annotatedClass */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 11
        10: .line 142
            ldc "Target class already registered using explicit @TargetClass annotation: %s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 8 /* annotatedClass */
            aastore
            invokestatic com.oracle.svm.core.util.UserError.abort:(Ljava/lang/String;[Ljava/lang/Object;)Lcom/oracle/svm/core/util/UserError$UserException;
            athrow
        11: .line 143
      StackMap locals: com.oracle.svm.hosted.substitute.ClassDescriptor java.lang.Class
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor.classDescriptors:Ljava/util/Map;
            aload 8 /* annotatedClass */
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifeq 13
        12: .line 144
            ldc "Target class already registered using substitution file: %s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 8 /* annotatedClass */
            aastore
            invokestatic com.oracle.svm.core.util.UserError.abort:(Ljava/lang/String;[Ljava/lang/Object;)Lcom/oracle/svm/core/util/UserError$UserException;
            athrow
        13: .line 146
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor.classDescriptors:Ljava/util/Map;
            aload 8 /* annotatedClass */
            aload 7 /* classDescriptor */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        14: .line 148
            aload 7 /* classDescriptor */
            invokevirtual com.oracle.svm.hosted.substitute.ClassDescriptor.methods:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 10
            goto 24
      StackMap locals: com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor java.io.Reader java.util.Set com.oracle.svm.core.util.json.JSONParser java.util.List java.lang.Object java.util.Iterator com.oracle.svm.hosted.substitute.ClassDescriptor java.lang.Class top java.util.Iterator
      StackMap stack:
        15: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            astore 9 /* methodDescriptorData */
        start local 9 // java.lang.Object methodDescriptorData
        16: .line 149
            aload 9 /* methodDescriptorData */
            ifnonnull 18
        17: .line 151
            goto 24
        18: .line 153
      StackMap locals: com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor java.io.Reader java.util.Set com.oracle.svm.core.util.json.JSONParser java.util.List java.lang.Object java.util.Iterator com.oracle.svm.hosted.substitute.ClassDescriptor java.lang.Class java.lang.Object java.util.Iterator
      StackMap stack:
            new com.oracle.svm.hosted.substitute.MethodDescriptor
            dup
            aload 9 /* methodDescriptorData */
            invokespecial com.oracle.svm.hosted.substitute.MethodDescriptor.<init>:(Ljava/lang/Object;)V
            astore 11 /* methodDescriptor */
        start local 11 // com.oracle.svm.hosted.substitute.MethodDescriptor methodDescriptor
        19: .line 155
            aload 11 /* methodDescriptor */
            invokevirtual com.oracle.svm.hosted.substitute.MethodDescriptor.parameterTypes:()[Ljava/lang/String;
            ifnull 22
        20: .line 156
            aload 0 /* this */
            aload 8 /* annotatedClass */
            aload 11 /* methodDescriptor */
            invokevirtual com.oracle.svm.hosted.substitute.MethodDescriptor.annotatedName:()Ljava/lang/String;
            aload 11 /* methodDescriptor */
            invokevirtual com.oracle.svm.hosted.substitute.MethodDescriptor.parameterTypes:()[Ljava/lang/String;
            invokevirtual com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor.findMethod:(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/reflect/Executable;
            astore 12 /* annotatedMethod */
        start local 12 // java.lang.reflect.Executable annotatedMethod
        21: .line 157
            goto 23
        end local 12 // java.lang.reflect.Executable annotatedMethod
        22: .line 158
      StackMap locals: com.oracle.svm.hosted.substitute.MethodDescriptor
      StackMap stack:
            aload 8 /* annotatedClass */
            aload 11 /* methodDescriptor */
            invokevirtual com.oracle.svm.hosted.substitute.MethodDescriptor.annotatedName:()Ljava/lang/String;
            iconst_1
            invokestatic com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor.findMethod:(Ljava/lang/Class;Ljava/lang/String;Z)Ljava/lang/reflect/Executable;
            astore 12 /* annotatedMethod */
        start local 12 // java.lang.reflect.Executable annotatedMethod
        23: .line 160
      StackMap locals: java.lang.reflect.Executable
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor.methodDescriptors:Ljava/util/Map;
            aload 12 /* annotatedMethod */
            aload 11 /* methodDescriptor */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 12 // java.lang.reflect.Executable annotatedMethod
        end local 11 // com.oracle.svm.hosted.substitute.MethodDescriptor methodDescriptor
        end local 9 // java.lang.Object methodDescriptorData
        24: .line 148
      StackMap locals: com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor java.io.Reader java.util.Set com.oracle.svm.core.util.json.JSONParser java.util.List java.lang.Object java.util.Iterator com.oracle.svm.hosted.substitute.ClassDescriptor java.lang.Class top java.util.Iterator
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 15
        25: .line 162
            aload 7 /* classDescriptor */
            invokevirtual com.oracle.svm.hosted.substitute.ClassDescriptor.fields:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 10
            goto 30
      StackMap locals:
      StackMap stack:
        26: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            astore 9 /* fieldDescriptorData */
        start local 9 // java.lang.Object fieldDescriptorData
        27: .line 163
            new com.oracle.svm.hosted.substitute.FieldDescriptor
            dup
            aload 9 /* fieldDescriptorData */
            invokespecial com.oracle.svm.hosted.substitute.FieldDescriptor.<init>:(Ljava/lang/Object;)V
            astore 11 /* fieldDescriptor */
        start local 11 // com.oracle.svm.hosted.substitute.FieldDescriptor fieldDescriptor
        28: .line 164
            aload 8 /* annotatedClass */
            aload 11 /* fieldDescriptor */
            invokevirtual com.oracle.svm.hosted.substitute.FieldDescriptor.annotatedName:()Ljava/lang/String;
            invokestatic com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor.findField:(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Field;
            astore 12 /* annotatedField */
        start local 12 // java.lang.reflect.Field annotatedField
        29: .line 165
            aload 0 /* this */
            getfield com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor.fieldDescriptors:Ljava/util/Map;
            aload 12 /* annotatedField */
            aload 11 /* fieldDescriptor */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 12 // java.lang.reflect.Field annotatedField
        end local 11 // com.oracle.svm.hosted.substitute.FieldDescriptor fieldDescriptor
        end local 9 // java.lang.Object fieldDescriptorData
        30: .line 162
      StackMap locals:
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 26
        end local 8 // java.lang.Class annotatedClass
        end local 7 // com.oracle.svm.hosted.substitute.ClassDescriptor classDescriptor
        end local 5 // java.lang.Object classDescriptorData
        31: .line 132
      StackMap locals: com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor java.io.Reader java.util.Set com.oracle.svm.core.util.json.JSONParser java.util.List top java.util.Iterator
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        32: .line 168
            return
        end local 4 // java.util.List allDescriptors
        end local 3 // com.oracle.svm.core.util.json.JSONParser parser
        end local 2 // java.util.Set annotatedClasses
        end local 1 // java.io.Reader reader
        end local 0 // com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   33     0                  this  Lcom/oracle/svm/hosted/substitute/DeclarativeSubstitutionProcessor;
            0   33     1                reader  Ljava/io/Reader;
            1   33     2      annotatedClasses  Ljava/util/Set<Ljava/lang/Class<*>;>;
            2   33     3                parser  Lcom/oracle/svm/core/util/json/JSONParser;
            3   33     4        allDescriptors  Ljava/util/List<Ljava/lang/Object;>;
            5   31     5   classDescriptorData  Ljava/lang/Object;
            8   31     7       classDescriptor  Lcom/oracle/svm/hosted/substitute/ClassDescriptor;
            9   31     8        annotatedClass  Ljava/lang/Class<*>;
           16   24     9  methodDescriptorData  Ljava/lang/Object;
           19   24    11      methodDescriptor  Lcom/oracle/svm/hosted/substitute/MethodDescriptor;
           21   22    12       annotatedMethod  Ljava/lang/reflect/Executable;
           23   24    12       annotatedMethod  Ljava/lang/reflect/Executable;
           27   30     9   fieldDescriptorData  Ljava/lang/Object;
           28   30    11       fieldDescriptor  Lcom/oracle/svm/hosted/substitute/FieldDescriptor;
           29   30    12        annotatedField  Ljava/lang/reflect/Field;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      reader  

  private static java.lang.reflect.Executable findMethod(java.lang.Class<?>, java.lang.String, boolean);
    descriptor: (Ljava/lang/Class;Ljava/lang/String;Z)Ljava/lang/reflect/Executable;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=8, args_size=3
        start local 0 // java.lang.Class declaringClass
        start local 1 // java.lang.String methodName
        start local 2 // boolean fatalIfNotUnique
         0: .line 171
            aconst_null
            astore 3 /* result */
        start local 3 // java.lang.reflect.Executable result
         1: .line 172
            aload 1 /* methodName */
            ldc "<init>"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 16
         2: .line 173
            aload 0 /* declaringClass */
            invokevirtual java.lang.Class.getDeclaredConstructors:()[Ljava/lang/reflect/Constructor;
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 11
      StackMap locals: java.lang.Class java.lang.String int java.lang.reflect.Executable top int int java.lang.reflect.Constructor[]
      StackMap stack:
         3: aload 7
            iload 5
            aaload
            astore 4 /* c */
        start local 4 // java.lang.reflect.Constructor c
         4: .line 174
            aload 3 /* result */
            ifnull 9
         5: .line 175
            iload 2 /* fatalIfNotUnique */
            ifeq 6
            iconst_0
            goto 7
      StackMap locals: java.lang.Class java.lang.String int java.lang.reflect.Executable java.lang.reflect.Constructor int int java.lang.reflect.Constructor[]
      StackMap stack:
         6: iconst_1
      StackMap locals:
      StackMap stack: int
         7: ldc "two constructors found: %s, %s "
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* result */
            aastore
            dup
            iconst_1
            aload 4 /* c */
            aastore
            invokestatic com.oracle.svm.core.util.UserError.guarantee:(ZLjava/lang/String;[Ljava/lang/Object;)V
         8: .line 176
            aconst_null
            areturn
         9: .line 178
      StackMap locals:
      StackMap stack:
            aload 4 /* c */
            astore 3 /* result */
        end local 4 // java.lang.reflect.Constructor c
        10: .line 173
            iinc 5 1
      StackMap locals: java.lang.Class java.lang.String int java.lang.reflect.Executable top int int java.lang.reflect.Constructor[]
      StackMap stack:
        11: iload 5
            iload 6
            if_icmplt 3
        12: .line 180
            iload 2 /* fatalIfNotUnique */
            ifeq 13
            aload 3 /* result */
            ifnonnull 13
            iconst_0
            goto 14
      StackMap locals: java.lang.Class java.lang.String int java.lang.reflect.Executable
      StackMap stack:
        13: iconst_1
      StackMap locals:
      StackMap stack: int
        14: ldc "no constructor found: %s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* declaringClass */
            aastore
            invokestatic com.oracle.svm.core.util.UserError.guarantee:(ZLjava/lang/String;[Ljava/lang/Object;)V
        15: .line 181
            goto 30
        16: .line 182
      StackMap locals:
      StackMap stack:
            aload 0 /* declaringClass */
            invokevirtual java.lang.Class.getDeclaredMethods:()[Ljava/lang/reflect/Method;
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 26
      StackMap locals: java.lang.Class java.lang.String int java.lang.reflect.Executable top int int java.lang.reflect.Method[]
      StackMap stack:
        17: aload 7
            iload 5
            aaload
            astore 4 /* m */
        start local 4 // java.lang.reflect.Method m
        18: .line 183
            aload 4 /* m */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            aload 1 /* methodName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 25
        19: .line 184
            aload 3 /* result */
            ifnull 24
        20: .line 185
            iload 2 /* fatalIfNotUnique */
            ifeq 21
            iconst_0
            goto 22
      StackMap locals: java.lang.Class java.lang.String int java.lang.reflect.Executable java.lang.reflect.Method int int java.lang.reflect.Method[]
      StackMap stack:
        21: iconst_1
      StackMap locals:
      StackMap stack: int
        22: ldc "two methods with same name found: %s, %s "
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* result */
            aastore
            dup
            iconst_1
            aload 4 /* m */
            aastore
            invokestatic com.oracle.svm.core.util.UserError.guarantee:(ZLjava/lang/String;[Ljava/lang/Object;)V
        23: .line 186
            aconst_null
            areturn
        24: .line 188
      StackMap locals:
      StackMap stack:
            aload 4 /* m */
            astore 3 /* result */
        end local 4 // java.lang.reflect.Method m
        25: .line 182
      StackMap locals: java.lang.Class java.lang.String int java.lang.reflect.Executable top int int java.lang.reflect.Method[]
      StackMap stack:
            iinc 5 1
      StackMap locals:
      StackMap stack:
        26: iload 5
            iload 6
            if_icmplt 17
        27: .line 191
            iload 2 /* fatalIfNotUnique */
            ifeq 28
            aload 3 /* result */
            ifnonnull 28
            iconst_0
            goto 29
      StackMap locals: java.lang.Class java.lang.String int java.lang.reflect.Executable
      StackMap stack:
        28: iconst_1
      StackMap locals:
      StackMap stack: int
        29: ldc "method not found: %s, method name %s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* declaringClass */
            aastore
            dup
            iconst_1
            aload 1 /* methodName */
            aastore
            invokestatic com.oracle.svm.core.util.UserError.guarantee:(ZLjava/lang/String;[Ljava/lang/Object;)V
        30: .line 193
      StackMap locals:
      StackMap stack:
            aload 3 /* result */
            areturn
        end local 3 // java.lang.reflect.Executable result
        end local 2 // boolean fatalIfNotUnique
        end local 1 // java.lang.String methodName
        end local 0 // java.lang.Class declaringClass
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   31     0    declaringClass  Ljava/lang/Class<*>;
            0   31     1        methodName  Ljava/lang/String;
            0   31     2  fatalIfNotUnique  Z
            1   31     3            result  Ljava/lang/reflect/Executable;
            4   10     4                 c  Ljava/lang/reflect/Constructor<*>;
           18   25     4                 m  Ljava/lang/reflect/Method;
    Signature: (Ljava/lang/Class<*>;Ljava/lang/String;Z)Ljava/lang/reflect/Executable;
    MethodParameters:
                  Name  Flags
      declaringClass    
      methodName        
      fatalIfNotUnique  

  private java.lang.reflect.Executable findMethod(java.lang.Class<?>, java.lang.String, java.lang.String[]);
    descriptor: (Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/reflect/Executable;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=6, args_size=4
        start local 0 // com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor this
        start local 1 // java.lang.Class declaringClass
        start local 2 // java.lang.String methodName
        start local 3 // java.lang.String[] parameterTypeNames
         0: .line 197
            aload 3 /* parameterTypeNames */
            arraylength
            anewarray java.lang.Class
            astore 4 /* parameterTypes */
        start local 4 // java.lang.Class[] parameterTypes
         1: .line 198
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         2: goto 5
         3: .line 199
      StackMap locals: java.lang.Class[] int
      StackMap stack:
            aload 4 /* parameterTypes */
            iload 5 /* i */
            aload 0 /* this */
            getfield com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor.imageClassLoader:Lcom/oracle/svm/hosted/ImageClassLoader;
            aload 3 /* parameterTypeNames */
            iload 5 /* i */
            aaload
            invokevirtual com.oracle.svm.hosted.ImageClassLoader.findClassOrFail:(Ljava/lang/String;)Ljava/lang/Class;
            aastore
         4: .line 198
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 5 /* i */
            aload 4 /* parameterTypes */
            arraylength
            if_icmplt 3
        end local 5 // int i
         6: .line 202
            aload 2 /* methodName */
            ldc "<init>"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 9
         7: .line 203
            aload 1 /* declaringClass */
            aload 4 /* parameterTypes */
            invokevirtual java.lang.Class.getDeclaredConstructor:([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
         8: areturn
         9: .line 205
      StackMap locals:
      StackMap stack:
            aload 1 /* declaringClass */
            aload 2 /* methodName */
            aload 4 /* parameterTypes */
            invokevirtual java.lang.Class.getDeclaredMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
        10: areturn
        11: .line 207
      StackMap locals:
      StackMap stack: java.lang.NoSuchMethodException
            pop
        12: .line 208
            new java.lang.StringBuilder
            dup
            ldc "method not found: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* declaringClass */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc ", method name "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* methodName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ", parameter types "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* parameterTypeNames */
            invokestatic java.util.Arrays.toString:([Ljava/lang/Object;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic com.oracle.svm.core.util.VMError.shouldNotReachHere:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        end local 4 // java.lang.Class[] parameterTypes
        end local 3 // java.lang.String[] parameterTypeNames
        end local 2 // java.lang.String methodName
        end local 1 // java.lang.Class declaringClass
        end local 0 // com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   13     0                this  Lcom/oracle/svm/hosted/substitute/DeclarativeSubstitutionProcessor;
            0   13     1      declaringClass  Ljava/lang/Class<*>;
            0   13     2          methodName  Ljava/lang/String;
            0   13     3  parameterTypeNames  [Ljava/lang/String;
            1   13     4      parameterTypes  [Ljava/lang/Class;
            2    6     5                   i  I
      Exception table:
        from    to  target  type
           6     8      11  Class java.lang.NoSuchMethodException
           9    10      11  Class java.lang.NoSuchMethodException
    Signature: (Ljava/lang/Class<*>;Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/reflect/Executable;
    MethodParameters:
                    Name  Flags
      declaringClass      
      methodName          
      parameterTypeNames  

  private static java.lang.reflect.Field findField(java.lang.Class<?>, java.lang.String);
    descriptor: (Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Field;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.lang.Class declaringClass
        start local 1 // java.lang.String fieldName
         0: .line 214
            aload 0 /* declaringClass */
            aload 1 /* fieldName */
            invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
         1: areturn
         2: .line 215
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldException
            astore 2 /* e */
        start local 2 // java.lang.NoSuchFieldException e
         3: .line 216
            aload 2 /* e */
            invokestatic com.oracle.svm.core.util.VMError.shouldNotReachHere:(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
            athrow
        end local 2 // java.lang.NoSuchFieldException e
        end local 1 // java.lang.String fieldName
        end local 0 // java.lang.Class declaringClass
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0  declaringClass  Ljava/lang/Class<*>;
            0    4     1       fieldName  Ljava/lang/String;
            3    4     2               e  Ljava/lang/NoSuchFieldException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.NoSuchFieldException
    Signature: (Ljava/lang/Class<*>;Ljava/lang/String;)Ljava/lang/reflect/Field;
    MethodParameters:
                Name  Flags
      declaringClass  
      fieldName       

  protected java.util.List<java.lang.Class<?>> findTargetClasses();
    descriptor: ()Ljava/util/List;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor this
         0: .line 222
            aload 0 /* this */
            invokespecial com.oracle.svm.hosted.substitute.AnnotationSubstitutionProcessor.findTargetClasses:()Ljava/util/List;
            astore 1 /* result */
        start local 1 // java.util.List result
         1: .line 223
            aload 1 /* result */
            aload 0 /* this */
            getfield com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor.classDescriptors:Ljava/util/Map;
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
            pop
         2: .line 224
            aload 1 /* result */
            areturn
        end local 1 // java.util.List result
        end local 0 // com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lcom/oracle/svm/hosted/substitute/DeclarativeSubstitutionProcessor;
            1    3     1  result  Ljava/util/List<Ljava/lang/Class<*>;>;
    Signature: ()Ljava/util/List<Ljava/lang/Class<*>;>;

  protected <T extends java.lang.annotation.Annotation> T lookupAnnotation(java.lang.reflect.AnnotatedElement, java.lang.Class<T>);
    descriptor: (Ljava/lang/reflect/AnnotatedElement;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor this
        start local 1 // java.lang.reflect.AnnotatedElement element
        start local 2 // java.lang.Class annotationClass
         0: .line 230
            aload 1 /* element */
            instanceof java.lang.Class
            ifeq 21
            aload 0 /* this */
            getfield com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor.classDescriptors:Ljava/util/Map;
            aload 1 /* element */
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifeq 21
         1: .line 231
            aload 0 /* this */
            getfield com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor.classDescriptors:Ljava/util/Map;
            aload 1 /* element */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.svm.hosted.substitute.ClassDescriptor
            astore 4 /* classDescriptor */
        start local 4 // com.oracle.svm.hosted.substitute.ClassDescriptor classDescriptor
         2: .line 232
            aload 2 /* annotationClass */
            ldc Lorg/graalvm/nativeimage/Platforms;
            if_acmpne 7
         3: .line 233
            aload 4 /* classDescriptor */
            invokevirtual com.oracle.svm.hosted.substitute.ClassDescriptor.platforms:()Ljava/util/List;
            ifnull 4
            new com.oracle.svm.hosted.substitute.PlatformsDescriptor$PlatformsImpl
            dup
            aload 4 /* classDescriptor */
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            aload 0 /* this */
            getfield com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor.imageClassLoader:Lcom/oracle/svm/hosted/ImageClassLoader;
            invokespecial com.oracle.svm.hosted.substitute.PlatformsDescriptor$PlatformsImpl.<init>:(Lcom/oracle/svm/hosted/substitute/PlatformsDescriptor;Lcom/oracle/svm/hosted/ImageClassLoader;)V
            goto 5
      StackMap locals: com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor java.lang.reflect.AnnotatedElement java.lang.Class top com.oracle.svm.hosted.substitute.ClassDescriptor
      StackMap stack:
         4: aconst_null
      StackMap locals:
      StackMap stack: com.oracle.svm.hosted.substitute.PlatformsDescriptor$PlatformsImpl
         5: astore 3 /* result */
        start local 3 // java.lang.annotation.Annotation result
         6: .line 234
            goto 94
        end local 3 // java.lang.annotation.Annotation result
      StackMap locals:
      StackMap stack:
         7: aload 2 /* annotationClass */
            ldc Lcom/oracle/svm/core/annotate/TargetClass;
            if_acmpne 10
         8: .line 235
            new com.oracle.svm.hosted.substitute.ClassDescriptor$TargetClassImpl
            dup
            aload 4 /* classDescriptor */
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            invokespecial com.oracle.svm.hosted.substitute.ClassDescriptor$TargetClassImpl.<init>:(Lcom/oracle/svm/hosted/substitute/ClassDescriptor;)V
            astore 3 /* result */
        start local 3 // java.lang.annotation.Annotation result
         9: .line 236
            goto 94
        end local 3 // java.lang.annotation.Annotation result
      StackMap locals:
      StackMap stack:
        10: aload 2 /* annotationClass */
            ldc Lcom/oracle/svm/core/annotate/Delete;
            if_acmpne 15
        11: .line 237
            aload 4 /* classDescriptor */
            invokevirtual com.oracle.svm.hosted.substitute.ClassDescriptor.delete:()Z
            ifeq 12
            new com.oracle.svm.hosted.substitute.DeleteImpl
            dup
            invokespecial com.oracle.svm.hosted.substitute.DeleteImpl.<init>:()V
            goto 13
      StackMap locals:
      StackMap stack:
        12: aconst_null
      StackMap locals:
      StackMap stack: com.oracle.svm.hosted.substitute.DeleteImpl
        13: astore 3 /* result */
        start local 3 // java.lang.annotation.Annotation result
        14: .line 238
            goto 94
        end local 3 // java.lang.annotation.Annotation result
      StackMap locals:
      StackMap stack:
        15: aload 2 /* annotationClass */
            ldc Lcom/oracle/svm/core/annotate/Substitute;
            if_acmpne 20
        16: .line 239
            aload 4 /* classDescriptor */
            invokevirtual com.oracle.svm.hosted.substitute.ClassDescriptor.substitute:()Z
            ifeq 17
            new com.oracle.svm.hosted.substitute.SubstituteImpl
            dup
            invokespecial com.oracle.svm.hosted.substitute.SubstituteImpl.<init>:()V
            goto 18
      StackMap locals:
      StackMap stack:
        17: aconst_null
      StackMap locals:
      StackMap stack: com.oracle.svm.hosted.substitute.SubstituteImpl
        18: astore 3 /* result */
        start local 3 // java.lang.annotation.Annotation result
        19: .line 240
            goto 94
        end local 3 // java.lang.annotation.Annotation result
        20: .line 241
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "Unexpected annotation type: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* annotationClass */
            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;
            invokestatic com.oracle.svm.core.util.VMError.shouldNotReachHere:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        end local 4 // com.oracle.svm.hosted.substitute.ClassDescriptor classDescriptor
        21: .line 244
      StackMap locals: com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor java.lang.reflect.AnnotatedElement java.lang.Class
      StackMap stack:
            aload 1 /* element */
            instanceof java.lang.reflect.Executable
            ifeq 57
            aload 0 /* this */
            getfield com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor.methodDescriptors:Ljava/util/Map;
            aload 1 /* element */
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifeq 57
        22: .line 245
            aload 0 /* this */
            getfield com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor.methodDescriptors:Ljava/util/Map;
            aload 1 /* element */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.svm.hosted.substitute.MethodDescriptor
            astore 4 /* methodDescriptor */
        start local 4 // com.oracle.svm.hosted.substitute.MethodDescriptor methodDescriptor
        23: .line 246
            aload 2 /* annotationClass */
            ldc Lorg/graalvm/nativeimage/Platforms;
            if_acmpne 28
        24: .line 247
            aload 4 /* methodDescriptor */
            invokevirtual com.oracle.svm.hosted.substitute.MethodDescriptor.platforms:()Ljava/util/List;
            ifnull 25
            new com.oracle.svm.hosted.substitute.PlatformsDescriptor$PlatformsImpl
            dup
            aload 4 /* methodDescriptor */
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            aload 0 /* this */
            getfield com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor.imageClassLoader:Lcom/oracle/svm/hosted/ImageClassLoader;
            invokespecial com.oracle.svm.hosted.substitute.PlatformsDescriptor$PlatformsImpl.<init>:(Lcom/oracle/svm/hosted/substitute/PlatformsDescriptor;Lcom/oracle/svm/hosted/ImageClassLoader;)V
            goto 26
      StackMap locals: com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor java.lang.reflect.AnnotatedElement java.lang.Class top com.oracle.svm.hosted.substitute.MethodDescriptor
      StackMap stack:
        25: aconst_null
      StackMap locals:
      StackMap stack: com.oracle.svm.hosted.substitute.PlatformsDescriptor$PlatformsImpl
        26: astore 3 /* result */
        start local 3 // java.lang.annotation.Annotation result
        27: .line 248
            goto 94
        end local 3 // java.lang.annotation.Annotation result
      StackMap locals:
      StackMap stack:
        28: aload 2 /* annotationClass */
            ldc Lcom/oracle/svm/core/annotate/TargetElement;
            if_acmpne 31
        29: .line 249
            new com.oracle.svm.hosted.substitute.ElementDescriptor$TargetElementImpl
            dup
            aload 4 /* methodDescriptor */
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            invokespecial com.oracle.svm.hosted.substitute.ElementDescriptor$TargetElementImpl.<init>:(Lcom/oracle/svm/hosted/substitute/ElementDescriptor;)V
            astore 3 /* result */
        start local 3 // java.lang.annotation.Annotation result
        30: .line 250
            goto 94
        end local 3 // java.lang.annotation.Annotation result
      StackMap locals:
      StackMap stack:
        31: aload 2 /* annotationClass */
            ldc Lcom/oracle/svm/core/annotate/Delete;
            if_acmpne 36
        32: .line 251
            aload 4 /* methodDescriptor */
            invokevirtual com.oracle.svm.hosted.substitute.MethodDescriptor.delete:()Z
            ifeq 33
            new com.oracle.svm.hosted.substitute.DeleteImpl
            dup
            invokespecial com.oracle.svm.hosted.substitute.DeleteImpl.<init>:()V
            goto 34
      StackMap locals:
      StackMap stack:
        33: aconst_null
      StackMap locals:
      StackMap stack: com.oracle.svm.hosted.substitute.DeleteImpl
        34: astore 3 /* result */
        start local 3 // java.lang.annotation.Annotation result
        35: .line 252
            goto 94
        end local 3 // java.lang.annotation.Annotation result
      StackMap locals:
      StackMap stack:
        36: aload 2 /* annotationClass */
            ldc Lcom/oracle/svm/core/annotate/Substitute;
            if_acmpne 41
        37: .line 253
            aload 4 /* methodDescriptor */
            invokevirtual com.oracle.svm.hosted.substitute.MethodDescriptor.substitute:()Z
            ifeq 38
            new com.oracle.svm.hosted.substitute.SubstituteImpl
            dup
            invokespecial com.oracle.svm.hosted.substitute.SubstituteImpl.<init>:()V
            goto 39
      StackMap locals:
      StackMap stack:
        38: aconst_null
      StackMap locals:
      StackMap stack: com.oracle.svm.hosted.substitute.SubstituteImpl
        39: astore 3 /* result */
        start local 3 // java.lang.annotation.Annotation result
        40: .line 254
            goto 94
        end local 3 // java.lang.annotation.Annotation result
      StackMap locals:
      StackMap stack:
        41: aload 2 /* annotationClass */
            ldc Lcom/oracle/svm/core/annotate/AnnotateOriginal;
            if_acmpne 46
        42: .line 255
            aload 4 /* methodDescriptor */
            invokevirtual com.oracle.svm.hosted.substitute.MethodDescriptor.annotateOriginal:()Z
            ifeq 43
            new com.oracle.svm.hosted.substitute.AnnotateOriginalImpl
            dup
            invokespecial com.oracle.svm.hosted.substitute.AnnotateOriginalImpl.<init>:()V
            goto 44
      StackMap locals:
      StackMap stack:
        43: aconst_null
      StackMap locals:
      StackMap stack: com.oracle.svm.hosted.substitute.AnnotateOriginalImpl
        44: astore 3 /* result */
        start local 3 // java.lang.annotation.Annotation result
        45: .line 256
            goto 94
        end local 3 // java.lang.annotation.Annotation result
      StackMap locals:
      StackMap stack:
        46: aload 2 /* annotationClass */
            ldc Lcom/oracle/svm/core/annotate/KeepOriginal;
            if_acmpne 51
        47: .line 257
            aload 4 /* methodDescriptor */
            invokevirtual com.oracle.svm.hosted.substitute.MethodDescriptor.keepOriginal:()Z
            ifeq 48
            new com.oracle.svm.hosted.substitute.KeepOriginalImpl
            dup
            invokespecial com.oracle.svm.hosted.substitute.KeepOriginalImpl.<init>:()V
            goto 49
      StackMap locals:
      StackMap stack:
        48: aconst_null
      StackMap locals:
      StackMap stack: com.oracle.svm.hosted.substitute.KeepOriginalImpl
        49: astore 3 /* result */
        start local 3 // java.lang.annotation.Annotation result
        50: .line 258
            goto 94
        end local 3 // java.lang.annotation.Annotation result
      StackMap locals:
      StackMap stack:
        51: aload 2 /* annotationClass */
            ldc Lcom/oracle/svm/core/annotate/Alias;
            if_acmpne 56
        52: .line 259
            aload 4 /* methodDescriptor */
            invokevirtual com.oracle.svm.hosted.substitute.MethodDescriptor.alias:()Z
            ifeq 53
            new com.oracle.svm.hosted.substitute.AliasImpl
            dup
            invokespecial com.oracle.svm.hosted.substitute.AliasImpl.<init>:()V
            goto 54
      StackMap locals:
      StackMap stack:
        53: aconst_null
      StackMap locals:
      StackMap stack: com.oracle.svm.hosted.substitute.AliasImpl
        54: astore 3 /* result */
        start local 3 // java.lang.annotation.Annotation result
        55: .line 260
            goto 94
        end local 3 // java.lang.annotation.Annotation result
        56: .line 261
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "Unexpected annotation type: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* annotationClass */
            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;
            invokestatic com.oracle.svm.core.util.VMError.shouldNotReachHere:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        end local 4 // com.oracle.svm.hosted.substitute.MethodDescriptor methodDescriptor
        57: .line 264
      StackMap locals: com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor java.lang.reflect.AnnotatedElement java.lang.Class
      StackMap stack:
            aload 1 /* element */
            instanceof java.lang.reflect.Field
            ifeq 93
            aload 0 /* this */
            getfield com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor.fieldDescriptors:Ljava/util/Map;
            aload 1 /* element */
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifeq 93
        58: .line 265
            aload 0 /* this */
            getfield com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor.fieldDescriptors:Ljava/util/Map;
            aload 1 /* element */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.svm.hosted.substitute.FieldDescriptor
            astore 4 /* fieldDescriptor */
        start local 4 // com.oracle.svm.hosted.substitute.FieldDescriptor fieldDescriptor
        59: .line 266
            aload 2 /* annotationClass */
            ldc Lorg/graalvm/nativeimage/Platforms;
            if_acmpne 64
        60: .line 267
            aload 4 /* fieldDescriptor */
            invokevirtual com.oracle.svm.hosted.substitute.FieldDescriptor.platforms:()Ljava/util/List;
            ifnull 61
            new com.oracle.svm.hosted.substitute.PlatformsDescriptor$PlatformsImpl
            dup
            aload 4 /* fieldDescriptor */
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            aload 0 /* this */
            getfield com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor.imageClassLoader:Lcom/oracle/svm/hosted/ImageClassLoader;
            invokespecial com.oracle.svm.hosted.substitute.PlatformsDescriptor$PlatformsImpl.<init>:(Lcom/oracle/svm/hosted/substitute/PlatformsDescriptor;Lcom/oracle/svm/hosted/ImageClassLoader;)V
            goto 62
      StackMap locals: com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor java.lang.reflect.AnnotatedElement java.lang.Class top com.oracle.svm.hosted.substitute.FieldDescriptor
      StackMap stack:
        61: aconst_null
      StackMap locals:
      StackMap stack: com.oracle.svm.hosted.substitute.PlatformsDescriptor$PlatformsImpl
        62: astore 3 /* result */
        start local 3 // java.lang.annotation.Annotation result
        63: .line 268
            goto 94
        end local 3 // java.lang.annotation.Annotation result
      StackMap locals:
      StackMap stack:
        64: aload 2 /* annotationClass */
            ldc Lcom/oracle/svm/core/annotate/TargetElement;
            if_acmpne 67
        65: .line 269
            new com.oracle.svm.hosted.substitute.ElementDescriptor$TargetElementImpl
            dup
            aload 4 /* fieldDescriptor */
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            invokespecial com.oracle.svm.hosted.substitute.ElementDescriptor$TargetElementImpl.<init>:(Lcom/oracle/svm/hosted/substitute/ElementDescriptor;)V
            astore 3 /* result */
        start local 3 // java.lang.annotation.Annotation result
        66: .line 270
            goto 94
        end local 3 // java.lang.annotation.Annotation result
      StackMap locals:
      StackMap stack:
        67: aload 2 /* annotationClass */
            ldc Lcom/oracle/svm/core/annotate/Delete;
            if_acmpne 72
        68: .line 271
            aload 4 /* fieldDescriptor */
            invokevirtual com.oracle.svm.hosted.substitute.FieldDescriptor.delete:()Z
            ifeq 69
            new com.oracle.svm.hosted.substitute.DeleteImpl
            dup
            invokespecial com.oracle.svm.hosted.substitute.DeleteImpl.<init>:()V
            goto 70
      StackMap locals:
      StackMap stack:
        69: aconst_null
      StackMap locals:
      StackMap stack: com.oracle.svm.hosted.substitute.DeleteImpl
        70: astore 3 /* result */
        start local 3 // java.lang.annotation.Annotation result
        71: .line 272
            goto 94
        end local 3 // java.lang.annotation.Annotation result
      StackMap locals:
      StackMap stack:
        72: aload 2 /* annotationClass */
            ldc Lcom/oracle/svm/core/annotate/Alias;
            if_acmpne 77
        73: .line 273
            aload 4 /* fieldDescriptor */
            invokevirtual com.oracle.svm.hosted.substitute.FieldDescriptor.alias:()Z
            ifeq 74
            new com.oracle.svm.hosted.substitute.AliasImpl
            dup
            invokespecial com.oracle.svm.hosted.substitute.AliasImpl.<init>:()V
            goto 75
      StackMap locals:
      StackMap stack:
        74: aconst_null
      StackMap locals:
      StackMap stack: com.oracle.svm.hosted.substitute.AliasImpl
        75: astore 3 /* result */
        start local 3 // java.lang.annotation.Annotation result
        76: .line 274
            goto 94
        end local 3 // java.lang.annotation.Annotation result
      StackMap locals:
      StackMap stack:
        77: aload 2 /* annotationClass */
            ldc Lcom/oracle/svm/core/annotate/Inject;
            if_acmpne 82
        78: .line 275
            aload 4 /* fieldDescriptor */
            invokevirtual com.oracle.svm.hosted.substitute.FieldDescriptor.inject:()Z
            ifeq 79
            new com.oracle.svm.hosted.substitute.InjectImpl
            dup
            invokespecial com.oracle.svm.hosted.substitute.InjectImpl.<init>:()V
            goto 80
      StackMap locals:
      StackMap stack:
        79: aconst_null
      StackMap locals:
      StackMap stack: com.oracle.svm.hosted.substitute.InjectImpl
        80: astore 3 /* result */
        start local 3 // java.lang.annotation.Annotation result
        81: .line 276
            goto 94
        end local 3 // java.lang.annotation.Annotation result
      StackMap locals:
      StackMap stack:
        82: aload 2 /* annotationClass */
            ldc Lcom/oracle/svm/core/annotate/RecomputeFieldValue;
            if_acmpne 87
        83: .line 277
            aload 4 /* fieldDescriptor */
            invokevirtual com.oracle.svm.hosted.substitute.FieldDescriptor.kind:()Lcom/oracle/svm/core/annotate/RecomputeFieldValue$Kind;
            ifnull 84
            new com.oracle.svm.hosted.substitute.FieldDescriptor$RecomputeFieldValueImpl
            dup
            aload 4 /* fieldDescriptor */
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            invokespecial com.oracle.svm.hosted.substitute.FieldDescriptor$RecomputeFieldValueImpl.<init>:(Lcom/oracle/svm/hosted/substitute/FieldDescriptor;)V
            goto 85
      StackMap locals:
      StackMap stack:
        84: aconst_null
      StackMap locals:
      StackMap stack: com.oracle.svm.hosted.substitute.FieldDescriptor$RecomputeFieldValueImpl
        85: astore 3 /* result */
        start local 3 // java.lang.annotation.Annotation result
        86: .line 278
            goto 94
        end local 3 // java.lang.annotation.Annotation result
      StackMap locals:
      StackMap stack:
        87: aload 2 /* annotationClass */
            ldc Lcom/oracle/svm/core/annotate/InjectAccessors;
            if_acmpne 92
        88: .line 279
            aload 4 /* fieldDescriptor */
            invokevirtual com.oracle.svm.hosted.substitute.FieldDescriptor.injectAccessors:()Ljava/lang/String;
            ifnull 89
            new com.oracle.svm.hosted.substitute.FieldDescriptor$InjectAccessorsImpl
            dup
            aload 4 /* fieldDescriptor */
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            aload 0 /* this */
            getfield com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor.imageClassLoader:Lcom/oracle/svm/hosted/ImageClassLoader;
            invokespecial com.oracle.svm.hosted.substitute.FieldDescriptor$InjectAccessorsImpl.<init>:(Lcom/oracle/svm/hosted/substitute/FieldDescriptor;Lcom/oracle/svm/hosted/ImageClassLoader;)V
            goto 90
      StackMap locals:
      StackMap stack:
        89: aconst_null
      StackMap locals:
      StackMap stack: com.oracle.svm.hosted.substitute.FieldDescriptor$InjectAccessorsImpl
        90: astore 3 /* result */
        start local 3 // java.lang.annotation.Annotation result
        91: .line 280
            goto 94
        end local 3 // java.lang.annotation.Annotation result
        92: .line 281
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "Unexpected annotation type: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* annotationClass */
            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;
            invokestatic com.oracle.svm.core.util.VMError.shouldNotReachHere:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        end local 4 // com.oracle.svm.hosted.substitute.FieldDescriptor fieldDescriptor
        93: .line 285
      StackMap locals: com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor java.lang.reflect.AnnotatedElement java.lang.Class
      StackMap stack:
            aload 0 /* this */
            aload 1 /* element */
            aload 2 /* annotationClass */
            invokespecial com.oracle.svm.hosted.substitute.AnnotationSubstitutionProcessor.lookupAnnotation:(Ljava/lang/reflect/AnnotatedElement;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            astore 3 /* result */
        start local 3 // java.lang.annotation.Annotation result
        94: .line 287
      StackMap locals: java.lang.annotation.Annotation
      StackMap stack:
            aload 2 /* annotationClass */
            aload 3 /* result */
            invokevirtual java.lang.Class.cast:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.annotation.Annotation
            areturn
        end local 3 // java.lang.annotation.Annotation result
        end local 2 // java.lang.Class annotationClass
        end local 1 // java.lang.reflect.AnnotatedElement element
        end local 0 // com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   95     0              this  Lcom/oracle/svm/hosted/substitute/DeclarativeSubstitutionProcessor;
            0   95     1           element  Ljava/lang/reflect/AnnotatedElement;
            0   95     2   annotationClass  Ljava/lang/Class<TT;>;
            6    7     3            result  Ljava/lang/annotation/Annotation;
            9   10     3            result  Ljava/lang/annotation/Annotation;
           14   15     3            result  Ljava/lang/annotation/Annotation;
           19   20     3            result  Ljava/lang/annotation/Annotation;
           27   28     3            result  Ljava/lang/annotation/Annotation;
           30   31     3            result  Ljava/lang/annotation/Annotation;
           35   36     3            result  Ljava/lang/annotation/Annotation;
           40   41     3            result  Ljava/lang/annotation/Annotation;
           45   46     3            result  Ljava/lang/annotation/Annotation;
           50   51     3            result  Ljava/lang/annotation/Annotation;
           55   56     3            result  Ljava/lang/annotation/Annotation;
           63   64     3            result  Ljava/lang/annotation/Annotation;
           66   67     3            result  Ljava/lang/annotation/Annotation;
           71   72     3            result  Ljava/lang/annotation/Annotation;
           76   77     3            result  Ljava/lang/annotation/Annotation;
           81   82     3            result  Ljava/lang/annotation/Annotation;
           86   87     3            result  Ljava/lang/annotation/Annotation;
           91   92     3            result  Ljava/lang/annotation/Annotation;
           94   95     3            result  Ljava/lang/annotation/Annotation;
            2   21     4   classDescriptor  Lcom/oracle/svm/hosted/substitute/ClassDescriptor;
           23   57     4  methodDescriptor  Lcom/oracle/svm/hosted/substitute/MethodDescriptor;
           59   93     4   fieldDescriptor  Lcom/oracle/svm/hosted/substitute/FieldDescriptor;
    Signature: <T::Ljava/lang/annotation/Annotation;>(Ljava/lang/reflect/AnnotatedElement;Ljava/lang/Class<TT;>;)TT;
    MethodParameters:
                 Name  Flags
      element          
      annotationClass  
}
SourceFile: "DeclarativeSubstitutionProcessor.java"
NestMembers:
  com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor$Options
InnerClasses:
  public final Kind = com.oracle.svm.core.annotate.RecomputeFieldValue$Kind of com.oracle.svm.core.annotate.RecomputeFieldValue
  public final Options = com.oracle.svm.core.configure.ConfigurationFiles$Options of com.oracle.svm.core.configure.ConfigurationFiles
  public UserException = com.oracle.svm.core.util.UserError$UserException of com.oracle.svm.core.util.UserError
  TargetClassImpl = com.oracle.svm.hosted.substitute.ClassDescriptor$TargetClassImpl of com.oracle.svm.hosted.substitute.ClassDescriptor
  public Options = com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor$Options of com.oracle.svm.hosted.substitute.DeclarativeSubstitutionProcessor
  TargetElementImpl = com.oracle.svm.hosted.substitute.ElementDescriptor$TargetElementImpl of com.oracle.svm.hosted.substitute.ElementDescriptor
  InjectAccessorsImpl = com.oracle.svm.hosted.substitute.FieldDescriptor$InjectAccessorsImpl of com.oracle.svm.hosted.substitute.FieldDescriptor
  RecomputeFieldValueImpl = com.oracle.svm.hosted.substitute.FieldDescriptor$RecomputeFieldValueImpl of com.oracle.svm.hosted.substitute.FieldDescriptor
  PlatformsImpl = com.oracle.svm.hosted.substitute.PlatformsDescriptor$PlatformsImpl of com.oracle.svm.hosted.substitute.PlatformsDescriptor