code: func (s *Store) Snapshot() (snapshot *Store) {
  	coll := copyColl(*(*map[string]*Collection)(atomic.LoadPointer(&s.coll)))
  	res := &Store{
  		coll:      unsafe.Pointer(&coll),
  		file:      s.file,
  		size:      atomic.LoadInt64(&s.size),
  		readOnly:  true,
  		callbacks: s.callbacks,
  	}
  	for _, name := range collNames(coll) {
  		collOrig := coll[name]
  		coll[name] = &Collection{
  			store:    res,
  			compare:  collOrig.compare,
  			rootLock: collOrig.rootLock,
  			root:     collOrig.rootAddRef(),
  		}
  	}
  	return res
  }
docs: // Returns a read-only snapshot, including any mutations on the
  // original Store that have not been Flush()'ed to disk yet.  The
  // snapshot has its mutations and Flush() operations disabled because
  // the original store "owns" writes to the StoreFile.