code: def get_renames(self, from_name: str, to_name: str) \
              -> Sequence[Tuple[str, str]]:
          
          from_parts = from_name.split(self._delimiter)
          try:
              from_node = self._find(self._root, *from_parts)
          except KeyError:
              return []
          from_names = (entry.name for entry in self._iter(from_node, from_name)
                        if entry.exists)
          to_names = (entry.name for entry in self._iter(from_node, to_name)
                      if entry.exists)
          return list(zip(from_names, to_names))
docs: Return a list of tuples for all mailboxes that must be renamed, for
          the given rename operation. This should include
          ``(from_name, to_name)`` as well as all inferior names in the heirarchy
          that must also be renamed. If ``from_name`` does not exist, an empty
          list is returned.
  
          See Also:
              `RFC 3501 6.3.5
              <https://tools.ietf.org/html/rfc3501#section-6.3.5>`_
  
          Args:
              from_name: The original name of the mailbox.
              to_name: The intended new name of the mailbox.