code: func (snap *dbCacheSnapshot) NewIterator(slice *util.Range) *dbCacheIterator {
  	return &dbCacheIterator{
  		dbIter:        snap.dbSnapshot.NewIterator(slice, nil),
  		cacheIter:     newLdbCacheIter(snap, slice),
  		cacheSnapshot: snap,
  	}
  }
docs: // NewIterator returns a new iterator for the snapshot.  The newly returned
  // iterator is not pointing to a valid item until a call to one of the methods
  // to position it is made.
  //
  // The slice parameter allows the iterator to be limited to a range of keys.
  // The start key is inclusive and the limit key is exclusive.  Either or both
  // can be nil if the functionality is not desired.