     public function saveViewData():Object
     {
         var iconData:Object = icon;
-        
-        if (iconData is MultiDPIBitmapSource)
-            iconData = MultiDPIBitmapSource(iconData).getMultiSource();
-        
+
         if (iconData is Class)
-            return {label:label, iconClassName:getQualifiedClassName(iconData)};
-        if (iconData is String)
+            return {label:label, iconClassName:getQualifiedClassName(iconData),
+				multiSource:(iconData is MultiDPIBitmapSource)};
+        
+		if (iconData is String)
             return {label:label, iconStringName: iconData};
         
         return {label:label};

     *  Serializes all data related to
     *  the navigator's children into an object that can be saved
     *  by the persistence manager.  
     *  This returned object is passed to the <code>restoreViewData()</code> 
     *  method when the navigator is reinstantiated.
     * 
     *  @return The object that represents the navigators state

     */
    public function loadViewData(value:Object):void
    {
		var iconClassName:String;
		
        label = value.label;
        
		if ("iconClassName" in value) {
			iconClassName =  value.iconClassName;
			if (value.multiSource)
				icon = MultiDPIBitmapSource(getDefinitionByName(iconClassName)).getMultiSource();
			else 
				icon = getDefinitionByName(iconClassName);
		}
		else if ("iconStringName" in value) {
            icon = value.iconStringName;
		}
        
        // TODO (chiedozi): This is not module safe because of its use of 
        // getDefinitionByName.  Should use systemManager to do this. (SDK-27424)
