code: def walk(self) -> Iterable['MessageContent']:
          
          if self.body.has_nested:
              return chain([self], *(part.walk() for part in self.body.nested))
          else:
              return [self]
docs: Iterate through the message and all its nested sub-parts in the
          order they occur.