private void writeOrdinaryObject(Object obj, ObjectStreamClass desc) throws IOException { desc.checkSerialize(); writeObject(desc); if (desc.isExternalizable() && !desc.isProxy()) { writeExternalData((Externalizable) obj); } else { writeSerialData(obj, desc); } }