def make_error(self, error):
        """
        Create a new instance of this stanza (this directly uses
        ``type(self)``, so also works for subclasses without extra care) which
        has the given `error` value set as :attr:`error`.

        In addition, the :attr:`id_`, :attr:`from_` and :attr:`to` values are
        transferred from the original (with from and to being swapped). Also,
        the :attr:`type_` is set to ``"error"``.
        """
        obj = type(self)(
            from_=self.to,
            to=self.from_,
            # because flat is better than nested (sarcasm)
            type_=type(self).type_.type_.enum_class.ERROR,
        )
        obj.id_ = self.id_
        obj.error = error
        return obj
Create a new instance of this stanza (this directly uses
        ``type(self)``, so also works for subclasses without extra care) which
        has the given `error` value set as :attr:`error`.

        In addition, the :attr:`id_`, :attr:`from_` and :attr:`to` values are
        transferred from the original (with from and to being swapped). Also,
        the :attr:`type_` is set to ``"error"``.