//static readonly ListOfIntSerializer ChildContentIdsSerializer = new ListOfIntSerializer();

        public ContentNodeKit ReadFrom(Stream stream)
        {
            var kit = new ContentNodeKit
            {
                Node = new ContentNode(
                    PrimitiveSerializer.Int32.ReadFrom(stream),    // id
                    PrimitiveSerializer.Guid.ReadFrom(stream),     // uid
                    PrimitiveSerializer.Int32.ReadFrom(stream),    // level
                    PrimitiveSerializer.String.ReadFrom(stream),   // path
                    PrimitiveSerializer.Int32.ReadFrom(stream),    // sort order
                    PrimitiveSerializer.Int32.ReadFrom(stream),    // parent id
                    PrimitiveSerializer.DateTime.ReadFrom(stream), // date created
                    PrimitiveSerializer.Int32.ReadFrom(stream)     // creator id
                    ),
                ContentTypeId = PrimitiveSerializer.Int32.ReadFrom(stream)
            };
            var hasDraft = PrimitiveSerializer.Boolean.ReadFrom(stream);

            if (hasDraft)
            {
                kit.DraftData = _contentDataSerializer.ReadFrom(stream);
            }
            var hasPublished = PrimitiveSerializer.Boolean.ReadFrom(stream);

            if (hasPublished)
            {
                kit.PublishedData = _contentDataSerializer.ReadFrom(stream);
            }
            return(kit);
        }
        //static readonly ListOfIntSerializer ChildContentIdsSerializer = new ListOfIntSerializer();

        public ContentNodeKit ReadFrom(Stream stream)
        {
            var contentNode = new ContentNode(
                PrimitiveSerializer.Int32.ReadFrom(stream),    // id
                PrimitiveSerializer.Guid.ReadFrom(stream),     // uid
                PrimitiveSerializer.Int32.ReadFrom(stream),    // level
                PrimitiveSerializer.String.ReadFrom(stream),   // path
                PrimitiveSerializer.Int32.ReadFrom(stream),    // sort order
                PrimitiveSerializer.Int32.ReadFrom(stream),    // parent id
                PrimitiveSerializer.DateTime.ReadFrom(stream), // date created
                PrimitiveSerializer.Int32.ReadFrom(stream)     // creator id
                );

            int         contentTypeId = PrimitiveSerializer.Int32.ReadFrom(stream);
            var         hasDraft      = PrimitiveSerializer.Boolean.ReadFrom(stream);
            ContentData draftData     = null;
            ContentData publishedData = null;

            if (hasDraft)
            {
                draftData = _contentDataSerializer.ReadFrom(stream);
            }
            var hasPublished = PrimitiveSerializer.Boolean.ReadFrom(stream);

            if (hasPublished)
            {
                publishedData = _contentDataSerializer.ReadFrom(stream);
            }
            var kit = new ContentNodeKit(
                contentNode,
                contentTypeId,
                draftData,
                publishedData);

            return(kit);
        }