private static OverwatchMemoryMoment ReadMoment(XElement xElement)
        {
            var moment = new OverwatchMemoryMoment((float)xElement.Attribute("Time"));

            var bufferElements = xElement.Element("Info").Elements();

            if (bufferElements != null)
            {
                IMemorableInfo info;

                foreach (var element in bufferElements)
                {
                    info = ReadInfo(element);
                    moment.Add(info);
                }
            }

            return(moment);
        }
        public static OverwatchMemoryCell ReadCell(XElement xElement)
        {
            int size    = (int)xElement.Attribute("Size");
            var moments = new OverwatchMemoryMoment[size];

            var elements = from element in xElement.Elements()
                           orderby(int) element.Attribute("Index")
                           select element;

            int index = 0;

            foreach (var element in elements)
            {
                moments[index] = ReadMoment(element);
                index++;
            }

            var cell = new OverwatchMemoryCell(moments);

            return(cell);
        }