code: def _operation(self):
      # In the case of 2D, the kernel is the following:
      #
      # // result by self._compile_c0()
      # int c0 = i / (out_0 * out_1);
      #
      # // result by self._compile_max_x()
      # int out_x_0 = i / (out_1) % out_0;
      # int out_x_1 = i % out_1;
      # int index = indexes[i];
      #
      # // result by self._compile_out()
      # int max_0 = max(0, out_x_0 * s_0 - p_0 + index / (k_1) % k_0);
      # int max_1 = max(0, out_x_1 * s_1 - p_1 + index % k_1);
      # int offset_0 = d_1 * (max_0 + d_0 * c0);
      # int offset_1 = 1 * (max_1 + offset_0);
      # out = in[offset_1];
      c0 = self._compile_c0()
      out_x, out_xs = self._compile_out_x()
      max_x = self._compile_max_x()
      index = ["int index = indexes[i];"]
      out = self._compile_out()
      return "\n".join(c0 + out_x + index + max_x + out)
  
imports: import six
  from chainer.functions.pooling import pooling_nd_kernel
  from chainer.utils import conv_nd_kernel
label_desc: Use image node_id 6 for calling the MaxPoolingNDKernelForwardWithIndexes obj's underlying member method code with example usage: obj._operation() and returns: str