code: private void writeObject(ObjectOutputStream oos) throws IOException
  	{
  		boolean origSer = serializing;
  		serializing = true;
  
  		try
  		{
  			oos.defaultWriteObject();
  
  			bcsPreSerializationHook(oos);
  
  			if (this == getBeanContextPeer())
  			{
  				writeChildren(oos);
  			}
  
  			synchronized (bcmListeners)
  			{
  				serialize(oos, bcmListeners);
  			}
  		}
  		finally
  		{
  			serializing = origSer;
  		}
  	}
docs: The implementation goes through following steps:
  <p>
  <ol>
  <li>Writes out non-transient properties by calling <code>defaultWriteObject()</code>, especially the <code>serializable</code> indicating the number of
  serializable children.</li>
  <li>Calls <code>bcsPreSerializationHook()</code>.</li>
  <li>Writes out children by calling <code>writeChildren()</code> if this context works standalone. Otherwise it is the peer's responsibility to call
  <code>writeChildren()</code> after this object is serialized.</li>
  <li>Writes out serializable membership listeners.</li>
  </ol>
  </p>
  
  @param oos
  the object output stream
  @throws IOException
  if I/O exception occurs