internal void Deserialize(IDesignerSerializationManager manager, IDictionary objectState, IList objectNames, bool applyDefaults)
 {
     CodeStatementCollection completeStatements = new CodeStatementCollection();
     this._expressions = new Dictionary<string, ArrayList>();
     this.applyDefaults = applyDefaults;
     foreach (string str in objectNames)
     {
         object[] objArray = (object[]) objectState[str];
         if (objArray != null)
         {
             if (objArray[0] != null)
             {
                 this.PopulateCompleteStatements(objArray[0], str, completeStatements);
             }
             if (objArray[1] != null)
             {
                 this.PopulateCompleteStatements(objArray[1], str, completeStatements);
             }
         }
     }
     CodeStatementCollection targetStatements = new CodeStatementCollection();
     CodeMethodMap map = new CodeMethodMap(targetStatements, null);
     map.Add(completeStatements);
     map.Combine();
     this._statementsTable = new Hashtable();
     CodeDomSerializerBase.FillStatementTable(manager, this._statementsTable, targetStatements);
     ArrayList list = new ArrayList(objectNames);
     foreach (string str2 in this._statementsTable.Keys)
     {
         if (!list.Contains(str2))
         {
             list.Add(str2);
         }
     }
     this._objectState = new Hashtable(objectState.Keys.Count);
     foreach (DictionaryEntry entry in objectState)
     {
         this._objectState.Add(entry.Key, entry.Value);
     }
     ResolveNameEventHandler handler = new ResolveNameEventHandler(this.OnResolveName);
     manager.ResolveName += handler;
     try
     {
         foreach (string str3 in list)
         {
             this.ResolveName(manager, str3, true);
         }
     }
     finally
     {
         this._objectState = null;
         manager.ResolveName -= handler;
     }
 }