final class jdk.nashorn.internal.codegen.SplitIntoFunctions extends jdk.nashorn.internal.ir.visitor.NodeVisitor<jdk.nashorn.internal.ir.BlockLexicalContext>
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: jdk.nashorn.internal.codegen.SplitIntoFunctions
  super_class: jdk.nashorn.internal.ir.visitor.NodeVisitor
{
  private static final int FALLTHROUGH_STATE;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: -1

  private static final int RETURN_STATE;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  private static final int BREAK_STATE;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  private static final int FIRST_JUMP_STATE;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  private static final java.lang.String THIS_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.String RETURN_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.String RETURN_PARAM_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

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

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

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

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

  private int nextFunctionId;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  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=0, args_size=0
         0: .line 81
            ldc Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
            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.SplitIntoFunctions.$assertionsDisabled:Z
         3: .line 87
            getstatic jdk.nashorn.internal.codegen.CompilerConstants.THIS:Ljdk/nashorn/internal/codegen/CompilerConstants;
            invokevirtual jdk.nashorn.internal.codegen.CompilerConstants.symbolName:()Ljava/lang/String;
            putstatic jdk.nashorn.internal.codegen.SplitIntoFunctions.THIS_NAME:Ljava/lang/String;
         4: .line 88
            getstatic jdk.nashorn.internal.codegen.CompilerConstants.RETURN:Ljdk/nashorn/internal/codegen/CompilerConstants;
            invokevirtual jdk.nashorn.internal.codegen.CompilerConstants.symbolName:()Ljava/lang/String;
            putstatic jdk.nashorn.internal.codegen.SplitIntoFunctions.RETURN_NAME:Ljava/lang/String;
         5: .line 90
            new java.lang.StringBuilder
            dup
            getstatic jdk.nashorn.internal.codegen.SplitIntoFunctions.RETURN_NAME:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "-in"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            putstatic jdk.nashorn.internal.codegen.SplitIntoFunctions.RETURN_PARAM_NAME:Ljava/lang/String;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(jdk.nashorn.internal.codegen.Compiler);
    descriptor: (Ljdk/nashorn/internal/codegen/Compiler;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
        start local 1 // jdk.nashorn.internal.codegen.Compiler compiler
         0: .line 102
            aload 0 /* this */
            new jdk.nashorn.internal.codegen.SplitIntoFunctions$1
            dup
            invokespecial jdk.nashorn.internal.codegen.SplitIntoFunctions$1.<init>:()V
            invokespecial jdk.nashorn.internal.ir.visitor.NodeVisitor.<init>:(Ljdk/nashorn/internal/ir/LexicalContext;)V
         1: .line 92
            aload 0 /* this */
            new java.util.ArrayDeque
            dup
            invokespecial java.util.ArrayDeque.<init>:()V
            putfield jdk.nashorn.internal.codegen.SplitIntoFunctions.functionStates:Ljava/util/Deque;
         2: .line 93
            aload 0 /* this */
            new java.util.ArrayDeque
            dup
            invokespecial java.util.ArrayDeque.<init>:()V
            putfield jdk.nashorn.internal.codegen.SplitIntoFunctions.splitStates:Ljava/util/Deque;
         3: .line 96
            aload 0 /* this */
            iconst_0
            putfield jdk.nashorn.internal.codegen.SplitIntoFunctions.artificialBlock:Z
         4: .line 99
            aload 0 /* this */
            bipush -2
            putfield jdk.nashorn.internal.codegen.SplitIntoFunctions.nextFunctionId:I
         5: .line 111
            aload 0 /* this */
            new jdk.nashorn.internal.codegen.Namespace
            dup
            aload 1 /* compiler */
            invokevirtual jdk.nashorn.internal.codegen.Compiler.getScriptEnvironment:()Ljdk/nashorn/internal/runtime/ScriptEnvironment;
            invokevirtual jdk.nashorn.internal.runtime.ScriptEnvironment.getNamespace:()Ljdk/nashorn/internal/codegen/Namespace;
            invokespecial jdk.nashorn.internal.codegen.Namespace.<init>:(Ljdk/nashorn/internal/codegen/Namespace;)V
            putfield jdk.nashorn.internal.codegen.SplitIntoFunctions.namespace:Ljdk/nashorn/internal/codegen/Namespace;
         6: .line 112
            return
        end local 1 // jdk.nashorn.internal.codegen.Compiler compiler
        end local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
            0    7     1  compiler  Ljdk/nashorn/internal/codegen/Compiler;
    MethodParameters:
          Name  Flags
      compiler  final

  public boolean enterFunctionNode(jdk.nashorn.internal.ir.FunctionNode);
    descriptor: (Ljdk/nashorn/internal/ir/FunctionNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
        start local 1 // jdk.nashorn.internal.ir.FunctionNode functionNode
         0: .line 116
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.functionStates:Ljava/util/Deque;
            new jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState
            dup
            aload 1 /* functionNode */
            invokespecial jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState.<init>:(Ljdk/nashorn/internal/ir/FunctionNode;)V
            invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
         1: .line 117
            iconst_1
            ireturn
        end local 1 // jdk.nashorn.internal.ir.FunctionNode functionNode
        end local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
            0    2     1  functionNode  Ljdk/nashorn/internal/ir/FunctionNode;
    MethodParameters:
              Name  Flags
      functionNode  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.SplitIntoFunctions this
        start local 1 // jdk.nashorn.internal.ir.FunctionNode functionNode
         0: .line 122
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.functionStates:Ljava/util/Deque;
            invokeinterface java.util.Deque.pop:()Ljava/lang/Object;
            pop
         1: .line 123
            aload 1 /* functionNode */
            areturn
        end local 1 // jdk.nashorn.internal.ir.FunctionNode functionNode
        end local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
            0    2     1  functionNode  Ljdk/nashorn/internal/ir/FunctionNode;
    MethodParameters:
              Name  Flags
      functionNode  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.SplitIntoFunctions this
        start local 1 // jdk.nashorn.internal.ir.Node node
         0: .line 128
            aload 1 /* node */
            instanceof jdk.nashorn.internal.ir.Statement
            ifeq 2
         1: .line 129
            aload 0 /* this */
            aload 1 /* node */
            checkcast jdk.nashorn.internal.ir.Statement
            invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.appendStatement:(Ljdk/nashorn/internal/ir/Statement;)V
         2: .line 131
      StackMap locals:
      StackMap stack:
            aload 1 /* node */
            areturn
        end local 1 // jdk.nashorn.internal.ir.Node node
        end local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
            0    3     1  node  Ljdk/nashorn/internal/ir/Node;
    MethodParameters:
      Name  Flags
      node  final

  public boolean enterSplitNode(jdk.nashorn.internal.ir.SplitNode);
    descriptor: (Ljdk/nashorn/internal/ir/SplitNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
        start local 1 // jdk.nashorn.internal.ir.SplitNode splitNode
         0: .line 136
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.getCurrentFunctionState:()Ljdk/nashorn/internal/codegen/SplitIntoFunctions$FunctionState;
            dup
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState.splitDepth:I
            iconst_1
            iadd
            putfield jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState.splitDepth:I
         1: .line 137
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.splitStates:Ljava/util/Deque;
            new jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState
            dup
            aload 1 /* splitNode */
            invokespecial jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState.<init>:(Ljdk/nashorn/internal/ir/SplitNode;)V
            invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
         2: .line 138
            iconst_1
            ireturn
        end local 1 // jdk.nashorn.internal.ir.SplitNode splitNode
        end local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       this  Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
            0    3     1  splitNode  Ljdk/nashorn/internal/ir/SplitNode;
    MethodParameters:
           Name  Flags
      splitNode  final

  public jdk.nashorn.internal.ir.Node leaveSplitNode(jdk.nashorn.internal.ir.SplitNode);
    descriptor: (Ljdk/nashorn/internal/ir/SplitNode;)Ljdk/nashorn/internal/ir/Node;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=22, locals=26, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
        start local 1 // jdk.nashorn.internal.ir.SplitNode splitNode
         0: .line 145
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.getCurrentFunctionState:()Ljdk/nashorn/internal/codegen/SplitIntoFunctions$FunctionState;
            astore 2 /* fnState */
        start local 2 // jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState fnState
         1: .line 147
            aload 1 /* splitNode */
            invokevirtual jdk.nashorn.internal.ir.SplitNode.getName:()Ljava/lang/String;
            astore 3 /* name */
        start local 3 // java.lang.String name
         2: .line 148
            aload 1 /* splitNode */
            invokevirtual jdk.nashorn.internal.ir.SplitNode.getBody:()Ljdk/nashorn/internal/ir/Block;
            astore 4 /* body */
        start local 4 // jdk.nashorn.internal.ir.Block body
         3: .line 149
            aload 4 /* body */
            invokevirtual jdk.nashorn.internal.ir.Block.getFirstStatementLineNumber:()I
            istore 5 /* firstLineNumber */
        start local 5 // int firstLineNumber
         4: .line 150
            aload 4 /* body */
            invokevirtual jdk.nashorn.internal.ir.Block.getToken:()J
            lstore 6 /* token */
        start local 6 // long token
         5: .line 151
            aload 4 /* body */
            invokevirtual jdk.nashorn.internal.ir.Block.getFinish:()I
            istore 8 /* finish */
        start local 8 // int finish
         6: .line 153
            aload 2 /* fnState */
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState.fn:Ljdk/nashorn/internal/ir/FunctionNode;
            astore 9 /* originalFn */
        start local 9 // jdk.nashorn.internal.ir.FunctionNode originalFn
         7: .line 154
            getstatic jdk.nashorn.internal.codegen.SplitIntoFunctions.$assertionsDisabled:Z
            ifne 8
            aload 9 /* originalFn */
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.lc:Ljdk/nashorn/internal/ir/LexicalContext;
            checkcast jdk.nashorn.internal.ir.BlockLexicalContext
            invokevirtual jdk.nashorn.internal.ir.BlockLexicalContext.getCurrentFunction:()Ljdk/nashorn/internal/ir/FunctionNode;
            if_acmpeq 8
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         8: .line 155
      StackMap locals: jdk.nashorn.internal.codegen.SplitIntoFunctions jdk.nashorn.internal.ir.SplitNode jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState java.lang.String jdk.nashorn.internal.ir.Block int long int jdk.nashorn.internal.ir.FunctionNode
      StackMap stack:
            aload 9 /* originalFn */
            invokevirtual jdk.nashorn.internal.ir.FunctionNode.isProgram:()Z
            istore 10 /* isProgram */
        start local 10 // boolean isProgram
         9: .line 158
            getstatic jdk.nashorn.internal.parser.TokenType.FUNCTION:Ljdk/nashorn/internal/parser/TokenType;
            aload 0 /* this */
            dup
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.nextFunctionId:I
            dup_x1
            iconst_1
            isub
            putfield jdk.nashorn.internal.codegen.SplitIntoFunctions.nextFunctionId:I
            iconst_0
            invokestatic jdk.nashorn.internal.parser.Token.toDesc:(Ljdk/nashorn/internal/parser/TokenType;II)J
            lstore 11 /* newFnToken */
        start local 11 // long newFnToken
        10: .line 159
            new jdk.nashorn.internal.ir.FunctionNode
            dup
        11: .line 160
            aload 9 /* originalFn */
            invokevirtual jdk.nashorn.internal.ir.FunctionNode.getSource:()Ljdk/nashorn/internal/runtime/Source;
        12: .line 161
            aload 4 /* body */
            invokevirtual jdk.nashorn.internal.ir.Block.getFirstStatementLineNumber:()I
        13: .line 162
            lload 11 /* newFnToken */
        14: .line 163
            iload 8 /* finish */
        15: .line 164
            lload 11 /* newFnToken */
        16: .line 165
            lconst_0
        17: .line 166
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.namespace:Ljdk/nashorn/internal/codegen/Namespace;
        18: .line 167
            aload 3 /* name */
            invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.createIdent:(Ljava/lang/String;)Ljdk/nashorn/internal/ir/IdentNode;
        19: .line 168
            new java.lang.StringBuilder
            dup
            aload 9 /* originalFn */
            invokevirtual jdk.nashorn.internal.ir.FunctionNode.getName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "$"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* name */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        20: .line 169
            iload 10 /* isProgram */
            ifeq 21
            invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.createReturnParamIdent:()Ljdk/nashorn/internal/ir/IdentNode;
            invokestatic java.util.Collections.singletonList:(Ljava/lang/Object;)Ljava/util/List;
            goto 22
      StackMap locals: jdk.nashorn.internal.codegen.SplitIntoFunctions jdk.nashorn.internal.ir.SplitNode jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState java.lang.String jdk.nashorn.internal.ir.Block int long int jdk.nashorn.internal.ir.FunctionNode int long
      StackMap stack: new 10 new 10 jdk.nashorn.internal.runtime.Source int long int long long jdk.nashorn.internal.codegen.Namespace jdk.nashorn.internal.ir.IdentNode java.lang.String
        21: invokestatic java.util.Collections.emptyList:()Ljava/util/List;
        22: .line 170
      StackMap locals: jdk.nashorn.internal.codegen.SplitIntoFunctions jdk.nashorn.internal.ir.SplitNode jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState java.lang.String jdk.nashorn.internal.ir.Block int long int jdk.nashorn.internal.ir.FunctionNode int long
      StackMap stack: new 10 new 10 jdk.nashorn.internal.runtime.Source int long int long long jdk.nashorn.internal.codegen.Namespace jdk.nashorn.internal.ir.IdentNode java.lang.String java.util.List
            aconst_null
        23: .line 171
            getstatic jdk.nashorn.internal.ir.FunctionNode$Kind.NORMAL:Ljdk/nashorn/internal/ir/FunctionNode$Kind;
        24: .line 177
            sipush 529
        25: .line 178
            aload 4 /* body */
        26: .line 179
            aconst_null
        27: .line 180
            aload 9 /* originalFn */
            invokevirtual jdk.nashorn.internal.ir.FunctionNode.getModule:()Ljdk/nashorn/internal/ir/Module;
        28: .line 181
            aload 9 /* originalFn */
            invokevirtual jdk.nashorn.internal.ir.FunctionNode.getDebugFlags:()I
        29: .line 159
            invokespecial jdk.nashorn.internal.ir.FunctionNode.<init>:(Ljdk/nashorn/internal/runtime/Source;IJIJJLjdk/nashorn/internal/codegen/Namespace;Ljdk/nashorn/internal/ir/IdentNode;Ljava/lang/String;Ljava/util/List;Ljava/util/Map;Ljdk/nashorn/internal/ir/FunctionNode$Kind;ILjdk/nashorn/internal/ir/Block;Ljava/lang/Object;Ljdk/nashorn/internal/ir/Module;I)V
        30: .line 183
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.lc:Ljdk/nashorn/internal/ir/LexicalContext;
            aload 1 /* splitNode */
            invokevirtual jdk.nashorn.internal.ir.SplitNode.getCompileUnit:()Ljdk/nashorn/internal/codegen/CompileUnit;
            invokevirtual jdk.nashorn.internal.ir.FunctionNode.setCompileUnit:(Ljdk/nashorn/internal/ir/LexicalContext;Ljdk/nashorn/internal/codegen/CompileUnit;)Ljdk/nashorn/internal/ir/FunctionNode;
        31: .line 159
            astore 13 /* fn */
        start local 13 // jdk.nashorn.internal.ir.FunctionNode fn
        32: .line 191
            getstatic jdk.nashorn.internal.codegen.SplitIntoFunctions.THIS_NAME:Ljava/lang/String;
            invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.createIdent:(Ljava/lang/String;)Ljdk/nashorn/internal/ir/IdentNode;
            astore 14 /* thisIdent */
        start local 14 // jdk.nashorn.internal.ir.IdentNode thisIdent
        33: .line 192
            new jdk.nashorn.internal.ir.CallNode
            dup
            iload 5 /* firstLineNumber */
            lload 6 /* token */
            iload 8 /* finish */
            new jdk.nashorn.internal.ir.AccessNode
            dup
            lconst_0
            iconst_0
            aload 13 /* fn */
            ldc "call"
            invokespecial jdk.nashorn.internal.ir.AccessNode.<init>:(JILjdk/nashorn/internal/ir/Expression;Ljava/lang/String;)V
        34: .line 193
            iload 10 /* isProgram */
            ifeq 35
            iconst_2
            anewarray jdk.nashorn.internal.ir.Expression
            dup
            iconst_0
            aload 14 /* thisIdent */
            aastore
            dup
            iconst_1
            invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.createReturnIdent:()Ljdk/nashorn/internal/ir/IdentNode;
            aastore
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            goto 36
        35: .line 194
      StackMap locals: jdk.nashorn.internal.codegen.SplitIntoFunctions jdk.nashorn.internal.ir.SplitNode jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState java.lang.String jdk.nashorn.internal.ir.Block int long int jdk.nashorn.internal.ir.FunctionNode int long jdk.nashorn.internal.ir.FunctionNode jdk.nashorn.internal.ir.IdentNode
      StackMap stack: new 33 new 33 int long int jdk.nashorn.internal.ir.AccessNode
            aload 14 /* thisIdent */
            invokestatic java.util.Collections.singletonList:(Ljava/lang/Object;)Ljava/util/List;
        36: .line 195
      StackMap locals: jdk.nashorn.internal.codegen.SplitIntoFunctions jdk.nashorn.internal.ir.SplitNode jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState java.lang.String jdk.nashorn.internal.ir.Block int long int jdk.nashorn.internal.ir.FunctionNode int long jdk.nashorn.internal.ir.FunctionNode jdk.nashorn.internal.ir.IdentNode
      StackMap stack: new 33 new 33 int long int jdk.nashorn.internal.ir.AccessNode java.util.List
            iconst_0
        37: .line 192
            invokespecial jdk.nashorn.internal.ir.CallNode.<init>:(IJILjdk/nashorn/internal/ir/Expression;Ljava/util/List;Z)V
            astore 15 /* callNode */
        start local 15 // jdk.nashorn.internal.ir.CallNode callNode
        38: .line 197
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.splitStates:Ljava/util/Deque;
            invokeinterface java.util.Deque.pop:()Ljava/lang/Object;
            checkcast jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState
            astore 16 /* splitState */
        start local 16 // jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState splitState
        39: .line 198
            aload 2 /* fnState */
            dup
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState.splitDepth:I
            iconst_1
            isub
            putfield jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState.splitDepth:I
        40: .line 201
            aload 16 /* splitState */
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState.hasReturn:Z
            istore 18 /* hasReturn */
        start local 18 // boolean hasReturn
        41: .line 202
            iload 18 /* hasReturn */
            ifeq 45
            aload 2 /* fnState */
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState.splitDepth:I
            ifle 45
        42: .line 203
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.splitStates:Ljava/util/Deque;
            invokeinterface java.util.Deque.peek:()Ljava/lang/Object;
            checkcast jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState
            astore 19 /* parentSplit */
        start local 19 // jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState parentSplit
        43: .line 204
            aload 19 /* parentSplit */
            ifnull 45
        44: .line 206
            aload 19 /* parentSplit */
            iconst_1
            putfield jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState.hasReturn:Z
        end local 19 // jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState parentSplit
        45: .line 209
      StackMap locals: jdk.nashorn.internal.codegen.SplitIntoFunctions jdk.nashorn.internal.ir.SplitNode jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState java.lang.String jdk.nashorn.internal.ir.Block int long int jdk.nashorn.internal.ir.FunctionNode int long jdk.nashorn.internal.ir.FunctionNode jdk.nashorn.internal.ir.IdentNode jdk.nashorn.internal.ir.CallNode jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState top int
      StackMap stack:
            iload 18 /* hasReturn */
            ifne 46
            iload 10 /* isProgram */
            ifeq 48
        46: .line 211
      StackMap locals:
      StackMap stack:
            new jdk.nashorn.internal.ir.BinaryNode
            dup
            lload 6 /* token */
            getstatic jdk.nashorn.internal.parser.TokenType.ASSIGN:Ljdk/nashorn/internal/parser/TokenType;
            invokestatic jdk.nashorn.internal.parser.Token.recast:(JLjdk/nashorn/internal/parser/TokenType;)J
            invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.createReturnIdent:()Ljdk/nashorn/internal/ir/IdentNode;
            aload 15 /* callNode */
            invokespecial jdk.nashorn.internal.ir.BinaryNode.<init>:(JLjdk/nashorn/internal/ir/Expression;Ljdk/nashorn/internal/ir/Expression;)V
            astore 17 /* callWithReturn */
        start local 17 // jdk.nashorn.internal.ir.Expression callWithReturn
        47: .line 212
            goto 49
        end local 17 // jdk.nashorn.internal.ir.Expression callWithReturn
        48: .line 214
      StackMap locals:
      StackMap stack:
            aload 15 /* callNode */
            astore 17 /* callWithReturn */
        start local 17 // jdk.nashorn.internal.ir.Expression callWithReturn
        49: .line 216
      StackMap locals: jdk.nashorn.internal.codegen.SplitIntoFunctions jdk.nashorn.internal.ir.SplitNode jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState java.lang.String jdk.nashorn.internal.ir.Block int long int jdk.nashorn.internal.ir.FunctionNode int long jdk.nashorn.internal.ir.FunctionNode jdk.nashorn.internal.ir.IdentNode jdk.nashorn.internal.ir.CallNode jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState jdk.nashorn.internal.ir.Expression int
      StackMap stack:
            aload 0 /* this */
            new jdk.nashorn.internal.ir.ExpressionStatement
            dup
            iload 5 /* firstLineNumber */
            lload 6 /* token */
            iload 8 /* finish */
            aload 17 /* callWithReturn */
            invokespecial jdk.nashorn.internal.ir.ExpressionStatement.<init>:(IJILjdk/nashorn/internal/ir/Expression;)V
            invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.appendStatement:(Ljdk/nashorn/internal/ir/Statement;)V
        50: .line 220
            aload 16 /* splitState */
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState.jumpStatements:Ljava/util/List;
            astore 20 /* jumpStatements */
        start local 20 // java.util.List jumpStatements
        51: .line 221
            aload 20 /* jumpStatements */
            invokeinterface java.util.List.size:()I
            istore 21 /* jumpCount */
        start local 21 // int jumpCount
        52: .line 225
            iload 21 /* jumpCount */
            ifle 65
        53: .line 226
            new java.util.ArrayList
            dup
            iload 21 /* jumpCount */
            iload 18 /* hasReturn */
            ifeq 54
            iconst_1
            goto 55
      StackMap locals: jdk.nashorn.internal.codegen.SplitIntoFunctions jdk.nashorn.internal.ir.SplitNode jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState java.lang.String jdk.nashorn.internal.ir.Block int long int jdk.nashorn.internal.ir.FunctionNode int long jdk.nashorn.internal.ir.FunctionNode jdk.nashorn.internal.ir.IdentNode jdk.nashorn.internal.ir.CallNode jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState jdk.nashorn.internal.ir.Expression int top java.util.List int
      StackMap stack: new 53 new 53 int
        54: iconst_0
      StackMap locals: jdk.nashorn.internal.codegen.SplitIntoFunctions jdk.nashorn.internal.ir.SplitNode jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState java.lang.String jdk.nashorn.internal.ir.Block int long int jdk.nashorn.internal.ir.FunctionNode int long jdk.nashorn.internal.ir.FunctionNode jdk.nashorn.internal.ir.IdentNode jdk.nashorn.internal.ir.CallNode jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState jdk.nashorn.internal.ir.Expression int top java.util.List int
      StackMap stack: new 53 new 53 int int
        55: iadd
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 22 /* cases */
        start local 22 // java.util.List cases
        56: .line 227
            iload 18 /* hasReturn */
            ifeq 58
        57: .line 229
            aload 22 /* cases */
            iconst_0
            invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.createReturnFromSplit:()Ljdk/nashorn/internal/ir/Block;
            invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.addCase:(Ljava/util/List;ILjdk/nashorn/internal/ir/Block;)V
        58: .line 231
      StackMap locals: java.util.List
      StackMap stack:
            iconst_2
            istore 23 /* i */
        start local 23 // int i
        59: .line 232
            aload 20 /* jumpStatements */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 25
            goto 62
      StackMap locals: jdk.nashorn.internal.codegen.SplitIntoFunctions jdk.nashorn.internal.ir.SplitNode jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState java.lang.String jdk.nashorn.internal.ir.Block int long int jdk.nashorn.internal.ir.FunctionNode int long jdk.nashorn.internal.ir.FunctionNode jdk.nashorn.internal.ir.IdentNode jdk.nashorn.internal.ir.CallNode jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState jdk.nashorn.internal.ir.Expression int top java.util.List int java.util.List int top java.util.Iterator
      StackMap stack:
        60: aload 25
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast jdk.nashorn.internal.ir.JumpStatement
            astore 24 /* jump */
        start local 24 // jdk.nashorn.internal.ir.JumpStatement jump
        61: .line 233
            aload 22 /* cases */
            iload 23 /* i */
            iinc 23 /* i */ 1
            aload 0 /* this */
            aload 24 /* jump */
            invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.enblockAndVisit:(Ljdk/nashorn/internal/ir/JumpStatement;)Ljdk/nashorn/internal/ir/Block;
            invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.addCase:(Ljava/util/List;ILjdk/nashorn/internal/ir/Block;)V
        end local 24 // jdk.nashorn.internal.ir.JumpStatement jump
        62: .line 232
      StackMap locals:
      StackMap stack:
            aload 25
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 60
        63: .line 235
            new jdk.nashorn.internal.ir.SwitchNode
            dup
            iconst_m1
            lload 6 /* token */
            iload 8 /* finish */
            getstatic jdk.nashorn.internal.ir.GetSplitState.INSTANCE:Ljdk/nashorn/internal/ir/GetSplitState;
            aload 22 /* cases */
            aconst_null
            invokespecial jdk.nashorn.internal.ir.SwitchNode.<init>:(IJILjdk/nashorn/internal/ir/Expression;Ljava/util/List;Ljdk/nashorn/internal/ir/CaseNode;)V
            astore 19 /* splitStateHandler */
        end local 23 // int i
        end local 22 // java.util.List cases
        start local 19 // jdk.nashorn.internal.ir.Statement splitStateHandler
        64: .line 236
            goto 66
        end local 19 // jdk.nashorn.internal.ir.Statement splitStateHandler
        65: .line 237
      StackMap locals: jdk.nashorn.internal.codegen.SplitIntoFunctions jdk.nashorn.internal.ir.SplitNode jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState java.lang.String jdk.nashorn.internal.ir.Block int long int jdk.nashorn.internal.ir.FunctionNode int long jdk.nashorn.internal.ir.FunctionNode jdk.nashorn.internal.ir.IdentNode jdk.nashorn.internal.ir.CallNode jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState jdk.nashorn.internal.ir.Expression int top java.util.List int
      StackMap stack:
            aconst_null
            astore 19 /* splitStateHandler */
        start local 19 // jdk.nashorn.internal.ir.Statement splitStateHandler
        66: .line 242
      StackMap locals: jdk.nashorn.internal.codegen.SplitIntoFunctions jdk.nashorn.internal.ir.SplitNode jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState java.lang.String jdk.nashorn.internal.ir.Block int long int jdk.nashorn.internal.ir.FunctionNode int long jdk.nashorn.internal.ir.FunctionNode jdk.nashorn.internal.ir.IdentNode jdk.nashorn.internal.ir.CallNode jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState jdk.nashorn.internal.ir.Expression int jdk.nashorn.internal.ir.Statement java.util.List int
      StackMap stack:
            aload 16 /* splitState */
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState.hasBreak:Z
            ifeq 70
        67: .line 244
            iload 5 /* firstLineNumber */
            lload 6 /* token */
            iload 8 /* finish */
            iconst_1
        68: .line 245
            aload 0 /* this */
            new jdk.nashorn.internal.ir.BreakNode
            dup
            iconst_m1
            lload 6 /* token */
            iload 8 /* finish */
            aconst_null
            invokespecial jdk.nashorn.internal.ir.BreakNode.<init>:(IJILjava/lang/String;)V
            invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.enblockAndVisit:(Ljdk/nashorn/internal/ir/JumpStatement;)Ljdk/nashorn/internal/ir/Block;
            aload 19 /* splitStateHandler */
        69: .line 244
            invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.makeIfStateEquals:(IJIILjdk/nashorn/internal/ir/Block;Ljdk/nashorn/internal/ir/Statement;)Ljdk/nashorn/internal/ir/IfNode;
            astore 19 /* splitStateHandler */
        70: .line 250
      StackMap locals:
      StackMap stack:
            iload 18 /* hasReturn */
            ifeq 74
            iload 21 /* jumpCount */
            ifne 74
        71: .line 252
            iconst_m1
            lload 6 /* token */
            iload 8 /* finish */
            iconst_0
        72: .line 253
            invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.createReturnFromSplit:()Ljdk/nashorn/internal/ir/Block;
            aload 19 /* splitStateHandler */
        73: .line 252
            invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.makeIfStateEquals:(IJIILjdk/nashorn/internal/ir/Block;Ljdk/nashorn/internal/ir/Statement;)Ljdk/nashorn/internal/ir/IfNode;
            astore 19 /* splitStateHandler */
        74: .line 256
      StackMap locals:
      StackMap stack:
            aload 19 /* splitStateHandler */
            ifnull 76
        75: .line 257
            aload 0 /* this */
            aload 19 /* splitStateHandler */
            invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.appendStatement:(Ljdk/nashorn/internal/ir/Statement;)V
        76: .line 260
      StackMap locals:
      StackMap stack:
            aload 1 /* splitNode */
            areturn
        end local 21 // int jumpCount
        end local 20 // java.util.List jumpStatements
        end local 19 // jdk.nashorn.internal.ir.Statement splitStateHandler
        end local 18 // boolean hasReturn
        end local 17 // jdk.nashorn.internal.ir.Expression callWithReturn
        end local 16 // jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState splitState
        end local 15 // jdk.nashorn.internal.ir.CallNode callNode
        end local 14 // jdk.nashorn.internal.ir.IdentNode thisIdent
        end local 13 // jdk.nashorn.internal.ir.FunctionNode fn
        end local 11 // long newFnToken
        end local 10 // boolean isProgram
        end local 9 // jdk.nashorn.internal.ir.FunctionNode originalFn
        end local 8 // int finish
        end local 6 // long token
        end local 5 // int firstLineNumber
        end local 4 // jdk.nashorn.internal.ir.Block body
        end local 3 // java.lang.String name
        end local 2 // jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState fnState
        end local 1 // jdk.nashorn.internal.ir.SplitNode splitNode
        end local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   77     0               this  Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
            0   77     1          splitNode  Ljdk/nashorn/internal/ir/SplitNode;
            1   77     2            fnState  Ljdk/nashorn/internal/codegen/SplitIntoFunctions$FunctionState;
            2   77     3               name  Ljava/lang/String;
            3   77     4               body  Ljdk/nashorn/internal/ir/Block;
            4   77     5    firstLineNumber  I
            5   77     6              token  J
            6   77     8             finish  I
            7   77     9         originalFn  Ljdk/nashorn/internal/ir/FunctionNode;
            9   77    10          isProgram  Z
           10   77    11         newFnToken  J
           32   77    13                 fn  Ljdk/nashorn/internal/ir/FunctionNode;
           33   77    14          thisIdent  Ljdk/nashorn/internal/ir/IdentNode;
           38   77    15           callNode  Ljdk/nashorn/internal/ir/CallNode;
           39   77    16         splitState  Ljdk/nashorn/internal/codegen/SplitIntoFunctions$SplitState;
           47   48    17     callWithReturn  Ljdk/nashorn/internal/ir/Expression;
           49   77    17     callWithReturn  Ljdk/nashorn/internal/ir/Expression;
           41   77    18          hasReturn  Z
           43   45    19        parentSplit  Ljdk/nashorn/internal/codegen/SplitIntoFunctions$SplitState;
           64   65    19  splitStateHandler  Ljdk/nashorn/internal/ir/Statement;
           66   77    19  splitStateHandler  Ljdk/nashorn/internal/ir/Statement;
           51   77    20     jumpStatements  Ljava/util/List<Ljdk/nashorn/internal/ir/JumpStatement;>;
           52   77    21          jumpCount  I
           56   64    22              cases  Ljava/util/List<Ljdk/nashorn/internal/ir/CaseNode;>;
           59   64    23                  i  I
           61   62    24               jump  Ljdk/nashorn/internal/ir/JumpStatement;
    MethodParameters:
           Name  Flags
      splitNode  final

  private static void addCase(java.util.List<jdk.nashorn.internal.ir.CaseNode>, int, jdk.nashorn.internal.ir.Block);
    descriptor: (Ljava/util/List;ILjdk/nashorn/internal/ir/Block;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=8, locals=3, args_size=3
        start local 0 // java.util.List cases
        start local 1 // int i
        start local 2 // jdk.nashorn.internal.ir.Block body
         0: .line 264
            aload 0 /* cases */
            new jdk.nashorn.internal.ir.CaseNode
            dup
            lconst_0
            iconst_0
            iload 1 /* i */
            invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.intLiteral:(I)Ljdk/nashorn/internal/ir/LiteralNode;
            aload 2 /* body */
            invokespecial jdk.nashorn.internal.ir.CaseNode.<init>:(JILjdk/nashorn/internal/ir/Expression;Ljdk/nashorn/internal/ir/Block;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         1: .line 265
            return
        end local 2 // jdk.nashorn.internal.ir.Block body
        end local 1 // int i
        end local 0 // java.util.List cases
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0  cases  Ljava/util/List<Ljdk/nashorn/internal/ir/CaseNode;>;
            0    2     1      i  I
            0    2     2   body  Ljdk/nashorn/internal/ir/Block;
    Signature: (Ljava/util/List<Ljdk/nashorn/internal/ir/CaseNode;>;ILjdk/nashorn/internal/ir/Block;)V
    MethodParameters:
       Name  Flags
      cases  final
      i      final
      body   final

  private static jdk.nashorn.internal.ir.LiteralNode<java.lang.Number> intLiteral(int);
    descriptor: (I)Ljdk/nashorn/internal/ir/LiteralNode;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // int i
         0: .line 268
            lconst_0
            iconst_0
            iload 0 /* i */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokestatic jdk.nashorn.internal.ir.LiteralNode.newInstance:(JILjava/lang/Number;)Ljdk/nashorn/internal/ir/LiteralNode;
            areturn
        end local 0 // int i
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     i  I
    Signature: (I)Ljdk/nashorn/internal/ir/LiteralNode<Ljava/lang/Number;>;
    MethodParameters:
      Name  Flags
      i     final

  private static jdk.nashorn.internal.ir.Block createReturnFromSplit();
    descriptor: ()Ljdk/nashorn/internal/ir/Block;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=9, locals=0, args_size=0
         0: .line 272
            new jdk.nashorn.internal.ir.Block
            dup
            lconst_0
            iconst_0
            iconst_1
            anewarray jdk.nashorn.internal.ir.Statement
            dup
            iconst_0
            invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.createReturnReturn:()Ljdk/nashorn/internal/ir/ReturnNode;
            aastore
            invokespecial jdk.nashorn.internal.ir.Block.<init>:(JI[Ljdk/nashorn/internal/ir/Statement;)V
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static jdk.nashorn.internal.ir.ReturnNode createReturnReturn();
    descriptor: ()Ljdk/nashorn/internal/ir/ReturnNode;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=7, locals=0, args_size=0
         0: .line 276
            new jdk.nashorn.internal.ir.ReturnNode
            dup
            iconst_m1
            lconst_0
            iconst_0
            invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.createReturnIdent:()Ljdk/nashorn/internal/ir/IdentNode;
            invokespecial jdk.nashorn.internal.ir.ReturnNode.<init>:(IJILjdk/nashorn/internal/ir/Expression;)V
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static jdk.nashorn.internal.ir.IdentNode createReturnIdent();
    descriptor: ()Ljdk/nashorn/internal/ir/IdentNode;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 280
            getstatic jdk.nashorn.internal.codegen.SplitIntoFunctions.RETURN_NAME:Ljava/lang/String;
            invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.createIdent:(Ljava/lang/String;)Ljdk/nashorn/internal/ir/IdentNode;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static jdk.nashorn.internal.ir.IdentNode createReturnParamIdent();
    descriptor: ()Ljdk/nashorn/internal/ir/IdentNode;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 284
            getstatic jdk.nashorn.internal.codegen.SplitIntoFunctions.RETURN_PARAM_NAME:Ljava/lang/String;
            invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.createIdent:(Ljava/lang/String;)Ljdk/nashorn/internal/ir/IdentNode;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static jdk.nashorn.internal.ir.IdentNode createIdent(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljdk/nashorn/internal/ir/IdentNode;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // java.lang.String name
         0: .line 288
            new jdk.nashorn.internal.ir.IdentNode
            dup
            lconst_0
            iconst_0
            aload 0 /* name */
            invokespecial jdk.nashorn.internal.ir.IdentNode.<init>:(JILjava/lang/String;)V
            areturn
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  private jdk.nashorn.internal.ir.Block enblockAndVisit(jdk.nashorn.internal.ir.JumpStatement);
    descriptor: (Ljdk/nashorn/internal/ir/JumpStatement;)Ljdk/nashorn/internal/ir/Block;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=9, locals=3, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
        start local 1 // jdk.nashorn.internal.ir.JumpStatement jump
         0: .line 292
            aload 0 /* this */
            iconst_1
            putfield jdk.nashorn.internal.codegen.SplitIntoFunctions.artificialBlock:Z
         1: .line 293
            new jdk.nashorn.internal.ir.Block
            dup
            lconst_0
            iconst_0
            iconst_1
            anewarray jdk.nashorn.internal.ir.Statement
            dup
            iconst_0
            aload 1 /* jump */
            aastore
            invokespecial jdk.nashorn.internal.ir.Block.<init>:(JI[Ljdk/nashorn/internal/ir/Statement;)V
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.ir.Block.accept:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljdk/nashorn/internal/ir/Node;
            checkcast jdk.nashorn.internal.ir.Block
            astore 2 /* block */
        start local 2 // jdk.nashorn.internal.ir.Block block
         2: .line 294
            aload 0 /* this */
            iconst_0
            putfield jdk.nashorn.internal.codegen.SplitIntoFunctions.artificialBlock:Z
         3: .line 295
            aload 2 /* block */
            areturn
        end local 2 // jdk.nashorn.internal.ir.Block block
        end local 1 // jdk.nashorn.internal.ir.JumpStatement jump
        end local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
            0    4     1   jump  Ljdk/nashorn/internal/ir/JumpStatement;
            2    4     2  block  Ljdk/nashorn/internal/ir/Block;
    MethodParameters:
      Name  Flags
      jump  final

  private static jdk.nashorn.internal.ir.IfNode makeIfStateEquals(int, long, int, int, jdk.nashorn.internal.ir.Block, jdk.nashorn.internal.ir.Statement);
    descriptor: (IJIILjdk/nashorn/internal/ir/Block;Ljdk/nashorn/internal/ir/Statement;)Ljdk/nashorn/internal/ir/IfNode;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=17, locals=7, args_size=6
        start local 0 // int lineNumber
        start local 1 // long token
        start local 3 // int finish
        start local 4 // int value
        start local 5 // jdk.nashorn.internal.ir.Block pass
        start local 6 // jdk.nashorn.internal.ir.Statement fail
         0: .line 300
            new jdk.nashorn.internal.ir.IfNode
            dup
            iload 0 /* lineNumber */
            lload 1 /* token */
            iload 3 /* finish */
         1: .line 301
            new jdk.nashorn.internal.ir.BinaryNode
            dup
            lload 1 /* token */
            getstatic jdk.nashorn.internal.parser.TokenType.EQ_STRICT:Ljdk/nashorn/internal/parser/TokenType;
            invokestatic jdk.nashorn.internal.parser.Token.recast:(JLjdk/nashorn/internal/parser/TokenType;)J
         2: .line 302
            getstatic jdk.nashorn.internal.ir.GetSplitState.INSTANCE:Ljdk/nashorn/internal/ir/GetSplitState;
            iload 4 /* value */
            invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.intLiteral:(I)Ljdk/nashorn/internal/ir/LiteralNode;
         3: .line 301
            invokespecial jdk.nashorn.internal.ir.BinaryNode.<init>:(JLjdk/nashorn/internal/ir/Expression;Ljdk/nashorn/internal/ir/Expression;)V
         4: .line 303
            aload 5 /* pass */
         5: .line 304
            aload 6 /* fail */
            ifnonnull 6
            aconst_null
            goto 7
      StackMap locals: int long int int jdk.nashorn.internal.ir.Block jdk.nashorn.internal.ir.Statement
      StackMap stack: new 0 new 0 int long int jdk.nashorn.internal.ir.BinaryNode jdk.nashorn.internal.ir.Block
         6: new jdk.nashorn.internal.ir.Block
            dup
            lconst_0
            iconst_0
            iconst_1
            anewarray jdk.nashorn.internal.ir.Statement
            dup
            iconst_0
            aload 6 /* fail */
            aastore
            invokespecial jdk.nashorn.internal.ir.Block.<init>:(JI[Ljdk/nashorn/internal/ir/Statement;)V
         7: .line 300
      StackMap locals: int long int int jdk.nashorn.internal.ir.Block jdk.nashorn.internal.ir.Statement
      StackMap stack: new 0 new 0 int long int jdk.nashorn.internal.ir.BinaryNode jdk.nashorn.internal.ir.Block jdk.nashorn.internal.ir.Block
            invokespecial jdk.nashorn.internal.ir.IfNode.<init>:(IJILjdk/nashorn/internal/ir/Expression;Ljdk/nashorn/internal/ir/Block;Ljdk/nashorn/internal/ir/Block;)V
            areturn
        end local 6 // jdk.nashorn.internal.ir.Statement fail
        end local 5 // jdk.nashorn.internal.ir.Block pass
        end local 4 // int value
        end local 3 // int finish
        end local 1 // long token
        end local 0 // int lineNumber
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0  lineNumber  I
            0    8     1       token  J
            0    8     3      finish  I
            0    8     4       value  I
            0    8     5        pass  Ljdk/nashorn/internal/ir/Block;
            0    8     6        fail  Ljdk/nashorn/internal/ir/Statement;
    MethodParameters:
            Name  Flags
      lineNumber  final
      token       final
      finish      final
      value       final
      pass        final
      fail        final

  public boolean enterVarNode(jdk.nashorn.internal.ir.VarNode);
    descriptor: (Ljdk/nashorn/internal/ir/VarNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=12, locals=5, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
        start local 1 // jdk.nashorn.internal.ir.VarNode varNode
         0: .line 310
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.inSplitNode:()Z
            ifeq 1
            aload 1 /* varNode */
            invokevirtual jdk.nashorn.internal.ir.VarNode.isBlockScoped:()Z
            ifeq 2
         1: .line 311
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* varNode */
            invokespecial jdk.nashorn.internal.ir.visitor.NodeVisitor.enterVarNode:(Ljdk/nashorn/internal/ir/VarNode;)Z
            ireturn
         2: .line 314
      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 317
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.getCurrentFunctionState:()Ljdk/nashorn/internal/codegen/SplitIntoFunctions$FunctionState;
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState.varStatements:Ljava/util/List;
            aload 1 /* varNode */
            aconst_null
            invokevirtual jdk.nashorn.internal.ir.VarNode.setInit:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/ir/VarNode;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         4: .line 321
            aload 2 /* init */
            ifnull 10
         5: .line 322
            aload 1 /* varNode */
            invokevirtual jdk.nashorn.internal.ir.VarNode.getToken:()J
            getstatic jdk.nashorn.internal.parser.TokenType.ASSIGN:Ljdk/nashorn/internal/parser/TokenType;
            invokestatic jdk.nashorn.internal.parser.Token.recast:(JLjdk/nashorn/internal/parser/TokenType;)J
            lstore 3 /* token */
        start local 3 // long token
         6: .line 323
            new jdk.nashorn.internal.ir.ExpressionStatement
            dup
            aload 1 /* varNode */
            invokevirtual jdk.nashorn.internal.ir.VarNode.getLineNumber:()I
            lload 3 /* token */
            aload 1 /* varNode */
            invokevirtual jdk.nashorn.internal.ir.VarNode.getFinish:()I
         7: .line 324
            new jdk.nashorn.internal.ir.BinaryNode
            dup
            lload 3 /* token */
            aload 1 /* varNode */
            invokevirtual jdk.nashorn.internal.ir.VarNode.getName:()Ljdk/nashorn/internal/ir/IdentNode;
            aload 1 /* varNode */
            invokevirtual jdk.nashorn.internal.ir.VarNode.getInit:()Ljdk/nashorn/internal/ir/Expression;
            invokespecial jdk.nashorn.internal.ir.BinaryNode.<init>:(JLjdk/nashorn/internal/ir/Expression;Ljdk/nashorn/internal/ir/Expression;)V
         8: .line 323
            invokespecial jdk.nashorn.internal.ir.ExpressionStatement.<init>:(IJILjdk/nashorn/internal/ir/Expression;)V
         9: .line 324
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.ir.ExpressionStatement.accept:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljdk/nashorn/internal/ir/Node;
            pop
        end local 3 // long token
        10: .line 327
      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.SplitIntoFunctions this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   11     0     this  Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
            0   11     1  varNode  Ljdk/nashorn/internal/ir/VarNode;
            3   11     2     init  Ljdk/nashorn/internal/ir/Expression;
            6   10     3    token  J
    MethodParameters:
         Name  Flags
      varNode  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=13, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
        start local 1 // jdk.nashorn.internal.ir.Block block
         0: .line 332
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.artificialBlock:Z
            ifne 10
         1: .line 333
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.lc:Ljdk/nashorn/internal/ir/LexicalContext;
            checkcast jdk.nashorn.internal.ir.BlockLexicalContext
            invokevirtual jdk.nashorn.internal.ir.BlockLexicalContext.isFunctionBody:()Z
            ifeq 4
         2: .line 335
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.lc:Ljdk/nashorn/internal/ir/LexicalContext;
            checkcast jdk.nashorn.internal.ir.BlockLexicalContext
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.getCurrentFunctionState:()Ljdk/nashorn/internal/codegen/SplitIntoFunctions$FunctionState;
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState.varStatements:Ljava/util/List;
            invokevirtual jdk.nashorn.internal.ir.BlockLexicalContext.prependStatements:(Ljava/util/List;)V
         3: .line 336
            goto 10
      StackMap locals:
      StackMap stack:
         4: aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.lc:Ljdk/nashorn/internal/ir/LexicalContext;
            checkcast jdk.nashorn.internal.ir.BlockLexicalContext
            invokevirtual jdk.nashorn.internal.ir.BlockLexicalContext.isSplitBody:()Z
            ifeq 10
         5: .line 337
            aload 0 /* this */
            iconst_m1
            iconst_m1
            invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.appendSplitReturn:(II)V
         6: .line 338
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.getCurrentFunctionState:()Ljdk/nashorn/internal/codegen/SplitIntoFunctions$FunctionState;
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState.fn:Ljdk/nashorn/internal/ir/FunctionNode;
            invokevirtual jdk.nashorn.internal.ir.FunctionNode.isProgram:()Z
            ifeq 10
         7: .line 341
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.lc:Ljdk/nashorn/internal/ir/LexicalContext;
            checkcast jdk.nashorn.internal.ir.BlockLexicalContext
            new jdk.nashorn.internal.ir.ExpressionStatement
            dup
            iconst_m1
            lconst_0
            iconst_0
         8: .line 342
            new jdk.nashorn.internal.ir.BinaryNode
            dup
            getstatic jdk.nashorn.internal.parser.TokenType.ASSIGN:Ljdk/nashorn/internal/parser/TokenType;
            iconst_0
            iconst_0
            invokestatic jdk.nashorn.internal.parser.Token.toDesc:(Ljdk/nashorn/internal/parser/TokenType;II)J
            invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.createReturnIdent:()Ljdk/nashorn/internal/ir/IdentNode;
            invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.createReturnParamIdent:()Ljdk/nashorn/internal/ir/IdentNode;
            invokespecial jdk.nashorn.internal.ir.BinaryNode.<init>:(JLjdk/nashorn/internal/ir/Expression;Ljdk/nashorn/internal/ir/Expression;)V
            invokespecial jdk.nashorn.internal.ir.ExpressionStatement.<init>:(IJILjdk/nashorn/internal/ir/Expression;)V
         9: .line 341
            invokevirtual jdk.nashorn.internal.ir.BlockLexicalContext.prependStatement:(Ljdk/nashorn/internal/ir/Statement;)Ljdk/nashorn/internal/ir/Node;
            pop
        10: .line 346
      StackMap locals:
      StackMap stack:
            aload 1 /* block */
            areturn
        end local 1 // jdk.nashorn.internal.ir.Block block
        end local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   11     0   this  Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
            0   11     1  block  Ljdk/nashorn/internal/ir/Block;
    MethodParameters:
       Name  Flags
      block  final

  public jdk.nashorn.internal.ir.Node leaveBreakNode(jdk.nashorn.internal.ir.BreakNode);
    descriptor: (Ljdk/nashorn/internal/ir/BreakNode;)Ljdk/nashorn/internal/ir/Node;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
        start local 1 // jdk.nashorn.internal.ir.BreakNode breakNode
         0: .line 351
            aload 0 /* this */
            aload 1 /* breakNode */
            invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.leaveJumpNode:(Ljdk/nashorn/internal/ir/JumpStatement;)Ljdk/nashorn/internal/ir/JumpStatement;
            areturn
        end local 1 // jdk.nashorn.internal.ir.BreakNode breakNode
        end local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
            0    1     1  breakNode  Ljdk/nashorn/internal/ir/BreakNode;
    MethodParameters:
           Name  Flags
      breakNode  final

  public jdk.nashorn.internal.ir.Node leaveContinueNode(jdk.nashorn.internal.ir.ContinueNode);
    descriptor: (Ljdk/nashorn/internal/ir/ContinueNode;)Ljdk/nashorn/internal/ir/Node;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
        start local 1 // jdk.nashorn.internal.ir.ContinueNode continueNode
         0: .line 356
            aload 0 /* this */
            aload 1 /* continueNode */
            invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.leaveJumpNode:(Ljdk/nashorn/internal/ir/JumpStatement;)Ljdk/nashorn/internal/ir/JumpStatement;
            areturn
        end local 1 // jdk.nashorn.internal.ir.ContinueNode continueNode
        end local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
            0    1     1  continueNode  Ljdk/nashorn/internal/ir/ContinueNode;
    MethodParameters:
              Name  Flags
      continueNode  final

  public jdk.nashorn.internal.ir.Node leaveJumpToInlinedFinally(jdk.nashorn.internal.ir.JumpToInlinedFinally);
    descriptor: (Ljdk/nashorn/internal/ir/JumpToInlinedFinally;)Ljdk/nashorn/internal/ir/Node;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
        start local 1 // jdk.nashorn.internal.ir.JumpToInlinedFinally jumpToInlinedFinally
         0: .line 361
            aload 0 /* this */
            aload 1 /* jumpToInlinedFinally */
            invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.leaveJumpNode:(Ljdk/nashorn/internal/ir/JumpStatement;)Ljdk/nashorn/internal/ir/JumpStatement;
            areturn
        end local 1 // jdk.nashorn.internal.ir.JumpToInlinedFinally jumpToInlinedFinally
        end local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    1     0                  this  Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
            0    1     1  jumpToInlinedFinally  Ljdk/nashorn/internal/ir/JumpToInlinedFinally;
    MethodParameters:
                      Name  Flags
      jumpToInlinedFinally  final

  private jdk.nashorn.internal.ir.JumpStatement leaveJumpNode(jdk.nashorn.internal.ir.JumpStatement);
    descriptor: (Ljdk/nashorn/internal/ir/JumpStatement;)Ljdk/nashorn/internal/ir/JumpStatement;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
        start local 1 // jdk.nashorn.internal.ir.JumpStatement jump
         0: .line 365
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.inSplitNode:()Z
            ifeq 6
         1: .line 366
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.getCurrentSplitState:()Ljdk/nashorn/internal/codegen/SplitIntoFunctions$SplitState;
            astore 2 /* splitState */
        start local 2 // jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState splitState
         2: .line 367
            aload 2 /* splitState */
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState.splitNode:Ljdk/nashorn/internal/ir/SplitNode;
            astore 3 /* splitNode */
        start local 3 // jdk.nashorn.internal.ir.SplitNode splitNode
         3: .line 368
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.lc:Ljdk/nashorn/internal/ir/LexicalContext;
            checkcast jdk.nashorn.internal.ir.BlockLexicalContext
            aload 3 /* splitNode */
            aload 1 /* jump */
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.lc:Ljdk/nashorn/internal/ir/LexicalContext;
            invokevirtual jdk.nashorn.internal.ir.JumpStatement.getTarget:(Ljdk/nashorn/internal/ir/LexicalContext;)Ljdk/nashorn/internal/ir/BreakableNode;
            invokevirtual jdk.nashorn.internal.ir.BlockLexicalContext.isExternalTarget:(Ljdk/nashorn/internal/ir/SplitNode;Ljdk/nashorn/internal/ir/BreakableNode;)Z
            ifeq 6
         4: .line 369
            aload 0 /* this */
            aload 2 /* splitState */
            aload 1 /* jump */
            invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState.getSplitStateIndex:(Ljdk/nashorn/internal/ir/JumpStatement;)I
            aload 1 /* jump */
            invokevirtual jdk.nashorn.internal.ir.JumpStatement.getLineNumber:()I
            invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.appendSplitReturn:(II)V
         5: .line 370
            aload 1 /* jump */
            areturn
        end local 3 // jdk.nashorn.internal.ir.SplitNode splitNode
        end local 2 // jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState splitState
         6: .line 373
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* jump */
            invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.appendStatement:(Ljdk/nashorn/internal/ir/Statement;)V
         7: .line 374
            aload 1 /* jump */
            areturn
        end local 1 // jdk.nashorn.internal.ir.JumpStatement jump
        end local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0        this  Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
            0    8     1        jump  Ljdk/nashorn/internal/ir/JumpStatement;
            2    6     2  splitState  Ljdk/nashorn/internal/codegen/SplitIntoFunctions$SplitState;
            3    6     3   splitNode  Ljdk/nashorn/internal/ir/SplitNode;
    MethodParameters:
      Name  Flags
      jump  final

  private void appendSplitReturn(int, int);
    descriptor: (II)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
        start local 1 // int splitState
        start local 2 // int lineNumber
         0: .line 378
            aload 0 /* this */
            new jdk.nashorn.internal.ir.SetSplitState
            dup
            iload 1 /* splitState */
            iload 2 /* lineNumber */
            invokespecial jdk.nashorn.internal.ir.SetSplitState.<init>:(II)V
            invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.appendStatement:(Ljdk/nashorn/internal/ir/Statement;)V
         1: .line 379
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.getCurrentFunctionState:()Ljdk/nashorn/internal/codegen/SplitIntoFunctions$FunctionState;
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState.fn:Ljdk/nashorn/internal/ir/FunctionNode;
            invokevirtual jdk.nashorn.internal.ir.FunctionNode.isProgram:()Z
            ifeq 4
         2: .line 381
            aload 0 /* this */
            invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.createReturnReturn:()Ljdk/nashorn/internal/ir/ReturnNode;
            invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.appendStatement:(Ljdk/nashorn/internal/ir/Statement;)V
         3: .line 382
            goto 5
         4: .line 383
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic jdk.nashorn.internal.ir.SplitReturn.INSTANCE:Ljdk/nashorn/internal/ir/SplitReturn;
            invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.appendStatement:(Ljdk/nashorn/internal/ir/Statement;)V
         5: .line 385
      StackMap locals:
      StackMap stack:
            return
        end local 2 // int lineNumber
        end local 1 // int splitState
        end local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    6     0        this  Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
            0    6     1  splitState  I
            0    6     2  lineNumber  I
    MethodParameters:
            Name  Flags
      splitState  final
      lineNumber  final

  public jdk.nashorn.internal.ir.Node leaveReturnNode(jdk.nashorn.internal.ir.ReturnNode);
    descriptor: (Ljdk/nashorn/internal/ir/ReturnNode;)Ljdk/nashorn/internal/ir/Node;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
        start local 1 // jdk.nashorn.internal.ir.ReturnNode returnNode
         0: .line 389
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.inSplitNode:()Z
            ifeq 3
         1: .line 390
            aload 0 /* this */
            new jdk.nashorn.internal.ir.SetSplitState
            dup
            iconst_0
            aload 1 /* returnNode */
            invokevirtual jdk.nashorn.internal.ir.ReturnNode.getLineNumber:()I
            invokespecial jdk.nashorn.internal.ir.SetSplitState.<init>:(II)V
            invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.appendStatement:(Ljdk/nashorn/internal/ir/Statement;)V
         2: .line 391
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.getCurrentSplitState:()Ljdk/nashorn/internal/codegen/SplitIntoFunctions$SplitState;
            iconst_1
            putfield jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState.hasReturn:Z
         3: .line 393
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* returnNode */
            invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.appendStatement:(Ljdk/nashorn/internal/ir/Statement;)V
         4: .line 394
            aload 1 /* returnNode */
            areturn
        end local 1 // jdk.nashorn.internal.ir.ReturnNode returnNode
        end local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
            0    5     1  returnNode  Ljdk/nashorn/internal/ir/ReturnNode;
    MethodParameters:
            Name  Flags
      returnNode  final

  private void appendStatement(jdk.nashorn.internal.ir.Statement);
    descriptor: (Ljdk/nashorn/internal/ir/Statement;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
        start local 1 // jdk.nashorn.internal.ir.Statement statement
         0: .line 398
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.lc:Ljdk/nashorn/internal/ir/LexicalContext;
            checkcast jdk.nashorn.internal.ir.BlockLexicalContext
            aload 1 /* statement */
            invokevirtual jdk.nashorn.internal.ir.BlockLexicalContext.appendStatement:(Ljdk/nashorn/internal/ir/Statement;)V
         1: .line 399
            return
        end local 1 // jdk.nashorn.internal.ir.Statement statement
        end local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
            0    2     1  statement  Ljdk/nashorn/internal/ir/Statement;
    MethodParameters:
           Name  Flags
      statement  final

  private boolean inSplitNode();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
         0: .line 402
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.getCurrentFunctionState:()Ljdk/nashorn/internal/codegen/SplitIntoFunctions$FunctionState;
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState.splitDepth:I
            ifle 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljdk/nashorn/internal/codegen/SplitIntoFunctions;

  private jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState getCurrentFunctionState();
    descriptor: ()Ljdk/nashorn/internal/codegen/SplitIntoFunctions$FunctionState;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
         0: .line 406
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.functionStates:Ljava/util/Deque;
            invokeinterface java.util.Deque.peek:()Ljava/lang/Object;
            checkcast jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState
            areturn
        end local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/nashorn/internal/codegen/SplitIntoFunctions;

  private jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState getCurrentSplitState();
    descriptor: ()Ljdk/nashorn/internal/codegen/SplitIntoFunctions$SplitState;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
         0: .line 410
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.splitStates:Ljava/util/Deque;
            invokeinterface java.util.Deque.peek:()Ljava/lang/Object;
            checkcast jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState
            areturn
        end local 0 // jdk.nashorn.internal.codegen.SplitIntoFunctions this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
}
Signature: Ljdk/nashorn/internal/ir/visitor/NodeVisitor<Ljdk/nashorn/internal/ir/BlockLexicalContext;>;
SourceFile: "SplitIntoFunctions.java"
NestMembers:
  jdk.nashorn.internal.codegen.SplitIntoFunctions$1  jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState  jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState
InnerClasses:
  jdk.nashorn.internal.codegen.SplitIntoFunctions$1
  private FunctionState = jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState of jdk.nashorn.internal.codegen.SplitIntoFunctions
  private SplitState = jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState of jdk.nashorn.internal.codegen.SplitIntoFunctions
  public final Kind = jdk.nashorn.internal.ir.FunctionNode$Kind of jdk.nashorn.internal.ir.FunctionNode