code: func (ms *MemoryStore) CreateChannel(channel string) (*Channel, error) {
  	ms.Lock()
  	defer ms.Unlock()
  
  	// Verify that it does not already exist or that we did not hit the limits
  	if err := ms.canAddChannel(channel); err != nil {
  		return nil, err
  	}
  
  	channelLimits := ms.genericStore.getChannelLimits(channel)
  
  	msgStore := &MemoryMsgStore{msgs: make(map[uint64]*pb.MsgProto, 64)}
  	msgStore.init(channel, ms.log, &channelLimits.MsgStoreLimits)
  
  	subStore := &MemorySubStore{}
  	subStore.init(ms.log, &channelLimits.SubStoreLimits)
  
  	c := &Channel{
  		Subs: subStore,
  		Msgs: msgStore,
  	}
  	ms.channels[channel] = c
  
  	return c, nil
  }
docs: // CreateChannel implements the Store interface