class com.sun.tools.javac.code.Types$TypeProjection extends com.sun.tools.javac.code.Types$TypeMapping<com.sun.tools.javac.code.Types$ProjectionKind>
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.sun.tools.javac.code.Types$TypeProjection
  super_class: com.sun.tools.javac.code.Types$TypeMapping
{
  com.sun.tools.javac.util.List<com.sun.tools.javac.code.Type> vars;
    descriptor: Lcom/sun/tools/javac/util/List;
    flags: (0x0000) 
    Signature: Lcom/sun/tools/javac/util/List<Lcom/sun/tools/javac/code/Type;>;

  java.util.Set<com.sun.tools.javac.code.Type> seen;
    descriptor: Ljava/util/Set;
    flags: (0x0000) 
    Signature: Ljava/util/Set<Lcom/sun/tools/javac/code/Type;>;

  final com.sun.tools.javac.code.Types this$0;
    descriptor: Lcom/sun/tools/javac/code/Types;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  private static volatile int[] $SWITCH_TABLE$com$sun$tools$javac$code$Types$ProjectionKind;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  public void <init>(com.sun.tools.javac.util.List<com.sun.tools.javac.code.Type>);
    descriptor: (Lcom/sun/tools/javac/code/Types;Lcom/sun/tools/javac/util/List;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.sun.tools.javac.code.Types$TypeProjection this
        start local 2 // com.sun.tools.javac.util.List vars
         0: .line 244
            aload 0 /* this */
            aload 1
            putfield com.sun.tools.javac.code.Types$TypeProjection.this$0:Lcom/sun/tools/javac/code/Types;
            aload 0 /* this */
            invokespecial com.sun.tools.javac.code.Types$TypeMapping.<init>:()V
         1: .line 242
            aload 0 /* this */
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            putfield com.sun.tools.javac.code.Types$TypeProjection.seen:Ljava/util/Set;
         2: .line 245
            aload 0 /* this */
            aload 2 /* vars */
            putfield com.sun.tools.javac.code.Types$TypeProjection.vars:Lcom/sun/tools/javac/util/List;
         3: .line 246
            return
        end local 2 // com.sun.tools.javac.util.List vars
        end local 0 // com.sun.tools.javac.code.Types$TypeProjection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/sun/tools/javac/code/Types$TypeProjection;
            0    4     2  vars  Lcom/sun/tools/javac/util/List<Lcom/sun/tools/javac/code/Type;>;
    Signature: (Lcom/sun/tools/javac/util/List<Lcom/sun/tools/javac/code/Type;>;)V
    MethodParameters:
        Name  Flags
      this$0  final
      vars    

  public com.sun.tools.javac.code.Type visitClassType(com.sun.tools.javac.code.Type$ClassType, com.sun.tools.javac.code.Types$ProjectionKind);
    descriptor: (Lcom/sun/tools/javac/code/Type$ClassType;Lcom/sun/tools/javac/code/Types$ProjectionKind;)Lcom/sun/tools/javac/code/Type;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=12, args_size=3
        start local 0 // com.sun.tools.javac.code.Types$TypeProjection this
        start local 1 // com.sun.tools.javac.code.Type$ClassType t
        start local 2 // com.sun.tools.javac.code.Types$ProjectionKind pkind
         0: .line 250
            aload 1 /* t */
            invokevirtual com.sun.tools.javac.code.Type$ClassType.isCompound:()Z
            ifeq 5
         1: .line 251
            aload 0 /* this */
            getfield com.sun.tools.javac.code.Types$TypeProjection.this$0:Lcom/sun/tools/javac/code/Types;
            aload 1 /* t */
            invokevirtual com.sun.tools.javac.code.Types.directSupertypes:(Lcom/sun/tools/javac/code/Type;)Lcom/sun/tools/javac/util/List;
            astore 3 /* components */
        start local 3 // com.sun.tools.javac.util.List components
         2: .line 252
            aload 3 /* components */
            aload 0 /* this */
            aload 2 /* pkind */
            invokedynamic apply(Lcom/sun/tools/javac/code/Types$TypeProjection;Lcom/sun/tools/javac/code/Types$ProjectionKind;)Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  com/sun/tools/javac/code/Types$TypeProjection.lambda$0(Lcom/sun/tools/javac/code/Types$ProjectionKind;Lcom/sun/tools/javac/code/Type;)Lcom/sun/tools/javac/code/Type; (7)
                  (Lcom/sun/tools/javac/code/Type;)Lcom/sun/tools/javac/code/Type;
            invokevirtual com.sun.tools.javac.util.List.map:(Ljava/util/function/Function;)Lcom/sun/tools/javac/util/List;
            astore 4 /* components1 */
        start local 4 // com.sun.tools.javac.util.List components1
         3: .line 253
            aload 3 /* components */
            aload 4 /* components1 */
            if_acmpne 4
            aload 1 /* t */
            areturn
         4: .line 254
      StackMap locals: com.sun.tools.javac.util.List com.sun.tools.javac.util.List
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.tools.javac.code.Types$TypeProjection.this$0:Lcom/sun/tools/javac/code/Types;
            aload 4 /* components1 */
            invokevirtual com.sun.tools.javac.code.Types.makeIntersectionType:(Lcom/sun/tools/javac/util/List;)Lcom/sun/tools/javac/code/Type$IntersectionClassType;
            areturn
        end local 4 // com.sun.tools.javac.util.List components1
        end local 3 // com.sun.tools.javac.util.List components
         5: .line 256
      StackMap locals:
      StackMap stack:
            aload 1 /* t */
            invokevirtual com.sun.tools.javac.code.Type$ClassType.getEnclosingType:()Lcom/sun/tools/javac/code/Type;
            astore 3 /* outer */
        start local 3 // com.sun.tools.javac.code.Type outer
         6: .line 257
            aload 0 /* this */
            aload 3 /* outer */
            aload 2 /* pkind */
            invokevirtual com.sun.tools.javac.code.Types$TypeProjection.visit:(Lcom/sun/tools/javac/code/Type;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.sun.tools.javac.code.Type
            astore 4 /* outer1 */
        start local 4 // com.sun.tools.javac.code.Type outer1
         7: .line 258
            aload 1 /* t */
            invokevirtual com.sun.tools.javac.code.Type$ClassType.getTypeArguments:()Lcom/sun/tools/javac/util/List;
            astore 5 /* typarams */
        start local 5 // com.sun.tools.javac.util.List typarams
         8: .line 259
            aload 1 /* t */
            getfield com.sun.tools.javac.code.Type$ClassType.tsym:Lcom/sun/tools/javac/code/Symbol$TypeSymbol;
            getfield com.sun.tools.javac.code.Symbol$TypeSymbol.type:Lcom/sun/tools/javac/code/Type;
            invokevirtual com.sun.tools.javac.code.Type.getTypeArguments:()Lcom/sun/tools/javac/util/List;
            astore 6 /* formals */
        start local 6 // com.sun.tools.javac.util.List formals
         9: .line 260
            new com.sun.tools.javac.util.ListBuffer
            dup
            invokespecial com.sun.tools.javac.util.ListBuffer.<init>:()V
            astore 7 /* typarams1 */
        start local 7 // com.sun.tools.javac.util.ListBuffer typarams1
        10: .line 261
            iconst_0
            istore 8 /* changed */
        start local 8 // boolean changed
        11: .line 262
            aload 5 /* typarams */
            invokevirtual com.sun.tools.javac.util.List.iterator:()Ljava/util/Iterator;
            astore 10
            goto 21
      StackMap locals: com.sun.tools.javac.code.Types$TypeProjection com.sun.tools.javac.code.Type$ClassType com.sun.tools.javac.code.Types$ProjectionKind com.sun.tools.javac.code.Type com.sun.tools.javac.code.Type com.sun.tools.javac.util.List com.sun.tools.javac.util.List com.sun.tools.javac.util.ListBuffer int top java.util.Iterator
      StackMap stack:
        12: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.sun.tools.javac.code.Type
            astore 9 /* actual */
        start local 9 // com.sun.tools.javac.code.Type actual
        13: .line 263
            aload 0 /* this */
            aload 1 /* t */
            aload 6 /* formals */
            getfield com.sun.tools.javac.util.List.head:Ljava/lang/Object;
            checkcast com.sun.tools.javac.code.Type
            invokevirtual com.sun.tools.javac.code.Type.getUpperBound:()Lcom/sun/tools/javac/code/Type;
            aload 9 /* actual */
            aload 2 /* pkind */
            invokevirtual com.sun.tools.javac.code.Types$TypeProjection.mapTypeArgument:(Lcom/sun/tools/javac/code/Type;Lcom/sun/tools/javac/code/Type;Lcom/sun/tools/javac/code/Type;Lcom/sun/tools/javac/code/Types$ProjectionKind;)Lcom/sun/tools/javac/code/Type;
            astore 11 /* t2 */
        start local 11 // com.sun.tools.javac.code.Type t2
        14: .line 264
            aload 11 /* t2 */
            getstatic com.sun.tools.javac.code.TypeTag.BOT:Lcom/sun/tools/javac/code/TypeTag;
            invokevirtual com.sun.tools.javac.code.Type.hasTag:(Lcom/sun/tools/javac/code/TypeTag;)Z
            ifeq 16
        15: .line 266
            aload 0 /* this */
            getfield com.sun.tools.javac.code.Types$TypeProjection.this$0:Lcom/sun/tools/javac/code/Types;
            getfield com.sun.tools.javac.code.Types.syms:Lcom/sun/tools/javac/code/Symtab;
            getfield com.sun.tools.javac.code.Symtab.botType:Lcom/sun/tools/javac/code/Type;
            areturn
        16: .line 268
      StackMap locals: com.sun.tools.javac.code.Types$TypeProjection com.sun.tools.javac.code.Type$ClassType com.sun.tools.javac.code.Types$ProjectionKind com.sun.tools.javac.code.Type com.sun.tools.javac.code.Type com.sun.tools.javac.util.List com.sun.tools.javac.util.List com.sun.tools.javac.util.ListBuffer int com.sun.tools.javac.code.Type java.util.Iterator com.sun.tools.javac.code.Type
      StackMap stack:
            aload 7 /* typarams1 */
            aload 11 /* t2 */
            invokevirtual com.sun.tools.javac.util.ListBuffer.add:(Ljava/lang/Object;)Z
            pop
        17: .line 269
            iload 8 /* changed */
            aload 9 /* actual */
            aload 11 /* t2 */
            if_acmpeq 18
            iconst_1
            goto 19
      StackMap locals:
      StackMap stack: int
        18: iconst_0
      StackMap locals: com.sun.tools.javac.code.Types$TypeProjection com.sun.tools.javac.code.Type$ClassType com.sun.tools.javac.code.Types$ProjectionKind com.sun.tools.javac.code.Type com.sun.tools.javac.code.Type com.sun.tools.javac.util.List com.sun.tools.javac.util.List com.sun.tools.javac.util.ListBuffer int com.sun.tools.javac.code.Type java.util.Iterator com.sun.tools.javac.code.Type
      StackMap stack: int int
        19: ior
            istore 8 /* changed */
        20: .line 270
            aload 6 /* formals */
            getfield com.sun.tools.javac.util.List.tail:Lcom/sun/tools/javac/util/List;
            astore 6 /* formals */
        end local 11 // com.sun.tools.javac.code.Type t2
        end local 9 // com.sun.tools.javac.code.Type actual
        21: .line 262
      StackMap locals: com.sun.tools.javac.code.Types$TypeProjection com.sun.tools.javac.code.Type$ClassType com.sun.tools.javac.code.Types$ProjectionKind com.sun.tools.javac.code.Type com.sun.tools.javac.code.Type com.sun.tools.javac.util.List com.sun.tools.javac.util.List com.sun.tools.javac.util.ListBuffer int top java.util.Iterator
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 12
        22: .line 272
            aload 4 /* outer1 */
            aload 3 /* outer */
            if_acmpne 23
            iload 8 /* changed */
            ifne 23
            aload 1 /* t */
            areturn
        23: .line 273
      StackMap locals: com.sun.tools.javac.code.Types$TypeProjection com.sun.tools.javac.code.Type$ClassType com.sun.tools.javac.code.Types$ProjectionKind com.sun.tools.javac.code.Type com.sun.tools.javac.code.Type com.sun.tools.javac.util.List com.sun.tools.javac.util.List com.sun.tools.javac.util.ListBuffer int
      StackMap stack:
            new com.sun.tools.javac.code.Types$TypeProjection$1
            dup
            aload 0 /* this */
            aload 4 /* outer1 */
            aload 7 /* typarams1 */
            invokevirtual com.sun.tools.javac.util.ListBuffer.toList:()Lcom/sun/tools/javac/util/List;
            aload 1 /* t */
            getfield com.sun.tools.javac.code.Type$ClassType.tsym:Lcom/sun/tools/javac/code/Symbol$TypeSymbol;
            aload 1 /* t */
            invokevirtual com.sun.tools.javac.code.Type$ClassType.getMetadata:()Lcom/sun/tools/javac/code/TypeMetadata;
            invokespecial com.sun.tools.javac.code.Types$TypeProjection$1.<init>:(Lcom/sun/tools/javac/code/Types$TypeProjection;Lcom/sun/tools/javac/code/Type;Lcom/sun/tools/javac/util/List;Lcom/sun/tools/javac/code/Symbol$TypeSymbol;Lcom/sun/tools/javac/code/TypeMetadata;)V
            areturn
        end local 8 // boolean changed
        end local 7 // com.sun.tools.javac.util.ListBuffer typarams1
        end local 6 // com.sun.tools.javac.util.List formals
        end local 5 // com.sun.tools.javac.util.List typarams
        end local 4 // com.sun.tools.javac.code.Type outer1
        end local 3 // com.sun.tools.javac.code.Type outer
        end local 2 // com.sun.tools.javac.code.Types$ProjectionKind pkind
        end local 1 // com.sun.tools.javac.code.Type$ClassType t
        end local 0 // com.sun.tools.javac.code.Types$TypeProjection this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   24     0         this  Lcom/sun/tools/javac/code/Types$TypeProjection;
            0   24     1            t  Lcom/sun/tools/javac/code/Type$ClassType;
            0   24     2        pkind  Lcom/sun/tools/javac/code/Types$ProjectionKind;
            2    5     3   components  Lcom/sun/tools/javac/util/List<Lcom/sun/tools/javac/code/Type;>;
            3    5     4  components1  Lcom/sun/tools/javac/util/List<Lcom/sun/tools/javac/code/Type;>;
            6   24     3        outer  Lcom/sun/tools/javac/code/Type;
            7   24     4       outer1  Lcom/sun/tools/javac/code/Type;
            8   24     5     typarams  Lcom/sun/tools/javac/util/List<Lcom/sun/tools/javac/code/Type;>;
            9   24     6      formals  Lcom/sun/tools/javac/util/List<Lcom/sun/tools/javac/code/Type;>;
           10   24     7    typarams1  Lcom/sun/tools/javac/util/ListBuffer<Lcom/sun/tools/javac/code/Type;>;
           11   24     8      changed  Z
           13   21     9       actual  Lcom/sun/tools/javac/code/Type;
           14   21    11           t2  Lcom/sun/tools/javac/code/Type;
    MethodParameters:
       Name  Flags
      t      
      pkind  

  public com.sun.tools.javac.code.Type visitArrayType(com.sun.tools.javac.code.Type$ArrayType, com.sun.tools.javac.code.Types$ProjectionKind);
    descriptor: (Lcom/sun/tools/javac/code/Type$ArrayType;Lcom/sun/tools/javac/code/Types$ProjectionKind;)Lcom/sun/tools/javac/code/Type;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=3
        start local 0 // com.sun.tools.javac.code.Types$TypeProjection this
        start local 1 // com.sun.tools.javac.code.Type$ArrayType t
        start local 2 // com.sun.tools.javac.code.Types$ProjectionKind s
         0: .line 284
            aload 1 /* t */
            getfield com.sun.tools.javac.code.Type$ArrayType.elemtype:Lcom/sun/tools/javac/code/Type;
            astore 3 /* elemtype */
        start local 3 // com.sun.tools.javac.code.Type elemtype
         1: .line 285
            aload 0 /* this */
            aload 3 /* elemtype */
            aload 2 /* s */
            invokevirtual com.sun.tools.javac.code.Types$TypeProjection.visit:(Lcom/sun/tools/javac/code/Type;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.sun.tools.javac.code.Type
            astore 4 /* elemtype1 */
        start local 4 // com.sun.tools.javac.code.Type elemtype1
         2: .line 286
            aload 4 /* elemtype1 */
            aload 3 /* elemtype */
            if_acmpne 4
         3: .line 287
            aload 1 /* t */
            areturn
         4: .line 288
      StackMap locals: com.sun.tools.javac.code.Type com.sun.tools.javac.code.Type
      StackMap stack:
            aload 4 /* elemtype1 */
            getstatic com.sun.tools.javac.code.TypeTag.BOT:Lcom/sun/tools/javac/code/TypeTag;
            invokevirtual com.sun.tools.javac.code.Type.hasTag:(Lcom/sun/tools/javac/code/TypeTag;)Z
            ifeq 6
         5: .line 290
            aload 0 /* this */
            getfield com.sun.tools.javac.code.Types$TypeProjection.this$0:Lcom/sun/tools/javac/code/Types;
            getfield com.sun.tools.javac.code.Types.syms:Lcom/sun/tools/javac/code/Symtab;
            getfield com.sun.tools.javac.code.Symtab.botType:Lcom/sun/tools/javac/code/Type;
            areturn
         6: .line 292
      StackMap locals:
      StackMap stack:
            new com.sun.tools.javac.code.Types$TypeProjection$2
            dup
            aload 0 /* this */
            aload 4 /* elemtype1 */
            aload 1 /* t */
            getfield com.sun.tools.javac.code.Type$ArrayType.tsym:Lcom/sun/tools/javac/code/Symbol$TypeSymbol;
            aload 1 /* t */
            getfield com.sun.tools.javac.code.Type$ArrayType.metadata:Lcom/sun/tools/javac/code/TypeMetadata;
            invokespecial com.sun.tools.javac.code.Types$TypeProjection$2.<init>:(Lcom/sun/tools/javac/code/Types$TypeProjection;Lcom/sun/tools/javac/code/Type;Lcom/sun/tools/javac/code/Symbol$TypeSymbol;Lcom/sun/tools/javac/code/TypeMetadata;)V
            areturn
        end local 4 // com.sun.tools.javac.code.Type elemtype1
        end local 3 // com.sun.tools.javac.code.Type elemtype
        end local 2 // com.sun.tools.javac.code.Types$ProjectionKind s
        end local 1 // com.sun.tools.javac.code.Type$ArrayType t
        end local 0 // com.sun.tools.javac.code.Types$TypeProjection this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       this  Lcom/sun/tools/javac/code/Types$TypeProjection;
            0    7     1          t  Lcom/sun/tools/javac/code/Type$ArrayType;
            0    7     2          s  Lcom/sun/tools/javac/code/Types$ProjectionKind;
            1    7     3   elemtype  Lcom/sun/tools/javac/code/Type;
            2    7     4  elemtype1  Lcom/sun/tools/javac/code/Type;
    MethodParameters:
      Name  Flags
      t     
      s     

  public com.sun.tools.javac.code.Type visitTypeVar(com.sun.tools.javac.code.Type$TypeVar, com.sun.tools.javac.code.Types$ProjectionKind);
    descriptor: (Lcom/sun/tools/javac/code/Type$TypeVar;Lcom/sun/tools/javac/code/Types$ProjectionKind;)Lcom/sun/tools/javac/code/Type;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // com.sun.tools.javac.code.Types$TypeProjection this
        start local 1 // com.sun.tools.javac.code.Type$TypeVar t
        start local 2 // com.sun.tools.javac.code.Types$ProjectionKind pkind
         0: .line 303
            aload 0 /* this */
            getfield com.sun.tools.javac.code.Types$TypeProjection.vars:Lcom/sun/tools/javac/util/List;
            aload 1 /* t */
            invokevirtual com.sun.tools.javac.util.List.contains:(Ljava/lang/Object;)Z
            ifeq 23
         1: .line 304
            aload 0 /* this */
            getfield com.sun.tools.javac.code.Types$TypeProjection.seen:Ljava/util/Set;
            aload 1 /* t */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            ifeq 19
         2: .line 307
            invokestatic com.sun.tools.javac.code.Types$TypeProjection.$SWITCH_TABLE$com$sun$tools$javac$code$Types$ProjectionKind:()[I
            aload 2 /* pkind */
            invokevirtual com.sun.tools.javac.code.Types$ProjectionKind.ordinal:()I
            iaload
            tableswitch { // 1 - 2
                    1: 3
                    2: 5
              default: 10
          }
         3: .line 309
      StackMap locals:
      StackMap stack:
            aload 1 /* t */
            invokevirtual com.sun.tools.javac.code.Type$TypeVar.getUpperBound:()Lcom/sun/tools/javac/code/Type;
            astore 3 /* bound */
        start local 3 // com.sun.tools.javac.code.Type bound
         4: .line 310
            goto 13
        end local 3 // com.sun.tools.javac.code.Type bound
         5: .line 312
      StackMap locals:
      StackMap stack:
            aload 1 /* t */
            invokevirtual com.sun.tools.javac.code.Type$TypeVar.getLowerBound:()Lcom/sun/tools/javac/code/Type;
            ifnonnull 7
         6: .line 313
            aload 0 /* this */
            getfield com.sun.tools.javac.code.Types$TypeProjection.this$0:Lcom/sun/tools/javac/code/Types;
            getfield com.sun.tools.javac.code.Types.syms:Lcom/sun/tools/javac/code/Symtab;
            getfield com.sun.tools.javac.code.Symtab.botType:Lcom/sun/tools/javac/code/Type;
            goto 8
         7: .line 314
      StackMap locals:
      StackMap stack:
            aload 1 /* t */
            invokevirtual com.sun.tools.javac.code.Type$TypeVar.getLowerBound:()Lcom/sun/tools/javac/code/Type;
         8: .line 312
      StackMap locals:
      StackMap stack: com.sun.tools.javac.code.Type
            astore 3 /* bound */
        start local 3 // com.sun.tools.javac.code.Type bound
         9: .line 315
            goto 13
        end local 3 // com.sun.tools.javac.code.Type bound
        10: .line 317
      StackMap locals:
      StackMap stack:
            invokestatic com.sun.tools.javac.util.Assert.error:()V
        11: .line 322
            aload 0 /* this */
            getfield com.sun.tools.javac.code.Types$TypeProjection.seen:Ljava/util/Set;
            aload 1 /* t */
            invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
            pop
        12: .line 318
            aconst_null
            areturn
        start local 3 // com.sun.tools.javac.code.Type bound
        13: .line 320
      StackMap locals: com.sun.tools.javac.code.Type
      StackMap stack:
            aload 3 /* bound */
            aload 0 /* this */
            aload 2 /* pkind */
            invokevirtual com.sun.tools.javac.code.Type.map:(Lcom/sun/tools/javac/code/Types$TypeMapping;Ljava/lang/Object;)Lcom/sun/tools/javac/code/Type;
            astore 5
        14: .line 322
            aload 0 /* this */
            getfield com.sun.tools.javac.code.Types$TypeProjection.seen:Ljava/util/Set;
            aload 1 /* t */
            invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
            pop
        15: .line 320
            aload 5
            areturn
        end local 3 // com.sun.tools.javac.code.Type bound
        16: .line 321
      StackMap locals: com.sun.tools.javac.code.Types$TypeProjection com.sun.tools.javac.code.Type$TypeVar com.sun.tools.javac.code.Types$ProjectionKind
      StackMap stack: java.lang.Throwable
            astore 4
        17: .line 322
            aload 0 /* this */
            getfield com.sun.tools.javac.code.Types$TypeProjection.seen:Ljava/util/Set;
            aload 1 /* t */
            invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
            pop
        18: .line 323
            aload 4
            athrow
        19: .line 326
      StackMap locals:
      StackMap stack:
            aload 2 /* pkind */
            getstatic com.sun.tools.javac.code.Types$ProjectionKind.UPWARDS:Lcom/sun/tools/javac/code/Types$ProjectionKind;
            if_acmpne 21
        20: .line 327
            aload 0 /* this */
            getfield com.sun.tools.javac.code.Types$TypeProjection.this$0:Lcom/sun/tools/javac/code/Types;
            getfield com.sun.tools.javac.code.Types.syms:Lcom/sun/tools/javac/code/Symtab;
            getfield com.sun.tools.javac.code.Symtab.objectType:Lcom/sun/tools/javac/code/Type;
            goto 22
      StackMap locals:
      StackMap stack:
        21: aload 0 /* this */
            getfield com.sun.tools.javac.code.Types$TypeProjection.this$0:Lcom/sun/tools/javac/code/Types;
            getfield com.sun.tools.javac.code.Types.syms:Lcom/sun/tools/javac/code/Symtab;
            getfield com.sun.tools.javac.code.Symtab.botType:Lcom/sun/tools/javac/code/Type;
        22: .line 326
      StackMap locals:
      StackMap stack: com.sun.tools.javac.code.Type
            areturn
        23: .line 330
      StackMap locals:
      StackMap stack:
            aload 1 /* t */
            areturn
        end local 2 // com.sun.tools.javac.code.Types$ProjectionKind pkind
        end local 1 // com.sun.tools.javac.code.Type$TypeVar t
        end local 0 // com.sun.tools.javac.code.Types$TypeProjection this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   24     0   this  Lcom/sun/tools/javac/code/Types$TypeProjection;
            0   24     1      t  Lcom/sun/tools/javac/code/Type$TypeVar;
            0   24     2  pkind  Lcom/sun/tools/javac/code/Types$ProjectionKind;
            4    5     3  bound  Lcom/sun/tools/javac/code/Type;
            9   10     3  bound  Lcom/sun/tools/javac/code/Type;
           13   16     3  bound  Lcom/sun/tools/javac/code/Type;
      Exception table:
        from    to  target  type
           2    11      16  any
          13    14      16  any
    MethodParameters:
       Name  Flags
      t      
      pkind  

  private com.sun.tools.javac.code.Type mapTypeArgument(com.sun.tools.javac.code.Type, com.sun.tools.javac.code.Type, com.sun.tools.javac.code.Type, com.sun.tools.javac.code.Types$ProjectionKind);
    descriptor: (Lcom/sun/tools/javac/code/Type;Lcom/sun/tools/javac/code/Type;Lcom/sun/tools/javac/code/Type;Lcom/sun/tools/javac/code/Types$ProjectionKind;)Lcom/sun/tools/javac/code/Type;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=5, args_size=5
        start local 0 // com.sun.tools.javac.code.Types$TypeProjection this
        start local 1 // com.sun.tools.javac.code.Type site
        start local 2 // com.sun.tools.javac.code.Type declaredBound
        start local 3 // com.sun.tools.javac.code.Type t
        start local 4 // com.sun.tools.javac.code.Types$ProjectionKind pkind
         0: .line 335
            aload 3 /* t */
            aload 0 /* this */
            getfield com.sun.tools.javac.code.Types$TypeProjection.vars:Lcom/sun/tools/javac/util/List;
            invokevirtual com.sun.tools.javac.code.Type.containsAny:(Lcom/sun/tools/javac/util/List;)Z
            ifeq 2
         1: .line 336
            aload 3 /* t */
            new com.sun.tools.javac.code.Types$TypeProjection$TypeArgumentProjection
            dup
            aload 0 /* this */
            aload 1 /* site */
            aload 2 /* declaredBound */
            invokespecial com.sun.tools.javac.code.Types$TypeProjection$TypeArgumentProjection.<init>:(Lcom/sun/tools/javac/code/Types$TypeProjection;Lcom/sun/tools/javac/code/Type;Lcom/sun/tools/javac/code/Type;)V
            aload 4 /* pkind */
            invokevirtual com.sun.tools.javac.code.Type.map:(Lcom/sun/tools/javac/code/Types$TypeMapping;Ljava/lang/Object;)Lcom/sun/tools/javac/code/Type;
            goto 3
         2: .line 337
      StackMap locals:
      StackMap stack:
            aload 3 /* t */
         3: .line 335
      StackMap locals:
      StackMap stack: com.sun.tools.javac.code.Type
            areturn
        end local 4 // com.sun.tools.javac.code.Types$ProjectionKind pkind
        end local 3 // com.sun.tools.javac.code.Type t
        end local 2 // com.sun.tools.javac.code.Type declaredBound
        end local 1 // com.sun.tools.javac.code.Type site
        end local 0 // com.sun.tools.javac.code.Types$TypeProjection this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lcom/sun/tools/javac/code/Types$TypeProjection;
            0    4     1           site  Lcom/sun/tools/javac/code/Type;
            0    4     2  declaredBound  Lcom/sun/tools/javac/code/Type;
            0    4     3              t  Lcom/sun/tools/javac/code/Type;
            0    4     4          pkind  Lcom/sun/tools/javac/code/Types$ProjectionKind;
    MethodParameters:
               Name  Flags
      site           
      declaredBound  
      t              
      pkind          

  public java.lang.Object visitClassType(com.sun.tools.javac.code.Type$ClassType, java.lang.Object);
    descriptor: (Lcom/sun/tools/javac/code/Type$ClassType;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
         0: .line 1
            aload 0
            aload 1
            aload 2
            checkcast com.sun.tools.javac.code.Types$ProjectionKind
            invokevirtual com.sun.tools.javac.code.Types$TypeProjection.visitClassType:(Lcom/sun/tools/javac/code/Type$ClassType;Lcom/sun/tools/javac/code/Types$ProjectionKind;)Lcom/sun/tools/javac/code/Type;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public java.lang.Object visitTypeVar(com.sun.tools.javac.code.Type$TypeVar, java.lang.Object);
    descriptor: (Lcom/sun/tools/javac/code/Type$TypeVar;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
         0: .line 1
            aload 0
            aload 1
            aload 2
            checkcast com.sun.tools.javac.code.Types$ProjectionKind
            invokevirtual com.sun.tools.javac.code.Types$TypeProjection.visitTypeVar:(Lcom/sun/tools/javac/code/Type$TypeVar;Lcom/sun/tools/javac/code/Types$ProjectionKind;)Lcom/sun/tools/javac/code/Type;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public java.lang.Object visitArrayType(com.sun.tools.javac.code.Type$ArrayType, java.lang.Object);
    descriptor: (Lcom/sun/tools/javac/code/Type$ArrayType;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
         0: .line 1
            aload 0
            aload 1
            aload 2
            checkcast com.sun.tools.javac.code.Types$ProjectionKind
            invokevirtual com.sun.tools.javac.code.Types$TypeProjection.visitArrayType:(Lcom/sun/tools/javac/code/Type$ArrayType;Lcom/sun/tools/javac/code/Types$ProjectionKind;)Lcom/sun/tools/javac/code/Type;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static int[] $SWITCH_TABLE$com$sun$tools$javac$code$Types$ProjectionKind();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 239
            getstatic com.sun.tools.javac.code.Types$TypeProjection.$SWITCH_TABLE$com$sun$tools$javac$code$Types$ProjectionKind:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic com.sun.tools.javac.code.Types$ProjectionKind.values:()[Lcom/sun/tools/javac/code/Types$ProjectionKind;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic com.sun.tools.javac.code.Types$ProjectionKind.DOWNWARDS:Lcom/sun/tools/javac/code/Types$ProjectionKind;
            invokevirtual com.sun.tools.javac.code.Types$ProjectionKind.ordinal:()I
            iconst_2
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic com.sun.tools.javac.code.Types$ProjectionKind.UPWARDS:Lcom/sun/tools/javac/code/Types$ProjectionKind;
            invokevirtual com.sun.tools.javac.code.Types$ProjectionKind.ordinal:()I
            iconst_1
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            dup
            putstatic com.sun.tools.javac.code.Types$TypeProjection.$SWITCH_TABLE$com$sun$tools$javac$code$Types$ProjectionKind:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError

  static com.sun.tools.javac.code.Types access$4(com.sun.tools.javac.code.Types$TypeProjection);
    descriptor: (Lcom/sun/tools/javac/code/Types$TypeProjection;)Lcom/sun/tools/javac/code/Types;
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 239
            aload 0
            getfield com.sun.tools.javac.code.Types$TypeProjection.this$0:Lcom/sun/tools/javac/code/Types;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private com.sun.tools.javac.code.Type lambda$0(com.sun.tools.javac.code.Types$ProjectionKind, com.sun.tools.javac.code.Type);
    descriptor: (Lcom/sun/tools/javac/code/Types$ProjectionKind;Lcom/sun/tools/javac/code/Type;)Lcom/sun/tools/javac/code/Type;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.sun.tools.javac.code.Types$TypeProjection this
        start local 2 // com.sun.tools.javac.code.Type c
         0: .line 252
            aload 2 /* c */
            aload 0 /* this */
            aload 1
            invokevirtual com.sun.tools.javac.code.Type.map:(Lcom/sun/tools/javac/code/Types$TypeMapping;Ljava/lang/Object;)Lcom/sun/tools/javac/code/Type;
            areturn
        end local 2 // com.sun.tools.javac.code.Type c
        end local 0 // com.sun.tools.javac.code.Types$TypeProjection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/tools/javac/code/Types$TypeProjection;
            0    1     2     c  Lcom/sun/tools/javac/code/Type;
}
Signature: Lcom/sun/tools/javac/code/Types$TypeMapping<Lcom/sun/tools/javac/code/Types$ProjectionKind;>;
SourceFile: "Types.java"
NestHost: com.sun.tools.javac.code.Types
InnerClasses:
  public abstract TypeSymbol = com.sun.tools.javac.code.Symbol$TypeSymbol of com.sun.tools.javac.code.Symbol
  public ArrayType = com.sun.tools.javac.code.Type$ArrayType of com.sun.tools.javac.code.Type
  public ClassType = com.sun.tools.javac.code.Type$ClassType of com.sun.tools.javac.code.Type
  public IntersectionClassType = com.sun.tools.javac.code.Type$IntersectionClassType of com.sun.tools.javac.code.Type
  public TypeVar = com.sun.tools.javac.code.Type$TypeVar of com.sun.tools.javac.code.Type
  abstract ProjectionKind = com.sun.tools.javac.code.Types$ProjectionKind of com.sun.tools.javac.code.Types
  public TypeMapping = com.sun.tools.javac.code.Types$TypeMapping of com.sun.tools.javac.code.Types
  TypeProjection = com.sun.tools.javac.code.Types$TypeProjection of com.sun.tools.javac.code.Types
  com.sun.tools.javac.code.Types$TypeProjection$1
  com.sun.tools.javac.code.Types$TypeProjection$2
  TypeArgumentProjection = com.sun.tools.javac.code.Types$TypeProjection$TypeArgumentProjection of com.sun.tools.javac.code.Types$TypeProjection
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles