public class org.jruby.dirgra.Vertex<T extends org.jruby.dirgra.ExplicitVertexID> implements java.lang.Comparable<org.jruby.dirgra.Vertex<T>>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.jruby.dirgra.Vertex
  super_class: java.lang.Object
{
  private static final org.jruby.dirgra.Edge[] EMPTY_EDGE_LIST;
    descriptor: [Lorg/jruby/dirgra/Edge;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private org.jruby.dirgra.DirectedGraph graph;
    descriptor: Lorg/jruby/dirgra/DirectedGraph;
    flags: (0x0002) ACC_PRIVATE

  private T data;
    descriptor: Lorg/jruby/dirgra/ExplicitVertexID;
    flags: (0x0002) ACC_PRIVATE
    Signature: TT;

  private org.jruby.dirgra.Edge<T>[] incoming;
    descriptor: [Lorg/jruby/dirgra/Edge;
    flags: (0x0002) ACC_PRIVATE
    Signature: [Lorg/jruby/dirgra/Edge<TT;>;

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

  private org.jruby.dirgra.Edge<T>[] outgoing;
    descriptor: [Lorg/jruby/dirgra/Edge;
    flags: (0x0002) ACC_PRIVATE
    Signature: [Lorg/jruby/dirgra/Edge<TT;>;

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

  int id;
    descriptor: I
    flags: (0x0000) 

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 15
            iconst_0
            anewarray org.jruby.dirgra.Edge
            putstatic org.jruby.dirgra.Vertex.EMPTY_EDGE_LIST:[Lorg/jruby/dirgra/Edge;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.jruby.dirgra.DirectedGraph, T, );
    descriptor: (Lorg/jruby/dirgra/DirectedGraph;Lorg/jruby/dirgra/ExplicitVertexID;I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // org.jruby.dirgra.Vertex this
        start local 1 // org.jruby.dirgra.DirectedGraph graph
        start local 2 // org.jruby.dirgra.ExplicitVertexID data
        start local 3 // int id
         0: .line 24
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 18
            aload 0 /* this */
            getstatic org.jruby.dirgra.Vertex.EMPTY_EDGE_LIST:[Lorg/jruby/dirgra/Edge;
            putfield org.jruby.dirgra.Vertex.incoming:[Lorg/jruby/dirgra/Edge;
         2: .line 19
            aload 0 /* this */
            iconst_0
            putfield org.jruby.dirgra.Vertex.incomingLength:I
         3: .line 20
            aload 0 /* this */
            getstatic org.jruby.dirgra.Vertex.EMPTY_EDGE_LIST:[Lorg/jruby/dirgra/Edge;
            putfield org.jruby.dirgra.Vertex.outgoing:[Lorg/jruby/dirgra/Edge;
         4: .line 21
            aload 0 /* this */
            iconst_0
            putfield org.jruby.dirgra.Vertex.outgoingLength:I
         5: .line 25
            aload 0 /* this */
            aload 1 /* graph */
            putfield org.jruby.dirgra.Vertex.graph:Lorg/jruby/dirgra/DirectedGraph;
         6: .line 26
            aload 0 /* this */
            aload 2 /* data */
            putfield org.jruby.dirgra.Vertex.data:Lorg/jruby/dirgra/ExplicitVertexID;
         7: .line 27
            aload 0 /* this */
            iload 3 /* id */
            putfield org.jruby.dirgra.Vertex.id:I
         8: .line 28
            return
        end local 3 // int id
        end local 2 // org.jruby.dirgra.ExplicitVertexID data
        end local 1 // org.jruby.dirgra.DirectedGraph graph
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    9     0   this  Lorg/jruby/dirgra/Vertex<TT;>;
            0    9     1  graph  Lorg/jruby/dirgra/DirectedGraph;
            0    9     2   data  TT;
            0    9     3     id  I
    Signature: (Lorg/jruby/dirgra/DirectedGraph;TT;I)V
    MethodParameters:
       Name  Flags
      graph  
      data   
      id     

  public void addEdgeTo(org.jruby.dirgra.Vertex);
    descriptor: (Lorg/jruby/dirgra/Vertex;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.jruby.dirgra.Vertex this
        start local 1 // org.jruby.dirgra.Vertex destination
         0: .line 31
            aload 0 /* this */
            aload 1 /* destination */
            aconst_null
            invokevirtual org.jruby.dirgra.Vertex.addEdgeTo:(Lorg/jruby/dirgra/Vertex;Ljava/lang/Object;)V
         1: .line 32
            return
        end local 1 // org.jruby.dirgra.Vertex destination
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lorg/jruby/dirgra/Vertex<TT;>;
            0    2     1  destination  Lorg/jruby/dirgra/Vertex;
    MethodParameters:
             Name  Flags
      destination  

  public void addEdgeTo(org.jruby.dirgra.Vertex, java.lang.Object);
    descriptor: (Lorg/jruby/dirgra/Vertex;Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // org.jruby.dirgra.Vertex this
        start local 1 // org.jruby.dirgra.Vertex destination
        start local 2 // java.lang.Object type
         0: .line 35
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.graph:Lorg/jruby/dirgra/DirectedGraph;
            new org.jruby.dirgra.Edge
            dup
            aload 0 /* this */
            aload 1 /* destination */
            aload 2 /* type */
            invokespecial org.jruby.dirgra.Edge.<init>:(Lorg/jruby/dirgra/Vertex;Lorg/jruby/dirgra/Vertex;Ljava/lang/Object;)V
            invokevirtual org.jruby.dirgra.DirectedGraph.addEdge:(Lorg/jruby/dirgra/Edge;)Lorg/jruby/dirgra/Edge;
            astore 3 /* newEdge */
        start local 3 // org.jruby.dirgra.Edge newEdge
         1: .line 36
            aload 0 /* this */
            aload 3 /* newEdge */
            invokevirtual org.jruby.dirgra.Vertex.addOutgoingEdge:(Lorg/jruby/dirgra/Edge;)V
         2: .line 37
            aload 1 /* destination */
            aload 3 /* newEdge */
            invokevirtual org.jruby.dirgra.Vertex.addIncomingEdge:(Lorg/jruby/dirgra/Edge;)V
         3: .line 38
            return
        end local 3 // org.jruby.dirgra.Edge newEdge
        end local 2 // java.lang.Object type
        end local 1 // org.jruby.dirgra.Vertex destination
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         this  Lorg/jruby/dirgra/Vertex<TT;>;
            0    4     1  destination  Lorg/jruby/dirgra/Vertex;
            0    4     2         type  Ljava/lang/Object;
            1    4     3      newEdge  Lorg/jruby/dirgra/Edge<TT;>;
    MethodParameters:
             Name  Flags
      destination  
      type         

  public void addEdgeTo();
    descriptor: (Lorg/jruby/dirgra/ExplicitVertexID;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.jruby.dirgra.Vertex this
        start local 1 // org.jruby.dirgra.ExplicitVertexID destination
         0: .line 41
            aload 0 /* this */
            aload 1 /* destination */
            aconst_null
            invokevirtual org.jruby.dirgra.Vertex.addEdgeTo:(Lorg/jruby/dirgra/ExplicitVertexID;Ljava/lang/Object;)V
         1: .line 42
            return
        end local 1 // org.jruby.dirgra.ExplicitVertexID destination
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lorg/jruby/dirgra/Vertex<TT;>;
            0    2     1  destination  TT;
    Signature: (TT;)V
    MethodParameters:
             Name  Flags
      destination  

  public void addEdgeTo(T, );
    descriptor: (Lorg/jruby/dirgra/ExplicitVertexID;Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.jruby.dirgra.Vertex this
        start local 1 // org.jruby.dirgra.ExplicitVertexID destination
        start local 2 // java.lang.Object type
         0: .line 45
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 1 /* destination */
            invokevirtual org.jruby.dirgra.DirectedGraph.findOrCreateVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
            astore 3 /* destinationVertex */
        start local 3 // org.jruby.dirgra.Vertex destinationVertex
         1: .line 47
            aload 0 /* this */
            aload 3 /* destinationVertex */
            aload 2 /* type */
            invokevirtual org.jruby.dirgra.Vertex.addEdgeTo:(Lorg/jruby/dirgra/Vertex;Ljava/lang/Object;)V
         2: .line 48
            return
        end local 3 // org.jruby.dirgra.Vertex destinationVertex
        end local 2 // java.lang.Object type
        end local 1 // org.jruby.dirgra.ExplicitVertexID destination
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    3     0               this  Lorg/jruby/dirgra/Vertex<TT;>;
            0    3     1        destination  TT;
            0    3     2               type  Ljava/lang/Object;
            1    3     3  destinationVertex  Lorg/jruby/dirgra/Vertex;
    Signature: (TT;Ljava/lang/Object;)V
    MethodParameters:
             Name  Flags
      destination  
      type         

  public boolean removeEdgeTo(org.jruby.dirgra.Vertex);
    descriptor: (Lorg/jruby/dirgra/Vertex;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // org.jruby.dirgra.Vertex this
        start local 1 // org.jruby.dirgra.Vertex destination
         0: .line 51
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         1: goto 7
         2: .line 52
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoing:[Lorg/jruby/dirgra/Edge;
            iload 2 /* i */
            aaload
            astore 3 /* edge */
        start local 3 // org.jruby.dirgra.Edge edge
         3: .line 53
            aload 3 /* edge */
            invokevirtual org.jruby.dirgra.Edge.getDestination:()Lorg/jruby/dirgra/Vertex;
            aload 1 /* destination */
            if_acmpne 6
         4: .line 54
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 3 /* edge */
            invokevirtual org.jruby.dirgra.DirectedGraph.removeEdge:(Lorg/jruby/dirgra/Edge;)V
         5: .line 55
            iconst_1
            ireturn
        end local 3 // org.jruby.dirgra.Edge edge
         6: .line 51
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 2 /* i */
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoingLength:I
            if_icmplt 2
        end local 2 // int i
         8: .line 59
            iconst_0
            ireturn
        end local 1 // org.jruby.dirgra.Vertex destination
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    9     0         this  Lorg/jruby/dirgra/Vertex<TT;>;
            0    9     1  destination  Lorg/jruby/dirgra/Vertex;
            1    8     2            i  I
            3    6     3         edge  Lorg/jruby/dirgra/Edge;
    MethodParameters:
             Name  Flags
      destination  

  protected void addOutgoingEdge(org.jruby.dirgra.Edge<T>);
    descriptor: (Lorg/jruby/dirgra/Edge;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // org.jruby.dirgra.Vertex this
        start local 1 // org.jruby.dirgra.Edge newEdge
         0: .line 63
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         1: goto 4
         2: .line 65
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoing:[Lorg/jruby/dirgra/Edge;
            iload 2 /* i */
            aaload
            aload 1 /* newEdge */
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 3
            return
         3: .line 63
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         4: iload 2 /* i */
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoingLength:I
            if_icmplt 2
        end local 2 // int i
         5: .line 68
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoingLength:I
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoing:[Lorg/jruby/dirgra/Edge;
            arraylength
            if_icmplt 6
            aload 0 /* this */
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoing:[Lorg/jruby/dirgra/Edge;
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoingLength:I
            invokevirtual org.jruby.dirgra.DirectedGraph.growEdges:([Lorg/jruby/dirgra/Edge;I)[Lorg/jruby/dirgra/Edge;
            putfield org.jruby.dirgra.Vertex.outgoing:[Lorg/jruby/dirgra/Edge;
         6: .line 70
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoing:[Lorg/jruby/dirgra/Edge;
            aload 0 /* this */
            dup
            getfield org.jruby.dirgra.Vertex.outgoingLength:I
            dup_x1
            iconst_1
            iadd
            putfield org.jruby.dirgra.Vertex.outgoingLength:I
            aload 1 /* newEdge */
            aastore
         7: .line 71
            return
        end local 1 // org.jruby.dirgra.Edge newEdge
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    8     0     this  Lorg/jruby/dirgra/Vertex<TT;>;
            0    8     1  newEdge  Lorg/jruby/dirgra/Edge<TT;>;
            1    5     2        i  I
    Signature: (Lorg/jruby/dirgra/Edge<TT;>;)V
    MethodParameters:
         Name  Flags
      newEdge  

  protected void addIncomingEdge(org.jruby.dirgra.Edge<T>);
    descriptor: (Lorg/jruby/dirgra/Edge;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // org.jruby.dirgra.Vertex this
        start local 1 // org.jruby.dirgra.Edge newEdge
         0: .line 74
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         1: goto 4
         2: .line 76
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.incoming:[Lorg/jruby/dirgra/Edge;
            iload 2 /* i */
            aaload
            aload 1 /* newEdge */
            if_acmpne 3
            return
         3: .line 74
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         4: iload 2 /* i */
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.incomingLength:I
            if_icmplt 2
        end local 2 // int i
         5: .line 79
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.incomingLength:I
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.incoming:[Lorg/jruby/dirgra/Edge;
            arraylength
            if_icmplt 6
            aload 0 /* this */
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.incoming:[Lorg/jruby/dirgra/Edge;
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.incomingLength:I
            invokevirtual org.jruby.dirgra.DirectedGraph.growEdges:([Lorg/jruby/dirgra/Edge;I)[Lorg/jruby/dirgra/Edge;
            putfield org.jruby.dirgra.Vertex.incoming:[Lorg/jruby/dirgra/Edge;
         6: .line 81
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.incoming:[Lorg/jruby/dirgra/Edge;
            aload 0 /* this */
            dup
            getfield org.jruby.dirgra.Vertex.incomingLength:I
            dup_x1
            iconst_1
            iadd
            putfield org.jruby.dirgra.Vertex.incomingLength:I
            aload 1 /* newEdge */
            aastore
         7: .line 82
            return
        end local 1 // org.jruby.dirgra.Edge newEdge
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    8     0     this  Lorg/jruby/dirgra/Vertex<TT;>;
            0    8     1  newEdge  Lorg/jruby/dirgra/Edge<TT;>;
            1    5     2        i  I
    Signature: (Lorg/jruby/dirgra/Edge<TT;>;)V
    MethodParameters:
         Name  Flags
      newEdge  

  protected void removeOutgoingEdge(org.jruby.dirgra.Edge<T>);
    descriptor: (Lorg/jruby/dirgra/Edge;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=4, args_size=2
        start local 0 // org.jruby.dirgra.Vertex this
        start local 1 // org.jruby.dirgra.Edge edge
         0: .line 85
            iconst_m1
            istore 2 /* splitIndex */
        start local 2 // int splitIndex
         1: .line 87
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         2: goto 7
         3: .line 88
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoing:[Lorg/jruby/dirgra/Edge;
            iload 3 /* i */
            aaload
            aload 1 /* edge */
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 6
         4: .line 89
            iload 3 /* i */
            istore 2 /* splitIndex */
         5: .line 90
            goto 8
         6: .line 87
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 3 /* i */
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoingLength:I
            if_icmplt 3
        end local 3 // int i
         8: .line 94
      StackMap locals:
      StackMap stack:
            iload 2 /* splitIndex */
            iconst_m1
            if_icmpne 9
            return
         9: .line 96
      StackMap locals:
      StackMap stack:
            iload 2 /* splitIndex */
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoingLength:I
            iconst_1
            isub
            if_icmpeq 11
        10: .line 97
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoing:[Lorg/jruby/dirgra/Edge;
            iload 2 /* splitIndex */
            iconst_1
            iadd
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoing:[Lorg/jruby/dirgra/Edge;
            iload 2 /* splitIndex */
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoingLength:I
            iconst_1
            isub
            iload 2 /* splitIndex */
            isub
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        11: .line 99
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoing:[Lorg/jruby/dirgra/Edge;
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoingLength:I
            iconst_1
            isub
            aconst_null
            aastore
        12: .line 100
            aload 0 /* this */
            dup
            getfield org.jruby.dirgra.Vertex.outgoingLength:I
            iconst_1
            isub
            putfield org.jruby.dirgra.Vertex.outgoingLength:I
        13: .line 101
            return
        end local 2 // int splitIndex
        end local 1 // org.jruby.dirgra.Edge edge
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   14     0        this  Lorg/jruby/dirgra/Vertex<TT;>;
            0   14     1        edge  Lorg/jruby/dirgra/Edge<TT;>;
            1   14     2  splitIndex  I
            2    8     3           i  I
    Signature: (Lorg/jruby/dirgra/Edge<TT;>;)V
    MethodParameters:
      Name  Flags
      edge  

  protected void removeIncomingEdge(org.jruby.dirgra.Edge<T>);
    descriptor: (Lorg/jruby/dirgra/Edge;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=4, args_size=2
        start local 0 // org.jruby.dirgra.Vertex this
        start local 1 // org.jruby.dirgra.Edge edge
         0: .line 104
            iconst_m1
            istore 2 /* splitIndex */
        start local 2 // int splitIndex
         1: .line 106
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         2: goto 7
         3: .line 107
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.incoming:[Lorg/jruby/dirgra/Edge;
            iload 3 /* i */
            aaload
            aload 1 /* edge */
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 6
         4: .line 108
            iload 3 /* i */
            istore 2 /* splitIndex */
         5: .line 109
            goto 8
         6: .line 106
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 3 /* i */
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.incomingLength:I
            if_icmplt 3
        end local 3 // int i
         8: .line 113
      StackMap locals:
      StackMap stack:
            iload 2 /* splitIndex */
            iconst_m1
            if_icmpne 9
            return
         9: .line 115
      StackMap locals:
      StackMap stack:
            iload 2 /* splitIndex */
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.incomingLength:I
            iconst_1
            isub
            if_icmpeq 11
        10: .line 116
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.incoming:[Lorg/jruby/dirgra/Edge;
            iload 2 /* splitIndex */
            iconst_1
            iadd
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.incoming:[Lorg/jruby/dirgra/Edge;
            iload 2 /* splitIndex */
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.incomingLength:I
            iconst_1
            isub
            iload 2 /* splitIndex */
            isub
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        11: .line 118
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.incoming:[Lorg/jruby/dirgra/Edge;
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.incomingLength:I
            iconst_1
            isub
            aconst_null
            aastore
        12: .line 119
            aload 0 /* this */
            dup
            getfield org.jruby.dirgra.Vertex.incomingLength:I
            iconst_1
            isub
            putfield org.jruby.dirgra.Vertex.incomingLength:I
        13: .line 120
            return
        end local 2 // int splitIndex
        end local 1 // org.jruby.dirgra.Edge edge
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   14     0        this  Lorg/jruby/dirgra/Vertex<TT;>;
            0   14     1        edge  Lorg/jruby/dirgra/Edge<TT;>;
            1   14     2  splitIndex  I
            2    8     3           i  I
    Signature: (Lorg/jruby/dirgra/Edge<TT;>;)V
    MethodParameters:
      Name  Flags
      edge  

  public void removeAllIncomingEdges();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.jruby.dirgra.Vertex this
         0: .line 123
            goto 2
         1: .line 124
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.incoming:[Lorg/jruby/dirgra/Edge;
            iconst_0
            aaload
            invokevirtual org.jruby.dirgra.DirectedGraph.removeEdge:(Lorg/jruby/dirgra/Edge;)V
         2: .line 123
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.incomingLength:I
            ifgt 1
         3: .line 127
            aload 0 /* this */
            getstatic org.jruby.dirgra.Vertex.EMPTY_EDGE_LIST:[Lorg/jruby/dirgra/Edge;
            putfield org.jruby.dirgra.Vertex.incoming:[Lorg/jruby/dirgra/Edge;
         4: .line 128
            return
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/jruby/dirgra/Vertex<TT;>;

  public void removeAllOutgoingEdges();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.jruby.dirgra.Vertex this
         0: .line 131
            goto 2
         1: .line 132
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.graph:Lorg/jruby/dirgra/DirectedGraph;
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoing:[Lorg/jruby/dirgra/Edge;
            iconst_0
            aaload
            invokevirtual org.jruby.dirgra.DirectedGraph.removeEdge:(Lorg/jruby/dirgra/Edge;)V
         2: .line 131
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoingLength:I
            ifgt 1
         3: .line 135
            aload 0 /* this */
            getstatic org.jruby.dirgra.Vertex.EMPTY_EDGE_LIST:[Lorg/jruby/dirgra/Edge;
            putfield org.jruby.dirgra.Vertex.outgoing:[Lorg/jruby/dirgra/Edge;
         4: .line 136
            return
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/jruby/dirgra/Vertex<TT;>;

  public void removeAllEdges();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.dirgra.Vertex this
         0: .line 139
            aload 0 /* this */
            invokevirtual org.jruby.dirgra.Vertex.removeAllIncomingEdges:()V
         1: .line 140
            aload 0 /* this */
            invokevirtual org.jruby.dirgra.Vertex.removeAllOutgoingEdges:()V
         2: .line 141
            return
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/jruby/dirgra/Vertex<TT;>;

  public int inDegree();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.dirgra.Vertex this
         0: .line 144
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.incomingLength:I
            ireturn
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/dirgra/Vertex<TT;>;

  public int outDegree();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.dirgra.Vertex this
         0: .line 148
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoingLength:I
            ireturn
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/dirgra/Vertex<TT;>;

  public java.lang.Iterable<org.jruby.dirgra.Edge<T>> getIncomingEdgesOfType();
    descriptor: (Ljava/lang/Object;)Ljava/lang/Iterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // org.jruby.dirgra.Vertex this
        start local 1 // java.lang.Object type
         0: .line 152
            new org.jruby.dirgra.EdgeTypeIterable
            dup
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.incoming:[Lorg/jruby/dirgra/Edge;
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.incomingLength:I
            aload 1 /* type */
            invokespecial org.jruby.dirgra.EdgeTypeIterable.<init>:([Lorg/jruby/dirgra/Edge;ILjava/lang/Object;)V
            areturn
        end local 1 // java.lang.Object type
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/dirgra/Vertex<TT;>;
            0    1     1  type  Ljava/lang/Object;
    Signature: (Ljava/lang/Object;)Ljava/lang/Iterable<Lorg/jruby/dirgra/Edge<TT;>;>;
    MethodParameters:
      Name  Flags
      type  

  public java.lang.Iterable<org.jruby.dirgra.Edge<T>> getIncomingEdgesNotOfType();
    descriptor: (Ljava/lang/Object;)Ljava/lang/Iterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // org.jruby.dirgra.Vertex this
        start local 1 // java.lang.Object type
         0: .line 156
            new org.jruby.dirgra.EdgeTypeIterable
            dup
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.incoming:[Lorg/jruby/dirgra/Edge;
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.incomingLength:I
            aload 1 /* type */
            iconst_1
            invokespecial org.jruby.dirgra.EdgeTypeIterable.<init>:([Lorg/jruby/dirgra/Edge;ILjava/lang/Object;Z)V
            areturn
        end local 1 // java.lang.Object type
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/dirgra/Vertex<TT;>;
            0    1     1  type  Ljava/lang/Object;
    Signature: (Ljava/lang/Object;)Ljava/lang/Iterable<Lorg/jruby/dirgra/Edge<TT;>;>;
    MethodParameters:
      Name  Flags
      type  

  public java.lang.Iterable<org.jruby.dirgra.Edge<T>> getOutgoingEdgesOfType();
    descriptor: (Ljava/lang/Object;)Ljava/lang/Iterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // org.jruby.dirgra.Vertex this
        start local 1 // java.lang.Object type
         0: .line 160
            new org.jruby.dirgra.EdgeTypeIterable
            dup
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoing:[Lorg/jruby/dirgra/Edge;
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoingLength:I
            aload 1 /* type */
            invokespecial org.jruby.dirgra.EdgeTypeIterable.<init>:([Lorg/jruby/dirgra/Edge;ILjava/lang/Object;)V
            areturn
        end local 1 // java.lang.Object type
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/dirgra/Vertex<TT;>;
            0    1     1  type  Ljava/lang/Object;
    Signature: (Ljava/lang/Object;)Ljava/lang/Iterable<Lorg/jruby/dirgra/Edge<TT;>;>;
    MethodParameters:
      Name  Flags
      type  

  public T getIncomingSourceData();
    descriptor: ()Lorg/jruby/dirgra/ExplicitVertexID;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.jruby.dirgra.Vertex this
         0: .line 164
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.jruby.dirgra.Vertex.getIncomingEdges:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            invokevirtual org.jruby.dirgra.Vertex.getFirstEdge:(Ljava/util/Iterator;)Lorg/jruby/dirgra/Edge;
            astore 1 /* edge */
        start local 1 // org.jruby.dirgra.Edge edge
         1: .line 166
            aload 1 /* edge */
            ifnonnull 2
            aconst_null
            goto 3
      StackMap locals: org.jruby.dirgra.Edge
      StackMap stack:
         2: aload 1 /* edge */
            invokevirtual org.jruby.dirgra.Edge.getSource:()Lorg/jruby/dirgra/Vertex;
            invokevirtual org.jruby.dirgra.Vertex.getData:()Lorg/jruby/dirgra/ExplicitVertexID;
      StackMap locals:
      StackMap stack: org.jruby.dirgra.ExplicitVertexID
         3: areturn
        end local 1 // org.jruby.dirgra.Edge edge
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/jruby/dirgra/Vertex<TT;>;
            1    4     1  edge  Lorg/jruby/dirgra/Edge<TT;>;
    Signature: ()TT;

  public T getIncomingSourceDataOfType();
    descriptor: (Ljava/lang/Object;)Lorg/jruby/dirgra/ExplicitVertexID;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.jruby.dirgra.Vertex this
        start local 1 // java.lang.Object type
         0: .line 170
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* type */
            invokevirtual org.jruby.dirgra.Vertex.getIncomingEdgesOfType:(Ljava/lang/Object;)Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            invokevirtual org.jruby.dirgra.Vertex.getFirstEdge:(Ljava/util/Iterator;)Lorg/jruby/dirgra/Edge;
            astore 2 /* edge */
        start local 2 // org.jruby.dirgra.Edge edge
         1: .line 172
            aload 2 /* edge */
            ifnonnull 2
            aconst_null
            goto 3
      StackMap locals: org.jruby.dirgra.Edge
      StackMap stack:
         2: aload 2 /* edge */
            invokevirtual org.jruby.dirgra.Edge.getSource:()Lorg/jruby/dirgra/Vertex;
            invokevirtual org.jruby.dirgra.Vertex.getData:()Lorg/jruby/dirgra/ExplicitVertexID;
      StackMap locals:
      StackMap stack: org.jruby.dirgra.ExplicitVertexID
         3: areturn
        end local 2 // org.jruby.dirgra.Edge edge
        end local 1 // java.lang.Object type
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/jruby/dirgra/Vertex<TT;>;
            0    4     1  type  Ljava/lang/Object;
            1    4     2  edge  Lorg/jruby/dirgra/Edge<TT;>;
    Signature: (Ljava/lang/Object;)TT;
    MethodParameters:
      Name  Flags
      type  

  public java.lang.Iterable<T> getIncomingSourcesData();
    descriptor: ()Ljava/lang/Iterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=1, args_size=1
        start local 0 // org.jruby.dirgra.Vertex this
         0: .line 176
            new org.jruby.dirgra.DataIterable
            dup
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.incoming:[Lorg/jruby/dirgra/Edge;
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.incomingLength:I
            aconst_null
            iconst_1
            iconst_1
            invokespecial org.jruby.dirgra.DataIterable.<init>:([Lorg/jruby/dirgra/Edge;ILjava/lang/Object;ZZ)V
            areturn
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/dirgra/Vertex<TT;>;
    Signature: ()Ljava/lang/Iterable<TT;>;

  public java.lang.Iterable<T> getIncomingSourcesDataOfType();
    descriptor: (Ljava/lang/Object;)Ljava/lang/Iterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=2, args_size=2
        start local 0 // org.jruby.dirgra.Vertex this
        start local 1 // java.lang.Object type
         0: .line 180
            new org.jruby.dirgra.DataIterable
            dup
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.incoming:[Lorg/jruby/dirgra/Edge;
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.incomingLength:I
            aload 1 /* type */
            iconst_1
            iconst_0
            invokespecial org.jruby.dirgra.DataIterable.<init>:([Lorg/jruby/dirgra/Edge;ILjava/lang/Object;ZZ)V
            areturn
        end local 1 // java.lang.Object type
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/dirgra/Vertex<TT;>;
            0    1     1  type  Ljava/lang/Object;
    Signature: (Ljava/lang/Object;)Ljava/lang/Iterable<TT;>;
    MethodParameters:
      Name  Flags
      type  

  public java.lang.Iterable<T> getIncomingSourcesDataNotOfType();
    descriptor: (Ljava/lang/Object;)Ljava/lang/Iterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=2, args_size=2
        start local 0 // org.jruby.dirgra.Vertex this
        start local 1 // java.lang.Object type
         0: .line 184
            new org.jruby.dirgra.DataIterable
            dup
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.incoming:[Lorg/jruby/dirgra/Edge;
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.incomingLength:I
            aload 1 /* type */
            iconst_1
            iconst_1
            invokespecial org.jruby.dirgra.DataIterable.<init>:([Lorg/jruby/dirgra/Edge;ILjava/lang/Object;ZZ)V
            areturn
        end local 1 // java.lang.Object type
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/dirgra/Vertex<TT;>;
            0    1     1  type  Ljava/lang/Object;
    Signature: (Ljava/lang/Object;)Ljava/lang/Iterable<TT;>;
    MethodParameters:
      Name  Flags
      type  

  public java.lang.Iterable<org.jruby.dirgra.Edge<T>> getOutgoingEdgesNotOfType();
    descriptor: (Ljava/lang/Object;)Ljava/lang/Iterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // org.jruby.dirgra.Vertex this
        start local 1 // java.lang.Object type
         0: .line 188
            new org.jruby.dirgra.EdgeTypeIterable
            dup
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoing:[Lorg/jruby/dirgra/Edge;
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoingLength:I
            aload 1 /* type */
            iconst_1
            invokespecial org.jruby.dirgra.EdgeTypeIterable.<init>:([Lorg/jruby/dirgra/Edge;ILjava/lang/Object;Z)V
            areturn
        end local 1 // java.lang.Object type
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/dirgra/Vertex<TT;>;
            0    1     1  type  Ljava/lang/Object;
    Signature: (Ljava/lang/Object;)Ljava/lang/Iterable<Lorg/jruby/dirgra/Edge<TT;>;>;
    MethodParameters:
      Name  Flags
      type  

  public java.lang.Iterable<T> getOutgoingDestinationsData();
    descriptor: ()Ljava/lang/Iterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=1, args_size=1
        start local 0 // org.jruby.dirgra.Vertex this
         0: .line 192
            new org.jruby.dirgra.DataIterable
            dup
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoing:[Lorg/jruby/dirgra/Edge;
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoingLength:I
            aconst_null
            iconst_0
            iconst_1
            invokespecial org.jruby.dirgra.DataIterable.<init>:([Lorg/jruby/dirgra/Edge;ILjava/lang/Object;ZZ)V
            areturn
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/dirgra/Vertex<TT;>;
    Signature: ()Ljava/lang/Iterable<TT;>;

  public java.lang.Iterable<T> getOutgoingDestinationsDataOfType();
    descriptor: (Ljava/lang/Object;)Ljava/lang/Iterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=2, args_size=2
        start local 0 // org.jruby.dirgra.Vertex this
        start local 1 // java.lang.Object type
         0: .line 196
            new org.jruby.dirgra.DataIterable
            dup
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoing:[Lorg/jruby/dirgra/Edge;
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoingLength:I
            aload 1 /* type */
            iconst_0
            iconst_0
            invokespecial org.jruby.dirgra.DataIterable.<init>:([Lorg/jruby/dirgra/Edge;ILjava/lang/Object;ZZ)V
            areturn
        end local 1 // java.lang.Object type
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/dirgra/Vertex<TT;>;
            0    1     1  type  Ljava/lang/Object;
    Signature: (Ljava/lang/Object;)Ljava/lang/Iterable<TT;>;
    MethodParameters:
      Name  Flags
      type  

  public java.lang.Iterable<T> getOutgoingDestinationsDataNotOfType();
    descriptor: (Ljava/lang/Object;)Ljava/lang/Iterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=2, args_size=2
        start local 0 // org.jruby.dirgra.Vertex this
        start local 1 // java.lang.Object type
         0: .line 200
            new org.jruby.dirgra.DataIterable
            dup
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoing:[Lorg/jruby/dirgra/Edge;
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoingLength:I
            aload 1 /* type */
            iconst_0
            iconst_1
            invokespecial org.jruby.dirgra.DataIterable.<init>:([Lorg/jruby/dirgra/Edge;ILjava/lang/Object;ZZ)V
            areturn
        end local 1 // java.lang.Object type
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/dirgra/Vertex<TT;>;
            0    1     1  type  Ljava/lang/Object;
    Signature: (Ljava/lang/Object;)Ljava/lang/Iterable<TT;>;
    MethodParameters:
      Name  Flags
      type  

  public T getOutgoingDestinationData();
    descriptor: ()Lorg/jruby/dirgra/ExplicitVertexID;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.jruby.dirgra.Vertex this
         0: .line 204
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.jruby.dirgra.Vertex.getOutgoingEdges:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            invokevirtual org.jruby.dirgra.Vertex.getFirstEdge:(Ljava/util/Iterator;)Lorg/jruby/dirgra/Edge;
            astore 1 /* edge */
        start local 1 // org.jruby.dirgra.Edge edge
         1: .line 206
            aload 1 /* edge */
            ifnonnull 2
            aconst_null
            goto 3
      StackMap locals: org.jruby.dirgra.Edge
      StackMap stack:
         2: aload 1 /* edge */
            invokevirtual org.jruby.dirgra.Edge.getDestination:()Lorg/jruby/dirgra/Vertex;
            invokevirtual org.jruby.dirgra.Vertex.getData:()Lorg/jruby/dirgra/ExplicitVertexID;
      StackMap locals:
      StackMap stack: org.jruby.dirgra.ExplicitVertexID
         3: areturn
        end local 1 // org.jruby.dirgra.Edge edge
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/jruby/dirgra/Vertex<TT;>;
            1    4     1  edge  Lorg/jruby/dirgra/Edge<TT;>;
    Signature: ()TT;

  public T getOutgoingDestinationDataOfType();
    descriptor: (Ljava/lang/Object;)Lorg/jruby/dirgra/ExplicitVertexID;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.jruby.dirgra.Vertex this
        start local 1 // java.lang.Object type
         0: .line 210
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* type */
            invokevirtual org.jruby.dirgra.Vertex.getOutgoingEdgesOfType:(Ljava/lang/Object;)Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            invokevirtual org.jruby.dirgra.Vertex.getFirstEdge:(Ljava/util/Iterator;)Lorg/jruby/dirgra/Edge;
            astore 2 /* edge */
        start local 2 // org.jruby.dirgra.Edge edge
         1: .line 212
            aload 2 /* edge */
            ifnonnull 2
            aconst_null
            goto 3
      StackMap locals: org.jruby.dirgra.Edge
      StackMap stack:
         2: aload 2 /* edge */
            invokevirtual org.jruby.dirgra.Edge.getDestination:()Lorg/jruby/dirgra/Vertex;
            invokevirtual org.jruby.dirgra.Vertex.getData:()Lorg/jruby/dirgra/ExplicitVertexID;
      StackMap locals:
      StackMap stack: org.jruby.dirgra.ExplicitVertexID
         3: areturn
        end local 2 // org.jruby.dirgra.Edge edge
        end local 1 // java.lang.Object type
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/jruby/dirgra/Vertex<TT;>;
            0    4     1  type  Ljava/lang/Object;
            1    4     2  edge  Lorg/jruby/dirgra/Edge<TT;>;
    Signature: (Ljava/lang/Object;)TT;
    MethodParameters:
      Name  Flags
      type  

  private org.jruby.dirgra.Edge<T> getFirstEdge(java.util.Iterator<org.jruby.dirgra.Edge<T>>);
    descriptor: (Ljava/util/Iterator;)Lorg/jruby/dirgra/Edge;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.jruby.dirgra.Vertex this
        start local 1 // java.util.Iterator iterator
         0: .line 216
            aload 1 /* iterator */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifeq 1
            aload 1 /* iterator */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.dirgra.Edge
            goto 2
      StackMap locals:
      StackMap stack:
         1: aconst_null
      StackMap locals:
      StackMap stack: org.jruby.dirgra.Edge
         2: areturn
        end local 1 // java.util.Iterator iterator
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lorg/jruby/dirgra/Vertex<TT;>;
            0    3     1  iterator  Ljava/util/Iterator<Lorg/jruby/dirgra/Edge<TT;>;>;
    Signature: (Ljava/util/Iterator<Lorg/jruby/dirgra/Edge<TT;>;>;)Lorg/jruby/dirgra/Edge<TT;>;
    MethodParameters:
          Name  Flags
      iterator  

  public org.jruby.dirgra.Edge<T> getIncomingEdgeOfType();
    descriptor: (Ljava/lang/Object;)Lorg/jruby/dirgra/Edge;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.jruby.dirgra.Vertex this
        start local 1 // java.lang.Object type
         0: .line 220
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* type */
            invokevirtual org.jruby.dirgra.Vertex.getIncomingEdgesOfType:(Ljava/lang/Object;)Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            invokevirtual org.jruby.dirgra.Vertex.getFirstEdge:(Ljava/util/Iterator;)Lorg/jruby/dirgra/Edge;
            areturn
        end local 1 // java.lang.Object type
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/dirgra/Vertex<TT;>;
            0    1     1  type  Ljava/lang/Object;
    Signature: (Ljava/lang/Object;)Lorg/jruby/dirgra/Edge<TT;>;
    MethodParameters:
      Name  Flags
      type  

  public org.jruby.dirgra.Edge<T> getOutgoingEdgeOfType();
    descriptor: (Ljava/lang/Object;)Lorg/jruby/dirgra/Edge;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.jruby.dirgra.Vertex this
        start local 1 // java.lang.Object type
         0: .line 224
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* type */
            invokevirtual org.jruby.dirgra.Vertex.getOutgoingEdgesOfType:(Ljava/lang/Object;)Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            invokevirtual org.jruby.dirgra.Vertex.getFirstEdge:(Ljava/util/Iterator;)Lorg/jruby/dirgra/Edge;
            areturn
        end local 1 // java.lang.Object type
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/dirgra/Vertex<TT;>;
            0    1     1  type  Ljava/lang/Object;
    Signature: (Ljava/lang/Object;)Lorg/jruby/dirgra/Edge<TT;>;
    MethodParameters:
      Name  Flags
      type  

  public org.jruby.dirgra.Edge<T> getIncomingEdge();
    descriptor: ()Lorg/jruby/dirgra/Edge;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.jruby.dirgra.Vertex this
         0: .line 228
            aload 0 /* this */
            aload 0 /* this */
            aconst_null
            invokevirtual org.jruby.dirgra.Vertex.getIncomingEdgesNotOfType:(Ljava/lang/Object;)Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            invokevirtual org.jruby.dirgra.Vertex.getFirstEdge:(Ljava/util/Iterator;)Lorg/jruby/dirgra/Edge;
            areturn
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/dirgra/Vertex<TT;>;
    Signature: ()Lorg/jruby/dirgra/Edge<TT;>;

  public org.jruby.dirgra.Edge<T> getOutgoingEdge();
    descriptor: ()Lorg/jruby/dirgra/Edge;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.jruby.dirgra.Vertex this
         0: .line 232
            aload 0 /* this */
            aload 0 /* this */
            aconst_null
            invokevirtual org.jruby.dirgra.Vertex.getOutgoingEdgesNotOfType:(Ljava/lang/Object;)Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            invokevirtual org.jruby.dirgra.Vertex.getFirstEdge:(Ljava/util/Iterator;)Lorg/jruby/dirgra/Edge;
            areturn
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/dirgra/Vertex<TT;>;
    Signature: ()Lorg/jruby/dirgra/Edge<TT;>;

  public java.util.Collection<org.jruby.dirgra.Edge<T>> getIncomingEdges();
    descriptor: ()Ljava/util/Collection;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.jruby.dirgra.Vertex this
         0: .line 236
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.incoming:[Lorg/jruby/dirgra/Edge;
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.incomingLength:I
            invokestatic java.util.Arrays.copyOf:([Ljava/lang/Object;I)[Ljava/lang/Object;
            checkcast org.jruby.dirgra.Edge[]
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            areturn
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/dirgra/Vertex<TT;>;
    Signature: ()Ljava/util/Collection<Lorg/jruby/dirgra/Edge<TT;>;>;

  public java.util.Collection<org.jruby.dirgra.Edge<T>> getOutgoingEdges();
    descriptor: ()Ljava/util/Collection;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.jruby.dirgra.Vertex this
         0: .line 240
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoing:[Lorg/jruby/dirgra/Edge;
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.outgoingLength:I
            invokestatic java.util.Arrays.copyOf:([Ljava/lang/Object;I)[Ljava/lang/Object;
            checkcast org.jruby.dirgra.Edge[]
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            areturn
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/dirgra/Vertex<TT;>;
    Signature: ()Ljava/util/Collection<Lorg/jruby/dirgra/Edge<TT;>;>;

  public T getData();
    descriptor: ()Lorg/jruby/dirgra/ExplicitVertexID;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.dirgra.Vertex this
         0: .line 244
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.data:Lorg/jruby/dirgra/ExplicitVertexID;
            areturn
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/dirgra/Vertex<TT;>;
    Signature: ()TT;

  public int getID();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.dirgra.Vertex this
         0: .line 248
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.data:Lorg/jruby/dirgra/ExplicitVertexID;
            invokeinterface org.jruby.dirgra.ExplicitVertexID.getID:()I
            ireturn
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/dirgra/Vertex<TT;>;

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=1
        start local 0 // org.jruby.dirgra.Vertex this
         0: .line 254
            iconst_0
            istore 1 /* found */
        start local 1 // boolean found
         1: .line 255
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield org.jruby.dirgra.Vertex.data:Lorg/jruby/dirgra/ExplicitVertexID;
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            astore 2 /* buf */
        start local 2 // java.lang.StringBuilder buf
         2: .line 257
            aload 2 /* buf */
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         3: .line 259
            aload 0 /* this */
            invokevirtual org.jruby.dirgra.Vertex.getOutgoingEdges:()Ljava/util/Collection;
            astore 3 /* edges */
        start local 3 // java.util.Collection edges
         4: .line 260
            aload 3 /* edges */
            invokeinterface java.util.Collection.size:()I
            istore 4 /* size */
        start local 4 // int size
         5: .line 262
            iload 4 /* size */
            ifle 16
         6: .line 263
            iconst_1
            istore 1 /* found */
         7: .line 264
            aload 2 /* buf */
            ldc ">["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         8: .line 265
            new java.util.ArrayList
            dup
            aload 3 /* edges */
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 5 /* e */
        start local 5 // java.util.List e
         9: .line 266
            aload 5 /* e */
            new org.jruby.dirgra.Vertex$DestinationCompare
            dup
            aload 0 /* this */
            invokespecial org.jruby.dirgra.Vertex$DestinationCompare.<init>:(Lorg/jruby/dirgra/Vertex;)V
            invokestatic java.util.Collections.sort:(Ljava/util/List;Ljava/util/Comparator;)V
        10: .line 268
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        11: goto 14
        12: .line 269
      StackMap locals: org.jruby.dirgra.Vertex int java.lang.StringBuilder java.util.Collection int java.util.List int
      StackMap stack:
            aload 2 /* buf */
            aload 5 /* e */
            iload 6 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.jruby.dirgra.Edge
            invokevirtual org.jruby.dirgra.Edge.getDestination:()Lorg/jruby/dirgra/Vertex;
            invokevirtual org.jruby.dirgra.Vertex.getID:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ","
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        13: .line 268
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        14: iload 6 /* i */
            iload 4 /* size */
            iconst_1
            isub
            if_icmplt 12
        end local 6 // int i
        15: .line 271
            aload 2 /* buf */
            aload 5 /* e */
            iload 4 /* size */
            iconst_1
            isub
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.jruby.dirgra.Edge
            invokevirtual org.jruby.dirgra.Edge.getDestination:()Lorg/jruby/dirgra/Vertex;
            invokevirtual org.jruby.dirgra.Vertex.getID:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 5 // java.util.List e
        16: .line 274
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.jruby.dirgra.Vertex.getIncomingEdges:()Ljava/util/Collection;
            astore 3 /* edges */
        17: .line 275
            aload 3 /* edges */
            invokeinterface java.util.Collection.size:()I
            istore 4 /* size */
        18: .line 277
            iload 4 /* size */
            ifle 29
        19: .line 278
            iload 1 /* found */
            ifeq 20
            aload 2 /* buf */
            ldc ", "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        20: .line 279
      StackMap locals:
      StackMap stack:
            aload 2 /* buf */
            ldc "<["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        21: .line 280
            new java.util.ArrayList
            dup
            aload 3 /* edges */
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 5 /* e */
        start local 5 // java.util.List e
        22: .line 281
            aload 5 /* e */
            new org.jruby.dirgra.Vertex$SourceCompare
            dup
            aload 0 /* this */
            invokespecial org.jruby.dirgra.Vertex$SourceCompare.<init>:(Lorg/jruby/dirgra/Vertex;)V
            invokestatic java.util.Collections.sort:(Ljava/util/List;Ljava/util/Comparator;)V
        23: .line 283
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        24: goto 27
        25: .line 284
      StackMap locals: java.util.List int
      StackMap stack:
            aload 2 /* buf */
            aload 5 /* e */
            iload 6 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.jruby.dirgra.Edge
            invokevirtual org.jruby.dirgra.Edge.getSource:()Lorg/jruby/dirgra/Vertex;
            invokevirtual org.jruby.dirgra.Vertex.getID:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ","
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        26: .line 283
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        27: iload 6 /* i */
            iload 4 /* size */
            iconst_1
            isub
            if_icmplt 25
        end local 6 // int i
        28: .line 286
            aload 2 /* buf */
            aload 5 /* e */
            iload 4 /* size */
            iconst_1
            isub
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.jruby.dirgra.Edge
            invokevirtual org.jruby.dirgra.Edge.getSource:()Lorg/jruby/dirgra/Vertex;
            invokevirtual org.jruby.dirgra.Vertex.getID:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 5 // java.util.List e
        29: .line 288
      StackMap locals:
      StackMap stack:
            aload 2 /* buf */
            ldc "\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        30: .line 290
            aload 2 /* buf */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 4 // int size
        end local 3 // java.util.Collection edges
        end local 2 // java.lang.StringBuilder buf
        end local 1 // boolean found
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   31     0   this  Lorg/jruby/dirgra/Vertex<TT;>;
            1   31     1  found  Z
            2   31     2    buf  Ljava/lang/StringBuilder;
            4   31     3  edges  Ljava/util/Collection<Lorg/jruby/dirgra/Edge<TT;>;>;
            5   31     4   size  I
            9   16     5      e  Ljava/util/List<Lorg/jruby/dirgra/Edge<TT;>;>;
           11   15     6      i  I
           22   29     5      e  Ljava/util/List<Lorg/jruby/dirgra/Edge<TT;>;>;
           24   28     6      i  I

  public int compareTo(org.jruby.dirgra.Vertex<T>);
    descriptor: (Lorg/jruby/dirgra/Vertex;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.jruby.dirgra.Vertex this
        start local 1 // org.jruby.dirgra.Vertex that
         0: .line 295
            aload 0 /* this */
            invokevirtual org.jruby.dirgra.Vertex.getID:()I
            aload 1 /* that */
            invokevirtual org.jruby.dirgra.Vertex.getID:()I
            if_icmpne 1
            iconst_0
            ireturn
         1: .line 296
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.jruby.dirgra.Vertex.getID:()I
            aload 1 /* that */
            invokevirtual org.jruby.dirgra.Vertex.getID:()I
            if_icmpge 2
            iconst_m1
            ireturn
         2: .line 297
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 1 // org.jruby.dirgra.Vertex that
        end local 0 // org.jruby.dirgra.Vertex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/jruby/dirgra/Vertex<TT;>;
            0    3     1  that  Lorg/jruby/dirgra/Vertex<TT;>;
    Signature: (Lorg/jruby/dirgra/Vertex<TT;>;)I
    MethodParameters:
      Name  Flags
      that  

  public int compareTo(java.lang.Object);
    descriptor: (Ljava/lang/Object;)I
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            checkcast org.jruby.dirgra.Vertex
            invokevirtual org.jruby.dirgra.Vertex.compareTo:(Lorg/jruby/dirgra/Vertex;)I
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
Signature: <T::Lorg/jruby/dirgra/ExplicitVertexID;>Ljava/lang/Object;Ljava/lang/Comparable<Lorg/jruby/dirgra/Vertex<TT;>;>;
SourceFile: "Vertex.java"
NestMembers:
  org.jruby.dirgra.Vertex$DestinationCompare  org.jruby.dirgra.Vertex$SourceCompare
InnerClasses:
  DestinationCompare = org.jruby.dirgra.Vertex$DestinationCompare of org.jruby.dirgra.Vertex
  SourceCompare = org.jruby.dirgra.Vertex$SourceCompare of org.jruby.dirgra.Vertex