code: def build_inner(
      self,
      context,
      type_aliases=(),
      var_values=(),
      more_preamble="",
      more_arguments=(),
      declare_types=(),
      options=None,
  ):
      renderer = self.get_renderer(
          type_aliases, var_values, context, options
      )
  
      arg_list = renderer.render_argument_list(
          self.arguments, more_arguments, with_offset=True
      )
      type_decl_preamble = renderer.get_type_decl_preamble(
          context.devices[0], declare_types, arg_list
      )
  
      return ElementwiseKernel(
          context,
          arg_list,
          renderer(self.operation),
          name=renderer(self.name),
          options=options,
          preamble=(
              type_decl_preamble
              + "\n"
              + renderer(self.preamble + "\n" + more_preamble)
          ),
          auto_preamble=False,
      )
  
imports: import enum
  from typing import Any, List, Optional, Tuple, Union
  import numpy
  import pyopencl
  from pyopencl.tools import context_dependent_memoize
  from pyopencl.tools import dtype_to_ctype, DtypedArgument, VectorArg, ScalarArg, KernelTemplateBase, dtype_to_c_struct
  from pytools import memoize_method
label_desc: Use image node_id 2 for calling the ElementwiseTemplate obj's underlying member method code with example usage: obj.build_inner(context, type_aliases, var_values, more_preamble, more_arguments, declare_types, options) and returns: ElementwiseKernel