@Test(expected = ConversionException.class)
 public void decodingThrowingConstructorThrows() {
   final StringToClassInstance<? extends Interface> converter =
       new StringToClassInstance<ThrowingStringConstructorClass>(
           ThrowingStringConstructorClass.class);
   converter.decode("foo");
 }
 @Test
 public void decodingPreservesValue() {
   final StringToClassInstance<? extends Interface> converter =
       new StringToClassInstance<StringConstructorClass>(StringConstructorClass.class);
   for (final String s : new String[] {"foo", "bar", "", "baz", "quux"}) {
     assertEquals(s, converter.decode(s).getValue());
   }
 }
 @Test(expected = NullPointerException.class)
 public void decodingNullThrows() {
   final StringToClassInstance<? extends Interface> converter =
       new StringToClassInstance<StringConstructorClass>(StringConstructorClass.class);
   converter.decode(null);
 }