private static DataNode ReadFromBinary(BinaryReader br, List <string> header)
        {
            byte b = br.ReadByte();

            switch (b)
            {
            case 0:
                return(DataNodeBinary.ReadEmptyNode(br, header));

            case 1:
                return(DataNodeBinary.ReadContentNode(br, header));

            case 2:
                return(DataNodeBinary.ReadSubNodes(br, true, header));

            case 3:
                return(DataNodeBinary.ReadSubNodes(br, false, header));

            case 5:
                throw new Exception("Unknown node type " + b);
            }
            throw new Exception("Unknown node type " + b);
        }