class android.widget.RelativeLayout$DependencyGraph
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: android.widget.RelativeLayout$DependencyGraph
  super_class: java.lang.Object
{
  private java.util.ArrayList<android.widget.RelativeLayout$DependencyGraph$Node> mNodes;
    descriptor: Ljava/util/ArrayList;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/ArrayList<Landroid/widget/RelativeLayout$DependencyGraph$Node;>;

  private android.util.SparseArray<android.widget.RelativeLayout$DependencyGraph$Node> mKeyNodes;
    descriptor: Landroid/util/SparseArray;
    flags: (0x0002) ACC_PRIVATE
    Signature: Landroid/util/SparseArray<Landroid/widget/RelativeLayout$DependencyGraph$Node;>;

  private java.util.ArrayDeque<android.widget.RelativeLayout$DependencyGraph$Node> mRoots;
    descriptor: Ljava/util/ArrayDeque;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/ArrayDeque<Landroid/widget/RelativeLayout$DependencyGraph$Node;>;

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // android.widget.RelativeLayout$DependencyGraph this
         0: .line 1704
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 1708
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield android.widget.RelativeLayout$DependencyGraph.mNodes:Ljava/util/ArrayList;
         2: .line 1714
            aload 0 /* this */
            new android.util.SparseArray
            dup
            invokespecial android.util.SparseArray.<init>:()V
            putfield android.widget.RelativeLayout$DependencyGraph.mKeyNodes:Landroid/util/SparseArray;
         3: .line 1720
            aload 0 /* this */
            new java.util.ArrayDeque
            dup
            invokespecial java.util.ArrayDeque.<init>:()V
            putfield android.widget.RelativeLayout$DependencyGraph.mRoots:Ljava/util/ArrayDeque;
         4: .line 1704
            return
        end local 0 // android.widget.RelativeLayout$DependencyGraph this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Landroid/widget/RelativeLayout$DependencyGraph;

  void clear();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // android.widget.RelativeLayout$DependencyGraph this
         0: .line 1726
            aload 0 /* this */
            getfield android.widget.RelativeLayout$DependencyGraph.mNodes:Ljava/util/ArrayList;
            astore 1 /* nodes */
        start local 1 // java.util.ArrayList nodes
         1: .line 1727
            aload 1 /* nodes */
            invokevirtual java.util.ArrayList.size:()I
            istore 2 /* count */
        start local 2 // int count
         2: .line 1729
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         3: goto 6
         4: .line 1730
      StackMap locals: java.util.ArrayList int int
      StackMap stack:
            aload 1 /* nodes */
            iload 3 /* i */
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            checkcast android.widget.RelativeLayout$DependencyGraph$Node
            invokevirtual android.widget.RelativeLayout$DependencyGraph$Node.release:()V
         5: .line 1729
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 3 /* i */
            iload 2 /* count */
            if_icmplt 4
        end local 3 // int i
         7: .line 1732
            aload 1 /* nodes */
            invokevirtual java.util.ArrayList.clear:()V
         8: .line 1734
            aload 0 /* this */
            getfield android.widget.RelativeLayout$DependencyGraph.mKeyNodes:Landroid/util/SparseArray;
            invokevirtual android.util.SparseArray.clear:()V
         9: .line 1735
            aload 0 /* this */
            getfield android.widget.RelativeLayout$DependencyGraph.mRoots:Ljava/util/ArrayDeque;
            invokevirtual java.util.ArrayDeque.clear:()V
        10: .line 1736
            return
        end local 2 // int count
        end local 1 // java.util.ArrayList nodes
        end local 0 // android.widget.RelativeLayout$DependencyGraph this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   11     0   this  Landroid/widget/RelativeLayout$DependencyGraph;
            1   11     1  nodes  Ljava/util/ArrayList<Landroid/widget/RelativeLayout$DependencyGraph$Node;>;
            2   11     2  count  I
            3    7     3      i  I

  void add(android.view.View);
    descriptor: (Landroid/view/View;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // android.widget.RelativeLayout$DependencyGraph this
        start local 1 // android.view.View view
         0: .line 1744
            aload 1 /* view */
            invokevirtual android.view.View.getId:()I
            istore 2 /* id */
        start local 2 // int id
         1: .line 1745
            aload 1 /* view */
            invokestatic android.widget.RelativeLayout$DependencyGraph$Node.acquire:(Landroid/view/View;)Landroid/widget/RelativeLayout$DependencyGraph$Node;
            astore 3 /* node */
        start local 3 // android.widget.RelativeLayout$DependencyGraph$Node node
         2: .line 1747
            iload 2 /* id */
            iconst_m1
            if_icmpeq 4
         3: .line 1748
            aload 0 /* this */
            getfield android.widget.RelativeLayout$DependencyGraph.mKeyNodes:Landroid/util/SparseArray;
            iload 2 /* id */
            aload 3 /* node */
            invokevirtual android.util.SparseArray.put:(ILjava/lang/Object;)V
         4: .line 1751
      StackMap locals: int android.widget.RelativeLayout$DependencyGraph$Node
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.RelativeLayout$DependencyGraph.mNodes:Ljava/util/ArrayList;
            aload 3 /* node */
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
         5: .line 1752
            return
        end local 3 // android.widget.RelativeLayout$DependencyGraph$Node node
        end local 2 // int id
        end local 1 // android.view.View view
        end local 0 // android.widget.RelativeLayout$DependencyGraph this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Landroid/widget/RelativeLayout$DependencyGraph;
            0    6     1  view  Landroid/view/View;
            1    6     2    id  I
            2    6     3  node  Landroid/widget/RelativeLayout$DependencyGraph$Node;
    MethodParameters:
      Name  Flags
      view  

  void getSortedViews(android.view.View[], int[]);
    descriptor: ([Landroid/view/View;[I)V
    flags: (0x0080) ACC_VARARGS
    Code:
      stack=3, locals=13, args_size=3
        start local 0 // android.widget.RelativeLayout$DependencyGraph this
        start local 1 // android.view.View[] sorted
        start local 2 // int[] rules
         0: .line 1765
            aload 0 /* this */
            aload 2 /* rules */
            invokevirtual android.widget.RelativeLayout$DependencyGraph.findRoots:([I)Ljava/util/ArrayDeque;
            astore 3 /* roots */
        start local 3 // java.util.ArrayDeque roots
         1: .line 1766
            iconst_0
            istore 4 /* index */
        start local 4 // int index
         2: .line 1769
            goto 17
        start local 5 // android.widget.RelativeLayout$DependencyGraph$Node node
         3: .line 1770
      StackMap locals: java.util.ArrayDeque int android.widget.RelativeLayout$DependencyGraph$Node
      StackMap stack:
            aload 5 /* node */
            getfield android.widget.RelativeLayout$DependencyGraph$Node.view:Landroid/view/View;
            astore 6 /* view */
        start local 6 // android.view.View view
         4: .line 1771
            aload 6 /* view */
            invokevirtual android.view.View.getId:()I
            istore 7 /* key */
        start local 7 // int key
         5: .line 1773
            aload 1 /* sorted */
            iload 4 /* index */
            iinc 4 /* index */ 1
            aload 6 /* view */
            aastore
         6: .line 1775
            aload 5 /* node */
            getfield android.widget.RelativeLayout$DependencyGraph$Node.dependents:Landroid/util/ArrayMap;
            astore 8 /* dependents */
        start local 8 // android.util.ArrayMap dependents
         7: .line 1776
            aload 8 /* dependents */
            invokevirtual android.util.ArrayMap.size:()I
            istore 9 /* count */
        start local 9 // int count
         8: .line 1777
            iconst_0
            istore 10 /* i */
        start local 10 // int i
         9: goto 16
        10: .line 1778
      StackMap locals: android.widget.RelativeLayout$DependencyGraph android.view.View[] int[] java.util.ArrayDeque int android.widget.RelativeLayout$DependencyGraph$Node android.view.View int android.util.ArrayMap int int
      StackMap stack:
            aload 8 /* dependents */
            iload 10 /* i */
            invokevirtual android.util.ArrayMap.keyAt:(I)Ljava/lang/Object;
            checkcast android.widget.RelativeLayout$DependencyGraph$Node
            astore 11 /* dependent */
        start local 11 // android.widget.RelativeLayout$DependencyGraph$Node dependent
        11: .line 1779
            aload 11 /* dependent */
            getfield android.widget.RelativeLayout$DependencyGraph$Node.dependencies:Landroid/util/SparseArray;
            astore 12 /* dependencies */
        start local 12 // android.util.SparseArray dependencies
        12: .line 1781
            aload 12 /* dependencies */
            iload 7 /* key */
            invokevirtual android.util.SparseArray.remove:(I)V
        13: .line 1782
            aload 12 /* dependencies */
            invokevirtual android.util.SparseArray.size:()I
            ifne 15
        14: .line 1783
            aload 3 /* roots */
            aload 11 /* dependent */
            invokevirtual java.util.ArrayDeque.add:(Ljava/lang/Object;)Z
            pop
        end local 12 // android.util.SparseArray dependencies
        end local 11 // android.widget.RelativeLayout$DependencyGraph$Node dependent
        15: .line 1777
      StackMap locals:
      StackMap stack:
            iinc 10 /* i */ 1
      StackMap locals:
      StackMap stack:
        16: iload 10 /* i */
            iload 9 /* count */
            if_icmplt 10
        end local 10 // int i
        end local 9 // int count
        end local 8 // android.util.ArrayMap dependents
        end local 7 // int key
        end local 6 // android.view.View view
        end local 5 // android.widget.RelativeLayout$DependencyGraph$Node node
        17: .line 1769
      StackMap locals: android.widget.RelativeLayout$DependencyGraph android.view.View[] int[] java.util.ArrayDeque int
      StackMap stack:
            aload 3 /* roots */
            invokevirtual java.util.ArrayDeque.pollLast:()Ljava/lang/Object;
            checkcast android.widget.RelativeLayout$DependencyGraph$Node
            dup
            astore 5 /* node */
        start local 5 // android.widget.RelativeLayout$DependencyGraph$Node node
        18: ifnonnull 3
        19: .line 1788
            iload 4 /* index */
            aload 1 /* sorted */
            arraylength
            if_icmpge 21
        20: .line 1789
            new java.lang.IllegalStateException
            dup
            ldc "Circular dependencies cannot exist in RelativeLayout"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        21: .line 1792
      StackMap locals: android.widget.RelativeLayout$DependencyGraph$Node
      StackMap stack:
            return
        end local 5 // android.widget.RelativeLayout$DependencyGraph$Node node
        end local 4 // int index
        end local 3 // java.util.ArrayDeque roots
        end local 2 // int[] rules
        end local 1 // android.view.View[] sorted
        end local 0 // android.widget.RelativeLayout$DependencyGraph this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   22     0          this  Landroid/widget/RelativeLayout$DependencyGraph;
            0   22     1        sorted  [Landroid/view/View;
            0   22     2         rules  [I
            1   22     3         roots  Ljava/util/ArrayDeque<Landroid/widget/RelativeLayout$DependencyGraph$Node;>;
            2   22     4         index  I
            3   17     5          node  Landroid/widget/RelativeLayout$DependencyGraph$Node;
           18   22     5          node  Landroid/widget/RelativeLayout$DependencyGraph$Node;
            4   17     6          view  Landroid/view/View;
            5   17     7           key  I
            7   17     8    dependents  Landroid/util/ArrayMap<Landroid/widget/RelativeLayout$DependencyGraph$Node;Landroid/widget/RelativeLayout$DependencyGraph;>;
            8   17     9         count  I
            9   17    10             i  I
           11   15    11     dependent  Landroid/widget/RelativeLayout$DependencyGraph$Node;
           12   15    12  dependencies  Landroid/util/SparseArray<Landroid/widget/RelativeLayout$DependencyGraph$Node;>;
    MethodParameters:
        Name  Flags
      sorted  
      rules   

  private java.util.ArrayDeque<android.widget.RelativeLayout$DependencyGraph$Node> findRoots(int[]);
    descriptor: ([I)Ljava/util/ArrayDeque;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=13, args_size=2
        start local 0 // android.widget.RelativeLayout$DependencyGraph this
        start local 1 // int[] rulesFilter
         0: .line 1804
            aload 0 /* this */
            getfield android.widget.RelativeLayout$DependencyGraph.mKeyNodes:Landroid/util/SparseArray;
            astore 2 /* keyNodes */
        start local 2 // android.util.SparseArray keyNodes
         1: .line 1805
            aload 0 /* this */
            getfield android.widget.RelativeLayout$DependencyGraph.mNodes:Ljava/util/ArrayList;
            astore 3 /* nodes */
        start local 3 // java.util.ArrayList nodes
         2: .line 1806
            aload 3 /* nodes */
            invokevirtual java.util.ArrayList.size:()I
            istore 4 /* count */
        start local 4 // int count
         3: .line 1810
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         4: goto 9
         5: .line 1811
      StackMap locals: android.widget.RelativeLayout$DependencyGraph int[] android.util.SparseArray java.util.ArrayList int int
      StackMap stack:
            aload 3 /* nodes */
            iload 5 /* i */
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            checkcast android.widget.RelativeLayout$DependencyGraph$Node
            astore 6 /* node */
        start local 6 // android.widget.RelativeLayout$DependencyGraph$Node node
         6: .line 1812
            aload 6 /* node */
            getfield android.widget.RelativeLayout$DependencyGraph$Node.dependents:Landroid/util/ArrayMap;
            invokevirtual android.util.ArrayMap.clear:()V
         7: .line 1813
            aload 6 /* node */
            getfield android.widget.RelativeLayout$DependencyGraph$Node.dependencies:Landroid/util/SparseArray;
            invokevirtual android.util.SparseArray.clear:()V
        end local 6 // android.widget.RelativeLayout$DependencyGraph$Node node
         8: .line 1810
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 5 /* i */
            iload 4 /* count */
            if_icmplt 5
        end local 5 // int i
        10: .line 1817
            iconst_0
            istore 5 /* i */
        start local 5 // int i
        11: goto 28
        12: .line 1818
      StackMap locals:
      StackMap stack:
            aload 3 /* nodes */
            iload 5 /* i */
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            checkcast android.widget.RelativeLayout$DependencyGraph$Node
            astore 6 /* node */
        start local 6 // android.widget.RelativeLayout$DependencyGraph$Node node
        13: .line 1820
            aload 6 /* node */
            getfield android.widget.RelativeLayout$DependencyGraph$Node.view:Landroid/view/View;
            invokevirtual android.view.View.getLayoutParams:()Landroid/view/ViewGroup$LayoutParams;
            checkcast android.widget.RelativeLayout$LayoutParams
            astore 7 /* layoutParams */
        start local 7 // android.widget.RelativeLayout$LayoutParams layoutParams
        14: .line 1821
            aload 7 /* layoutParams */
            getfield android.widget.RelativeLayout$LayoutParams.mRules:[I
            astore 8 /* rules */
        start local 8 // int[] rules
        15: .line 1822
            aload 1 /* rulesFilter */
            arraylength
            istore 9 /* rulesCount */
        start local 9 // int rulesCount
        16: .line 1826
            iconst_0
            istore 10 /* j */
        start local 10 // int j
        17: goto 26
        18: .line 1827
      StackMap locals: android.widget.RelativeLayout$DependencyGraph int[] android.util.SparseArray java.util.ArrayList int int android.widget.RelativeLayout$DependencyGraph$Node android.widget.RelativeLayout$LayoutParams int[] int int
      StackMap stack:
            aload 8 /* rules */
            aload 1 /* rulesFilter */
            iload 10 /* j */
            iaload
            iaload
            istore 11 /* rule */
        start local 11 // int rule
        19: .line 1828
            iload 11 /* rule */
            ifle 25
        20: .line 1830
            aload 2 /* keyNodes */
            iload 11 /* rule */
            invokevirtual android.util.SparseArray.get:(I)Ljava/lang/Object;
            checkcast android.widget.RelativeLayout$DependencyGraph$Node
            astore 12 /* dependency */
        start local 12 // android.widget.RelativeLayout$DependencyGraph$Node dependency
        21: .line 1832
            aload 12 /* dependency */
            ifnull 25
            aload 12 /* dependency */
            aload 6 /* node */
            if_acmpne 23
        22: .line 1833
            goto 25
        23: .line 1836
      StackMap locals: int android.widget.RelativeLayout$DependencyGraph$Node
      StackMap stack:
            aload 12 /* dependency */
            getfield android.widget.RelativeLayout$DependencyGraph$Node.dependents:Landroid/util/ArrayMap;
            aload 6 /* node */
            aload 0 /* this */
            invokevirtual android.util.ArrayMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        24: .line 1838
            aload 6 /* node */
            getfield android.widget.RelativeLayout$DependencyGraph$Node.dependencies:Landroid/util/SparseArray;
            iload 11 /* rule */
            aload 12 /* dependency */
            invokevirtual android.util.SparseArray.put:(ILjava/lang/Object;)V
        end local 12 // android.widget.RelativeLayout$DependencyGraph$Node dependency
        end local 11 // int rule
        25: .line 1826
      StackMap locals:
      StackMap stack:
            iinc 10 /* j */ 1
      StackMap locals:
      StackMap stack:
        26: iload 10 /* j */
            iload 9 /* rulesCount */
            if_icmplt 18
        end local 10 // int j
        end local 9 // int rulesCount
        end local 8 // int[] rules
        end local 7 // android.widget.RelativeLayout$LayoutParams layoutParams
        end local 6 // android.widget.RelativeLayout$DependencyGraph$Node node
        27: .line 1817
            iinc 5 /* i */ 1
      StackMap locals: android.widget.RelativeLayout$DependencyGraph int[] android.util.SparseArray java.util.ArrayList int int
      StackMap stack:
        28: iload 5 /* i */
            iload 4 /* count */
            if_icmplt 12
        end local 5 // int i
        29: .line 1843
            aload 0 /* this */
            getfield android.widget.RelativeLayout$DependencyGraph.mRoots:Ljava/util/ArrayDeque;
            astore 5 /* roots */
        start local 5 // java.util.ArrayDeque roots
        30: .line 1844
            aload 5 /* roots */
            invokevirtual java.util.ArrayDeque.clear:()V
        31: .line 1847
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        32: goto 36
        33: .line 1848
      StackMap locals: android.widget.RelativeLayout$DependencyGraph int[] android.util.SparseArray java.util.ArrayList int java.util.ArrayDeque int
      StackMap stack:
            aload 3 /* nodes */
            iload 6 /* i */
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            checkcast android.widget.RelativeLayout$DependencyGraph$Node
            astore 7 /* node */
        start local 7 // android.widget.RelativeLayout$DependencyGraph$Node node
        34: .line 1849
            aload 7 /* node */
            getfield android.widget.RelativeLayout$DependencyGraph$Node.dependencies:Landroid/util/SparseArray;
            invokevirtual android.util.SparseArray.size:()I
            ifne 35
            aload 5 /* roots */
            aload 7 /* node */
            invokevirtual java.util.ArrayDeque.addLast:(Ljava/lang/Object;)V
        end local 7 // android.widget.RelativeLayout$DependencyGraph$Node node
        35: .line 1847
      StackMap locals:
      StackMap stack:
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        36: iload 6 /* i */
            iload 4 /* count */
            if_icmplt 33
        end local 6 // int i
        37: .line 1852
            aload 5 /* roots */
            areturn
        end local 5 // java.util.ArrayDeque roots
        end local 4 // int count
        end local 3 // java.util.ArrayList nodes
        end local 2 // android.util.SparseArray keyNodes
        end local 1 // int[] rulesFilter
        end local 0 // android.widget.RelativeLayout$DependencyGraph this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   38     0          this  Landroid/widget/RelativeLayout$DependencyGraph;
            0   38     1   rulesFilter  [I
            1   38     2      keyNodes  Landroid/util/SparseArray<Landroid/widget/RelativeLayout$DependencyGraph$Node;>;
            2   38     3         nodes  Ljava/util/ArrayList<Landroid/widget/RelativeLayout$DependencyGraph$Node;>;
            3   38     4         count  I
            4   10     5             i  I
            6    8     6          node  Landroid/widget/RelativeLayout$DependencyGraph$Node;
           11   29     5             i  I
           13   27     6          node  Landroid/widget/RelativeLayout$DependencyGraph$Node;
           14   27     7  layoutParams  Landroid/widget/RelativeLayout$LayoutParams;
           15   27     8         rules  [I
           16   27     9    rulesCount  I
           17   27    10             j  I
           19   25    11          rule  I
           21   25    12    dependency  Landroid/widget/RelativeLayout$DependencyGraph$Node;
           30   38     5         roots  Ljava/util/ArrayDeque<Landroid/widget/RelativeLayout$DependencyGraph$Node;>;
           32   37     6             i  I
           34   35     7          node  Landroid/widget/RelativeLayout$DependencyGraph$Node;
    Signature: ([I)Ljava/util/ArrayDeque<Landroid/widget/RelativeLayout$DependencyGraph$Node;>;
    MethodParameters:
             Name  Flags
      rulesFilter  
}
SourceFile: "RelativeLayout.java"
NestHost: android.widget.RelativeLayout
InnerClasses:
  public LayoutParams = android.view.ViewGroup$LayoutParams of android.view.ViewGroup
  private DependencyGraph = android.widget.RelativeLayout$DependencyGraph of android.widget.RelativeLayout
  Node = android.widget.RelativeLayout$DependencyGraph$Node of android.widget.RelativeLayout$DependencyGraph
  public LayoutParams = android.widget.RelativeLayout$LayoutParams of android.widget.RelativeLayout