Derive a pseudo-feature parent from the given multi-feature.

        The provided multi-feature does not need to be the representative. The
        newly created pseudo-feature has the same seqid as the provided multi-
        feature, and spans its entire range. Otherwise, the pseudo-feature is
        empty. It is used only for convenience in sorting.

def pseudoify(self):
        """
        Derive a pseudo-feature parent from the given multi-feature.

        The provided multi-feature does not need to be the representative. The
        newly created pseudo-feature has the same seqid as the provided multi-
        feature, and spans its entire range. Otherwise, the pseudo-feature is
        empty. It is used only for convenience in sorting.
        """
        assert self.is_toplevel
        assert self.is_multi
        assert len(self.multi_rep.siblings) > 0
        rep = self.multi_rep

        start = min([s.start for s in rep.siblings + [rep]])
        end = max([s.end for s in rep.siblings + [rep]])

        parent = Feature(None)
        parent._pseudo = True
        parent._seqid = self._seqid
        parent.set_coord(start, end)
        parent._strand = self._strand
        for sibling in rep.siblings + [rep]:
            parent.add_child(sibling, rangecheck=True)
        parent.children = sorted(parent.children)
        rep.siblings = sorted(rep.siblings)

        return parent