public class org.jruby.ir.representations.CFG
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.jruby.ir.representations.CFG
  super_class: java.lang.Object
{
  private static final org.jruby.util.log.Logger LOG;
    descriptor: Lorg/jruby/util/log/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private org.jruby.ir.IRScope scope;
    descriptor: Lorg/jruby/ir/IRScope;
    flags: (0x0002) ACC_PRIVATE

  private java.util.Map<org.jruby.ir.operands.Label, org.jruby.ir.representations.BasicBlock> bbMap;
    descriptor: Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Map<Lorg/jruby/ir/operands/Label;Lorg/jruby/ir/representations/BasicBlock;>;

  private java.util.Map<org.jruby.ir.representations.BasicBlock, org.jruby.ir.representations.BasicBlock> rescuerMap;
    descriptor: Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Map<Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;>;

  private org.jruby.ir.representations.BasicBlock entryBB;
    descriptor: Lorg/jruby/ir/representations/BasicBlock;
    flags: (0x0002) ACC_PRIVATE

  private org.jruby.ir.representations.BasicBlock exitBB;
    descriptor: Lorg/jruby/ir/representations/BasicBlock;
    flags: (0x0002) ACC_PRIVATE

  private org.jruby.ir.representations.BasicBlock globalEnsureBB;
    descriptor: Lorg/jruby/ir/representations/BasicBlock;
    flags: (0x0002) ACC_PRIVATE

  private org.jruby.dirgra.DirectedGraph<org.jruby.ir.representations.BasicBlock> graph;
    descriptor: Lorg/jruby/dirgra/DirectedGraph;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lorg/jruby/dirgra/DirectedGraph<Lorg/jruby/ir/representations/BasicBlock;>;

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

  java.util.LinkedList<org.jruby.ir.representations.BasicBlock> postOrderList;
    descriptor: Ljava/util/LinkedList;
    flags: (0x0000) 
    Signature: Ljava/util/LinkedList<Lorg/jruby/ir/representations/BasicBlock;>;

  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 24
            ldc Lorg/jruby/ir/representations/CFG;
            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.jruby.ir.representations.CFG.$assertionsDisabled:Z
         3: .line 32
            ldc Lorg/jruby/ir/representations/CFG;
            invokestatic org.jruby.util.log.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/jruby/util/log/Logger;
            putstatic org.jruby.ir.representations.CFG.LOG:Lorg/jruby/util/log/Logger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.jruby.ir.IRScope);
    descriptor: (Lorg/jruby/ir/IRScope;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // org.jruby.ir.IRScope scope
         0: .line 56
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 57
            aload 0 /* this */
            aload 1 /* scope */
            putfield org.jruby.ir.representations.CFG.scope:Lorg/jruby/ir/IRScope;
         2: .line 58
            aload 0 /* this */
            new org.jruby.dirgra.DirectedGraph
            dup
            invokespecial org.jruby.dirgra.DirectedGraph.<init>:()V
            putfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
         3: .line 59
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield org.jruby.ir.representations.CFG.bbMap:Ljava/util/Map;
         4: .line 60
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield org.jruby.ir.representations.CFG.rescuerMap:Ljava/util/Map;
         5: .line 61
            aload 0 /* this */
            iconst_0
            putfield org.jruby.ir.representations.CFG.nextBBId:I
         6: .line 62
            aload 0 /* this */
            aload 0 /* this */
            aconst_null
            dup_x1
            putfield org.jruby.ir.representations.CFG.exitBB:Lorg/jruby/ir/representations/BasicBlock;
            putfield org.jruby.ir.representations.CFG.entryBB:Lorg/jruby/ir/representations/BasicBlock;
         7: .line 63
            aload 0 /* this */
            aconst_null
            putfield org.jruby.ir.representations.CFG.globalEnsureBB:Lorg/jruby/ir/representations/BasicBlock;
         8: .line 64
            aload 0 /* this */
            aconst_null
            putfield org.jruby.ir.representations.CFG.postOrderList:Ljava/util/LinkedList;
         9: .line 65
            return
        end local 1 // org.jruby.ir.IRScope scope
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   10     0   this  Lorg/jruby/ir/representations/CFG;
            0   10     1  scope  Lorg/jruby/ir/IRScope;
    MethodParameters:
       Name  Flags
      scope  

  public int getNextBBID();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.jruby.ir.representations.CFG this
         0: .line 68
            aload 0 /* this */
            dup
            getfield org.jruby.ir.representations.CFG.nextBBId:I
            iconst_1
            iadd
            putfield org.jruby.ir.representations.CFG.nextBBId:I
         1: .line 69
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.nextBBId:I
            ireturn
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/jruby/ir/representations/CFG;

  public org.jruby.ir.IRManager getManager();
    descriptor: ()Lorg/jruby/ir/IRManager;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.ir.representations.CFG this
         0: .line 73
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.scope:Lorg/jruby/ir/IRScope;
            invokevirtual org.jruby.ir.IRScope.getManager:()Lorg/jruby/ir/IRManager;
            areturn
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/ir/representations/CFG;

  public int getMaxNodeID();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.ir.representations.CFG this
         0: .line 77
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.nextBBId:I
            ireturn
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/ir/representations/CFG;

  public boolean bbIsProtected(org.jruby.ir.representations.BasicBlock);
    descriptor: (Lorg/jruby/ir/representations/BasicBlock;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // org.jruby.ir.representations.BasicBlock b
         0: .line 81
            aload 0 /* this */
            aload 1 /* b */
            invokevirtual org.jruby.ir.representations.CFG.getRescuerBBFor:(Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // org.jruby.ir.representations.BasicBlock b
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/jruby/ir/representations/CFG;
            0    2     1     b  Lorg/jruby/ir/representations/BasicBlock;
    MethodParameters:
      Name  Flags
      b     

  public org.jruby.ir.representations.BasicBlock getBBForLabel(org.jruby.ir.operands.Label);
    descriptor: (Lorg/jruby/ir/operands/Label;)Lorg/jruby/ir/representations/BasicBlock;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // org.jruby.ir.operands.Label label
         0: .line 85
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.bbMap:Ljava/util/Map;
            aload 1 /* label */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            areturn
        end local 1 // org.jruby.ir.operands.Label label
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/jruby/ir/representations/CFG;
            0    1     1  label  Lorg/jruby/ir/operands/Label;
    MethodParameters:
       Name  Flags
      label  

  public org.jruby.ir.representations.BasicBlock getEntryBB();
    descriptor: ()Lorg/jruby/ir/representations/BasicBlock;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.ir.representations.CFG this
         0: .line 89
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.entryBB:Lorg/jruby/ir/representations/BasicBlock;
            areturn
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/ir/representations/CFG;

  public org.jruby.ir.representations.BasicBlock getExitBB();
    descriptor: ()Lorg/jruby/ir/representations/BasicBlock;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.ir.representations.CFG this
         0: .line 93
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.exitBB:Lorg/jruby/ir/representations/BasicBlock;
            areturn
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/ir/representations/CFG;

  public org.jruby.ir.representations.BasicBlock getGlobalEnsureBB();
    descriptor: ()Lorg/jruby/ir/representations/BasicBlock;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.ir.representations.CFG this
         0: .line 97
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.globalEnsureBB:Lorg/jruby/ir/representations/BasicBlock;
            areturn
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/ir/representations/CFG;

  public java.util.LinkedList<org.jruby.ir.representations.BasicBlock> postOrderList();
    descriptor: ()Ljava/util/LinkedList;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.jruby.ir.representations.CFG this
         0: .line 103
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.postOrderList:Ljava/util/LinkedList;
            ifnonnull 1
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.jruby.ir.representations.CFG.buildPostOrderList:()Ljava/util/LinkedList;
            putfield org.jruby.ir.representations.CFG.postOrderList:Ljava/util/LinkedList;
         1: .line 104
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.postOrderList:Ljava/util/LinkedList;
            areturn
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/jruby/ir/representations/CFG;
    Signature: ()Ljava/util/LinkedList<Lorg/jruby/ir/representations/BasicBlock;>;

  public java.util.Iterator<org.jruby.ir.representations.BasicBlock> getPostOrderTraverser();
    descriptor: ()Ljava/util/Iterator;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.ir.representations.CFG this
         0: .line 108
            aload 0 /* this */
            invokevirtual org.jruby.ir.representations.CFG.postOrderList:()Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.iterator:()Ljava/util/Iterator;
            areturn
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/ir/representations/CFG;
    Signature: ()Ljava/util/Iterator<Lorg/jruby/ir/representations/BasicBlock;>;

  public java.util.Iterator<org.jruby.ir.representations.BasicBlock> getReversePostOrderTraverser();
    descriptor: ()Ljava/util/Iterator;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.ir.representations.CFG this
         0: .line 112
            aload 0 /* this */
            invokevirtual org.jruby.ir.representations.CFG.postOrderList:()Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.descendingIterator:()Ljava/util/Iterator;
            areturn
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/ir/representations/CFG;
    Signature: ()Ljava/util/Iterator<Lorg/jruby/ir/representations/BasicBlock;>;

  public void resetState();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.jruby.ir.representations.CFG this
         0: .line 117
            aload 0 /* this */
            aconst_null
            putfield org.jruby.ir.representations.CFG.postOrderList:Ljava/util/LinkedList;
         1: .line 118
            return
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/jruby/ir/representations/CFG;

  public org.jruby.ir.IRScope getScope();
    descriptor: ()Lorg/jruby/ir/IRScope;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.ir.representations.CFG this
         0: .line 121
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.scope:Lorg/jruby/ir/IRScope;
            areturn
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/ir/representations/CFG;

  public int size();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.ir.representations.CFG this
         0: .line 128
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            invokevirtual org.jruby.dirgra.DirectedGraph.size:()I
            ireturn
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/ir/representations/CFG;

  public java.util.Collection<org.jruby.ir.representations.BasicBlock> getBasicBlocks();
    descriptor: ()Ljava/util/Collection;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.ir.representations.CFG this
         0: .line 132
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            invokevirtual org.jruby.dirgra.DirectedGraph.allData:()Ljava/util/Collection;
            areturn
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/ir/representations/CFG;
    Signature: ()Ljava/util/Collection<Lorg/jruby/ir/representations/BasicBlock;>;

  public java.util.Collection<org.jruby.ir.representations.BasicBlock> getSortedBasicBlocks();
    descriptor: ()Ljava/util/Collection;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.ir.representations.CFG this
         0: .line 136
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            invokevirtual org.jruby.dirgra.DirectedGraph.getInorderData:()Ljava/util/Collection;
            areturn
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/ir/representations/CFG;
    Signature: ()Ljava/util/Collection<Lorg/jruby/ir/representations/BasicBlock;>;

  public void addEdge(org.jruby.ir.representations.BasicBlock, org.jruby.ir.representations.BasicBlock, java.lang.Object);
    descriptor: (Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // org.jruby.ir.representations.BasicBlock source
        start local 2 // org.jruby.ir.representations.BasicBlock destination
        start local 3 // java.lang.Object type
         0: .line 140
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 1 /* source */
            invokevirtual org.jruby.dirgra.DirectedGraph.findOrCreateVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
            aload 2 /* destination */
            aload 3 /* type */
            invokevirtual org.jruby.dirgra.Vertex.addEdgeTo:(Lorg/jruby/dirgra/ExplicitVertexID;Ljava/lang/Object;)V
         1: .line 141
            return
        end local 3 // java.lang.Object type
        end local 2 // org.jruby.ir.representations.BasicBlock destination
        end local 1 // org.jruby.ir.representations.BasicBlock source
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lorg/jruby/ir/representations/CFG;
            0    2     1       source  Lorg/jruby/ir/representations/BasicBlock;
            0    2     2  destination  Lorg/jruby/ir/representations/BasicBlock;
            0    2     3         type  Ljava/lang/Object;
    MethodParameters:
             Name  Flags
      source       
      destination  
      type         

  public int inDegree(org.jruby.ir.representations.BasicBlock);
    descriptor: (Lorg/jruby/ir/representations/BasicBlock;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // org.jruby.ir.representations.BasicBlock b
         0: .line 144
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 1 /* b */
            invokevirtual org.jruby.dirgra.DirectedGraph.findVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
            invokevirtual org.jruby.dirgra.Vertex.inDegree:()I
            ireturn
        end local 1 // org.jruby.ir.representations.BasicBlock b
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/ir/representations/CFG;
            0    1     1     b  Lorg/jruby/ir/representations/BasicBlock;
    MethodParameters:
      Name  Flags
      b     

  public int outDegree(org.jruby.ir.representations.BasicBlock);
    descriptor: (Lorg/jruby/ir/representations/BasicBlock;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // org.jruby.ir.representations.BasicBlock b
         0: .line 148
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 1 /* b */
            invokevirtual org.jruby.dirgra.DirectedGraph.findVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
            invokevirtual org.jruby.dirgra.Vertex.outDegree:()I
            ireturn
        end local 1 // org.jruby.ir.representations.BasicBlock b
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/ir/representations/CFG;
            0    1     1     b  Lorg/jruby/ir/representations/BasicBlock;
    MethodParameters:
      Name  Flags
      b     

  public java.lang.Iterable<org.jruby.ir.representations.BasicBlock> getIncomingSources(org.jruby.ir.representations.BasicBlock);
    descriptor: (Lorg/jruby/ir/representations/BasicBlock;)Ljava/lang/Iterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // org.jruby.ir.representations.BasicBlock block
         0: .line 152
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 1 /* block */
            invokevirtual org.jruby.dirgra.DirectedGraph.findVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
            invokevirtual org.jruby.dirgra.Vertex.getIncomingSourcesData:()Ljava/lang/Iterable;
            areturn
        end local 1 // org.jruby.ir.representations.BasicBlock block
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/jruby/ir/representations/CFG;
            0    1     1  block  Lorg/jruby/ir/representations/BasicBlock;
    Signature: (Lorg/jruby/ir/representations/BasicBlock;)Ljava/lang/Iterable<Lorg/jruby/ir/representations/BasicBlock;>;
    MethodParameters:
       Name  Flags
      block  

  public java.lang.Iterable<org.jruby.dirgra.Edge<org.jruby.ir.representations.BasicBlock>> getIncomingEdges(org.jruby.ir.representations.BasicBlock);
    descriptor: (Lorg/jruby/ir/representations/BasicBlock;)Ljava/lang/Iterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // org.jruby.ir.representations.BasicBlock block
         0: .line 156
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 1 /* block */
            invokevirtual org.jruby.dirgra.DirectedGraph.findVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
            invokevirtual org.jruby.dirgra.Vertex.getIncomingEdges:()Ljava/util/Collection;
            areturn
        end local 1 // org.jruby.ir.representations.BasicBlock block
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/jruby/ir/representations/CFG;
            0    1     1  block  Lorg/jruby/ir/representations/BasicBlock;
    Signature: (Lorg/jruby/ir/representations/BasicBlock;)Ljava/lang/Iterable<Lorg/jruby/dirgra/Edge<Lorg/jruby/ir/representations/BasicBlock;>;>;
    MethodParameters:
       Name  Flags
      block  

  public org.jruby.ir.representations.BasicBlock getIncomingSourceOfType(org.jruby.ir.representations.BasicBlock, java.lang.Object);
    descriptor: (Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)Lorg/jruby/ir/representations/BasicBlock;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // org.jruby.ir.representations.BasicBlock block
        start local 2 // java.lang.Object type
         0: .line 160
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 1 /* block */
            invokevirtual org.jruby.dirgra.DirectedGraph.findVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
            aload 2 /* type */
            invokevirtual org.jruby.dirgra.Vertex.getIncomingSourceDataOfType:(Ljava/lang/Object;)Lorg/jruby/dirgra/ExplicitVertexID;
            checkcast org.jruby.ir.representations.BasicBlock
            areturn
        end local 2 // java.lang.Object type
        end local 1 // org.jruby.ir.representations.BasicBlock block
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/jruby/ir/representations/CFG;
            0    1     1  block  Lorg/jruby/ir/representations/BasicBlock;
            0    1     2   type  Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      block  
      type   

  public org.jruby.ir.representations.BasicBlock getOutgoingDestinationOfType(org.jruby.ir.representations.BasicBlock, java.lang.Object);
    descriptor: (Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)Lorg/jruby/ir/representations/BasicBlock;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // org.jruby.ir.representations.BasicBlock block
        start local 2 // java.lang.Object type
         0: .line 164
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 1 /* block */
            invokevirtual org.jruby.dirgra.DirectedGraph.findVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
            aload 2 /* type */
            invokevirtual org.jruby.dirgra.Vertex.getOutgoingDestinationDataOfType:(Ljava/lang/Object;)Lorg/jruby/dirgra/ExplicitVertexID;
            checkcast org.jruby.ir.representations.BasicBlock
            areturn
        end local 2 // java.lang.Object type
        end local 1 // org.jruby.ir.representations.BasicBlock block
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/jruby/ir/representations/CFG;
            0    1     1  block  Lorg/jruby/ir/representations/BasicBlock;
            0    1     2   type  Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      block  
      type   

  public java.lang.Iterable<org.jruby.ir.representations.BasicBlock> getOutgoingDestinations(org.jruby.ir.representations.BasicBlock);
    descriptor: (Lorg/jruby/ir/representations/BasicBlock;)Ljava/lang/Iterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // org.jruby.ir.representations.BasicBlock block
         0: .line 168
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 1 /* block */
            invokevirtual org.jruby.dirgra.DirectedGraph.findVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
            invokevirtual org.jruby.dirgra.Vertex.getOutgoingDestinationsData:()Ljava/lang/Iterable;
            areturn
        end local 1 // org.jruby.ir.representations.BasicBlock block
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/jruby/ir/representations/CFG;
            0    1     1  block  Lorg/jruby/ir/representations/BasicBlock;
    Signature: (Lorg/jruby/ir/representations/BasicBlock;)Ljava/lang/Iterable<Lorg/jruby/ir/representations/BasicBlock;>;
    MethodParameters:
       Name  Flags
      block  

  public java.lang.Iterable<org.jruby.ir.representations.BasicBlock> getOutgoingDestinationsOfType(org.jruby.ir.representations.BasicBlock, );
    descriptor: (Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)Ljava/lang/Iterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // org.jruby.ir.representations.BasicBlock block
        start local 2 // java.lang.Object type
         0: .line 172
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 1 /* block */
            invokevirtual org.jruby.dirgra.DirectedGraph.findVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
            aload 2 /* type */
            invokevirtual org.jruby.dirgra.Vertex.getOutgoingDestinationsDataOfType:(Ljava/lang/Object;)Ljava/lang/Iterable;
            areturn
        end local 2 // java.lang.Object type
        end local 1 // org.jruby.ir.representations.BasicBlock block
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/jruby/ir/representations/CFG;
            0    1     1  block  Lorg/jruby/ir/representations/BasicBlock;
            0    1     2   type  Ljava/lang/Object;
    Signature: (Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)Ljava/lang/Iterable<Lorg/jruby/ir/representations/BasicBlock;>;
    MethodParameters:
       Name  Flags
      block  
      type   

  public java.lang.Iterable<org.jruby.ir.representations.BasicBlock> getOutgoingDestinationsNotOfType(org.jruby.ir.representations.BasicBlock, );
    descriptor: (Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)Ljava/lang/Iterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // org.jruby.ir.representations.BasicBlock block
        start local 2 // java.lang.Object type
         0: .line 176
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 1 /* block */
            invokevirtual org.jruby.dirgra.DirectedGraph.findVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
            aload 2 /* type */
            invokevirtual org.jruby.dirgra.Vertex.getOutgoingDestinationsDataNotOfType:(Ljava/lang/Object;)Ljava/lang/Iterable;
            areturn
        end local 2 // java.lang.Object type
        end local 1 // org.jruby.ir.representations.BasicBlock block
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/jruby/ir/representations/CFG;
            0    1     1  block  Lorg/jruby/ir/representations/BasicBlock;
            0    1     2   type  Ljava/lang/Object;
    Signature: (Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)Ljava/lang/Iterable<Lorg/jruby/ir/representations/BasicBlock;>;
    MethodParameters:
       Name  Flags
      block  
      type   

  public java.util.Collection<org.jruby.dirgra.Edge<org.jruby.ir.representations.BasicBlock>> getOutgoingEdges(org.jruby.ir.representations.BasicBlock);
    descriptor: (Lorg/jruby/ir/representations/BasicBlock;)Ljava/util/Collection;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // org.jruby.ir.representations.BasicBlock block
         0: .line 180
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 1 /* block */
            invokevirtual org.jruby.dirgra.DirectedGraph.findVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
            invokevirtual org.jruby.dirgra.Vertex.getOutgoingEdges:()Ljava/util/Collection;
            areturn
        end local 1 // org.jruby.ir.representations.BasicBlock block
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/jruby/ir/representations/CFG;
            0    1     1  block  Lorg/jruby/ir/representations/BasicBlock;
    Signature: (Lorg/jruby/ir/representations/BasicBlock;)Ljava/util/Collection<Lorg/jruby/dirgra/Edge<Lorg/jruby/ir/representations/BasicBlock;>;>;
    MethodParameters:
       Name  Flags
      block  

  public org.jruby.ir.representations.BasicBlock getRescuerBBFor(org.jruby.ir.representations.BasicBlock);
    descriptor: (Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // org.jruby.ir.representations.BasicBlock block
         0: .line 184
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.rescuerMap:Ljava/util/Map;
            aload 1 /* block */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            areturn
        end local 1 // org.jruby.ir.representations.BasicBlock block
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/jruby/ir/representations/CFG;
            0    1     1  block  Lorg/jruby/ir/representations/BasicBlock;
    MethodParameters:
       Name  Flags
      block  

  public void addGlobalEnsureBB(org.jruby.ir.representations.BasicBlock);
    descriptor: (Lorg/jruby/ir/representations/BasicBlock;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // org.jruby.ir.representations.BasicBlock geb
         0: .line 189
            getstatic org.jruby.ir.representations.CFG.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.globalEnsureBB:Lorg/jruby/ir/representations/BasicBlock;
            ifnull 1
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "CFG for scope "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual org.jruby.ir.representations.CFG.getScope:()Lorg/jruby/ir/IRScope;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " already has a global ensure block."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         1: .line 191
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* geb */
            invokevirtual org.jruby.ir.representations.CFG.addBasicBlock:(Lorg/jruby/ir/representations/BasicBlock;)V
         2: .line 192
            aload 0 /* this */
            aload 1 /* geb */
            aload 0 /* this */
            invokevirtual org.jruby.ir.representations.CFG.getExitBB:()Lorg/jruby/ir/representations/BasicBlock;
            getstatic org.jruby.ir.representations.CFG$EdgeType.EXIT:Lorg/jruby/ir/representations/CFG$EdgeType;
            invokevirtual org.jruby.ir.representations.CFG.addEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)V
         3: .line 194
            aload 0 /* this */
            invokevirtual org.jruby.ir.representations.CFG.getBasicBlocks:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 3
            goto 8
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock top java.util.Iterator
      StackMap stack:
         4: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            astore 2 /* b */
        start local 2 // org.jruby.ir.representations.BasicBlock b
         5: .line 195
            aload 2 /* b */
            aload 1 /* geb */
            if_acmpeq 8
            aload 0 /* this */
            aload 2 /* b */
            invokevirtual org.jruby.ir.representations.CFG.bbIsProtected:(Lorg/jruby/ir/representations/BasicBlock;)Z
            ifne 8
            aload 2 /* b */
            aload 0 /* this */
            invokevirtual org.jruby.ir.representations.CFG.getEntryBB:()Lorg/jruby/ir/representations/BasicBlock;
            if_acmpeq 8
         6: .line 196
            aload 0 /* this */
            aload 2 /* b */
            aload 1 /* geb */
            getstatic org.jruby.ir.representations.CFG$EdgeType.EXCEPTION:Lorg/jruby/ir/representations/CFG$EdgeType;
            invokevirtual org.jruby.ir.representations.CFG.addEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)V
         7: .line 197
            aload 0 /* this */
            aload 2 /* b */
            aload 1 /* geb */
            invokevirtual org.jruby.ir.representations.CFG.setRescuerBB:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)V
        end local 2 // org.jruby.ir.representations.BasicBlock b
         8: .line 194
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
         9: .line 201
            aload 0 /* this */
            aload 1 /* geb */
            putfield org.jruby.ir.representations.CFG.globalEnsureBB:Lorg/jruby/ir/representations/BasicBlock;
        10: .line 202
            return
        end local 1 // org.jruby.ir.representations.BasicBlock geb
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lorg/jruby/ir/representations/CFG;
            0   11     1   geb  Lorg/jruby/ir/representations/BasicBlock;
            5    8     2     b  Lorg/jruby/ir/representations/BasicBlock;
    MethodParameters:
      Name  Flags
      geb   

  public void setRescuerBB(org.jruby.ir.representations.BasicBlock, org.jruby.ir.representations.BasicBlock);
    descriptor: (Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // org.jruby.ir.representations.BasicBlock block
        start local 2 // org.jruby.ir.representations.BasicBlock rescuerBlock
         0: .line 205
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.rescuerMap:Ljava/util/Map;
            aload 1 /* block */
            aload 2 /* rescuerBlock */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 206
            return
        end local 2 // org.jruby.ir.representations.BasicBlock rescuerBlock
        end local 1 // org.jruby.ir.representations.BasicBlock block
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lorg/jruby/ir/representations/CFG;
            0    2     1         block  Lorg/jruby/ir/representations/BasicBlock;
            0    2     2  rescuerBlock  Lorg/jruby/ir/representations/BasicBlock;
    MethodParameters:
              Name  Flags
      block         
      rescuerBlock  

  public org.jruby.dirgra.DirectedGraph<org.jruby.ir.representations.BasicBlock> build(org.jruby.ir.instructions.Instr[]);
    descriptor: ([Lorg/jruby/ir/instructions/Instr;)Lorg/jruby/dirgra/DirectedGraph;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=23, args_size=2
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // org.jruby.ir.instructions.Instr[] instrs
         0: .line 213
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 2 /* forwardRefs */
        start local 2 // java.util.Map forwardRefs
         1: .line 216
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 3 /* returnBBs */
        start local 3 // java.util.List returnBBs
         2: .line 219
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 4 /* exceptionBBs */
        start local 4 // java.util.List exceptionBBs
         3: .line 222
            new java.util.Stack
            dup
            invokespecial java.util.Stack.<init>:()V
            astore 5 /* nestedExceptionRegions */
        start local 5 // java.util.Stack nestedExceptionRegions
         4: .line 225
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 6 /* allExceptionRegions */
        start local 6 // java.util.List allExceptionRegions
         5: .line 228
            aload 0 /* this */
            aload 0 /* this */
            aload 5 /* nestedExceptionRegions */
            invokevirtual org.jruby.ir.representations.CFG.createBB:(Ljava/util/Stack;)Lorg/jruby/ir/representations/BasicBlock;
            putfield org.jruby.ir.representations.CFG.entryBB:Lorg/jruby/ir/representations/BasicBlock;
         6: .line 231
            aload 0 /* this */
            aload 5 /* nestedExceptionRegions */
            invokevirtual org.jruby.ir.representations.CFG.createBB:(Ljava/util/Stack;)Lorg/jruby/ir/representations/BasicBlock;
            astore 7 /* firstBB */
        start local 7 // org.jruby.ir.representations.BasicBlock firstBB
         7: .line 234
            aload 7 /* firstBB */
            astore 8 /* currBB */
        start local 8 // org.jruby.ir.representations.BasicBlock currBB
         8: .line 236
            iconst_0
            istore 10 /* bbEnded */
        start local 10 // boolean bbEnded
         9: .line 237
            iconst_1
            istore 11 /* nextBBIsFallThrough */
        start local 11 // boolean nextBBIsFallThrough
        10: .line 238
            aload 1 /* instrs */
            dup
            astore 15
            arraylength
            istore 14
            iconst_0
            istore 13
            goto 79
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.instructions.Instr[] java.util.Map java.util.List java.util.List java.util.Stack java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock top int int top int int org.jruby.ir.instructions.Instr[]
      StackMap stack:
        11: aload 15
            iload 13
            aaload
            astore 12 /* i */
        start local 12 // org.jruby.ir.instructions.Instr i
        12: .line 240
            aload 12 /* i */
            invokevirtual org.jruby.ir.instructions.Instr.getOperation:()Lorg/jruby/ir/Operation;
            astore 16 /* iop */
        start local 16 // org.jruby.ir.Operation iop
        13: .line 241
            aload 16 /* iop */
            getstatic org.jruby.ir.Operation.LABEL:Lorg/jruby/ir/Operation;
            if_acmpne 27
        14: .line 242
            aload 12 /* i */
            checkcast org.jruby.ir.instructions.LabelInstr
            invokevirtual org.jruby.ir.instructions.LabelInstr.getLabel:()Lorg/jruby/ir/operands/Label;
            astore 17 /* l */
        start local 17 // org.jruby.ir.operands.Label l
        15: .line 243
            aload 0 /* this */
            aload 17 /* l */
            aload 5 /* nestedExceptionRegions */
            invokevirtual org.jruby.ir.representations.CFG.createBB:(Lorg/jruby/ir/operands/Label;Ljava/util/Stack;)Lorg/jruby/ir/representations/BasicBlock;
            astore 9 /* newBB */
        start local 9 // org.jruby.ir.representations.BasicBlock newBB
        16: .line 245
            iload 11 /* nextBBIsFallThrough */
            ifeq 17
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 8 /* currBB */
            aload 9 /* newBB */
            getstatic org.jruby.ir.representations.CFG$EdgeType.FALL_THROUGH:Lorg/jruby/ir/representations/CFG$EdgeType;
            invokevirtual org.jruby.dirgra.DirectedGraph.addEdge:(Lorg/jruby/dirgra/ExplicitVertexID;Lorg/jruby/dirgra/ExplicitVertexID;Ljava/lang/Object;)V
        17: .line 246
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.instructions.Instr[] java.util.Map java.util.List java.util.List java.util.Stack java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock int int org.jruby.ir.instructions.Instr int int org.jruby.ir.instructions.Instr[] org.jruby.ir.Operation org.jruby.ir.operands.Label
      StackMap stack:
            aload 9 /* newBB */
            astore 8 /* currBB */
        18: .line 247
            iconst_0
            istore 10 /* bbEnded */
        19: .line 248
            iconst_1
            istore 11 /* nextBBIsFallThrough */
        20: .line 251
            aload 2 /* forwardRefs */
            aload 17 /* l */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.List
            astore 18 /* frefs */
        start local 18 // java.util.List frefs
        21: .line 252
            aload 18 /* frefs */
            ifnull 33
        22: .line 253
            aload 18 /* frefs */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 20
            goto 25
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.instructions.Instr[] java.util.Map java.util.List java.util.List java.util.Stack java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock int int org.jruby.ir.instructions.Instr int int org.jruby.ir.instructions.Instr[] org.jruby.ir.Operation org.jruby.ir.operands.Label java.util.List top java.util.Iterator
      StackMap stack:
        23: aload 20
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            astore 19 /* b */
        start local 19 // org.jruby.ir.representations.BasicBlock b
        24: .line 254
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 19 /* b */
            aload 9 /* newBB */
            getstatic org.jruby.ir.representations.CFG$EdgeType.REGULAR:Lorg/jruby/ir/representations/CFG$EdgeType;
            invokevirtual org.jruby.dirgra.DirectedGraph.addEdge:(Lorg/jruby/dirgra/ExplicitVertexID;Lorg/jruby/dirgra/ExplicitVertexID;Ljava/lang/Object;)V
        end local 19 // org.jruby.ir.representations.BasicBlock b
        25: .line 253
      StackMap locals:
      StackMap stack:
            aload 20
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 23
        end local 18 // java.util.List frefs
        end local 17 // org.jruby.ir.operands.Label l
        26: .line 257
            goto 33
        end local 9 // org.jruby.ir.representations.BasicBlock newBB
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.instructions.Instr[] java.util.Map java.util.List java.util.List java.util.Stack java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock top int int org.jruby.ir.instructions.Instr int int org.jruby.ir.instructions.Instr[] org.jruby.ir.Operation
      StackMap stack:
        27: iload 10 /* bbEnded */
            ifeq 33
            aload 16 /* iop */
            getstatic org.jruby.ir.Operation.EXC_REGION_END:Lorg/jruby/ir/Operation;
            if_acmpeq 33
        28: .line 258
            aload 0 /* this */
            aload 5 /* nestedExceptionRegions */
            invokevirtual org.jruby.ir.representations.CFG.createBB:(Ljava/util/Stack;)Lorg/jruby/ir/representations/BasicBlock;
            astore 9 /* newBB */
        start local 9 // org.jruby.ir.representations.BasicBlock newBB
        29: .line 260
            iload 11 /* nextBBIsFallThrough */
            ifeq 30
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 8 /* currBB */
            aload 9 /* newBB */
            getstatic org.jruby.ir.representations.CFG$EdgeType.FALL_THROUGH:Lorg/jruby/ir/representations/CFG$EdgeType;
            invokevirtual org.jruby.dirgra.DirectedGraph.addEdge:(Lorg/jruby/dirgra/ExplicitVertexID;Lorg/jruby/dirgra/ExplicitVertexID;Ljava/lang/Object;)V
        30: .line 261
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.instructions.Instr[] java.util.Map java.util.List java.util.List java.util.Stack java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock int int org.jruby.ir.instructions.Instr int int org.jruby.ir.instructions.Instr[] org.jruby.ir.Operation
      StackMap stack:
            aload 9 /* newBB */
            astore 8 /* currBB */
        31: .line 262
            iconst_0
            istore 10 /* bbEnded */
        32: .line 263
            iconst_1
            istore 11 /* nextBBIsFallThrough */
        end local 9 // org.jruby.ir.representations.BasicBlock newBB
        33: .line 266
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.instructions.Instr[] java.util.Map java.util.List java.util.List java.util.Stack java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock top int int org.jruby.ir.instructions.Instr int int org.jruby.ir.instructions.Instr[] org.jruby.ir.Operation
      StackMap stack:
            aload 12 /* i */
            instanceof org.jruby.ir.instructions.ExceptionRegionStartMarkerInstr
            ifeq 42
        34: .line 268
            aload 12 /* i */
            checkcast org.jruby.ir.instructions.ExceptionRegionStartMarkerInstr
            astore 17 /* ersmi */
        start local 17 // org.jruby.ir.instructions.ExceptionRegionStartMarkerInstr ersmi
        35: .line 269
            new org.jruby.ir.representations.ExceptionRegion
            dup
            aload 17 /* ersmi */
            invokevirtual org.jruby.ir.instructions.ExceptionRegionStartMarkerInstr.getFirstRescueBlockLabel:()Lorg/jruby/ir/operands/Label;
            aload 8 /* currBB */
            invokespecial org.jruby.ir.representations.ExceptionRegion.<init>:(Lorg/jruby/ir/operands/Label;Lorg/jruby/ir/representations/BasicBlock;)V
            astore 18 /* rr */
        start local 18 // org.jruby.ir.representations.ExceptionRegion rr
        36: .line 270
            aload 18 /* rr */
            aload 8 /* currBB */
            invokevirtual org.jruby.ir.representations.ExceptionRegion.addBB:(Lorg/jruby/ir/representations/BasicBlock;)V
        37: .line 271
            aload 6 /* allExceptionRegions */
            aload 18 /* rr */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        38: .line 273
            aload 5 /* nestedExceptionRegions */
            invokevirtual java.util.Stack.empty:()Z
            ifne 40
        39: .line 274
            aload 5 /* nestedExceptionRegions */
            invokevirtual java.util.Stack.peek:()Ljava/lang/Object;
            checkcast org.jruby.ir.representations.ExceptionRegion
            aload 18 /* rr */
            invokevirtual org.jruby.ir.representations.ExceptionRegion.addNestedRegion:(Lorg/jruby/ir/representations/ExceptionRegion;)V
        40: .line 277
      StackMap locals: org.jruby.ir.instructions.ExceptionRegionStartMarkerInstr org.jruby.ir.representations.ExceptionRegion
      StackMap stack:
            aload 5 /* nestedExceptionRegions */
            aload 18 /* rr */
            invokevirtual java.util.Stack.push:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 18 // org.jruby.ir.representations.ExceptionRegion rr
        end local 17 // org.jruby.ir.instructions.ExceptionRegionStartMarkerInstr ersmi
        41: .line 278
            goto 78
      StackMap locals:
      StackMap stack:
        42: aload 12 /* i */
            instanceof org.jruby.ir.instructions.ExceptionRegionEndMarkerInstr
            ifeq 45
        43: .line 280
            aload 5 /* nestedExceptionRegions */
            invokevirtual java.util.Stack.pop:()Ljava/lang/Object;
            checkcast org.jruby.ir.representations.ExceptionRegion
            aload 8 /* currBB */
            invokevirtual org.jruby.ir.representations.ExceptionRegion.setEndBB:(Lorg/jruby/ir/representations/BasicBlock;)V
        44: .line 281
            goto 78
      StackMap locals:
      StackMap stack:
        45: aload 16 /* iop */
            invokevirtual org.jruby.ir.Operation.endsBasicBlock:()Z
            ifeq 76
        46: .line 282
            iconst_1
            istore 10 /* bbEnded */
        47: .line 283
            aload 8 /* currBB */
            aload 12 /* i */
            invokevirtual org.jruby.ir.representations.BasicBlock.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
        48: .line 284
            aconst_null
            astore 17 /* tgt */
        start local 17 // org.jruby.ir.operands.Label tgt
        49: .line 285
            iconst_0
            istore 11 /* nextBBIsFallThrough */
        50: .line 286
            aload 12 /* i */
            instanceof org.jruby.ir.instructions.BranchInstr
            ifeq 54
        51: .line 287
            aload 12 /* i */
            checkcast org.jruby.ir.instructions.BranchInstr
            invokevirtual org.jruby.ir.instructions.BranchInstr.getJumpTarget:()Lorg/jruby/ir/operands/Label;
            astore 17 /* tgt */
        52: .line 288
            iconst_1
            istore 11 /* nextBBIsFallThrough */
        53: .line 289
            goto 74
      StackMap locals: org.jruby.ir.operands.Label
      StackMap stack:
        54: aload 12 /* i */
            instanceof org.jruby.ir.instructions.MultiBranchInstr
            ifeq 62
        55: .line 290
            aload 12 /* i */
            checkcast org.jruby.ir.instructions.MultiBranchInstr
            invokevirtual org.jruby.ir.instructions.MultiBranchInstr.getJumpTargets:()[Lorg/jruby/ir/operands/Label;
            astore 18 /* tgts */
        start local 18 // org.jruby.ir.operands.Label[] tgts
        56: .line 291
            aload 18 /* tgts */
            dup
            astore 22
            arraylength
            istore 21
            iconst_0
            istore 20
            goto 60
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.instructions.Instr[] java.util.Map java.util.List java.util.List java.util.Stack java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock top int int org.jruby.ir.instructions.Instr int int org.jruby.ir.instructions.Instr[] org.jruby.ir.Operation org.jruby.ir.operands.Label org.jruby.ir.operands.Label[] top int int org.jruby.ir.operands.Label[]
      StackMap stack:
        57: aload 22
            iload 20
            aaload
            astore 19 /* l */
        start local 19 // org.jruby.ir.operands.Label l
        58: aload 0 /* this */
            aload 8 /* currBB */
            aload 19 /* l */
            aload 2 /* forwardRefs */
            invokevirtual org.jruby.ir.representations.CFG.addEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/operands/Label;Ljava/util/Map;)V
        end local 19 // org.jruby.ir.operands.Label l
        59: iinc 20 1
      StackMap locals:
      StackMap stack:
        60: iload 20
            iload 21
            if_icmplt 57
        end local 18 // org.jruby.ir.operands.Label[] tgts
        61: .line 292
            goto 74
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.instructions.Instr[] java.util.Map java.util.List java.util.List java.util.Stack java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock top int int org.jruby.ir.instructions.Instr int int org.jruby.ir.instructions.Instr[] org.jruby.ir.Operation org.jruby.ir.operands.Label
      StackMap stack:
        62: aload 12 /* i */
            instanceof org.jruby.ir.instructions.JumpInstr
            ifeq 65
        63: .line 293
            aload 12 /* i */
            checkcast org.jruby.ir.instructions.JumpInstr
            invokevirtual org.jruby.ir.instructions.JumpInstr.getJumpTarget:()Lorg/jruby/ir/operands/Label;
            astore 17 /* tgt */
        64: .line 294
            goto 74
      StackMap locals:
      StackMap stack:
        65: aload 16 /* iop */
            invokevirtual org.jruby.ir.Operation.isReturn:()Z
            ifeq 69
        66: .line 295
            aconst_null
            astore 17 /* tgt */
        67: .line 296
            aload 3 /* returnBBs */
            aload 8 /* currBB */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        68: .line 297
            goto 74
      StackMap locals:
      StackMap stack:
        69: aload 12 /* i */
            instanceof org.jruby.ir.instructions.ThrowExceptionInstr
            ifeq 73
        70: .line 298
            aconst_null
            astore 17 /* tgt */
        71: .line 299
            aload 4 /* exceptionBBs */
            aload 8 /* currBB */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        72: .line 300
            goto 74
        73: .line 301
      StackMap locals:
      StackMap stack:
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unhandled case in CFG builder for basic block ending instr: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 12 /* i */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        74: .line 304
      StackMap locals:
      StackMap stack:
            aload 17 /* tgt */
            ifnull 78
            aload 0 /* this */
            aload 8 /* currBB */
            aload 17 /* tgt */
            aload 2 /* forwardRefs */
            invokevirtual org.jruby.ir.representations.CFG.addEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/operands/Label;Ljava/util/Map;)V
        end local 17 // org.jruby.ir.operands.Label tgt
        75: .line 305
            goto 78
      StackMap locals:
      StackMap stack:
        76: aload 16 /* iop */
            getstatic org.jruby.ir.Operation.LABEL:Lorg/jruby/ir/Operation;
            if_acmpeq 78
        77: .line 306
            aload 8 /* currBB */
            aload 12 /* i */
            invokevirtual org.jruby.ir.representations.BasicBlock.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
        end local 16 // org.jruby.ir.Operation iop
        end local 12 // org.jruby.ir.instructions.Instr i
        78: .line 238
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.instructions.Instr[] java.util.Map java.util.List java.util.List java.util.Stack java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock top int int top int int org.jruby.ir.instructions.Instr[]
      StackMap stack:
            iinc 13 1
      StackMap locals:
      StackMap stack:
        79: iload 13
            iload 14
            if_icmplt 11
        80: .line 311
            aload 6 /* allExceptionRegions */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 13
            goto 92
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.instructions.Instr[] java.util.Map java.util.List java.util.List java.util.Stack java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock top int int top java.util.Iterator
      StackMap stack:
        81: aload 13
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.ir.representations.ExceptionRegion
            astore 12 /* rr */
        start local 12 // org.jruby.ir.representations.ExceptionRegion rr
        82: .line 314
            aload 12 /* rr */
            invokevirtual org.jruby.ir.representations.ExceptionRegion.getFirstRescueBlockLabel:()Lorg/jruby/ir/operands/Label;
            astore 14 /* rescueLabel */
        start local 14 // org.jruby.ir.operands.Label rescueLabel
        83: .line 315
            getstatic org.jruby.ir.operands.Label.UNRESCUED_REGION_LABEL:Lorg/jruby/ir/operands/Label;
            aload 14 /* rescueLabel */
            invokevirtual org.jruby.ir.operands.Label.equals:(Ljava/lang/Object;)Z
            ifne 92
        84: .line 316
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.bbMap:Ljava/util/Map;
            aload 14 /* rescueLabel */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            astore 15 /* firstRescueBB */
        start local 15 // org.jruby.ir.representations.BasicBlock firstRescueBB
        85: .line 318
            aload 15 /* firstRescueBB */
            invokevirtual org.jruby.ir.representations.BasicBlock.markRescueEntryBB:()V
        86: .line 323
            aload 12 /* rr */
            invokevirtual org.jruby.ir.representations.ExceptionRegion.getExclusiveBBs:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 17
            goto 91
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.instructions.Instr[] java.util.Map java.util.List java.util.List java.util.Stack java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock top int int org.jruby.ir.representations.ExceptionRegion java.util.Iterator org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock top java.util.Iterator
      StackMap stack:
        87: aload 17
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            astore 16 /* b */
        start local 16 // org.jruby.ir.representations.BasicBlock b
        88: .line 324
            aload 16 /* b */
            invokevirtual org.jruby.ir.representations.BasicBlock.canRaiseExceptions:()Z
            ifeq 91
        89: .line 325
            aload 0 /* this */
            aload 16 /* b */
            aload 15 /* firstRescueBB */
            invokevirtual org.jruby.ir.representations.CFG.setRescuerBB:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)V
        90: .line 326
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 16 /* b */
            aload 15 /* firstRescueBB */
            getstatic org.jruby.ir.representations.CFG$EdgeType.EXCEPTION:Lorg/jruby/ir/representations/CFG$EdgeType;
            invokevirtual org.jruby.dirgra.DirectedGraph.addEdge:(Lorg/jruby/dirgra/ExplicitVertexID;Lorg/jruby/dirgra/ExplicitVertexID;Ljava/lang/Object;)V
        end local 16 // org.jruby.ir.representations.BasicBlock b
        91: .line 323
      StackMap locals:
      StackMap stack:
            aload 17
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 87
        end local 15 // org.jruby.ir.representations.BasicBlock firstRescueBB
        end local 14 // org.jruby.ir.operands.Label rescueLabel
        end local 12 // org.jruby.ir.representations.ExceptionRegion rr
        92: .line 311
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.instructions.Instr[] java.util.Map java.util.List java.util.List java.util.Stack java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock top int int top java.util.Iterator
      StackMap stack:
            aload 13
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 81
        93: .line 332
            aload 0 /* this */
            aload 5 /* nestedExceptionRegions */
            aload 7 /* firstBB */
            aload 3 /* returnBBs */
            aload 4 /* exceptionBBs */
            iload 11 /* nextBBIsFallThrough */
            aload 8 /* currBB */
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.entryBB:Lorg/jruby/ir/representations/BasicBlock;
            invokevirtual org.jruby.ir.representations.CFG.buildExitBasicBlock:(Ljava/util/Stack;Lorg/jruby/ir/representations/BasicBlock;Ljava/util/List;Ljava/util/List;ZLorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
            pop
        94: .line 338
            aload 0 /* this */
            aload 3 /* returnBBs */
            invokevirtual org.jruby.ir.representations.CFG.optimize:(Ljava/util/List;)V
        95: .line 340
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            areturn
        end local 11 // boolean nextBBIsFallThrough
        end local 10 // boolean bbEnded
        end local 8 // org.jruby.ir.representations.BasicBlock currBB
        end local 7 // org.jruby.ir.representations.BasicBlock firstBB
        end local 6 // java.util.List allExceptionRegions
        end local 5 // java.util.Stack nestedExceptionRegions
        end local 4 // java.util.List exceptionBBs
        end local 3 // java.util.List returnBBs
        end local 2 // java.util.Map forwardRefs
        end local 1 // org.jruby.ir.instructions.Instr[] instrs
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   96     0                    this  Lorg/jruby/ir/representations/CFG;
            0   96     1                  instrs  [Lorg/jruby/ir/instructions/Instr;
            1   96     2             forwardRefs  Ljava/util/Map<Lorg/jruby/ir/operands/Label;Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;>;
            2   96     3               returnBBs  Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;
            3   96     4            exceptionBBs  Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;
            4   96     5  nestedExceptionRegions  Ljava/util/Stack<Lorg/jruby/ir/representations/ExceptionRegion;>;
            5   96     6     allExceptionRegions  Ljava/util/List<Lorg/jruby/ir/representations/ExceptionRegion;>;
            7   96     7                 firstBB  Lorg/jruby/ir/representations/BasicBlock;
            8   96     8                  currBB  Lorg/jruby/ir/representations/BasicBlock;
           16   27     9                   newBB  Lorg/jruby/ir/representations/BasicBlock;
           29   33     9                   newBB  Lorg/jruby/ir/representations/BasicBlock;
            9   96    10                 bbEnded  Z
           10   96    11     nextBBIsFallThrough  Z
           12   78    12                       i  Lorg/jruby/ir/instructions/Instr;
           13   78    16                     iop  Lorg/jruby/ir/Operation;
           15   26    17                       l  Lorg/jruby/ir/operands/Label;
           21   26    18                   frefs  Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;
           24   25    19                       b  Lorg/jruby/ir/representations/BasicBlock;
           35   41    17                   ersmi  Lorg/jruby/ir/instructions/ExceptionRegionStartMarkerInstr;
           36   41    18                      rr  Lorg/jruby/ir/representations/ExceptionRegion;
           49   75    17                     tgt  Lorg/jruby/ir/operands/Label;
           56   61    18                    tgts  [Lorg/jruby/ir/operands/Label;
           58   59    19                       l  Lorg/jruby/ir/operands/Label;
           82   92    12                      rr  Lorg/jruby/ir/representations/ExceptionRegion;
           83   92    14             rescueLabel  Lorg/jruby/ir/operands/Label;
           85   92    15           firstRescueBB  Lorg/jruby/ir/representations/BasicBlock;
           88   91    16                       b  Lorg/jruby/ir/representations/BasicBlock;
    Signature: ([Lorg/jruby/ir/instructions/Instr;)Lorg/jruby/dirgra/DirectedGraph<Lorg/jruby/ir/representations/BasicBlock;>;
    MethodParameters:
        Name  Flags
      instrs  

  private void addEdge(org.jruby.ir.representations.BasicBlock, org.jruby.ir.operands.Label, java.util.Map<org.jruby.ir.operands.Label, java.util.List<org.jruby.ir.representations.BasicBlock>>);
    descriptor: (Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/operands/Label;Ljava/util/Map;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=6, args_size=4
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // org.jruby.ir.representations.BasicBlock src
        start local 2 // org.jruby.ir.operands.Label targetLabel
        start local 3 // java.util.Map forwardRefs
         0: .line 344
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.bbMap:Ljava/util/Map;
            aload 2 /* targetLabel */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            astore 4 /* target */
        start local 4 // org.jruby.ir.representations.BasicBlock target
         1: .line 346
            aload 4 /* target */
            ifnull 4
         2: .line 347
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 1 /* src */
            aload 4 /* target */
            getstatic org.jruby.ir.representations.CFG$EdgeType.REGULAR:Lorg/jruby/ir/representations/CFG$EdgeType;
            invokevirtual org.jruby.dirgra.DirectedGraph.addEdge:(Lorg/jruby/dirgra/ExplicitVertexID;Lorg/jruby/dirgra/ExplicitVertexID;Ljava/lang/Object;)V
         3: .line 348
            return
         4: .line 352
      StackMap locals: org.jruby.ir.representations.BasicBlock
      StackMap stack:
            aload 3 /* forwardRefs */
            aload 2 /* targetLabel */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.List
            astore 5 /* forwardReferences */
        start local 5 // java.util.List forwardReferences
         5: .line 354
            aload 5 /* forwardReferences */
            ifnonnull 8
         6: .line 355
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 5 /* forwardReferences */
         7: .line 356
            aload 3 /* forwardRefs */
            aload 2 /* targetLabel */
            aload 5 /* forwardReferences */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         8: .line 359
      StackMap locals: java.util.List
      StackMap stack:
            aload 5 /* forwardReferences */
            aload 1 /* src */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         9: .line 360
            return
        end local 5 // java.util.List forwardReferences
        end local 4 // org.jruby.ir.representations.BasicBlock target
        end local 3 // java.util.Map forwardRefs
        end local 2 // org.jruby.ir.operands.Label targetLabel
        end local 1 // org.jruby.ir.representations.BasicBlock src
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   10     0               this  Lorg/jruby/ir/representations/CFG;
            0   10     1                src  Lorg/jruby/ir/representations/BasicBlock;
            0   10     2        targetLabel  Lorg/jruby/ir/operands/Label;
            0   10     3        forwardRefs  Ljava/util/Map<Lorg/jruby/ir/operands/Label;Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;>;
            1   10     4             target  Lorg/jruby/ir/representations/BasicBlock;
            5   10     5  forwardReferences  Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;
    Signature: (Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/operands/Label;Ljava/util/Map<Lorg/jruby/ir/operands/Label;Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;>;)V
    MethodParameters:
             Name  Flags
      src          
      targetLabel  
      forwardRefs  

  private org.jruby.ir.representations.BasicBlock buildExitBasicBlock(java.util.Stack<org.jruby.ir.representations.ExceptionRegion>, org.jruby.ir.representations.BasicBlock, java.util.List<org.jruby.ir.representations.BasicBlock>, java.util.List<org.jruby.ir.representations.BasicBlock>, boolean, org.jruby.ir.representations.BasicBlock, org.jruby.ir.representations.BasicBlock);
    descriptor: (Ljava/util/Stack;Lorg/jruby/ir/representations/BasicBlock;Ljava/util/List;Ljava/util/List;ZLorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=10, args_size=8
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // java.util.Stack nestedExceptionRegions
        start local 2 // org.jruby.ir.representations.BasicBlock firstBB
        start local 3 // java.util.List returnBBs
        start local 4 // java.util.List exceptionBBs
        start local 5 // boolean nextIsFallThrough
        start local 6 // org.jruby.ir.representations.BasicBlock currBB
        start local 7 // org.jruby.ir.representations.BasicBlock entryBB
         0: .line 373
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* nestedExceptionRegions */
            invokevirtual org.jruby.ir.representations.CFG.createBB:(Ljava/util/Stack;)Lorg/jruby/ir/representations/BasicBlock;
            putfield org.jruby.ir.representations.CFG.exitBB:Lorg/jruby/ir/representations/BasicBlock;
         1: .line 375
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 7 /* entryBB */
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.exitBB:Lorg/jruby/ir/representations/BasicBlock;
            getstatic org.jruby.ir.representations.CFG$EdgeType.EXIT:Lorg/jruby/ir/representations/CFG$EdgeType;
            invokevirtual org.jruby.dirgra.DirectedGraph.addEdge:(Lorg/jruby/dirgra/ExplicitVertexID;Lorg/jruby/dirgra/ExplicitVertexID;Ljava/lang/Object;)V
         2: .line 376
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 7 /* entryBB */
            aload 2 /* firstBB */
            getstatic org.jruby.ir.representations.CFG$EdgeType.FALL_THROUGH:Lorg/jruby/ir/representations/CFG$EdgeType;
            invokevirtual org.jruby.dirgra.DirectedGraph.addEdge:(Lorg/jruby/dirgra/ExplicitVertexID;Lorg/jruby/dirgra/ExplicitVertexID;Ljava/lang/Object;)V
         3: .line 378
            aload 3 /* returnBBs */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 9
            goto 6
      StackMap locals: org.jruby.ir.representations.CFG java.util.Stack org.jruby.ir.representations.BasicBlock java.util.List java.util.List int org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock top java.util.Iterator
      StackMap stack:
         4: aload 9
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            astore 8 /* rb */
        start local 8 // org.jruby.ir.representations.BasicBlock rb
         5: .line 379
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 8 /* rb */
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.exitBB:Lorg/jruby/ir/representations/BasicBlock;
            getstatic org.jruby.ir.representations.CFG$EdgeType.EXIT:Lorg/jruby/ir/representations/CFG$EdgeType;
            invokevirtual org.jruby.dirgra.DirectedGraph.addEdge:(Lorg/jruby/dirgra/ExplicitVertexID;Lorg/jruby/dirgra/ExplicitVertexID;Ljava/lang/Object;)V
        end local 8 // org.jruby.ir.representations.BasicBlock rb
         6: .line 378
      StackMap locals:
      StackMap stack:
            aload 9
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
         7: .line 382
            aload 4 /* exceptionBBs */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 9
            goto 10
      StackMap locals:
      StackMap stack:
         8: aload 9
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            astore 8 /* rb */
        start local 8 // org.jruby.ir.representations.BasicBlock rb
         9: .line 383
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 8 /* rb */
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.exitBB:Lorg/jruby/ir/representations/BasicBlock;
            getstatic org.jruby.ir.representations.CFG$EdgeType.EXIT:Lorg/jruby/ir/representations/CFG$EdgeType;
            invokevirtual org.jruby.dirgra.DirectedGraph.addEdge:(Lorg/jruby/dirgra/ExplicitVertexID;Lorg/jruby/dirgra/ExplicitVertexID;Ljava/lang/Object;)V
        end local 8 // org.jruby.ir.representations.BasicBlock rb
        10: .line 382
      StackMap locals:
      StackMap stack:
            aload 9
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        11: .line 386
            iload 5 /* nextIsFallThrough */
            ifeq 12
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 6 /* currBB */
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.exitBB:Lorg/jruby/ir/representations/BasicBlock;
            getstatic org.jruby.ir.representations.CFG$EdgeType.EXIT:Lorg/jruby/ir/representations/CFG$EdgeType;
            invokevirtual org.jruby.dirgra.DirectedGraph.addEdge:(Lorg/jruby/dirgra/ExplicitVertexID;Lorg/jruby/dirgra/ExplicitVertexID;Ljava/lang/Object;)V
        12: .line 388
      StackMap locals: org.jruby.ir.representations.CFG java.util.Stack org.jruby.ir.representations.BasicBlock java.util.List java.util.List int org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.exitBB:Lorg/jruby/ir/representations/BasicBlock;
            areturn
        end local 7 // org.jruby.ir.representations.BasicBlock entryBB
        end local 6 // org.jruby.ir.representations.BasicBlock currBB
        end local 5 // boolean nextIsFallThrough
        end local 4 // java.util.List exceptionBBs
        end local 3 // java.util.List returnBBs
        end local 2 // org.jruby.ir.representations.BasicBlock firstBB
        end local 1 // java.util.Stack nestedExceptionRegions
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   13     0                    this  Lorg/jruby/ir/representations/CFG;
            0   13     1  nestedExceptionRegions  Ljava/util/Stack<Lorg/jruby/ir/representations/ExceptionRegion;>;
            0   13     2                 firstBB  Lorg/jruby/ir/representations/BasicBlock;
            0   13     3               returnBBs  Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;
            0   13     4            exceptionBBs  Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;
            0   13     5       nextIsFallThrough  Z
            0   13     6                  currBB  Lorg/jruby/ir/representations/BasicBlock;
            0   13     7                 entryBB  Lorg/jruby/ir/representations/BasicBlock;
            5    6     8                      rb  Lorg/jruby/ir/representations/BasicBlock;
            9   10     8                      rb  Lorg/jruby/ir/representations/BasicBlock;
    Signature: (Ljava/util/Stack<Lorg/jruby/ir/representations/ExceptionRegion;>;Lorg/jruby/ir/representations/BasicBlock;Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;ZLorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
    MethodParameters:
                        Name  Flags
      nestedExceptionRegions  
      firstBB                 
      returnBBs               
      exceptionBBs            
      nextIsFallThrough       
      currBB                  
      entryBB                 

  private org.jruby.ir.representations.BasicBlock createBB(org.jruby.ir.operands.Label, java.util.Stack<org.jruby.ir.representations.ExceptionRegion>);
    descriptor: (Lorg/jruby/ir/operands/Label;Ljava/util/Stack;)Lorg/jruby/ir/representations/BasicBlock;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // org.jruby.ir.operands.Label label
        start local 2 // java.util.Stack nestedExceptionRegions
         0: .line 392
            new org.jruby.ir.representations.BasicBlock
            dup
            aload 0 /* this */
            aload 1 /* label */
            invokespecial org.jruby.ir.representations.BasicBlock.<init>:(Lorg/jruby/ir/representations/CFG;Lorg/jruby/ir/operands/Label;)V
            astore 3 /* basicBlock */
        start local 3 // org.jruby.ir.representations.BasicBlock basicBlock
         1: .line 393
            aload 0 /* this */
            aload 3 /* basicBlock */
            invokevirtual org.jruby.ir.representations.CFG.addBasicBlock:(Lorg/jruby/ir/representations/BasicBlock;)V
         2: .line 394
            aload 1 /* label */
            invokevirtual org.jruby.ir.operands.Label.isGlobalEnsureBlockLabel:()Z
            ifeq 4
         3: .line 395
            aload 0 /* this */
            aload 3 /* basicBlock */
            putfield org.jruby.ir.representations.CFG.globalEnsureBB:Lorg/jruby/ir/representations/BasicBlock;
         4: .line 398
      StackMap locals: org.jruby.ir.representations.BasicBlock
      StackMap stack:
            aload 2 /* nestedExceptionRegions */
            invokevirtual java.util.Stack.empty:()Z
            ifne 5
            aload 2 /* nestedExceptionRegions */
            invokevirtual java.util.Stack.peek:()Ljava/lang/Object;
            checkcast org.jruby.ir.representations.ExceptionRegion
            aload 3 /* basicBlock */
            invokevirtual org.jruby.ir.representations.ExceptionRegion.addBB:(Lorg/jruby/ir/representations/BasicBlock;)V
         5: .line 400
      StackMap locals:
      StackMap stack:
            aload 3 /* basicBlock */
            areturn
        end local 3 // org.jruby.ir.representations.BasicBlock basicBlock
        end local 2 // java.util.Stack nestedExceptionRegions
        end local 1 // org.jruby.ir.operands.Label label
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    6     0                    this  Lorg/jruby/ir/representations/CFG;
            0    6     1                   label  Lorg/jruby/ir/operands/Label;
            0    6     2  nestedExceptionRegions  Ljava/util/Stack<Lorg/jruby/ir/representations/ExceptionRegion;>;
            1    6     3              basicBlock  Lorg/jruby/ir/representations/BasicBlock;
    Signature: (Lorg/jruby/ir/operands/Label;Ljava/util/Stack<Lorg/jruby/ir/representations/ExceptionRegion;>;)Lorg/jruby/ir/representations/BasicBlock;
    MethodParameters:
                        Name  Flags
      label                   
      nestedExceptionRegions  

  private org.jruby.ir.representations.BasicBlock createBB(java.util.Stack<org.jruby.ir.representations.ExceptionRegion>);
    descriptor: (Ljava/util/Stack;)Lorg/jruby/ir/representations/BasicBlock;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // java.util.Stack nestedExceptionRegions
         0: .line 404
            aload 0 /* this */
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.scope:Lorg/jruby/ir/IRScope;
            invokevirtual org.jruby.ir.IRScope.getNewLabel:()Lorg/jruby/ir/operands/Label;
            aload 1 /* nestedExceptionRegions */
            invokevirtual org.jruby.ir.representations.CFG.createBB:(Lorg/jruby/ir/operands/Label;Ljava/util/Stack;)Lorg/jruby/ir/representations/BasicBlock;
            areturn
        end local 1 // java.util.Stack nestedExceptionRegions
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    1     0                    this  Lorg/jruby/ir/representations/CFG;
            0    1     1  nestedExceptionRegions  Ljava/util/Stack<Lorg/jruby/ir/representations/ExceptionRegion;>;
    Signature: (Ljava/util/Stack<Lorg/jruby/ir/representations/ExceptionRegion;>;)Lorg/jruby/ir/representations/BasicBlock;
    MethodParameters:
                        Name  Flags
      nestedExceptionRegions  

  public void addBasicBlock(org.jruby.ir.representations.BasicBlock);
    descriptor: (Lorg/jruby/ir/representations/BasicBlock;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // org.jruby.ir.representations.BasicBlock bb
         0: .line 408
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 1 /* bb */
            invokevirtual org.jruby.dirgra.DirectedGraph.findOrCreateVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
            pop
         1: .line 409
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.bbMap:Ljava/util/Map;
            aload 1 /* bb */
            invokevirtual org.jruby.ir.representations.BasicBlock.getLabel:()Lorg/jruby/ir/operands/Label;
            aload 1 /* bb */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 412
            aload 0 /* this */
            aconst_null
            putfield org.jruby.ir.representations.CFG.postOrderList:Ljava/util/LinkedList;
         3: .line 413
            return
        end local 1 // org.jruby.ir.representations.BasicBlock bb
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/jruby/ir/representations/CFG;
            0    4     1    bb  Lorg/jruby/ir/representations/BasicBlock;
    MethodParameters:
      Name  Flags
      bb    

  public void removeAllOutgoingEdgesForBB(org.jruby.ir.representations.BasicBlock);
    descriptor: (Lorg/jruby/ir/representations/BasicBlock;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // org.jruby.ir.representations.BasicBlock b
         0: .line 416
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 1 /* b */
            invokevirtual org.jruby.dirgra.DirectedGraph.findVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
            invokevirtual org.jruby.dirgra.Vertex.removeAllOutgoingEdges:()V
         1: .line 417
            return
        end local 1 // org.jruby.ir.representations.BasicBlock b
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/jruby/ir/representations/CFG;
            0    2     1     b  Lorg/jruby/ir/representations/BasicBlock;
    MethodParameters:
      Name  Flags
      b     

  private void deleteOrphanedBlocks(org.jruby.dirgra.DirectedGraph<org.jruby.ir.representations.BasicBlock>);
    descriptor: (Lorg/jruby/dirgra/DirectedGraph;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=7, args_size=2
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // org.jruby.dirgra.DirectedGraph graph
         0: .line 423
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            astore 2 /* worklist */
        start local 2 // java.util.Queue worklist
         1: .line 424
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 3 /* living */
        start local 3 // java.util.Set living
         2: .line 425
            aload 2 /* worklist */
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.entryBB:Lorg/jruby/ir/representations/BasicBlock;
            invokeinterface java.util.Queue.add:(Ljava/lang/Object;)Z
            pop
         3: .line 426
            aload 3 /* living */
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.entryBB:Lorg/jruby/ir/representations/BasicBlock;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         4: .line 428
            goto 12
         5: .line 429
      StackMap locals: java.util.Queue java.util.Set
      StackMap stack:
            aload 2 /* worklist */
            invokeinterface java.util.Queue.remove:()Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            astore 4 /* current */
        start local 4 // org.jruby.ir.representations.BasicBlock current
         6: .line 431
            aload 1 /* graph */
            aload 4 /* current */
            invokevirtual org.jruby.dirgra.DirectedGraph.findVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
            invokevirtual org.jruby.dirgra.Vertex.getOutgoingDestinationsData:()Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 6
            goto 11
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.dirgra.DirectedGraph java.util.Queue java.util.Set org.jruby.ir.representations.BasicBlock top java.util.Iterator
      StackMap stack:
         7: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            astore 5 /* bb */
        start local 5 // org.jruby.ir.representations.BasicBlock bb
         8: .line 432
            aload 3 /* living */
            aload 5 /* bb */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 11
         9: .line 433
            aload 2 /* worklist */
            aload 5 /* bb */
            invokeinterface java.util.Queue.add:(Ljava/lang/Object;)Z
            pop
        10: .line 434
            aload 3 /* living */
            aload 5 /* bb */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 5 // org.jruby.ir.representations.BasicBlock bb
        11: .line 431
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 7
        end local 4 // org.jruby.ir.representations.BasicBlock current
        12: .line 428
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.dirgra.DirectedGraph java.util.Queue java.util.Set
      StackMap stack:
            aload 2 /* worklist */
            invokeinterface java.util.Queue.isEmpty:()Z
            ifeq 5
        13: .line 441
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 4 /* dead */
        start local 4 // java.util.Set dead
        14: .line 442
            aload 1 /* graph */
            invokevirtual org.jruby.dirgra.DirectedGraph.allData:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 6
            goto 17
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.dirgra.DirectedGraph java.util.Queue java.util.Set java.util.Set top java.util.Iterator
      StackMap stack:
        15: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            astore 5 /* bb */
        start local 5 // org.jruby.ir.representations.BasicBlock bb
        16: .line 443
            aload 3 /* living */
            aload 5 /* bb */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 17
            aload 4 /* dead */
            aload 5 /* bb */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 5 // org.jruby.ir.representations.BasicBlock bb
        17: .line 442
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 15
        18: .line 446
            aload 4 /* dead */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 6
            goto 22
      StackMap locals:
      StackMap stack:
        19: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            astore 5 /* bb */
        start local 5 // org.jruby.ir.representations.BasicBlock bb
        20: .line 447
            aload 0 /* this */
            aload 5 /* bb */
            invokevirtual org.jruby.ir.representations.CFG.removeBB:(Lorg/jruby/ir/representations/BasicBlock;)V
        21: .line 448
            aload 0 /* this */
            aload 5 /* bb */
            invokevirtual org.jruby.ir.representations.CFG.removeNestedScopesFromBB:(Lorg/jruby/ir/representations/BasicBlock;)V
        end local 5 // org.jruby.ir.representations.BasicBlock bb
        22: .line 446
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 19
        23: .line 450
            return
        end local 4 // java.util.Set dead
        end local 3 // java.util.Set living
        end local 2 // java.util.Queue worklist
        end local 1 // org.jruby.dirgra.DirectedGraph graph
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   24     0      this  Lorg/jruby/ir/representations/CFG;
            0   24     1     graph  Lorg/jruby/dirgra/DirectedGraph<Lorg/jruby/ir/representations/BasicBlock;>;
            1   24     2  worklist  Ljava/util/Queue<Lorg/jruby/ir/representations/BasicBlock;>;
            2   24     3    living  Ljava/util/Set<Lorg/jruby/ir/representations/BasicBlock;>;
            6   12     4   current  Lorg/jruby/ir/representations/BasicBlock;
            8   11     5        bb  Lorg/jruby/ir/representations/BasicBlock;
           14   24     4      dead  Ljava/util/Set<Lorg/jruby/ir/representations/BasicBlock;>;
           16   17     5        bb  Lorg/jruby/ir/representations/BasicBlock;
           20   22     5        bb  Lorg/jruby/ir/representations/BasicBlock;
    Signature: (Lorg/jruby/dirgra/DirectedGraph<Lorg/jruby/ir/representations/BasicBlock;>;)V
    MethodParameters:
       Name  Flags
      graph  

  private boolean mergeBBs(org.jruby.ir.representations.BasicBlock, org.jruby.ir.representations.BasicBlock);
    descriptor: (Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=10, args_size=3
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // org.jruby.ir.representations.BasicBlock a
        start local 2 // org.jruby.ir.representations.BasicBlock b
         0: .line 453
            aload 0 /* this */
            aload 1 /* a */
            invokevirtual org.jruby.ir.representations.CFG.getRescuerBBFor:(Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
            astore 3 /* aR */
        start local 3 // org.jruby.ir.representations.BasicBlock aR
         1: .line 454
            aload 0 /* this */
            aload 2 /* b */
            invokevirtual org.jruby.ir.representations.CFG.getRescuerBBFor:(Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
            astore 4 /* bR */
        start local 4 // org.jruby.ir.representations.BasicBlock bR
         2: .line 464
            aload 3 /* aR */
            aload 4 /* bR */
            if_acmpeq 3
            aload 1 /* a */
            invokevirtual org.jruby.ir.representations.BasicBlock.isEmpty:()Z
            ifne 3
            aload 2 /* b */
            invokevirtual org.jruby.ir.representations.BasicBlock.isEmpty:()Z
            ifeq 24
         3: .line 466
      StackMap locals: org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock
      StackMap stack:
            aload 1 /* a */
            invokevirtual org.jruby.ir.representations.BasicBlock.getLastInstr:()Lorg/jruby/ir/instructions/Instr;
            astore 5 /* lastInstr */
        start local 5 // org.jruby.ir.instructions.Instr lastInstr
         4: .line 467
            aload 5 /* lastInstr */
            instanceof org.jruby.ir.instructions.JumpInstr
            ifeq 5
            aload 1 /* a */
            aload 5 /* lastInstr */
            invokevirtual org.jruby.ir.representations.BasicBlock.removeInstr:(Lorg/jruby/ir/instructions/Instr;)Z
            pop
         5: .line 470
      StackMap locals: org.jruby.ir.instructions.Instr
      StackMap stack:
            aload 1 /* a */
            aload 2 /* b */
            invokevirtual org.jruby.ir.representations.BasicBlock.swallowBB:(Lorg/jruby/ir/representations/BasicBlock;)V
         6: .line 473
            aload 0 /* this */
            aload 1 /* a */
            aload 2 /* b */
            invokevirtual org.jruby.ir.representations.CFG.removeEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)V
         7: .line 474
            aload 0 /* this */
            aload 2 /* b */
            invokevirtual org.jruby.ir.representations.CFG.getOutgoingEdges:(Lorg/jruby/ir/representations/BasicBlock;)Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 7
            goto 10
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.Instr top java.util.Iterator
      StackMap stack:
         8: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.dirgra.Edge
            astore 6 /* e */
        start local 6 // org.jruby.dirgra.Edge e
         9: .line 475
            aload 0 /* this */
            aload 1 /* a */
            aload 6 /* e */
            invokevirtual org.jruby.dirgra.Edge.getDestination:()Lorg/jruby/dirgra/Vertex;
            invokevirtual org.jruby.dirgra.Vertex.getData:()Lorg/jruby/dirgra/ExplicitVertexID;
            checkcast org.jruby.ir.representations.BasicBlock
            aload 6 /* e */
            invokevirtual org.jruby.dirgra.Edge.getType:()Ljava/lang/Object;
            invokevirtual org.jruby.ir.representations.CFG.addEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)V
        end local 6 // org.jruby.dirgra.Edge e
        10: .line 474
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        11: .line 479
            aload 0 /* this */
            aload 2 /* b */
            invokevirtual org.jruby.ir.representations.CFG.getIncomingEdges:(Lorg/jruby/ir/representations/BasicBlock;)Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 7
            goto 19
      StackMap locals:
      StackMap stack:
        12: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.dirgra.Edge
            astore 6 /* e */
        start local 6 // org.jruby.dirgra.Edge e
        13: .line 480
            aload 6 /* e */
            invokevirtual org.jruby.dirgra.Edge.getSource:()Lorg/jruby/dirgra/Vertex;
            invokevirtual org.jruby.dirgra.Vertex.getData:()Lorg/jruby/dirgra/ExplicitVertexID;
            checkcast org.jruby.ir.representations.BasicBlock
            astore 8 /* fixupBB */
        start local 8 // org.jruby.ir.representations.BasicBlock fixupBB
        14: .line 481
            aload 0 /* this */
            aload 8 /* fixupBB */
            aload 2 /* b */
            invokevirtual org.jruby.ir.representations.CFG.removeEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)V
        15: .line 482
            aload 0 /* this */
            aload 8 /* fixupBB */
            aload 1 /* a */
            aload 6 /* e */
            invokevirtual org.jruby.dirgra.Edge.getType:()Ljava/lang/Object;
            invokevirtual org.jruby.ir.representations.CFG.addEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)V
        16: .line 485
            aload 8 /* fixupBB */
            invokevirtual org.jruby.ir.representations.BasicBlock.getLastInstr:()Lorg/jruby/ir/instructions/Instr;
            astore 9 /* fixupLastInstr */
        start local 9 // org.jruby.ir.instructions.Instr fixupLastInstr
        17: .line 486
            aload 9 /* fixupLastInstr */
            instanceof org.jruby.ir.instructions.JumpTargetInstr
            ifeq 19
        18: .line 487
            aload 9 /* fixupLastInstr */
            checkcast org.jruby.ir.instructions.JumpTargetInstr
            aload 1 /* a */
            invokevirtual org.jruby.ir.representations.BasicBlock.getLabel:()Lorg/jruby/ir/operands/Label;
            invokeinterface org.jruby.ir.instructions.JumpTargetInstr.setJumpTarget:(Lorg/jruby/ir/operands/Label;)V
        end local 9 // org.jruby.ir.instructions.Instr fixupLastInstr
        end local 8 // org.jruby.ir.representations.BasicBlock fixupBB
        end local 6 // org.jruby.dirgra.Edge e
        19: .line 479
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 12
        20: .line 492
            aload 0 /* this */
            aload 2 /* b */
            invokevirtual org.jruby.ir.representations.CFG.removeBB:(Lorg/jruby/ir/representations/BasicBlock;)V
        21: .line 495
            aload 3 /* aR */
            ifnonnull 23
            aload 4 /* bR */
            ifnull 23
        22: .line 496
            aload 0 /* this */
            aload 1 /* a */
            aload 4 /* bR */
            invokevirtual org.jruby.ir.representations.CFG.setRescuerBB:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)V
        23: .line 499
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.Instr
      StackMap stack:
            iconst_1
            ireturn
        end local 5 // org.jruby.ir.instructions.Instr lastInstr
        24: .line 501
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 4 // org.jruby.ir.representations.BasicBlock bR
        end local 3 // org.jruby.ir.representations.BasicBlock aR
        end local 2 // org.jruby.ir.representations.BasicBlock b
        end local 1 // org.jruby.ir.representations.BasicBlock a
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   25     0            this  Lorg/jruby/ir/representations/CFG;
            0   25     1               a  Lorg/jruby/ir/representations/BasicBlock;
            0   25     2               b  Lorg/jruby/ir/representations/BasicBlock;
            1   25     3              aR  Lorg/jruby/ir/representations/BasicBlock;
            2   25     4              bR  Lorg/jruby/ir/representations/BasicBlock;
            4   24     5       lastInstr  Lorg/jruby/ir/instructions/Instr;
            9   10     6               e  Lorg/jruby/dirgra/Edge<Lorg/jruby/ir/representations/BasicBlock;>;
           13   19     6               e  Lorg/jruby/dirgra/Edge<Lorg/jruby/ir/representations/BasicBlock;>;
           14   19     8         fixupBB  Lorg/jruby/ir/representations/BasicBlock;
           17   19     9  fixupLastInstr  Lorg/jruby/ir/instructions/Instr;
    MethodParameters:
      Name  Flags
      a     
      b     

  public void removeBB(org.jruby.ir.representations.BasicBlock);
    descriptor: (Lorg/jruby/ir/representations/BasicBlock;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // org.jruby.ir.representations.BasicBlock b
         0: .line 506
            aload 1 /* b */
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.globalEnsureBB:Lorg/jruby/ir/representations/BasicBlock;
            if_acmpne 1
            aload 0 /* this */
            aconst_null
            putfield org.jruby.ir.representations.CFG.globalEnsureBB:Lorg/jruby/ir/representations/BasicBlock;
         1: .line 508
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 1 /* b */
            invokevirtual org.jruby.dirgra.DirectedGraph.removeVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)V
         2: .line 509
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.bbMap:Ljava/util/Map;
            aload 1 /* b */
            invokevirtual org.jruby.ir.representations.BasicBlock.getLabel:()Lorg/jruby/ir/operands/Label;
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 510
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.rescuerMap:Ljava/util/Map;
            aload 1 /* b */
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 511
            return
        end local 1 // org.jruby.ir.representations.BasicBlock b
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/jruby/ir/representations/CFG;
            0    5     1     b  Lorg/jruby/ir/representations/BasicBlock;
    MethodParameters:
      Name  Flags
      b     

  private void removeNestedScopesFromBB(org.jruby.ir.representations.BasicBlock);
    descriptor: (Lorg/jruby/ir/representations/BasicBlock;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=8, args_size=2
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // org.jruby.ir.representations.BasicBlock bb
         0: .line 518
            aload 1 /* bb */
            invokevirtual org.jruby.ir.representations.BasicBlock.getInstrs:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 9
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.ir.instructions.Instr
            astore 2 /* instr */
        start local 2 // org.jruby.ir.instructions.Instr instr
         2: .line 519
            aload 2 /* instr */
            invokevirtual org.jruby.ir.instructions.Instr.getOperands:()[Lorg/jruby/ir/operands/Operand;
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 8
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.Instr java.util.Iterator top int int org.jruby.ir.operands.Operand[]
      StackMap stack:
         3: aload 7
            iload 5
            aaload
            astore 4 /* oper */
        start local 4 // org.jruby.ir.operands.Operand oper
         4: .line 520
            aload 4 /* oper */
            instanceof org.jruby.ir.operands.WrappedIRClosure
            ifeq 7
         5: .line 521
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.scope:Lorg/jruby/ir/IRScope;
            aload 4 /* oper */
            checkcast org.jruby.ir.operands.WrappedIRClosure
            invokevirtual org.jruby.ir.operands.WrappedIRClosure.getClosure:()Lorg/jruby/ir/IRClosure;
            invokevirtual org.jruby.ir.IRScope.removeClosure:(Lorg/jruby/ir/IRClosure;)V
         6: .line 522
            goto 9
        end local 4 // org.jruby.ir.operands.Operand oper
         7: .line 519
      StackMap locals:
      StackMap stack:
            iinc 5 1
      StackMap locals:
      StackMap stack:
         8: iload 5
            iload 6
            if_icmplt 3
        end local 2 // org.jruby.ir.instructions.Instr instr
         9: .line 518
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
        10: .line 526
            return
        end local 1 // org.jruby.ir.representations.BasicBlock bb
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   11     0   this  Lorg/jruby/ir/representations/CFG;
            0   11     1     bb  Lorg/jruby/ir/representations/BasicBlock;
            2    9     2  instr  Lorg/jruby/ir/instructions/Instr;
            4    7     4   oper  Lorg/jruby/ir/operands/Operand;
    MethodParameters:
      Name  Flags
      bb    

  public void collapseStraightLineBBs();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=8, args_size=1
        start local 0 // org.jruby.ir.representations.CFG this
         0: .line 534
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* cfgBBs */
        start local 1 // java.util.List cfgBBs
         1: .line 535
            aload 0 /* this */
            invokevirtual org.jruby.ir.representations.CFG.getBasicBlocks:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 3
            goto 4
      StackMap locals: org.jruby.ir.representations.CFG java.util.List top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            astore 2 /* b */
        start local 2 // org.jruby.ir.representations.BasicBlock b
         3: aload 1 /* cfgBBs */
            aload 2 /* b */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 2 // org.jruby.ir.representations.BasicBlock b
      StackMap locals:
      StackMap stack:
         4: aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 537
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 2 /* mergedBBs */
        start local 2 // java.util.Set mergedBBs
         6: .line 538
            aload 1 /* cfgBBs */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 16
      StackMap locals: org.jruby.ir.representations.CFG java.util.List java.util.Set top java.util.Iterator
      StackMap stack:
         7: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            astore 3 /* b */
        start local 3 // org.jruby.ir.representations.BasicBlock b
         8: .line 539
            aload 2 /* mergedBBs */
            aload 3 /* b */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 16
            aload 0 /* this */
            aload 3 /* b */
            invokevirtual org.jruby.ir.representations.CFG.outDegree:(Lorg/jruby/ir/representations/BasicBlock;)I
            iconst_1
            if_icmpne 16
         9: .line 540
            aload 0 /* this */
            aload 3 /* b */
            invokevirtual org.jruby.ir.representations.CFG.getOutgoingEdges:(Lorg/jruby/ir/representations/BasicBlock;)Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 6
            goto 15
      StackMap locals: org.jruby.ir.representations.CFG java.util.List java.util.Set org.jruby.ir.representations.BasicBlock java.util.Iterator top java.util.Iterator
      StackMap stack:
        10: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.dirgra.Edge
            astore 5 /* e */
        start local 5 // org.jruby.dirgra.Edge e
        11: .line 541
            aload 5 /* e */
            invokevirtual org.jruby.dirgra.Edge.getDestination:()Lorg/jruby/dirgra/Vertex;
            invokevirtual org.jruby.dirgra.Vertex.getData:()Lorg/jruby/dirgra/ExplicitVertexID;
            checkcast org.jruby.ir.representations.BasicBlock
            astore 7 /* outB */
        start local 7 // org.jruby.ir.representations.BasicBlock outB
        12: .line 546
            aload 5 /* e */
            invokevirtual org.jruby.dirgra.Edge.getType:()Ljava/lang/Object;
            getstatic org.jruby.ir.representations.CFG$EdgeType.EXCEPTION:Lorg/jruby/ir/representations/CFG$EdgeType;
            if_acmpeq 15
            aload 0 /* this */
            aload 7 /* outB */
            invokevirtual org.jruby.ir.representations.CFG.inDegree:(Lorg/jruby/ir/representations/BasicBlock;)I
            iconst_1
            if_icmpeq 13
            aload 3 /* b */
            invokevirtual org.jruby.ir.representations.BasicBlock.isEmpty:()Z
            ifeq 15
      StackMap locals: org.jruby.ir.representations.CFG java.util.List java.util.Set org.jruby.ir.representations.BasicBlock java.util.Iterator org.jruby.dirgra.Edge java.util.Iterator org.jruby.ir.representations.BasicBlock
      StackMap stack:
        13: aload 0 /* this */
            aload 3 /* b */
            aload 7 /* outB */
            invokevirtual org.jruby.ir.representations.CFG.mergeBBs:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)Z
            ifeq 15
        14: .line 547
            aload 2 /* mergedBBs */
            aload 7 /* outB */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 7 // org.jruby.ir.representations.BasicBlock outB
        end local 5 // org.jruby.dirgra.Edge e
        15: .line 540
      StackMap locals: org.jruby.ir.representations.CFG java.util.List java.util.Set org.jruby.ir.representations.BasicBlock java.util.Iterator top java.util.Iterator
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 10
        end local 3 // org.jruby.ir.representations.BasicBlock b
        16: .line 538
      StackMap locals: org.jruby.ir.representations.CFG java.util.List java.util.Set top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 7
        17: .line 552
            return
        end local 2 // java.util.Set mergedBBs
        end local 1 // java.util.List cfgBBs
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   18     0       this  Lorg/jruby/ir/representations/CFG;
            1   18     1     cfgBBs  Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;
            3    4     2          b  Lorg/jruby/ir/representations/BasicBlock;
            6   18     2  mergedBBs  Ljava/util/Set<Lorg/jruby/ir/representations/BasicBlock;>;
            8   16     3          b  Lorg/jruby/ir/representations/BasicBlock;
           11   15     5          e  Lorg/jruby/dirgra/Edge<Lorg/jruby/ir/representations/BasicBlock;>;
           12   15     7       outB  Lorg/jruby/ir/representations/BasicBlock;

  public void optimize(java.util.List<org.jruby.ir.representations.BasicBlock>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=15, args_size=2
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // java.util.List returnBBs
         0: .line 568
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* toRemove */
        start local 2 // java.util.List toRemove
         1: .line 569
            aload 1 /* returnBBs */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 26
      StackMap locals: org.jruby.ir.representations.CFG java.util.List java.util.List top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            astore 3 /* retBB */
        start local 3 // org.jruby.ir.representations.BasicBlock retBB
         3: .line 570
            aload 3 /* retBB */
            invokevirtual org.jruby.ir.representations.BasicBlock.getInstrs:()Ljava/util/List;
            astore 5 /* rbInstrs */
        start local 5 // java.util.List rbInstrs
         4: .line 571
            aload 5 /* rbInstrs */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.jruby.ir.instructions.Instr
            astore 6 /* first */
        start local 6 // org.jruby.ir.instructions.Instr first
         5: .line 572
            aload 6 /* first */
            instanceof org.jruby.ir.instructions.ReturnInstr
            ifeq 26
         6: .line 573
            aload 6 /* first */
            checkcast org.jruby.ir.instructions.ReturnInstr
            invokevirtual org.jruby.ir.instructions.ReturnInstr.getReturnValue:()Lorg/jruby/ir/operands/Operand;
            astore 7 /* rv */
        start local 7 // org.jruby.ir.operands.Operand rv
         7: .line 574
            aload 7 /* rv */
            instanceof org.jruby.ir.operands.Variable
            ifeq 26
         8: .line 575
            aload 0 /* this */
            aload 3 /* retBB */
            invokevirtual org.jruby.ir.representations.CFG.getIncomingEdges:(Lorg/jruby/ir/representations/BasicBlock;)Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 9
            goto 25
      StackMap locals: org.jruby.ir.representations.CFG java.util.List java.util.List org.jruby.ir.representations.BasicBlock java.util.Iterator java.util.List org.jruby.ir.instructions.Instr org.jruby.ir.operands.Operand top java.util.Iterator
      StackMap stack:
         9: aload 9
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.dirgra.Edge
            astore 8 /* e */
        start local 8 // org.jruby.dirgra.Edge e
        10: .line 576
            aload 8 /* e */
            invokevirtual org.jruby.dirgra.Edge.getSource:()Lorg/jruby/dirgra/Vertex;
            invokevirtual org.jruby.dirgra.Vertex.getData:()Lorg/jruby/dirgra/ExplicitVertexID;
            checkcast org.jruby.ir.representations.BasicBlock
            astore 10 /* srcBB */
        start local 10 // org.jruby.ir.representations.BasicBlock srcBB
        11: .line 577
            aload 10 /* srcBB */
            invokevirtual org.jruby.ir.representations.BasicBlock.getInstrs:()Ljava/util/List;
            astore 11 /* srcInstrs */
        start local 11 // java.util.List srcInstrs
        12: .line 578
            aload 11 /* srcInstrs */
            invokeinterface java.util.List.size:()I
            istore 12 /* n */
        start local 12 // int n
        13: .line 581
            iload 12 /* n */
            ifne 14
            goto 25
        14: .line 583
      StackMap locals: org.jruby.ir.representations.CFG java.util.List java.util.List org.jruby.ir.representations.BasicBlock java.util.Iterator java.util.List org.jruby.ir.instructions.Instr org.jruby.ir.operands.Operand org.jruby.dirgra.Edge java.util.Iterator org.jruby.ir.representations.BasicBlock java.util.List int
      StackMap stack:
            aconst_null
            astore 13 /* jump */
        start local 13 // org.jruby.ir.instructions.Instr jump
        15: .line 584
            aload 11 /* srcInstrs */
            iload 12 /* n */
            iconst_1
            isub
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.jruby.ir.instructions.Instr
            astore 14 /* last */
        start local 14 // org.jruby.ir.instructions.Instr last
        16: .line 586
            aload 14 /* last */
            instanceof org.jruby.ir.instructions.JumpInstr
            ifeq 19
            iload 12 /* n */
            iconst_2
            if_icmple 19
        17: .line 587
            aload 14 /* last */
            astore 13 /* jump */
        18: .line 588
            aload 11 /* srcInstrs */
            iload 12 /* n */
            iconst_2
            isub
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.jruby.ir.instructions.Instr
            astore 14 /* last */
        19: .line 591
      StackMap locals: org.jruby.ir.instructions.Instr org.jruby.ir.instructions.Instr
      StackMap stack:
            aload 14 /* last */
            instanceof org.jruby.ir.instructions.CopyInstr
            ifeq 25
            aload 14 /* last */
            checkcast org.jruby.ir.instructions.CopyInstr
            invokevirtual org.jruby.ir.instructions.CopyInstr.getResult:()Lorg/jruby/ir/operands/Variable;
            aload 7 /* rv */
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 25
        20: .line 592
            aload 11 /* srcInstrs */
            iload 12 /* n */
            iconst_1
            isub
            new org.jruby.ir.instructions.ReturnInstr
            dup
            aload 14 /* last */
            checkcast org.jruby.ir.instructions.CopyInstr
            invokevirtual org.jruby.ir.instructions.CopyInstr.getSource:()Lorg/jruby/ir/operands/Operand;
            invokespecial org.jruby.ir.instructions.ReturnInstr.<init>:(Lorg/jruby/ir/operands/Operand;)V
            invokeinterface java.util.List.set:(ILjava/lang/Object;)Ljava/lang/Object;
            pop
        21: .line 593
            aload 2 /* toRemove */
            aload 8 /* e */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        22: .line 594
            aload 0 /* this */
            aload 10 /* srcBB */
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.exitBB:Lorg/jruby/ir/representations/BasicBlock;
            getstatic org.jruby.ir.representations.CFG$EdgeType.EXIT:Lorg/jruby/ir/representations/CFG$EdgeType;
            invokevirtual org.jruby.ir.representations.CFG.addEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)V
        23: .line 596
            aload 13 /* jump */
            ifnull 25
        24: .line 597
            aload 11 /* srcInstrs */
            aload 13 /* jump */
            invokeinterface java.util.List.remove:(Ljava/lang/Object;)Z
            pop
        end local 14 // org.jruby.ir.instructions.Instr last
        end local 13 // org.jruby.ir.instructions.Instr jump
        end local 12 // int n
        end local 11 // java.util.List srcInstrs
        end local 10 // org.jruby.ir.representations.BasicBlock srcBB
        end local 8 // org.jruby.dirgra.Edge e
        25: .line 575
      StackMap locals: org.jruby.ir.representations.CFG java.util.List java.util.List org.jruby.ir.representations.BasicBlock java.util.Iterator java.util.List org.jruby.ir.instructions.Instr org.jruby.ir.operands.Operand top java.util.Iterator
      StackMap stack:
            aload 9
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 9
        end local 7 // org.jruby.ir.operands.Operand rv
        end local 6 // org.jruby.ir.instructions.Instr first
        end local 5 // java.util.List rbInstrs
        end local 3 // org.jruby.ir.representations.BasicBlock retBB
        26: .line 569
      StackMap locals: org.jruby.ir.representations.CFG java.util.List java.util.List top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
        27: .line 605
            aload 2 /* toRemove */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 30
      StackMap locals:
      StackMap stack:
        28: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.dirgra.Edge
            astore 3 /* edge */
        start local 3 // org.jruby.dirgra.Edge edge
        29: .line 606
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 3 /* edge */
            invokevirtual org.jruby.dirgra.DirectedGraph.removeEdge:(Lorg/jruby/dirgra/Edge;)V
        end local 3 // org.jruby.dirgra.Edge edge
        30: .line 605
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 28
        31: .line 609
            aload 0 /* this */
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            invokevirtual org.jruby.ir.representations.CFG.deleteOrphanedBlocks:(Lorg/jruby/dirgra/DirectedGraph;)V
        32: .line 611
            aload 0 /* this */
            invokevirtual org.jruby.ir.representations.CFG.collapseStraightLineBBs:()V
        33: .line 612
            return
        end local 2 // java.util.List toRemove
        end local 1 // java.util.List returnBBs
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   34     0       this  Lorg/jruby/ir/representations/CFG;
            0   34     1  returnBBs  Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;
            1   34     2   toRemove  Ljava/util/List<Lorg/jruby/dirgra/Edge<Lorg/jruby/ir/representations/BasicBlock;>;>;
            3   26     3      retBB  Lorg/jruby/ir/representations/BasicBlock;
            4   26     5   rbInstrs  Ljava/util/List<Lorg/jruby/ir/instructions/Instr;>;
            5   26     6      first  Lorg/jruby/ir/instructions/Instr;
            7   26     7         rv  Lorg/jruby/ir/operands/Operand;
           10   25     8          e  Lorg/jruby/dirgra/Edge<Lorg/jruby/ir/representations/BasicBlock;>;
           11   25    10      srcBB  Lorg/jruby/ir/representations/BasicBlock;
           12   25    11  srcInstrs  Ljava/util/List<Lorg/jruby/ir/instructions/Instr;>;
           13   25    12          n  I
           15   25    13       jump  Lorg/jruby/ir/instructions/Instr;
           16   25    14       last  Lorg/jruby/ir/instructions/Instr;
           29   30     3       edge  Lorg/jruby/dirgra/Edge<Lorg/jruby/ir/representations/BasicBlock;>;
    Signature: (Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;)V
    MethodParameters:
           Name  Flags
      returnBBs  

  public java.lang.String toStringGraph();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.ir.representations.CFG this
         0: .line 615
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            invokevirtual org.jruby.dirgra.DirectedGraph.toString:()Ljava/lang/String;
            areturn
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/ir/representations/CFG;

  public java.lang.String toStringInstrs();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // org.jruby.ir.representations.CFG this
         0: .line 619
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 1 /* buf */
        start local 1 // java.lang.StringBuilder buf
         1: .line 621
            aload 0 /* this */
            invokevirtual org.jruby.ir.representations.CFG.getSortedBasicBlocks:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 3
            goto 4
      StackMap locals: org.jruby.ir.representations.CFG java.lang.StringBuilder top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            astore 2 /* b */
        start local 2 // org.jruby.ir.representations.BasicBlock b
         3: .line 622
            aload 1 /* buf */
            aload 2 /* b */
            invokevirtual org.jruby.ir.representations.BasicBlock.toStringInstrs:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 2 // org.jruby.ir.representations.BasicBlock b
         4: .line 621
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 624
            aload 1 /* buf */
            ldc "\n\n------ Rescue block map ------\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         6: .line 625
            new java.util.ArrayList
            dup
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.rescuerMap:Ljava/util/Map;
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 2 /* e */
        start local 2 // java.util.List e
         7: .line 626
            aload 2 /* e */
            invokestatic java.util.Collections.sort:(Ljava/util/List;)V
         8: .line 628
            aload 2 /* e */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 11
      StackMap locals: org.jruby.ir.representations.CFG java.lang.StringBuilder java.util.List top java.util.Iterator
      StackMap stack:
         9: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            astore 3 /* bb */
        start local 3 // org.jruby.ir.representations.BasicBlock bb
        10: .line 629
            aload 1 /* buf */
            ldc "BB "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* bb */
            invokevirtual org.jruby.ir.representations.BasicBlock.getID:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " --> BB "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.rescuerMap:Ljava/util/Map;
            aload 3 /* bb */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            invokevirtual org.jruby.ir.representations.BasicBlock.getID:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 3 // org.jruby.ir.representations.BasicBlock bb
        11: .line 628
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 9
        12: .line 643
            aload 1 /* buf */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 2 // java.util.List e
        end local 1 // java.lang.StringBuilder buf
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0  this  Lorg/jruby/ir/representations/CFG;
            1   13     1   buf  Ljava/lang/StringBuilder;
            3    4     2     b  Lorg/jruby/ir/representations/BasicBlock;
            7   13     2     e  Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;
           10   11     3    bb  Lorg/jruby/ir/representations/BasicBlock;

  public void removeEdge(org.jruby.ir.representations.BasicBlock, org.jruby.ir.representations.BasicBlock);
    descriptor: (Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // org.jruby.ir.representations.BasicBlock a
        start local 2 // org.jruby.ir.representations.BasicBlock b
         0: .line 647
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 1 /* a */
            aload 2 /* b */
            invokevirtual org.jruby.dirgra.DirectedGraph.removeEdge:(Lorg/jruby/dirgra/ExplicitVertexID;Lorg/jruby/dirgra/ExplicitVertexID;)V
         1: .line 648
            return
        end local 2 // org.jruby.ir.representations.BasicBlock b
        end local 1 // org.jruby.ir.representations.BasicBlock a
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/jruby/ir/representations/CFG;
            0    2     1     a  Lorg/jruby/ir/representations/BasicBlock;
            0    2     2     b  Lorg/jruby/ir/representations/BasicBlock;
    MethodParameters:
      Name  Flags
      a     
      b     

  private java.util.LinkedList<org.jruby.ir.representations.BasicBlock> buildPostOrderList();
    descriptor: ()Ljava/util/LinkedList;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=10, args_size=1
        start local 0 // org.jruby.ir.representations.CFG this
         0: .line 651
            aload 0 /* this */
            invokevirtual org.jruby.ir.representations.CFG.getEntryBB:()Lorg/jruby/ir/representations/BasicBlock;
            astore 1 /* root */
        start local 1 // org.jruby.ir.representations.BasicBlock root
         1: .line 652
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            astore 2 /* list */
        start local 2 // java.util.LinkedList list
         2: .line 653
            new java.util.Stack
            dup
            invokespecial java.util.Stack.<init>:()V
            astore 3 /* stack */
        start local 3 // java.util.Stack stack
         3: .line 654
            iconst_1
            aload 0 /* this */
            invokevirtual org.jruby.ir.representations.CFG.getMaxNodeID:()I
            iadd
            newarray 4
            astore 4 /* visited */
        start local 4 // boolean[] visited
         4: .line 656
            aload 3 /* stack */
            aload 1 /* root */
            invokevirtual java.util.Stack.push:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 657
            aload 4 /* visited */
            aload 1 /* root */
            invokevirtual org.jruby.ir.representations.BasicBlock.getID:()I
            iconst_1
            bastore
         6: .line 660
            goto 23
         7: .line 662
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock java.util.LinkedList java.util.Stack boolean[]
      StackMap stack:
            aload 3 /* stack */
            invokevirtual java.util.Stack.peek:()Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            astore 5 /* b */
        start local 5 // org.jruby.ir.representations.BasicBlock b
         8: .line 663
            iconst_1
            istore 6 /* allChildrenVisited */
        start local 6 // boolean allChildrenVisited
         9: .line 664
            aload 0 /* this */
            aload 5 /* b */
            invokevirtual org.jruby.ir.representations.CFG.getOutgoingDestinations:(Lorg/jruby/ir/representations/BasicBlock;)Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 8
            goto 19
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock java.util.LinkedList java.util.Stack boolean[] org.jruby.ir.representations.BasicBlock int top java.util.Iterator
      StackMap stack:
        10: aload 8
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            astore 7 /* dst */
        start local 7 // org.jruby.ir.representations.BasicBlock dst
        11: .line 665
            aload 7 /* dst */
            invokevirtual org.jruby.ir.representations.BasicBlock.getID:()I
            istore 9 /* dstID */
        start local 9 // int dstID
        12: .line 666
            aload 4 /* visited */
            iload 9 /* dstID */
            baload
            ifne 19
        13: .line 667
            iconst_0
            istore 6 /* allChildrenVisited */
        14: .line 671
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 7 /* dst */
            invokevirtual org.jruby.dirgra.DirectedGraph.findVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
            invokevirtual org.jruby.dirgra.Vertex.outDegree:()I
            ifne 17
        15: .line 672
            aload 2 /* list */
            aload 7 /* dst */
            invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
            pop
        16: .line 673
            goto 18
        17: .line 674
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock java.util.LinkedList java.util.Stack boolean[] org.jruby.ir.representations.BasicBlock int org.jruby.ir.representations.BasicBlock java.util.Iterator int
      StackMap stack:
            aload 3 /* stack */
            aload 7 /* dst */
            invokevirtual java.util.Stack.push:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        18: .line 676
      StackMap locals:
      StackMap stack:
            aload 4 /* visited */
            iload 9 /* dstID */
            iconst_1
            bastore
        end local 9 // int dstID
        end local 7 // org.jruby.ir.representations.BasicBlock dst
        19: .line 664
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock java.util.LinkedList java.util.Stack boolean[] org.jruby.ir.representations.BasicBlock int top java.util.Iterator
      StackMap stack:
            aload 8
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 10
        20: .line 681
            iload 6 /* allChildrenVisited */
            ifeq 23
        21: .line 682
            aload 3 /* stack */
            invokevirtual java.util.Stack.pop:()Ljava/lang/Object;
            pop
        22: .line 683
            aload 2 /* list */
            aload 5 /* b */
            invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
            pop
        end local 6 // boolean allChildrenVisited
        end local 5 // org.jruby.ir.representations.BasicBlock b
        23: .line 660
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock java.util.LinkedList java.util.Stack boolean[]
      StackMap stack:
            aload 3 /* stack */
            invokevirtual java.util.Stack.empty:()Z
            ifeq 7
        24: .line 688
            aload 0 /* this */
            invokevirtual org.jruby.ir.representations.CFG.getBasicBlocks:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 6
            goto 29
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock java.util.LinkedList java.util.Stack boolean[] top java.util.Iterator
      StackMap stack:
        25: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            astore 5 /* b */
        start local 5 // org.jruby.ir.representations.BasicBlock b
        26: .line 689
            aload 4 /* visited */
            aload 5 /* b */
            invokevirtual org.jruby.ir.representations.BasicBlock.getID:()I
            baload
            ifne 29
        27: .line 690
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "BB "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* b */
            invokevirtual org.jruby.ir.representations.BasicBlock.getID:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " missing from po list!"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.jruby.ir.representations.CFG.printError:(Ljava/lang/String;)V
        28: .line 691
            goto 30
        end local 5 // org.jruby.ir.representations.BasicBlock b
        29: .line 688
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 25
        30: .line 695
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock java.util.LinkedList java.util.Stack boolean[]
      StackMap stack:
            aload 2 /* list */
            areturn
        end local 4 // boolean[] visited
        end local 3 // java.util.Stack stack
        end local 2 // java.util.LinkedList list
        end local 1 // org.jruby.ir.representations.BasicBlock root
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   31     0                this  Lorg/jruby/ir/representations/CFG;
            1   31     1                root  Lorg/jruby/ir/representations/BasicBlock;
            2   31     2                list  Ljava/util/LinkedList<Lorg/jruby/ir/representations/BasicBlock;>;
            3   31     3               stack  Ljava/util/Stack<Lorg/jruby/ir/representations/BasicBlock;>;
            4   31     4             visited  [Z
            8   23     5                   b  Lorg/jruby/ir/representations/BasicBlock;
            9   23     6  allChildrenVisited  Z
           11   19     7                 dst  Lorg/jruby/ir/representations/BasicBlock;
           12   19     9               dstID  I
           26   29     5                   b  Lorg/jruby/ir/representations/BasicBlock;
    Signature: ()Ljava/util/LinkedList<Lorg/jruby/ir/representations/BasicBlock;>;

  public org.jruby.ir.representations.CFG clone(org.jruby.ir.transformations.inlining.CloneInfo, org.jruby.ir.IRScope);
    descriptor: (Lorg/jruby/ir/transformations/inlining/CloneInfo;Lorg/jruby/ir/IRScope;)Lorg/jruby/ir/representations/CFG;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=11, args_size=3
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // org.jruby.ir.transformations.inlining.CloneInfo info
        start local 2 // org.jruby.ir.IRScope clonedScope
         0: .line 706
            new org.jruby.ir.representations.CFG
            dup
            aload 2 /* clonedScope */
            invokespecial org.jruby.ir.representations.CFG.<init>:(Lorg/jruby/ir/IRScope;)V
            astore 3 /* newCFG */
        start local 3 // org.jruby.ir.representations.CFG newCFG
         1: .line 707
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 4 /* cloneBBMap */
        start local 4 // java.util.Map cloneBBMap
         2: .line 710
            aload 0 /* this */
            invokevirtual org.jruby.ir.representations.CFG.getBasicBlocks:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 6
            goto 7
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.transformations.inlining.CloneInfo org.jruby.ir.IRScope org.jruby.ir.representations.CFG java.util.Map top java.util.Iterator
      StackMap stack:
         3: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            astore 5 /* bb */
        start local 5 // org.jruby.ir.representations.BasicBlock bb
         4: .line 711
            aload 5 /* bb */
            aload 1 /* info */
            aload 3 /* newCFG */
            invokevirtual org.jruby.ir.representations.BasicBlock.clone:(Lorg/jruby/ir/transformations/inlining/CloneInfo;Lorg/jruby/ir/representations/CFG;)Lorg/jruby/ir/representations/BasicBlock;
            astore 7 /* newBB */
        start local 7 // org.jruby.ir.representations.BasicBlock newBB
         5: .line 712
            aload 3 /* newCFG */
            aload 7 /* newBB */
            invokevirtual org.jruby.ir.representations.CFG.addBasicBlock:(Lorg/jruby/ir/representations/BasicBlock;)V
         6: .line 713
            aload 4 /* cloneBBMap */
            aload 5 /* bb */
            aload 7 /* newBB */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 7 // org.jruby.ir.representations.BasicBlock newBB
        end local 5 // org.jruby.ir.representations.BasicBlock bb
         7: .line 710
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         8: .line 717
            aload 0 /* this */
            invokevirtual org.jruby.ir.representations.CFG.getBasicBlocks:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 6
            goto 16
      StackMap locals:
      StackMap stack:
         9: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            astore 5 /* bb */
        start local 5 // org.jruby.ir.representations.BasicBlock bb
        10: .line 718
            aload 4 /* cloneBBMap */
            aload 5 /* bb */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            astore 7 /* newSource */
        start local 7 // org.jruby.ir.representations.BasicBlock newSource
        11: .line 719
            aload 0 /* this */
            aload 5 /* bb */
            invokevirtual org.jruby.ir.representations.CFG.getOutgoingEdges:(Lorg/jruby/ir/representations/BasicBlock;)Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 9
            goto 15
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.transformations.inlining.CloneInfo org.jruby.ir.IRScope org.jruby.ir.representations.CFG java.util.Map org.jruby.ir.representations.BasicBlock java.util.Iterator org.jruby.ir.representations.BasicBlock top java.util.Iterator
      StackMap stack:
        12: aload 9
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.dirgra.Edge
            astore 8 /* edge */
        start local 8 // org.jruby.dirgra.Edge edge
        13: .line 720
            aload 4 /* cloneBBMap */
            aload 8 /* edge */
            invokevirtual org.jruby.dirgra.Edge.getDestination:()Lorg/jruby/dirgra/Vertex;
            invokevirtual org.jruby.dirgra.Vertex.getData:()Lorg/jruby/dirgra/ExplicitVertexID;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            astore 10 /* newDestination */
        start local 10 // org.jruby.ir.representations.BasicBlock newDestination
        14: .line 721
            aload 3 /* newCFG */
            aload 7 /* newSource */
            aload 10 /* newDestination */
            aload 8 /* edge */
            invokevirtual org.jruby.dirgra.Edge.getType:()Ljava/lang/Object;
            invokevirtual org.jruby.ir.representations.CFG.addEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)V
        end local 10 // org.jruby.ir.representations.BasicBlock newDestination
        end local 8 // org.jruby.dirgra.Edge edge
        15: .line 719
      StackMap locals:
      StackMap stack:
            aload 9
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 12
        end local 7 // org.jruby.ir.representations.BasicBlock newSource
        end local 5 // org.jruby.ir.representations.BasicBlock bb
        16: .line 717
      StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.transformations.inlining.CloneInfo org.jruby.ir.IRScope org.jruby.ir.representations.CFG java.util.Map top java.util.Iterator
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 9
        17: .line 726
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.rescuerMap:Ljava/util/Map;
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 6
            goto 20
      StackMap locals:
      StackMap stack:
        18: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            astore 5 /* bb */
        start local 5 // org.jruby.ir.representations.BasicBlock bb
        19: .line 727
            aload 3 /* newCFG */
            aload 4 /* cloneBBMap */
            aload 5 /* bb */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            aload 4 /* cloneBBMap */
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.rescuerMap:Ljava/util/Map;
            aload 5 /* bb */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            invokevirtual org.jruby.ir.representations.CFG.setRescuerBB:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)V
        end local 5 // org.jruby.ir.representations.BasicBlock bb
        20: .line 726
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 18
        21: .line 730
            aload 3 /* newCFG */
            aload 4 /* cloneBBMap */
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.entryBB:Lorg/jruby/ir/representations/BasicBlock;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            putfield org.jruby.ir.representations.CFG.entryBB:Lorg/jruby/ir/representations/BasicBlock;
        22: .line 731
            aload 3 /* newCFG */
            aload 4 /* cloneBBMap */
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.exitBB:Lorg/jruby/ir/representations/BasicBlock;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            putfield org.jruby.ir.representations.CFG.exitBB:Lorg/jruby/ir/representations/BasicBlock;
        23: .line 732
            aload 3 /* newCFG */
            aload 4 /* cloneBBMap */
            aload 0 /* this */
            getfield org.jruby.ir.representations.CFG.globalEnsureBB:Lorg/jruby/ir/representations/BasicBlock;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.jruby.ir.representations.BasicBlock
            putfield org.jruby.ir.representations.CFG.globalEnsureBB:Lorg/jruby/ir/representations/BasicBlock;
        24: .line 734
            aload 3 /* newCFG */
            areturn
        end local 4 // java.util.Map cloneBBMap
        end local 3 // org.jruby.ir.representations.CFG newCFG
        end local 2 // org.jruby.ir.IRScope clonedScope
        end local 1 // org.jruby.ir.transformations.inlining.CloneInfo info
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   25     0            this  Lorg/jruby/ir/representations/CFG;
            0   25     1            info  Lorg/jruby/ir/transformations/inlining/CloneInfo;
            0   25     2     clonedScope  Lorg/jruby/ir/IRScope;
            1   25     3          newCFG  Lorg/jruby/ir/representations/CFG;
            2   25     4      cloneBBMap  Ljava/util/Map<Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;>;
            4    7     5              bb  Lorg/jruby/ir/representations/BasicBlock;
            5    7     7           newBB  Lorg/jruby/ir/representations/BasicBlock;
           10   16     5              bb  Lorg/jruby/ir/representations/BasicBlock;
           11   16     7       newSource  Lorg/jruby/ir/representations/BasicBlock;
           13   15     8            edge  Lorg/jruby/dirgra/Edge<Lorg/jruby/ir/representations/BasicBlock;>;
           14   15    10  newDestination  Lorg/jruby/ir/representations/BasicBlock;
           19   20     5              bb  Lorg/jruby/ir/representations/BasicBlock;
    MethodParameters:
             Name  Flags
      info         
      clonedScope  

  private void printError(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.jruby.ir.representations.CFG this
        start local 1 // java.lang.String message
         0: .line 738
            getstatic org.jruby.ir.representations.CFG.LOG:Lorg/jruby/util/log/Logger;
            new java.lang.StringBuilder
            dup
            aload 1 /* message */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "\nGraph:\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "\nInstructions:\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual org.jruby.ir.representations.CFG.toStringInstrs:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
            invokeinterface org.jruby.util.log.Logger.error:(Ljava/lang/String;[Ljava/lang/Object;)V
         1: .line 739
            return
        end local 1 // java.lang.String message
        end local 0 // org.jruby.ir.representations.CFG this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lorg/jruby/ir/representations/CFG;
            0    2     1  message  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      message  
}
SourceFile: "CFG.java"
NestMembers:
  org.jruby.ir.representations.CFG$EdgeType
InnerClasses:
  public final EdgeType = org.jruby.ir.representations.CFG$EdgeType of org.jruby.ir.representations.CFG