code: public void readExternal(ObjectInput in) throws IOException,
  			ClassNotFoundException {
  		if(logger.isDebugEnabled()) {
              logger.debug("readExternal");
          }
  
  		super.readExternal(in);
  		String messageString = in.readUTF();
  		try {
  			message = SipFactoryImpl.messageFactory.createRequest(messageString);
  		} catch (ParseException e) {
  			throw new IllegalArgumentException("Message " + messageString + " previously serialized could not be reparsed", e);
  		}
  		boolean isLinkedRequestSerialized = in.readBoolean();
  		if (isLinkedRequestSerialized) {
  			linkedRequest = (SipServletRequestImpl) in.readObject();
  		}
  		createDialog = in.readBoolean();
  		String routingDirectiveString = in.readUTF();
  		if(!routingDirectiveString.equals("")) {
  			routingDirective = SipApplicationRoutingDirective.valueOf(routingDirectiveString);
  		}
  		String routingStateString = in.readUTF();
  		if(!routingStateString.equals("")) {
  			routingState = RoutingState.valueOf(routingStateString);
  		}
  		boolean isRoutingRegionSet = in.readBoolean();
  		if(isRoutingRegionSet) {
  			routingRegion = (SipApplicationRoutingRegion) in.readObject();
  		}
  		isInitial = in.readBoolean();
  		if(logger.isDebugEnabled()) {
              logger.debug("readExternal - isInitial=" + isInitial);
          }
  		isFinalResponseGenerated = in.readBoolean();
  		is1xxResponseGenerated = in.readBoolean();
  	}
docs: /*
  (non-Javadoc)
  @see java.io.Externalizable#readExternal(java.io.ObjectInput)