code: func PropertiesFlag(props *structpb.Struct) flag.Getter {
  	if props == nil {
  		panic("props is nil")
  	}
  	return &propertiesFlag{
  		props: props,
  		first: true,
  		// We don't expect a lot of properties.
  		// After a certain number, it is easier to pass properties via a file.
  		// Choose an arbitrary number.
  		explicitlySet: stringset.New(4),
  	}
  }
docs: // PropertiesFlag returns a flag.Getter that can read property values into props.
  //
  // If a flag value starts with @, properties are read from the JSON file at the
  // path that follows @. Example:
  //  -p @my_properties.json
  // This form can be used only in the first flag value.
  //
  // Otherwise, a flag value must have name=value form.
  // If the property value is valid JSON, then it is parsed as JSON;
  // otherwise treated as a string. Example:
  //  -p foo=1 -p 'bar={"a": 2}'
  // Different property names can be specified multiple times.
  //
  // Panics if props is nil.
  // String() of the return value panics if marshaling of props to JSON fails.