### Question:
ArgumentAcceptingOptionSpec extends AbstractOptionSpec<V> { public final ArgumentAcceptingOptionSpec<V> withValuesSeparatedBy( char separator ) { if ( separator == NIL_VALUE_SEPARATOR ) throw new IllegalArgumentException( "cannot use U+0000 as separator" ); valueSeparator = String.valueOf( separator ); return 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 = IllegalArgumentException.class ) public void rejectsUnicodeZeroAsCharValueSeparatorForRequiredArgument() { new RequiredArgumentOptionSpec<Void>( "a" ).withValuesSeparatedBy( '\u0000' ); }
@Test( expected = IllegalArgumentException.class ) public void rejectsUnicodeZeroAsCharValueSeparatorForOptionalArgument() { new OptionalArgumentOptionSpec<Void>( "b" ).withValuesSeparatedBy( '\u0000' ); }
@Test( expected = IllegalArgumentException.class ) public void rejectsUnicodeZeroInStringValueSeparatorForRequiredArgument() { new RequiredArgumentOptionSpec<Void>( "c" ).withValuesSeparatedBy( "::\u0000::" ); }
@Test( expected = IllegalArgumentException.class ) public void rejectsUnicodeZeroInStringValueSeparatorForOptionalArgument() { new OptionalArgumentOptionSpec<Void>( "d" ).withValuesSeparatedBy( "::::\u0000" ); }