code: def backward(self, indexes, grad_outputs):
      func = self.func
      ndim = func.ndim
      pad_value = func.pad_value
      ksize = func.ksize
      stride = func.stride
      pad = func.pad
  
      return AveragePoolingND(
          ndim, ksize, stride, pad, cover_all=False, pad_value=pad_value
      ).apply(grad_outputs)
  
imports: import functools
  import operator
  import numpy
  import six
  import chainer
  from chainer import backend
  from chainer.backends import cuda
  from chainer import function_node
  from chainer.functions.pooling import average_pooling_nd_kernel
  from chainer.functions.pooling import pooling_nd
  from chainer.utils import conv
  from chainer.utils import conv_nd
  import chainerx
label_desc: Use image node_id 4 for calling the AveragePoolingNDGrad obj's underlying member method code with example usage: obj.backward(indexes, grad_outputs) and returns: AveragePoolingND