def METHOD_NAME(cls, op_name):
    def wrapper(self, *args, **kwargs):
        return self._preserving_unbound(getattr(self.ast.__class__, op_name), *args, **kwargs)
    wrapper.__name__ = op_name
    setattr(cls, op_name, wrapper)