static A safeUnstructureAllowingCertainClasses(S s, S... allowedClasses) { final Set allowedClassesSet = asSet(map(allowedClasses, func(S name) -> S { "main$" + name })); O classFinder = func(S name) { if (!allowedClassesSet.contains(name)) fail("Class not allowed to unstructure: " + name); ret classForName(name); }; ret (A) unstructure(s, false, classFinder); }