class jdk.nashorn.internal.codegen.ApplySpecialization$2 extends jdk.nashorn.internal.ir.visitor.SimpleNodeVisitor
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: jdk.nashorn.internal.codegen.ApplySpecialization$2
  super_class: jdk.nashorn.internal.ir.visitor.SimpleNodeVisitor
{
  private final java.util.Deque val$stack;
    descriptor: Ljava/util/Deque;
    flags: (0x1012) ACC_PRIVATE, ACC_FINAL, ACC_SYNTHETIC

  private final java.util.Set val$argumentsFound;
    descriptor: Ljava/util/Set;
    flags: (0x1012) ACC_PRIVATE, ACC_FINAL, ACC_SYNTHETIC

  private final jdk.nashorn.internal.ir.FunctionNode val$functionNode;
    descriptor: Ljdk/nashorn/internal/ir/FunctionNode;
    flags: (0x1012) ACC_PRIVATE, ACC_FINAL, ACC_SYNTHETIC

  void <init>(java.util.Deque, java.util.Set, jdk.nashorn.internal.ir.FunctionNode);
    descriptor: (Ljava/util/Deque;Ljava/util/Set;Ljdk/nashorn/internal/ir/FunctionNode;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // jdk.nashorn.internal.codegen.ApplySpecialization$2 this
         0: .line 173
            aload 0 /* this */
            aload 1
            putfield jdk.nashorn.internal.codegen.ApplySpecialization$2.val$stack:Ljava/util/Deque;
            aload 0 /* this */
            aload 2
            putfield jdk.nashorn.internal.codegen.ApplySpecialization$2.val$argumentsFound:Ljava/util/Set;
            aload 0 /* this */
            aload 3
            putfield jdk.nashorn.internal.codegen.ApplySpecialization$2.val$functionNode:Ljdk/nashorn/internal/ir/FunctionNode;
            aload 0 /* this */
            invokespecial jdk.nashorn.internal.ir.visitor.SimpleNodeVisitor.<init>:()V
            return
        end local 0 // jdk.nashorn.internal.codegen.ApplySpecialization$2 this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/nashorn/internal/codegen/ApplySpecialization$2;
    MethodParameters:
                    Name  Flags
      val$stack           final
      val$argumentsFound  final
      val$functionNode    final

  private boolean isCurrentArg(jdk.nashorn.internal.ir.Expression);
    descriptor: (Ljdk/nashorn/internal/ir/Expression;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.ApplySpecialization$2 this
        start local 1 // jdk.nashorn.internal.ir.Expression expr
         0: .line 176
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.ApplySpecialization$2.val$stack:Ljava/util/Deque;
            invokeinterface java.util.Deque.isEmpty:()Z
            ifne 1
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.ApplySpecialization$2.val$stack:Ljava/util/Deque;
            invokeinterface java.util.Deque.peek:()Ljava/lang/Object;
            checkcast java.util.Set
            aload 1 /* expr */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // jdk.nashorn.internal.ir.Expression expr
        end local 0 // jdk.nashorn.internal.codegen.ApplySpecialization$2 this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljdk/nashorn/internal/codegen/ApplySpecialization$2;
            0    2     1  expr  Ljdk/nashorn/internal/ir/Expression;
    MethodParameters:
      Name  Flags
      expr  final

  private boolean isArguments(jdk.nashorn.internal.ir.Expression);
    descriptor: (Ljdk/nashorn/internal/ir/Expression;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.ApplySpecialization$2 this
        start local 1 // jdk.nashorn.internal.ir.Expression expr
         0: .line 180
            aload 1 /* expr */
            instanceof jdk.nashorn.internal.ir.IdentNode
            ifeq 3
            getstatic jdk.nashorn.internal.codegen.ApplySpecialization.ARGUMENTS:Ljava/lang/String;
            aload 1 /* expr */
            checkcast jdk.nashorn.internal.ir.IdentNode
            invokevirtual jdk.nashorn.internal.ir.IdentNode.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 3
         1: .line 181
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.ApplySpecialization$2.val$argumentsFound:Ljava/util/Set;
            aload 1 /* expr */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         2: .line 182
            iconst_1
            ireturn
         3: .line 184
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // jdk.nashorn.internal.ir.Expression expr
        end local 0 // jdk.nashorn.internal.codegen.ApplySpecialization$2 this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljdk/nashorn/internal/codegen/ApplySpecialization$2;
            0    4     1  expr  Ljdk/nashorn/internal/ir/Expression;
    MethodParameters:
      Name  Flags
      expr  final

  private boolean isParam(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.ApplySpecialization$2 this
        start local 1 // java.lang.String name
         0: .line 188
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.ApplySpecialization$2.val$functionNode:Ljdk/nashorn/internal/ir/FunctionNode;
            invokevirtual jdk.nashorn.internal.ir.FunctionNode.getParameters:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 4
      StackMap locals: jdk.nashorn.internal.codegen.ApplySpecialization$2 java.lang.String top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast jdk.nashorn.internal.ir.IdentNode
            astore 2 /* param */
        start local 2 // jdk.nashorn.internal.ir.IdentNode param
         2: .line 189
            aload 2 /* param */
            invokevirtual jdk.nashorn.internal.ir.IdentNode.getName:()Ljava/lang/String;
            aload 1 /* name */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 190
            iconst_1
            ireturn
        end local 2 // jdk.nashorn.internal.ir.IdentNode param
         4: .line 188
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         5: .line 193
            iconst_0
            ireturn
        end local 1 // java.lang.String name
        end local 0 // jdk.nashorn.internal.codegen.ApplySpecialization$2 this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Ljdk/nashorn/internal/codegen/ApplySpecialization$2;
            0    6     1   name  Ljava/lang/String;
            2    4     2  param  Ljdk/nashorn/internal/ir/IdentNode;
    MethodParameters:
      Name  Flags
      name  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=6, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.ApplySpecialization$2 this
        start local 1 // jdk.nashorn.internal.ir.IdentNode identNode
         0: .line 198
            aload 0 /* this */
            aload 1 /* identNode */
            invokevirtual jdk.nashorn.internal.ir.IdentNode.getName:()Ljava/lang/String;
            invokevirtual jdk.nashorn.internal.codegen.ApplySpecialization$2.isParam:(Ljava/lang/String;)Z
            ifeq 2
         1: .line 199
            new jdk.nashorn.internal.codegen.ApplySpecialization$TransformFailedException
            dup
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.ApplySpecialization$2.lc:Ljdk/nashorn/internal/ir/LexicalContext;
            invokevirtual jdk.nashorn.internal.ir.LexicalContext.getCurrentFunction:()Ljdk/nashorn/internal/ir/FunctionNode;
            new java.lang.StringBuilder
            dup
            ldc "parameter: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* identNode */
            invokevirtual jdk.nashorn.internal.ir.IdentNode.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial jdk.nashorn.internal.codegen.ApplySpecialization$TransformFailedException.<init>:(Ljdk/nashorn/internal/ir/FunctionNode;Ljava/lang/String;)V
            athrow
         2: .line 202
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* identNode */
            invokevirtual jdk.nashorn.internal.codegen.ApplySpecialization$2.isArguments:(Ljdk/nashorn/internal/ir/Expression;)Z
            ifeq 4
            aload 0 /* this */
            aload 1 /* identNode */
            invokevirtual jdk.nashorn.internal.codegen.ApplySpecialization$2.isCurrentArg:(Ljdk/nashorn/internal/ir/Expression;)Z
            ifne 4
         3: .line 203
            new jdk.nashorn.internal.codegen.ApplySpecialization$TransformFailedException
            dup
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.ApplySpecialization$2.lc:Ljdk/nashorn/internal/ir/LexicalContext;
            invokevirtual jdk.nashorn.internal.ir.LexicalContext.getCurrentFunction:()Ljdk/nashorn/internal/ir/FunctionNode;
            new java.lang.StringBuilder
            dup
            ldc "is 'arguments': "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* identNode */
            invokevirtual jdk.nashorn.internal.ir.IdentNode.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial jdk.nashorn.internal.codegen.ApplySpecialization$TransformFailedException.<init>:(Ljdk/nashorn/internal/ir/FunctionNode;Ljava/lang/String;)V
            athrow
         4: .line 205
      StackMap locals:
      StackMap stack:
            aload 1 /* identNode */
            areturn
        end local 1 // jdk.nashorn.internal.ir.IdentNode identNode
        end local 0 // jdk.nashorn.internal.codegen.ApplySpecialization$2 this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0       this  Ljdk/nashorn/internal/codegen/ApplySpecialization$2;
            0    5     1  identNode  Ljdk/nashorn/internal/ir/IdentNode;
    MethodParameters:
           Name  Flags
      identNode  final

  public boolean enterCallNode(jdk.nashorn.internal.ir.CallNode);
    descriptor: (Ljdk/nashorn/internal/ir/CallNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.ApplySpecialization$2 this
        start local 1 // jdk.nashorn.internal.ir.CallNode callNode
         0: .line 210
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 2 /* callArgs */
        start local 2 // java.util.Set callArgs
         1: .line 211
            aload 1 /* callNode */
            invokestatic jdk.nashorn.internal.codegen.ApplySpecialization.isApply:(Ljdk/nashorn/internal/ir/CallNode;)Z
            ifeq 6
         2: .line 212
            aload 1 /* callNode */
            invokevirtual jdk.nashorn.internal.ir.CallNode.getArgs:()Ljava/util/List;
            astore 3 /* argList */
        start local 3 // java.util.List argList
         3: .line 213
            aload 3 /* argList */
            invokeinterface java.util.List.size:()I
            iconst_2
            if_icmpne 4
            aload 0 /* this */
            aload 3 /* argList */
            aload 3 /* argList */
            invokeinterface java.util.List.size:()I
            iconst_1
            isub
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast jdk.nashorn.internal.ir.Expression
            invokevirtual jdk.nashorn.internal.codegen.ApplySpecialization$2.isArguments:(Ljdk/nashorn/internal/ir/Expression;)Z
            ifne 5
         4: .line 214
      StackMap locals: java.util.Set java.util.List
      StackMap stack:
            new jdk.nashorn.internal.codegen.ApplySpecialization$TransformFailedException
            dup
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.ApplySpecialization$2.lc:Ljdk/nashorn/internal/ir/LexicalContext;
            invokevirtual jdk.nashorn.internal.ir.LexicalContext.getCurrentFunction:()Ljdk/nashorn/internal/ir/FunctionNode;
            new java.lang.StringBuilder
            dup
            ldc "argument pattern not matched: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* argList */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial jdk.nashorn.internal.codegen.ApplySpecialization$TransformFailedException.<init>:(Ljdk/nashorn/internal/ir/FunctionNode;Ljava/lang/String;)V
            athrow
         5: .line 216
      StackMap locals:
      StackMap stack:
            aload 2 /* callArgs */
            aload 1 /* callNode */
            invokevirtual jdk.nashorn.internal.ir.CallNode.getArgs:()Ljava/util/List;
            invokeinterface java.util.Set.addAll:(Ljava/util/Collection;)Z
            pop
        end local 3 // java.util.List argList
         6: .line 218
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.ApplySpecialization$2.val$stack:Ljava/util/Deque;
            aload 2 /* callArgs */
            invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
         7: .line 219
            iconst_1
            ireturn
        end local 2 // java.util.Set callArgs
        end local 1 // jdk.nashorn.internal.ir.CallNode callNode
        end local 0 // jdk.nashorn.internal.codegen.ApplySpecialization$2 this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    8     0      this  Ljdk/nashorn/internal/codegen/ApplySpecialization$2;
            0    8     1  callNode  Ljdk/nashorn/internal/ir/CallNode;
            1    8     2  callArgs  Ljava/util/Set<Ljdk/nashorn/internal/ir/Expression;>;
            3    6     3   argList  Ljava/util/List<Ljdk/nashorn/internal/ir/Expression;>;
    MethodParameters:
          Name  Flags
      callNode  final

  public jdk.nashorn.internal.ir.Node leaveCallNode(jdk.nashorn.internal.ir.CallNode);
    descriptor: (Ljdk/nashorn/internal/ir/CallNode;)Ljdk/nashorn/internal/ir/Node;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.codegen.ApplySpecialization$2 this
        start local 1 // jdk.nashorn.internal.ir.CallNode callNode
         0: .line 224
            aload 0 /* this */
            getfield jdk.nashorn.internal.codegen.ApplySpecialization$2.val$stack:Ljava/util/Deque;
            invokeinterface java.util.Deque.pop:()Ljava/lang/Object;
            pop
         1: .line 225
            aload 1 /* callNode */
            areturn
        end local 1 // jdk.nashorn.internal.ir.CallNode callNode
        end local 0 // jdk.nashorn.internal.codegen.ApplySpecialization$2 this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Ljdk/nashorn/internal/codegen/ApplySpecialization$2;
            0    2     1  callNode  Ljdk/nashorn/internal/ir/CallNode;
    MethodParameters:
          Name  Flags
      callNode  final
}
SourceFile: "ApplySpecialization.java"
EnclosingMethod: jdk.nashorn.internal.codegen.ApplySpecialization.checkValidTransform:(Ljdk/nashorn/internal/ir/FunctionNode;)V
NestHost: jdk.nashorn.internal.codegen.ApplySpecialization
InnerClasses:
  jdk.nashorn.internal.codegen.ApplySpecialization$2
  private TransformFailedException = jdk.nashorn.internal.codegen.ApplySpecialization$TransformFailedException of jdk.nashorn.internal.codegen.ApplySpecialization