code: func (t *TSMIndexIterator) Next() bool {
  	t.d.mu.RLock()
  	if n := len(t.d.ro.offsets); t.n != n {
  		t.err, t.ok = fmt.Errorf("Key count changed during iteration"), false
  	}
  	if !t.ok || t.err != nil {
  		t.d.mu.RUnlock()
  		return false
  	}
  	if !t.peeked && !t.first {
  		t.ok = t.iter.Next()
  	}
  	if !t.ok {
  		t.d.mu.RUnlock()
  		return false
  	}
  
  	t.peeked = false
  	t.first = false
  
  	t.offset = t.iter.Offset()
  	t.eoffset = t.iter.EntryOffset(t.b)
  	t.d.mu.RUnlock()
  
  	// reset lazy loaded state
  	t.key = nil
  	t.typ = 0
  	t.entries = t.entries[:0]
  	return true
  }
docs: // Next advances the iterator and reports if it is still valid.