def METHOD_NAME(assign):
    @wraps(assign)
    def wrapper(self, *args, **kwargs):
        ad_block_tag = kwargs.pop("ad_block_tag", None)
        annotate = annotate_tape(kwargs)
        if annotate:
            other = args[0]
            if not isinstance(other, OverloadedType):
                other = create_overloaded_object(other)
            block = ConstantAssignBlock(other, ad_block_tag=ad_block_tag)
            tape = get_working_tape()
            tape.add_block(block)
        ret = assign(self, *args, **kwargs)
        if annotate:
            block.add_output(self.create_block_variable())
        return ret
    return wrapper