code: def _parse_head(heads, head_grads):
      
      if isinstance(heads, NDArray):
          heads = [heads]
      if isinstance(head_grads, NDArray):
          head_grads = [head_grads]
  
      head_handles = c_handle_array(heads)
  
      if head_grads is None:
          hgrad_handles = ctypes.c_void_p(0)
      else:
          assert len(heads) == len(head_grads), \
              "heads and head_grads must be lists of the same length"
          hgrad_handles = c_array(NDArrayHandle,
                                  [i.handle if i is not None else NDArrayHandle(0)
                                   for i in head_grads])
      return head_handles, hgrad_handles
docs: parse head gradient for backward and grad.