private static SerializableClassDescriptor getSerializableClassDescriptor(final Class<?> subject, final ClassDescriptor superDescriptor) {
return AccessController.doPrivileged(new PrivilegedAction<SerializableClassDescriptor>() {
public SerializableClassDescriptor run() {
final SerializableClassRegistry reg = SerializableClassRegistry.getInstance();
final SerializableClass serializableClass = reg.lookup(subject);
final SerializableField[] fields = serializableClass.getFields();
final boolean hasWriteObject = serializableClass.hasWriteObject();
try {
return new BasicSerializableClassDescriptor(serializableClass, superDescriptor, fields, Externalizable.class.isAssignableFrom(subject) ? Protocol.ID_EXTERNALIZABLE_CLASS : hasWriteObject ? Protocol.ID_WRITE_OBJECT_CLASS : Protocol.ID_SERIALIZABLE_CLASS);
} catch (ClassNotFoundException e) {