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);
   }
 }