def closure(): if zone: SFData.stackZone(zone); try: return self.func(*args, **kwargs) finally: if zone: if zone != SFData.unstackZone(): raise ValueError('Memory Zone mismatch')