         if (!localeMap[locale])
             localeMap[locale] = {};
             
-        localeMap[locale][bundleName] = resourceBundle;
+        if (useWeakReference)
+        {
+            if (!bundleDictionary)
+            {
+                bundleDictionary = new Dictionary(true);
+            }
+            
+            bundleDictionary[resourceBundle] = locale + bundleName;
+            localeMap[locale][bundleName] = bundleDictionary;
+        }
+        else
+        {
+            localeMap[locale][bundleName] = resourceBundle;
+        }
     }
     
     /**

     *  @playerversion AIR 1.1
     *  @productversion Flex 3
     */
    public function addResourceBundle(resourceBundle:IResourceBundle):void
    {
        var locale:String = resourceBundle.locale;
        var bundleName:String = resourceBundle.bundleName;

     */
    private function installCompiledResourceBundle(
                                applicationDomain:ApplicationDomain,
                                locale:String, bundleName:String,
                                useWeakReference:Boolean = false):IResourceBundle
    {
        var packageName:String = null;
        var localName:String = bundleName;
