code: def rotate(self, count=1, with_pane_before_only=False, with_pane_after_only=False):
          
          # Create (split, index, pane, weight) tuples.
          items = []
          current_pane_index = None
  
          for s in self.splits:
              for index, item in enumerate(s):
                  if isinstance(item, Pane):
                      items.append((s, index, item, s.weights[item]))
                      if item == self.active_pane:
                          current_pane_index = len(items) - 1
  
          # Only before after? Reduce list of panes.
          if with_pane_before_only:
              items = items[current_pane_index - 1:current_pane_index + 1]
  
          elif with_pane_after_only:
              items = items[current_pane_index:current_pane_index + 2]
  
          # Rotate positions.
          for i, triple in enumerate(items):
              split, index, pane, weight = triple
  
              new_item = items[(i + count) % len(items)][2]
  
              split[index] = new_item
              split.weights[new_item] = weight
docs: Rotate panes.
          When `with_pane_before_only` or `with_pane_after_only` is True, only rotate
          with the pane before/after the active pane.