code: def clone_fluent_contentitems_m2m_relationships(self, dst_obj):
          
          if not hasattr(self, 'contentitem_set'):
              return
          # We must explicitly and reliably order both the src and dst content
          # items here to ensure that we are processing the same logical item for
          # the draft and published copies. The default `ContentItem` ordering of
          # ('placeholder', 'sort_order') is not sufficient because it relies on
          # the placeholder PK remaining static, whereas we clone placeholders to
          # the published copy and may sometimes clone them with PKs in a
          # different order.
          reliable_ordering = [
              # Group items by owning placeholder using slot name, not PK
              'placeholder__slot',
              # Order items correctly within the placeholder grouping
              'sort_order'
          ]
          for src_ci, dst_ci in zip(
              self.contentitem_set.order_by(*reliable_ordering),
              dst_obj.contentitem_set.order_by(*reliable_ordering)
          ):
              for field, __ in src_ci._meta.get_m2m_with_model():
                  field_name = field.name
                  src_m2m = getattr(src_ci, field_name)
                  dst_m2m = getattr(dst_ci, field_name)
  
                  # It is safe to just `add` here, rather than match src and
                  # dst listing exactly (i.e. potentially delete or re-order
                  # items) because the destination content items are
                  # re-created on publish thus always have empty M2M rels.
                  dst_m2m.add(*src_m2m.all())
docs: Find all MTM relationships on related ContentItem's and ensure the
          published M2M relationships directed back to the draft (src)
          content items are maintained for the published (dst) page's content
          items.