sO unstructureClassFinderAllowingCertainClasses_preferUtils(bool failOnUnknownClass default true, S... allowedClasses) { new Set allowedClassesSet; fOr (S name : allowedClasses) { allowedClassesSet.add("main$" + name); allowedClassesSet.add("loadableUtils.utils$" + name); } ret func(S name) { if (!allowedClassesSet.contains(name)) if (failOnUnknownClass) fail("Class not allowed to unstructure: " + name); else null; if (name.startsWith("main$")) { S name2 = "loadableUtils.utils$" + substring(name, 5); Class c = classForNameOpt(name2); if (c != null) ret c; } ret classForNameOpt(name); }; }