code: func GetBoolStringPtr(d *schema.ResourceData, key string) (*bool, error) {
  	v, ok := d.GetOk(key)
  	if !ok {
  		return nil, nil
  	}
  	b, err := strconv.ParseBool(v.(string))
  	if err != nil {
  		return nil, err
  	}
  	return &b, nil
  }
docs: // GetBoolStringPtr reads a ResourceData *string* field. This field is handled
  // in the following way:
  //
  // * If it's empty, nil is returned.
  // * The string is then sent through ParseBool. This will return a valid value
  // for anything ParseBool returns a value for.
  // * If it's anything else, an error is returned.
  //
  // This is designed to address the current lack of HCL and Terraform to be able
  // to distinguish between nil states and zero values properly. This is a
  // systemic issue that affects reading, writing, and diffing of these values.
  // These issues will eventually be addressed in HCL2.