private static void WriteContentNode(DataNode node, BinaryWriter bw, Dictionary <string, int> header)
 {
     if (node.Nodes != null && node.Nodes.Count > 0)
     {
         throw new Exception("Node can't contain content and subnodes");
     }
     bw.Write((byte)1);
     DataNodeBinary.WriteNodeName(node, bw, header);
     if (header != null)
     {
         DataNodeBinary.WriteCachedString(node.Content, bw, header);
     }
     else
     {
         bw.Write(node.Content);
     }
 }
 private static void WriteSubNodes(DataNode node, BinaryWriter bw, Dictionary <string, int> header)
 {
     if (node.IsList)
     {
         bw.Write((byte)2);
     }
     else
     {
         bw.Write((byte)3);
     }
     DataNodeBinary.WriteNodeName(node, bw, header);
     bw.Write(node.Count);
     for (int i = 0; i < node.Nodes.Count; i++)
     {
         DataNode node2 = node.Nodes[i];
         DataNodeBinary.WriteDataToBinary(node2, bw, header);
     }
 }
 private static void WriteEmptyNode(DataNode node, BinaryWriter bw, Dictionary <string, int> header)
 {
     bw.Write((byte)0);
     DataNodeBinary.WriteNodeName(node, bw, header);
 }