code: func parseStoreLimits(itf interface{}, opts *Options) error {
  	m, ok := itf.(map[string]interface{})
  	if !ok {
  		return fmt.Errorf("expected store limits to be a map/struct, got %v", itf)
  	}
  	for k, v := range m {
  		name := strings.ToLower(k)
  		switch name {
  		case "mc", "max_channels", "maxchannels":
  			if err := checkType(k, reflect.Int64, v); err != nil {
  				return err
  			}
  			opts.MaxChannels = int(v.(int64))
  		case "channels", "channels_limits", "channelslimits", "per_channel", "per_channel_limits":
  			if err := parsePerChannelLimits(v, opts); err != nil {
  				return err
  			}
  		default:
  			// Check for the global limits (MaxMsgs, MaxBytes, etc..)
  			if err := parseChannelLimits(&opts.ChannelLimits, k, name, v, true); err != nil {
  				return err
  			}
  		}
  	}
  	return nil
  }
docs: // parseStoreLimits updates `opts` with store limits