sO safeUnstructureAllowingCertainClasses_preferUtils(S s, S... allowedClasses) { new Set allowedClassesSet; fOr (S name : allowedClasses) { allowedClassesSet.add("main$" + name); allowedClassesSet.add("loadableUtils.utils$" + name); } O classFinder = func(S name) { if (!allowedClassesSet.contains(name)) fail("Class not allowed to unstructure: " + name); if (name.startsWith("main$")) { S name2 = "loadableUtils.utils$" + substring(name, 5); Class c = classForNameOpt(name2); if (c != null) ret c; } ret classForName(name); }; ret unstructure(s, false, classFinder); }