code: func (argument *Argument) UnmarshalJSON(data []byte) error {
  	var arg ArgumentMarshaling
  	err := json.Unmarshal(data, &arg)
  	if err != nil {
  		return fmt.Errorf("argument json err: %v", err)
  	}
  
  	argument.Type, err = NewType(arg.Type, arg.Components)
  	if err != nil {
  		return err
  	}
  	argument.Name = arg.Name
  	argument.Indexed = arg.Indexed
  
  	return nil
  }
docs: // UnmarshalJSON implements json.Unmarshaler interface