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.DebugCounter counterNodesRemoved;
    descriptor: Lorg/graalvm/compiler/debug/DebugCounter;
    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 36
            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 46
            ldc "NodesRemoved"
            invokestatic org.graalvm.compiler.debug.Debug.counter:(Ljava/lang/CharSequence;)Lorg/graalvm/compiler/debug/DebugCounter;
            putstatic org.graalvm.compiler.phases.common.DeadCodeEliminationPhase.counterNodesRemoved:Lorg/graalvm/compiler/debug/DebugCounter;
            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 58
            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 59
            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 65
            aload 0 /* this */
            invokespecial org.graalvm.compiler.phases.Phase.<init>:()V
         1: .line 66
            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 67
            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=5, args_size=2
        start local 0 // org.graalvm.compiler.phases.common.DeadCodeEliminationPhase this
        start local 1 // org.graalvm.compiler.nodes.StructuredGraph graph
         0: .line 73
            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/OptionValue;
            invokevirtual org.graalvm.compiler.options.OptionValue.getValue:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 2
         1: .line 74
            return
         2: .line 77
      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 78
            aload 1 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getNodeCount:()I
            istore 3 /* totalNodeCount */
        start local 3 // int totalNodeCount
         4: .line 79
            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 80
            aload 2 /* flood */
            invokestatic org.graalvm.compiler.phases.common.DeadCodeEliminationPhase.iterateSuccessorsAndInputs:(Lorg/graalvm/compiler/graph/NodeFlood;)V
         6: .line 81
            aload 2 /* flood */
            invokevirtual org.graalvm.compiler.graph.NodeFlood.getTotalMarkedCount:()I
            istore 4 /* totalMarkedCount */
        start local 4 // int totalMarkedCount
         7: .line 82
            iload 3 /* totalNodeCount */
            iload 4 /* totalMarkedCount */
            if_icmpne 9
         8: .line 84
            return
         9: .line 87
      StackMap locals: org.graalvm.compiler.graph.NodeFlood int int
      StackMap stack:
            getstatic org.graalvm.compiler.phases.common.DeadCodeEliminationPhase.$assertionsDisabled:Z
            ifne 10
            iload 3 /* totalNodeCount */
            iload 4 /* totalMarkedCount */
            if_icmpgt 10
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        10: .line 90
      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
        11: .line 91
            return
        end local 4 // int totalMarkedCount
        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   12     0              this  Lorg/graalvm/compiler/phases/common/DeadCodeEliminationPhase;
            0   12     1             graph  Lorg/graalvm/compiler/nodes/StructuredGraph;
            3   12     2             flood  Lorg/graalvm/compiler/graph/NodeFlood;
            4   12     3    totalNodeCount  I
            7   12     4  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 94
            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 102
            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 103
            aload 2 /* current */
            instanceof org.graalvm.compiler.nodes.AbstractEndNode
            ifeq 7
         4: .line 104
            aload 2 /* current */
            checkcast org.graalvm.compiler.nodes.AbstractEndNode
            astore 4 /* end */
        start local 4 // org.graalvm.compiler.nodes.AbstractEndNode end
         5: .line 105
            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 106
            goto 9
         7: .line 107
      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 108
            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 102
      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 111
            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=5, args_size=2
        start local 0 // org.graalvm.compiler.graph.NodeFlood flood
        start local 1 // org.graalvm.compiler.nodes.StructuredGraph graph
         0: .line 114
            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 124
            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 4
            goto 7
      StackMap locals: org.graalvm.compiler.graph.NodeFlood org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.graph.Node$EdgeVisitor top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.compiler.graph.Node
            astore 3 /* node */
        start local 3 // org.graalvm.compiler.graph.Node node
         3: .line 125
            aload 0 /* flood */
            aload 3 /* node */
            invokevirtual org.graalvm.compiler.graph.NodeFlood.isMarked:(Lorg/graalvm/compiler/graph/Node;)Z
            ifne 7
         4: .line 126
            aload 3 /* node */
            invokevirtual org.graalvm.compiler.graph.Node.markDeleted:()V
         5: .line 127
            aload 3 /* node */
            aload 2 /* consumer */
            invokevirtual org.graalvm.compiler.graph.Node.applyInputs:(Lorg/graalvm/compiler/graph/Node$EdgeVisitor;)V
         6: .line 128
            getstatic org.graalvm.compiler.phases.common.DeadCodeEliminationPhase.counterNodesRemoved:Lorg/graalvm/compiler/debug/DebugCounter;
            invokeinterface org.graalvm.compiler.debug.DebugCounter.increment:()V
        end local 3 // org.graalvm.compiler.graph.Node node
         7: .line 124
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         8: .line 131
            return
        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    9     0     flood  Lorg/graalvm/compiler/graph/NodeFlood;
            0    9     1     graph  Lorg/graalvm/compiler/nodes/StructuredGraph;
            1    9     2  consumer  Lorg/graalvm/compiler/graph/Node$EdgeVisitor;
            3    7     3      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