@Test
public void exerciseCatcher() throws Exception {
TypeRegistry registry = getTypeRegistry("catchers..*");
String a = "catchers.A";
String b = "catchers.B";
ReloadableType rtypeA = registry.addType(a, loadBytesForClass(a));
ReloadableType rtypeB = registry.addType(b, loadBytesForClass(b));
Class<?> clazz = loadit("catchers.Runner", ClassRenamer.rename("catchers.Runner", loadBytesForClass("catchers.Runner")));
assertStartsWith("catchers.B@", runUnguarded(clazz, "runToString").returnValue);
Assert.assertEquals(65, runUnguarded(clazz, "runPublicMethod").returnValue);
Assert.assertEquals(23, runUnguarded(clazz, "runProtectedMethod").returnValue);
rtypeB.loadNewVersion("2", retrieveRename(b, b + "2"));
Assert.assertEquals("hey!", runUnguarded(clazz, "runToString").returnValue);
Assert.assertEquals(66, runUnguarded(clazz, "runPublicMethod").returnValue);
Assert.assertEquals(32, runUnguarded(clazz, "runProtectedMethod").returnValue);