private InteropObjectOutputStream( SerializationInfo info, Object obj, Class cl, ObjectStreamClass desc) throws IOException { dos = new ObjectDataOutputStream(info); if (obj instanceof ObjectStreamClass) { ObjectStreamClass osc = (ObjectStreamClass) obj; if (osc.isProxy()) { writeProxyDesc(osc); } else { writeNonProxyDesc(osc); } } else if (obj instanceof Serializable) { if (desc.isDynamicClass()) { info.SetType(ikvm.runtime.Util.getInstanceTypeFromClass(DynamicProxy.class)); } writeOrdinaryObject(obj, desc); } else { throw new NotSerializableException(cl.getName()); } dos.close(); }