diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
index 2c2050a..897408f 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
@@ -548,7 +548,7 @@
     	else if (!isDoc)
     	{
         	if (getModel().inStaticInitializer)
-        		if (!staticUsedNames.contains(name))
+        		if (!staticUsedNames.contains(name) && !NativeUtils.isJSNative(name))
         			staticUsedNames.add(name);
     		
     		if (!usedNames.contains(name))
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java
index 73d3b80..0f1d0cd 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java
@@ -23,6 +23,7 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
 
 import org.apache.flex.compiler.asdoc.flexjs.ASDocComment;
@@ -149,7 +150,30 @@
         write(ASEmitterTokens.SINGLE_QUOTE);
         write(ASEmitterTokens.PAREN_CLOSE);
         writeNewline(ASEmitterTokens.SEMICOLON);
+        
+        HashMap<String, String> internalClasses = getEmitter().getModel().getInternalClasses();
+        if (internalClasses.size() > 0)
+        {
+        	ArrayList<String> classesInOrder = new ArrayList<String>();
+        	for (String internalClass : internalClasses.keySet())
+        	{
+        		classesInOrder.add(internalClass);
+        	}
+        	Collections.sort(classesInOrder);
+        	for (String internalClass : classesInOrder)
+        	{
+        	       /* goog.provide('x');\n\n */
+                write(JSGoogEmitterTokens.GOOG_PROVIDE);
+                write(ASEmitterTokens.PAREN_OPEN);
+                write(ASEmitterTokens.SINGLE_QUOTE);
+                write(((JSFlexJSEmitter)getEmitter()).formatQualifiedName(internalClass, true));
+                write(ASEmitterTokens.SINGLE_QUOTE);
+                write(ASEmitterTokens.PAREN_CLOSE);
+                writeNewline(ASEmitterTokens.SEMICOLON);
+        	}
+        }
         writeNewline();
+
     }
 
     public void emitContents(IPackageDefinition definition)
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/graph/GoogDepsWriter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/graph/GoogDepsWriter.java
index 7f995d9..b26b632 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/graph/GoogDepsWriter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/graph/GoogDepsWriter.java
@@ -379,6 +379,8 @@
 		{
 	        for (String dep : gd.fileInfo.impls)
 	        {
+	        	if (gd.fileInfo.provides != null &&
+	        			gd.fileInfo.provides.contains(dep)) continue;
 	            addDeps(dep);
 	        }
 		}
@@ -388,6 +390,8 @@
 	        for (String dep : gd.fileInfo.deps)
 	        {
 	        	gd.deps.add(dep);
+	        	if (gd.fileInfo.provides != null &&
+	        			gd.fileInfo.provides.contains(dep)) continue;
 	            addDeps(dep);
 	        }
 		}
@@ -590,8 +594,16 @@
 					        	c = line.indexOf("goog.provide");
 					        	if (c > -1)
 					        	{
-					        		if (fi.googProvideLine == -i)
+					        		if (fi.googProvideLine == -1)
 					        			fi.googProvideLine = i;
+					        		if (numProvides > 0)
+					        		{
+					        			if (fi.provides == null)
+					        				fi.provides = new ArrayList<String>();
+					        			c2 = line.indexOf(")", c);
+					        			String provide = line.substring(c + 14, c2 - 1);
+					        			fi.provides.add(provide);
+					        		}
 					        		numProvides++;
 					        	}
 					        	else
@@ -922,6 +934,7 @@
 		public ArrayList<String> impls;
 		public ArrayList<String> deps;
 		public ArrayList<String> staticDeps;
+		public ArrayList<String> provides;
 		public int constructorLine;
 		public int depsLine;
 		public int suppressLine;
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/utils/NativeUtils.java b/compiler-jx/src/main/java/org/apache/flex/compiler/utils/NativeUtils.java
index 4969a3d..6a493b2 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/utils/NativeUtils.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/utils/NativeUtils.java
@@ -91,6 +91,7 @@
         NaN("NaN"),
         Event("Event"),
         Array("Array"),
+        RegExp("RegExp"),
         Float32Array("Float32Array"),
         Float64Array("Float64Array"),
         Int8Array("Int8Array"),
diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java
index 9e94828..f9afc81 100644
--- a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java
+++ b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java
@@ -434,6 +434,7 @@
         		  " */\n" +
         		  "\n" +
         		  "goog.provide('foo.bar.baz.A');\n" +
+        		  "goog.provide('foo.bar.baz.A.InternalClass');\n" +
         		  "\n" +
         		  "\n" +
         		  "\n" +
@@ -538,6 +539,7 @@
 				" */\n" +
 				"\n" +
 				"goog.provide('foo.bar.baz.A');\n" +
+				"goog.provide('foo.bar.baz.A.internalFunction');\n" +
 				"\n" +
 				"\n" +
 				"\n" +
@@ -606,6 +608,7 @@
 				" */\n" +
 				"\n" +
 				"goog.provide('foo.bar.baz.A');\n" +
+				"goog.provide('foo.bar.baz.A.internalVar');\n" +
 				"\n" +
 				"\n" +
 				"\n" +
@@ -686,6 +689,7 @@
         		  " */\n" +
         		  "\n" +
         		  "goog.provide('foo.bar.baz.A');\n" +
+        		  "goog.provide('foo.bar.baz.A.InternalClass');\n" +
         		  "\n" +
         		  "\n" +
         		  "\n" +
@@ -838,6 +842,7 @@
         		  " */\n" +
         		  "\n" +
         		  "goog.provide('foo.bar.baz.A');\n" +
+        		  "goog.provide('foo.bar.baz.A.InternalClass');\n" +
         		  "\n" +
         		  "\n" +
         		  "\n" +
@@ -995,6 +1000,8 @@
         		  " */\n" +
         		  "\n" +
         		  "goog.provide('foo.bar.baz.A');\n" +
+        		  "goog.provide('foo.bar.baz.A.ITestInterface');\n" +
+        		  "goog.provide('foo.bar.baz.A.InternalClass');\n" +
         		  "\n" +
         		  "\n" +
         		  "\n" +
@@ -1153,6 +1160,7 @@
 				" */\n" +
 				"\n" +
 				"goog.provide('foo.bar.A');\n" +
+				"goog.provide('foo.bar.A.Internal');\n" +
 				"\n" +
 				"\n" +
 				"\n" +
diff --git a/compiler-jx/src/test/resources/flexjs/projects/internal/MainClass_result.js b/compiler-jx/src/test/resources/flexjs/projects/internal/MainClass_result.js
index a96b203..c1f9dd7 100644
--- a/compiler-jx/src/test/resources/flexjs/projects/internal/MainClass_result.js
+++ b/compiler-jx/src/test/resources/flexjs/projects/internal/MainClass_result.js
@@ -20,6 +20,7 @@
  */
 
 goog.provide('MainClass');
+goog.provide('MainClass.InternalClass');
 
 goog.require('OtherClass');
 
diff --git a/compiler/src/main/java/org/apache/flex/compiler/internal/semantics/MethodBodySemanticChecker.java b/compiler/src/main/java/org/apache/flex/compiler/internal/semantics/MethodBodySemanticChecker.java
index 3904823..a20d4de 100644
--- a/compiler/src/main/java/org/apache/flex/compiler/internal/semantics/MethodBodySemanticChecker.java
+++ b/compiler/src/main/java/org/apache/flex/compiler/internal/semantics/MethodBodySemanticChecker.java
@@ -828,11 +828,12 @@
         {
             if ( utils.isInaccessible(iNode, method_binding) )
             {
-                addProblem(new InaccessibleMethodReferenceProblem( 
-                    roundUpUsualSuspects(method_binding, iNode), 
-                    method_binding.getName().getBaseName(),
-                    utils.getTypeOfStem(iNode)
-                ));
+            	if (!method_binding.getName().getBaseName().equals("toString"))
+	                addProblem(new InaccessibleMethodReferenceProblem( 
+	                    roundUpUsualSuspects(method_binding, iNode), 
+	                    method_binding.getName().getBaseName(),
+	                    utils.getTypeOfStem(iNode)
+	                ));
             }
             else if ( SemanticUtils.hasExplicitStem(iNode) && utils.hasUnderlyingType(iNode) )
             {
diff --git a/compiler/src/main/java/org/apache/flex/compiler/internal/tree/as/ExpressionNodeBase.java b/compiler/src/main/java/org/apache/flex/compiler/internal/tree/as/ExpressionNodeBase.java
index 6c514b7..b54c1f0 100644
--- a/compiler/src/main/java/org/apache/flex/compiler/internal/tree/as/ExpressionNodeBase.java
+++ b/compiler/src/main/java/org/apache/flex/compiler/internal/tree/as/ExpressionNodeBase.java
@@ -21,6 +21,7 @@
 
 import org.apache.flex.abc.semantics.Name;
 import org.apache.flex.compiler.common.DependencyType;
+import org.apache.flex.compiler.constants.IASLanguageConstants;
 import org.apache.flex.compiler.definitions.IDefinition;
 import org.apache.flex.compiler.definitions.ITypeDefinition;
 import org.apache.flex.compiler.definitions.references.INamespaceReference;
@@ -149,6 +150,11 @@
         if (type != null)
             isDynamic = type.isDynamic();
 
+        if (!isDynamic)
+        {
+        	String qName = type.getQualifiedName();
+        	isDynamic = qName.equals(IASLanguageConstants.XML) || qName.equals(IASLanguageConstants.XMLList);
+        }
         return isDynamic;
     }
     
