code: func (cs *ChoiceState) MarshalJSON() ([]byte, error) {
  	/*
  		A state in a Parallel state branch “States” field MUST NOT have a “Next” field that targets a field outside of that “States” field. A state MUST NOT have a “Next” field which matches a state name inside a Parallel state branch’s “States” field unless it is also inside the same “States” field.
  
  		Put another way, states in a branch’s “States” field can transition only to each other, and no state outside of that “States” field can transition into it.
  	*/
  	additionalParams := make(map[string]interface{})
  	additionalParams["Choices"] = cs.Choices
  	if cs.Default != nil {
  		additionalParams["Default"] = cs.Default.Name()
  	}
  	return cs.marshalStateJSON("Choice", additionalParams)
  }
docs: // MarshalJSON for custom marshalling