code: func (andOperation *And) MarshalJSON() ([]byte, error) {
  	return json.Marshal(&struct {
  		Comparison []Comparison `json:"And,omitempty"`
  		Next       string       `json:",omitempty"`
  	}{
  		Comparison: andOperation.Comparison,
  		Next:       andOperation.Next.Name(),
  	})
  }
docs: // MarshalJSON for custom marshalling