/// <summary>
        /// Serializes a dictionary by converting it to two lists
        /// </summary>
        /// <typeparam name="TKey"></typeparam>
        /// <typeparam name="TValue"></typeparam>
        /// <param name="dict"></param>
        /// <param name="stream">An opened stream. The stream must also be manually closed</param>
        public static void Serialize <TKey, TValue>(this Dictionary <TKey, TValue> dict, ref StreamWriter stream)
        {
            SerializeDictObject <TKey, TValue> serializeObject = new SerializeDictObject <TKey, TValue>();

            foreach (KeyValuePair <TKey, TValue> kvp in dict)
            {
                serializeObject.Keys.Add(kvp.Key);
                serializeObject.Values.Add(kvp.Value);
            }

            XmlSerializer serializer = new XmlSerializer(serializeObject.GetType());

            serializer.Serialize(stream, serializeObject);
        }
        /// <summary>
        /// DeSerializes a dictionary by converting it to two lists
        /// </summary>
        /// <typeparam name="TKey"></typeparam>
        /// <typeparam name="TValue"></typeparam>
        /// <param name="dict"></param>
        /// <param name="stream">An opened stream. The stream must also be manually closed</param>
        /// <returns>The deserialized dictionary</returns>
        public static Dictionary <TKey, TValue> DeSerialize <TKey, TValue>(this Dictionary <TKey, TValue> dict, ref StreamReader stream)
        {
            SerializeDictObject <TKey, TValue> serializeObject = new SerializeDictObject <TKey, TValue>();
            XmlSerializer             serializer = new XmlSerializer(serializeObject.GetType());
            Dictionary <TKey, TValue> result     = new Dictionary <TKey, TValue>();

            serializeObject = (SerializeDictObject <TKey, TValue>)serializer.Deserialize(stream);

            for (int i = 0; i < serializeObject.Keys.Count; i++)
            {
                result.Add(serializeObject.Keys[i], serializeObject.Values[i]);
            }

            return(result);
        }