code: func (m *MergeIterator) Next() error {
  	// move all the current low iterators to next
  	for _, vi := range m.lowIdxs {
  		err := m.itrs[vi].Next()
  		if err != nil && err != ErrIteratorDone {
  			return err
  		}
  		m.currKs[vi], m.currVs[vi] = m.itrs[vi].Current()
  	}
  	m.updateMatches()
  	if m.lowK == nil {
  		return ErrIteratorDone
  	}
  	return nil
  }
docs: // Next advances this iterator to the next key/value pair.  If there is none,
  // then ErrIteratorDone is returned.