public static <X> Class<X> gen(Class<X> cl) { if (Modifier.isFinal(cl.getModifiers())) return cl; if (HandleAware.class.isAssignableFrom(cl)) return cl; SerializationAdapter<X> gen = new SerializationAdapter<X>(cl); Class<X> proxyClass = gen.generateProxy(); return proxyClass; }