1 - Run while adding new referenced class. 2 -- Running sayHi before redefinition 3Hello from TestClass sayHi function 4Goodbye from TestClass! 5 -- Adding NewClass to classloader! 6 -- Redefine the TestClass 7 -- call TestClass again, now with NewClass refs 8Hello again from TestClass sayHi function 9Hello from NewClass sayHi function 10Nearby stack: 11 private static native art.StackTrace$StackFrameData[] art.StackTrace.nativeGetStackTrace(java.lang.Thread)(line: -1) 12 public static art.StackTrace$StackFrameData[] art.StackTrace.GetStackTrace(java.lang.Thread)(line: 61) 13 static void foobar.NewClass.sayHi() throws java.lang.Exception(line: 27) 14 public static void foobar.TestClass.sayHi()(line: 5) 15 - Run without adding new referenced class. 16 -- Running sayHi before redefinition 17Hello from TestClass sayHi function 18Goodbye from TestClass! 19 -- Redefine the TestClass 20 -- call TestClass again, now with NewClass refs 21Hello again from TestClass sayHi function 22 -- Exception caught when running test without new class added! java.lang.NoClassDefFoundError 23 --- java.lang.NoClassDefFoundError At foobar.TestClass.sayHi(TestClass.java:5) 24