 
         // If a bundle with that locale and bundle name already exists
         // in the ResourceManager, don't replace it.
-        if (getResourceBundle(locale, bundleName))
-            return;
+        // If we want to install a  weakReferenceDictionary then don't rely on
+        // a weak reference dictionary because it may go way when the 
+        // application goes away.
+        var resourceBundle:IResourceBundle = getResourceBundleInternal(locale,
+                                                    bundleName, 
+                                                    useWeakReference);
+        if (resourceBundle)
+            return resourceBundle;
         
         // The autogenerated resource bundle classes produced by the
         // mxmlc and compc compilers have names that incorporate

            if (!bundleMap)
                continue;
            
            var bundle:IResourceBundle = bundleMap[bundleName];
            if (!bundle)
                continue;
                
            if (resourceName in bundle.content)
                return bundle;
        }


        }
        
        // Create an instance of the bundle class.
        resourceBundle = ResourceBundle(new bundleClass());

        // In case we just created a ResourceBundle from a Flex 2 SWC,
        // set its locale and bundleName, because the old constructor
        // didn't used to do this.
        ResourceBundle(resourceBundle)._locale = locale;
        ResourceBundle(resourceBundle)._bundleName = bundleName;
                
        // Add that resource bundle instance to the ResourceManager.
        addResourceBundle(resourceBundle, useWeakReference);
        
        return resourceBundle;
    }
    
    // FocusEvent is used just so we can add a relatedObject
	private function newChildApplicationHandler(event:FocusEvent):void
	{
		var info:Object = event.relatedObject["info"]();
        var weakReference:Boolean = false;
        if ("_resourceBundles" in event.relatedObject)
            weakReference = true;
        
        // If the application has a "_resourceBundles" object for us to put
        // the bundles into then we will. Otherwise have the ResourceManager
        // create a hard reference to the resources.
        var bundles:Array = processInfo(info, weakReference);
        if (weakReference)
            event.relatedObject["_resourceBundles"] = bundles;
    }
		
    private function processInfo(info:Object, useWeakReference:Boolean):Array
    {
		var compiledLocales:Array = info["compiledLocales"];

