code: func (c *Command) Parse(params []CommandInfoParam) ([]internal.ReflectManagedMethodExecuterSoapArgument, error) {
  	flags := flag.NewFlagSet(strings.Join(c.name, " "), flag.ExitOnError)
  	vals := make([]string, len(params))
  
  	for i, p := range params {
  		v := &vals[i]
  		for _, a := range p.Aliases {
  			a = strings.TrimPrefix(a[1:], "-")
  			flags.StringVar(v, a, "", p.Help)
  		}
  	}
  
  	err := flags.Parse(c.args)
  	if err != nil {
  		return nil, err
  	}
  
  	args := []internal.ReflectManagedMethodExecuterSoapArgument{}
  
  	for i, p := range params {
  		if vals[i] == "" {
  			continue
  		}
  		args = append(args, c.Argument(p.Name, vals[i]))
  	}
  
  	return args, nil
  }
docs: // Parse generates a flag.FlagSet based on the given []CommandInfoParam and
  // returns arguments for use with methods.ExecuteSoap