private void defaultWriteFields(Object obj, ObjectStreamClass desc) throws IOException {
    desc.checkDefaultSerialize();

    byte[] primVals = new byte[desc.getPrimDataSize()];
    desc.getPrimFieldValues(obj, primVals);
    write(primVals);

    Object[] objVals = new Object[desc.getNumObjFields()];
    desc.getObjFieldValues(obj, objVals);
    for (int i = 0; i < objVals.length; i++) {
      writeObject(objVals[i]);
    }
  }
 /** Creates PutFieldImpl object for writing fields defined in given class descriptor. */
 PutFieldImpl(ObjectStreamClass desc) {
   this.desc = desc;
   primVals = new byte[desc.getPrimDataSize()];
   objVals = new Object[desc.getNumObjFields()];
 }