code: func (m *memory) reload() error {
  	m.Lock()
  
  	// merge sets
  	set, err := m.opts.Reader.Merge(m.sets...)
  	if err != nil {
  		m.Unlock()
  		return err
  	}
  
  	// set values
  	m.vals, _ = m.opts.Reader.Values(set)
  	m.snap = &loader.Snapshot{
  		ChangeSet: set,
  		Version:   fmt.Sprintf("%d", time.Now().Unix()),
  	}
  
  	m.Unlock()
  
  	// update watchers
  	m.update()
  
  	return nil
  }
docs: // reload reads the sets and creates new values