class com.sun.tools.javac.comp.Infer$SubstBounds extends com.sun.tools.javac.comp.Infer$CheckInst
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.sun.tools.javac.comp.Infer$SubstBounds
  super_class: com.sun.tools.javac.comp.Infer$CheckInst
{
  final com.sun.tools.javac.comp.Infer this$0;
    descriptor: Lcom/sun/tools/javac/comp/Infer;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  void <init>(com.sun.tools.javac.comp.Infer, com.sun.tools.javac.code.Type$UndetVar);
    descriptor: (Lcom/sun/tools/javac/comp/Infer;Lcom/sun/tools/javac/code/Type$UndetVar;)V
    flags: (0x0000) 
    Code:
      stack=8, locals=3, args_size=3
        start local 0 // com.sun.tools.javac.comp.Infer$SubstBounds this
        start local 2 // com.sun.tools.javac.code.Type$UndetVar uv
         0: .line 880
            aload 0 /* this */
            aload 1
            putfield com.sun.tools.javac.comp.Infer$SubstBounds.this$0:Lcom/sun/tools/javac/comp/Infer;
         1: .line 881
            aload 0 /* this */
            aload 1
            aload 2 /* uv */
            getstatic com.sun.tools.javac.code.Type$UndetVar$InferenceBound.LOWER:Lcom/sun/tools/javac/code/Type$UndetVar$InferenceBound;
            iconst_2
            anewarray com.sun.tools.javac.code.Type$UndetVar$InferenceBound
            dup
            iconst_0
            getstatic com.sun.tools.javac.code.Type$UndetVar$InferenceBound.EQ:Lcom/sun/tools/javac/code/Type$UndetVar$InferenceBound;
            aastore
            dup
            iconst_1
            getstatic com.sun.tools.javac.code.Type$UndetVar$InferenceBound.UPPER:Lcom/sun/tools/javac/code/Type$UndetVar$InferenceBound;
            aastore
            invokespecial com.sun.tools.javac.comp.Infer$CheckInst.<init>:(Lcom/sun/tools/javac/comp/Infer;Lcom/sun/tools/javac/code/Type$UndetVar;Lcom/sun/tools/javac/code/Type$UndetVar$InferenceBound;[Lcom/sun/tools/javac/code/Type$UndetVar$InferenceBound;)V
         2: .line 882
            return
        end local 2 // com.sun.tools.javac.code.Type$UndetVar uv
        end local 0 // com.sun.tools.javac.comp.Infer$SubstBounds this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/sun/tools/javac/comp/Infer$SubstBounds;
            0    3     2    uv  Lcom/sun/tools/javac/code/Type$UndetVar;
    MethodParameters:
        Name  Flags
      this$0  final
      uv      

  public com.sun.tools.javac.comp.Infer$IncorporationAction dup(com.sun.tools.javac.code.Type$UndetVar);
    descriptor: (Lcom/sun/tools/javac/code/Type$UndetVar;)Lcom/sun/tools/javac/comp/Infer$IncorporationAction;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.sun.tools.javac.comp.Infer$SubstBounds this
        start local 1 // com.sun.tools.javac.code.Type$UndetVar that
         0: .line 886
            new com.sun.tools.javac.comp.Infer$SubstBounds
            dup
            aload 0 /* this */
            getfield com.sun.tools.javac.comp.Infer$SubstBounds.this$0:Lcom/sun/tools/javac/comp/Infer;
            aload 1 /* that */
            invokespecial com.sun.tools.javac.comp.Infer$SubstBounds.<init>:(Lcom/sun/tools/javac/comp/Infer;Lcom/sun/tools/javac/code/Type$UndetVar;)V
            areturn
        end local 1 // com.sun.tools.javac.code.Type$UndetVar that
        end local 0 // com.sun.tools.javac.comp.Infer$SubstBounds this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/tools/javac/comp/Infer$SubstBounds;
            0    1     1  that  Lcom/sun/tools/javac/code/Type$UndetVar;
    MethodParameters:
      Name  Flags
      that  

  void apply(com.sun.tools.javac.comp.InferenceContext, com.sun.tools.javac.util.Warner);
    descriptor: (Lcom/sun/tools/javac/comp/InferenceContext;Lcom/sun/tools/javac/util/Warner;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // com.sun.tools.javac.comp.Infer$SubstBounds this
        start local 1 // com.sun.tools.javac.comp.InferenceContext inferenceContext
        start local 2 // com.sun.tools.javac.util.Warner warn
         0: .line 891
            aload 1 /* inferenceContext */
            getfield com.sun.tools.javac.comp.InferenceContext.undetvars:Lcom/sun/tools/javac/util/List;
            invokevirtual com.sun.tools.javac.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 5
      StackMap locals: com.sun.tools.javac.comp.Infer$SubstBounds com.sun.tools.javac.comp.InferenceContext com.sun.tools.javac.util.Warner top java.util.Iterator
      StackMap stack:
         1: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.sun.tools.javac.code.Type
            astore 3 /* undet */
        start local 3 // com.sun.tools.javac.code.Type undet
         2: .line 893
            aload 3 /* undet */
            checkcast com.sun.tools.javac.code.Type$UndetVar
            astore 5 /* uv2 */
        start local 5 // com.sun.tools.javac.code.Type$UndetVar uv2
         3: .line 894
            aload 5 /* uv2 */
            aload 0 /* this */
            getfield com.sun.tools.javac.comp.Infer$SubstBounds.uv:Lcom/sun/tools/javac/code/Type$UndetVar;
            getfield com.sun.tools.javac.code.Type$UndetVar.qtype:Lcom/sun/tools/javac/code/Type;
            invokestatic com.sun.tools.javac.util.List.of:(Ljava/lang/Object;)Lcom/sun/tools/javac/util/List;
            aload 0 /* this */
            getfield com.sun.tools.javac.comp.Infer$SubstBounds.uv:Lcom/sun/tools/javac/code/Type$UndetVar;
            invokevirtual com.sun.tools.javac.code.Type$UndetVar.getInst:()Lcom/sun/tools/javac/code/Type;
            invokestatic com.sun.tools.javac.util.List.of:(Ljava/lang/Object;)Lcom/sun/tools/javac/util/List;
            aload 0 /* this */
            getfield com.sun.tools.javac.comp.Infer$SubstBounds.this$0:Lcom/sun/tools/javac/comp/Infer;
            getfield com.sun.tools.javac.comp.Infer.types:Lcom/sun/tools/javac/code/Types;
            invokevirtual com.sun.tools.javac.code.Type$UndetVar.substBounds:(Lcom/sun/tools/javac/util/List;Lcom/sun/tools/javac/util/List;Lcom/sun/tools/javac/code/Types;)V
         4: .line 895
            aload 0 /* this */
            aload 5 /* uv2 */
            aload 1 /* inferenceContext */
            invokevirtual com.sun.tools.javac.comp.Infer$SubstBounds.checkCompatibleUpperBounds:(Lcom/sun/tools/javac/code/Type$UndetVar;Lcom/sun/tools/javac/comp/InferenceContext;)V
        end local 5 // com.sun.tools.javac.code.Type$UndetVar uv2
        end local 3 // com.sun.tools.javac.code.Type undet
         5: .line 891
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         6: .line 897
            aload 0 /* this */
            aload 1 /* inferenceContext */
            aload 2 /* warn */
            invokespecial com.sun.tools.javac.comp.Infer$CheckInst.apply:(Lcom/sun/tools/javac/comp/InferenceContext;Lcom/sun/tools/javac/util/Warner;)V
         7: .line 898
            return
        end local 2 // com.sun.tools.javac.util.Warner warn
        end local 1 // com.sun.tools.javac.comp.InferenceContext inferenceContext
        end local 0 // com.sun.tools.javac.comp.Infer$SubstBounds this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    8     0              this  Lcom/sun/tools/javac/comp/Infer$SubstBounds;
            0    8     1  inferenceContext  Lcom/sun/tools/javac/comp/InferenceContext;
            0    8     2              warn  Lcom/sun/tools/javac/util/Warner;
            2    5     3             undet  Lcom/sun/tools/javac/code/Type;
            3    5     5               uv2  Lcom/sun/tools/javac/code/Type$UndetVar;
    MethodParameters:
                  Name  Flags
      inferenceContext  
      warn              

  void checkCompatibleUpperBounds(com.sun.tools.javac.code.Type$UndetVar, com.sun.tools.javac.comp.InferenceContext);
    descriptor: (Lcom/sun/tools/javac/code/Type$UndetVar;Lcom/sun/tools/javac/comp/InferenceContext;)V
    flags: (0x0000) 
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // com.sun.tools.javac.comp.Infer$SubstBounds this
        start local 1 // com.sun.tools.javac.code.Type$UndetVar uv
        start local 2 // com.sun.tools.javac.comp.InferenceContext inferenceContext
         0: .line 906
            aload 1 /* uv */
            iconst_1
            anewarray com.sun.tools.javac.code.Type$UndetVar$InferenceBound
            dup
            iconst_0
            getstatic com.sun.tools.javac.code.Type$UndetVar$InferenceBound.UPPER:Lcom/sun/tools/javac/code/Type$UndetVar$InferenceBound;
            aastore
            invokevirtual com.sun.tools.javac.code.Type$UndetVar.getBounds:([Lcom/sun/tools/javac/code/Type$UndetVar$InferenceBound;)Lcom/sun/tools/javac/util/List;
            new com.sun.tools.javac.comp.Infer$BoundFilter
            dup
            aload 2 /* inferenceContext */
            invokespecial com.sun.tools.javac.comp.Infer$BoundFilter.<init>:(Lcom/sun/tools/javac/comp/InferenceContext;)V
            invokestatic com.sun.tools.javac.code.Type.filter:(Lcom/sun/tools/javac/util/List;Lcom/sun/tools/javac/util/Filter;)Lcom/sun/tools/javac/util/List;
         1: .line 905
            astore 3 /* hibounds */
        start local 3 // com.sun.tools.javac.util.List hibounds
         2: .line 908
            aload 3 /* hibounds */
            invokevirtual com.sun.tools.javac.util.List.isEmpty:()Z
            ifeq 5
         3: .line 909
            aload 0 /* this */
            getfield com.sun.tools.javac.comp.Infer$SubstBounds.this$0:Lcom/sun/tools/javac/comp/Infer;
            getfield com.sun.tools.javac.comp.Infer.syms:Lcom/sun/tools/javac/code/Symtab;
            getfield com.sun.tools.javac.code.Symtab.objectType:Lcom/sun/tools/javac/code/Type;
            astore 4 /* hb */
        start local 4 // com.sun.tools.javac.code.Type hb
         4: goto 9
        end local 4 // com.sun.tools.javac.code.Type hb
         5: .line 910
      StackMap locals: com.sun.tools.javac.util.List
      StackMap stack:
            aload 3 /* hibounds */
            getfield com.sun.tools.javac.util.List.tail:Lcom/sun/tools/javac/util/List;
            invokevirtual com.sun.tools.javac.util.List.isEmpty:()Z
            ifeq 8
         6: .line 911
            aload 3 /* hibounds */
            getfield com.sun.tools.javac.util.List.head:Ljava/lang/Object;
            checkcast com.sun.tools.javac.code.Type
            astore 4 /* hb */
        start local 4 // com.sun.tools.javac.code.Type hb
         7: goto 9
        end local 4 // com.sun.tools.javac.code.Type hb
         8: .line 913
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.tools.javac.comp.Infer$SubstBounds.this$0:Lcom/sun/tools/javac/comp/Infer;
            getfield com.sun.tools.javac.comp.Infer.types:Lcom/sun/tools/javac/code/Types;
            aload 3 /* hibounds */
            invokevirtual com.sun.tools.javac.code.Types.glb:(Lcom/sun/tools/javac/util/List;)Lcom/sun/tools/javac/code/Type;
            astore 4 /* hb */
        start local 4 // com.sun.tools.javac.code.Type hb
         9: .line 914
      StackMap locals: com.sun.tools.javac.code.Type
      StackMap stack:
            aload 4 /* hb */
            ifnull 10
            aload 4 /* hb */
            invokevirtual com.sun.tools.javac.code.Type.isErroneous:()Z
            ifeq 11
        10: .line 915
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.tools.javac.comp.Infer$SubstBounds.this$0:Lcom/sun/tools/javac/comp/Infer;
            aload 1 /* uv */
            getstatic com.sun.tools.javac.code.Type$UndetVar$InferenceBound.UPPER:Lcom/sun/tools/javac/code/Type$UndetVar$InferenceBound;
            invokevirtual com.sun.tools.javac.comp.Infer.reportBoundError:(Lcom/sun/tools/javac/code/Type$UndetVar;Lcom/sun/tools/javac/code/Type$UndetVar$InferenceBound;)V
        11: .line 916
      StackMap locals:
      StackMap stack:
            return
        end local 4 // com.sun.tools.javac.code.Type hb
        end local 3 // com.sun.tools.javac.util.List hibounds
        end local 2 // com.sun.tools.javac.comp.InferenceContext inferenceContext
        end local 1 // com.sun.tools.javac.code.Type$UndetVar uv
        end local 0 // com.sun.tools.javac.comp.Infer$SubstBounds this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   12     0              this  Lcom/sun/tools/javac/comp/Infer$SubstBounds;
            0   12     1                uv  Lcom/sun/tools/javac/code/Type$UndetVar;
            0   12     2  inferenceContext  Lcom/sun/tools/javac/comp/InferenceContext;
            2   12     3          hibounds  Lcom/sun/tools/javac/util/List<Lcom/sun/tools/javac/code/Type;>;
            4    5     4                hb  Lcom/sun/tools/javac/code/Type;
            7    8     4                hb  Lcom/sun/tools/javac/code/Type;
            9   12     4                hb  Lcom/sun/tools/javac/code/Type;
    MethodParameters:
                  Name  Flags
      uv                
      inferenceContext  
}
SourceFile: "Infer.java"
NestHost: com.sun.tools.javac.comp.Infer
InnerClasses:
  public UndetVar = com.sun.tools.javac.code.Type$UndetVar of com.sun.tools.javac.code.Type
  public abstract InferenceBound = com.sun.tools.javac.code.Type$UndetVar$InferenceBound of com.sun.tools.javac.code.Type$UndetVar
  protected BoundFilter = com.sun.tools.javac.comp.Infer$BoundFilter of com.sun.tools.javac.comp.Infer
  CheckInst = com.sun.tools.javac.comp.Infer$CheckInst of com.sun.tools.javac.comp.Infer
  public abstract IncorporationAction = com.sun.tools.javac.comp.Infer$IncorporationAction of com.sun.tools.javac.comp.Infer
  SubstBounds = com.sun.tools.javac.comp.Infer$SubstBounds of com.sun.tools.javac.comp.Infer