code: func (s *RaftStore) Recover() (*RecoveredState, error) {
  	s.Lock()
  	defer s.Unlock()
  	state, err := s.Store.Recover()
  	if err != nil {
  		return nil, err
  	}
  	if state != nil {
  		for channel, rc := range state.Channels {
  			// Note that this is when recovering the underlying sub store
  			// that would be the case for a RaftSubStore prior to 0.14.1
  			var maxSubID uint64
  			for _, rs := range rc.Subscriptions {
  				if rs.Sub.ID > maxSubID {
  					maxSubID = rs.Sub.ID
  				}
  			}
  			rc.Channel.Subs = s.replaceSubStore(channel, rc.Channel.Subs, maxSubID)
  			rc.Subscriptions = nil
  		}
  		state.Clients = nil
  	}
  	return state, nil
  }
docs: // Recover implements the Store interface