code: public void writeExternal(ObjectOutput out) throws IOException {
  
  		out.writeLong(calleeCSeq);
  		out.writeLong(callerCSeq);
  		out.writeUTF(calleeContact.toString());
  		out.writeUTF(callerContact.toString());
  
  		out.writeInt(calleeRouteSet.size());
  		Iterator<javax.sip.address.Address> i = calleeRouteSet.iterator();
      	while (i.hasNext()) {
      		javax.sip.address.Address a = i.next();
      		out.writeUTF(a.toString());
      	}
  
      	out.writeInt(callerRouteSet.size());
  		i = callerRouteSet.iterator();
      	while (i.hasNext()) {
      		javax.sip.address.Address a = i.next();
      		out.writeUTF(a.toString());
      	}
  
      	out.writeUTF(toHeader.getAddress().toString());
      	out.writeUTF(toHeader.getTag());
      	out.writeUTF(fromHeader.getAddress().toString());
  		out.writeUTF(fromHeader.getTag());
  		out.writeUTF(callId);
  	}
docs: /*
  (non-Javadoc)
  @see java.io.Externalizable#writeExternal(java.io.ObjectOutput)