persistable sclass ResolvableLASClass is IResolvableClass { transient ILASClassLoader lasClassLoader; LASClassDef classDef; *(ILASClassLoader *lasClassLoader, LASClassDef *classDef) {} public S resolveToClassName() { ret classDef.finalClassName(); } Class resolvedClass() { ret classDef.resolvedClass; } public Class get aka resolveToClass() { if (resolvedClass() == null) { if (lasClassLoader == null) fail("Need LASClassLoader to define " + classDef.userGivenName); Class resolvedClass = lasClassLoader.defineLASClass(classDef.finalClassName(), -> classDef.toBytes()); // set resolvedClass & init static fields classDef.init(resolvedClass); } ret resolvedClass(); } // This function is very defensive (doesn't resolve anything) toString { if (resolvedClass() != null) ret className(resolvedClass()); try object userGivenName(); if (classDef.classHash_cache != null) ret classDef.finalClassNameWithoutPrefix(); ret or2(userGivenName(), "script-defined class") + " [unresolved]"; } S userGivenName() { ret classDef.userGivenName; } }