 - Run while adding new referenced class.
 -- Running sayHi before redefinition
Hello from TestClass sayHi function
Goodbye from TestClass!
 -- Adding NewClass to classloader!
 -- Redefine the TestClass
 -- call TestClass again, now with NewClass refs
Hello again from TestClass sayHi function
Hello from NewClass sayHi function
Nearby stack:
	private static native art.StackTrace$StackFrameData[] art.StackTrace.nativeGetStackTrace(java.lang.Thread)(line: -1)
	public static art.StackTrace$StackFrameData[] art.StackTrace.GetStackTrace(java.lang.Thread)(line: 61)
	static void foobar.NewClass.sayHi() throws java.lang.Exception(line: 27)
	public static void foobar.TestClass.sayHi()(line: 5)
 - Run without adding new referenced class.
 -- Running sayHi before redefinition
Hello from TestClass sayHi function
Goodbye from TestClass!
 -- Redefine the TestClass
 -- call TestClass again, now with NewClass refs
Hello again from TestClass sayHi function
 -- Exception caught when running test without new class added! java.lang.NoClassDefFoundError
 --- java.lang.NoClassDefFoundError At foobar.TestClass.sayHi(TestClass.java:5)
