/// <summary>
        /// Loads localization data from the specified XML stream. Loaded strings
        /// will overwrite any previously loaded strings that share the same key.
        /// </summary>
        /// <param name="stream">The <see cref="Stream"/> from which to load localization data.</param>
        public void LoadFromXmlStream(Stream stream)
        {
            Contract.Require(stream, nameof(stream));

            var xml      = XDocument.Load(stream);
            var elements = xml.Element("LocalizedStrings").Elements("String");
            var results  = new Dictionary <String, LocalizedString>();

            foreach (var element in elements)
            {
                var key = LocalizedString.CreateFromXml(element, results);
                foreach (var result in results)
                {
                    if (!strings.ContainsKey(result.Key))
                    {
                        strings[result.Key] = new Dictionary <String, LocalizedString>();
                    }
                    strings[result.Key][key] = result.Value;
                }
            }
        }