public static void ToBinaryStream(DataNode mainNode, BinaryWriter writer, DataNodeBinary.BinaryFormat format)
        {
            writer.Write("DEF2");
            switch (format)
            {
            case DataNodeBinary.BinaryFormat.Simple:
                DataNodeBinary.WriteSimpleFormat(mainNode, writer);
                break;

            case DataNodeBinary.BinaryFormat.SimpleCompresssed:
                DataNodeBinary.WriteCompressedFormat(mainNode, writer);
                break;

            case DataNodeBinary.BinaryFormat.Encrypted:
                DataNodeBinary.WriteEncryptedFormat(mainNode, writer);
                break;

            default:
                throw new ArgumentOutOfRangeException("format");
            }
        }