code: def _walk_through_splits(self):
          
          def walk(split):
              for c in split:
                  if isinstance(c, (HSplit, VSplit)):
                      yield split, c
                      for i in walk(c):
                          yield i
  
          return walk(self.root)
docs: Yields (parent_split, child_plit) tuples.