{motive_1 : Lean.Elab.InfoTree → Sort u} →
  {motive_2 : Lean.PersistentArray Lean.Elab.InfoTree → Sort u} →
    {motive_3 : Lean.PersistentArrayNode Lean.Elab.InfoTree → Sort u} →
      {motive_4 : Array Lean.Elab.InfoTree → Sort u} →
        {motive_5 : Array (Lean.PersistentArrayNode Lean.Elab.InfoTree) → Sort u} →
          {motive_6 : List Lean.Elab.InfoTree → Sort u} →
            {motive_7 : List (Lean.PersistentArrayNode Lean.Elab.InfoTree) → Sort u} →
              ((i : Lean.Elab.PartialContextInfo) →
                  (t : Lean.Elab.InfoTree) → motive_1 t → motive_1 (Lean.Elab.InfoTree.context i t)) →
                ((i : Lean.Elab.Info) →
                    (children : Lean.PersistentArray Lean.Elab.InfoTree) →
                      motive_2 children → motive_1 (Lean.Elab.InfoTree.node i children)) →
                  ((mvarId : Lean.MVarId) → motive_1 (Lean.Elab.InfoTree.hole mvarId)) →
                    ((root : Lean.PersistentArrayNode Lean.Elab.InfoTree) →
                        (tail : Array Lean.Elab.InfoTree) →
                          (size : ℕ) →
                            (shift : USize) →
                              (tailOff : ℕ) →
                                motive_3 root →
                                  motive_4 tail →
                                    motive_2
                                      { root := root, tail := tail, size := size, shift := shift,
                                        tailOff := tailOff }) →
                      ((cs : Array (Lean.PersistentArrayNode Lean.Elab.InfoTree)) →
                          motive_5 cs → motive_3 (Lean.PersistentArrayNode.node cs)) →
                        ((vs : Array Lean.Elab.InfoTree) → motive_4 vs → motive_3 (Lean.PersistentArrayNode.leaf vs)) →
                          ((toList : List Lean.Elab.InfoTree) → motive_6 toList → motive_4 { toList := toList }) →
                            ((toList : List (Lean.PersistentArrayNode Lean.Elab.InfoTree)) →
                                motive_7 toList → motive_5 { toList := toList }) →
                              motive_6 [] →
                                ((head : Lean.Elab.InfoTree) →
                                    (tail : List Lean.Elab.InfoTree) →
                                      motive_1 head → motive_6 tail → motive_6 (head :: tail)) →
                                  motive_7 [] →
                                    ((head : Lean.PersistentArrayNode Lean.Elab.InfoTree) →
                                        (tail : List (Lean.PersistentArrayNode Lean.Elab.InfoTree)) →
                                          motive_3 head → motive_7 tail → motive_7 (head :: tail)) →
                                      (t : List (Lean.PersistentArrayNode Lean.Elab.InfoTree)) → motive_7 t