Record the ClassLoader associated with each class that is serialized to the instant execution cache, and use this to make class lookup on deserialize faster and to deal correctly with multiple classes with the same name. Move some ClassLoader lifecycling from Groovy DSL script compilation to `ClassLoaderScope`, so that the scope takes care of creating and caching the script ClassLoader.
Improve instant execution support for Java serialization Properly handle deserialization of graphs containing a mix of `java.io.Serializable` beans and plain beans by introducing `ReadContext.immediateMode`. In immediate mode, reentrant `read` calls are not suspended for compatibility with the non-suspending semantics of `ObjectInputStream.readObject`.
The downside of non-suspending semantics is the risk of `StackOverflowErrors` caused by deep graphs.