### Question:
ArgumentAcceptingOptionSpec extends AbstractOptionSpec<V> { @SuppressWarnings( "unchecked" ) public final <T> ArgumentAcceptingOptionSpec<T> withValuesConvertedBy( ValueConverter<T> aConverter ) { if ( aConverter == null ) throw new NullPointerException( "illegal null converter" ); converter = (ValueConverter<V>) aConverter; return (ArgumentAcceptingOptionSpec<T>) this; } ArgumentAcceptingOptionSpec( String option, boolean argumentRequired );   ArgumentAcceptingOptionSpec( List<String> options, boolean argumentRequired, String description ); final ArgumentAcceptingOptionSpec<T> ofType( Class<T> argumentType ); @SuppressWarnings( "unchecked" ) final ArgumentAcceptingOptionSpec<T> withValuesConvertedBy( ValueConverter<T> aConverter ); final ArgumentAcceptingOptionSpec<V> describedAs( String description ); final ArgumentAcceptingOptionSpec<V> withValuesSeparatedBy( char separator ); final ArgumentAcceptingOptionSpec<V> withValuesSeparatedBy( String separator ); @SafeVarargs final ArgumentAcceptingOptionSpec<V> defaultsTo( V value, V... values ); ArgumentAcceptingOptionSpec<V> defaultsTo( V[] values ); ArgumentAcceptingOptionSpec<V> required(); boolean isRequired(); boolean acceptsArguments(); boolean requiresArgument(); String argumentDescription(); String argumentTypeIndicator(); List<V> defaultValues(); @Override boolean equals( Object that ); @Override int hashCode();  }### Answer:
@Test( expected = NullPointerException.class ) public void rejectsNullConverter() { new RequiredArgumentOptionSpec<Void>( "c" ).withValuesConvertedBy( null ); }