def _post_process(self, original, compiled, index_name, **kwargs):
     target_names = [part.primary_mesh for part in original.body]
     #nodes = [self.IterationSpaceConverter(self.index_name).visit(node) for node in nodes]
     array_names = find_names(original)
     function_name = 'kernel'
     ndim = self.get_ndim(original)
     body = []
     for output_name, space in zip(target_names, compiled.body):
         space = self.BasicIndexOpConverter().visit(space)
         parts = self.IterationSpaceConverter(self.index_name, output_name).visit(space)
         body.extend(parts)
     args = [part.output for part in original.body]
     args.extend(sorted(array_names - set(target_names)))
     tree = ast.FunctionDef(
         name=function_name,
         args=ast.arguments(
             args=[ast.Name(id=arg, ctx=ast.Param()) for arg in args],
             vararg=None,
             kwarg=None,
             defaults=[]
         ),
         body=body,
         decorator_list=[]
     )
     # print("hello")
     tree = ast.Module(body=[tree])
     # tree = self.BasicIndexOpConverter().visit(tree)
     # tree = self.IterationSpaceConverter(self.index_name, original.body[-1].output).visit(tree)
     tree = ast.fix_missing_locations(tree)
     code = compile(tree, '<string>', 'exec')
     exec code in globals(), locals()
     return locals()['kernel']
 def _post_process(self, original, compiled, index_name, **kwargs):
     kern = self.LazySpecializedKernel(
         py_ast=compiled,
         names=find_names(original),
         index_name=index_name,
         target_names=[stencil.primary_mesh for stencil in original.body if hasattr(stencil, "primary_mesh")],
         _hash=hash(original),
         original=original
     )
     kern.tile_size = self.tile_size
     return kern