code: func HandleExitCoder(err error) {
  	if err == nil {
  		return
  	}
  
  	if exitErr, ok := err.(ExitCoder); ok {
  		if err.Error() != "" {
  			if _, ok := exitErr.(ErrorFormatter); ok {
  				fmt.Fprintf(ErrWriter, "%+v\n", err)
  			} else {
  				fmt.Fprintln(ErrWriter, err)
  			}
  		}
  		OsExiter(exitErr.ExitCode())
  		return
  	}
  
  	if multiErr, ok := err.(MultiError); ok {
  		code := handleMultiError(multiErr)
  		OsExiter(code)
  		return
  	}
  }
docs: // HandleExitCoder checks if the error fulfills the ExitCoder interface, and if
  // so prints the error to stderr (if it is non-empty) and calls OsExiter with the
  // given exit code.  If the given error is a MultiError, then this func is
  // called on all members of the Errors slice and calls OsExiter with the last exit code.