@Test public void mismatchedTypes() throws Exception {

    try {
        instantiate(I.class, map("value", 99));
        fail();
    } catch (Exception x) {
        String message = x.getMessage();
        assertTrue(message, message.contains(I.class.getName()));
        assertTrue(message, message.contains("value"));
        assertTrue(message, message.contains("java.lang.String"));
        assertTrue(message, message.contains("java.lang.Integer"));
    }
}