final class jdk.nashorn.internal.codegen.LocalVariableTypesCalculator extends jdk.nashorn.internal.ir.visitor.SimpleNodeVisitor
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator
  super_class: jdk.nashorn.internal.ir.visitor.SimpleNodeVisitor
{
  private static final java.util.Map<jdk.nashorn.internal.codegen.types.Type, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType> TO_LVAR_TYPE;
    descriptor: Ljava/util/Map;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Map<Ljdk/nashorn/internal/codegen/types/Type;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;

  private final jdk.nashorn.internal.codegen.Compiler compiler;
    descriptor: Ljdk/nashorn/internal/codegen/Compiler;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.Map<jdk.nashorn.internal.codegen.Label, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget> jumpTargets;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljdk/nashorn/internal/codegen/Label;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$JumpTarget;>;

  private java.util.Map<jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType> localVariableTypes;
    descriptor: Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;

  private final java.util.Set<jdk.nashorn.internal.ir.Symbol> invalidatedSymbols;
    descriptor: Ljava/util/Set;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Set<Ljdk/nashorn/internal/ir/Symbol;>;

  private final java.util.Deque<jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType> typeStack;
    descriptor: Ljava/util/Deque;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Deque<Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;

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

  private jdk.nashorn.internal.codegen.types.Type returnType;
    descriptor: Ljdk/nashorn/internal/codegen/types/Type;
    flags: (0x0002) ACC_PRIVATE

  private jdk.nashorn.internal.ir.ReturnNode syntheticReturn;
    descriptor: Ljdk/nashorn/internal/ir/ReturnNode;
    flags: (0x0002) ACC_PRIVATE

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

  private final java.util.Map<jdk.nashorn.internal.ir.JoinPredecessor, jdk.nashorn.internal.ir.LocalVariableConversion> localVariableConversions;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/ir/LocalVariableConversion;>;

  private final java.util.Map<jdk.nashorn.internal.ir.IdentNode, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType> identifierLvarTypes;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljdk/nashorn/internal/ir/IdentNode;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;

  private final java.util.Map<jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$SymbolConversions> symbolConversions;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$SymbolConversions;>;

  private final java.util.Deque<jdk.nashorn.internal.codegen.Label> catchLabels;
    descriptor: Ljava/util/Deque;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Deque<Ljdk/nashorn/internal/codegen/Label;>;

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=4, args_size=0
         0: .line 111
            ldc Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
         3: .line 181
            new java.util.IdentityHashMap
            dup
            invokespecial java.util.IdentityHashMap.<init>:()V
            putstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.TO_LVAR_TYPE:Ljava/util/Map;
         4: .line 184
            invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.values:()[Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            dup
            astore 3
            arraylength
            istore 2
            iconst_0
            istore 1
            goto 8
      StackMap locals: top int int jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType[]
      StackMap stack:
         5: aload 3
            iload 1
            aaload
            astore 0 /* lvarType */
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType lvarType
         6: .line 185
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.TO_LVAR_TYPE:Ljava/util/Map;
            aload 0 /* lvarType */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.type:Ljdk/nashorn/internal/codegen/types/Type;
            aload 0 /* lvarType */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType lvarType
         7: .line 184
            iinc 1 1
      StackMap locals:
      StackMap stack:
         8: iload 1
            iload 2
            if_icmplt 5
         9: .line 187
            return
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            6    7     0  lvarType  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;

  private static java.util.HashMap<jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType> cloneMap(java.util.Map<jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType>);
    descriptor: (Ljava/util/Map;)Ljava/util/HashMap;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.util.Map map
         0: .line 191
            aload 0 /* map */
            checkcast java.util.HashMap
            invokevirtual java.util.HashMap.clone:()Ljava/lang/Object;
            checkcast java.util.HashMap
            areturn
        end local 0 // java.util.Map map
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   map  Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
    Signature: (Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;)Ljava/util/HashMap<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
    MethodParameters:
      Name  Flags
      map   final

  private jdk.nashorn.internal.ir.LocalVariableConversion createConversion(jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType, java.util.Map<jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType>, jdk.nashorn.internal.ir.LocalVariableConversion);
    descriptor: (Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;Ljava/util/Map;Ljdk/nashorn/internal/ir/LocalVariableConversion;)Ljdk/nashorn/internal/ir/LocalVariableConversion;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=6, args_size=5
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.Symbol symbol
        start local 2 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType branchLvarType
        start local 3 // java.util.Map joinLvarTypes
        start local 4 // jdk.nashorn.internal.ir.LocalVariableConversion next
         0: .line 196
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.invalidatedSymbols:Ljava/util/Set;
            aload 1 /* symbol */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 197
            aload 4 /* next */
            areturn
         2: .line 199
      StackMap locals:
      StackMap stack:
            aload 3 /* joinLvarTypes */
            aload 1 /* symbol */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
            astore 5 /* targetType */
        start local 5 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType targetType
         3: .line 200
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
            ifne 4
            aload 5 /* targetType */
            ifnonnull 4
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         4: .line 201
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
      StackMap stack:
            aload 5 /* targetType */
            aload 2 /* branchLvarType */
            if_acmpne 6
         5: .line 202
            aload 4 /* next */
            areturn
         6: .line 212
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* symbol */
            aload 2 /* branchLvarType */
            aload 5 /* targetType */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.symbolIsConverted:(Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
         7: .line 213
            new jdk.nashorn.internal.ir.LocalVariableConversion
            dup
            aload 1 /* symbol */
            aload 2 /* branchLvarType */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.type:Ljdk/nashorn/internal/codegen/types/Type;
            aload 5 /* targetType */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.type:Ljdk/nashorn/internal/codegen/types/Type;
            aload 4 /* next */
            invokespecial jdk.nashorn.internal.ir.LocalVariableConversion.<init>:(Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/types/Type;Ljdk/nashorn/internal/codegen/types/Type;Ljdk/nashorn/internal/ir/LocalVariableConversion;)V
            areturn
        end local 5 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType targetType
        end local 4 // jdk.nashorn.internal.ir.LocalVariableConversion next
        end local 3 // java.util.Map joinLvarTypes
        end local 2 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType branchLvarType
        end local 1 // jdk.nashorn.internal.ir.Symbol symbol
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    8     0            this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    8     1          symbol  Ljdk/nashorn/internal/ir/Symbol;
            0    8     2  branchLvarType  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            0    8     3   joinLvarTypes  Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
            0    8     4            next  Ljdk/nashorn/internal/ir/LocalVariableConversion;
            3    8     5      targetType  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
    Signature: (Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;Ljdk/nashorn/internal/ir/LocalVariableConversion;)Ljdk/nashorn/internal/ir/LocalVariableConversion;
    MethodParameters:
                Name  Flags
      symbol          final
      branchLvarType  final
      joinLvarTypes   final
      next            final

  private java.util.Map<jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType> getUnionTypes(java.util.Map<jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType>, java.util.Map<jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType>);
    descriptor: (Ljava/util/Map;Ljava/util/Map;)Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=15, args_size=3
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // java.util.Map types1
        start local 2 // java.util.Map types2
         0: .line 217
            aload 1 /* types1 */
            aload 2 /* types2 */
            if_acmpeq 1
            aload 1 /* types1 */
            invokeinterface java.util.Map.isEmpty:()Z
            ifeq 2
         1: .line 218
      StackMap locals:
      StackMap stack:
            aload 2 /* types2 */
            areturn
         2: .line 219
      StackMap locals:
      StackMap stack:
            aload 2 /* types2 */
            invokeinterface java.util.Map.isEmpty:()Z
            ifeq 4
         3: .line 220
            aload 1 /* types1 */
            areturn
         4: .line 222
      StackMap locals:
      StackMap stack:
            new java.util.HashSet
            dup
            aload 1 /* types1 */
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            invokespecial java.util.HashSet.<init>:(Ljava/util/Collection;)V
            astore 3 /* commonSymbols */
        start local 3 // java.util.Set commonSymbols
         5: .line 223
            aload 3 /* commonSymbols */
            aload 2 /* types2 */
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            invokeinterface java.util.Set.retainAll:(Ljava/util/Collection;)Z
            pop
         6: .line 226
            aload 3 /* commonSymbols */
            invokeinterface java.util.Set.size:()I
            istore 4 /* commonSize */
        start local 4 // int commonSize
         7: .line 227
            aload 1 /* types1 */
            invokeinterface java.util.Map.size:()I
            istore 5 /* types1Size */
        start local 5 // int types1Size
         8: .line 228
            aload 2 /* types2 */
            invokeinterface java.util.Map.size:()I
            istore 6 /* types2Size */
        start local 6 // int types2Size
         9: .line 229
            iload 4 /* commonSize */
            iload 5 /* types1Size */
            if_icmpne 34
            iload 4 /* commonSize */
            iload 6 /* types2Size */
            if_icmpne 34
        10: .line 230
            iconst_1
            istore 7 /* matches1 */
        start local 7 // boolean matches1
        11: iconst_1
            istore 8 /* matches2 */
        start local 8 // boolean matches2
        12: .line 231
            aconst_null
            astore 9 /* union */
        start local 9 // java.util.Map union
        13: .line 232
            aload 3 /* commonSymbols */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 11
            goto 29
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator java.util.Map java.util.Map java.util.Set int int int int int java.util.Map top java.util.Iterator
      StackMap stack:
        14: aload 11
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast jdk.nashorn.internal.ir.Symbol
            astore 10 /* symbol */
        start local 10 // jdk.nashorn.internal.ir.Symbol symbol
        15: .line 233
            aload 1 /* types1 */
            aload 10 /* symbol */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
            astore 12 /* type1 */
        start local 12 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType type1
        16: .line 234
            aload 2 /* types2 */
            aload 10 /* symbol */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
            astore 13 /* type2 */
        start local 13 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType type2
        17: .line 235
            aload 12 /* type1 */
            aload 13 /* type2 */
            invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.widestLvarType:(Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            astore 14 /* widest */
        start local 14 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType widest
        18: .line 236
            aload 14 /* widest */
            aload 12 /* type1 */
            if_acmpeq 22
            iload 7 /* matches1 */
            ifeq 22
        19: .line 237
            iconst_0
            istore 7 /* matches1 */
        20: .line 238
            iload 8 /* matches2 */
            ifne 22
        21: .line 239
            aload 1 /* types1 */
            invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.cloneMap:(Ljava/util/Map;)Ljava/util/HashMap;
            astore 9 /* union */
        22: .line 242
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator java.util.Map java.util.Map java.util.Set int int int int int java.util.Map jdk.nashorn.internal.ir.Symbol java.util.Iterator jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
      StackMap stack:
            aload 14 /* widest */
            aload 13 /* type2 */
            if_acmpeq 26
            iload 8 /* matches2 */
            ifeq 26
        23: .line 243
            iconst_0
            istore 8 /* matches2 */
        24: .line 244
            iload 7 /* matches1 */
            ifne 26
        25: .line 245
            aload 2 /* types2 */
            invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.cloneMap:(Ljava/util/Map;)Ljava/util/HashMap;
            astore 9 /* union */
        26: .line 248
      StackMap locals:
      StackMap stack:
            iload 7 /* matches1 */
            ifne 29
            iload 8 /* matches2 */
            ifne 29
        27: .line 249
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
            ifne 28
            aload 9 /* union */
            ifnonnull 28
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        28: .line 250
      StackMap locals:
      StackMap stack:
            aload 9 /* union */
            aload 10 /* symbol */
            aload 14 /* widest */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 14 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType widest
        end local 13 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType type2
        end local 12 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType type1
        end local 10 // jdk.nashorn.internal.ir.Symbol symbol
        29: .line 232
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator java.util.Map java.util.Map java.util.Set int int int int int java.util.Map top java.util.Iterator
      StackMap stack:
            aload 11
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 14
        30: .line 253
            iload 7 /* matches1 */
            ifeq 31
            aload 1 /* types1 */
            goto 33
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator java.util.Map java.util.Map java.util.Set int int int int int java.util.Map
      StackMap stack:
        31: iload 8 /* matches2 */
            ifeq 32
            aload 2 /* types2 */
            goto 33
      StackMap locals:
      StackMap stack:
        32: aload 9 /* union */
      StackMap locals:
      StackMap stack: java.util.Map
        33: areturn
        end local 9 // java.util.Map union
        end local 8 // boolean matches2
        end local 7 // boolean matches1
        34: .line 257
      StackMap locals:
      StackMap stack:
            iload 5 /* types1Size */
            iload 6 /* types2Size */
            if_icmple 38
        35: .line 258
            aload 1 /* types1 */
            invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.cloneMap:(Ljava/util/Map;)Ljava/util/HashMap;
            astore 7 /* union */
        start local 7 // java.util.Map union
        36: .line 259
            aload 7 /* union */
            aload 2 /* types2 */
            invokeinterface java.util.Map.putAll:(Ljava/util/Map;)V
        37: .line 260
            goto 40
        end local 7 // java.util.Map union
        38: .line 261
      StackMap locals:
      StackMap stack:
            aload 2 /* types2 */
            invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.cloneMap:(Ljava/util/Map;)Ljava/util/HashMap;
            astore 7 /* union */
        start local 7 // java.util.Map union
        39: .line 262
            aload 7 /* union */
            aload 1 /* types1 */
            invokeinterface java.util.Map.putAll:(Ljava/util/Map;)V
        40: .line 264
      StackMap locals: java.util.Map
      StackMap stack:
            aload 3 /* commonSymbols */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 9
            goto 45
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator java.util.Map java.util.Map java.util.Set int int int java.util.Map top java.util.Iterator
      StackMap stack:
        41: aload 9
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast jdk.nashorn.internal.ir.Symbol
            astore 8 /* symbol */
        start local 8 // jdk.nashorn.internal.ir.Symbol symbol
        42: .line 265
            aload 1 /* types1 */
            aload 8 /* symbol */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
            astore 10 /* type1 */
        start local 10 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType type1
        43: .line 266
            aload 2 /* types2 */
            aload 8 /* symbol */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
            astore 11 /* type2 */
        start local 11 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType type2
        44: .line 267
            aload 7 /* union */
            aload 8 /* symbol */
            aload 10 /* type1 */
            aload 11 /* type2 */
            invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.widestLvarType:(Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 11 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType type2
        end local 10 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType type1
        end local 8 // jdk.nashorn.internal.ir.Symbol symbol
        45: .line 264
      StackMap locals:
      StackMap stack:
            aload 9
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 41
        46: .line 273
            aload 7 /* union */
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.invalidatedSymbols:Ljava/util/Set;
            invokeinterface java.util.Set.removeAll:(Ljava/util/Collection;)Z
            pop
        47: .line 274
            aload 7 /* union */
            areturn
        end local 7 // java.util.Map union
        end local 6 // int types2Size
        end local 5 // int types1Size
        end local 4 // int commonSize
        end local 3 // java.util.Set commonSymbols
        end local 2 // java.util.Map types2
        end local 1 // java.util.Map types1
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   48     0           this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0   48     1         types1  Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
            0   48     2         types2  Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
            5   48     3  commonSymbols  Ljava/util/Set<Ljdk/nashorn/internal/ir/Symbol;>;
            7   48     4     commonSize  I
            8   48     5     types1Size  I
            9   48     6     types2Size  I
           11   34     7       matches1  Z
           12   34     8       matches2  Z
           13   34     9          union  Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
           15   29    10         symbol  Ljdk/nashorn/internal/ir/Symbol;
           16   29    12          type1  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
           17   29    13          type2  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
           18   29    14         widest  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
           36   38     7          union  Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
           39   48     7          union  Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
           42   45     8         symbol  Ljdk/nashorn/internal/ir/Symbol;
           43   45    10          type1  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
           44   45    11          type2  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
    Signature: (Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;)Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
    MethodParameters:
        Name  Flags
      types1  final
      types2  final

  private static void symbolIsUsed(jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType);
    descriptor: (Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.ir.Symbol symbol
        start local 1 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType type
         0: .line 278
            aload 1 /* type */
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.UNDEFINED:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            if_acmpeq 2
         1: .line 279
            aload 0 /* symbol */
            aload 1 /* type */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.type:Ljdk/nashorn/internal/codegen/types/Type;
            invokevirtual jdk.nashorn.internal.ir.Symbol.setHasSlotFor:(Ljdk/nashorn/internal/codegen/types/Type;)V
         2: .line 281
      StackMap locals:
      StackMap stack:
            return
        end local 1 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType type
        end local 0 // jdk.nashorn.internal.ir.Symbol symbol
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0  symbol  Ljdk/nashorn/internal/ir/Symbol;
            0    3     1    type  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
    MethodParameters:
        Name  Flags
      symbol  final
      type    final

  private void symbolIsConverted(jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType);
    descriptor: (Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.Symbol symbol
        start local 2 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType from
        start local 3 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType to
         0: .line 347
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.symbolConversions:Ljava/util/Map;
            aload 1 /* symbol */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$SymbolConversions
            astore 4 /* conversions */
        start local 4 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$SymbolConversions conversions
         1: .line 348
            aload 4 /* conversions */
            ifnonnull 4
         2: .line 349
            new jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$SymbolConversions
            dup
            invokespecial jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$SymbolConversions.<init>:()V
            astore 4 /* conversions */
         3: .line 350
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.symbolConversions:Ljava/util/Map;
            aload 1 /* symbol */
            aload 4 /* conversions */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 352
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$SymbolConversions
      StackMap stack:
            aload 4 /* conversions */
            aload 2 /* from */
            aload 3 /* to */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$SymbolConversions.recordConversion:(Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
         5: .line 353
            return
        end local 4 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$SymbolConversions conversions
        end local 3 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType to
        end local 2 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType from
        end local 1 // jdk.nashorn.internal.ir.Symbol symbol
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    6     0         this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    6     1       symbol  Ljdk/nashorn/internal/ir/Symbol;
            0    6     2         from  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            0    6     3           to  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            1    6     4  conversions  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$SymbolConversions;
    MethodParameters:
        Name  Flags
      symbol  final
      from    final
      to      final

  private static jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType toLvarType(jdk.nashorn.internal.codegen.types.Type);
    descriptor: (Ljdk/nashorn/internal/codegen/types/Type;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // jdk.nashorn.internal.codegen.types.Type type
         0: .line 356
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
            ifne 1
            aload 0 /* type */
            ifnonnull 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 357
      StackMap locals:
      StackMap stack:
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.TO_LVAR_TYPE:Ljava/util/Map;
            aload 0 /* type */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
            astore 1 /* lvarType */
        start local 1 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType lvarType
         2: .line 358
            aload 1 /* lvarType */
            ifnull 4
         3: .line 359
            aload 1 /* lvarType */
            areturn
         4: .line 361
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
      StackMap stack:
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
            ifne 5
            aload 0 /* type */
            invokevirtual jdk.nashorn.internal.codegen.types.Type.isObject:()Z
            ifne 5
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unsupported primitive type: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* type */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         5: .line 362
      StackMap locals:
      StackMap stack:
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.OBJECT:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            areturn
        end local 1 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType lvarType
        end local 0 // jdk.nashorn.internal.codegen.types.Type type
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      type  Ljdk/nashorn/internal/codegen/types/Type;
            2    6     1  lvarType  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
    MethodParameters:
      Name  Flags
      type  final

  private static jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType widestLvarType(jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType);
    descriptor: (Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType t1
        start local 1 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType t2
         0: .line 365
            aload 0 /* t1 */
            aload 1 /* t2 */
            if_acmpne 2
         1: .line 366
            aload 0 /* t1 */
            areturn
         2: .line 369
      StackMap locals:
      StackMap stack:
            aload 0 /* t1 */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.ordinal:()I
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.INT:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.ordinal:()I
            if_icmplt 3
            aload 1 /* t2 */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.ordinal:()I
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.INT:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.ordinal:()I
            if_icmpge 4
         3: .line 370
      StackMap locals:
      StackMap stack:
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.OBJECT:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            areturn
         4: .line 372
      StackMap locals:
      StackMap stack:
            invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.values:()[Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            aload 0 /* t1 */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.ordinal:()I
            aload 1 /* t2 */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.ordinal:()I
            invokestatic java.lang.Math.max:(II)I
            aaload
            areturn
        end local 1 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType t2
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType t1
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0    t1  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            0    5     1    t2  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
    MethodParameters:
      Name  Flags
      t1    final
      t2    final

  private void <init>(jdk.nashorn.internal.codegen.Compiler);
    descriptor: (Ljdk/nashorn/internal/codegen/Compiler;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.codegen.Compiler compiler
         0: .line 409
            aload 0 /* this */
            invokespecial jdk.nashorn.internal.ir.visitor.SimpleNodeVisitor.<init>:()V
         1: .line 375
            aload 0 /* this */
            new java.util.IdentityHashMap
            dup
            invokespecial java.util.IdentityHashMap.<init>:()V
            putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpTargets:Ljava/util/Map;
         2: .line 379
            aload 0 /* this */
            invokestatic java.util.Collections.emptyMap:()Ljava/util/Map;
            putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
         3: .line 381
            aload 0 /* this */
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.invalidatedSymbols:Ljava/util/Set;
         4: .line 384
            aload 0 /* this */
            new java.util.ArrayDeque
            dup
            invokespecial java.util.ArrayDeque.<init>:()V
            putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.typeStack:Ljava/util/Deque;
         5: .line 387
            aload 0 /* this */
            iconst_1
            putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
         6: .line 389
            aload 0 /* this */
            getstatic jdk.nashorn.internal.codegen.types.Type.UNKNOWN:Ljdk/nashorn/internal/codegen/types/Type;
            putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.returnType:Ljdk/nashorn/internal/codegen/types/Type;
         7: .line 396
            aload 0 /* this */
            new java.util.IdentityHashMap
            dup
            invokespecial java.util.IdentityHashMap.<init>:()V
            putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableConversions:Ljava/util/Map;
         8: .line 398
            aload 0 /* this */
            new java.util.IdentityHashMap
            dup
            invokespecial java.util.IdentityHashMap.<init>:()V
            putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.identifierLvarTypes:Ljava/util/Map;
         9: .line 399
            aload 0 /* this */
            new java.util.IdentityHashMap
            dup
            invokespecial java.util.IdentityHashMap.<init>:()V
            putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.symbolConversions:Ljava/util/Map;
        10: .line 407
            aload 0 /* this */
            new java.util.ArrayDeque
            dup
            invokespecial java.util.ArrayDeque.<init>:()V
            putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.catchLabels:Ljava/util/Deque;
        11: .line 410
            aload 0 /* this */
            aload 1 /* compiler */
            putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.compiler:Ljdk/nashorn/internal/codegen/Compiler;
        12: .line 411
            return
        end local 1 // jdk.nashorn.internal.codegen.Compiler compiler
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   13     0      this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0   13     1  compiler  Ljdk/nashorn/internal/codegen/Compiler;
    MethodParameters:
          Name  Flags
      compiler  final

  void <init>(jdk.nashorn.internal.codegen.Compiler, jdk.nashorn.internal.codegen.types.Type);
    descriptor: (Ljdk/nashorn/internal/codegen/Compiler;Ljdk/nashorn/internal/codegen/types/Type;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.codegen.Compiler compiler
        start local 2 // jdk.nashorn.internal.codegen.types.Type returnType
         0: .line 414
            aload 0 /* this */
            aload 1 /* compiler */
            invokespecial jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.<init>:(Ljdk/nashorn/internal/codegen/Compiler;)V
         1: .line 415
            aload 0 /* this */
            aload 2 /* returnType */
            putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.returnType:Ljdk/nashorn/internal/codegen/types/Type;
         2: .line 416
            return
        end local 2 // jdk.nashorn.internal.codegen.types.Type returnType
        end local 1 // jdk.nashorn.internal.codegen.Compiler compiler
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    3     1    compiler  Ljdk/nashorn/internal/codegen/Compiler;
            0    3     2  returnType  Ljdk/nashorn/internal/codegen/types/Type;
    MethodParameters:
            Name  Flags
      compiler    final
      returnType  final

  private jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget createJumpTarget(jdk.nashorn.internal.codegen.Label);
    descriptor: (Ljdk/nashorn/internal/codegen/Label;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$JumpTarget;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.codegen.Label label
         0: .line 419
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpTargets:Ljava/util/Map;
            aload 1 /* label */
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifeq 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 420
      StackMap locals:
      StackMap stack:
            new jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget
            dup
            invokespecial jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget.<init>:()V
            astore 2 /* jumpTarget */
        start local 2 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget jumpTarget
         2: .line 421
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpTargets:Ljava/util/Map;
            aload 1 /* label */
            aload 2 /* jumpTarget */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 422
            aload 2 /* jumpTarget */
            areturn
        end local 2 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget jumpTarget
        end local 1 // jdk.nashorn.internal.codegen.Label label
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    4     1       label  Ljdk/nashorn/internal/codegen/Label;
            2    4     2  jumpTarget  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$JumpTarget;
    MethodParameters:
       Name  Flags
      label  final

  private void doesNotContinueSequentially();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
         0: .line 426
            aload 0 /* this */
            iconst_0
            putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
         1: .line 427
            aload 0 /* this */
            invokestatic java.util.Collections.emptyMap:()Ljava/util/Map;
            putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
         2: .line 428
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.assertTypeStackIsEmpty:()V
         3: .line 429
            return
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;

  private boolean pushExpressionType(jdk.nashorn.internal.ir.Expression);
    descriptor: (Ljdk/nashorn/internal/ir/Expression;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.Expression expr
         0: .line 432
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.typeStack:Ljava/util/Deque;
            aload 1 /* expr */
            invokevirtual jdk.nashorn.internal.ir.Expression.getType:()Ljdk/nashorn/internal/codegen/types/Type;
            invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.toLvarType:(Ljdk/nashorn/internal/codegen/types/Type;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
         1: .line 433
            iconst_0
            ireturn
        end local 1 // jdk.nashorn.internal.ir.Expression expr
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    2     1  expr  Ljdk/nashorn/internal/ir/Expression;
    MethodParameters:
      Name  Flags
      expr  final

  public boolean enterAccessNode(jdk.nashorn.internal.ir.AccessNode);
    descriptor: (Ljdk/nashorn/internal/ir/AccessNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.AccessNode accessNode
         0: .line 438
            aload 0 /* this */
            aload 1 /* accessNode */
            invokevirtual jdk.nashorn.internal.ir.AccessNode.getBase:()Ljdk/nashorn/internal/ir/Expression;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            pop
         1: .line 439
            aload 0 /* this */
            aload 1 /* accessNode */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.pushExpressionType:(Ljdk/nashorn/internal/ir/Expression;)Z
            ireturn
        end local 1 // jdk.nashorn.internal.ir.AccessNode accessNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    2     1  accessNode  Ljdk/nashorn/internal/ir/AccessNode;
    MethodParameters:
            Name  Flags
      accessNode  final

  public boolean enterBinaryNode(jdk.nashorn.internal.ir.BinaryNode);
    descriptor: (Ljdk/nashorn/internal/ir/BinaryNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=9, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.BinaryNode binaryNode
         0: .line 445
            aload 1 /* binaryNode */
            invokevirtual jdk.nashorn.internal.ir.BinaryNode.lhs:()Ljdk/nashorn/internal/ir/Expression;
            astore 2 /* lhs */
        start local 2 // jdk.nashorn.internal.ir.Expression lhs
         1: .line 447
            aload 2 /* lhs */
            instanceof jdk.nashorn.internal.ir.IdentNode
            ifeq 2
            aload 1 /* binaryNode */
            getstatic jdk.nashorn.internal.parser.TokenType.ASSIGN:Ljdk/nashorn/internal/parser/TokenType;
            invokevirtual jdk.nashorn.internal.ir.BinaryNode.isTokenType:(Ljdk/nashorn/internal/parser/TokenType;)Z
            ifne 4
         2: .line 448
      StackMap locals: jdk.nashorn.internal.ir.Expression
      StackMap stack:
            aload 0 /* this */
            aload 2 /* lhs */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            astore 3 /* lhsType */
        start local 3 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType lhsType
         3: .line 449
            goto 5
        end local 3 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType lhsType
         4: .line 452
      StackMap locals:
      StackMap stack:
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.UNDEFINED:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            astore 3 /* lhsType */
        start local 3 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType lhsType
         5: .line 455
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
      StackMap stack:
            aload 1 /* binaryNode */
            invokevirtual jdk.nashorn.internal.ir.BinaryNode.isLogical:()Z
            istore 4 /* isLogical */
        start local 4 // boolean isLogical
         6: .line 456
            iload 4 /* isLogical */
            ifeq 7
            new jdk.nashorn.internal.codegen.Label
            dup
            ldc ""
            invokespecial jdk.nashorn.internal.codegen.Label.<init>:(Ljava/lang/String;)V
            goto 8
      StackMap locals: int
      StackMap stack:
         7: aconst_null
      StackMap locals:
      StackMap stack: jdk.nashorn.internal.codegen.Label
         8: astore 5 /* joinLabel */
        start local 5 // jdk.nashorn.internal.codegen.Label joinLabel
         9: .line 457
            iload 4 /* isLogical */
            ifeq 11
        10: .line 458
            aload 0 /* this */
            aload 2 /* lhs */
            checkcast jdk.nashorn.internal.ir.JoinPredecessor
            aload 5 /* joinLabel */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
        11: .line 461
      StackMap locals: jdk.nashorn.internal.codegen.Label
      StackMap stack:
            aload 1 /* binaryNode */
            invokevirtual jdk.nashorn.internal.ir.BinaryNode.rhs:()Ljdk/nashorn/internal/ir/Expression;
            astore 6 /* rhs */
        start local 6 // jdk.nashorn.internal.ir.Expression rhs
        12: .line 462
            aload 0 /* this */
            aload 6 /* rhs */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            astore 7 /* rhsType */
        start local 7 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType rhsType
        13: .line 463
            iload 4 /* isLogical */
            ifeq 15
        14: .line 464
            aload 0 /* this */
            aload 6 /* rhs */
            checkcast jdk.nashorn.internal.ir.JoinPredecessor
            aload 5 /* joinLabel */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
        15: .line 466
      StackMap locals: jdk.nashorn.internal.ir.Expression jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
      StackMap stack:
            aload 0 /* this */
            aload 5 /* joinLabel */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.joinOnLabel:(Ljdk/nashorn/internal/codegen/Label;)V
        16: .line 468
            aload 1 /* binaryNode */
            aload 3 /* lhsType */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.typeExpression:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$TypeHolderExpression;
            aload 7 /* rhsType */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.typeExpression:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$TypeHolderExpression;
            invokevirtual jdk.nashorn.internal.ir.BinaryNode.setOperands:(Ljdk/nashorn/internal/ir/Expression;Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/ir/BinaryNode;
            invokevirtual jdk.nashorn.internal.ir.BinaryNode.getType:()Ljdk/nashorn/internal/codegen/types/Type;
            invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.toLvarType:(Ljdk/nashorn/internal/codegen/types/Type;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            astore 8 /* type */
        start local 8 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType type
        17: .line 470
            aload 1 /* binaryNode */
            invokevirtual jdk.nashorn.internal.ir.BinaryNode.isAssignment:()Z
            ifeq 22
            aload 2 /* lhs */
            instanceof jdk.nashorn.internal.ir.IdentNode
            ifeq 22
        18: .line 471
            aload 1 /* binaryNode */
            invokevirtual jdk.nashorn.internal.ir.BinaryNode.isSelfModifying:()Z
            ifeq 21
        19: .line 472
            aload 0 /* this */
            aload 2 /* lhs */
            checkcast jdk.nashorn.internal.ir.IdentNode
            aload 8 /* type */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.onSelfAssignment:(Ljdk/nashorn/internal/ir/IdentNode;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
        20: .line 473
            goto 22
        21: .line 474
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
      StackMap stack:
            aload 0 /* this */
            aload 2 /* lhs */
            checkcast jdk.nashorn.internal.ir.IdentNode
            aload 8 /* type */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.onAssignment:(Ljdk/nashorn/internal/ir/IdentNode;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
        22: .line 477
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.typeStack:Ljava/util/Deque;
            aload 8 /* type */
            invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
        23: .line 478
            iconst_0
            ireturn
        end local 8 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType type
        end local 7 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType rhsType
        end local 6 // jdk.nashorn.internal.ir.Expression rhs
        end local 5 // jdk.nashorn.internal.codegen.Label joinLabel
        end local 4 // boolean isLogical
        end local 3 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType lhsType
        end local 2 // jdk.nashorn.internal.ir.Expression lhs
        end local 1 // jdk.nashorn.internal.ir.BinaryNode binaryNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   24     0        this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0   24     1  binaryNode  Ljdk/nashorn/internal/ir/BinaryNode;
            1   24     2         lhs  Ljdk/nashorn/internal/ir/Expression;
            3    4     3     lhsType  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            5   24     3     lhsType  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            6   24     4   isLogical  Z
            9   24     5   joinLabel  Ljdk/nashorn/internal/codegen/Label;
           12   24     6         rhs  Ljdk/nashorn/internal/ir/Expression;
           13   24     7     rhsType  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
           17   24     8        type  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
    MethodParameters:
            Name  Flags
      binaryNode  final

  public boolean enterBlock(jdk.nashorn.internal.ir.Block);
    descriptor: (Ljdk/nashorn/internal/ir/Block;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.Block block
         0: .line 483
            iconst_0
            istore 2 /* cloned */
        start local 2 // boolean cloned
         1: .line 484
            aload 1 /* block */
            invokevirtual jdk.nashorn.internal.ir.Block.getSymbols:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 10
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.Block int top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast jdk.nashorn.internal.ir.Symbol
            astore 3 /* symbol */
        start local 3 // jdk.nashorn.internal.ir.Symbol symbol
         3: .line 485
            aload 3 /* symbol */
            invokevirtual jdk.nashorn.internal.ir.Symbol.isBytecodeLocal:()Z
            ifeq 10
         4: .line 486
            aload 0 /* this */
            aload 3 /* symbol */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.getLocalVariableTypeOrNull:(Ljdk/nashorn/internal/ir/Symbol;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            ifnonnull 9
         5: .line 487
            iload 2 /* cloned */
            ifne 8
         6: .line 488
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.cloneOrNewLocalVariableTypes:()V
         7: .line 489
            iconst_1
            istore 2 /* cloned */
         8: .line 491
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.Block int jdk.nashorn.internal.ir.Symbol java.util.Iterator
      StackMap stack:
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            aload 3 /* symbol */
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.UNDEFINED:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         9: .line 495
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.invalidatedSymbols:Ljava/util/Set;
            aload 3 /* symbol */
            invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
            pop
        end local 3 // jdk.nashorn.internal.ir.Symbol symbol
        10: .line 484
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.Block int top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
        11: .line 498
            iconst_1
            ireturn
        end local 2 // boolean cloned
        end local 1 // jdk.nashorn.internal.ir.Block block
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   12     0    this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0   12     1   block  Ljdk/nashorn/internal/ir/Block;
            1   12     2  cloned  Z
            3   10     3  symbol  Ljdk/nashorn/internal/ir/Symbol;
    MethodParameters:
       Name  Flags
      block  final

  public boolean enterBreakNode(jdk.nashorn.internal.ir.BreakNode);
    descriptor: (Ljdk/nashorn/internal/ir/BreakNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.BreakNode breakNode
         0: .line 503
            aload 0 /* this */
            aload 1 /* breakNode */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.enterJumpStatement:(Ljdk/nashorn/internal/ir/JumpStatement;)Z
            ireturn
        end local 1 // jdk.nashorn.internal.ir.BreakNode breakNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    1     1  breakNode  Ljdk/nashorn/internal/ir/BreakNode;
    MethodParameters:
           Name  Flags
      breakNode  final

  public boolean enterCallNode(jdk.nashorn.internal.ir.CallNode);
    descriptor: (Ljdk/nashorn/internal/ir/CallNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.CallNode callNode
         0: .line 508
            aload 0 /* this */
            aload 1 /* callNode */
            invokevirtual jdk.nashorn.internal.ir.CallNode.getFunction:()Ljdk/nashorn/internal/ir/Expression;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            pop
         1: .line 509
            aload 0 /* this */
            aload 1 /* callNode */
            invokevirtual jdk.nashorn.internal.ir.CallNode.getArgs:()Ljava/util/List;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpressions:(Ljava/util/List;)V
         2: .line 510
            aload 1 /* callNode */
            invokevirtual jdk.nashorn.internal.ir.CallNode.getEvalArgs:()Ljdk/nashorn/internal/ir/CallNode$EvalArgs;
            astore 2 /* evalArgs */
        start local 2 // jdk.nashorn.internal.ir.CallNode$EvalArgs evalArgs
         3: .line 511
            aload 2 /* evalArgs */
            ifnull 5
         4: .line 512
            aload 0 /* this */
            aload 2 /* evalArgs */
            invokevirtual jdk.nashorn.internal.ir.CallNode$EvalArgs.getArgs:()Ljava/util/List;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpressions:(Ljava/util/List;)V
         5: .line 514
      StackMap locals: jdk.nashorn.internal.ir.CallNode$EvalArgs
      StackMap stack:
            aload 0 /* this */
            aload 1 /* callNode */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.pushExpressionType:(Ljdk/nashorn/internal/ir/Expression;)Z
            ireturn
        end local 2 // jdk.nashorn.internal.ir.CallNode$EvalArgs evalArgs
        end local 1 // jdk.nashorn.internal.ir.CallNode callNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    6     1  callNode  Ljdk/nashorn/internal/ir/CallNode;
            3    6     2  evalArgs  Ljdk/nashorn/internal/ir/CallNode$EvalArgs;
    MethodParameters:
          Name  Flags
      callNode  final

  public boolean enterContinueNode(jdk.nashorn.internal.ir.ContinueNode);
    descriptor: (Ljdk/nashorn/internal/ir/ContinueNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.ContinueNode continueNode
         0: .line 519
            aload 0 /* this */
            aload 1 /* continueNode */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.enterJumpStatement:(Ljdk/nashorn/internal/ir/JumpStatement;)Z
            ireturn
        end local 1 // jdk.nashorn.internal.ir.ContinueNode continueNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    1     1  continueNode  Ljdk/nashorn/internal/ir/ContinueNode;
    MethodParameters:
              Name  Flags
      continueNode  final

  private boolean enterJumpStatement(jdk.nashorn.internal.ir.JumpStatement);
    descriptor: (Ljdk/nashorn/internal/ir/JumpStatement;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.JumpStatement jump
         0: .line 523
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
            ifne 2
         1: .line 524
            iconst_0
            ireturn
         2: .line 526
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.assertTypeStackIsEmpty:()V
         3: .line 527
            aload 0 /* this */
            aload 1 /* jump */
            aload 1 /* jump */
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.lc:Ljdk/nashorn/internal/ir/LexicalContext;
            invokevirtual jdk.nashorn.internal.ir.JumpStatement.getTargetLabel:(Ljdk/nashorn/internal/ir/LexicalContext;)Ljdk/nashorn/internal/codegen/Label;
            aload 0 /* this */
            aload 1 /* jump */
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.lc:Ljdk/nashorn/internal/ir/LexicalContext;
            invokevirtual jdk.nashorn.internal.ir.JumpStatement.getPopScopeLimit:(Ljdk/nashorn/internal/ir/LexicalContext;)Ljdk/nashorn/internal/ir/LexicalContextNode;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.getBreakTargetTypes:(Ljdk/nashorn/internal/ir/LexicalContextNode;)Ljava/util/Map;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;Ljava/util/Map;)V
         4: .line 528
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.doesNotContinueSequentially:()V
         5: .line 529
            iconst_0
            ireturn
        end local 1 // jdk.nashorn.internal.ir.JumpStatement jump
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    6     1  jump  Ljdk/nashorn/internal/ir/JumpStatement;
    MethodParameters:
      Name  Flags
      jump  final

  protected boolean enterDefault(jdk.nashorn.internal.ir.Node);
    descriptor: (Ljdk/nashorn/internal/ir/Node;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.Node node
         0: .line 534
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
            ireturn
        end local 1 // jdk.nashorn.internal.ir.Node node
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    1     1  node  Ljdk/nashorn/internal/ir/Node;
    MethodParameters:
      Name  Flags
      node  final

  private void enterDoWhileLoop(jdk.nashorn.internal.ir.WhileNode);
    descriptor: (Ljdk/nashorn/internal/ir/WhileNode;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=9, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.WhileNode loopNode
         0: .line 538
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.assertTypeStackIsEmpty:()V
         1: .line 539
            aload 1 /* loopNode */
            invokevirtual jdk.nashorn.internal.ir.WhileNode.getTest:()Ljdk/nashorn/internal/ir/JoinPredecessorExpression;
            astore 2 /* test */
        start local 2 // jdk.nashorn.internal.ir.JoinPredecessorExpression test
         2: .line 540
            aload 1 /* loopNode */
            invokevirtual jdk.nashorn.internal.ir.WhileNode.getBody:()Ljdk/nashorn/internal/ir/Block;
            astore 3 /* body */
        start local 3 // jdk.nashorn.internal.ir.Block body
         3: .line 541
            aload 1 /* loopNode */
            invokevirtual jdk.nashorn.internal.ir.WhileNode.getContinueLabel:()Ljdk/nashorn/internal/codegen/Label;
            astore 4 /* continueLabel */
        start local 4 // jdk.nashorn.internal.codegen.Label continueLabel
         4: .line 542
            aload 1 /* loopNode */
            invokevirtual jdk.nashorn.internal.ir.WhileNode.getBreakLabel:()Ljdk/nashorn/internal/codegen/Label;
            astore 5 /* breakLabel */
        start local 5 // jdk.nashorn.internal.codegen.Label breakLabel
         5: .line 543
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            astore 6 /* beforeLoopTypes */
        start local 6 // java.util.Map beforeLoopTypes
         6: .line 544
            new jdk.nashorn.internal.codegen.Label
            dup
            ldc ""
            invokespecial jdk.nashorn.internal.codegen.Label.<init>:(Ljava/lang/String;)V
            astore 7 /* repeatLabel */
        start local 7 // jdk.nashorn.internal.codegen.Label repeatLabel
         7: .line 546
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.WhileNode jdk.nashorn.internal.ir.JoinPredecessorExpression jdk.nashorn.internal.ir.Block jdk.nashorn.internal.codegen.Label jdk.nashorn.internal.codegen.Label java.util.Map jdk.nashorn.internal.codegen.Label
      StackMap stack:
            aload 0 /* this */
            aload 1 /* loopNode */
            aload 7 /* repeatLabel */
            aload 6 /* beforeLoopTypes */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;Ljava/util/Map;)V
         8: .line 547
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            astore 8 /* beforeRepeatTypes */
        start local 8 // java.util.Map beforeRepeatTypes
         9: .line 548
            aload 3 /* body */
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.ir.Block.accept:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljdk/nashorn/internal/ir/Node;
            pop
        10: .line 549
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
            ifeq 12
        11: .line 550
            aload 0 /* this */
            aload 3 /* body */
            aload 4 /* continueLabel */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
        12: .line 552
      StackMap locals: java.util.Map
      StackMap stack:
            aload 0 /* this */
            aload 4 /* continueLabel */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.joinOnLabel:(Ljdk/nashorn/internal/codegen/Label;)V
        13: .line 553
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
            ifne 15
        14: .line 554
            goto 27
        15: .line 556
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* test */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpressionOnEmptyStack:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            pop
        16: .line 557
            aload 0 /* this */
            aload 2 /* test */
            aload 5 /* breakLabel */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
        17: .line 558
            aload 2 /* test */
            invokestatic jdk.nashorn.internal.ir.Expression.isAlwaysFalse:(Ljdk/nashorn/internal/ir/Expression;)Z
            ifeq 19
        18: .line 559
            goto 27
        19: .line 561
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* test */
            aload 7 /* repeatLabel */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
        20: .line 562
            aload 0 /* this */
            aload 7 /* repeatLabel */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.joinOnLabel:(Ljdk/nashorn/internal/codegen/Label;)V
        21: .line 563
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            aload 8 /* beforeRepeatTypes */
            invokeinterface java.util.Map.equals:(Ljava/lang/Object;)Z
            ifeq 23
        22: .line 564
            goto 27
        23: .line 566
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 4 /* continueLabel */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.resetJoinPoint:(Ljdk/nashorn/internal/codegen/Label;)V
        24: .line 567
            aload 0 /* this */
            aload 5 /* breakLabel */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.resetJoinPoint:(Ljdk/nashorn/internal/codegen/Label;)V
        25: .line 568
            aload 0 /* this */
            aload 7 /* repeatLabel */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.resetJoinPoint:(Ljdk/nashorn/internal/codegen/Label;)V
        end local 8 // java.util.Map beforeRepeatTypes
        26: .line 545
            goto 7
        27: .line 571
      StackMap locals:
      StackMap stack:
            aload 2 /* test */
            invokestatic jdk.nashorn.internal.ir.Expression.isAlwaysTrue:(Ljdk/nashorn/internal/ir/Expression;)Z
            ifeq 29
        28: .line 572
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.doesNotContinueSequentially:()V
        29: .line 575
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* loopNode */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.leaveBreakable:(Ljdk/nashorn/internal/ir/BreakableNode;)V
        30: .line 576
            return
        end local 7 // jdk.nashorn.internal.codegen.Label repeatLabel
        end local 6 // java.util.Map beforeLoopTypes
        end local 5 // jdk.nashorn.internal.codegen.Label breakLabel
        end local 4 // jdk.nashorn.internal.codegen.Label continueLabel
        end local 3 // jdk.nashorn.internal.ir.Block body
        end local 2 // jdk.nashorn.internal.ir.JoinPredecessorExpression test
        end local 1 // jdk.nashorn.internal.ir.WhileNode loopNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   31     0               this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0   31     1           loopNode  Ljdk/nashorn/internal/ir/WhileNode;
            2   31     2               test  Ljdk/nashorn/internal/ir/JoinPredecessorExpression;
            3   31     3               body  Ljdk/nashorn/internal/ir/Block;
            4   31     4      continueLabel  Ljdk/nashorn/internal/codegen/Label;
            5   31     5         breakLabel  Ljdk/nashorn/internal/codegen/Label;
            6   31     6    beforeLoopTypes  Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
            7   31     7        repeatLabel  Ljdk/nashorn/internal/codegen/Label;
            9   26     8  beforeRepeatTypes  Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
    MethodParameters:
          Name  Flags
      loopNode  final

  public boolean enterExpressionStatement(jdk.nashorn.internal.ir.ExpressionStatement);
    descriptor: (Ljdk/nashorn/internal/ir/ExpressionStatement;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.ExpressionStatement expressionStatement
         0: .line 580
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
            ifeq 2
         1: .line 581
            aload 0 /* this */
            aload 1 /* expressionStatement */
            invokevirtual jdk.nashorn.internal.ir.ExpressionStatement.getExpression:()Ljdk/nashorn/internal/ir/Expression;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpressionOnEmptyStack:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            pop
         2: .line 583
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // jdk.nashorn.internal.ir.ExpressionStatement expressionStatement
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    3     0                 this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    3     1  expressionStatement  Ljdk/nashorn/internal/ir/ExpressionStatement;
    MethodParameters:
                     Name  Flags
      expressionStatement  final

  private void assertTypeStackIsEmpty();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
         0: .line 587
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.typeStack:Ljava/util/Deque;
            invokeinterface java.util.Deque.isEmpty:()Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 588
      StackMap locals:
      StackMap stack:
            return
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;

  protected jdk.nashorn.internal.ir.Node leaveDefault(jdk.nashorn.internal.ir.Node);
    descriptor: (Ljdk/nashorn/internal/ir/Node;)Ljdk/nashorn/internal/ir/Node;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.Node node
         0: .line 592
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
            ifne 1
            aload 1 /* node */
            instanceof jdk.nashorn.internal.ir.Expression
            ifeq 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 593
      StackMap locals:
      StackMap stack:
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
            ifne 2
            aload 1 /* node */
            instanceof jdk.nashorn.internal.ir.Statement
            ifeq 2
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.typeStack:Ljava/util/Deque;
            invokeinterface java.util.Deque.isEmpty:()Z
            ifne 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 594
      StackMap locals:
      StackMap stack:
            aload 1 /* node */
            areturn
        end local 1 // jdk.nashorn.internal.ir.Node node
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    3     1  node  Ljdk/nashorn/internal/ir/Node;
    MethodParameters:
      Name  Flags
      node  final

  private jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType visitExpressionOnEmptyStack(jdk.nashorn.internal.ir.Expression);
    descriptor: (Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.Expression expr
         0: .line 598
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.assertTypeStackIsEmpty:()V
         1: .line 599
            aload 0 /* this */
            aload 1 /* expr */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            areturn
        end local 1 // jdk.nashorn.internal.ir.Expression expr
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    2     1  expr  Ljdk/nashorn/internal/ir/Expression;
    MethodParameters:
      Name  Flags
      expr  final

  private jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType visitExpression(jdk.nashorn.internal.ir.Expression);
    descriptor: (Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.Expression expr
         0: .line 603
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.typeStack:Ljava/util/Deque;
            invokeinterface java.util.Deque.size:()I
            istore 2 /* stackSize */
        start local 2 // int stackSize
         1: .line 604
            aload 1 /* expr */
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.ir.Expression.accept:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljdk/nashorn/internal/ir/Node;
            pop
         2: .line 605
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
            ifne 3
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.typeStack:Ljava/util/Deque;
            invokeinterface java.util.Deque.size:()I
            iload 2 /* stackSize */
            iconst_1
            iadd
            if_icmpeq 3
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         3: .line 606
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.typeStack:Ljava/util/Deque;
            invokeinterface java.util.Deque.pop:()Ljava/lang/Object;
            checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
            areturn
        end local 2 // int stackSize
        end local 1 // jdk.nashorn.internal.ir.Expression expr
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    4     1       expr  Ljdk/nashorn/internal/ir/Expression;
            1    4     2  stackSize  I
    MethodParameters:
      Name  Flags
      expr  final

  private void visitExpressions(java.util.List<jdk.nashorn.internal.ir.Expression>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // java.util.List exprs
         0: .line 610
            aload 1 /* exprs */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 4
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator java.util.List top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast jdk.nashorn.internal.ir.Expression
            astore 2 /* expr */
        start local 2 // jdk.nashorn.internal.ir.Expression expr
         2: .line 611
            aload 2 /* expr */
            ifnull 4
         3: .line 612
            aload 0 /* this */
            aload 2 /* expr */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            pop
        end local 2 // jdk.nashorn.internal.ir.Expression expr
         4: .line 610
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         5: .line 615
            return
        end local 1 // java.util.List exprs
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    6     1  exprs  Ljava/util/List<Ljdk/nashorn/internal/ir/Expression;>;
            2    4     2   expr  Ljdk/nashorn/internal/ir/Expression;
    Signature: (Ljava/util/List<Ljdk/nashorn/internal/ir/Expression;>;)V
    MethodParameters:
       Name  Flags
      exprs  final

  public boolean enterForNode(jdk.nashorn.internal.ir.ForNode);
    descriptor: (Ljdk/nashorn/internal/ir/ForNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.ForNode forNode
         0: .line 619
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
            ifne 2
         1: .line 620
            iconst_0
            ireturn
         2: .line 623
      StackMap locals:
      StackMap stack:
            aload 1 /* forNode */
            invokevirtual jdk.nashorn.internal.ir.ForNode.getInit:()Ljdk/nashorn/internal/ir/Expression;
            astore 2 /* init */
        start local 2 // jdk.nashorn.internal.ir.Expression init
         3: .line 624
            aload 1 /* forNode */
            invokevirtual jdk.nashorn.internal.ir.ForNode.isForInOrOf:()Z
            ifeq 12
         4: .line 625
            aload 1 /* forNode */
            invokevirtual jdk.nashorn.internal.ir.ForNode.getModify:()Ljdk/nashorn/internal/ir/JoinPredecessorExpression;
            astore 3 /* iterable */
        start local 3 // jdk.nashorn.internal.ir.JoinPredecessorExpression iterable
         5: .line 626
            aload 0 /* this */
            aload 3 /* iterable */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            pop
         6: .line 627
            aload 0 /* this */
            aload 1 /* forNode */
            aconst_null
            aload 2 /* init */
         7: .line 632
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.compiler:Ljdk/nashorn/internal/codegen/Compiler;
            invokevirtual jdk.nashorn.internal.codegen.Compiler.useOptimisticTypes:()Z
            ifeq 9
            aload 1 /* forNode */
            invokevirtual jdk.nashorn.internal.ir.ForNode.isForEach:()Z
            ifne 8
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.compiler:Ljdk/nashorn/internal/codegen/Compiler;
            aload 3 /* iterable */
            invokevirtual jdk.nashorn.internal.ir.JoinPredecessorExpression.getExpression:()Ljdk/nashorn/internal/ir/Expression;
            invokevirtual jdk.nashorn.internal.codegen.Compiler.hasStringPropertyIterator:(Ljdk/nashorn/internal/ir/Expression;)Z
            ifne 9
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.ForNode jdk.nashorn.internal.ir.Expression jdk.nashorn.internal.ir.JoinPredecessorExpression
      StackMap stack: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.ForNode null jdk.nashorn.internal.ir.Expression
         8: iconst_0
            goto 10
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.ForNode jdk.nashorn.internal.ir.Expression jdk.nashorn.internal.ir.JoinPredecessorExpression
      StackMap stack: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.ForNode null jdk.nashorn.internal.ir.Expression
         9: iconst_1
        10: .line 627
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.ForNode jdk.nashorn.internal.ir.Expression jdk.nashorn.internal.ir.JoinPredecessorExpression
      StackMap stack: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.ForNode null jdk.nashorn.internal.ir.Expression int
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.enterTestFirstLoop:(Ljdk/nashorn/internal/ir/LoopNode;Ljdk/nashorn/internal/ir/JoinPredecessorExpression;Ljdk/nashorn/internal/ir/Expression;Z)V
        end local 3 // jdk.nashorn.internal.ir.JoinPredecessorExpression iterable
        11: .line 633
            goto 15
        12: .line 634
      StackMap locals:
      StackMap stack:
            aload 2 /* init */
            ifnull 14
        13: .line 635
            aload 0 /* this */
            aload 2 /* init */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpressionOnEmptyStack:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            pop
        14: .line 637
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* forNode */
            aload 1 /* forNode */
            invokevirtual jdk.nashorn.internal.ir.ForNode.getModify:()Ljdk/nashorn/internal/ir/JoinPredecessorExpression;
            aconst_null
            iconst_0
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.enterTestFirstLoop:(Ljdk/nashorn/internal/ir/LoopNode;Ljdk/nashorn/internal/ir/JoinPredecessorExpression;Ljdk/nashorn/internal/ir/Expression;Z)V
        15: .line 639
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.assertTypeStackIsEmpty:()V
        16: .line 640
            iconst_0
            ireturn
        end local 2 // jdk.nashorn.internal.ir.Expression init
        end local 1 // jdk.nashorn.internal.ir.ForNode forNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   17     0      this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0   17     1   forNode  Ljdk/nashorn/internal/ir/ForNode;
            3   17     2      init  Ljdk/nashorn/internal/ir/Expression;
            5   11     3  iterable  Ljdk/nashorn/internal/ir/JoinPredecessorExpression;
    MethodParameters:
         Name  Flags
      forNode  final

  public boolean enterFunctionNode(jdk.nashorn.internal.ir.FunctionNode);
    descriptor: (Ljdk/nashorn/internal/ir/FunctionNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=8, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.FunctionNode functionNode
         0: .line 645
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.alreadyEnteredTopLevelFunction:Z
            ifeq 3
         1: .line 646
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.typeStack:Ljava/util/Deque;
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.OBJECT:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
         2: .line 647
            iconst_0
            ireturn
         3: .line 649
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 2 /* pos */
        start local 2 // int pos
         4: .line 650
            aload 1 /* functionNode */
            invokevirtual jdk.nashorn.internal.ir.FunctionNode.isVarArg:()Z
            ifne 18
         5: .line 651
            aload 1 /* functionNode */
            invokevirtual jdk.nashorn.internal.ir.FunctionNode.getParameters:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 17
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.FunctionNode int top java.util.Iterator
      StackMap stack:
         6: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast jdk.nashorn.internal.ir.IdentNode
            astore 3 /* param */
        start local 3 // jdk.nashorn.internal.ir.IdentNode param
         7: .line 652
            aload 3 /* param */
            invokevirtual jdk.nashorn.internal.ir.IdentNode.getSymbol:()Ljdk/nashorn/internal/ir/Symbol;
            astore 5 /* symbol */
        start local 5 // jdk.nashorn.internal.ir.Symbol symbol
         8: .line 655
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
            ifne 9
            aload 5 /* symbol */
            invokevirtual jdk.nashorn.internal.ir.Symbol.hasSlot:()Z
            ifne 9
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         9: .line 656
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.FunctionNode int jdk.nashorn.internal.ir.IdentNode java.util.Iterator jdk.nashorn.internal.ir.Symbol
      StackMap stack:
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.compiler:Ljdk/nashorn/internal/codegen/Compiler;
            aload 1 /* functionNode */
            iload 2 /* pos */
            invokevirtual jdk.nashorn.internal.codegen.Compiler.getParamType:(Ljdk/nashorn/internal/ir/FunctionNode;I)Ljdk/nashorn/internal/codegen/types/Type;
            astore 6 /* callSiteParamType */
        start local 6 // jdk.nashorn.internal.codegen.types.Type callSiteParamType
        10: .line 657
            aload 6 /* callSiteParamType */
            ifnonnull 11
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.OBJECT:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            goto 12
      StackMap locals: jdk.nashorn.internal.codegen.types.Type
      StackMap stack:
        11: aload 6 /* callSiteParamType */
            invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.toLvarType:(Ljdk/nashorn/internal/codegen/types/Type;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
      StackMap locals:
      StackMap stack: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
        12: astore 7 /* paramType */
        start local 7 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType paramType
        13: .line 658
            aload 0 /* this */
            aload 5 /* symbol */
            aload 7 /* paramType */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setType:(Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
        14: .line 663
            aload 0 /* this */
            aload 5 /* symbol */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.symbolIsUsed:(Ljdk/nashorn/internal/ir/Symbol;)V
        15: .line 664
            aload 0 /* this */
            aload 3 /* param */
            aload 7 /* paramType */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setIdentifierLvarType:(Ljdk/nashorn/internal/ir/IdentNode;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
        16: .line 665
            iinc 2 /* pos */ 1
        end local 7 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType paramType
        end local 6 // jdk.nashorn.internal.codegen.types.Type callSiteParamType
        end local 5 // jdk.nashorn.internal.ir.Symbol symbol
        end local 3 // jdk.nashorn.internal.ir.IdentNode param
        17: .line 651
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.FunctionNode int top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
        18: .line 668
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.FunctionNode int
      StackMap stack:
            aload 0 /* this */
            aload 1 /* functionNode */
            getstatic jdk.nashorn.internal.codegen.CompilerConstants.THIS:Ljdk/nashorn/internal/codegen/CompilerConstants;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setCompilerConstantAsObject:(Ljdk/nashorn/internal/ir/FunctionNode;Ljdk/nashorn/internal/codegen/CompilerConstants;)V
        19: .line 673
            aload 1 /* functionNode */
            invokevirtual jdk.nashorn.internal.ir.FunctionNode.hasScopeBlock:()Z
            ifne 20
            aload 1 /* functionNode */
            invokevirtual jdk.nashorn.internal.ir.FunctionNode.needsParentScope:()Z
            ifeq 21
        20: .line 674
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* functionNode */
            getstatic jdk.nashorn.internal.codegen.CompilerConstants.SCOPE:Ljdk/nashorn/internal/codegen/CompilerConstants;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setCompilerConstantAsObject:(Ljdk/nashorn/internal/ir/FunctionNode;Ljdk/nashorn/internal/codegen/CompilerConstants;)V
        21: .line 676
      StackMap locals:
      StackMap stack:
            aload 1 /* functionNode */
            invokevirtual jdk.nashorn.internal.ir.FunctionNode.needsCallee:()Z
            ifeq 23
        22: .line 677
            aload 0 /* this */
            aload 1 /* functionNode */
            getstatic jdk.nashorn.internal.codegen.CompilerConstants.CALLEE:Ljdk/nashorn/internal/codegen/CompilerConstants;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setCompilerConstantAsObject:(Ljdk/nashorn/internal/ir/FunctionNode;Ljdk/nashorn/internal/codegen/CompilerConstants;)V
        23: .line 679
      StackMap locals:
      StackMap stack:
            aload 1 /* functionNode */
            invokevirtual jdk.nashorn.internal.ir.FunctionNode.needsArguments:()Z
            ifeq 25
        24: .line 680
            aload 0 /* this */
            aload 1 /* functionNode */
            getstatic jdk.nashorn.internal.codegen.CompilerConstants.ARGUMENTS:Ljdk/nashorn/internal/codegen/CompilerConstants;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setCompilerConstantAsObject:(Ljdk/nashorn/internal/ir/FunctionNode;Ljdk/nashorn/internal/codegen/CompilerConstants;)V
        25: .line 683
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.alreadyEnteredTopLevelFunction:Z
        26: .line 684
            iconst_1
            ireturn
        end local 2 // int pos
        end local 1 // jdk.nashorn.internal.ir.FunctionNode functionNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   27     0               this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0   27     1       functionNode  Ljdk/nashorn/internal/ir/FunctionNode;
            4   27     2                pos  I
            7   17     3              param  Ljdk/nashorn/internal/ir/IdentNode;
            8   17     5             symbol  Ljdk/nashorn/internal/ir/Symbol;
           10   17     6  callSiteParamType  Ljdk/nashorn/internal/codegen/types/Type;
           13   17     7          paramType  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
    MethodParameters:
              Name  Flags
      functionNode  final

  public boolean enterGetSplitState(jdk.nashorn.internal.ir.GetSplitState);
    descriptor: (Ljdk/nashorn/internal/ir/GetSplitState;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.GetSplitState getSplitState
         0: .line 689
            aload 0 /* this */
            aload 1 /* getSplitState */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.pushExpressionType:(Ljdk/nashorn/internal/ir/Expression;)Z
            ireturn
        end local 1 // jdk.nashorn.internal.ir.GetSplitState getSplitState
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    1     1  getSplitState  Ljdk/nashorn/internal/ir/GetSplitState;
    MethodParameters:
               Name  Flags
      getSplitState  final

  public boolean enterIdentNode(jdk.nashorn.internal.ir.IdentNode);
    descriptor: (Ljdk/nashorn/internal/ir/IdentNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.IdentNode identNode
         0: .line 694
            aload 1 /* identNode */
            invokevirtual jdk.nashorn.internal.ir.IdentNode.getSymbol:()Ljdk/nashorn/internal/ir/Symbol;
            astore 2 /* symbol */
        start local 2 // jdk.nashorn.internal.ir.Symbol symbol
         1: .line 695
            aload 2 /* symbol */
            invokevirtual jdk.nashorn.internal.ir.Symbol.isBytecodeLocal:()Z
            ifeq 7
         2: .line 696
            aload 0 /* this */
            aload 2 /* symbol */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.symbolIsUsed:(Ljdk/nashorn/internal/ir/Symbol;)V
         3: .line 697
            aload 0 /* this */
            aload 2 /* symbol */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.getLocalVariableType:(Ljdk/nashorn/internal/ir/Symbol;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            astore 3 /* type */
        start local 3 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType type
         4: .line 698
            aload 0 /* this */
            aload 1 /* identNode */
            aload 3 /* type */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setIdentifierLvarType:(Ljdk/nashorn/internal/ir/IdentNode;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
         5: .line 699
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.typeStack:Ljava/util/Deque;
            aload 3 /* type */
            invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
        end local 3 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType type
         6: .line 700
            goto 8
         7: .line 701
      StackMap locals: jdk.nashorn.internal.ir.Symbol
      StackMap stack:
            aload 0 /* this */
            aload 1 /* identNode */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.pushExpressionType:(Ljdk/nashorn/internal/ir/Expression;)Z
            pop
         8: .line 703
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 2 // jdk.nashorn.internal.ir.Symbol symbol
        end local 1 // jdk.nashorn.internal.ir.IdentNode identNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0       this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    9     1  identNode  Ljdk/nashorn/internal/ir/IdentNode;
            1    9     2     symbol  Ljdk/nashorn/internal/ir/Symbol;
            4    6     3       type  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
    MethodParameters:
           Name  Flags
      identNode  final

  public boolean enterIfNode(jdk.nashorn.internal.ir.IfNode);
    descriptor: (Ljdk/nashorn/internal/ir/IfNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.IfNode ifNode
         0: .line 708
            aload 0 /* this */
            aload 1 /* ifNode */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.processIfNode:(Ljdk/nashorn/internal/ir/IfNode;)V
         1: .line 709
            iconst_0
            ireturn
        end local 1 // jdk.nashorn.internal.ir.IfNode ifNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    2     1  ifNode  Ljdk/nashorn/internal/ir/IfNode;
    MethodParameters:
        Name  Flags
      ifNode  final

  private void processIfNode(jdk.nashorn.internal.ir.IfNode);
    descriptor: (Ljdk/nashorn/internal/ir/IfNode;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=9, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.IfNode ifNode
         0: .line 713
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
            ifne 2
         1: .line 714
            return
         2: .line 717
      StackMap locals:
      StackMap stack:
            aload 1 /* ifNode */
            invokevirtual jdk.nashorn.internal.ir.IfNode.getTest:()Ljdk/nashorn/internal/ir/Expression;
            astore 2 /* test */
        start local 2 // jdk.nashorn.internal.ir.Expression test
         3: .line 718
            aload 1 /* ifNode */
            invokevirtual jdk.nashorn.internal.ir.IfNode.getPass:()Ljdk/nashorn/internal/ir/Block;
            astore 3 /* pass */
        start local 3 // jdk.nashorn.internal.ir.Block pass
         4: .line 719
            aload 1 /* ifNode */
            invokevirtual jdk.nashorn.internal.ir.IfNode.getFail:()Ljdk/nashorn/internal/ir/Block;
            astore 4 /* fail */
        start local 4 // jdk.nashorn.internal.ir.Block fail
         5: .line 721
            aload 0 /* this */
            aload 2 /* test */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpressionOnEmptyStack:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            pop
         6: .line 725
            aload 2 /* test */
            invokestatic jdk.nashorn.internal.ir.Expression.isAlwaysTrue:(Ljdk/nashorn/internal/ir/Expression;)Z
            istore 7 /* isTestAlwaysTrue */
        start local 7 // boolean isTestAlwaysTrue
         7: .line 726
            aload 2 /* test */
            invokestatic jdk.nashorn.internal.ir.Expression.isAlwaysFalse:(Ljdk/nashorn/internal/ir/Expression;)Z
            ifeq 11
         8: .line 727
            aconst_null
            astore 5 /* passLvarTypes */
        start local 5 // java.util.Map passLvarTypes
         9: .line 728
            iconst_0
            istore 6 /* reachableFromPass */
        start local 6 // boolean reachableFromPass
        10: .line 729
            goto 20
        end local 6 // boolean reachableFromPass
        end local 5 // java.util.Map passLvarTypes
        11: .line 730
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.IfNode jdk.nashorn.internal.ir.Expression jdk.nashorn.internal.ir.Block jdk.nashorn.internal.ir.Block top top int
      StackMap stack:
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            astore 8 /* afterTestLvarTypes */
        start local 8 // java.util.Map afterTestLvarTypes
        12: .line 731
            aload 3 /* pass */
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.ir.Block.accept:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljdk/nashorn/internal/ir/Node;
            pop
        13: .line 732
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.assertTypeStackIsEmpty:()V
        14: .line 733
            iload 7 /* isTestAlwaysTrue */
            ifeq 16
        15: .line 734
            return
        16: .line 736
      StackMap locals: java.util.Map
      StackMap stack:
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            astore 5 /* passLvarTypes */
        start local 5 // java.util.Map passLvarTypes
        17: .line 737
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
            istore 6 /* reachableFromPass */
        start local 6 // boolean reachableFromPass
        18: .line 738
            aload 0 /* this */
            aload 8 /* afterTestLvarTypes */
            putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
        19: .line 739
            aload 0 /* this */
            iconst_1
            putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
        end local 8 // java.util.Map afterTestLvarTypes
        20: .line 743
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.IfNode jdk.nashorn.internal.ir.Expression jdk.nashorn.internal.ir.Block jdk.nashorn.internal.ir.Block java.util.Map int int
      StackMap stack:
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
            ifne 21
            iload 7 /* isTestAlwaysTrue */
            ifeq 21
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        21: .line 745
      StackMap locals:
      StackMap stack:
            aload 4 /* fail */
            ifnull 24
        22: .line 746
            aload 4 /* fail */
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.ir.Block.accept:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljdk/nashorn/internal/ir/Node;
            pop
        23: .line 747
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.assertTypeStackIsEmpty:()V
        24: .line 750
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
            ifeq 33
        25: .line 751
            iload 6 /* reachableFromPass */
            ifeq 37
        26: .line 752
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            astore 8 /* failLvarTypes */
        start local 8 // java.util.Map failLvarTypes
        27: .line 753
            aload 0 /* this */
            aload 0 /* this */
            aload 5 /* passLvarTypes */
            aload 8 /* failLvarTypes */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.getUnionTypes:(Ljava/util/Map;Ljava/util/Map;)Ljava/util/Map;
            putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
        28: .line 754
            aload 0 /* this */
            aload 3 /* pass */
            aload 5 /* passLvarTypes */
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setConversion:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljava/util/Map;Ljava/util/Map;)V
        29: .line 758
            aload 0 /* this */
            aload 4 /* fail */
            ifnull 30
            aload 4 /* fail */
            goto 31
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.IfNode jdk.nashorn.internal.ir.Expression jdk.nashorn.internal.ir.Block jdk.nashorn.internal.ir.Block java.util.Map int int java.util.Map
      StackMap stack: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator
        30: aload 1 /* ifNode */
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.IfNode jdk.nashorn.internal.ir.Expression jdk.nashorn.internal.ir.Block jdk.nashorn.internal.ir.Block java.util.Map int int java.util.Map
      StackMap stack: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.Node
        31: aload 8 /* failLvarTypes */
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setConversion:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljava/util/Map;Ljava/util/Map;)V
        end local 8 // java.util.Map failLvarTypes
        32: .line 760
            goto 37
      StackMap locals:
      StackMap stack:
        33: iload 6 /* reachableFromPass */
            ifeq 37
        34: .line 761
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
            ifne 35
            aload 5 /* passLvarTypes */
            ifnonnull 35
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        35: .line 762
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 5 /* passLvarTypes */
            putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
        36: .line 763
            aload 0 /* this */
            iconst_1
            putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
        37: .line 765
      StackMap locals:
      StackMap stack:
            return
        end local 7 // boolean isTestAlwaysTrue
        end local 6 // boolean reachableFromPass
        end local 5 // java.util.Map passLvarTypes
        end local 4 // jdk.nashorn.internal.ir.Block fail
        end local 3 // jdk.nashorn.internal.ir.Block pass
        end local 2 // jdk.nashorn.internal.ir.Expression test
        end local 1 // jdk.nashorn.internal.ir.IfNode ifNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   38     0                this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0   38     1              ifNode  Ljdk/nashorn/internal/ir/IfNode;
            3   38     2                test  Ljdk/nashorn/internal/ir/Expression;
            4   38     3                pass  Ljdk/nashorn/internal/ir/Block;
            5   38     4                fail  Ljdk/nashorn/internal/ir/Block;
            9   11     5       passLvarTypes  Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
           17   38     5       passLvarTypes  Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
           10   11     6   reachableFromPass  Z
           18   38     6   reachableFromPass  Z
            7   38     7    isTestAlwaysTrue  Z
           12   20     8  afterTestLvarTypes  Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
           27   32     8       failLvarTypes  Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
    MethodParameters:
        Name  Flags
      ifNode  final

  public boolean enterIndexNode(jdk.nashorn.internal.ir.IndexNode);
    descriptor: (Ljdk/nashorn/internal/ir/IndexNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.IndexNode indexNode
         0: .line 769
            aload 0 /* this */
            aload 1 /* indexNode */
            invokevirtual jdk.nashorn.internal.ir.IndexNode.getBase:()Ljdk/nashorn/internal/ir/Expression;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            pop
         1: .line 770
            aload 0 /* this */
            aload 1 /* indexNode */
            invokevirtual jdk.nashorn.internal.ir.IndexNode.getIndex:()Ljdk/nashorn/internal/ir/Expression;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            pop
         2: .line 771
            aload 0 /* this */
            aload 1 /* indexNode */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.pushExpressionType:(Ljdk/nashorn/internal/ir/Expression;)Z
            ireturn
        end local 1 // jdk.nashorn.internal.ir.IndexNode indexNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    3     1  indexNode  Ljdk/nashorn/internal/ir/IndexNode;
    MethodParameters:
           Name  Flags
      indexNode  final

  public boolean enterJoinPredecessorExpression(jdk.nashorn.internal.ir.JoinPredecessorExpression);
    descriptor: (Ljdk/nashorn/internal/ir/JoinPredecessorExpression;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.JoinPredecessorExpression joinExpr
         0: .line 776
            aload 1 /* joinExpr */
            invokevirtual jdk.nashorn.internal.ir.JoinPredecessorExpression.getExpression:()Ljdk/nashorn/internal/ir/Expression;
            astore 2 /* expr */
        start local 2 // jdk.nashorn.internal.ir.Expression expr
         1: .line 777
            aload 2 /* expr */
            ifnull 4
         2: .line 778
            aload 2 /* expr */
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.ir.Expression.accept:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljdk/nashorn/internal/ir/Node;
            pop
         3: .line 779
            goto 5
         4: .line 780
      StackMap locals: jdk.nashorn.internal.ir.Expression
      StackMap stack:
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.typeStack:Ljava/util/Deque;
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.UNDEFINED:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
         5: .line 782
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 2 // jdk.nashorn.internal.ir.Expression expr
        end local 1 // jdk.nashorn.internal.ir.JoinPredecessorExpression joinExpr
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    6     1  joinExpr  Ljdk/nashorn/internal/ir/JoinPredecessorExpression;
            1    6     2      expr  Ljdk/nashorn/internal/ir/Expression;
    MethodParameters:
          Name  Flags
      joinExpr  final

  public boolean enterJumpToInlinedFinally(jdk.nashorn.internal.ir.JumpToInlinedFinally);
    descriptor: (Ljdk/nashorn/internal/ir/JumpToInlinedFinally;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.JumpToInlinedFinally jumpToInlinedFinally
         0: .line 787
            aload 0 /* this */
            aload 1 /* jumpToInlinedFinally */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.enterJumpStatement:(Ljdk/nashorn/internal/ir/JumpStatement;)Z
            ireturn
        end local 1 // jdk.nashorn.internal.ir.JumpToInlinedFinally jumpToInlinedFinally
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    1     0                  this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    1     1  jumpToInlinedFinally  Ljdk/nashorn/internal/ir/JumpToInlinedFinally;
    MethodParameters:
                      Name  Flags
      jumpToInlinedFinally  final

  public boolean enterLiteralNode(jdk.nashorn.internal.ir.LiteralNode<?>);
    descriptor: (Ljdk/nashorn/internal/ir/LiteralNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.LiteralNode literalNode
         0: .line 792
            aload 1 /* literalNode */
            instanceof jdk.nashorn.internal.ir.LiteralNode$ArrayLiteralNode
            ifeq 4
         1: .line 793
            aload 1 /* literalNode */
            checkcast jdk.nashorn.internal.ir.LiteralNode$ArrayLiteralNode
            invokevirtual jdk.nashorn.internal.ir.LiteralNode$ArrayLiteralNode.getElementExpressions:()Ljava/util/List;
            astore 2 /* expressions */
        start local 2 // java.util.List expressions
         2: .line 794
            aload 2 /* expressions */
            ifnull 4
         3: .line 795
            aload 0 /* this */
            aload 2 /* expressions */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpressions:(Ljava/util/List;)V
        end local 2 // java.util.List expressions
         4: .line 798
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* literalNode */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.pushExpressionType:(Ljdk/nashorn/internal/ir/Expression;)Z
            pop
         5: .line 799
            iconst_0
            ireturn
        end local 1 // jdk.nashorn.internal.ir.LiteralNode literalNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    6     0         this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    6     1  literalNode  Ljdk/nashorn/internal/ir/LiteralNode<*>;
            2    4     2  expressions  Ljava/util/List<Ljdk/nashorn/internal/ir/Expression;>;
    Signature: (Ljdk/nashorn/internal/ir/LiteralNode<*>;)Z
    MethodParameters:
             Name  Flags
      literalNode  final

  public boolean enterObjectNode(jdk.nashorn.internal.ir.ObjectNode);
    descriptor: (Ljdk/nashorn/internal/ir/ObjectNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.ObjectNode objectNode
         0: .line 804
            aload 1 /* objectNode */
            invokevirtual jdk.nashorn.internal.ir.ObjectNode.getElements:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 5
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.ObjectNode top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast jdk.nashorn.internal.ir.PropertyNode
            astore 2 /* propertyNode */
        start local 2 // jdk.nashorn.internal.ir.PropertyNode propertyNode
         2: .line 806
            aload 2 /* propertyNode */
            invokevirtual jdk.nashorn.internal.ir.PropertyNode.getValue:()Ljdk/nashorn/internal/ir/Expression;
            astore 4 /* value */
        start local 4 // jdk.nashorn.internal.ir.Expression value
         3: .line 807
            aload 4 /* value */
            ifnull 5
         4: .line 808
            aload 0 /* this */
            aload 4 /* value */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            pop
        end local 4 // jdk.nashorn.internal.ir.Expression value
        end local 2 // jdk.nashorn.internal.ir.PropertyNode propertyNode
         5: .line 804
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         6: .line 811
            aload 0 /* this */
            aload 1 /* objectNode */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.pushExpressionType:(Ljdk/nashorn/internal/ir/Expression;)Z
            ireturn
        end local 1 // jdk.nashorn.internal.ir.ObjectNode objectNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    7     0          this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    7     1    objectNode  Ljdk/nashorn/internal/ir/ObjectNode;
            2    5     2  propertyNode  Ljdk/nashorn/internal/ir/PropertyNode;
            3    5     4         value  Ljdk/nashorn/internal/ir/Expression;
    MethodParameters:
            Name  Flags
      objectNode  final

  public boolean enterPropertyNode(jdk.nashorn.internal.ir.PropertyNode);
    descriptor: (Ljdk/nashorn/internal/ir/PropertyNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.PropertyNode propertyNode
         0: .line 817
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        end local 1 // jdk.nashorn.internal.ir.PropertyNode propertyNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    1     1  propertyNode  Ljdk/nashorn/internal/ir/PropertyNode;
    MethodParameters:
              Name  Flags
      propertyNode  final

  public boolean enterReturnNode(jdk.nashorn.internal.ir.ReturnNode);
    descriptor: (Ljdk/nashorn/internal/ir/ReturnNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.ReturnNode returnNode
         0: .line 822
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
            ifne 2
         1: .line 823
            iconst_0
            ireturn
         2: .line 826
      StackMap locals:
      StackMap stack:
            aload 1 /* returnNode */
            invokevirtual jdk.nashorn.internal.ir.ReturnNode.getExpression:()Ljdk/nashorn/internal/ir/Expression;
            astore 2 /* returnExpr */
        start local 2 // jdk.nashorn.internal.ir.Expression returnExpr
         3: .line 828
            aload 2 /* returnExpr */
            ifnull 6
         4: .line 829
            aload 0 /* this */
            aload 2 /* returnExpr */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpressionOnEmptyStack:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.type:Ljdk/nashorn/internal/codegen/types/Type;
            astore 3 /* returnExprType */
        start local 3 // jdk.nashorn.internal.codegen.types.Type returnExprType
         5: .line 830
            goto 8
        end local 3 // jdk.nashorn.internal.codegen.types.Type returnExprType
         6: .line 831
      StackMap locals: jdk.nashorn.internal.ir.Expression
      StackMap stack:
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.assertTypeStackIsEmpty:()V
         7: .line 832
            getstatic jdk.nashorn.internal.codegen.types.Type.UNDEFINED:Ljdk/nashorn/internal/codegen/types/Type;
            astore 3 /* returnExprType */
        start local 3 // jdk.nashorn.internal.codegen.types.Type returnExprType
         8: .line 834
      StackMap locals: jdk.nashorn.internal.codegen.types.Type
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.returnType:Ljdk/nashorn/internal/codegen/types/Type;
            aload 3 /* returnExprType */
            invokestatic jdk.nashorn.internal.codegen.types.Type.widestReturnType:(Ljdk/nashorn/internal/codegen/types/Type;Ljdk/nashorn/internal/codegen/types/Type;)Ljdk/nashorn/internal/codegen/types/Type;
            putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.returnType:Ljdk/nashorn/internal/codegen/types/Type;
         9: .line 835
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.doesNotContinueSequentially:()V
        10: .line 836
            iconst_0
            ireturn
        end local 3 // jdk.nashorn.internal.codegen.types.Type returnExprType
        end local 2 // jdk.nashorn.internal.ir.Expression returnExpr
        end local 1 // jdk.nashorn.internal.ir.ReturnNode returnNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   11     0            this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0   11     1      returnNode  Ljdk/nashorn/internal/ir/ReturnNode;
            3   11     2      returnExpr  Ljdk/nashorn/internal/ir/Expression;
            5    6     3  returnExprType  Ljdk/nashorn/internal/codegen/types/Type;
            8   11     3  returnExprType  Ljdk/nashorn/internal/codegen/types/Type;
    MethodParameters:
            Name  Flags
      returnNode  final

  public boolean enterRuntimeNode(jdk.nashorn.internal.ir.RuntimeNode);
    descriptor: (Ljdk/nashorn/internal/ir/RuntimeNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.RuntimeNode runtimeNode
         0: .line 841
            aload 0 /* this */
            aload 1 /* runtimeNode */
            invokevirtual jdk.nashorn.internal.ir.RuntimeNode.getArgs:()Ljava/util/List;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpressions:(Ljava/util/List;)V
         1: .line 842
            aload 0 /* this */
            aload 1 /* runtimeNode */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.pushExpressionType:(Ljdk/nashorn/internal/ir/Expression;)Z
            ireturn
        end local 1 // jdk.nashorn.internal.ir.RuntimeNode runtimeNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    2     1  runtimeNode  Ljdk/nashorn/internal/ir/RuntimeNode;
    MethodParameters:
             Name  Flags
      runtimeNode  final

  public boolean enterSplitReturn(jdk.nashorn.internal.ir.SplitReturn);
    descriptor: (Ljdk/nashorn/internal/ir/SplitReturn;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.SplitReturn splitReturn
         0: .line 847
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.doesNotContinueSequentially:()V
         1: .line 848
            iconst_0
            ireturn
        end local 1 // jdk.nashorn.internal.ir.SplitReturn splitReturn
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    2     1  splitReturn  Ljdk/nashorn/internal/ir/SplitReturn;
    MethodParameters:
             Name  Flags
      splitReturn  final

  public boolean enterSwitchNode(jdk.nashorn.internal.ir.SwitchNode);
    descriptor: (Ljdk/nashorn/internal/ir/SwitchNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=12, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.SwitchNode switchNode
         0: .line 853
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
            ifne 2
         1: .line 854
            iconst_0
            ireturn
         2: .line 857
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* switchNode */
            invokevirtual jdk.nashorn.internal.ir.SwitchNode.getExpression:()Ljdk/nashorn/internal/ir/Expression;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpressionOnEmptyStack:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            pop
         3: .line 859
            aload 1 /* switchNode */
            invokevirtual jdk.nashorn.internal.ir.SwitchNode.getCases:()Ljava/util/List;
            astore 2 /* cases */
        start local 2 // java.util.List cases
         4: .line 860
            aload 2 /* cases */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 6
         5: .line 861
            iconst_0
            ireturn
         6: .line 866
      StackMap locals: java.util.List
      StackMap stack:
            aload 1 /* switchNode */
            invokevirtual jdk.nashorn.internal.ir.SwitchNode.isUniqueInteger:()Z
            istore 3 /* isInteger */
        start local 3 // boolean isInteger
         7: .line 867
            aload 1 /* switchNode */
            invokevirtual jdk.nashorn.internal.ir.SwitchNode.getBreakLabel:()Ljdk/nashorn/internal/codegen/Label;
            astore 4 /* breakLabel */
        start local 4 // jdk.nashorn.internal.codegen.Label breakLabel
         8: .line 868
            aload 1 /* switchNode */
            invokevirtual jdk.nashorn.internal.ir.SwitchNode.getDefaultCase:()Ljdk/nashorn/internal/ir/CaseNode;
            ifnull 9
            iconst_1
            goto 10
      StackMap locals: int jdk.nashorn.internal.codegen.Label
      StackMap stack:
         9: iconst_0
      StackMap locals:
      StackMap stack: int
        10: istore 5 /* hasDefault */
        start local 5 // boolean hasDefault
        11: .line 870
            iconst_0
            istore 6 /* tagUsed */
        start local 6 // boolean tagUsed
        12: .line 871
            aload 2 /* cases */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 8
            goto 21
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.SwitchNode java.util.List int jdk.nashorn.internal.codegen.Label int int top java.util.Iterator
      StackMap stack:
        13: aload 8
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast jdk.nashorn.internal.ir.CaseNode
            astore 7 /* caseNode */
        start local 7 // jdk.nashorn.internal.ir.CaseNode caseNode
        14: .line 872
            aload 7 /* caseNode */
            invokevirtual jdk.nashorn.internal.ir.CaseNode.getTest:()Ljdk/nashorn/internal/ir/Expression;
            astore 9 /* test */
        start local 9 // jdk.nashorn.internal.ir.Expression test
        15: .line 873
            iload 3 /* isInteger */
            ifne 20
            aload 9 /* test */
            ifnull 20
        16: .line 874
            aload 0 /* this */
            aload 9 /* test */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpressionOnEmptyStack:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            pop
        17: .line 875
            iload 6 /* tagUsed */
            ifne 20
        18: .line 876
            aload 1 /* switchNode */
            invokevirtual jdk.nashorn.internal.ir.SwitchNode.getTag:()Ljdk/nashorn/internal/ir/Symbol;
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.OBJECT:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.symbolIsUsed:(Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
        19: .line 877
            iconst_1
            istore 6 /* tagUsed */
        20: .line 883
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.SwitchNode java.util.List int jdk.nashorn.internal.codegen.Label int int jdk.nashorn.internal.ir.CaseNode java.util.Iterator jdk.nashorn.internal.ir.Expression
      StackMap stack:
            aload 0 /* this */
            aload 7 /* caseNode */
            aload 7 /* caseNode */
            invokevirtual jdk.nashorn.internal.ir.CaseNode.getBody:()Ljdk/nashorn/internal/ir/Block;
            invokevirtual jdk.nashorn.internal.ir.Block.getEntryLabel:()Ljdk/nashorn/internal/codegen/Label;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
        end local 9 // jdk.nashorn.internal.ir.Expression test
        end local 7 // jdk.nashorn.internal.ir.CaseNode caseNode
        21: .line 871
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.SwitchNode java.util.List int jdk.nashorn.internal.codegen.Label int int top java.util.Iterator
      StackMap stack:
            aload 8
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 13
        22: .line 885
            iload 5 /* hasDefault */
            ifne 24
        23: .line 888
            aload 0 /* this */
            aload 1 /* switchNode */
            aload 4 /* breakLabel */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
        24: .line 892
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.SwitchNode java.util.List int jdk.nashorn.internal.codegen.Label int int
      StackMap stack:
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.doesNotContinueSequentially:()V
        25: .line 894
            aconst_null
            astore 7 /* previousBlock */
        start local 7 // jdk.nashorn.internal.ir.Block previousBlock
        26: .line 895
            aload 2 /* cases */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 9
            goto 36
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.SwitchNode java.util.List int jdk.nashorn.internal.codegen.Label int int jdk.nashorn.internal.ir.Block top java.util.Iterator
      StackMap stack:
        27: aload 9
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast jdk.nashorn.internal.ir.CaseNode
            astore 8 /* caseNode */
        start local 8 // jdk.nashorn.internal.ir.CaseNode caseNode
        28: .line 896
            aload 8 /* caseNode */
            invokevirtual jdk.nashorn.internal.ir.CaseNode.getBody:()Ljdk/nashorn/internal/ir/Block;
            astore 10 /* body */
        start local 10 // jdk.nashorn.internal.ir.Block body
        29: .line 897
            aload 10 /* body */
            invokevirtual jdk.nashorn.internal.ir.Block.getEntryLabel:()Ljdk/nashorn/internal/codegen/Label;
            astore 11 /* entryLabel */
        start local 11 // jdk.nashorn.internal.codegen.Label entryLabel
        30: .line 898
            aload 7 /* previousBlock */
            ifnull 32
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
            ifeq 32
        31: .line 899
            aload 0 /* this */
            aload 7 /* previousBlock */
            aload 11 /* entryLabel */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
        32: .line 901
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.SwitchNode java.util.List int jdk.nashorn.internal.codegen.Label int int jdk.nashorn.internal.ir.Block jdk.nashorn.internal.ir.CaseNode java.util.Iterator jdk.nashorn.internal.ir.Block jdk.nashorn.internal.codegen.Label
      StackMap stack:
            aload 0 /* this */
            aload 11 /* entryLabel */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.joinOnLabel:(Ljdk/nashorn/internal/codegen/Label;)V
        33: .line 902
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
            ifne 34
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
            ifne 34
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        34: .line 903
      StackMap locals:
      StackMap stack:
            aload 10 /* body */
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.ir.Block.accept:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljdk/nashorn/internal/ir/Node;
            pop
        35: .line 904
            aload 10 /* body */
            astore 7 /* previousBlock */
        end local 11 // jdk.nashorn.internal.codegen.Label entryLabel
        end local 10 // jdk.nashorn.internal.ir.Block body
        end local 8 // jdk.nashorn.internal.ir.CaseNode caseNode
        36: .line 895
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.SwitchNode java.util.List int jdk.nashorn.internal.codegen.Label int int jdk.nashorn.internal.ir.Block top java.util.Iterator
      StackMap stack:
            aload 9
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 27
        37: .line 906
            aload 7 /* previousBlock */
            ifnull 39
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
            ifeq 39
        38: .line 907
            aload 0 /* this */
            aload 7 /* previousBlock */
            aload 4 /* breakLabel */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
        39: .line 909
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.SwitchNode java.util.List int jdk.nashorn.internal.codegen.Label int int jdk.nashorn.internal.ir.Block
      StackMap stack:
            aload 0 /* this */
            aload 1 /* switchNode */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.leaveBreakable:(Ljdk/nashorn/internal/ir/BreakableNode;)V
        40: .line 910
            iconst_0
            ireturn
        end local 7 // jdk.nashorn.internal.ir.Block previousBlock
        end local 6 // boolean tagUsed
        end local 5 // boolean hasDefault
        end local 4 // jdk.nashorn.internal.codegen.Label breakLabel
        end local 3 // boolean isInteger
        end local 2 // java.util.List cases
        end local 1 // jdk.nashorn.internal.ir.SwitchNode switchNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   41     0           this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0   41     1     switchNode  Ljdk/nashorn/internal/ir/SwitchNode;
            4   41     2          cases  Ljava/util/List<Ljdk/nashorn/internal/ir/CaseNode;>;
            7   41     3      isInteger  Z
            8   41     4     breakLabel  Ljdk/nashorn/internal/codegen/Label;
           11   41     5     hasDefault  Z
           12   41     6        tagUsed  Z
           14   21     7       caseNode  Ljdk/nashorn/internal/ir/CaseNode;
           15   21     9           test  Ljdk/nashorn/internal/ir/Expression;
           26   41     7  previousBlock  Ljdk/nashorn/internal/ir/Block;
           28   36     8       caseNode  Ljdk/nashorn/internal/ir/CaseNode;
           29   36    10           body  Ljdk/nashorn/internal/ir/Block;
           30   36    11     entryLabel  Ljdk/nashorn/internal/codegen/Label;
    MethodParameters:
            Name  Flags
      switchNode  final

  public boolean enterTernaryNode(jdk.nashorn.internal.ir.TernaryNode);
    descriptor: (Ljdk/nashorn/internal/ir/TernaryNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=10, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.TernaryNode ternaryNode
         0: .line 915
            aload 1 /* ternaryNode */
            invokevirtual jdk.nashorn.internal.ir.TernaryNode.getTest:()Ljdk/nashorn/internal/ir/Expression;
            astore 2 /* test */
        start local 2 // jdk.nashorn.internal.ir.Expression test
         1: .line 916
            aload 1 /* ternaryNode */
            invokevirtual jdk.nashorn.internal.ir.TernaryNode.getTrueExpression:()Ljdk/nashorn/internal/ir/JoinPredecessorExpression;
            astore 3 /* trueExpr */
        start local 3 // jdk.nashorn.internal.ir.Expression trueExpr
         2: .line 917
            aload 1 /* ternaryNode */
            invokevirtual jdk.nashorn.internal.ir.TernaryNode.getFalseExpression:()Ljdk/nashorn/internal/ir/JoinPredecessorExpression;
            astore 4 /* falseExpr */
        start local 4 // jdk.nashorn.internal.ir.Expression falseExpr
         3: .line 919
            aload 0 /* this */
            aload 2 /* test */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            pop
         4: .line 921
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            astore 5 /* testExitLvarTypes */
        start local 5 // java.util.Map testExitLvarTypes
         5: .line 923
            aload 2 /* test */
            invokestatic jdk.nashorn.internal.ir.Expression.isAlwaysFalse:(Ljdk/nashorn/internal/ir/Expression;)Z
            ifne 8
         6: .line 924
            aload 0 /* this */
            aload 3 /* trueExpr */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            astore 6 /* trueType */
        start local 6 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType trueType
         7: .line 925
            goto 9
        end local 6 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType trueType
         8: .line 926
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.TernaryNode jdk.nashorn.internal.ir.Expression jdk.nashorn.internal.ir.Expression jdk.nashorn.internal.ir.Expression java.util.Map
      StackMap stack:
            aconst_null
            astore 6 /* trueType */
        start local 6 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType trueType
         9: .line 928
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
      StackMap stack:
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            astore 7 /* trueExitLvarTypes */
        start local 7 // java.util.Map trueExitLvarTypes
        10: .line 929
            aload 0 /* this */
            aload 5 /* testExitLvarTypes */
            putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
        11: .line 931
            aload 2 /* test */
            invokestatic jdk.nashorn.internal.ir.Expression.isAlwaysTrue:(Ljdk/nashorn/internal/ir/Expression;)Z
            ifne 14
        12: .line 932
            aload 0 /* this */
            aload 4 /* falseExpr */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            astore 8 /* falseType */
        start local 8 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType falseType
        13: .line 933
            goto 15
        end local 8 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType falseType
        14: .line 934
      StackMap locals: java.util.Map
      StackMap stack:
            aconst_null
            astore 8 /* falseType */
        start local 8 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType falseType
        15: .line 936
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
      StackMap stack:
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            astore 9 /* falseExitLvarTypes */
        start local 9 // java.util.Map falseExitLvarTypes
        16: .line 937
            aload 0 /* this */
            aload 0 /* this */
            aload 7 /* trueExitLvarTypes */
            aload 9 /* falseExitLvarTypes */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.getUnionTypes:(Ljava/util/Map;Ljava/util/Map;)Ljava/util/Map;
            putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
        17: .line 938
            aload 0 /* this */
            aload 3 /* trueExpr */
            checkcast jdk.nashorn.internal.ir.JoinPredecessor
            aload 7 /* trueExitLvarTypes */
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setConversion:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljava/util/Map;Ljava/util/Map;)V
        18: .line 939
            aload 0 /* this */
            aload 4 /* falseExpr */
            checkcast jdk.nashorn.internal.ir.JoinPredecessor
            aload 9 /* falseExitLvarTypes */
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setConversion:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljava/util/Map;Ljava/util/Map;)V
        19: .line 941
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.typeStack:Ljava/util/Deque;
            aload 6 /* trueType */
            ifnull 21
            aload 8 /* falseType */
            ifnull 20
            aload 6 /* trueType */
            aload 8 /* falseType */
            invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.widestLvarType:(Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            goto 22
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.TernaryNode jdk.nashorn.internal.ir.Expression jdk.nashorn.internal.ir.Expression jdk.nashorn.internal.ir.Expression java.util.Map jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType java.util.Map jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType java.util.Map
      StackMap stack: java.util.Deque
        20: aload 6 /* trueType */
            goto 22
      StackMap locals:
      StackMap stack: java.util.Deque
        21: aload 8 /* falseType */
            invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.assertNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.TernaryNode jdk.nashorn.internal.ir.Expression jdk.nashorn.internal.ir.Expression jdk.nashorn.internal.ir.Expression java.util.Map jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType java.util.Map jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType java.util.Map
      StackMap stack: java.util.Deque jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
        22: invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
        23: .line 942
            iconst_0
            ireturn
        end local 9 // java.util.Map falseExitLvarTypes
        end local 8 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType falseType
        end local 7 // java.util.Map trueExitLvarTypes
        end local 6 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType trueType
        end local 5 // java.util.Map testExitLvarTypes
        end local 4 // jdk.nashorn.internal.ir.Expression falseExpr
        end local 3 // jdk.nashorn.internal.ir.Expression trueExpr
        end local 2 // jdk.nashorn.internal.ir.Expression test
        end local 1 // jdk.nashorn.internal.ir.TernaryNode ternaryNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   24     0                this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0   24     1         ternaryNode  Ljdk/nashorn/internal/ir/TernaryNode;
            1   24     2                test  Ljdk/nashorn/internal/ir/Expression;
            2   24     3            trueExpr  Ljdk/nashorn/internal/ir/Expression;
            3   24     4           falseExpr  Ljdk/nashorn/internal/ir/Expression;
            5   24     5   testExitLvarTypes  Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
            7    8     6            trueType  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            9   24     6            trueType  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
           10   24     7   trueExitLvarTypes  Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
           13   14     8           falseType  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
           15   24     8           falseType  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
           16   24     9  falseExitLvarTypes  Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
    MethodParameters:
             Name  Flags
      ternaryNode  final

  private static <T> T assertNotNull();
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Object t
         0: .line 946
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
            ifne 1
            aload 0 /* t */
            ifnonnull 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 947
      StackMap locals:
      StackMap stack:
            aload 0 /* t */
            areturn
        end local 0 // java.lang.Object t
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0     t  TT;
    Signature: <T:Ljava/lang/Object;>(TT;)TT;
    MethodParameters:
      Name  Flags
      t     final

  private void enterTestFirstLoop(jdk.nashorn.internal.ir.LoopNode, jdk.nashorn.internal.ir.JoinPredecessorExpression, jdk.nashorn.internal.ir.Expression, boolean);
    descriptor: (Ljdk/nashorn/internal/ir/LoopNode;Ljdk/nashorn/internal/ir/JoinPredecessorExpression;Ljdk/nashorn/internal/ir/Expression;Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=12, args_size=5
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.LoopNode loopNode
        start local 2 // jdk.nashorn.internal.ir.JoinPredecessorExpression modify
        start local 3 // jdk.nashorn.internal.ir.Expression iteratorValues
        start local 4 // boolean iteratorValuesAreObject
         0: .line 952
            aload 1 /* loopNode */
            invokevirtual jdk.nashorn.internal.ir.LoopNode.getTest:()Ljdk/nashorn/internal/ir/JoinPredecessorExpression;
            astore 5 /* test */
        start local 5 // jdk.nashorn.internal.ir.JoinPredecessorExpression test
         1: .line 953
            aload 5 /* test */
            invokestatic jdk.nashorn.internal.ir.Expression.isAlwaysFalse:(Ljdk/nashorn/internal/ir/Expression;)Z
            ifeq 4
         2: .line 954
            aload 0 /* this */
            aload 5 /* test */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpressionOnEmptyStack:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            pop
         3: .line 955
            return
         4: .line 958
      StackMap locals: jdk.nashorn.internal.ir.JoinPredecessorExpression
      StackMap stack:
            aload 1 /* loopNode */
            invokevirtual jdk.nashorn.internal.ir.LoopNode.getContinueLabel:()Ljdk/nashorn/internal/codegen/Label;
            astore 6 /* continueLabel */
        start local 6 // jdk.nashorn.internal.codegen.Label continueLabel
         5: .line 959
            aload 1 /* loopNode */
            invokevirtual jdk.nashorn.internal.ir.LoopNode.getBreakLabel:()Ljdk/nashorn/internal/codegen/Label;
            astore 7 /* breakLabel */
        start local 7 // jdk.nashorn.internal.codegen.Label breakLabel
         6: .line 961
            aload 2 /* modify */
            ifnonnull 7
            aload 6 /* continueLabel */
            goto 8
      StackMap locals: jdk.nashorn.internal.codegen.Label jdk.nashorn.internal.codegen.Label
      StackMap stack:
         7: new jdk.nashorn.internal.codegen.Label
            dup
            ldc ""
            invokespecial jdk.nashorn.internal.codegen.Label.<init>:(Ljava/lang/String;)V
      StackMap locals:
      StackMap stack: jdk.nashorn.internal.codegen.Label
         8: astore 8 /* repeatLabel */
        start local 8 // jdk.nashorn.internal.codegen.Label repeatLabel
         9: .line 962
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            astore 9 /* beforeLoopTypes */
        start local 9 // java.util.Map beforeLoopTypes
        10: .line 964
      StackMap locals: jdk.nashorn.internal.codegen.Label java.util.Map
      StackMap stack:
            aload 0 /* this */
            aload 1 /* loopNode */
            aload 8 /* repeatLabel */
            aload 9 /* beforeLoopTypes */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;Ljava/util/Map;)V
        11: .line 965
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            astore 10 /* beforeRepeatTypes */
        start local 10 // java.util.Map beforeRepeatTypes
        12: .line 966
            aload 5 /* test */
            ifnull 14
        13: .line 967
            aload 0 /* this */
            aload 5 /* test */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpressionOnEmptyStack:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            pop
        14: .line 969
      StackMap locals: java.util.Map
      StackMap stack:
            aload 5 /* test */
            invokestatic jdk.nashorn.internal.ir.Expression.isAlwaysTrue:(Ljdk/nashorn/internal/ir/Expression;)Z
            ifne 16
        15: .line 970
            aload 0 /* this */
            aload 5 /* test */
            aload 7 /* breakLabel */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
        16: .line 972
      StackMap locals:
      StackMap stack:
            aload 3 /* iteratorValues */
            instanceof jdk.nashorn.internal.ir.IdentNode
            ifeq 21
        17: .line 973
            aload 3 /* iteratorValues */
            checkcast jdk.nashorn.internal.ir.IdentNode
            astore 11 /* ident */
        start local 11 // jdk.nashorn.internal.ir.IdentNode ident
        18: .line 977
            aload 0 /* this */
            aload 11 /* ident */
            iload 4 /* iteratorValuesAreObject */
            ifeq 19
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.OBJECT:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            goto 20
        19: .line 978
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.LoopNode jdk.nashorn.internal.ir.JoinPredecessorExpression jdk.nashorn.internal.ir.Expression int jdk.nashorn.internal.ir.JoinPredecessorExpression jdk.nashorn.internal.codegen.Label jdk.nashorn.internal.codegen.Label jdk.nashorn.internal.codegen.Label java.util.Map java.util.Map jdk.nashorn.internal.ir.IdentNode
      StackMap stack: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.IdentNode
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.compiler:Ljdk/nashorn/internal/codegen/Compiler;
            aload 11 /* ident */
            invokevirtual jdk.nashorn.internal.codegen.Compiler.getOptimisticType:(Ljdk/nashorn/internal/ir/Optimistic;)Ljdk/nashorn/internal/codegen/types/Type;
            invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.toLvarType:(Ljdk/nashorn/internal/codegen/types/Type;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
        20: .line 977
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.LoopNode jdk.nashorn.internal.ir.JoinPredecessorExpression jdk.nashorn.internal.ir.Expression int jdk.nashorn.internal.ir.JoinPredecessorExpression jdk.nashorn.internal.codegen.Label jdk.nashorn.internal.codegen.Label jdk.nashorn.internal.codegen.Label java.util.Map java.util.Map jdk.nashorn.internal.ir.IdentNode
      StackMap stack: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.IdentNode jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.onAssignment:(Ljdk/nashorn/internal/ir/IdentNode;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
        end local 11 // jdk.nashorn.internal.ir.IdentNode ident
        21: .line 980
      StackMap locals:
      StackMap stack:
            aload 1 /* loopNode */
            invokevirtual jdk.nashorn.internal.ir.LoopNode.getBody:()Ljdk/nashorn/internal/ir/Block;
            astore 11 /* body */
        start local 11 // jdk.nashorn.internal.ir.Block body
        22: .line 981
            aload 11 /* body */
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.ir.Block.accept:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljdk/nashorn/internal/ir/Node;
            pop
        23: .line 982
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
            ifeq 25
        24: .line 983
            aload 0 /* this */
            aload 11 /* body */
            aload 6 /* continueLabel */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
        25: .line 985
      StackMap locals: jdk.nashorn.internal.ir.Block
      StackMap stack:
            aload 0 /* this */
            aload 6 /* continueLabel */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.joinOnLabel:(Ljdk/nashorn/internal/codegen/Label;)V
        26: .line 986
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
            ifne 28
        27: .line 987
            goto 38
        28: .line 989
      StackMap locals:
      StackMap stack:
            aload 2 /* modify */
            ifnull 32
        29: .line 990
            aload 0 /* this */
            aload 2 /* modify */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpressionOnEmptyStack:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            pop
        30: .line 991
            aload 0 /* this */
            aload 2 /* modify */
            aload 8 /* repeatLabel */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
        31: .line 992
            aload 0 /* this */
            aload 8 /* repeatLabel */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.joinOnLabel:(Ljdk/nashorn/internal/codegen/Label;)V
        32: .line 994
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            aload 10 /* beforeRepeatTypes */
            invokeinterface java.util.Map.equals:(Ljava/lang/Object;)Z
            ifeq 34
        33: .line 995
            goto 38
        34: .line 998
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 6 /* continueLabel */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.resetJoinPoint:(Ljdk/nashorn/internal/codegen/Label;)V
        35: .line 999
            aload 0 /* this */
            aload 7 /* breakLabel */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.resetJoinPoint:(Ljdk/nashorn/internal/codegen/Label;)V
        36: .line 1000
            aload 0 /* this */
            aload 8 /* repeatLabel */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.resetJoinPoint:(Ljdk/nashorn/internal/codegen/Label;)V
        end local 11 // jdk.nashorn.internal.ir.Block body
        end local 10 // java.util.Map beforeRepeatTypes
        37: .line 963
            goto 10
        38: .line 1003
      StackMap locals:
      StackMap stack:
            aload 5 /* test */
            invokestatic jdk.nashorn.internal.ir.Expression.isAlwaysTrue:(Ljdk/nashorn/internal/ir/Expression;)Z
            ifeq 40
            aload 3 /* iteratorValues */
            ifnonnull 40
        39: .line 1004
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.doesNotContinueSequentially:()V
        40: .line 1007
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* loopNode */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.leaveBreakable:(Ljdk/nashorn/internal/ir/BreakableNode;)V
        41: .line 1008
            return
        end local 9 // java.util.Map beforeLoopTypes
        end local 8 // jdk.nashorn.internal.codegen.Label repeatLabel
        end local 7 // jdk.nashorn.internal.codegen.Label breakLabel
        end local 6 // jdk.nashorn.internal.codegen.Label continueLabel
        end local 5 // jdk.nashorn.internal.ir.JoinPredecessorExpression test
        end local 4 // boolean iteratorValuesAreObject
        end local 3 // jdk.nashorn.internal.ir.Expression iteratorValues
        end local 2 // jdk.nashorn.internal.ir.JoinPredecessorExpression modify
        end local 1 // jdk.nashorn.internal.ir.LoopNode loopNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0   42     0                     this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0   42     1                 loopNode  Ljdk/nashorn/internal/ir/LoopNode;
            0   42     2                   modify  Ljdk/nashorn/internal/ir/JoinPredecessorExpression;
            0   42     3           iteratorValues  Ljdk/nashorn/internal/ir/Expression;
            0   42     4  iteratorValuesAreObject  Z
            1   42     5                     test  Ljdk/nashorn/internal/ir/JoinPredecessorExpression;
            5   42     6            continueLabel  Ljdk/nashorn/internal/codegen/Label;
            6   42     7               breakLabel  Ljdk/nashorn/internal/codegen/Label;
            9   42     8              repeatLabel  Ljdk/nashorn/internal/codegen/Label;
           10   42     9          beforeLoopTypes  Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
           12   37    10        beforeRepeatTypes  Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
           18   21    11                    ident  Ljdk/nashorn/internal/ir/IdentNode;
           22   37    11                     body  Ljdk/nashorn/internal/ir/Block;
    MethodParameters:
                         Name  Flags
      loopNode                 final
      modify                   final
      iteratorValues           final
      iteratorValuesAreObject  final

  public boolean enterThrowNode(jdk.nashorn.internal.ir.ThrowNode);
    descriptor: (Ljdk/nashorn/internal/ir/ThrowNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.ThrowNode throwNode
         0: .line 1012
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
            ifne 2
         1: .line 1013
            iconst_0
            ireturn
         2: .line 1016
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* throwNode */
            invokevirtual jdk.nashorn.internal.ir.ThrowNode.getExpression:()Ljdk/nashorn/internal/ir/Expression;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpressionOnEmptyStack:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            pop
         3: .line 1017
            aload 0 /* this */
            aload 1 /* throwNode */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToCatchBlock:(Ljdk/nashorn/internal/ir/JoinPredecessor;)V
         4: .line 1018
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.doesNotContinueSequentially:()V
         5: .line 1019
            iconst_0
            ireturn
        end local 1 // jdk.nashorn.internal.ir.ThrowNode throwNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0       this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    6     1  throwNode  Ljdk/nashorn/internal/ir/ThrowNode;
    MethodParameters:
           Name  Flags
      throwNode  final

  public boolean enterTryNode(jdk.nashorn.internal.ir.TryNode);
    descriptor: (Ljdk/nashorn/internal/ir/TryNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=12, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.TryNode tryNode
         0: .line 1024
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
            ifne 2
         1: .line 1025
            iconst_0
            ireturn
         2: .line 1029
      StackMap locals:
      StackMap stack:
            new jdk.nashorn.internal.codegen.Label
            dup
            ldc ""
            invokespecial jdk.nashorn.internal.codegen.Label.<init>:(Ljava/lang/String;)V
            astore 2 /* catchLabel */
        start local 2 // jdk.nashorn.internal.codegen.Label catchLabel
         3: .line 1030
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.catchLabels:Ljava/util/Deque;
            aload 2 /* catchLabel */
            invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
         4: .line 1033
            aload 0 /* this */
            aload 1 /* tryNode */
            aload 2 /* catchLabel */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
         5: .line 1035
            aload 1 /* tryNode */
            invokevirtual jdk.nashorn.internal.ir.TryNode.getBody:()Ljdk/nashorn/internal/ir/Block;
            astore 3 /* body */
        start local 3 // jdk.nashorn.internal.ir.Block body
         6: .line 1036
            aload 3 /* body */
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.ir.Block.accept:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljdk/nashorn/internal/ir/Node;
            pop
         7: .line 1037
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.catchLabels:Ljava/util/Deque;
            invokeinterface java.util.Deque.pop:()Ljava/lang/Object;
            pop
         8: .line 1040
            new jdk.nashorn.internal.codegen.Label
            dup
            ldc ""
            invokespecial jdk.nashorn.internal.codegen.Label.<init>:(Ljava/lang/String;)V
            astore 4 /* endLabel */
        start local 4 // jdk.nashorn.internal.codegen.Label endLabel
         9: .line 1042
            iconst_0
            istore 5 /* canExit */
        start local 5 // boolean canExit
        10: .line 1043
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
            ifeq 13
        11: .line 1044
            aload 0 /* this */
            aload 3 /* body */
            aload 4 /* endLabel */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
        12: .line 1045
            iconst_1
            istore 5 /* canExit */
        13: .line 1047
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.TryNode jdk.nashorn.internal.codegen.Label jdk.nashorn.internal.ir.Block jdk.nashorn.internal.codegen.Label int
      StackMap stack:
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.doesNotContinueSequentially:()V
        14: .line 1049
            aload 1 /* tryNode */
            invokevirtual jdk.nashorn.internal.ir.TryNode.getInlinedFinallies:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 7
            goto 21
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.TryNode jdk.nashorn.internal.codegen.Label jdk.nashorn.internal.ir.Block jdk.nashorn.internal.codegen.Label int top java.util.Iterator
      StackMap stack:
        15: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast jdk.nashorn.internal.ir.Block
            astore 6 /* inlinedFinally */
        start local 6 // jdk.nashorn.internal.ir.Block inlinedFinally
        16: .line 1050
            aload 6 /* inlinedFinally */
            invokestatic jdk.nashorn.internal.ir.TryNode.getLabelledInlinedFinallyBlock:(Ljdk/nashorn/internal/ir/Block;)Ljdk/nashorn/internal/ir/Block;
            astore 8 /* finallyBody */
        start local 8 // jdk.nashorn.internal.ir.Block finallyBody
        17: .line 1051
            aload 0 /* this */
            aload 8 /* finallyBody */
            invokevirtual jdk.nashorn.internal.ir.Block.getEntryLabel:()Ljdk/nashorn/internal/codegen/Label;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.joinOnLabel:(Ljdk/nashorn/internal/codegen/Label;)V
        18: .line 1053
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
            ifeq 21
        19: .line 1054
            aload 8 /* finallyBody */
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.ir.Block.accept:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljdk/nashorn/internal/ir/Node;
            pop
        20: .line 1056
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
            ifne 21
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
            ifeq 21
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        end local 8 // jdk.nashorn.internal.ir.Block finallyBody
        end local 6 // jdk.nashorn.internal.ir.Block inlinedFinally
        21: .line 1049
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 15
        22: .line 1060
            aload 0 /* this */
            aload 2 /* catchLabel */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.joinOnLabel:(Ljdk/nashorn/internal/codegen/Label;)V
        23: .line 1061
            aload 1 /* tryNode */
            invokevirtual jdk.nashorn.internal.ir.TryNode.getCatches:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 7
            goto 38
      StackMap locals:
      StackMap stack:
        24: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast jdk.nashorn.internal.ir.CatchNode
            astore 6 /* catchNode */
        start local 6 // jdk.nashorn.internal.ir.CatchNode catchNode
        25: .line 1062
            aload 6 /* catchNode */
            invokevirtual jdk.nashorn.internal.ir.CatchNode.getExceptionIdentifier:()Ljdk/nashorn/internal/ir/IdentNode;
            astore 8 /* exception */
        start local 8 // jdk.nashorn.internal.ir.IdentNode exception
        26: .line 1063
            aload 0 /* this */
            aload 8 /* exception */
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.OBJECT:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.onAssignment:(Ljdk/nashorn/internal/ir/IdentNode;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
        27: .line 1064
            aload 6 /* catchNode */
            invokevirtual jdk.nashorn.internal.ir.CatchNode.getExceptionCondition:()Ljdk/nashorn/internal/ir/Expression;
            astore 9 /* condition */
        start local 9 // jdk.nashorn.internal.ir.Expression condition
        28: .line 1065
            aload 9 /* condition */
            ifnull 30
        29: .line 1066
            aload 0 /* this */
            aload 9 /* condition */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            pop
        30: .line 1068
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.TryNode jdk.nashorn.internal.codegen.Label jdk.nashorn.internal.ir.Block jdk.nashorn.internal.codegen.Label int jdk.nashorn.internal.ir.CatchNode java.util.Iterator jdk.nashorn.internal.ir.IdentNode jdk.nashorn.internal.ir.Expression
      StackMap stack:
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            astore 10 /* afterConditionTypes */
        start local 10 // java.util.Map afterConditionTypes
        31: .line 1069
            aload 6 /* catchNode */
            invokevirtual jdk.nashorn.internal.ir.CatchNode.getBody:()Ljdk/nashorn/internal/ir/Block;
            astore 11 /* catchBody */
        start local 11 // jdk.nashorn.internal.ir.Block catchBody
        32: .line 1073
            aload 0 /* this */
            iconst_1
            putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
        33: .line 1074
            aload 11 /* catchBody */
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.ir.Block.accept:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljdk/nashorn/internal/ir/Node;
            pop
        34: .line 1075
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
            ifeq 37
        35: .line 1076
            aload 0 /* this */
            aload 11 /* catchBody */
            aload 4 /* endLabel */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
        36: .line 1077
            iconst_1
            istore 5 /* canExit */
        37: .line 1079
      StackMap locals: java.util.Map jdk.nashorn.internal.ir.Block
      StackMap stack:
            aload 0 /* this */
            aload 10 /* afterConditionTypes */
            putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
        end local 11 // jdk.nashorn.internal.ir.Block catchBody
        end local 10 // java.util.Map afterConditionTypes
        end local 9 // jdk.nashorn.internal.ir.Expression condition
        end local 8 // jdk.nashorn.internal.ir.IdentNode exception
        end local 6 // jdk.nashorn.internal.ir.CatchNode catchNode
        38: .line 1061
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.TryNode jdk.nashorn.internal.codegen.Label jdk.nashorn.internal.ir.Block jdk.nashorn.internal.codegen.Label int top java.util.Iterator
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 24
        39: .line 1084
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.doesNotContinueSequentially:()V
        40: .line 1086
            iload 5 /* canExit */
            ifeq 42
        41: .line 1087
            aload 0 /* this */
            aload 4 /* endLabel */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.joinOnLabel:(Ljdk/nashorn/internal/codegen/Label;)V
        42: .line 1090
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.TryNode jdk.nashorn.internal.codegen.Label jdk.nashorn.internal.ir.Block jdk.nashorn.internal.codegen.Label int
      StackMap stack:
            iconst_0
            ireturn
        end local 5 // boolean canExit
        end local 4 // jdk.nashorn.internal.codegen.Label endLabel
        end local 3 // jdk.nashorn.internal.ir.Block body
        end local 2 // jdk.nashorn.internal.codegen.Label catchLabel
        end local 1 // jdk.nashorn.internal.ir.TryNode tryNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   43     0                 this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0   43     1              tryNode  Ljdk/nashorn/internal/ir/TryNode;
            3   43     2           catchLabel  Ljdk/nashorn/internal/codegen/Label;
            6   43     3                 body  Ljdk/nashorn/internal/ir/Block;
            9   43     4             endLabel  Ljdk/nashorn/internal/codegen/Label;
           10   43     5              canExit  Z
           16   21     6       inlinedFinally  Ljdk/nashorn/internal/ir/Block;
           17   21     8          finallyBody  Ljdk/nashorn/internal/ir/Block;
           25   38     6            catchNode  Ljdk/nashorn/internal/ir/CatchNode;
           26   38     8            exception  Ljdk/nashorn/internal/ir/IdentNode;
           28   38     9            condition  Ljdk/nashorn/internal/ir/Expression;
           31   38    10  afterConditionTypes  Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
           32   38    11            catchBody  Ljdk/nashorn/internal/ir/Block;
    MethodParameters:
         Name  Flags
      tryNode  final

  public boolean enterUnaryNode(jdk.nashorn.internal.ir.UnaryNode);
    descriptor: (Ljdk/nashorn/internal/ir/UnaryNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.UnaryNode unaryNode
         0: .line 1096
            aload 1 /* unaryNode */
            invokevirtual jdk.nashorn.internal.ir.UnaryNode.getExpression:()Ljdk/nashorn/internal/ir/Expression;
            astore 2 /* expr */
        start local 2 // jdk.nashorn.internal.ir.Expression expr
         1: .line 1098
            aload 1 /* unaryNode */
            invokevirtual jdk.nashorn.internal.ir.UnaryNode.tokenType:()Ljdk/nashorn/internal/parser/TokenType;
            getstatic jdk.nashorn.internal.parser.TokenType.DELETE:Ljdk/nashorn/internal/parser/TokenType;
            if_acmpne 4
            aload 2 /* expr */
            instanceof jdk.nashorn.internal.ir.IdentNode
            ifeq 4
         2: .line 1100
            aload 1 /* unaryNode */
            invokevirtual jdk.nashorn.internal.ir.UnaryNode.getType:()Ljdk/nashorn/internal/codegen/types/Type;
            invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.toLvarType:(Ljdk/nashorn/internal/codegen/types/Type;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            astore 3 /* unaryType */
        start local 3 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType unaryType
         3: .line 1101
            goto 7
        end local 3 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType unaryType
         4: .line 1102
      StackMap locals: jdk.nashorn.internal.ir.Expression
      StackMap stack:
            aload 1 /* unaryNode */
            aload 0 /* this */
            aload 2 /* expr */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.typeExpression:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$TypeHolderExpression;
            invokevirtual jdk.nashorn.internal.ir.UnaryNode.setExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/ir/UnaryNode;
            invokevirtual jdk.nashorn.internal.ir.UnaryNode.getType:()Ljdk/nashorn/internal/codegen/types/Type;
            invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.toLvarType:(Ljdk/nashorn/internal/codegen/types/Type;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            astore 3 /* unaryType */
        start local 3 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType unaryType
         5: .line 1103
            aload 1 /* unaryNode */
            invokevirtual jdk.nashorn.internal.ir.UnaryNode.isSelfModifying:()Z
            ifeq 7
            aload 2 /* expr */
            instanceof jdk.nashorn.internal.ir.IdentNode
            ifeq 7
         6: .line 1104
            aload 0 /* this */
            aload 2 /* expr */
            checkcast jdk.nashorn.internal.ir.IdentNode
            aload 3 /* unaryType */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.onSelfAssignment:(Ljdk/nashorn/internal/ir/IdentNode;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
         7: .line 1107
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
      StackMap stack:
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.typeStack:Ljava/util/Deque;
            aload 3 /* unaryType */
            invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
         8: .line 1108
            iconst_0
            ireturn
        end local 3 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType unaryType
        end local 2 // jdk.nashorn.internal.ir.Expression expr
        end local 1 // jdk.nashorn.internal.ir.UnaryNode unaryNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0       this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    9     1  unaryNode  Ljdk/nashorn/internal/ir/UnaryNode;
            1    9     2       expr  Ljdk/nashorn/internal/ir/Expression;
            3    4     3  unaryType  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            5    9     3  unaryType  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
    MethodParameters:
           Name  Flags
      unaryNode  final

  public boolean enterVarNode(jdk.nashorn.internal.ir.VarNode);
    descriptor: (Ljdk/nashorn/internal/ir/VarNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.VarNode varNode
         0: .line 1113
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
            ifne 2
         1: .line 1114
            iconst_0
            ireturn
         2: .line 1116
      StackMap locals:
      StackMap stack:
            aload 1 /* varNode */
            invokevirtual jdk.nashorn.internal.ir.VarNode.getInit:()Ljdk/nashorn/internal/ir/Expression;
            astore 2 /* init */
        start local 2 // jdk.nashorn.internal.ir.Expression init
         3: .line 1117
            aload 2 /* init */
            ifnull 5
         4: .line 1118
            aload 0 /* this */
            aload 1 /* varNode */
            invokevirtual jdk.nashorn.internal.ir.VarNode.getName:()Ljdk/nashorn/internal/ir/IdentNode;
            aload 0 /* this */
            aload 2 /* init */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.onAssignment:(Ljdk/nashorn/internal/ir/IdentNode;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
         5: .line 1120
      StackMap locals: jdk.nashorn.internal.ir.Expression
      StackMap stack:
            iconst_0
            ireturn
        end local 2 // jdk.nashorn.internal.ir.Expression init
        end local 1 // jdk.nashorn.internal.ir.VarNode varNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    6     1  varNode  Ljdk/nashorn/internal/ir/VarNode;
            3    6     2     init  Ljdk/nashorn/internal/ir/Expression;
    MethodParameters:
         Name  Flags
      varNode  final

  public boolean enterWhileNode(jdk.nashorn.internal.ir.WhileNode);
    descriptor: (Ljdk/nashorn/internal/ir/WhileNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.WhileNode whileNode
         0: .line 1125
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
            ifne 2
         1: .line 1126
            iconst_0
            ireturn
         2: .line 1128
      StackMap locals:
      StackMap stack:
            aload 1 /* whileNode */
            invokevirtual jdk.nashorn.internal.ir.WhileNode.isDoWhile:()Z
            ifeq 5
         3: .line 1129
            aload 0 /* this */
            aload 1 /* whileNode */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.enterDoWhileLoop:(Ljdk/nashorn/internal/ir/WhileNode;)V
         4: .line 1130
            goto 6
         5: .line 1131
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* whileNode */
            aconst_null
            aconst_null
            iconst_0
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.enterTestFirstLoop:(Ljdk/nashorn/internal/ir/LoopNode;Ljdk/nashorn/internal/ir/JoinPredecessorExpression;Ljdk/nashorn/internal/ir/Expression;Z)V
         6: .line 1133
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // jdk.nashorn.internal.ir.WhileNode whileNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    7     1  whileNode  Ljdk/nashorn/internal/ir/WhileNode;
    MethodParameters:
           Name  Flags
      whileNode  final

  public boolean enterWithNode(jdk.nashorn.internal.ir.WithNode);
    descriptor: (Ljdk/nashorn/internal/ir/WithNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.WithNode withNode
         0: .line 1138
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
            ifeq 3
         1: .line 1139
            aload 0 /* this */
            aload 1 /* withNode */
            invokevirtual jdk.nashorn.internal.ir.WithNode.getExpression:()Ljdk/nashorn/internal/ir/Expression;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            pop
         2: .line 1140
            aload 1 /* withNode */
            invokevirtual jdk.nashorn.internal.ir.WithNode.getBody:()Ljdk/nashorn/internal/ir/Block;
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.ir.Block.accept:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljdk/nashorn/internal/ir/Node;
            pop
         3: .line 1142
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // jdk.nashorn.internal.ir.WithNode withNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    4     1  withNode  Ljdk/nashorn/internal/ir/WithNode;
    MethodParameters:
          Name  Flags
      withNode  final

  private java.util.Map<jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType> getBreakTargetTypes(jdk.nashorn.internal.ir.LexicalContextNode);
    descriptor: (Ljdk/nashorn/internal/ir/LexicalContextNode;)Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=7, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.LexicalContextNode target
         0: .line 1147
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            astore 2 /* types */
        start local 2 // java.util.Map types
         1: .line 1148
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.lc:Ljdk/nashorn/internal/ir/LexicalContext;
            invokevirtual jdk.nashorn.internal.ir.LexicalContext.getAllNodes:()Ljava/util/Iterator;
            astore 3 /* it */
        start local 3 // java.util.Iterator it
         2: goto 14
         3: .line 1149
      StackMap locals: java.util.Map java.util.Iterator
      StackMap stack:
            aload 3 /* it */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast jdk.nashorn.internal.ir.LexicalContextNode
            astore 4 /* node */
        start local 4 // jdk.nashorn.internal.ir.LexicalContextNode node
         4: .line 1150
            aload 4 /* node */
            instanceof jdk.nashorn.internal.ir.Block
            ifeq 12
         5: .line 1151
            aload 4 /* node */
            checkcast jdk.nashorn.internal.ir.Block
            invokevirtual jdk.nashorn.internal.ir.Block.getSymbols:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 6
            goto 11
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.LexicalContextNode java.util.Map java.util.Iterator jdk.nashorn.internal.ir.LexicalContextNode top java.util.Iterator
      StackMap stack:
         6: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast jdk.nashorn.internal.ir.Symbol
            astore 5 /* symbol */
        start local 5 // jdk.nashorn.internal.ir.Symbol symbol
         7: .line 1152
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            aload 5 /* symbol */
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifeq 11
         8: .line 1153
            aload 2 /* types */
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            if_acmpne 10
         9: .line 1154
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.cloneMap:(Ljava/util/Map;)Ljava/util/HashMap;
            astore 2 /* types */
        10: .line 1156
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.LexicalContextNode java.util.Map java.util.Iterator jdk.nashorn.internal.ir.LexicalContextNode jdk.nashorn.internal.ir.Symbol java.util.Iterator
      StackMap stack:
            aload 2 /* types */
            aload 5 /* symbol */
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 5 // jdk.nashorn.internal.ir.Symbol symbol
        11: .line 1151
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.LexicalContextNode java.util.Map java.util.Iterator jdk.nashorn.internal.ir.LexicalContextNode top java.util.Iterator
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
        12: .line 1160
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.LexicalContextNode java.util.Map java.util.Iterator jdk.nashorn.internal.ir.LexicalContextNode
      StackMap stack:
            aload 4 /* node */
            aload 1 /* target */
            if_acmpne 14
        13: .line 1161
            goto 15
        end local 4 // jdk.nashorn.internal.ir.LexicalContextNode node
        14: .line 1148
      StackMap locals:
      StackMap stack:
            aload 3 /* it */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
        end local 3 // java.util.Iterator it
        15: .line 1164
      StackMap locals:
      StackMap stack:
            aload 2 /* types */
            areturn
        end local 2 // java.util.Map types
        end local 1 // jdk.nashorn.internal.ir.LexicalContextNode target
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   16     0    this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0   16     1  target  Ljdk/nashorn/internal/ir/LexicalContextNode;
            1   16     2   types  Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
            2   15     3      it  Ljava/util/Iterator<Ljdk/nashorn/internal/ir/LexicalContextNode;>;
            4   14     4    node  Ljdk/nashorn/internal/ir/LexicalContextNode;
            7   11     5  symbol  Ljdk/nashorn/internal/ir/Symbol;
    Signature: (Ljdk/nashorn/internal/ir/LexicalContextNode;)Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
    MethodParameters:
        Name  Flags
      target  final

  private jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType getLocalVariableType(jdk.nashorn.internal.ir.Symbol);
    descriptor: (Ljdk/nashorn/internal/ir/Symbol;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.Symbol symbol
         0: .line 1177
            aload 0 /* this */
            aload 1 /* symbol */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.getLocalVariableTypeOrNull:(Ljdk/nashorn/internal/ir/Symbol;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            astore 2 /* type */
        start local 2 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType type
         1: .line 1178
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
            ifne 2
            aload 2 /* type */
            ifnonnull 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 1179
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
      StackMap stack:
            aload 2 /* type */
            areturn
        end local 2 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType type
        end local 1 // jdk.nashorn.internal.ir.Symbol symbol
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    3     1  symbol  Ljdk/nashorn/internal/ir/Symbol;
            1    3     2    type  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
    MethodParameters:
        Name  Flags
      symbol  final

  private jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType getLocalVariableTypeOrNull(jdk.nashorn.internal.ir.Symbol);
    descriptor: (Ljdk/nashorn/internal/ir/Symbol;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.Symbol symbol
         0: .line 1191
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            aload 1 /* symbol */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
            areturn
        end local 1 // jdk.nashorn.internal.ir.Symbol symbol
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    1     1  symbol  Ljdk/nashorn/internal/ir/Symbol;
    MethodParameters:
        Name  Flags
      symbol  final

  private jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget getOrCreateJumpTarget(jdk.nashorn.internal.codegen.Label);
    descriptor: (Ljdk/nashorn/internal/codegen/Label;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$JumpTarget;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.codegen.Label label
         0: .line 1195
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpTargets:Ljava/util/Map;
            aload 1 /* label */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget
            astore 2 /* jumpTarget */
        start local 2 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget jumpTarget
         1: .line 1196
            aload 2 /* jumpTarget */
            ifnonnull 3
         2: .line 1197
            aload 0 /* this */
            aload 1 /* label */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.createJumpTarget:(Ljdk/nashorn/internal/codegen/Label;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$JumpTarget;
            astore 2 /* jumpTarget */
         3: .line 1199
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget
      StackMap stack:
            aload 2 /* jumpTarget */
            areturn
        end local 2 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget jumpTarget
        end local 1 // jdk.nashorn.internal.codegen.Label label
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    4     1       label  Ljdk/nashorn/internal/codegen/Label;
            1    4     2  jumpTarget  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$JumpTarget;
    MethodParameters:
       Name  Flags
      label  final

  private void joinOnLabel(jdk.nashorn.internal.codegen.Label);
    descriptor: (Ljdk/nashorn/internal/codegen/Label;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.codegen.Label label
         0: .line 1208
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpTargets:Ljava/util/Map;
            aload 1 /* label */
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget
            astore 2 /* jumpTarget */
        start local 2 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget jumpTarget
         1: .line 1209
            aload 2 /* jumpTarget */
            ifnonnull 3
         2: .line 1210
            return
         3: .line 1212
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget
      StackMap stack:
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
            ifne 4
            aload 2 /* jumpTarget */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget.origins:Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 4
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         4: .line 1213
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
         5: .line 1214
            aload 0 /* this */
            aload 0 /* this */
            aload 2 /* jumpTarget */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget.types:Ljava/util/Map;
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.getUnionTypes:(Ljava/util/Map;Ljava/util/Map;)Ljava/util/Map;
            putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
         6: .line 1215
            aload 2 /* jumpTarget */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget.origins:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 9
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.codegen.Label jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget top java.util.Iterator
      StackMap stack:
         7: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpOrigin
            astore 3 /* jumpOrigin */
        start local 3 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpOrigin jumpOrigin
         8: .line 1216
            aload 0 /* this */
            aload 3 /* jumpOrigin */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpOrigin.node:Ljdk/nashorn/internal/ir/JoinPredecessor;
            aload 3 /* jumpOrigin */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpOrigin.types:Ljava/util/Map;
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setConversion:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljava/util/Map;Ljava/util/Map;)V
        end local 3 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpOrigin jumpOrigin
         9: .line 1215
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 7
        10: .line 1218
            return
        end local 2 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget jumpTarget
        end local 1 // jdk.nashorn.internal.codegen.Label label
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   11     0        this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0   11     1       label  Ljdk/nashorn/internal/codegen/Label;
            1   11     2  jumpTarget  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$JumpTarget;
            8    9     3  jumpOrigin  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$JumpOrigin;
    MethodParameters:
       Name  Flags
      label  final

  private void jumpToCatchBlock(jdk.nashorn.internal.ir.JoinPredecessor);
    descriptor: (Ljdk/nashorn/internal/ir/JoinPredecessor;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.JoinPredecessor jumpOrigin
         0: .line 1224
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.catchLabels:Ljava/util/Deque;
            invokeinterface java.util.Deque.peek:()Ljava/lang/Object;
            checkcast jdk.nashorn.internal.codegen.Label
            astore 2 /* currentCatchLabel */
        start local 2 // jdk.nashorn.internal.codegen.Label currentCatchLabel
         1: .line 1225
            aload 2 /* currentCatchLabel */
            ifnull 3
         2: .line 1226
            aload 0 /* this */
            aload 1 /* jumpOrigin */
            aload 2 /* currentCatchLabel */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
         3: .line 1228
      StackMap locals: jdk.nashorn.internal.codegen.Label
      StackMap stack:
            return
        end local 2 // jdk.nashorn.internal.codegen.Label currentCatchLabel
        end local 1 // jdk.nashorn.internal.ir.JoinPredecessor jumpOrigin
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    4     0               this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    4     1         jumpOrigin  Ljdk/nashorn/internal/ir/JoinPredecessor;
            1    4     2  currentCatchLabel  Ljdk/nashorn/internal/codegen/Label;
    MethodParameters:
            Name  Flags
      jumpOrigin  final

  private void jumpToLabel(jdk.nashorn.internal.ir.JoinPredecessor, jdk.nashorn.internal.codegen.Label);
    descriptor: (Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.JoinPredecessor jumpOrigin
        start local 2 // jdk.nashorn.internal.codegen.Label label
         0: .line 1231
            aload 0 /* this */
            aload 1 /* jumpOrigin */
            aload 2 /* label */
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;Ljava/util/Map;)V
         1: .line 1232
            return
        end local 2 // jdk.nashorn.internal.codegen.Label label
        end local 1 // jdk.nashorn.internal.ir.JoinPredecessor jumpOrigin
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    2     1  jumpOrigin  Ljdk/nashorn/internal/ir/JoinPredecessor;
            0    2     2       label  Ljdk/nashorn/internal/codegen/Label;
    MethodParameters:
            Name  Flags
      jumpOrigin  final
      label       final

  private void jumpToLabel(jdk.nashorn.internal.ir.JoinPredecessor, jdk.nashorn.internal.codegen.Label, java.util.Map<jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType>);
    descriptor: (Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;Ljava/util/Map;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.JoinPredecessor jumpOrigin
        start local 2 // jdk.nashorn.internal.codegen.Label label
        start local 3 // java.util.Map types
         0: .line 1235
            aload 0 /* this */
            aload 2 /* label */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.getOrCreateJumpTarget:(Ljdk/nashorn/internal/codegen/Label;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$JumpTarget;
            aload 1 /* jumpOrigin */
            aload 3 /* types */
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget.addOrigin:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljava/util/Map;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;)V
         1: .line 1236
            return
        end local 3 // java.util.Map types
        end local 2 // jdk.nashorn.internal.codegen.Label label
        end local 1 // jdk.nashorn.internal.ir.JoinPredecessor jumpOrigin
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    2     1  jumpOrigin  Ljdk/nashorn/internal/ir/JoinPredecessor;
            0    2     2       label  Ljdk/nashorn/internal/codegen/Label;
            0    2     3       types  Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
    Signature: (Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;)V
    MethodParameters:
            Name  Flags
      jumpOrigin  final
      label       final
      types       final

  public jdk.nashorn.internal.ir.Node leaveBlock(jdk.nashorn.internal.ir.Block);
    descriptor: (Ljdk/nashorn/internal/ir/Block;)Ljdk/nashorn/internal/ir/Node;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.Block block
         0: .line 1240
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.lc:Ljdk/nashorn/internal/ir/LexicalContext;
            invokevirtual jdk.nashorn.internal.ir.LexicalContext.isFunctionBody:()Z
            ifeq 5
         1: .line 1241
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
            ifeq 4
         2: .line 1247
            aload 0 /* this */
            aload 1 /* block */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.createSyntheticReturn:(Ljdk/nashorn/internal/ir/Block;)V
         3: .line 1248
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
            ifne 4
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
            ifeq 4
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         4: .line 1252
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.calculateReturnType:()V
         5: .line 1255
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 2 /* cloned */
        start local 2 // boolean cloned
         6: .line 1256
            aload 1 /* block */
            invokevirtual jdk.nashorn.internal.ir.Block.getSymbols:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 20
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.Block int top java.util.Iterator
      StackMap stack:
         7: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast jdk.nashorn.internal.ir.Symbol
            astore 3 /* symbol */
        start local 3 // jdk.nashorn.internal.ir.Symbol symbol
         8: .line 1257
            aload 3 /* symbol */
            invokevirtual jdk.nashorn.internal.ir.Symbol.hasSlot:()Z
            ifeq 20
         9: .line 1259
            aload 3 /* symbol */
            invokevirtual jdk.nashorn.internal.ir.Symbol.isBytecodeLocal:()Z
            ifeq 15
        10: .line 1260
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            aload 3 /* symbol */
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifeq 14
        11: .line 1261
            iload 2 /* cloned */
            ifne 14
        12: .line 1262
            aload 0 /* this */
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.cloneMap:(Ljava/util/Map;)Ljava/util/HashMap;
            putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
        13: .line 1263
            iconst_1
            istore 2 /* cloned */
        14: .line 1266
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.Block int jdk.nashorn.internal.ir.Symbol java.util.Iterator
      StackMap stack:
            aload 0 /* this */
            aload 3 /* symbol */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.invalidateSymbol:(Ljdk/nashorn/internal/ir/Symbol;)V
        15: .line 1269
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.symbolConversions:Ljava/util/Map;
            aload 3 /* symbol */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$SymbolConversions
            astore 5 /* conversions */
        start local 5 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$SymbolConversions conversions
        16: .line 1270
            aload 5 /* conversions */
            ifnull 18
        17: .line 1273
            aload 5 /* conversions */
            aload 3 /* symbol */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$SymbolConversions.calculateTypeLiveness:(Ljdk/nashorn/internal/ir/Symbol;)V
        18: .line 1275
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$SymbolConversions
      StackMap stack:
            aload 3 /* symbol */
            invokevirtual jdk.nashorn.internal.ir.Symbol.slotCount:()I
            ifne 20
        19: .line 1277
            aload 3 /* symbol */
            iconst_0
            invokevirtual jdk.nashorn.internal.ir.Symbol.setNeedsSlot:(Z)Ljdk/nashorn/internal/ir/Symbol;
            pop
        end local 5 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$SymbolConversions conversions
        end local 3 // jdk.nashorn.internal.ir.Symbol symbol
        20: .line 1256
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.Block int top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 7
        21: .line 1282
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
            ifeq 25
        22: .line 1284
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.lc:Ljdk/nashorn/internal/ir/LexicalContext;
            invokevirtual jdk.nashorn.internal.ir.LexicalContext.getCurrentBlockLabelNode:()Ljdk/nashorn/internal/ir/LabelNode;
            astore 3 /* labelNode */
        start local 3 // jdk.nashorn.internal.ir.LabelNode labelNode
        23: .line 1285
            aload 3 /* labelNode */
            ifnull 25
        24: .line 1286
            aload 0 /* this */
            aload 3 /* labelNode */
            aload 1 /* block */
            invokevirtual jdk.nashorn.internal.ir.Block.getBreakLabel:()Ljdk/nashorn/internal/codegen/Label;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
        end local 3 // jdk.nashorn.internal.ir.LabelNode labelNode
        25: .line 1289
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.Block int
      StackMap stack:
            aload 0 /* this */
            aload 1 /* block */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.leaveBreakable:(Ljdk/nashorn/internal/ir/BreakableNode;)V
        26: .line 1290
            aload 1 /* block */
            areturn
        end local 2 // boolean cloned
        end local 1 // jdk.nashorn.internal.ir.Block block
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   27     0         this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0   27     1        block  Ljdk/nashorn/internal/ir/Block;
            6   27     2       cloned  Z
            8   20     3       symbol  Ljdk/nashorn/internal/ir/Symbol;
           16   20     5  conversions  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$SymbolConversions;
           23   25     3    labelNode  Ljdk/nashorn/internal/ir/LabelNode;
    MethodParameters:
       Name  Flags
      block  final

  private void calculateReturnType();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
         0: .line 1297
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.returnType:Ljdk/nashorn/internal/codegen/types/Type;
            invokevirtual jdk.nashorn.internal.codegen.types.Type.isUnknown:()Z
            ifeq 2
         1: .line 1298
            aload 0 /* this */
            getstatic jdk.nashorn.internal.codegen.types.Type.OBJECT:Ljdk/nashorn/internal/codegen/types/Type;
            putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.returnType:Ljdk/nashorn/internal/codegen/types/Type;
         2: .line 1300
      StackMap locals:
      StackMap stack:
            return
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;

  private void createSyntheticReturn(jdk.nashorn.internal.ir.Block);
    descriptor: (Ljdk/nashorn/internal/ir/Block;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=9, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.Block body
         0: .line 1303
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.lc:Ljdk/nashorn/internal/ir/LexicalContext;
            invokevirtual jdk.nashorn.internal.ir.LexicalContext.getCurrentFunction:()Ljdk/nashorn/internal/ir/FunctionNode;
            astore 2 /* functionNode */
        start local 2 // jdk.nashorn.internal.ir.FunctionNode functionNode
         1: .line 1304
            aload 2 /* functionNode */
            invokevirtual jdk.nashorn.internal.ir.FunctionNode.getToken:()J
            lstore 3 /* token */
        start local 3 // long token
         2: .line 1305
            aload 2 /* functionNode */
            invokevirtual jdk.nashorn.internal.ir.FunctionNode.getFinish:()I
            istore 5 /* finish */
        start local 5 // int finish
         3: .line 1306
            aload 1 /* body */
            invokevirtual jdk.nashorn.internal.ir.Block.getStatements:()Ljava/util/List;
            astore 6 /* statements */
        start local 6 // java.util.List statements
         4: .line 1307
            aload 6 /* statements */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 5
            aload 2 /* functionNode */
            invokevirtual jdk.nashorn.internal.ir.FunctionNode.getLineNumber:()I
            goto 6
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.Block jdk.nashorn.internal.ir.FunctionNode long int java.util.List
      StackMap stack:
         5: aload 6 /* statements */
            aload 6 /* statements */
            invokeinterface java.util.List.size:()I
            iconst_1
            isub
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast jdk.nashorn.internal.ir.Statement
            invokevirtual jdk.nashorn.internal.ir.Statement.getLineNumber:()I
      StackMap locals:
      StackMap stack: int
         6: istore 7 /* lineNumber */
        start local 7 // int lineNumber
         7: .line 1309
            aload 2 /* functionNode */
            invokevirtual jdk.nashorn.internal.ir.FunctionNode.isProgram:()Z
            ifeq 10
         8: .line 1310
            new jdk.nashorn.internal.ir.IdentNode
            dup
            lload 3 /* token */
            iload 5 /* finish */
            getstatic jdk.nashorn.internal.codegen.CompilerConstants.RETURN:Ljdk/nashorn/internal/codegen/CompilerConstants;
            invokevirtual jdk.nashorn.internal.codegen.CompilerConstants.symbolName:()Ljava/lang/String;
            invokespecial jdk.nashorn.internal.ir.IdentNode.<init>:(JILjava/lang/String;)V
            aload 2 /* functionNode */
            getstatic jdk.nashorn.internal.codegen.CompilerConstants.RETURN:Ljdk/nashorn/internal/codegen/CompilerConstants;
            invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.getCompilerConstantSymbol:(Ljdk/nashorn/internal/ir/FunctionNode;Ljdk/nashorn/internal/codegen/CompilerConstants;)Ljdk/nashorn/internal/ir/Symbol;
            invokevirtual jdk.nashorn.internal.ir.IdentNode.setSymbol:(Ljdk/nashorn/internal/ir/Symbol;)Ljdk/nashorn/internal/ir/IdentNode;
            astore 8 /* returnExpr */
        start local 8 // jdk.nashorn.internal.ir.IdentNode returnExpr
         9: .line 1311
            goto 11
        end local 8 // jdk.nashorn.internal.ir.IdentNode returnExpr
        10: .line 1312
      StackMap locals: int
      StackMap stack:
            aconst_null
            astore 8 /* returnExpr */
        start local 8 // jdk.nashorn.internal.ir.IdentNode returnExpr
        11: .line 1314
      StackMap locals: jdk.nashorn.internal.ir.IdentNode
      StackMap stack:
            aload 0 /* this */
            new jdk.nashorn.internal.ir.ReturnNode
            dup
            iload 7 /* lineNumber */
            lload 3 /* token */
            iload 5 /* finish */
            aload 8 /* returnExpr */
            invokespecial jdk.nashorn.internal.ir.ReturnNode.<init>:(IJILjdk/nashorn/internal/ir/Expression;)V
            putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.syntheticReturn:Ljdk/nashorn/internal/ir/ReturnNode;
        12: .line 1315
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.syntheticReturn:Ljdk/nashorn/internal/ir/ReturnNode;
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.ir.ReturnNode.accept:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljdk/nashorn/internal/ir/Node;
            pop
        13: .line 1316
            return
        end local 8 // jdk.nashorn.internal.ir.IdentNode returnExpr
        end local 7 // int lineNumber
        end local 6 // java.util.List statements
        end local 5 // int finish
        end local 3 // long token
        end local 2 // jdk.nashorn.internal.ir.FunctionNode functionNode
        end local 1 // jdk.nashorn.internal.ir.Block body
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   14     0          this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0   14     1          body  Ljdk/nashorn/internal/ir/Block;
            1   14     2  functionNode  Ljdk/nashorn/internal/ir/FunctionNode;
            2   14     3         token  J
            3   14     5        finish  I
            4   14     6    statements  Ljava/util/List<Ljdk/nashorn/internal/ir/Statement;>;
            7   14     7    lineNumber  I
            9   10     8    returnExpr  Ljdk/nashorn/internal/ir/IdentNode;
           11   14     8    returnExpr  Ljdk/nashorn/internal/ir/IdentNode;
    MethodParameters:
      Name  Flags
      body  final

  private void leaveBreakable(jdk.nashorn.internal.ir.BreakableNode);
    descriptor: (Ljdk/nashorn/internal/ir/BreakableNode;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.BreakableNode breakable
         0: .line 1324
            aload 0 /* this */
            aload 1 /* breakable */
            invokeinterface jdk.nashorn.internal.ir.BreakableNode.getBreakLabel:()Ljdk/nashorn/internal/codegen/Label;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.joinOnLabel:(Ljdk/nashorn/internal/codegen/Label;)V
         1: .line 1325
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.assertTypeStackIsEmpty:()V
         2: .line 1326
            return
        end local 1 // jdk.nashorn.internal.ir.BreakableNode breakable
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    3     1  breakable  Ljdk/nashorn/internal/ir/BreakableNode;
    MethodParameters:
           Name  Flags
      breakable  final

  public jdk.nashorn.internal.ir.Node leaveFunctionNode(jdk.nashorn.internal.ir.FunctionNode);
    descriptor: (Ljdk/nashorn/internal/ir/FunctionNode;)Ljdk/nashorn/internal/ir/Node;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.FunctionNode functionNode
         0: .line 1332
            aload 1 /* functionNode */
            astore 2 /* newFunction */
        start local 2 // jdk.nashorn.internal.ir.FunctionNode newFunction
         1: .line 1333
            new jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$1
            dup
            aload 0 /* this */
            invokespecial jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$1.<init>:(Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;)V
            astore 3 /* applyChangesVisitor */
        start local 3 // jdk.nashorn.internal.ir.visitor.SimpleNodeVisitor applyChangesVisitor
         2: .line 1482
            aload 2 /* newFunction */
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.lc:Ljdk/nashorn/internal/ir/LexicalContext;
            aload 2 /* newFunction */
            invokevirtual jdk.nashorn.internal.ir.FunctionNode.getBody:()Ljdk/nashorn/internal/ir/Block;
            aload 3 /* applyChangesVisitor */
            invokevirtual jdk.nashorn.internal.ir.Block.accept:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljdk/nashorn/internal/ir/Node;
            checkcast jdk.nashorn.internal.ir.Block
            invokevirtual jdk.nashorn.internal.ir.FunctionNode.setBody:(Ljdk/nashorn/internal/ir/LexicalContext;Ljdk/nashorn/internal/ir/Block;)Ljdk/nashorn/internal/ir/FunctionNode;
            astore 2 /* newFunction */
         3: .line 1483
            aload 2 /* newFunction */
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.lc:Ljdk/nashorn/internal/ir/LexicalContext;
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.returnType:Ljdk/nashorn/internal/codegen/types/Type;
            invokevirtual jdk.nashorn.internal.ir.FunctionNode.setReturnType:(Ljdk/nashorn/internal/ir/LexicalContext;Ljdk/nashorn/internal/codegen/types/Type;)Ljdk/nashorn/internal/ir/FunctionNode;
            astore 2 /* newFunction */
         4: .line 1486
            aload 2 /* newFunction */
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.lc:Ljdk/nashorn/internal/ir/LexicalContext;
            aload 2 /* newFunction */
            aload 3 /* applyChangesVisitor */
            invokevirtual jdk.nashorn.internal.ir.FunctionNode.visitParameters:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljava/util/List;
            invokevirtual jdk.nashorn.internal.ir.FunctionNode.setParameters:(Ljdk/nashorn/internal/ir/LexicalContext;Ljava/util/List;)Ljdk/nashorn/internal/ir/FunctionNode;
            astore 2 /* newFunction */
         5: .line 1487
            aload 2 /* newFunction */
            areturn
        end local 3 // jdk.nashorn.internal.ir.visitor.SimpleNodeVisitor applyChangesVisitor
        end local 2 // jdk.nashorn.internal.ir.FunctionNode newFunction
        end local 1 // jdk.nashorn.internal.ir.FunctionNode functionNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    6     0                 this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    6     1         functionNode  Ljdk/nashorn/internal/ir/FunctionNode;
            1    6     2          newFunction  Ljdk/nashorn/internal/ir/FunctionNode;
            2    6     3  applyChangesVisitor  Ljdk/nashorn/internal/ir/visitor/SimpleNodeVisitor;
    MethodParameters:
              Name  Flags
      functionNode  final

  private static jdk.nashorn.internal.ir.Expression createIsUndefined(jdk.nashorn.internal.ir.Expression, jdk.nashorn.internal.ir.Expression, jdk.nashorn.internal.ir.Expression, jdk.nashorn.internal.ir.RuntimeNode$Request);
    descriptor: (Ljdk/nashorn/internal/ir/Expression;Ljdk/nashorn/internal/ir/Expression;Ljdk/nashorn/internal/ir/Expression;Ljdk/nashorn/internal/ir/RuntimeNode$Request;)Ljdk/nashorn/internal/ir/Expression;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=8, locals=4, args_size=4
        start local 0 // jdk.nashorn.internal.ir.Expression parent
        start local 1 // jdk.nashorn.internal.ir.Expression lhs
        start local 2 // jdk.nashorn.internal.ir.Expression rhs
        start local 3 // jdk.nashorn.internal.ir.RuntimeNode$Request request
         0: .line 1491
            aload 1 /* lhs */
            invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.isUndefinedIdent:(Ljdk/nashorn/internal/ir/Expression;)Z
            ifne 1
            aload 2 /* rhs */
            invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.isUndefinedIdent:(Ljdk/nashorn/internal/ir/Expression;)Z
            ifeq 2
         1: .line 1492
      StackMap locals:
      StackMap stack:
            new jdk.nashorn.internal.ir.RuntimeNode
            dup
            aload 0 /* parent */
            aload 3 /* request */
            iconst_2
            anewarray jdk.nashorn.internal.ir.Expression
            dup
            iconst_0
            aload 1 /* lhs */
            aastore
            dup
            iconst_1
            aload 2 /* rhs */
            aastore
            invokespecial jdk.nashorn.internal.ir.RuntimeNode.<init>:(Ljdk/nashorn/internal/ir/Expression;Ljdk/nashorn/internal/ir/RuntimeNode$Request;[Ljdk/nashorn/internal/ir/Expression;)V
            areturn
         2: .line 1494
      StackMap locals:
      StackMap stack:
            aload 0 /* parent */
            areturn
        end local 3 // jdk.nashorn.internal.ir.RuntimeNode$Request request
        end local 2 // jdk.nashorn.internal.ir.Expression rhs
        end local 1 // jdk.nashorn.internal.ir.Expression lhs
        end local 0 // jdk.nashorn.internal.ir.Expression parent
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0   parent  Ljdk/nashorn/internal/ir/Expression;
            0    3     1      lhs  Ljdk/nashorn/internal/ir/Expression;
            0    3     2      rhs  Ljdk/nashorn/internal/ir/Expression;
            0    3     3  request  Ljdk/nashorn/internal/ir/RuntimeNode$Request;
    MethodParameters:
         Name  Flags
      parent   final
      lhs      final
      rhs      final
      request  final

  private static boolean isUndefinedIdent(jdk.nashorn.internal.ir.Expression);
    descriptor: (Ljdk/nashorn/internal/ir/Expression;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // jdk.nashorn.internal.ir.Expression expr
         0: .line 1498
            aload 0 /* expr */
            instanceof jdk.nashorn.internal.ir.IdentNode
            ifeq 1
            ldc "undefined"
            aload 0 /* expr */
            checkcast jdk.nashorn.internal.ir.IdentNode
            invokevirtual jdk.nashorn.internal.ir.IdentNode.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // jdk.nashorn.internal.ir.Expression expr
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  expr  Ljdk/nashorn/internal/ir/Expression;
    MethodParameters:
      Name  Flags
      expr  final

  private boolean identIsDeadAndHasNoLiveConversions(jdk.nashorn.internal.ir.IdentNode);
    descriptor: (Ljdk/nashorn/internal/ir/IdentNode;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.IdentNode identNode
         0: .line 1502
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableConversions:Ljava/util/Map;
            aload 1 /* identNode */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast jdk.nashorn.internal.ir.LocalVariableConversion
            astore 2 /* conv */
        start local 2 // jdk.nashorn.internal.ir.LocalVariableConversion conv
         1: .line 1503
            aload 2 /* conv */
            ifnull 2
            aload 2 /* conv */
            invokevirtual jdk.nashorn.internal.ir.LocalVariableConversion.isLive:()Z
            ifeq 2
            iconst_0
            ireturn
      StackMap locals: jdk.nashorn.internal.ir.LocalVariableConversion
      StackMap stack:
         2: iconst_1
            ireturn
        end local 2 // jdk.nashorn.internal.ir.LocalVariableConversion conv
        end local 1 // jdk.nashorn.internal.ir.IdentNode identNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    3     1  identNode  Ljdk/nashorn/internal/ir/IdentNode;
            1    3     2       conv  Ljdk/nashorn/internal/ir/LocalVariableConversion;
    MethodParameters:
           Name  Flags
      identNode  final

  private void onAssignment(jdk.nashorn.internal.ir.IdentNode, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType);
    descriptor: (Ljdk/nashorn/internal/ir/IdentNode;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.IdentNode identNode
        start local 2 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType type
         0: .line 1507
            aload 1 /* identNode */
            invokevirtual jdk.nashorn.internal.ir.IdentNode.getSymbol:()Ljdk/nashorn/internal/ir/Symbol;
            astore 3 /* symbol */
        start local 3 // jdk.nashorn.internal.ir.Symbol symbol
         1: .line 1508
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
            ifne 2
            aload 3 /* symbol */
            ifnonnull 2
            new java.lang.AssertionError
            dup
            aload 1 /* identNode */
            invokevirtual jdk.nashorn.internal.ir.IdentNode.getName:()Ljava/lang/String;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         2: .line 1509
      StackMap locals: jdk.nashorn.internal.ir.Symbol
      StackMap stack:
            aload 3 /* symbol */
            invokevirtual jdk.nashorn.internal.ir.Symbol.isBytecodeLocal:()Z
            ifne 4
         3: .line 1510
            return
         4: .line 1512
      StackMap locals:
      StackMap stack:
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
            ifne 5
            aload 2 /* type */
            ifnonnull 5
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         5: .line 1514
      StackMap locals:
      StackMap stack:
            aload 2 /* type */
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.UNDEFINED:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            if_acmpne 9
            aload 0 /* this */
            aload 3 /* symbol */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.getLocalVariableType:(Ljdk/nashorn/internal/ir/Symbol;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.UNDEFINED:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            if_acmpeq 9
         6: .line 1518
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.OBJECT:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            astore 4 /* finalType */
        start local 4 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType finalType
         7: .line 1519
            aload 3 /* symbol */
            sipush 8192
            invokevirtual jdk.nashorn.internal.ir.Symbol.setFlag:(I)Ljdk/nashorn/internal/ir/Symbol;
            pop
         8: .line 1520
            goto 10
        end local 4 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType finalType
         9: .line 1521
      StackMap locals:
      StackMap stack:
            aload 2 /* type */
            astore 4 /* finalType */
        start local 4 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType finalType
        10: .line 1523
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
      StackMap stack:
            aload 0 /* this */
            aload 3 /* symbol */
            aload 4 /* finalType */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setType:(Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
        11: .line 1529
            aload 0 /* this */
            aload 1 /* identNode */
            aload 4 /* finalType */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setIdentifierLvarType:(Ljdk/nashorn/internal/ir/IdentNode;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
        12: .line 1570
            aload 0 /* this */
            aload 1 /* identNode */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToCatchBlock:(Ljdk/nashorn/internal/ir/JoinPredecessor;)V
        13: .line 1571
            return
        end local 4 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType finalType
        end local 3 // jdk.nashorn.internal.ir.Symbol symbol
        end local 2 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType type
        end local 1 // jdk.nashorn.internal.ir.IdentNode identNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   14     0       this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0   14     1  identNode  Ljdk/nashorn/internal/ir/IdentNode;
            0   14     2       type  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            1   14     3     symbol  Ljdk/nashorn/internal/ir/Symbol;
            7    9     4  finalType  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
           10   14     4  finalType  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
    MethodParameters:
           Name  Flags
      identNode  final
      type       final

  private void onSelfAssignment(jdk.nashorn.internal.ir.IdentNode, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType);
    descriptor: (Ljdk/nashorn/internal/ir/IdentNode;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.IdentNode identNode
        start local 2 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType type
         0: .line 1574
            aload 1 /* identNode */
            invokevirtual jdk.nashorn.internal.ir.IdentNode.getSymbol:()Ljdk/nashorn/internal/ir/Symbol;
            astore 3 /* symbol */
        start local 3 // jdk.nashorn.internal.ir.Symbol symbol
         1: .line 1575
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
            ifne 2
            aload 3 /* symbol */
            ifnonnull 2
            new java.lang.AssertionError
            dup
            aload 1 /* identNode */
            invokevirtual jdk.nashorn.internal.ir.IdentNode.getName:()Ljava/lang/String;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         2: .line 1576
      StackMap locals: jdk.nashorn.internal.ir.Symbol
      StackMap stack:
            aload 3 /* symbol */
            invokevirtual jdk.nashorn.internal.ir.Symbol.isBytecodeLocal:()Z
            ifne 4
         3: .line 1577
            return
         4: .line 1580
      StackMap locals:
      StackMap stack:
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
            ifne 6
            aload 2 /* type */
            ifnull 5
            aload 2 /* type */
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.UNDEFINED:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            if_acmpeq 5
            aload 2 /* type */
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.BOOLEAN:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            if_acmpne 6
      StackMap locals:
      StackMap stack:
         5: new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         6: .line 1581
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* symbol */
            aload 2 /* type */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setType:(Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
         7: .line 1582
            aload 0 /* this */
            aload 1 /* identNode */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToCatchBlock:(Ljdk/nashorn/internal/ir/JoinPredecessor;)V
         8: .line 1583
            return
        end local 3 // jdk.nashorn.internal.ir.Symbol symbol
        end local 2 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType type
        end local 1 // jdk.nashorn.internal.ir.IdentNode identNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0       this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    9     1  identNode  Ljdk/nashorn/internal/ir/IdentNode;
            0    9     2       type  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            1    9     3     symbol  Ljdk/nashorn/internal/ir/Symbol;
    MethodParameters:
           Name  Flags
      identNode  final
      type       final

  private void resetJoinPoint(jdk.nashorn.internal.codegen.Label);
    descriptor: (Ljdk/nashorn/internal/codegen/Label;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.codegen.Label label
         0: .line 1586
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpTargets:Ljava/util/Map;
            aload 1 /* label */
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 1587
            return
        end local 1 // jdk.nashorn.internal.codegen.Label label
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    2     1  label  Ljdk/nashorn/internal/codegen/Label;
    MethodParameters:
       Name  Flags
      label  final

  private void setCompilerConstantAsObject(jdk.nashorn.internal.ir.FunctionNode, jdk.nashorn.internal.codegen.CompilerConstants);
    descriptor: (Ljdk/nashorn/internal/ir/FunctionNode;Ljdk/nashorn/internal/codegen/CompilerConstants;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.FunctionNode functionNode
        start local 2 // jdk.nashorn.internal.codegen.CompilerConstants cc
         0: .line 1590
            aload 1 /* functionNode */
            aload 2 /* cc */
            invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.getCompilerConstantSymbol:(Ljdk/nashorn/internal/ir/FunctionNode;Ljdk/nashorn/internal/codegen/CompilerConstants;)Ljdk/nashorn/internal/ir/Symbol;
            astore 3 /* symbol */
        start local 3 // jdk.nashorn.internal.ir.Symbol symbol
         1: .line 1591
            aload 0 /* this */
            aload 3 /* symbol */
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.OBJECT:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setType:(Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
         2: .line 1593
            aload 0 /* this */
            aload 3 /* symbol */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.symbolIsUsed:(Ljdk/nashorn/internal/ir/Symbol;)V
         3: .line 1594
            return
        end local 3 // jdk.nashorn.internal.ir.Symbol symbol
        end local 2 // jdk.nashorn.internal.codegen.CompilerConstants cc
        end local 1 // jdk.nashorn.internal.ir.FunctionNode functionNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0          this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    4     1  functionNode  Ljdk/nashorn/internal/ir/FunctionNode;
            0    4     2            cc  Ljdk/nashorn/internal/codegen/CompilerConstants;
            1    4     3        symbol  Ljdk/nashorn/internal/ir/Symbol;
    MethodParameters:
              Name  Flags
      functionNode  final
      cc            final

  private static jdk.nashorn.internal.ir.Symbol getCompilerConstantSymbol(jdk.nashorn.internal.ir.FunctionNode, jdk.nashorn.internal.codegen.CompilerConstants);
    descriptor: (Ljdk/nashorn/internal/ir/FunctionNode;Ljdk/nashorn/internal/codegen/CompilerConstants;)Ljdk/nashorn/internal/ir/Symbol;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.ir.FunctionNode functionNode
        start local 1 // jdk.nashorn.internal.codegen.CompilerConstants cc
         0: .line 1597
            aload 0 /* functionNode */
            invokevirtual jdk.nashorn.internal.ir.FunctionNode.getBody:()Ljdk/nashorn/internal/ir/Block;
            aload 1 /* cc */
            invokevirtual jdk.nashorn.internal.codegen.CompilerConstants.symbolName:()Ljava/lang/String;
            invokevirtual jdk.nashorn.internal.ir.Block.getExistingSymbol:(Ljava/lang/String;)Ljdk/nashorn/internal/ir/Symbol;
            areturn
        end local 1 // jdk.nashorn.internal.codegen.CompilerConstants cc
        end local 0 // jdk.nashorn.internal.ir.FunctionNode functionNode
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0  functionNode  Ljdk/nashorn/internal/ir/FunctionNode;
            0    1     1            cc  Ljdk/nashorn/internal/codegen/CompilerConstants;
    MethodParameters:
              Name  Flags
      functionNode  final
      cc            final

  private void setConversion(jdk.nashorn.internal.ir.JoinPredecessor, java.util.Map<jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType>, java.util.Map<jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType>);
    descriptor: (Ljdk/nashorn/internal/ir/JoinPredecessor;Ljava/util/Map;Ljava/util/Map;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=9, args_size=4
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.JoinPredecessor node
        start local 2 // java.util.Map branchLvarTypes
        start local 3 // java.util.Map joinLvarTypes
         0: .line 1601
            aload 1 /* node */
            ifnonnull 2
         1: .line 1602
            return
         2: .line 1604
      StackMap locals:
      StackMap stack:
            aload 2 /* branchLvarTypes */
            invokeinterface java.util.Map.isEmpty:()Z
            ifne 3
            aload 3 /* joinLvarTypes */
            invokeinterface java.util.Map.isEmpty:()Z
            ifeq 4
         3: .line 1605
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableConversions:Ljava/util/Map;
            aload 1 /* node */
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 1608
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 4 /* conversion */
        start local 4 // jdk.nashorn.internal.ir.LocalVariableConversion conversion
         5: .line 1609
            aload 1 /* node */
            instanceof jdk.nashorn.internal.ir.IdentNode
            ifeq 9
         6: .line 1612
            aload 1 /* node */
            checkcast jdk.nashorn.internal.ir.IdentNode
            invokevirtual jdk.nashorn.internal.ir.IdentNode.getSymbol:()Ljdk/nashorn/internal/ir/Symbol;
            astore 5 /* symbol */
        start local 5 // jdk.nashorn.internal.ir.Symbol symbol
         7: .line 1613
            aload 0 /* this */
            aload 5 /* symbol */
            aload 2 /* branchLvarTypes */
            aload 5 /* symbol */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
            aload 3 /* joinLvarTypes */
            aconst_null
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.createConversion:(Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;Ljava/util/Map;Ljdk/nashorn/internal/ir/LocalVariableConversion;)Ljdk/nashorn/internal/ir/LocalVariableConversion;
            astore 4 /* conversion */
        end local 5 // jdk.nashorn.internal.ir.Symbol symbol
         8: .line 1614
            goto 15
         9: .line 1615
      StackMap locals: jdk.nashorn.internal.ir.LocalVariableConversion
      StackMap stack:
            aload 2 /* branchLvarTypes */
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 6
            goto 14
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.JoinPredecessor java.util.Map java.util.Map jdk.nashorn.internal.ir.LocalVariableConversion top java.util.Iterator
      StackMap stack:
        10: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 5 /* entry */
        start local 5 // java.util.Map$Entry entry
        11: .line 1616
            aload 5 /* entry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast jdk.nashorn.internal.ir.Symbol
            astore 7 /* symbol */
        start local 7 // jdk.nashorn.internal.ir.Symbol symbol
        12: .line 1617
            aload 5 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
            astore 8 /* branchLvarType */
        start local 8 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType branchLvarType
        13: .line 1618
            aload 0 /* this */
            aload 7 /* symbol */
            aload 8 /* branchLvarType */
            aload 3 /* joinLvarTypes */
            aload 4 /* conversion */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.createConversion:(Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;Ljava/util/Map;Ljdk/nashorn/internal/ir/LocalVariableConversion;)Ljdk/nashorn/internal/ir/LocalVariableConversion;
            astore 4 /* conversion */
        end local 8 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType branchLvarType
        end local 7 // jdk.nashorn.internal.ir.Symbol symbol
        end local 5 // java.util.Map$Entry entry
        14: .line 1615
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 10
        15: .line 1621
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.JoinPredecessor java.util.Map java.util.Map jdk.nashorn.internal.ir.LocalVariableConversion
      StackMap stack:
            aload 4 /* conversion */
            ifnull 18
        16: .line 1622
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableConversions:Ljava/util/Map;
            aload 1 /* node */
            aload 4 /* conversion */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        17: .line 1623
            goto 19
        18: .line 1624
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableConversions:Ljava/util/Map;
            aload 1 /* node */
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        19: .line 1626
      StackMap locals:
      StackMap stack:
            return
        end local 4 // jdk.nashorn.internal.ir.LocalVariableConversion conversion
        end local 3 // java.util.Map joinLvarTypes
        end local 2 // java.util.Map branchLvarTypes
        end local 1 // jdk.nashorn.internal.ir.JoinPredecessor node
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   20     0             this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0   20     1             node  Ljdk/nashorn/internal/ir/JoinPredecessor;
            0   20     2  branchLvarTypes  Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
            0   20     3    joinLvarTypes  Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
            5   20     4       conversion  Ljdk/nashorn/internal/ir/LocalVariableConversion;
            7    8     5           symbol  Ljdk/nashorn/internal/ir/Symbol;
           11   14     5            entry  Ljava/util/Map$Entry<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
           12   14     7           symbol  Ljdk/nashorn/internal/ir/Symbol;
           13   14     8   branchLvarType  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
    Signature: (Ljdk/nashorn/internal/ir/JoinPredecessor;Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;)V
    MethodParameters:
                 Name  Flags
      node             final
      branchLvarTypes  final
      joinLvarTypes    final

  private void setIdentifierLvarType(jdk.nashorn.internal.ir.IdentNode, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType);
    descriptor: (Ljdk/nashorn/internal/ir/IdentNode;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.IdentNode identNode
        start local 2 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType type
         0: .line 1629
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
            ifne 1
            aload 2 /* type */
            ifnonnull 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 1630
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.identifierLvarTypes:Ljava/util/Map;
            aload 1 /* identNode */
            aload 2 /* type */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 1631
            return
        end local 2 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType type
        end local 1 // jdk.nashorn.internal.ir.IdentNode identNode
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    3     1  identNode  Ljdk/nashorn/internal/ir/IdentNode;
            0    3     2       type  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
    MethodParameters:
           Name  Flags
      identNode  final
      type       final

  private void setType(jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType);
    descriptor: (Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.Symbol symbol
        start local 2 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType type
         0: .line 1639
            aload 0 /* this */
            aload 1 /* symbol */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.getLocalVariableTypeOrNull:(Ljdk/nashorn/internal/ir/Symbol;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            aload 2 /* type */
            if_acmpne 2
         1: .line 1640
            return
         2: .line 1642
      StackMap locals:
      StackMap stack:
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
            ifne 3
            aload 1 /* symbol */
            invokevirtual jdk.nashorn.internal.ir.Symbol.hasSlot:()Z
            ifne 3
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         3: .line 1643
      StackMap locals:
      StackMap stack:
            getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
            ifne 4
            aload 1 /* symbol */
            invokevirtual jdk.nashorn.internal.ir.Symbol.isGlobal:()Z
            ifeq 4
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         4: .line 1644
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.cloneOrNewLocalVariableTypes:()V
         5: .line 1645
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            aload 1 /* symbol */
            aload 2 /* type */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         6: .line 1646
            return
        end local 2 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType type
        end local 1 // jdk.nashorn.internal.ir.Symbol symbol
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    7     1  symbol  Ljdk/nashorn/internal/ir/Symbol;
            0    7     2    type  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
    MethodParameters:
        Name  Flags
      symbol  final
      type    final

  private void cloneOrNewLocalVariableTypes();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
         0: .line 1649
            aload 0 /* this */
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            invokeinterface java.util.Map.isEmpty:()Z
            ifeq 1
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            goto 2
      StackMap locals:
      StackMap stack: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator
         1: aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.cloneMap:(Ljava/util/Map;)Ljava/util/HashMap;
      StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator
      StackMap stack: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator java.util.HashMap
         2: putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
         3: .line 1650
            return
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;

  private void invalidateSymbol(jdk.nashorn.internal.ir.Symbol);
    descriptor: (Ljdk/nashorn/internal/ir/Symbol;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.Symbol symbol
         0: .line 1653
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
            aload 1 /* symbol */
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 1654
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.invalidatedSymbols:Ljava/util/Set;
            aload 1 /* symbol */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         2: .line 1655
            return
        end local 1 // jdk.nashorn.internal.ir.Symbol symbol
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    3     1  symbol  Ljdk/nashorn/internal/ir/Symbol;
    MethodParameters:
        Name  Flags
      symbol  final

  private void symbolIsUsed(jdk.nashorn.internal.ir.Symbol);
    descriptor: (Ljdk/nashorn/internal/ir/Symbol;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.Symbol symbol
         0: .line 1664
            aload 1 /* symbol */
            aload 0 /* this */
            aload 1 /* symbol */
            invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.getLocalVariableType:(Ljdk/nashorn/internal/ir/Symbol;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
            invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.symbolIsUsed:(Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
         1: .line 1665
            return
        end local 1 // jdk.nashorn.internal.ir.Symbol symbol
        end local 0 // jdk.nashorn.internal.codegen.LocalVariableTypesCalculator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
            0    2     1  symbol  Ljdk/nashorn/internal/ir/Symbol;
    MethodParameters:
        Name  Flags
      symbol  final
}
SourceFile: "LocalVariableTypesCalculator.java"
NestMembers:
  jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$1  jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpOrigin  jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget  jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType  jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$SymbolConversions  jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$TypeHolderExpression
InnerClasses:
  public abstract Entry = java.util.Map$Entry of java.util.Map
  jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$1
  private JumpOrigin = jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpOrigin of jdk.nashorn.internal.codegen.LocalVariableTypesCalculator
  private JumpTarget = jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget of jdk.nashorn.internal.codegen.LocalVariableTypesCalculator
  private final LvarType = jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType of jdk.nashorn.internal.codegen.LocalVariableTypesCalculator
  private SymbolConversions = jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$SymbolConversions of jdk.nashorn.internal.codegen.LocalVariableTypesCalculator
  private TypeHolderExpression = jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$TypeHolderExpression of jdk.nashorn.internal.codegen.LocalVariableTypesCalculator
  public EvalArgs = jdk.nashorn.internal.ir.CallNode$EvalArgs of jdk.nashorn.internal.ir.CallNode
  public final ArrayLiteralNode = jdk.nashorn.internal.ir.LiteralNode$ArrayLiteralNode of jdk.nashorn.internal.ir.LiteralNode
  public final Request = jdk.nashorn.internal.ir.RuntimeNode$Request of jdk.nashorn.internal.ir.RuntimeNode