def deep_clone(self) -> Segment:
        """
        Create a versioned deep clone of the segment with rules only (no
        metadata in legacy logic), incrementing the original's version.

        TODO: Improve clarity. This method exists to allow for updating a
        segment while keeping the previous version (this) intact for history.
        We should refactor this, or at least rename it.
        """
        cloned_segment: Segment = deepcopy(self.segment)
        cloned_segment.id = None
        cloned_segment.uuid = uuid.uuid4()
        cloned_segment.version_of = self.segment
        cloned_segment.save()

        self.segment.version = (self.segment.version or 0) + 1
        self.segment.save_without_historical_record()

        self._clone_segment_rules(cloned_segment=cloned_segment)
        return cloned_segment

        Create a versioned deep clone of the segment with rules only (no
        metadata in legacy logic), incrementing the original's version.

        TODO: Improve clarity. This method exists to allow for updating a
        segment while keeping the previous version (this) intact for history.
        We should refactor this, or at least rename it.
        
api/segments/services.py