code: def _merge_indices(a, b, len_a, len_b):
      if a is None and b is None:
          return None
      elif a is None:
          return b
      elif b is None:
          return a
      elif isinstance(a, slice) and isinstance(b, slice):
          a_start, a_stop, a_step = a.indices(len_a)
          b_start, b_stop, b_step = b.indices(len_b)
  
          start = a_start + a_step * b_start
          stop = a_start + a_step * b_stop
          step = a_step * b_step
  
          if start < 0 and step > 0:
              start = None
          if stop < 0 and step < 0:
              stop = None
  
          return slice(start, stop, step)
      elif isinstance(a, slice):
          a_start, _, a_step = a.indices(len_a)
          return [a_start + a_step * index for index in b]
      elif isinstance(b, slice):
          return a[b]
      else:
          return [a[index] for index in b]
  
imports: import numbers
  import numpy
  import six
  from chainer.dataset.tabular import tabular_dataset
label_desc: Use image node_id 3 for calling a global function with example usage: _merge_indices(a, b, len_a, len_b) and returns: None, b, a, slice, unknown, a, unknown