### Question:
NonOptionArgumentSpec extends AbstractOptionSpec<V> { @SuppressWarnings( "unchecked" ) public <T> NonOptionArgumentSpec<T> ofType( Class<T> argumentType ) { converter = (ValueConverter<V>) findConverter( argumentType ); return (NonOptionArgumentSpec<T>) this; } NonOptionArgumentSpec();   NonOptionArgumentSpec( String description ); @SuppressWarnings( "unchecked" ) NonOptionArgumentSpec<T> ofType( Class<T> argumentType ); @SuppressWarnings( "unchecked" ) final NonOptionArgumentSpec<T> withValuesConvertedBy( ValueConverter<T> aConverter ); NonOptionArgumentSpec<V> describedAs( String description ); List<?> defaultValues(); boolean isRequired(); boolean acceptsArguments(); boolean requiresArgument(); String argumentDescription(); String argumentTypeIndicator(); boolean representsNonOptions();  }### Answer:
@Test public void allowsTypingOfNonOptionArguments() { OptionSpec<File> nonOptions = parser.nonOptions().ofType( File.class ); OptionSet options = parser.parse( "/opt", "/var" ); assertEquals( asList( new File( "/opt" ), new File( "/var" ) ), nonOptions.values( options ) ); }
@Test public void allowsTypeAndDescriptionOfNonOptionArguments() { OptionSpec<File> nonOptions = parser.nonOptions( "directories" ).ofType( File.class ); OptionSet options = parser.parse( "/opt", "/var" ); assertEquals( asList( new File( "/opt" ), new File( "/var" ) ), nonOptions.values( options ) ); }