final class jdk.nashorn.internal.codegen.OptimisticTypesCalculator 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.OptimisticTypesCalculator
  super_class: jdk.nashorn.internal.ir.visitor.SimpleNodeVisitor
{
  final jdk.nashorn.internal.codegen.Compiler compiler;
    descriptor: Ljdk/nashorn/internal/codegen/Compiler;
    flags: (0x0010) ACC_FINAL

  final java.util.Deque<java.util.BitSet> neverOptimistic;
    descriptor: Ljava/util/Deque;
    flags: (0x0010) ACC_FINAL
    Signature: Ljava/util/Deque<Ljava/util/BitSet;>;

  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=1, locals=0, args_size=0
         0: .line 65
            ldc Ljdk/nashorn/internal/codegen/OptimisticTypesCalculator;
            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.OptimisticTypesCalculator.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(jdk.nashorn.internal.codegen.Compiler);
    descriptor: (Ljdk/nashorn/internal/codegen/Compiler;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
        start local 1 // jdk.nashorn.internal.codegen.Compiler compiler
         0: .line 72
            aload 0 /* this */
            invokespecial jdk.nashorn.internal.ir.visitor.SimpleNodeVisitor.<init>:()V
         1: .line 70
            aload 0 /* this */
            new java.util.ArrayDeque
            dup
            invokespecial java.util.ArrayDeque.<init>:()V
            putfield jdk.nashorn.internal.codegen.OptimisticTypesCalculator.neverOptimistic:Ljava/util/Deque;
         2: .line 73
            aload 0 /* this */
            aload 1 /* compiler */
            putfield jdk.nashorn.internal.codegen.OptimisticTypesCalculator.compiler:Ljdk/nashorn/internal/codegen/Compiler;
         3: .line 74
            return
        end local 1 // jdk.nashorn.internal.codegen.Compiler compiler
        end local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Ljdk/nashorn/internal/codegen/OptimisticTypesCalculator;
            0    4     1  compiler  Ljdk/nashorn/internal/codegen/Compiler;
    MethodParameters:
          Name  Flags
      compiler  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.OptimisticTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.AccessNode accessNode
         0: .line 78
            aload 0 /* this */
            aload 1 /* accessNode */
            invokevirtual jdk.nashorn.internal.ir.AccessNode.getBase:()Ljdk/nashorn/internal/ir/Expression;
            invokevirtual jdk.nashorn.internal.codegen.OptimisticTypesCalculator.tagNeverOptimistic:(Ljdk/nashorn/internal/ir/Expression;)V
         1: .line 79
            iconst_1
            ireturn
        end local 1 // jdk.nashorn.internal.ir.AccessNode accessNode
        end local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Ljdk/nashorn/internal/codegen/OptimisticTypesCalculator;
            0    2     1  accessNode  Ljdk/nashorn/internal/ir/AccessNode;
    MethodParameters:
            Name  Flags
      accessNode  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.OptimisticTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.PropertyNode propertyNode
         0: .line 84
            ldc "__proto__"
            aload 1 /* propertyNode */
            invokevirtual jdk.nashorn.internal.ir.PropertyNode.getKeyName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 85
            aload 0 /* this */
            aload 1 /* propertyNode */
            invokevirtual jdk.nashorn.internal.ir.PropertyNode.getValue:()Ljdk/nashorn/internal/ir/Expression;
            invokevirtual jdk.nashorn.internal.codegen.OptimisticTypesCalculator.tagNeverOptimistic:(Ljdk/nashorn/internal/ir/Expression;)V
         2: .line 87
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* propertyNode */
            invokespecial jdk.nashorn.internal.ir.visitor.SimpleNodeVisitor.enterPropertyNode:(Ljdk/nashorn/internal/ir/PropertyNode;)Z
            ireturn
        end local 1 // jdk.nashorn.internal.ir.PropertyNode propertyNode
        end local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0          this  Ljdk/nashorn/internal/codegen/OptimisticTypesCalculator;
            0    3     1  propertyNode  Ljdk/nashorn/internal/ir/PropertyNode;
    MethodParameters:
              Name  Flags
      propertyNode  final

  public boolean enterBinaryNode(jdk.nashorn.internal.ir.BinaryNode);
    descriptor: (Ljdk/nashorn/internal/ir/BinaryNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.BinaryNode binaryNode
         0: .line 92
            aload 1 /* binaryNode */
            invokevirtual jdk.nashorn.internal.ir.BinaryNode.isAssignment:()Z
            ifeq 9
         1: .line 93
            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
         2: .line 94
            aload 1 /* binaryNode */
            invokevirtual jdk.nashorn.internal.ir.BinaryNode.isSelfModifying:()Z
            ifne 4
         3: .line 95
            aload 0 /* this */
            aload 2 /* lhs */
            invokevirtual jdk.nashorn.internal.codegen.OptimisticTypesCalculator.tagNeverOptimistic:(Ljdk/nashorn/internal/ir/Expression;)V
         4: .line 97
      StackMap locals: jdk.nashorn.internal.ir.Expression
      StackMap stack:
            aload 2 /* lhs */
            instanceof jdk.nashorn.internal.ir.IdentNode
            ifeq 14
         5: .line 98
            aload 2 /* lhs */
            checkcast jdk.nashorn.internal.ir.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
         6: .line 100
            aload 3 /* symbol */
            invokevirtual jdk.nashorn.internal.ir.Symbol.isInternal:()Z
            ifeq 14
            aload 1 /* binaryNode */
            invokevirtual jdk.nashorn.internal.ir.BinaryNode.rhs:()Ljdk/nashorn/internal/ir/Expression;
            invokevirtual jdk.nashorn.internal.ir.Expression.isSelfModifying:()Z
            ifne 14
         7: .line 101
            aload 0 /* this */
            aload 1 /* binaryNode */
            invokevirtual jdk.nashorn.internal.ir.BinaryNode.rhs:()Ljdk/nashorn/internal/ir/Expression;
            invokevirtual jdk.nashorn.internal.codegen.OptimisticTypesCalculator.tagNeverOptimistic:(Ljdk/nashorn/internal/ir/Expression;)V
        end local 3 // jdk.nashorn.internal.ir.Symbol symbol
        end local 2 // jdk.nashorn.internal.ir.Expression lhs
         8: .line 104
            goto 14
      StackMap locals:
      StackMap stack:
         9: aload 1 /* binaryNode */
            getstatic jdk.nashorn.internal.parser.TokenType.INSTANCEOF:Ljdk/nashorn/internal/parser/TokenType;
            invokevirtual jdk.nashorn.internal.ir.BinaryNode.isTokenType:(Ljdk/nashorn/internal/parser/TokenType;)Z
            ifne 12
        10: .line 105
            aload 1 /* binaryNode */
            getstatic jdk.nashorn.internal.parser.TokenType.EQ_STRICT:Ljdk/nashorn/internal/parser/TokenType;
            invokevirtual jdk.nashorn.internal.ir.BinaryNode.isTokenType:(Ljdk/nashorn/internal/parser/TokenType;)Z
            ifne 12
        11: .line 106
            aload 1 /* binaryNode */
            getstatic jdk.nashorn.internal.parser.TokenType.NE_STRICT:Ljdk/nashorn/internal/parser/TokenType;
            invokevirtual jdk.nashorn.internal.ir.BinaryNode.isTokenType:(Ljdk/nashorn/internal/parser/TokenType;)Z
            ifeq 14
        12: .line 107
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* binaryNode */
            invokevirtual jdk.nashorn.internal.ir.BinaryNode.lhs:()Ljdk/nashorn/internal/ir/Expression;
            invokevirtual jdk.nashorn.internal.codegen.OptimisticTypesCalculator.tagNeverOptimistic:(Ljdk/nashorn/internal/ir/Expression;)V
        13: .line 108
            aload 0 /* this */
            aload 1 /* binaryNode */
            invokevirtual jdk.nashorn.internal.ir.BinaryNode.rhs:()Ljdk/nashorn/internal/ir/Expression;
            invokevirtual jdk.nashorn.internal.codegen.OptimisticTypesCalculator.tagNeverOptimistic:(Ljdk/nashorn/internal/ir/Expression;)V
        14: .line 110
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 1 // jdk.nashorn.internal.ir.BinaryNode binaryNode
        end local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   15     0        this  Ljdk/nashorn/internal/codegen/OptimisticTypesCalculator;
            0   15     1  binaryNode  Ljdk/nashorn/internal/ir/BinaryNode;
            2    8     2         lhs  Ljdk/nashorn/internal/ir/Expression;
            6    8     3      symbol  Ljdk/nashorn/internal/ir/Symbol;
    MethodParameters:
            Name  Flags
      binaryNode  final

  public boolean enterCallNode(jdk.nashorn.internal.ir.CallNode);
    descriptor: (Ljdk/nashorn/internal/ir/CallNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.CallNode callNode
         0: .line 115
            aload 0 /* this */
            aload 1 /* callNode */
            invokevirtual jdk.nashorn.internal.ir.CallNode.getFunction:()Ljdk/nashorn/internal/ir/Expression;
            invokevirtual jdk.nashorn.internal.codegen.OptimisticTypesCalculator.tagNeverOptimistic:(Ljdk/nashorn/internal/ir/Expression;)V
         1: .line 116
            iconst_1
            ireturn
        end local 1 // jdk.nashorn.internal.ir.CallNode callNode
        end local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Ljdk/nashorn/internal/codegen/OptimisticTypesCalculator;
            0    2     1  callNode  Ljdk/nashorn/internal/ir/CallNode;
    MethodParameters:
          Name  Flags
      callNode  final

  public boolean enterCatchNode(jdk.nashorn.internal.ir.CatchNode);
    descriptor: (Ljdk/nashorn/internal/ir/CatchNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.CatchNode catchNode
         0: .line 122
            aload 0 /* this */
            aload 1 /* catchNode */
            invokevirtual jdk.nashorn.internal.ir.CatchNode.getExceptionCondition:()Ljdk/nashorn/internal/ir/Expression;
            invokevirtual jdk.nashorn.internal.codegen.OptimisticTypesCalculator.tagNeverOptimistic:(Ljdk/nashorn/internal/ir/Expression;)V
         1: .line 123
            iconst_1
            ireturn
        end local 1 // jdk.nashorn.internal.ir.CatchNode catchNode
        end local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Ljdk/nashorn/internal/codegen/OptimisticTypesCalculator;
            0    2     1  catchNode  Ljdk/nashorn/internal/ir/CatchNode;
    MethodParameters:
           Name  Flags
      catchNode  final

  public boolean enterExpressionStatement(jdk.nashorn.internal.ir.ExpressionStatement);
    descriptor: (Ljdk/nashorn/internal/ir/ExpressionStatement;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.ExpressionStatement expressionStatement
         0: .line 128
            aload 1 /* expressionStatement */
            invokevirtual jdk.nashorn.internal.ir.ExpressionStatement.getExpression:()Ljdk/nashorn/internal/ir/Expression;
            astore 2 /* expr */
        start local 2 // jdk.nashorn.internal.ir.Expression expr
         1: .line 129
            aload 2 /* expr */
            invokevirtual jdk.nashorn.internal.ir.Expression.isSelfModifying:()Z
            ifne 3
         2: .line 130
            aload 0 /* this */
            aload 2 /* expr */
            invokevirtual jdk.nashorn.internal.codegen.OptimisticTypesCalculator.tagNeverOptimistic:(Ljdk/nashorn/internal/ir/Expression;)V
         3: .line 132
      StackMap locals: jdk.nashorn.internal.ir.Expression
      StackMap stack:
            iconst_1
            ireturn
        end local 2 // jdk.nashorn.internal.ir.Expression expr
        end local 1 // jdk.nashorn.internal.ir.ExpressionStatement expressionStatement
        end local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    4     0                 this  Ljdk/nashorn/internal/codegen/OptimisticTypesCalculator;
            0    4     1  expressionStatement  Ljdk/nashorn/internal/ir/ExpressionStatement;
            1    4     2                 expr  Ljdk/nashorn/internal/ir/Expression;
    MethodParameters:
                     Name  Flags
      expressionStatement  final

  public boolean enterForNode(jdk.nashorn.internal.ir.ForNode);
    descriptor: (Ljdk/nashorn/internal/ir/ForNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.ForNode forNode
         0: .line 137
            aload 1 /* forNode */
            invokevirtual jdk.nashorn.internal.ir.ForNode.isForInOrOf:()Z
            ifeq 3
         1: .line 139
            aload 0 /* this */
            aload 1 /* forNode */
            invokevirtual jdk.nashorn.internal.ir.ForNode.getModify:()Ljdk/nashorn/internal/ir/JoinPredecessorExpression;
            invokevirtual jdk.nashorn.internal.codegen.OptimisticTypesCalculator.tagNeverOptimistic:(Ljdk/nashorn/internal/ir/Expression;)V
         2: .line 140
            goto 4
         3: .line 142
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* forNode */
            invokevirtual jdk.nashorn.internal.codegen.OptimisticTypesCalculator.tagNeverOptimisticLoopTest:(Ljdk/nashorn/internal/ir/LoopNode;)V
         4: .line 144
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 1 // jdk.nashorn.internal.ir.ForNode forNode
        end local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Ljdk/nashorn/internal/codegen/OptimisticTypesCalculator;
            0    5     1  forNode  Ljdk/nashorn/internal/ir/ForNode;
    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=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.FunctionNode functionNode
         0: .line 149
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.OptimisticTypesCalculator.neverOptimistic:Ljava/util/Deque;
            invokeinterface java.util.Deque.isEmpty:()Z
            ifne 2
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.OptimisticTypesCalculator.compiler:Ljdk/nashorn/internal/codegen/Compiler;
            invokevirtual jdk.nashorn.internal.codegen.Compiler.isOnDemandCompilation:()Z
            ifeq 2
         1: .line 152
            iconst_0
            ireturn
         2: .line 154
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.OptimisticTypesCalculator.neverOptimistic:Ljava/util/Deque;
            new java.util.BitSet
            dup
            invokespecial java.util.BitSet.<init>:()V
            invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
         3: .line 155
            iconst_1
            ireturn
        end local 1 // jdk.nashorn.internal.ir.FunctionNode functionNode
        end local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0          this  Ljdk/nashorn/internal/codegen/OptimisticTypesCalculator;
            0    4     1  functionNode  Ljdk/nashorn/internal/ir/FunctionNode;
    MethodParameters:
              Name  Flags
      functionNode  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.OptimisticTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.IfNode ifNode
         0: .line 161
            aload 0 /* this */
            aload 1 /* ifNode */
            invokevirtual jdk.nashorn.internal.ir.IfNode.getTest:()Ljdk/nashorn/internal/ir/Expression;
            invokevirtual jdk.nashorn.internal.codegen.OptimisticTypesCalculator.tagNeverOptimistic:(Ljdk/nashorn/internal/ir/Expression;)V
         1: .line 162
            iconst_1
            ireturn
        end local 1 // jdk.nashorn.internal.ir.IfNode ifNode
        end local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Ljdk/nashorn/internal/codegen/OptimisticTypesCalculator;
            0    2     1  ifNode  Ljdk/nashorn/internal/ir/IfNode;
    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.OptimisticTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.IndexNode indexNode
         0: .line 167
            aload 0 /* this */
            aload 1 /* indexNode */
            invokevirtual jdk.nashorn.internal.ir.IndexNode.getBase:()Ljdk/nashorn/internal/ir/Expression;
            invokevirtual jdk.nashorn.internal.codegen.OptimisticTypesCalculator.tagNeverOptimistic:(Ljdk/nashorn/internal/ir/Expression;)V
         1: .line 168
            iconst_1
            ireturn
        end local 1 // jdk.nashorn.internal.ir.IndexNode indexNode
        end local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Ljdk/nashorn/internal/codegen/OptimisticTypesCalculator;
            0    2     1  indexNode  Ljdk/nashorn/internal/ir/IndexNode;
    MethodParameters:
           Name  Flags
      indexNode  final

  public boolean enterTernaryNode(jdk.nashorn.internal.ir.TernaryNode);
    descriptor: (Ljdk/nashorn/internal/ir/TernaryNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.TernaryNode ternaryNode
         0: .line 174
            aload 0 /* this */
            aload 1 /* ternaryNode */
            invokevirtual jdk.nashorn.internal.ir.TernaryNode.getTest:()Ljdk/nashorn/internal/ir/Expression;
            invokevirtual jdk.nashorn.internal.codegen.OptimisticTypesCalculator.tagNeverOptimistic:(Ljdk/nashorn/internal/ir/Expression;)V
         1: .line 175
            iconst_1
            ireturn
        end local 1 // jdk.nashorn.internal.ir.TernaryNode ternaryNode
        end local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Ljdk/nashorn/internal/codegen/OptimisticTypesCalculator;
            0    2     1  ternaryNode  Ljdk/nashorn/internal/ir/TernaryNode;
    MethodParameters:
             Name  Flags
      ternaryNode  final

  public boolean enterUnaryNode(jdk.nashorn.internal.ir.UnaryNode);
    descriptor: (Ljdk/nashorn/internal/ir/UnaryNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.UnaryNode unaryNode
         0: .line 180
            aload 1 /* unaryNode */
            getstatic jdk.nashorn.internal.parser.TokenType.NOT:Ljdk/nashorn/internal/parser/TokenType;
            invokevirtual jdk.nashorn.internal.ir.UnaryNode.isTokenType:(Ljdk/nashorn/internal/parser/TokenType;)Z
            ifne 1
            aload 1 /* unaryNode */
            getstatic jdk.nashorn.internal.parser.TokenType.NEW:Ljdk/nashorn/internal/parser/TokenType;
            invokevirtual jdk.nashorn.internal.ir.UnaryNode.isTokenType:(Ljdk/nashorn/internal/parser/TokenType;)Z
            ifeq 2
         1: .line 183
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* unaryNode */
            invokevirtual jdk.nashorn.internal.ir.UnaryNode.getExpression:()Ljdk/nashorn/internal/ir/Expression;
            invokevirtual jdk.nashorn.internal.codegen.OptimisticTypesCalculator.tagNeverOptimistic:(Ljdk/nashorn/internal/ir/Expression;)V
         2: .line 185
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 1 // jdk.nashorn.internal.ir.UnaryNode unaryNode
        end local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       this  Ljdk/nashorn/internal/codegen/OptimisticTypesCalculator;
            0    3     1  unaryNode  Ljdk/nashorn/internal/ir/UnaryNode;
    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=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.VarNode varNode
         0: .line 190
            aload 0 /* this */
            aload 1 /* varNode */
            invokevirtual jdk.nashorn.internal.ir.VarNode.getName:()Ljdk/nashorn/internal/ir/IdentNode;
            invokevirtual jdk.nashorn.internal.codegen.OptimisticTypesCalculator.tagNeverOptimistic:(Ljdk/nashorn/internal/ir/Expression;)V
         1: .line 191
            iconst_1
            ireturn
        end local 1 // jdk.nashorn.internal.ir.VarNode varNode
        end local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Ljdk/nashorn/internal/codegen/OptimisticTypesCalculator;
            0    2     1  varNode  Ljdk/nashorn/internal/ir/VarNode;
    MethodParameters:
         Name  Flags
      varNode  final

  public boolean enterObjectNode(jdk.nashorn.internal.ir.ObjectNode);
    descriptor: (Ljdk/nashorn/internal/ir/ObjectNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.ObjectNode objectNode
         0: .line 196
            aload 1 /* objectNode */
            invokevirtual jdk.nashorn.internal.ir.ObjectNode.getSplitRanges:()Ljava/util/List;
            ifnull 2
         1: .line 197
            iconst_0
            ireturn
         2: .line 199
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* objectNode */
            invokespecial jdk.nashorn.internal.ir.visitor.SimpleNodeVisitor.enterObjectNode:(Ljdk/nashorn/internal/ir/ObjectNode;)Z
            ireturn
        end local 1 // jdk.nashorn.internal.ir.ObjectNode objectNode
        end local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Ljdk/nashorn/internal/codegen/OptimisticTypesCalculator;
            0    3     1  objectNode  Ljdk/nashorn/internal/ir/ObjectNode;
    MethodParameters:
            Name  Flags
      objectNode  

  public boolean enterLiteralNode(jdk.nashorn.internal.ir.LiteralNode<?>);
    descriptor: (Ljdk/nashorn/internal/ir/LiteralNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.LiteralNode literalNode
         0: .line 204
            aload 1 /* literalNode */
            invokevirtual jdk.nashorn.internal.ir.LiteralNode.isArray:()Z
            ifeq 2
            aload 1 /* literalNode */
            checkcast jdk.nashorn.internal.ir.LiteralNode$ArrayLiteralNode
            invokevirtual jdk.nashorn.internal.ir.LiteralNode$ArrayLiteralNode.getSplitRanges:()Ljava/util/List;
            ifnull 2
         1: .line 205
            iconst_0
            ireturn
         2: .line 208
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* literalNode */
            invokespecial jdk.nashorn.internal.ir.visitor.SimpleNodeVisitor.enterLiteralNode:(Ljdk/nashorn/internal/ir/LiteralNode;)Z
            ireturn
        end local 1 // jdk.nashorn.internal.ir.LiteralNode literalNode
        end local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0         this  Ljdk/nashorn/internal/codegen/OptimisticTypesCalculator;
            0    3     1  literalNode  Ljdk/nashorn/internal/ir/LiteralNode<*>;
    Signature: (Ljdk/nashorn/internal/ir/LiteralNode<*>;)Z
    MethodParameters:
             Name  Flags
      literalNode  

  public boolean enterWhileNode(jdk.nashorn.internal.ir.WhileNode);
    descriptor: (Ljdk/nashorn/internal/ir/WhileNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.WhileNode whileNode
         0: .line 214
            aload 0 /* this */
            aload 1 /* whileNode */
            invokevirtual jdk.nashorn.internal.codegen.OptimisticTypesCalculator.tagNeverOptimisticLoopTest:(Ljdk/nashorn/internal/ir/LoopNode;)V
         1: .line 215
            iconst_1
            ireturn
        end local 1 // jdk.nashorn.internal.ir.WhileNode whileNode
        end local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Ljdk/nashorn/internal/codegen/OptimisticTypesCalculator;
            0    2     1  whileNode  Ljdk/nashorn/internal/ir/WhileNode;
    MethodParameters:
           Name  Flags
      whileNode  final

  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.OptimisticTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.Node node
         0: .line 220
            aload 1 /* node */
            instanceof jdk.nashorn.internal.ir.Optimistic
            ifeq 2
         1: .line 221
            aload 0 /* this */
            aload 1 /* node */
            checkcast jdk.nashorn.internal.ir.Optimistic
            invokevirtual jdk.nashorn.internal.codegen.OptimisticTypesCalculator.leaveOptimistic:(Ljdk/nashorn/internal/ir/Optimistic;)Ljdk/nashorn/internal/ir/Expression;
            areturn
         2: .line 223
      StackMap locals:
      StackMap stack:
            aload 1 /* node */
            areturn
        end local 1 // jdk.nashorn.internal.ir.Node node
        end local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljdk/nashorn/internal/codegen/OptimisticTypesCalculator;
            0    3     1  node  Ljdk/nashorn/internal/ir/Node;
    MethodParameters:
      Name  Flags
      node  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=1, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.FunctionNode functionNode
         0: .line 228
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.OptimisticTypesCalculator.neverOptimistic:Ljava/util/Deque;
            invokeinterface java.util.Deque.pop:()Ljava/lang/Object;
            pop
         1: .line 229
            aload 1 /* functionNode */
            areturn
        end local 1 // jdk.nashorn.internal.ir.FunctionNode functionNode
        end local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Ljdk/nashorn/internal/codegen/OptimisticTypesCalculator;
            0    2     1  functionNode  Ljdk/nashorn/internal/ir/FunctionNode;
    MethodParameters:
              Name  Flags
      functionNode  final

  public jdk.nashorn.internal.ir.Node leaveIdentNode(jdk.nashorn.internal.ir.IdentNode);
    descriptor: (Ljdk/nashorn/internal/ir/IdentNode;)Ljdk/nashorn/internal/ir/Node;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.IdentNode identNode
         0: .line 234
            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 235
            aload 2 /* symbol */
            ifnonnull 4
         2: .line 236
            getstatic jdk.nashorn.internal.codegen.OptimisticTypesCalculator.$assertionsDisabled:Z
            ifne 3
            aload 1 /* identNode */
            invokevirtual jdk.nashorn.internal.ir.IdentNode.isPropertyName:()Z
            ifne 3
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         3: .line 237
      StackMap locals: jdk.nashorn.internal.ir.Symbol
      StackMap stack:
            aload 1 /* identNode */
            areturn
         4: .line 238
      StackMap locals:
      StackMap stack:
            aload 2 /* symbol */
            invokevirtual jdk.nashorn.internal.ir.Symbol.isBytecodeLocal:()Z
            ifeq 6
         5: .line 242
            aload 1 /* identNode */
            areturn
         6: .line 243
      StackMap locals:
      StackMap stack:
            aload 2 /* symbol */
            invokevirtual jdk.nashorn.internal.ir.Symbol.isParam:()Z
            ifeq 8
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.OptimisticTypesCalculator.lc:Ljdk/nashorn/internal/ir/LexicalContext;
            invokevirtual jdk.nashorn.internal.ir.LexicalContext.getCurrentFunction:()Ljdk/nashorn/internal/ir/FunctionNode;
            invokevirtual jdk.nashorn.internal.ir.FunctionNode.isVarArg:()Z
            ifeq 8
         7: .line 245
            aload 1 /* identNode */
            aload 1 /* identNode */
            invokevirtual jdk.nashorn.internal.ir.IdentNode.getMostPessimisticType:()Ljdk/nashorn/internal/codegen/types/Type;
            invokevirtual jdk.nashorn.internal.ir.IdentNode.setType:(Ljdk/nashorn/internal/codegen/types/Type;)Ljdk/nashorn/internal/ir/IdentNode;
            areturn
         8: .line 247
      StackMap locals:
      StackMap stack:
            getstatic jdk.nashorn.internal.codegen.OptimisticTypesCalculator.$assertionsDisabled:Z
            ifne 9
            aload 2 /* symbol */
            invokevirtual jdk.nashorn.internal.ir.Symbol.isScope:()Z
            ifne 9
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         9: .line 248
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* identNode */
            invokevirtual jdk.nashorn.internal.codegen.OptimisticTypesCalculator.leaveOptimistic:(Ljdk/nashorn/internal/ir/Optimistic;)Ljdk/nashorn/internal/ir/Expression;
            areturn
        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.OptimisticTypesCalculator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   10     0       this  Ljdk/nashorn/internal/codegen/OptimisticTypesCalculator;
            0   10     1  identNode  Ljdk/nashorn/internal/ir/IdentNode;
            1   10     2     symbol  Ljdk/nashorn/internal/ir/Symbol;
    MethodParameters:
           Name  Flags
      identNode  final

  private jdk.nashorn.internal.ir.Expression leaveOptimistic(jdk.nashorn.internal.ir.Optimistic);
    descriptor: (Ljdk/nashorn/internal/ir/Optimistic;)Ljdk/nashorn/internal/ir/Expression;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.Optimistic opt
         0: .line 253
            aload 1 /* opt */
            invokeinterface jdk.nashorn.internal.ir.Optimistic.getProgramPoint:()I
            istore 2 /* pp */
        start local 2 // int pp
         1: .line 254
            iload 2 /* pp */
            invokestatic jdk.nashorn.internal.runtime.UnwarrantedOptimismException.isValid:(I)Z
            ifeq 3
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.OptimisticTypesCalculator.neverOptimistic:Ljava/util/Deque;
            invokeinterface java.util.Deque.peek:()Ljava/lang/Object;
            checkcast java.util.BitSet
            iload 2 /* pp */
            invokevirtual java.util.BitSet.get:(I)Z
            ifne 3
         2: .line 255
            aload 1 /* opt */
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.OptimisticTypesCalculator.compiler:Ljdk/nashorn/internal/codegen/Compiler;
            aload 1 /* opt */
            invokevirtual jdk.nashorn.internal.codegen.Compiler.getOptimisticType:(Ljdk/nashorn/internal/ir/Optimistic;)Ljdk/nashorn/internal/codegen/types/Type;
            invokeinterface jdk.nashorn.internal.ir.Optimistic.setType:(Ljdk/nashorn/internal/codegen/types/Type;)Ljdk/nashorn/internal/ir/Optimistic;
            checkcast jdk.nashorn.internal.ir.Expression
            areturn
         3: .line 257
      StackMap locals: int
      StackMap stack:
            aload 1 /* opt */
            checkcast jdk.nashorn.internal.ir.Expression
            areturn
        end local 2 // int pp
        end local 1 // jdk.nashorn.internal.ir.Optimistic opt
        end local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljdk/nashorn/internal/codegen/OptimisticTypesCalculator;
            0    4     1   opt  Ljdk/nashorn/internal/ir/Optimistic;
            1    4     2    pp  I
    MethodParameters:
      Name  Flags
      opt   final

  private void tagNeverOptimistic(jdk.nashorn.internal.ir.Expression);
    descriptor: (Ljdk/nashorn/internal/ir/Expression;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.Expression expr
         0: .line 261
            aload 1 /* expr */
            instanceof jdk.nashorn.internal.ir.Optimistic
            ifeq 4
         1: .line 262
            aload 1 /* expr */
            checkcast jdk.nashorn.internal.ir.Optimistic
            invokeinterface jdk.nashorn.internal.ir.Optimistic.getProgramPoint:()I
            istore 2 /* pp */
        start local 2 // int pp
         2: .line 263
            iload 2 /* pp */
            invokestatic jdk.nashorn.internal.runtime.UnwarrantedOptimismException.isValid:(I)Z
            ifeq 4
         3: .line 264
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.OptimisticTypesCalculator.neverOptimistic:Ljava/util/Deque;
            invokeinterface java.util.Deque.peek:()Ljava/lang/Object;
            checkcast java.util.BitSet
            iload 2 /* pp */
            invokevirtual java.util.BitSet.set:(I)V
        end local 2 // int pp
         4: .line 267
      StackMap locals:
      StackMap stack:
            return
        end local 1 // jdk.nashorn.internal.ir.Expression expr
        end local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Ljdk/nashorn/internal/codegen/OptimisticTypesCalculator;
            0    5     1  expr  Ljdk/nashorn/internal/ir/Expression;
            2    4     2    pp  I
    MethodParameters:
      Name  Flags
      expr  final

  private void tagNeverOptimisticLoopTest(jdk.nashorn.internal.ir.LoopNode);
    descriptor: (Ljdk/nashorn/internal/ir/LoopNode;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
        start local 1 // jdk.nashorn.internal.ir.LoopNode loopNode
         0: .line 270
            aload 1 /* loopNode */
            invokevirtual jdk.nashorn.internal.ir.LoopNode.getTest:()Ljdk/nashorn/internal/ir/JoinPredecessorExpression;
            astore 2 /* test */
        start local 2 // jdk.nashorn.internal.ir.JoinPredecessorExpression test
         1: .line 271
            aload 2 /* test */
            ifnull 3
         2: .line 272
            aload 0 /* this */
            aload 2 /* test */
            invokevirtual jdk.nashorn.internal.ir.JoinPredecessorExpression.getExpression:()Ljdk/nashorn/internal/ir/Expression;
            invokevirtual jdk.nashorn.internal.codegen.OptimisticTypesCalculator.tagNeverOptimistic:(Ljdk/nashorn/internal/ir/Expression;)V
         3: .line 274
      StackMap locals: jdk.nashorn.internal.ir.JoinPredecessorExpression
      StackMap stack:
            return
        end local 2 // jdk.nashorn.internal.ir.JoinPredecessorExpression test
        end local 1 // jdk.nashorn.internal.ir.LoopNode loopNode
        end local 0 // jdk.nashorn.internal.codegen.OptimisticTypesCalculator this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Ljdk/nashorn/internal/codegen/OptimisticTypesCalculator;
            0    4     1  loopNode  Ljdk/nashorn/internal/ir/LoopNode;
            1    4     2      test  Ljdk/nashorn/internal/ir/JoinPredecessorExpression;
    MethodParameters:
          Name  Flags
      loopNode  final
}
SourceFile: "OptimisticTypesCalculator.java"
InnerClasses:
  public final ArrayLiteralNode = jdk.nashorn.internal.ir.LiteralNode$ArrayLiteralNode of jdk.nashorn.internal.ir.LiteralNode
  public final SplitRange = jdk.nashorn.internal.ir.Splittable$SplitRange of jdk.nashorn.internal.ir.Splittable