public class io.undertow.protocols.http2.Http2PriorityTree
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.undertow.protocols.http2.Http2PriorityTree
  super_class: java.lang.Object
{
  private final io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode rootNode;
    descriptor: Lio/undertow/protocols/http2/Http2PriorityTree$Http2PriorityNode;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.Map<java.lang.Integer, io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode> nodesByID;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/Integer;Lio/undertow/protocols/http2/Http2PriorityTree$Http2PriorityNode;>;

  private int[] evictionQueue;
    descriptor: [I
    flags: (0x0002) ACC_PRIVATE

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

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2PriorityTree this
         0: .line 48
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 35
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield io.undertow.protocols.http2.Http2PriorityTree.nodesByID:Ljava/util/Map;
         2: .line 49
            aload 0 /* this */
            new io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode
            dup
            iconst_0
            iconst_0
            invokespecial io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode.<init>:(II)V
            putfield io.undertow.protocols.http2.Http2PriorityTree.rootNode:Lio/undertow/protocols/http2/Http2PriorityTree$Http2PriorityNode;
         3: .line 50
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2PriorityTree.nodesByID:Ljava/util/Map;
            iconst_0
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2PriorityTree.rootNode:Lio/undertow/protocols/http2/Http2PriorityTree$Http2PriorityNode;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 51
            aload 0 /* this */
            bipush 10
            newarray 10
            putfield io.undertow.protocols.http2.Http2PriorityTree.evictionQueue:[I
         5: .line 52
            return
        end local 0 // io.undertow.protocols.http2.Http2PriorityTree this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lio/undertow/protocols/http2/Http2PriorityTree;

  public void registerStream(int, int, int, boolean);
    descriptor: (IIIZ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=5
        start local 0 // io.undertow.protocols.http2.Http2PriorityTree this
        start local 1 // int streamId
        start local 2 // int dependency
        start local 3 // int weighting
        start local 4 // boolean exclusive
         0: .line 61
            new io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode
            dup
            iload 1 /* streamId */
            iload 3 /* weighting */
            invokespecial io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode.<init>:(II)V
            astore 5 /* node */
        start local 5 // io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode node
         1: .line 62
            iload 4 /* exclusive */
            ifeq 6
         2: .line 63
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2PriorityTree.nodesByID:Ljava/util/Map;
            iload 2 /* dependency */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode
            astore 6 /* existing */
        start local 6 // io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode existing
         3: .line 64
            aload 6 /* existing */
            ifnull 9
         4: .line 65
            aload 6 /* existing */
            aload 5 /* node */
            invokevirtual io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode.exclusive:(Lio/undertow/protocols/http2/Http2PriorityTree$Http2PriorityNode;)V
        end local 6 // io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode existing
         5: .line 67
            goto 9
         6: .line 68
      StackMap locals: io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2PriorityTree.nodesByID:Ljava/util/Map;
            iload 2 /* dependency */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode
            astore 6 /* existing */
        start local 6 // io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode existing
         7: .line 69
            aload 6 /* existing */
            ifnull 9
         8: .line 70
            aload 6 /* existing */
            aload 5 /* node */
            invokevirtual io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode.addDependent:(Lio/undertow/protocols/http2/Http2PriorityTree$Http2PriorityNode;)V
        end local 6 // io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode existing
         9: .line 73
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2PriorityTree.nodesByID:Ljava/util/Map;
            iload 1 /* streamId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 5 /* node */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        10: .line 74
            return
        end local 5 // io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode node
        end local 4 // boolean exclusive
        end local 3 // int weighting
        end local 2 // int dependency
        end local 1 // int streamId
        end local 0 // io.undertow.protocols.http2.Http2PriorityTree this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   11     0        this  Lio/undertow/protocols/http2/Http2PriorityTree;
            0   11     1    streamId  I
            0   11     2  dependency  I
            0   11     3   weighting  I
            0   11     4   exclusive  Z
            1   11     5        node  Lio/undertow/protocols/http2/Http2PriorityTree$Http2PriorityNode;
            3    5     6    existing  Lio/undertow/protocols/http2/Http2PriorityTree$Http2PriorityNode;
            7    9     6    existing  Lio/undertow/protocols/http2/Http2PriorityTree$Http2PriorityNode;
    MethodParameters:
            Name  Flags
      streamId    
      dependency  
      weighting   
      exclusive   

  public void streamRemoved(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2PriorityTree this
        start local 1 // int streamId
         0: .line 82
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2PriorityTree.nodesByID:Ljava/util/Map;
            iload 1 /* streamId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode
            astore 2 /* node */
        start local 2 // io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode node
         1: .line 83
            aload 2 /* node */
            ifnonnull 3
         2: .line 84
            return
         3: .line 86
      StackMap locals: io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode
      StackMap stack:
            aload 2 /* node */
            invokevirtual io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode.hasDependents:()Z
            ifne 9
         4: .line 88
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2PriorityTree.evictionQueue:[I
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2PriorityTree.evictionQueuePosition:I
            iaload
            istore 3 /* toEvict */
        start local 3 // int toEvict
         5: .line 89
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2PriorityTree.evictionQueue:[I
            aload 0 /* this */
            dup
            getfield io.undertow.protocols.http2.Http2PriorityTree.evictionQueuePosition:I
            dup_x1
            iconst_1
            iadd
            putfield io.undertow.protocols.http2.Http2PriorityTree.evictionQueuePosition:I
            iload 1 /* streamId */
            iastore
         6: .line 90
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2PriorityTree.nodesByID:Ljava/util/Map;
            iload 3 /* toEvict */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode
            astore 4 /* nodeToEvict */
        start local 4 // io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode nodeToEvict
         7: .line 93
            aload 4 /* nodeToEvict */
            ifnull 9
            aload 4 /* nodeToEvict */
            invokevirtual io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode.hasDependents:()Z
            ifne 9
         8: .line 94
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2PriorityTree.nodesByID:Ljava/util/Map;
            iload 3 /* toEvict */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 4 // io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode nodeToEvict
        end local 3 // int toEvict
         9: .line 98
      StackMap locals:
      StackMap stack:
            return
        end local 2 // io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode node
        end local 1 // int streamId
        end local 0 // io.undertow.protocols.http2.Http2PriorityTree this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   10     0         this  Lio/undertow/protocols/http2/Http2PriorityTree;
            0   10     1     streamId  I
            1   10     2         node  Lio/undertow/protocols/http2/Http2PriorityTree$Http2PriorityNode;
            5    9     3      toEvict  I
            7    9     4  nodeToEvict  Lio/undertow/protocols/http2/Http2PriorityTree$Http2PriorityNode;
    MethodParameters:
          Name  Flags
      streamId  

  public java.util.Comparator<java.lang.Integer> comparator();
    descriptor: ()Ljava/util/Comparator;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2PriorityTree this
         0: .line 105
            new io.undertow.protocols.http2.Http2PriorityTree$1
            dup
            aload 0 /* this */
            invokespecial io.undertow.protocols.http2.Http2PriorityTree$1.<init>:(Lio/undertow/protocols/http2/Http2PriorityTree;)V
            areturn
        end local 0 // io.undertow.protocols.http2.Http2PriorityTree this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/protocols/http2/Http2PriorityTree;
    Signature: ()Ljava/util/Comparator<Ljava/lang/Integer;>;

  private double createWeightingProportion(io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode);
    descriptor: (Lio/undertow/protocols/http2/Http2PriorityTree$Http2PriorityNode;)D
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=6, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2PriorityTree this
        start local 1 // io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode n1
         0: .line 129
            dconst_1
            dstore 2 /* ret */
        start local 2 // double ret
         1: .line 130
            aload 1 /* n1 */
            astore 4 /* node */
        start local 4 // io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode node
         2: .line 131
            goto 7
         3: .line 132
      StackMap locals: double io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode
      StackMap stack:
            aload 4 /* node */
            getfield io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode.parent:Lio/undertow/protocols/http2/Http2PriorityTree$Http2PriorityNode;
            astore 5 /* parent */
        start local 5 // io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode parent
         4: .line 133
            aload 5 /* parent */
            ifnull 6
         5: .line 134
            dload 2 /* ret */
            aload 4 /* node */
            getfield io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode.weighting:I
            i2d
            aload 5 /* parent */
            getfield io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode.totalWeights:I
            i2d
            ddiv
            dmul
            dstore 2 /* ret */
         6: .line 136
      StackMap locals: io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode
      StackMap stack:
            aload 5 /* parent */
            astore 4 /* node */
        end local 5 // io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode parent
         7: .line 131
      StackMap locals:
      StackMap stack:
            aload 4 /* node */
            ifnonnull 3
         8: .line 138
            dload 2 /* ret */
            dreturn
        end local 4 // io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode node
        end local 2 // double ret
        end local 1 // io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode n1
        end local 0 // io.undertow.protocols.http2.Http2PriorityTree this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0    this  Lio/undertow/protocols/http2/Http2PriorityTree;
            0    9     1      n1  Lio/undertow/protocols/http2/Http2PriorityTree$Http2PriorityNode;
            1    9     2     ret  D
            2    9     4    node  Lio/undertow/protocols/http2/Http2PriorityTree$Http2PriorityNode;
            4    7     5  parent  Lio/undertow/protocols/http2/Http2PriorityTree$Http2PriorityNode;
    MethodParameters:
      Name  Flags
      n1    

  public void priorityFrame(int, int, int, boolean);
    descriptor: (IIIZ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=8, args_size=5
        start local 0 // io.undertow.protocols.http2.Http2PriorityTree this
        start local 1 // int streamId
        start local 2 // int streamDependency
        start local 3 // int weight
        start local 4 // boolean exlusive
         0: .line 142
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2PriorityTree.nodesByID:Ljava/util/Map;
            iload 1 /* streamId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode
            astore 5 /* existing */
        start local 5 // io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode existing
         1: .line 143
            aload 5 /* existing */
            ifnonnull 3
         2: .line 144
            return
         3: .line 146
      StackMap locals: io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode
      StackMap stack:
            iload 3 /* weight */
            aload 5 /* existing */
            getfield io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode.weighting:I
            isub
            istore 6 /* dif */
        start local 6 // int dif
         4: .line 147
            aload 5 /* existing */
            getfield io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode.parent:Lio/undertow/protocols/http2/Http2PriorityTree$Http2PriorityNode;
            dup
            getfield io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode.totalWeights:I
            iload 6 /* dif */
            iadd
            putfield io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode.totalWeights:I
         5: .line 148
            aload 5 /* existing */
            iload 3 /* weight */
            putfield io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode.weighting:I
         6: .line 149
            iload 4 /* exlusive */
            ifeq 12
         7: .line 150
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2PriorityTree.nodesByID:Ljava/util/Map;
            iload 2 /* streamDependency */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode
            astore 7 /* newParent */
        start local 7 // io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode newParent
         8: .line 151
            aload 7 /* newParent */
            ifnull 16
         9: .line 152
            aload 5 /* existing */
            getfield io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode.parent:Lio/undertow/protocols/http2/Http2PriorityTree$Http2PriorityNode;
            aload 5 /* existing */
            invokevirtual io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode.removeDependent:(Lio/undertow/protocols/http2/Http2PriorityTree$Http2PriorityNode;)V
        10: .line 153
            aload 7 /* newParent */
            aload 5 /* existing */
            invokevirtual io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode.exclusive:(Lio/undertow/protocols/http2/Http2PriorityTree$Http2PriorityNode;)V
        end local 7 // io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode newParent
        11: .line 155
            goto 16
      StackMap locals: int
      StackMap stack:
        12: aload 5 /* existing */
            getfield io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode.parent:Lio/undertow/protocols/http2/Http2PriorityTree$Http2PriorityNode;
            getfield io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode.streamId:I
            iload 2 /* streamDependency */
            if_icmpeq 16
        13: .line 156
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2PriorityTree.nodesByID:Ljava/util/Map;
            iload 2 /* streamDependency */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode
            astore 7 /* newParent */
        start local 7 // io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode newParent
        14: .line 157
            aload 7 /* newParent */
            ifnull 16
        15: .line 158
            aload 7 /* newParent */
            aload 5 /* existing */
            invokevirtual io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode.addDependent:(Lio/undertow/protocols/http2/Http2PriorityTree$Http2PriorityNode;)V
        end local 7 // io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode newParent
        16: .line 161
      StackMap locals:
      StackMap stack:
            return
        end local 6 // int dif
        end local 5 // io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode existing
        end local 4 // boolean exlusive
        end local 3 // int weight
        end local 2 // int streamDependency
        end local 1 // int streamId
        end local 0 // io.undertow.protocols.http2.Http2PriorityTree this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   17     0              this  Lio/undertow/protocols/http2/Http2PriorityTree;
            0   17     1          streamId  I
            0   17     2  streamDependency  I
            0   17     3            weight  I
            0   17     4          exlusive  Z
            1   17     5          existing  Lio/undertow/protocols/http2/Http2PriorityTree$Http2PriorityNode;
            4   17     6               dif  I
            8   11     7         newParent  Lio/undertow/protocols/http2/Http2PriorityTree$Http2PriorityNode;
           14   16     7         newParent  Lio/undertow/protocols/http2/Http2PriorityTree$Http2PriorityNode;
    MethodParameters:
                  Name  Flags
      streamId          
      streamDependency  
      weight            
      exlusive          
}
SourceFile: "Http2PriorityTree.java"
NestMembers:
  io.undertow.protocols.http2.Http2PriorityTree$1  io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode
InnerClasses:
  io.undertow.protocols.http2.Http2PriorityTree$1
  private Http2PriorityNode = io.undertow.protocols.http2.Http2PriorityTree$Http2PriorityNode of io.undertow.protocols.http2.Http2PriorityTree