### Question:
AbbreviationMap implements OptionNameMap<V> { @Override public void remove( String key ) { if ( key.length() == 0 ) throw new IllegalArgumentException(); char[] keyChars = charsOf(key); remove( keyChars, 0, keyChars.length ); }  @Override boolean contains(String key); @Override V get( String key ); @Override void put( String key, V newValue ); @Override void putAll( Iterable<String> keys, V newValue ); @Override void remove( String key ); @Override Map<String, V> toJavaUtilMap();  }### Answer:
@Test( expected = NullPointerException.class ) public void nullKeysAreIllegalToRemove() { abbreviations.remove( null ); }
@Test( expected = IllegalArgumentException.class ) public void zeroLengthKeysAreIllegalToRemove() { abbreviations.remove( "" ); }