@typecheck_method(l=IR, r=IR)
def copy(self, l, r):
    new_instance = self.__class__
    return new_instance(self.op, l, r)
@typecheck_method(l=IR, r=IR)
def copy(self, l, r):
    new_instance = self.__class__
    return new_instance(self.op, l, r)