code: func highLevelConfFields() map[string]bool {
  	knownFields := make(map[string]bool)
  	var c serverconfig.Config
  	s := reflect.ValueOf(&c).Elem()
  	for i := 0; i < s.NumField(); i++ {
  		f := s.Type().Field(i)
  		jsonTag, ok := f.Tag.Lookup("json")
  		if !ok {
  			panic(fmt.Sprintf("%q field in serverconfig.Config does not have a json tag", f.Name))
  		}
  		jsonFields := strings.Split(strings.TrimSuffix(strings.TrimPrefix(jsonTag, `"`), `"`), ",")
  		jsonName := jsonFields[0]
  		if jsonName == "" {
  			panic(fmt.Sprintf("no json field name for %q field in serverconfig.Config", f.Name))
  		}
  		knownFields[jsonName] = true
  	}
  	return knownFields
  }
docs: // highLevelConfFields returns all the possible fields of a serverconfig.Config,
  // in their JSON form. This allows checking that the parameters in the high-level
  // server configuration file are at least valid names, which is useful to catch
  // typos.