@typecheck_method(a=IR, zero=IR, body=IR)
def copy(self, a, zero, body):
    new_instance = self.__class__
    return new_instance(a, zero, self.accum_name, self.value_name, body)
@typecheck_method(a=IR, zero=IR, body=IR)
def copy(self, a, zero, body):
    new_instance = self.__class__
    return new_instance(a, zero, self.accum_name, self.value_name, body)