code: func (fs *FlagSet) Parse(arguments []string) error {
  	fs.parsed = true
  	fs.args = arguments
  	for {
  		seen, name, err := fs.parseOne()
  		if seen {
  			continue
  		}
  		if err == nil {
  			break
  		}
  		if err == ErrRetry {
  			if len(name) > 1 {
  				err = nil
  				for _, letter := range strings.Split(name, "") {
  					fs.args = append([]string{"-" + letter}, fs.args...)
  					seen2, _, err2 := fs.parseOne()
  					if seen2 {
  						continue
  					}
  					if err2 != nil {
  						err = fs.failf("flag provided but not defined: -%s", name)
  						break
  					}
  				}
  				if err == nil {
  					continue
  				}
  			} else {
  				err = fs.failf("flag provided but not defined: -%s", name)
  			}
  		}
  		switch fs.errorHandling {
  		case ContinueOnError:
  			return err
  		case ExitOnError:
  			os.Exit(125)
  		case PanicOnError:
  			panic(err)
  		}
  	}
  	return nil
  }
docs: // Parse parses flag definitions from the argument list, which should not
  // include the command name.  Must be called after all flags in the FlagSet
  // are defined and before flags are accessed by the program.
  // The return value will be ErrHelp if -help was set but not defined.