CORDA-2654 Done exposed a small "thinko" in the DJVM's SourceClassLoader.
The DJVM project contains several "bootstrap" classes in the sandbox.* packages that exist solely to allow other sandbox.* classes to compile. These "bootstrap" classes were deliberately excluded from the DJVM's jar at the end of the build because they should have no bearing on any code at runtime.
However, the DJVM CLI was observed trying and failing to load these classes during the DJVM's "bytecode validation" phase.
CORDA-2654 Done therefore restored the "bootstrap" classes to the JAR, but the better fix is for SourceClassLoader not to try to load them in the first place.
The problem happens when ASM ClassRemapper tries to determine whether two sandboxed classes have a common super class. To do this correctly, ASM needs to consider the closed set of classes that exist completely outside the sandbox. These classes all belong to the application's classloader.
ASM must apply the "reverse sandbox mapping" to all sandbox.* classes except for the pinned classes, and then ask the SourceClassLoader to load those. The "bootstrap" classes can then safely be removed from the DJVM jar again.