code: func (s *Store) FlushRevert() error {
  	if s.file == nil {
  		return errors.New("no file / in-memory only, so cannot FlushRevert()")
  	}
  	orig := atomic.LoadPointer(&s.coll)
  	coll := make(map[string]*Collection)
  	if atomic.CompareAndSwapPointer(&s.coll, orig, unsafe.Pointer(&coll)) {
  		for _, cold := range *(*map[string]*Collection)(orig) {
  			cold.closeCollection()
  		}
  	}
  	if atomic.LoadInt64(&s.size) > rootsLen {
  		atomic.AddInt64(&s.size, -1)
  	}
  	err := s.readRootsScan(true)
  	if err != nil {
  		return err
  	}
  	if s.readOnly {
  		return nil
  	}
  	return s.file.Truncate(atomic.LoadInt64(&s.size))
  }
docs: // Reverts the last Flush(), bringing the Store back to its state at
  // its next-to-last Flush() or to an empty Store (with no Collections)
  // if there were no next-to-last Flush().  This call will truncate the
  // Store file.