public class org.graalvm.compiler.phases.common.DeadCodeEliminationPhase extends org.graalvm.compiler.phases.Phase
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.graalvm.compiler.phases.common.DeadCodeEliminationPhase
  super_class: org.graalvm.compiler.phases.Phase
{
  private static final org.graalvm.compiler.debug.CounterKey counterNodesRemoved;
    descriptor: Lorg/graalvm/compiler/debug/CounterKey;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final boolean optional;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 39
            ldc Lorg/graalvm/compiler/phases/common/DeadCodeEliminationPhase;
            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 org.graalvm.compiler.phases.common.DeadCodeEliminationPhase.$assertionsDisabled:Z
         3: .line 49
            ldc "NodesRemoved"
            invokestatic org.graalvm.compiler.debug.DebugContext.counter:(Ljava/lang/CharSequence;)Lorg/graalvm/compiler/debug/CounterKey;
            putstatic org.graalvm.compiler.phases.common.DeadCodeEliminationPhase.counterNodesRemoved:Lorg/graalvm/compiler/debug/CounterKey;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.phases.common.DeadCodeEliminationPhase this
         0: .line 61
            aload 0 /* this */
            getstatic org.graalvm.compiler.phases.common.DeadCodeEliminationPhase$Optionality.Required:Lorg/graalvm/compiler/phases/common/DeadCodeEliminationPhase$Optionality;
            invokespecial org.graalvm.compiler.phases.common.DeadCodeEliminationPhase.<init>:(Lorg/graalvm/compiler/phases/common/DeadCodeEliminationPhase$Optionality;)V
         1: .line 62
            return
        end local 0 // org.graalvm.compiler.phases.common.DeadCodeEliminationPhase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/phases/common/DeadCodeEliminationPhase;

  public void <init>(org.graalvm.compiler.phases.common.DeadCodeEliminationPhase$Optionality);
    descriptor: (Lorg/graalvm/compiler/phases/common/DeadCodeEliminationPhase$Optionality;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.phases.common.DeadCodeEliminationPhase this
        start local 1 // org.graalvm.compiler.phases.common.DeadCodeEliminationPhase$Optionality optionality
         0: .line 68
            aload 0 /* this */
            invokespecial org.graalvm.compiler.phases.Phase.<init>:()V
         1: .line 69
            aload 0 /* this */
            aload 1 /* optionality */
            getstatic org.graalvm.compiler.phases.common.DeadCodeEliminationPhase$Optionality.Optional:Lorg/graalvm/compiler/phases/common/DeadCodeEliminationPhase$Optionality;
            if_acmpne 2
            iconst_1
            goto 3
      StackMap locals: org.graalvm.compiler.phases.common.DeadCodeEliminationPhase org.graalvm.compiler.phases.common.DeadCodeEliminationPhase$Optionality
      StackMap stack: org.graalvm.compiler.phases.common.DeadCodeEliminationPhase
         2: iconst_0
      StackMap locals: org.graalvm.compiler.phases.common.DeadCodeEliminationPhase org.graalvm.compiler.phases.common.DeadCodeEliminationPhase$Optionality
      StackMap stack: org.graalvm.compiler.phases.common.DeadCodeEliminationPhase int
         3: putfield org.graalvm.compiler.phases.common.DeadCodeEliminationPhase.optional:Z
         4: .line 70
            return
        end local 1 // org.graalvm.compiler.phases.common.DeadCodeEliminationPhase$Optionality optionality
        end local 0 // org.graalvm.compiler.phases.common.DeadCodeEliminationPhase this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    5     0         this  Lorg/graalvm/compiler/phases/common/DeadCodeEliminationPhase;
            0    5     1  optionality  Lorg/graalvm/compiler/phases/common/DeadCodeEliminationPhase$Optionality;
    MethodParameters:
             Name  Flags
      optionality  

  public void run(org.graalvm.compiler.nodes.StructuredGraph);
    descriptor: (Lorg/graalvm/compiler/nodes/StructuredGraph;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=7, args_size=2
        start local 0 // org.graalvm.compiler.phases.common.DeadCodeEliminationPhase this
        start local 1 // org.graalvm.compiler.nodes.StructuredGraph graph
         0: .line 76
            aload 0 /* this */
            getfield org.graalvm.compiler.phases.common.DeadCodeEliminationPhase.optional:Z
            ifeq 2
            getstatic org.graalvm.compiler.phases.common.DeadCodeEliminationPhase$Options.ReduceDCE:Lorg/graalvm/compiler/options/OptionKey;
            aload 1 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getOptions:()Lorg/graalvm/compiler/options/OptionValues;
            invokevirtual org.graalvm.compiler.options.OptionKey.getValue:(Lorg/graalvm/compiler/options/OptionValues;)Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 2
         1: .line 77
            return
         2: .line 80
      StackMap locals:
      StackMap stack:
            aload 1 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.createNodeFlood:()Lorg/graalvm/compiler/graph/NodeFlood;
            astore 2 /* flood */
        start local 2 // org.graalvm.compiler.graph.NodeFlood flood
         3: .line 81
            aload 1 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getNodeCount:()I
            istore 3 /* totalNodeCount */
        start local 3 // int totalNodeCount
         4: .line 82
            aload 2 /* flood */
            aload 1 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.start:()Lorg/graalvm/compiler/nodes/StartNode;
            invokevirtual org.graalvm.compiler.graph.NodeFlood.add:(Lorg/graalvm/compiler/graph/Node;)V
         5: .line 83
            aload 2 /* flood */
            invokestatic org.graalvm.compiler.phases.common.DeadCodeEliminationPhase.iterateSuccessorsAndInputs:(Lorg/graalvm/compiler/graph/NodeFlood;)V
         6: .line 84
            iconst_0
            istore 4 /* changed */
        start local 4 // boolean changed
         7: .line 85
            aload 1 /* graph */
            getstatic org.graalvm.compiler.nodes.GuardNode.TYPE:Lorg/graalvm/compiler/graph/NodeClass;
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getNodes:(Lorg/graalvm/compiler/graph/NodeClass;)Lorg/graalvm/compiler/graph/iterators/NodeIterable;
            invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
            astore 6
            goto 12
      StackMap locals: org.graalvm.compiler.phases.common.DeadCodeEliminationPhase org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.graph.NodeFlood int int top java.util.Iterator
      StackMap stack:
         8: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.compiler.nodes.GuardNode
            astore 5 /* guard */
        start local 5 // org.graalvm.compiler.nodes.GuardNode guard
         9: .line 86
            aload 2 /* flood */
            aload 5 /* guard */
            invokevirtual org.graalvm.compiler.nodes.GuardNode.getAnchor:()Lorg/graalvm/compiler/nodes/extended/AnchoringNode;
            invokeinterface org.graalvm.compiler.nodes.extended.AnchoringNode.asNode:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.graph.NodeFlood.isMarked:(Lorg/graalvm/compiler/graph/Node;)Z
            ifeq 12
        10: .line 87
            aload 2 /* flood */
            aload 5 /* guard */
            invokevirtual org.graalvm.compiler.graph.NodeFlood.add:(Lorg/graalvm/compiler/graph/Node;)V
        11: .line 88
            iconst_1
            istore 4 /* changed */
        end local 5 // org.graalvm.compiler.nodes.GuardNode guard
        12: .line 85
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        13: .line 91
            iload 4 /* changed */
            ifeq 15
        14: .line 92
            aload 2 /* flood */
            invokestatic org.graalvm.compiler.phases.common.DeadCodeEliminationPhase.iterateSuccessorsAndInputs:(Lorg/graalvm/compiler/graph/NodeFlood;)V
        15: .line 94
      StackMap locals: org.graalvm.compiler.phases.common.DeadCodeEliminationPhase org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.graph.NodeFlood int int
      StackMap stack:
            aload 2 /* flood */
            invokevirtual org.graalvm.compiler.graph.NodeFlood.getTotalMarkedCount:()I
            istore 5 /* totalMarkedCount */
        start local 5 // int totalMarkedCount
        16: .line 95
            iload 3 /* totalNodeCount */
            iload 5 /* totalMarkedCount */
            if_icmpne 18
        17: .line 97
            return
        18: .line 100
      StackMap locals: int
      StackMap stack:
            getstatic org.graalvm.compiler.phases.common.DeadCodeEliminationPhase.$assertionsDisabled:Z
            ifne 19
            iload 3 /* totalNodeCount */
            iload 5 /* totalMarkedCount */
            if_icmpgt 19
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        19: .line 103
      StackMap locals:
      StackMap stack:
            aload 2 /* flood */
            aload 1 /* graph */
            invokestatic org.graalvm.compiler.phases.common.DeadCodeEliminationPhase.deleteNodes:(Lorg/graalvm/compiler/graph/NodeFlood;Lorg/graalvm/compiler/nodes/StructuredGraph;)V
        20: .line 104
            return
        end local 5 // int totalMarkedCount
        end local 4 // boolean changed
        end local 3 // int totalNodeCount
        end local 2 // org.graalvm.compiler.graph.NodeFlood flood
        end local 1 // org.graalvm.compiler.nodes.StructuredGraph graph
        end local 0 // org.graalvm.compiler.phases.common.DeadCodeEliminationPhase this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   21     0              this  Lorg/graalvm/compiler/phases/common/DeadCodeEliminationPhase;
            0   21     1             graph  Lorg/graalvm/compiler/nodes/StructuredGraph;
            3   21     2             flood  Lorg/graalvm/compiler/graph/NodeFlood;
            4   21     3    totalNodeCount  I
            7   21     4           changed  Z
            9   12     5             guard  Lorg/graalvm/compiler/nodes/GuardNode;
           16   21     5  totalMarkedCount  I
    MethodParameters:
       Name  Flags
      graph  

  private static void iterateSuccessorsAndInputs(org.graalvm.compiler.graph.NodeFlood);
    descriptor: (Lorg/graalvm/compiler/graph/NodeFlood;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // org.graalvm.compiler.graph.NodeFlood flood
         0: .line 107
            new org.graalvm.compiler.phases.common.DeadCodeEliminationPhase$1
            dup
            aload 0 /* flood */
            invokespecial org.graalvm.compiler.phases.common.DeadCodeEliminationPhase$1.<init>:(Lorg/graalvm/compiler/graph/NodeFlood;)V
            astore 1 /* consumer */
        start local 1 // org.graalvm.compiler.graph.Node$EdgeVisitor consumer
         1: .line 116
            aload 0 /* flood */
            invokevirtual org.graalvm.compiler.graph.NodeFlood.iterator:()Ljava/util/Iterator;
            astore 3
            goto 9
      StackMap locals: org.graalvm.compiler.graph.NodeFlood org.graalvm.compiler.graph.Node$EdgeVisitor top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.compiler.graph.Node
            astore 2 /* current */
        start local 2 // org.graalvm.compiler.graph.Node current
         3: .line 117
            aload 2 /* current */
            instanceof org.graalvm.compiler.nodes.AbstractEndNode
            ifeq 7
         4: .line 118
            aload 2 /* current */
            checkcast org.graalvm.compiler.nodes.AbstractEndNode
            astore 4 /* end */
        start local 4 // org.graalvm.compiler.nodes.AbstractEndNode end
         5: .line 119
            aload 0 /* flood */
            aload 4 /* end */
            invokevirtual org.graalvm.compiler.nodes.AbstractEndNode.merge:()Lorg/graalvm/compiler/nodes/AbstractMergeNode;
            invokevirtual org.graalvm.compiler.graph.NodeFlood.add:(Lorg/graalvm/compiler/graph/Node;)V
        end local 4 // org.graalvm.compiler.nodes.AbstractEndNode end
         6: .line 120
            goto 9
         7: .line 121
      StackMap locals: org.graalvm.compiler.graph.NodeFlood org.graalvm.compiler.graph.Node$EdgeVisitor org.graalvm.compiler.graph.Node java.util.Iterator
      StackMap stack:
            aload 2 /* current */
            aload 1 /* consumer */
            invokevirtual org.graalvm.compiler.graph.Node.applySuccessors:(Lorg/graalvm/compiler/graph/Node$EdgeVisitor;)V
         8: .line 122
            aload 2 /* current */
            aload 1 /* consumer */
            invokevirtual org.graalvm.compiler.graph.Node.applyInputs:(Lorg/graalvm/compiler/graph/Node$EdgeVisitor;)V
        end local 2 // org.graalvm.compiler.graph.Node current
         9: .line 116
      StackMap locals: org.graalvm.compiler.graph.NodeFlood org.graalvm.compiler.graph.Node$EdgeVisitor top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
        10: .line 125
            return
        end local 1 // org.graalvm.compiler.graph.Node$EdgeVisitor consumer
        end local 0 // org.graalvm.compiler.graph.NodeFlood flood
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   11     0     flood  Lorg/graalvm/compiler/graph/NodeFlood;
            1   11     1  consumer  Lorg/graalvm/compiler/graph/Node$EdgeVisitor;
            3    9     2   current  Lorg/graalvm/compiler/graph/Node;
            5    6     4       end  Lorg/graalvm/compiler/nodes/AbstractEndNode;
    MethodParameters:
       Name  Flags
      flood  

  private static void deleteNodes(org.graalvm.compiler.graph.NodeFlood, org.graalvm.compiler.nodes.StructuredGraph);
    descriptor: (Lorg/graalvm/compiler/graph/NodeFlood;Lorg/graalvm/compiler/nodes/StructuredGraph;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // org.graalvm.compiler.graph.NodeFlood flood
        start local 1 // org.graalvm.compiler.nodes.StructuredGraph graph
         0: .line 128
            new org.graalvm.compiler.phases.common.DeadCodeEliminationPhase$2
            dup
            aload 0 /* flood */
            invokespecial org.graalvm.compiler.phases.common.DeadCodeEliminationPhase$2.<init>:(Lorg/graalvm/compiler/graph/NodeFlood;)V
            astore 2 /* consumer */
        start local 2 // org.graalvm.compiler.graph.Node$EdgeVisitor consumer
         1: .line 138
            aload 1 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
            astore 3 /* debug */
        start local 3 // org.graalvm.compiler.debug.DebugContext debug
         2: .line 139
            aload 1 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getNodes:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
            invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
            astore 5
            goto 8
      StackMap locals: org.graalvm.compiler.graph.NodeFlood org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.graph.Node$EdgeVisitor org.graalvm.compiler.debug.DebugContext top java.util.Iterator
      StackMap stack:
         3: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.compiler.graph.Node
            astore 4 /* node */
        start local 4 // org.graalvm.compiler.graph.Node node
         4: .line 140
            aload 0 /* flood */
            aload 4 /* node */
            invokevirtual org.graalvm.compiler.graph.NodeFlood.isMarked:(Lorg/graalvm/compiler/graph/Node;)Z
            ifne 8
         5: .line 141
            aload 4 /* node */
            invokevirtual org.graalvm.compiler.graph.Node.markDeleted:()V
         6: .line 142
            aload 4 /* node */
            aload 2 /* consumer */
            invokevirtual org.graalvm.compiler.graph.Node.applyInputs:(Lorg/graalvm/compiler/graph/Node$EdgeVisitor;)V
         7: .line 143
            getstatic org.graalvm.compiler.phases.common.DeadCodeEliminationPhase.counterNodesRemoved:Lorg/graalvm/compiler/debug/CounterKey;
            aload 3 /* debug */
            invokeinterface org.graalvm.compiler.debug.CounterKey.increment:(Lorg/graalvm/compiler/debug/DebugContext;)V
        end local 4 // org.graalvm.compiler.graph.Node node
         8: .line 139
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         9: .line 146
            return
        end local 3 // org.graalvm.compiler.debug.DebugContext debug
        end local 2 // org.graalvm.compiler.graph.Node$EdgeVisitor consumer
        end local 1 // org.graalvm.compiler.nodes.StructuredGraph graph
        end local 0 // org.graalvm.compiler.graph.NodeFlood flood
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   10     0     flood  Lorg/graalvm/compiler/graph/NodeFlood;
            0   10     1     graph  Lorg/graalvm/compiler/nodes/StructuredGraph;
            1   10     2  consumer  Lorg/graalvm/compiler/graph/Node$EdgeVisitor;
            2   10     3     debug  Lorg/graalvm/compiler/debug/DebugContext;
            4    8     4      node  Lorg/graalvm/compiler/graph/Node;
    MethodParameters:
       Name  Flags
      flood  
      graph  
}
SourceFile: "DeadCodeEliminationPhase.java"
NestMembers:
  org.graalvm.compiler.phases.common.DeadCodeEliminationPhase$1  org.graalvm.compiler.phases.common.DeadCodeEliminationPhase$2  org.graalvm.compiler.phases.common.DeadCodeEliminationPhase$Optionality  org.graalvm.compiler.phases.common.DeadCodeEliminationPhase$Options
InnerClasses:
  public abstract EdgeVisitor = org.graalvm.compiler.graph.Node$EdgeVisitor of org.graalvm.compiler.graph.Node
  org.graalvm.compiler.phases.common.DeadCodeEliminationPhase$1
  org.graalvm.compiler.phases.common.DeadCodeEliminationPhase$2
  public final Optionality = org.graalvm.compiler.phases.common.DeadCodeEliminationPhase$Optionality of org.graalvm.compiler.phases.common.DeadCodeEliminationPhase
  public Options = org.graalvm.compiler.phases.common.DeadCodeEliminationPhase$Options of org.graalvm.compiler.phases.common.DeadCodeEliminationPhase