code: def make_error(self, 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
docs: 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"``.