code: func (fs *FileStore) CreateChannel(channel string) (*Channel, error) {
  	fs.Lock()
  	defer fs.Unlock()
  
  	// Verify that it does not already exist or that we did not hit the limits
  	if err := fs.canAddChannel(channel); err != nil {
  		return nil, err
  	}
  
  	// We create the channel here...
  
  	channelDirName := filepath.Join(fs.fm.rootDir, channel)
  	if err := os.MkdirAll(channelDirName, os.ModeDir+os.ModePerm); err != nil {
  		return nil, err
  	}
  
  	var err error
  	var msgStore MsgStore
  	var subStore SubStore
  
  	channelLimits := fs.genericStore.getChannelLimits(channel)
  
  	msgStore, err = fs.newFileMsgStore(channelDirName, channel, &channelLimits.MsgStoreLimits, false)
  	if err != nil {
  		return nil, err
  	}
  	subStore, err = fs.newFileSubStore(channel, &channelLimits.SubStoreLimits, false)
  	if err != nil {
  		msgStore.Close()
  		return nil, err
  	}
  
  	c := &Channel{
  		Subs: subStore,
  		Msgs: msgStore,
  	}
  
  	fs.channels[channel] = c
  
  	return c, nil
  }
docs: // CreateChannel implements the Store interface