public XElement WriteObject(IEnumerable <ElementNode> value)
        {
            XmlElementNodeSerializer elementNodeSerializer = new XmlElementNodeSerializer(_elements);
            IEnumerable <XElement>   elements = value.Select(elementNodeSerializer.WriteObject);

            return(new XElement(ELEMENT_NODES, elements));
        }
        public IEnumerable <ElementNode> ReadObject(XElement element)
        {
            // Any references to non-existent elements will be pruned by this operation.
            List <ElementNode> elementNodes = new List <ElementNode>();

            XElement parentNode = element.Element(ELEMENT_NODES);

            if (parentNode != null)
            {
                XmlElementNodeSerializer  elementNodeSerializer = new XmlElementNodeSerializer(_elements);
                IEnumerable <ElementNode> childNodes            = parentNode.Elements().Select(elementNodeSerializer.ReadObject).NotNull();
                elementNodes.AddRange(childNodes);
            }

            return(elementNodes);
        }