private void WriteCrossingEdges(IPartition partition, XmlWriter writer)
        {
            writer.WriteStartElement(PartitionSerializerTags.CrossingEdgesTag);

            IPartitionEdge edge;

            foreach (var item in partition.GetExternalEdges())
            {
                writer.WriteStartElement(PartitionSerializerTags.CrossingEdgeTag);

                edge = (IPartitionEdge)item;

                // edge id
                writer.WriteStartElement(PartitionSerializerTags.IdTag);
                edge.Id.Serialize(writer);
                writer.WriteEndElement();

                // id of the 'remote' partition
                writer.WriteStartElement(PartitionSerializerTags.PartitionIdTag);
                edge.GetOtherPartition(partition).Id.Serialize(writer);
                writer.WriteEndElement();

                writer.WriteEndElement();
            }

            writer.WriteEndElement();
        }