code: func (b *Bool) UnmarshalJSON(data []byte) error {
  	if len(data) == 0 {
  		return nil
  	}
  	var boolVal bool
  	// check if it's a bool variable
  	if err := json.Unmarshal(data, &boolVal); err == nil {
  		*b = Bool(boolVal)
  		return nil
  	}
  	// also support string variables
  	var stringVar string
  	if err := json.Unmarshal(data, &stringVar); err != nil {
  		return trace.Wrap(err)
  	}
  	v, err := utils.ParseBool(stringVar)
  	if err != nil {
  		*b = false
  		return nil
  	}
  	*b = Bool(v)
  	return nil
  }
docs: // UnmarshalJSON unmarshals JSON from string or bool,
  // in case if value is missing or not recognized, defaults to false