class org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer extends org.eclipse.jdt.internal.compiler.lookup.TypeBindingVisitor
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer
  super_class: org.eclipse.jdt.internal.compiler.lookup.TypeBindingVisitor
{
  private org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker currentWalker;
    descriptor: Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
    flags: (0x0002) ACC_PRIVATE

  private org.eclipse.jdt.internal.compiler.lookup.TypeBinding typeReplacement;
    descriptor: Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
    flags: (0x0002) ACC_PRIVATE

  private org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment environment;
    descriptor: Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;
    flags: (0x0002) ACC_PRIVATE

  private boolean isReplacing;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  public static void apply(org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding, java.lang.String);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/SourceTypeBinding;Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=9, args_size=2
        start local 0 // org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding typeBinding
        start local 1 // java.lang.String externalAnnotationPath
         0: .line 36
            aconst_null
            astore 2 /* zipFile */
        start local 2 // java.util.zip.ZipFile zipFile
         1: .line 38
            new java.io.File
            dup
            aload 1 /* externalAnnotationPath */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 3 /* annotationBase */
        start local 3 // java.io.File annotationBase
         2: .line 39
            aload 3 /* annotationBase */
            invokevirtual java.io.File.exists:()Z
            ifeq 38
         3: .line 40
            aload 0 /* typeBinding */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.constantPoolName:()[C
            invokestatic java.lang.String.valueOf:([C)Ljava/lang/String;
            astore 4 /* binaryTypeName */
        start local 4 // java.lang.String binaryTypeName
         4: .line 41
            new java.lang.StringBuilder
            dup
            aload 4 /* binaryTypeName */
            bipush 46
            bipush 47
            invokevirtual java.lang.String.replace:(CC)Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ".eea"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 5 /* relativeFileName */
        start local 5 // java.lang.String relativeFileName
         5: .line 44
            aload 3 /* annotationBase */
            invokevirtual java.io.File.isDirectory:()Z
            ifeq 8
         6: .line 45
            new java.io.FileInputStream
            dup
            new java.lang.StringBuilder
            dup
            aload 1 /* externalAnnotationPath */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            bipush 47
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            aload 5 /* relativeFileName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.io.FileInputStream.<init>:(Ljava/lang/String;)V
            astore 6 /* input */
        start local 6 // java.io.InputStream input
         7: .line 46
            goto 17
        end local 6 // java.io.InputStream input
         8: .line 47
      StackMap locals: org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding java.lang.String java.util.zip.ZipFile java.io.File java.lang.String java.lang.String
      StackMap stack:
            new java.util.zip.ZipFile
            dup
            aload 1 /* externalAnnotationPath */
            invokespecial java.util.zip.ZipFile.<init>:(Ljava/lang/String;)V
            astore 2 /* zipFile */
         9: .line 48
            aload 2 /* zipFile */
            aload 5 /* relativeFileName */
            invokevirtual java.util.zip.ZipFile.getEntry:(Ljava/lang/String;)Ljava/util/zip/ZipEntry;
            astore 7 /* zipEntry */
        start local 7 // java.util.zip.ZipEntry zipEntry
        10: .line 49
            aload 7 /* zipEntry */
            ifnonnull 16
        11: .line 61
            aload 2 /* zipFile */
            ifnull 15
        12: .line 63
            aload 2 /* zipFile */
            invokevirtual java.util.zip.ZipFile.close:()V
        13: .line 64
            goto 15
      StackMap locals: org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding java.lang.String java.util.zip.ZipFile java.io.File java.lang.String java.lang.String top java.util.zip.ZipEntry
      StackMap stack: java.io.IOException
        14: pop
        15: .line 50
      StackMap locals:
      StackMap stack:
            return
        16: .line 51
      StackMap locals:
      StackMap stack:
            aload 2 /* zipFile */
            aload 7 /* zipEntry */
            invokevirtual java.util.zip.ZipFile.getInputStream:(Ljava/util/zip/ZipEntry;)Ljava/io/InputStream;
            astore 6 /* input */
        end local 7 // java.util.zip.ZipEntry zipEntry
        start local 6 // java.io.InputStream input
        17: .line 53
      StackMap locals: org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding java.lang.String java.util.zip.ZipFile java.io.File java.lang.String java.lang.String java.io.InputStream
      StackMap stack:
            aload 0 /* typeBinding */
            new org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationProvider
            dup
            aload 6 /* input */
            aload 4 /* binaryTypeName */
            invokespecial org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationProvider.<init>:(Ljava/io/InputStream;Ljava/lang/String;)V
            aload 0 /* typeBinding */
            getfield org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.environment:Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;
            invokestatic org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.annotateType:(Lorg/eclipse/jdt/internal/compiler/lookup/SourceTypeBinding;Lorg/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider;Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;)V
        end local 6 // java.io.InputStream input
        end local 5 // java.lang.String relativeFileName
        end local 4 // java.lang.String binaryTypeName
        end local 3 // java.io.File annotationBase
        18: .line 55
            goto 38
      StackMap locals: org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding java.lang.String java.util.zip.ZipFile
      StackMap stack: java.io.FileNotFoundException
        19: pop
        20: .line 61
            aload 2 /* zipFile */
            ifnull 42
        21: .line 63
            aload 2 /* zipFile */
            invokevirtual java.util.zip.ZipFile.close:()V
        22: .line 64
            goto 42
      StackMap locals:
      StackMap stack: java.io.IOException
        23: pop
            goto 42
        24: .line 57
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 3 /* e */
        start local 3 // java.io.IOException e
        25: .line 58
            aload 0 /* typeBinding */
            getfield org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.scope:Lorg/eclipse/jdt/internal/compiler/lookup/ClassScope;
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.ClassScope.problemReporter:()Lorg/eclipse/jdt/internal/compiler/problem/ProblemReporter;
            getstatic org.eclipse.jdt.internal.compiler.util.Messages.abort_externaAnnotationFile:Ljava/lang/String;
        26: .line 59
            iconst_3
            anewarray java.lang.String
            dup
            iconst_0
            aload 0 /* typeBinding */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.readableName:()[C
            invokestatic java.lang.String.valueOf:([C)Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 1 /* externalAnnotationPath */
            aastore
            dup
            iconst_2
            aload 3 /* e */
            invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
            aastore
        27: .line 58
            invokestatic org.eclipse.jdt.internal.compiler.util.Messages.bind:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokevirtual org.eclipse.jdt.internal.compiler.problem.ProblemReporter.abortDueToInternalError:(Ljava/lang/String;)V
        end local 3 // java.io.IOException e
        28: .line 61
            aload 2 /* zipFile */
            ifnull 42
        29: .line 63
            aload 2 /* zipFile */
            invokevirtual java.util.zip.ZipFile.close:()V
        30: .line 64
            goto 42
      StackMap locals:
      StackMap stack: java.io.IOException
        31: pop
            goto 42
        32: .line 60
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 8
        33: .line 61
            aload 2 /* zipFile */
            ifnull 37
        34: .line 63
            aload 2 /* zipFile */
            invokevirtual java.util.zip.ZipFile.close:()V
        35: .line 64
            goto 37
      StackMap locals: org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding java.lang.String java.util.zip.ZipFile top top top top top java.lang.Throwable
      StackMap stack: java.io.IOException
        36: pop
        37: .line 67
      StackMap locals:
      StackMap stack:
            aload 8
            athrow
        38: .line 61
      StackMap locals: org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding java.lang.String java.util.zip.ZipFile
      StackMap stack:
            aload 2 /* zipFile */
            ifnull 42
        39: .line 63
            aload 2 /* zipFile */
            invokevirtual java.util.zip.ZipFile.close:()V
        40: .line 64
            goto 42
      StackMap locals:
      StackMap stack: java.io.IOException
        41: pop
        42: .line 68
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.util.zip.ZipFile zipFile
        end local 1 // java.lang.String externalAnnotationPath
        end local 0 // org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding typeBinding
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   43     0             typeBinding  Lorg/eclipse/jdt/internal/compiler/lookup/SourceTypeBinding;
            0   43     1  externalAnnotationPath  Ljava/lang/String;
            1   43     2                 zipFile  Ljava/util/zip/ZipFile;
            2   18     3          annotationBase  Ljava/io/File;
            4   18     4          binaryTypeName  Ljava/lang/String;
            5   18     5        relativeFileName  Ljava/lang/String;
            7    8     6                   input  Ljava/io/InputStream;
           17   18     6                   input  Ljava/io/InputStream;
           10   17     7                zipEntry  Ljava/util/zip/ZipEntry;
           25   28     3                       e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
          12    13      14  Class java.io.IOException
           1    11      19  Class java.io.FileNotFoundException
          16    18      19  Class java.io.FileNotFoundException
          21    22      23  Class java.io.IOException
           1    11      24  Class java.io.IOException
          16    18      24  Class java.io.IOException
          29    30      31  Class java.io.IOException
           1    11      32  any
          16    20      32  any
          24    28      32  any
          34    35      36  Class java.io.IOException
          39    40      41  Class java.io.IOException
    MethodParameters:
                        Name  Flags
      typeBinding             
      externalAnnotationPath  

  static void annotateType(org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding, org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationProvider, org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/SourceTypeBinding;Lorg/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider;Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=7, args_size=3
        start local 0 // org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding binding
        start local 1 // org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationProvider provider
        start local 2 // org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment environment
         0: .line 71
            aload 1 /* provider */
            aload 2 /* environment */
            invokevirtual org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationProvider.forTypeHeader:(Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;)Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
            astore 3 /* typeWalker */
        start local 3 // org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker typeWalker
         1: .line 72
            aload 3 /* typeWalker */
            ifnull 10
            aload 3 /* typeWalker */
            getstatic org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker.EMPTY_ANNOTATION_WALKER:Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
            if_acmpeq 10
         2: .line 73
            new org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer
            dup
            aload 2 /* environment */
            invokespecial org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.<init>:(Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;)V
            astore 4 /* visitor */
        start local 4 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer visitor
         3: .line 74
            aload 0 /* binding */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.typeVariables:()[Lorg/eclipse/jdt/internal/compiler/lookup/TypeVariableBinding;
            astore 5 /* typeParameters */
        start local 5 // org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding[] typeParameters
         4: .line 75
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         5: goto 9
         6: .line 76
      StackMap locals: org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationProvider org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding[] int
      StackMap stack:
            aload 4 /* visitor */
            aload 3 /* typeWalker */
            iconst_1
            iload 6 /* i */
            invokeinterface org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker.toTypeParameter:(ZI)Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.go:(Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;)Z
            ifeq 8
         7: .line 77
            aload 5 /* typeParameters */
            iload 6 /* i */
            aload 4 /* visitor */
            aload 5 /* typeParameters */
            iload 6 /* i */
            aaload
            ldc Lorg/eclipse/jdt/internal/compiler/lookup/TypeVariableBinding;
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.superimpose:(Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;Ljava/lang/Class;)Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            checkcast org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding
            aastore
         8: .line 75
      StackMap locals:
      StackMap stack:
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 6 /* i */
            aload 5 /* typeParameters */
            arraylength
            if_icmplt 6
        end local 6 // int i
        end local 5 // org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding[] typeParameters
        end local 4 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer visitor
        10: .line 80
      StackMap locals:
      StackMap stack:
            aload 0 /* binding */
            aload 1 /* provider */
            putfield org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.externalAnnotationProvider:Lorg/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider;
        11: .line 81
            return
        end local 3 // org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker typeWalker
        end local 2 // org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment environment
        end local 1 // org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationProvider provider
        end local 0 // org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding binding
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   12     0         binding  Lorg/eclipse/jdt/internal/compiler/lookup/SourceTypeBinding;
            0   12     1        provider  Lorg/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider;
            0   12     2     environment  Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;
            1   12     3      typeWalker  Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
            3   10     4         visitor  Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;
            4   10     5  typeParameters  [Lorg/eclipse/jdt/internal/compiler/lookup/TypeVariableBinding;
            5   10     6               i  I
    MethodParameters:
             Name  Flags
      binding      
      provider     
      environment  

  public static void annotateFieldBinding(org.eclipse.jdt.internal.compiler.lookup.FieldBinding, org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationProvider, org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/FieldBinding;Lorg/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider;Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // org.eclipse.jdt.internal.compiler.lookup.FieldBinding field
        start local 1 // org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationProvider provider
        start local 2 // org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment environment
         0: .line 84
            aload 0 /* field */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.FieldBinding.genericSignature:()[C
            astore 3 /* fieldSignature */
        start local 3 // char[] fieldSignature
         1: .line 85
            aload 3 /* fieldSignature */
            ifnonnull 3
            aload 0 /* field */
            getfield org.eclipse.jdt.internal.compiler.lookup.FieldBinding.type:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            ifnull 3
         2: .line 86
            aload 0 /* field */
            getfield org.eclipse.jdt.internal.compiler.lookup.FieldBinding.type:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.TypeBinding.signature:()[C
            astore 3 /* fieldSignature */
         3: .line 87
      StackMap locals: char[]
      StackMap stack:
            aload 1 /* provider */
            aload 0 /* field */
            getfield org.eclipse.jdt.internal.compiler.lookup.FieldBinding.name:[C
            aload 3 /* fieldSignature */
            aload 2 /* environment */
            invokevirtual org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationProvider.forField:([C[CLorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;)Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
            astore 4 /* walker */
        start local 4 // org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker walker
         4: .line 88
            new org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer
            dup
            aload 2 /* environment */
            invokespecial org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.<init>:(Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;)V
            astore 5 /* visitor */
        start local 5 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer visitor
         5: .line 89
            aload 5 /* visitor */
            aload 4 /* walker */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.go:(Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;)Z
            ifeq 7
         6: .line 90
            aload 0 /* field */
            aload 5 /* visitor */
            aload 0 /* field */
            getfield org.eclipse.jdt.internal.compiler.lookup.FieldBinding.type:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            ldc Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.superimpose:(Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;Ljava/lang/Class;)Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            putfield org.eclipse.jdt.internal.compiler.lookup.FieldBinding.type:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
         7: .line 91
      StackMap locals: org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer
      StackMap stack:
            return
        end local 5 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer visitor
        end local 4 // org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker walker
        end local 3 // char[] fieldSignature
        end local 2 // org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment environment
        end local 1 // org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationProvider provider
        end local 0 // org.eclipse.jdt.internal.compiler.lookup.FieldBinding field
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    8     0           field  Lorg/eclipse/jdt/internal/compiler/lookup/FieldBinding;
            0    8     1        provider  Lorg/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider;
            0    8     2     environment  Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;
            1    8     3  fieldSignature  [C
            4    8     4          walker  Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
            5    8     5         visitor  Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;
    MethodParameters:
             Name  Flags
      field        
      provider     
      environment  

  public static void annotateMethodBinding(org.eclipse.jdt.internal.compiler.lookup.MethodBinding, org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationProvider, org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/MethodBinding;Lorg/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider;Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=9, args_size=3
        start local 0 // org.eclipse.jdt.internal.compiler.lookup.MethodBinding method
        start local 1 // org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationProvider provider
        start local 2 // org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment environment
         0: .line 94
            aload 0 /* method */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.MethodBinding.genericSignature:()[C
            astore 3 /* methodSignature */
        start local 3 // char[] methodSignature
         1: .line 95
            aload 3 /* methodSignature */
            ifnonnull 3
         2: .line 96
            aload 0 /* method */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.MethodBinding.signature:()[C
            astore 3 /* methodSignature */
         3: .line 97
      StackMap locals: char[]
      StackMap stack:
            aload 1 /* provider */
            aload 0 /* method */
            getfield org.eclipse.jdt.internal.compiler.lookup.MethodBinding.selector:[C
            aload 3 /* methodSignature */
            aload 2 /* environment */
            invokevirtual org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationProvider.forMethod:([C[CLorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;)Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
            astore 4 /* walker */
        start local 4 // org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker walker
         4: .line 98
            aload 4 /* walker */
            ifnull 23
            aload 4 /* walker */
            getstatic org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker.EMPTY_ANNOTATION_WALKER:Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
            if_acmpeq 23
         5: .line 99
            new org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer
            dup
            aload 2 /* environment */
            invokespecial org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.<init>:(Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;)V
            astore 5 /* visitor */
        start local 5 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer visitor
         6: .line 100
            aload 0 /* method */
            getfield org.eclipse.jdt.internal.compiler.lookup.MethodBinding.typeVariables:[Lorg/eclipse/jdt/internal/compiler/lookup/TypeVariableBinding;
            astore 6 /* typeParams */
        start local 6 // org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding[] typeParams
         7: .line 101
            iconst_0
            istore 7 /* i */
        start local 7 // short i
         8: goto 12
         9: .line 102
      StackMap locals: org.eclipse.jdt.internal.compiler.lookup.MethodBinding org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationProvider org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment char[] org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding[] int
      StackMap stack:
            aload 5 /* visitor */
            aload 4 /* walker */
            iconst_0
            iload 7 /* i */
            invokeinterface org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker.toTypeParameter:(ZI)Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.go:(Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;)Z
            ifeq 11
        10: .line 103
            aload 6 /* typeParams */
            iload 7 /* i */
            aload 5 /* visitor */
            aload 6 /* typeParams */
            iload 7 /* i */
            aaload
            ldc Lorg/eclipse/jdt/internal/compiler/lookup/TypeVariableBinding;
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.superimpose:(Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;Ljava/lang/Class;)Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            checkcast org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding
            aastore
        11: .line 101
      StackMap locals:
      StackMap stack:
            iload 7 /* i */
            iconst_1
            iadd
            i2s
            istore 7 /* i */
      StackMap locals:
      StackMap stack:
        12: iload 7 /* i */
            aload 6 /* typeParams */
            arraylength
            if_icmplt 9
        end local 7 // short i
        13: .line 105
            aload 0 /* method */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.MethodBinding.isConstructor:()Z
            ifne 16
        14: .line 106
            aload 5 /* visitor */
            aload 4 /* walker */
            invokeinterface org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker.toMethodReturn:()Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.go:(Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;)Z
            ifeq 16
        15: .line 107
            aload 0 /* method */
            aload 5 /* visitor */
            aload 0 /* method */
            getfield org.eclipse.jdt.internal.compiler.lookup.MethodBinding.returnType:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            ldc Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.superimpose:(Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;Ljava/lang/Class;)Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            putfield org.eclipse.jdt.internal.compiler.lookup.MethodBinding.returnType:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
        16: .line 109
      StackMap locals:
      StackMap stack:
            aload 0 /* method */
            getfield org.eclipse.jdt.internal.compiler.lookup.MethodBinding.parameters:[Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            astore 7 /* parameters */
        start local 7 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding[] parameters
        17: .line 110
            iconst_0
            istore 8 /* i */
        start local 8 // short i
        18: goto 22
        19: .line 111
      StackMap locals: org.eclipse.jdt.internal.compiler.lookup.TypeBinding[] int
      StackMap stack:
            aload 5 /* visitor */
            aload 4 /* walker */
            iload 8 /* i */
            invokeinterface org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker.toMethodParameter:(S)Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.go:(Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;)Z
            ifeq 21
        20: .line 112
            aload 7 /* parameters */
            iload 8 /* i */
            aload 5 /* visitor */
            aload 7 /* parameters */
            iload 8 /* i */
            aaload
            ldc Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.superimpose:(Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;Ljava/lang/Class;)Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            aastore
        21: .line 110
      StackMap locals:
      StackMap stack:
            iload 8 /* i */
            iconst_1
            iadd
            i2s
            istore 8 /* i */
      StackMap locals:
      StackMap stack:
        22: iload 8 /* i */
            aload 7 /* parameters */
            arraylength
            if_icmplt 19
        end local 8 // short i
        end local 7 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding[] parameters
        end local 6 // org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding[] typeParams
        end local 5 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer visitor
        23: .line 115
      StackMap locals: org.eclipse.jdt.internal.compiler.lookup.MethodBinding org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationProvider org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment char[] org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker
      StackMap stack:
            return
        end local 4 // org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker walker
        end local 3 // char[] methodSignature
        end local 2 // org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment environment
        end local 1 // org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationProvider provider
        end local 0 // org.eclipse.jdt.internal.compiler.lookup.MethodBinding method
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   24     0           method  Lorg/eclipse/jdt/internal/compiler/lookup/MethodBinding;
            0   24     1         provider  Lorg/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider;
            0   24     2      environment  Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;
            1   24     3  methodSignature  [C
            4   24     4           walker  Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
            6   23     5          visitor  Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;
            7   23     6       typeParams  [Lorg/eclipse/jdt/internal/compiler/lookup/TypeVariableBinding;
            8   13     7                i  S
           17   23     7       parameters  [Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
           18   23     8                i  S
    MethodParameters:
             Name  Flags
      method       
      provider     
      environment  

  void <init>(org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer this
        start local 1 // org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment environment
         0: .line 122
            aload 0 /* this */
            invokespecial org.eclipse.jdt.internal.compiler.lookup.TypeBindingVisitor.<init>:()V
         1: .line 123
            aload 0 /* this */
            aload 1 /* environment */
            putfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.environment:Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;
         2: .line 124
            return
        end local 1 // org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment environment
        end local 0 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0         this  Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;
            0    3     1  environment  Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;
    MethodParameters:
             Name  Flags
      environment  

  private void <init>(org.eclipse.jdt.internal.compiler.lookup.TypeBinding, boolean, org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;ZLorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer this
        start local 1 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding typeReplacement
        start local 2 // boolean isReplacing
        start local 3 // org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker walker
         0: .line 127
            aload 0 /* this */
            invokespecial org.eclipse.jdt.internal.compiler.lookup.TypeBindingVisitor.<init>:()V
         1: .line 128
            aload 0 /* this */
            aload 1 /* typeReplacement */
            putfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.typeReplacement:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
         2: .line 129
            aload 0 /* this */
            iload 2 /* isReplacing */
            putfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.isReplacing:Z
         3: .line 130
            aload 0 /* this */
            aload 3 /* walker */
            putfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.currentWalker:Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
         4: .line 131
            return
        end local 3 // org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker walker
        end local 2 // boolean isReplacing
        end local 1 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding typeReplacement
        end local 0 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    5     0             this  Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;
            0    5     1  typeReplacement  Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            0    5     2      isReplacing  Z
            0    5     3           walker  Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
    MethodParameters:
                 Name  Flags
      typeReplacement  
      isReplacing      
      walker           

  private org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer snapshot();
    descriptor: ()Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer this
         0: .line 133
            new org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer
            dup
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.typeReplacement:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.isReplacing:Z
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.currentWalker:Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
            invokespecial org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.<init>:(Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;ZLorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;)V
            astore 1 /* memento */
        start local 1 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer memento
         1: .line 135
            aload 0 /* this */
            aconst_null
            putfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.typeReplacement:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
         2: .line 136
            aload 0 /* this */
            iconst_0
            putfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.isReplacing:Z
         3: .line 137
            aload 1 /* memento */
            areturn
        end local 1 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer memento
        end local 0 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;
            1    4     1  memento  Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;

  private void restore(org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer this
        start local 1 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer memento
         0: .line 140
            aload 0 /* this */
            aload 1 /* memento */
            getfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.isReplacing:Z
            putfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.isReplacing:Z
         1: .line 141
            aload 0 /* this */
            aload 1 /* memento */
            getfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.currentWalker:Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
            putfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.currentWalker:Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
         2: .line 142
            return
        end local 1 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer memento
        end local 0 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;
            0    3     1  memento  Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;
    MethodParameters:
         Name  Flags
      memento  

  boolean go(org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;)Z
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer this
        start local 1 // org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker walker
         0: .line 146
            aload 0 /* this */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.reset:()V
         1: .line 147
            aload 0 /* this */
            aconst_null
            putfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.typeReplacement:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
         2: .line 148
            aload 0 /* this */
            iconst_0
            putfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.isReplacing:Z
         3: .line 150
            aload 0 /* this */
            aload 1 /* walker */
            putfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.currentWalker:Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
         4: .line 151
            aload 1 /* walker */
            getstatic org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker.EMPTY_ANNOTATION_WALKER:Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
            if_acmpeq 5
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         5: iconst_0
            ireturn
        end local 1 // org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker walker
        end local 0 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;
            0    6     1  walker  Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
    MethodParameters:
        Name  Flags
      walker  

  <T extends org.eclipse.jdt.internal.compiler.lookup.TypeBinding> T superimpose(T, java.lang.Class<? extends T>);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;Ljava/lang/Class;)Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer this
        start local 1 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding type
        start local 2 // java.lang.Class cl
         0: .line 155
            aload 0 /* this */
            aload 1 /* type */
            invokestatic org.eclipse.jdt.internal.compiler.lookup.TypeBindingVisitor.visit:(Lorg/eclipse/jdt/internal/compiler/lookup/TypeBindingVisitor;Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;)V
         1: .line 156
            aload 2 /* cl */
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.typeReplacement:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
            ifeq 3
         2: .line 157
            aload 2 /* cl */
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.typeReplacement:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            invokevirtual java.lang.Class.cast:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.eclipse.jdt.internal.compiler.lookup.TypeBinding
            areturn
         3: .line 158
      StackMap locals:
      StackMap stack:
            aload 1 /* type */
            areturn
        end local 2 // java.lang.Class cl
        end local 1 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding type
        end local 0 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;
            0    4     1  type  TT;
            0    4     2    cl  Ljava/lang/Class<+TT;>;
    Signature: <T:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;>(TT;Ljava/lang/Class<+TT;>;)TT;
    MethodParameters:
      Name  Flags
      type  
      cl    

  private org.eclipse.jdt.internal.compiler.lookup.TypeBinding goAndSuperimpose(org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker, org.eclipse.jdt.internal.compiler.lookup.TypeBinding);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;)Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer this
        start local 1 // org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker walker
        start local 2 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding type
         0: .line 163
            aload 1 /* walker */
            getstatic org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker.EMPTY_ANNOTATION_WALKER:Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
            if_acmpne 2
         1: .line 164
            aload 2 /* type */
            areturn
         2: .line 165
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* walker */
            putfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.currentWalker:Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
         3: .line 167
            aload 0 /* this */
            aload 2 /* type */
            invokestatic org.eclipse.jdt.internal.compiler.lookup.TypeBindingVisitor.visit:(Lorg/eclipse/jdt/internal/compiler/lookup/TypeBindingVisitor;Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;)V
         4: .line 169
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.typeReplacement:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            ifnonnull 6
         5: .line 170
            aload 2 /* type */
            areturn
         6: .line 171
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.isReplacing:Z
         7: .line 172
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.typeReplacement:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            astore 3 /* answer */
        start local 3 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding answer
         8: .line 173
            aload 0 /* this */
            aconst_null
            putfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.typeReplacement:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
         9: .line 174
            aload 3 /* answer */
            areturn
        end local 3 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding answer
        end local 2 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding type
        end local 1 // org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker walker
        end local 0 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   10     0    this  Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;
            0   10     1  walker  Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
            0   10     2    type  Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            8   10     3  answer  Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
    MethodParameters:
        Name  Flags
      walker  
      type    

  public boolean visit(org.eclipse.jdt.internal.compiler.lookup.ArrayBinding);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/ArrayBinding;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=9, args_size=2
        start local 0 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer this
        start local 1 // org.eclipse.jdt.internal.compiler.lookup.ArrayBinding arrayBinding
         0: .line 179
            aload 0 /* this */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.snapshot:()Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;
            astore 2 /* memento */
        start local 2 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer memento
         1: .line 181
            aload 1 /* arrayBinding */
            getfield org.eclipse.jdt.internal.compiler.lookup.ArrayBinding.dimensions:I
            istore 3 /* dims */
        start local 3 // int dims
         2: .line 182
            iload 3 /* dims */
            anewarray org.eclipse.jdt.internal.compiler.lookup.AnnotationBinding[]
            astore 4 /* annotsOnDims */
        start local 4 // org.eclipse.jdt.internal.compiler.lookup.AnnotationBinding[][] annotsOnDims
         3: .line 183
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.currentWalker:Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
            astore 5 /* walker */
        start local 5 // org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker walker
         4: .line 184
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         5: goto 14
         6: .line 185
      StackMap locals: org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer org.eclipse.jdt.internal.compiler.lookup.ArrayBinding org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer int org.eclipse.jdt.internal.compiler.lookup.AnnotationBinding[][] org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker int
      StackMap stack:
            aload 5 /* walker */
            aload 1 /* arrayBinding */
            getfield org.eclipse.jdt.internal.compiler.lookup.ArrayBinding.id:I
            iconst_0
            invokeinterface org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker.getAnnotationsAtCursor:(IZ)[Lorg/eclipse/jdt/internal/compiler/env/IBinaryAnnotation;
            astore 7 /* binaryAnnotations */
        start local 7 // org.eclipse.jdt.internal.compiler.env.IBinaryAnnotation[] binaryAnnotations
         7: .line 186
            aload 7 /* binaryAnnotations */
            getstatic org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker.NO_ANNOTATIONS:[Lorg/eclipse/jdt/internal/compiler/env/IBinaryAnnotation;
            if_acmpeq 11
         8: .line 187
            aload 4 /* annotsOnDims */
            iload 6 /* i */
            aload 7 /* binaryAnnotations */
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.environment:Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;
            aconst_null
            invokestatic org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.createAnnotations:([Lorg/eclipse/jdt/internal/compiler/env/IBinaryAnnotation;Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;[[[C)[Lorg/eclipse/jdt/internal/compiler/lookup/AnnotationBinding;
            aastore
         9: .line 188
            aload 0 /* this */
            iconst_1
            putfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.isReplacing:Z
        10: .line 189
            goto 12
        11: .line 190
      StackMap locals: org.eclipse.jdt.internal.compiler.env.IBinaryAnnotation[]
      StackMap stack:
            aload 4 /* annotsOnDims */
            iload 6 /* i */
            getstatic org.eclipse.jdt.internal.compiler.lookup.Binding.NO_ANNOTATIONS:[Lorg/eclipse/jdt/internal/compiler/lookup/AnnotationBinding;
            aastore
        12: .line 192
      StackMap locals:
      StackMap stack:
            aload 5 /* walker */
            invokeinterface org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker.toNextArrayDimension:()Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
            astore 5 /* walker */
        end local 7 // org.eclipse.jdt.internal.compiler.env.IBinaryAnnotation[] binaryAnnotations
        13: .line 184
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        14: iload 6 /* i */
            iload 3 /* dims */
            if_icmplt 6
        end local 6 // int i
        15: .line 194
            aload 0 /* this */
            aload 5 /* walker */
            aload 1 /* arrayBinding */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.ArrayBinding.leafComponentType:()Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.goAndSuperimpose:(Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;)Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            astore 6 /* leafComponentType */
        start local 6 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding leafComponentType
        16: .line 195
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.isReplacing:Z
            ifeq 22
        17: .line 196
            aload 0 /* this */
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.environment:Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;
            aload 6 /* leafComponentType */
            iload 3 /* dims */
            aload 4 /* annotsOnDims */
            invokestatic org.eclipse.jdt.internal.compiler.lookup.AnnotatableTypeSystem.flattenedAnnotations:([[Lorg/eclipse/jdt/internal/compiler/lookup/AnnotationBinding;)[Lorg/eclipse/jdt/internal/compiler/lookup/AnnotationBinding;
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.createArrayType:(Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;I[Lorg/eclipse/jdt/internal/compiler/lookup/AnnotationBinding;)Lorg/eclipse/jdt/internal/compiler/lookup/ArrayBinding;
            putfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.typeReplacement:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
        end local 6 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding leafComponentType
        end local 5 // org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker walker
        end local 4 // org.eclipse.jdt.internal.compiler.lookup.AnnotationBinding[][] annotsOnDims
        end local 3 // int dims
        18: .line 198
            goto 22
      StackMap locals: org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer org.eclipse.jdt.internal.compiler.lookup.ArrayBinding org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer
      StackMap stack: java.lang.Throwable
        19: astore 8
        20: .line 199
            aload 0 /* this */
            aload 2 /* memento */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.restore:(Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;)V
        21: .line 200
            aload 8
            athrow
        22: .line 199
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* memento */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.restore:(Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;)V
        23: .line 201
            iconst_0
            ireturn
        end local 2 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer memento
        end local 1 // org.eclipse.jdt.internal.compiler.lookup.ArrayBinding arrayBinding
        end local 0 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   24     0               this  Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;
            0   24     1       arrayBinding  Lorg/eclipse/jdt/internal/compiler/lookup/ArrayBinding;
            1   24     2            memento  Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;
            2   18     3               dims  I
            3   18     4       annotsOnDims  [[Lorg/eclipse/jdt/internal/compiler/lookup/AnnotationBinding;
            4   18     5             walker  Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
            5   15     6                  i  I
            7   13     7  binaryAnnotations  [Lorg/eclipse/jdt/internal/compiler/env/IBinaryAnnotation;
           16   18     6  leafComponentType  Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
      Exception table:
        from    to  target  type
           1    19      19  any
    MethodParameters:
              Name  Flags
      arrayBinding  

  public boolean visit(org.eclipse.jdt.internal.compiler.lookup.BaseTypeBinding);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/BaseTypeBinding;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer this
        start local 1 // org.eclipse.jdt.internal.compiler.lookup.BaseTypeBinding baseTypeBinding
         0: .line 205
            iconst_0
            ireturn
        end local 1 // org.eclipse.jdt.internal.compiler.lookup.BaseTypeBinding baseTypeBinding
        end local 0 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    1     0             this  Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;
            0    1     1  baseTypeBinding  Lorg/eclipse/jdt/internal/compiler/lookup/BaseTypeBinding;
    MethodParameters:
                 Name  Flags
      baseTypeBinding  

  public boolean visit(org.eclipse.jdt.internal.compiler.lookup.IntersectionTypeBinding18);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/IntersectionTypeBinding18;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer this
        start local 1 // org.eclipse.jdt.internal.compiler.lookup.IntersectionTypeBinding18 intersectionTypeBinding18
         0: .line 209
            iconst_0
            ireturn
        end local 1 // org.eclipse.jdt.internal.compiler.lookup.IntersectionTypeBinding18 intersectionTypeBinding18
        end local 0 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0    1     0                       this  Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;
            0    1     1  intersectionTypeBinding18  Lorg/eclipse/jdt/internal/compiler/lookup/IntersectionTypeBinding18;
    MethodParameters:
                           Name  Flags
      intersectionTypeBinding18  

  public boolean visit(org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/ParameterizedTypeBinding;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=9, args_size=2
        start local 0 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer this
        start local 1 // org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding parameterizedTypeBinding
         0: .line 213
            aload 0 /* this */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.snapshot:()Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;
            astore 2 /* memento */
        start local 2 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer memento
         1: .line 215
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.currentWalker:Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
            aload 1 /* parameterizedTypeBinding */
            getfield org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.id:I
            iconst_0
            invokeinterface org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker.getAnnotationsAtCursor:(IZ)[Lorg/eclipse/jdt/internal/compiler/env/IBinaryAnnotation;
            astore 3 /* binaryAnnotations */
        start local 3 // org.eclipse.jdt.internal.compiler.env.IBinaryAnnotation[] binaryAnnotations
         2: .line 216
            getstatic org.eclipse.jdt.internal.compiler.lookup.Binding.NO_ANNOTATIONS:[Lorg/eclipse/jdt/internal/compiler/lookup/AnnotationBinding;
            astore 4 /* annotations */
        start local 4 // org.eclipse.jdt.internal.compiler.lookup.AnnotationBinding[] annotations
         3: .line 217
            aload 3 /* binaryAnnotations */
            getstatic org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker.NO_ANNOTATIONS:[Lorg/eclipse/jdt/internal/compiler/env/IBinaryAnnotation;
            if_acmpeq 6
         4: .line 218
            aload 3 /* binaryAnnotations */
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.environment:Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;
            aconst_null
            invokestatic org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.createAnnotations:([Lorg/eclipse/jdt/internal/compiler/env/IBinaryAnnotation;Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;[[[C)[Lorg/eclipse/jdt/internal/compiler/lookup/AnnotationBinding;
            astore 4 /* annotations */
         5: .line 219
            aload 0 /* this */
            iconst_1
            putfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.isReplacing:Z
         6: .line 222
      StackMap locals: org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer org.eclipse.jdt.internal.compiler.env.IBinaryAnnotation[] org.eclipse.jdt.internal.compiler.lookup.AnnotationBinding[]
      StackMap stack:
            aload 1 /* parameterizedTypeBinding */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.typeArguments:()[Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            astore 5 /* typeArguments */
        start local 5 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding[] typeArguments
         7: .line 223
            aload 5 /* typeArguments */
            arraylength
            anewarray org.eclipse.jdt.internal.compiler.lookup.TypeBinding
            astore 6 /* newArguments */
        start local 6 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding[] newArguments
         8: .line 224
            iconst_0
            istore 7 /* i */
        start local 7 // int i
         9: goto 12
        10: .line 225
      StackMap locals: org.eclipse.jdt.internal.compiler.lookup.TypeBinding[] org.eclipse.jdt.internal.compiler.lookup.TypeBinding[] int
      StackMap stack:
            aload 6 /* newArguments */
            iload 7 /* i */
            aload 0 /* this */
            aload 2 /* memento */
            getfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.currentWalker:Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
            iload 7 /* i */
            invokeinterface org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker.toTypeArgument:(I)Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
            aload 5 /* typeArguments */
            iload 7 /* i */
            aaload
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.goAndSuperimpose:(Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;)Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            aastore
        11: .line 224
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        12: iload 7 /* i */
            aload 5 /* typeArguments */
            arraylength
            if_icmplt 10
        end local 7 // int i
        13: .line 227
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.isReplacing:Z
            ifeq 15
        14: .line 228
            aload 0 /* this */
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.environment:Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;
            aload 1 /* parameterizedTypeBinding */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.genericType:()Lorg/eclipse/jdt/internal/compiler/lookup/ReferenceBinding;
            aload 6 /* newArguments */
            aload 1 /* parameterizedTypeBinding */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.enclosingType:()Lorg/eclipse/jdt/internal/compiler/lookup/ReferenceBinding;
            aload 4 /* annotations */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.createParameterizedType:(Lorg/eclipse/jdt/internal/compiler/lookup/ReferenceBinding;[Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;Lorg/eclipse/jdt/internal/compiler/lookup/ReferenceBinding;[Lorg/eclipse/jdt/internal/compiler/lookup/AnnotationBinding;)Lorg/eclipse/jdt/internal/compiler/lookup/ParameterizedTypeBinding;
            putfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.typeReplacement:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
        15: .line 231
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* memento */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.restore:(Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;)V
        16: .line 229
            iconst_0
            ireturn
        end local 6 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding[] newArguments
        end local 5 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding[] typeArguments
        end local 4 // org.eclipse.jdt.internal.compiler.lookup.AnnotationBinding[] annotations
        end local 3 // org.eclipse.jdt.internal.compiler.env.IBinaryAnnotation[] binaryAnnotations
        17: .line 230
      StackMap locals: org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer
      StackMap stack: java.lang.Throwable
            astore 8
        18: .line 231
            aload 0 /* this */
            aload 2 /* memento */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.restore:(Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;)V
        19: .line 232
            aload 8
            athrow
        end local 2 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer memento
        end local 1 // org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding parameterizedTypeBinding
        end local 0 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0   20     0                      this  Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;
            0   20     1  parameterizedTypeBinding  Lorg/eclipse/jdt/internal/compiler/lookup/ParameterizedTypeBinding;
            1   20     2                   memento  Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;
            2   17     3         binaryAnnotations  [Lorg/eclipse/jdt/internal/compiler/env/IBinaryAnnotation;
            3   17     4               annotations  [Lorg/eclipse/jdt/internal/compiler/lookup/AnnotationBinding;
            7   17     5             typeArguments  [Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            8   17     6              newArguments  [Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            9   13     7                         i  I
      Exception table:
        from    to  target  type
           1    15      17  any
    MethodParameters:
                          Name  Flags
      parameterizedTypeBinding  

  public boolean visit(org.eclipse.jdt.internal.compiler.lookup.RawTypeBinding);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/RawTypeBinding;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer this
        start local 1 // org.eclipse.jdt.internal.compiler.lookup.RawTypeBinding rawTypeBinding
         0: .line 236
            aload 0 /* this */
            aload 1 /* rawTypeBinding */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.visit:(Lorg/eclipse/jdt/internal/compiler/lookup/ReferenceBinding;)Z
            ireturn
        end local 1 // org.eclipse.jdt.internal.compiler.lookup.RawTypeBinding rawTypeBinding
        end local 0 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0            this  Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;
            0    1     1  rawTypeBinding  Lorg/eclipse/jdt/internal/compiler/lookup/RawTypeBinding;
    MethodParameters:
                Name  Flags
      rawTypeBinding  

  public boolean visit(org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/ReferenceBinding;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=2
        start local 0 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer this
        start local 1 // org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding referenceBinding
         0: .line 240
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.currentWalker:Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
            aload 1 /* referenceBinding */
            getfield org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding.id:I
            iconst_0
            invokeinterface org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker.getAnnotationsAtCursor:(IZ)[Lorg/eclipse/jdt/internal/compiler/env/IBinaryAnnotation;
            astore 2 /* binaryAnnotations */
        start local 2 // org.eclipse.jdt.internal.compiler.env.IBinaryAnnotation[] binaryAnnotations
         1: .line 241
            aload 2 /* binaryAnnotations */
            getstatic org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker.NO_ANNOTATIONS:[Lorg/eclipse/jdt/internal/compiler/env/IBinaryAnnotation;
            if_acmpeq 3
         2: .line 242
            aload 0 /* this */
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.environment:Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;
            aload 1 /* referenceBinding */
            aload 2 /* binaryAnnotations */
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.environment:Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;
            aconst_null
            invokestatic org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.createAnnotations:([Lorg/eclipse/jdt/internal/compiler/env/IBinaryAnnotation;Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;[[[C)[Lorg/eclipse/jdt/internal/compiler/lookup/AnnotationBinding;
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.createAnnotatedType:(Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;[Lorg/eclipse/jdt/internal/compiler/lookup/AnnotationBinding;)Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            putfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.typeReplacement:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
         3: .line 243
      StackMap locals: org.eclipse.jdt.internal.compiler.env.IBinaryAnnotation[]
      StackMap stack:
            iconst_0
            ireturn
        end local 2 // org.eclipse.jdt.internal.compiler.env.IBinaryAnnotation[] binaryAnnotations
        end local 1 // org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding referenceBinding
        end local 0 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    4     0               this  Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;
            0    4     1   referenceBinding  Lorg/eclipse/jdt/internal/compiler/lookup/ReferenceBinding;
            1    4     2  binaryAnnotations  [Lorg/eclipse/jdt/internal/compiler/env/IBinaryAnnotation;
    MethodParameters:
                  Name  Flags
      referenceBinding  

  public boolean visit(org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/TypeVariableBinding;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer this
        start local 1 // org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding typeVariable
         0: .line 247
            aload 0 /* this */
            aload 1 /* typeVariable */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.visit:(Lorg/eclipse/jdt/internal/compiler/lookup/ReferenceBinding;)Z
            ireturn
        end local 1 // org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding typeVariable
        end local 0 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;
            0    1     1  typeVariable  Lorg/eclipse/jdt/internal/compiler/lookup/TypeVariableBinding;
    MethodParameters:
              Name  Flags
      typeVariable  

  public boolean visit(org.eclipse.jdt.internal.compiler.lookup.WildcardBinding);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/WildcardBinding;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=8, args_size=2
        start local 0 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer this
        start local 1 // org.eclipse.jdt.internal.compiler.lookup.WildcardBinding wildcardBinding
         0: .line 251
            aload 1 /* wildcardBinding */
            getfield org.eclipse.jdt.internal.compiler.lookup.WildcardBinding.bound:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            astore 2 /* bound */
        start local 2 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding bound
         1: .line 252
            aload 0 /* this */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.snapshot:()Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;
            astore 3 /* memento */
        start local 3 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer memento
         2: .line 254
            aload 2 /* bound */
            ifnull 4
         3: .line 255
            aload 0 /* this */
            aload 3 /* memento */
            getfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.currentWalker:Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
            invokeinterface org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker.toWildcardBound:()Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
            aload 2 /* bound */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.goAndSuperimpose:(Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;)Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            astore 2 /* bound */
         4: .line 257
      StackMap locals: org.eclipse.jdt.internal.compiler.lookup.TypeBinding org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer
      StackMap stack:
            aload 3 /* memento */
            getfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.currentWalker:Lorg/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker;
            iconst_m1
            iconst_0
            invokeinterface org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker.getAnnotationsAtCursor:(IZ)[Lorg/eclipse/jdt/internal/compiler/env/IBinaryAnnotation;
            astore 4 /* binaryAnnotations */
        start local 4 // org.eclipse.jdt.internal.compiler.env.IBinaryAnnotation[] binaryAnnotations
         5: .line 258
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.isReplacing:Z
            ifne 6
            aload 4 /* binaryAnnotations */
            getstatic org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker.NO_ANNOTATIONS:[Lorg/eclipse/jdt/internal/compiler/env/IBinaryAnnotation;
            if_acmpeq 16
         6: .line 259
      StackMap locals: org.eclipse.jdt.internal.compiler.env.IBinaryAnnotation[]
      StackMap stack:
            aload 1 /* wildcardBinding */
            getfield org.eclipse.jdt.internal.compiler.lookup.WildcardBinding.otherBounds:[Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            astore 5 /* otherBounds */
        start local 5 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding[] otherBounds
         7: .line 260
            aload 4 /* binaryAnnotations */
            getstatic org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker.NO_ANNOTATIONS:[Lorg/eclipse/jdt/internal/compiler/env/IBinaryAnnotation;
            if_acmpeq 11
         8: .line 261
            aload 4 /* binaryAnnotations */
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.environment:Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;
            aconst_null
            invokestatic org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.createAnnotations:([Lorg/eclipse/jdt/internal/compiler/env/IBinaryAnnotation;Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;[[[C)[Lorg/eclipse/jdt/internal/compiler/lookup/AnnotationBinding;
            astore 6 /* annotations */
        start local 6 // org.eclipse.jdt.internal.compiler.lookup.AnnotationBinding[] annotations
         9: .line 262
            aload 0 /* this */
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.environment:Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;
            aload 1 /* wildcardBinding */
            getfield org.eclipse.jdt.internal.compiler.lookup.WildcardBinding.genericType:Lorg/eclipse/jdt/internal/compiler/lookup/ReferenceBinding;
            aload 1 /* wildcardBinding */
            getfield org.eclipse.jdt.internal.compiler.lookup.WildcardBinding.rank:I
            aload 2 /* bound */
            aload 5 /* otherBounds */
            aload 1 /* wildcardBinding */
            getfield org.eclipse.jdt.internal.compiler.lookup.WildcardBinding.boundKind:I
            aload 6 /* annotations */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.createWildcard:(Lorg/eclipse/jdt/internal/compiler/lookup/ReferenceBinding;ILorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;[Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;I[Lorg/eclipse/jdt/internal/compiler/lookup/AnnotationBinding;)Lorg/eclipse/jdt/internal/compiler/lookup/WildcardBinding;
            putfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.typeReplacement:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
        end local 6 // org.eclipse.jdt.internal.compiler.lookup.AnnotationBinding[] annotations
        10: .line 263
            goto 16
        11: .line 264
      StackMap locals: org.eclipse.jdt.internal.compiler.lookup.TypeBinding[]
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.environment:Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;
            aload 1 /* wildcardBinding */
            getfield org.eclipse.jdt.internal.compiler.lookup.WildcardBinding.genericType:Lorg/eclipse/jdt/internal/compiler/lookup/ReferenceBinding;
            aload 1 /* wildcardBinding */
            getfield org.eclipse.jdt.internal.compiler.lookup.WildcardBinding.rank:I
            aload 2 /* bound */
            aload 5 /* otherBounds */
            aload 1 /* wildcardBinding */
            getfield org.eclipse.jdt.internal.compiler.lookup.WildcardBinding.boundKind:I
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.createWildcard:(Lorg/eclipse/jdt/internal/compiler/lookup/ReferenceBinding;ILorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;[Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;I)Lorg/eclipse/jdt/internal/compiler/lookup/WildcardBinding;
            putfield org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.typeReplacement:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
        end local 5 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding[] otherBounds
        end local 4 // org.eclipse.jdt.internal.compiler.env.IBinaryAnnotation[] binaryAnnotations
        12: .line 267
            goto 16
      StackMap locals: org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer org.eclipse.jdt.internal.compiler.lookup.WildcardBinding org.eclipse.jdt.internal.compiler.lookup.TypeBinding org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer
      StackMap stack: java.lang.Throwable
        13: astore 7
        14: .line 268
            aload 0 /* this */
            aload 3 /* memento */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.restore:(Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;)V
        15: .line 269
            aload 7
            athrow
        16: .line 268
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* memento */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer.restore:(Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;)V
        17: .line 270
            iconst_0
            ireturn
        end local 3 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer memento
        end local 2 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding bound
        end local 1 // org.eclipse.jdt.internal.compiler.lookup.WildcardBinding wildcardBinding
        end local 0 // org.eclipse.jdt.internal.compiler.lookup.ExternalAnnotationSuperimposer this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   18     0               this  Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;
            0   18     1    wildcardBinding  Lorg/eclipse/jdt/internal/compiler/lookup/WildcardBinding;
            1   18     2              bound  Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            2   18     3            memento  Lorg/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer;
            5   12     4  binaryAnnotations  [Lorg/eclipse/jdt/internal/compiler/env/IBinaryAnnotation;
            7   12     5        otherBounds  [Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            9   10     6        annotations  [Lorg/eclipse/jdt/internal/compiler/lookup/AnnotationBinding;
      Exception table:
        from    to  target  type
           2    13      13  any
    MethodParameters:
                 Name  Flags
      wildcardBinding  
}
SourceFile: "ExternalAnnotationSuperimposer.java"