public LightWeightDictionary FillObjectArray(XmlNode child)
 {
     LightWeightDictionary dict = new LightWeightDictionary();
     foreach (XmlNode childofOA in child.ChildNodes)
     {
         if (childofOA.ChildNodes.Count > 0 && childofOA.ChildNodes[0].Name == "Array")
         {
             List<object> al = new List<object>();
             foreach (XmlNode childofOA2 in childofOA.ChildNodes[0].ChildNodes)
             {
                 if (childofOA2.Name == "Array")
                 {
                     AddArrayData(childofOA2, al);
                 }
                 else if (childofOA2.ChildNodes.Count == 1)
                 {
                     if (childofOA2.ChildNodes[0].Name == "ObjectArray")
                     {
                         al.Add(FillObjectArray(childofOA2.ChildNodes[0]));
                     }
                     else
                     {
                         al.Add(childofOA2.InnerXml);
                     }
                 }
             }
             dict.Add(childofOA.Name, al);
         }
         else
         {
             dict.Add(childofOA.Name, childofOA.InnerXml);
         }
     }
     return dict;
 }
 public Session()
 {
     ID = Guid.NewGuid();
     Data = new LightWeightDictionary();
 }
 public string recurseDictionary(LightWeightDictionary dict)
 {
     StringBuilder str = new StringBuilder("[ObjectArray]");
     foreach (string key in dict.GetAllKeys())
     {
         str.Append("[").Append(key).Append("]");
         object dictvalue = dict.GetValue(key);
         if (dictvalue.GetType().IsGenericType && dictvalue.GetType().GetGenericTypeDefinition() == typeof(List<>))
         {
             str.Append(recurseArrayList(dictvalue as List<object>));
         }
         else if (dictvalue is LightWeightDictionary)
         {
             str.Append(recurseDictionary(dictvalue as LightWeightDictionary));
         }
         else
         {
             str.Append(dictvalue);
         }
         str.Append("[/").Append(key).Append("]");
     }
     str.Append("[/ObjectArray]");
     return str.ToString();
 }