docs: def itervalues(self, index=None):
          '''
          Iterate through values in the ``index`` (defaults to all indices
          except the first index).
  
          When ``index is None``, yielded values depend on the length of indices (``N``):
  
              * if N <= 1: return
              * if N == 2: yield values in the 2nd index
              * if N > 2: yield values in all indices except the first index
                (each value is a list of ``N-1`` elements)
          '''
          N = len(self.indices)
  
          if index is None:
              if N <= 1:
                  return
              elif N == 2:
                  index = 1
                  single = True
              else:
                  index = slice(1, None)
                  single = False
          else:
              index, single = convert_key_to_index(force_list(self.indices.keys()), index)
  
          multi = not single
  
          for key in self:
              item = MI_get_item(self, key)
              value = mget_list(item, index)
              if multi:
                  value = tuple(value)  # convert list to tuple
              yield value