sbool isPersistableClass(Class c) { S name = c.getName(); if (isSubtypeOf(c, TransientObject)) false; if (isAnonymousClassName(name)) false; if (isBoxedType(c)) true; if (isArrayType(c)) true; if (c == Class.class || c == S || c == File || c == Color.class) true; if (name.startsWith("java.util.Collections$Synchronized")) true; if (hasThisDollarFields(c)) ret hasSingleArgumentConstructor(c); else ret getDefaultConstructor(c) != null; }