code: func (cs *CryptoStore) Recover() (*RecoveredState, error) {
  	cs.Lock()
  	defer cs.Unlock()
  	rs, err := cs.Store.Recover()
  	if rs == nil || err != nil {
  		return nil, err
  	}
  	for cn, rc := range rs.Channels {
  		cms, err := cs.newCryptoMsgStore(cn, rc.Channel.Msgs)
  		if err != nil {
  			return nil, err
  		}
  		rc.Channel.Msgs = cms
  	}
  	return rs, nil
  }
docs: // Recover implements the Store interface