Sorry that this method's changes are more extensive than might be expected. The core of the fix is to process a trailing argument list in a loop, calling the get() method many times instead of once on the entire list. The additional reorganization allows the error handling to be smarter about showing all errors that may have occurred. Argument classes now throw exceptions in the get() method. These exceptions are caught and saved for error reporting at the end. Some kinds of errors want the usage displayed afterward, but simple bad argument values don't need the extra noise.