You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by jo...@apache.org on 2020/04/29 15:55:23 UTC

[royale-compiler] branch develop updated: goog.exportSymbol() is added for classes/interfaces during a custom Google Closure compiler pass instead of by the Royale emitter in debug builds

This is an automated email from the ASF dual-hosted git repository.

joshtynjala pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git


The following commit(s) were added to refs/heads/develop by this push:
     new c1544dc  goog.exportSymbol() is added for classes/interfaces during a custom Google Closure compiler pass instead of by the Royale emitter in debug builds
c1544dc is described below

commit c1544dc202c01ce8214a97f4a364d6c3282cd8f6
Author: Josh Tynjala <jo...@apache.org>
AuthorDate: Tue Apr 7 09:39:02 2020 -0700

    goog.exportSymbol() is added for classes/interfaces during a custom Google Closure compiler pass instead of by the Royale emitter in debug builds
---
 .../javascript/jscomp/RoyaleClosurePassConfig.java |  44 ++++-
 .../apache/royale/compiler/clients/MXMLJSC.java    |   4 +
 .../royale/compiler/clients/MXMLJSCNative.java     |   5 +
 .../royale/compiler/clients/MXMLJSCNode.java       |   6 +
 .../royale/compiler/clients/MXMLJSCRoyale.java     |   4 +
 .../compiler/clients/MXMLJSCRoyaleCordova.java     |   5 +
 .../compiler/codegen/js/goog/IJSGoogPublisher.java |   1 +
 .../internal/codegen/js/jx/ClassEmitter.java       |  22 ---
 .../internal/codegen/js/jx/InterfaceEmitter.java   |  22 +--
 .../codegen/js/royale/JSRoyaleDocEmitter.java      |  16 +-
 .../codegen/mxml/royale/MXMLRoyaleEmitter.java     |  15 --
 .../codegen/mxml/royale/MXMLRoyalePublisher.java   |  13 ++
 .../apache/royale/compiler/utils/ClosureUtils.java | 156 ++++++++++++++---
 .../compiler/utils/JSClosureCompilerWrapper.java   |  10 +-
 .../js/royale/TestRoyaleAccessorMembers.java       |  25 ++-
 .../codegen/js/royale/TestRoyaleAccessors.java     |  20 +--
 .../codegen/js/royale/TestRoyaleClass.java         | 112 ++++++------
 .../codegen/js/royale/TestRoyaleEmitter.java       |  24 ---
 .../codegen/js/royale/TestRoyaleExpressions.java   |  18 +-
 .../codegen/js/royale/TestRoyaleFieldMembers.java  |  20 +--
 .../codegen/js/royale/TestRoyaleInterface.java     |  14 +-
 .../codegen/js/royale/TestRoyaleMethodMembers.java |  16 +-
 .../codegen/js/royale/TestRoyalePackage.java       | 101 +----------
 .../codegen/js/royale/TestRoyaleStatements.java    |   2 +-
 .../mxml/royale/TestRoyaleMXMLApplication.java     |  93 +---------
 .../codegen/mxml/royale/TestRoyaleMXMLScript.java  | 188 ++++++++-------------
 .../mxml/sourcemaps/TestSourceMapMXMLEvents.java   |   2 +-
 .../mxml/sourcemaps/TestSourceMapMXMLScript.java   |  14 +-
 .../resources/royale/files/LocalFunction_result.js |   6 -
 .../resources/royale/files/MyInitialView_result.js |   5 -
 .../royale/files/RoyaleTest_again_result.js        |   5 -
 .../files/controllers/MyController_result.js       |   6 -
 .../royale/files/models/MyModel_result.js          |   6 -
 .../royale/files/wildcard_import_result.js         |   5 -
 .../royale/projects/bad_overrides/Test_result.js   |   6 -
 .../projects/bad_overrides/classes/A_result.js     |   6 -
 .../projects/bad_overrides/classes/B_result.js     |   6 -
 .../projects/bad_overrides/classes/C_result.js     |   6 -
 .../projects/bad_overrides/interfaces/IA_result.js |   6 -
 .../projects/bad_overrides/interfaces/IB_result.js |   6 -
 .../projects/bad_overrides/interfaces/IC_result.js |   6 -
 .../royale/projects/circular/Base_result.js        |   6 -
 .../royale/projects/circular/Super_result.js       |   6 -
 .../royale/projects/circular_proto/A_result.js     |   6 -
 .../royale/projects/circular_proto/B_result.js     |   6 -
 .../royale/projects/circular_proto/C_result.js     |   6 -
 .../royale/projects/circular_proto/D_result.js     |   6 -
 .../royale/projects/circular_proto/E_result.js     |   6 -
 .../royale/projects/circular_proto/F_result.js     |   6 -
 .../royale/projects/interfaces/Test_result.js      |   6 -
 .../royale/projects/interfaces/classes/A_result.js |   6 -
 .../royale/projects/interfaces/classes/B_result.js |   6 -
 .../royale/projects/interfaces/classes/C_result.js |   6 -
 .../projects/interfaces/interfaces/IA_result.js    |   6 -
 .../projects/interfaces/interfaces/IC_result.js    |   6 -
 .../projects/interfaces/interfaces/ID_result.js    |   6 -
 .../projects/interfaces/interfaces/IE_result.js    |   6 -
 .../royale/projects/internal/MainClass_result.js   |  12 --
 .../royale/projects/internal/OtherClass_result.js  |   6 -
 .../royale/projects/overrides/Test_result.js       |   6 -
 .../royale/projects/overrides/classes/A_result.js  |   6 -
 .../royale/projects/overrides/classes/B_result.js  |   6 -
 .../royale/projects/overrides/classes/C_result.js  |   6 -
 .../projects/overrides/interfaces/IA_result.js     |   6 -
 .../projects/overrides/interfaces/IB_result.js     |   6 -
 .../projects/overrides/interfaces/IC_result.js     |   6 -
 .../DifferentPackageAsConflict_result.js           |   6 -
 .../Event_result.js                                |   6 -
 .../mypackage/TestClass_result.js                  |   6 -
 .../otherpackage/Event_result.js                   |   6 -
 .../Event_result.js                                |   6 -
 .../NoConflictNoWindow_result.js                   |   6 -
 .../mypackage/TestClass_result.js                  |   6 -
 .../Event_result.js                                |   6 -
 .../NoConflictUseWindow_result.js                  |   6 -
 .../mypackage/TestClass_result.js                  |   6 -
 .../Event_result.js                                |   6 -
 .../SamePackageAsConflict_result.js                |   6 -
 .../mypackage/Event_result.js                      |   6 -
 .../mypackage/TestClass_result.js                  |   6 -
 .../package_conflicts_use_window/Event_result.js   |   6 -
 .../UseWindow_result.js                            |   6 -
 .../mypackage/TestClass_result.js                  |   6 -
 .../otherpackage/Event_result.js                   |   6 -
 .../resources/royale/projects/super/Base_result.js |   6 -
 .../royale/projects/super/Super_result.js          |   6 -
 .../projects/xml_requires/XMLRequire_result.js     |   6 -
 87 files changed, 420 insertions(+), 909 deletions(-)

diff --git a/compiler-jx/src/main/java/com/google/javascript/jscomp/RoyaleClosurePassConfig.java b/compiler-jx/src/main/java/com/google/javascript/jscomp/RoyaleClosurePassConfig.java
index 449918c..a8665a1 100644
--- a/compiler-jx/src/main/java/com/google/javascript/jscomp/RoyaleClosurePassConfig.java
+++ b/compiler-jx/src/main/java/com/google/javascript/jscomp/RoyaleClosurePassConfig.java
@@ -135,8 +135,10 @@ public final class RoyaleClosurePassConfig extends PassConfig {
   private File varRenameMapFile;
 
   private Set<String> propertyNamesToKeep;
+
+  private Set<String> extraSymbolNamesToExport;
   
-  public RoyaleClosurePassConfig(CompilerOptions options, String sourceFileName, File varRenameMapFile, Set<String> propertyNamesToKeep) {
+  public RoyaleClosurePassConfig(CompilerOptions options, String sourceFileName, File varRenameMapFile, Set<String> propertyNamesToKeep, Set<String> extraSymbolNamesToExport) {
     super(options);
 
     // The current approach to protecting "hidden" side-effects is to
@@ -147,6 +149,7 @@ public final class RoyaleClosurePassConfig extends PassConfig {
     this.varRenameMapFile = varRenameMapFile;
     this.sourceFileName = sourceFileName;
     this.propertyNamesToKeep = propertyNamesToKeep;
+    this.extraSymbolNamesToExport = extraSymbolNamesToExport;
   }
 
   GlobalNamespace getGlobalNamespace() {
@@ -363,6 +366,10 @@ public final class RoyaleClosurePassConfig extends PassConfig {
       checks.add(polymerPass);
     }
 
+    if (extraSymbolNamesToExport != null) {
+      checks.add(extraSymbolsPass);
+    }
+
     if (options.checkSuspiciousCode
         || options.enables(DiagnosticGroups.GLOBAL_THIS)
         || options.enables(DiagnosticGroups.DEBUGGER_STATEMENT_PRESENT)) {
@@ -1264,6 +1271,41 @@ public final class RoyaleClosurePassConfig extends PassConfig {
           return ES_NEXT;
         }
       };
+  
+  private final PassFactory extraSymbolsPass = 
+    new PassFactory("extra-symbols-to-export", true) {
+      @Override
+      protected CompilerPass create(final AbstractCompiler compiler) {
+        return new CompilerPass() {
+          @Override
+          public void process(Node externs, Node root) {
+            Node scriptNode = compiler.getScriptNode(sourceFileName);
+            for(String nameToExport : extraSymbolNamesToExport)
+            {
+              Node exportCallTarget = NodeUtil.newQName(compiler,
+                  compiler.getCodingConvention().getExportSymbolFunction(), scriptNode, nameToExport);
+              Node call = IR.call(exportCallTarget);
+              if (exportCallTarget.isName()) {
+                call.putBooleanProp(Node.FREE_CALL, true);
+              }
+              call.addChildToBack(IR.string(nameToExport));
+              call.addChildToBack(NodeUtil.newQName(compiler,
+              nameToExport, scriptNode, nameToExport));
+
+              Node expression = IR.exprResult(call);
+
+              scriptNode.addChildToBack(expression);
+              compiler.reportChangeToEnclosingScope(expression);
+            }
+          }
+        };
+      }
+
+      @Override
+      protected FeatureSet featureSet() {
+        return ES_NEXT;
+      }
+    };
 
     private final PassFactory keepPropertyNamesPass = 
         new PassFactory("keep-property-names", true) {
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSC.java b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSC.java
index 748c169..1b86589 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSC.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSC.java
@@ -534,6 +534,8 @@ public class MXMLJSC implements JSCompilerEntryPoint, ProblemQueryProvider,
                 }
 
                 Set<String> closurePropNamesToKeep = new HashSet<String>();
+                //use a LinkedHashSet because the order of the exported names matters -JT
+                LinkedHashSet<String> closureSymbolNamesToExport = new LinkedHashSet<String>();
                 jsPublisher = (IJSGoogPublisher) project.getBackend().createPublisher(
                         project, errors, config);
 
@@ -620,12 +622,14 @@ public class MXMLJSC implements JSCompilerEntryPoint, ProblemQueryProvider,
 	                    	}
 	                    }
                         ClosureUtils.collectPropertyNamesToKeep(cu, project, closurePropNamesToKeep);
+                        ClosureUtils.collectSymbolNamesToExport(cu, project, closureSymbolNamesToExport);
 	                }
                 }
                 
                 if (jsPublisher != null)
                 {
                     jsPublisher.setClosurePropertyNamesToKeep(closurePropNamesToKeep);
+                    jsPublisher.setClosureSymbolNamesToExport(closureSymbolNamesToExport);
                     compilationSuccess = jsPublisher.publish(problems);
                 }
                 else
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCNative.java b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCNative.java
index 9b54b1e..1a92629 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCNative.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCNative.java
@@ -28,6 +28,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
 import java.util.TreeSet;
@@ -318,6 +319,8 @@ public class MXMLJSCNative implements JSCompilerEntryPoint, ProblemQueryProvider
                 }
 
                 Set<String> closurePropNamesToKeep = new HashSet<String>();
+                //use a LinkedHashSet because the order of the exported names matters -JT
+                LinkedHashSet<String> closureSymbolNamesToExport = new LinkedHashSet<String>();
                 jsPublisher = (IJSGoogPublisher) project.getBackend().createPublisher(
                         project, errors, config);
 
@@ -385,12 +388,14 @@ public class MXMLJSCNative implements JSCompilerEntryPoint, ProblemQueryProvider
 	                        writer.close();
 	                    }
                         ClosureUtils.collectPropertyNamesToKeep(cu, project, closurePropNamesToKeep);
+                        ClosureUtils.collectSymbolNamesToExport(cu, project, closureSymbolNamesToExport);
 	                }
                 }
                 
                 if (jsPublisher != null)
                 {
                     jsPublisher.setClosurePropertyNamesToKeep(closurePropNamesToKeep);
+                    jsPublisher.setClosureSymbolNamesToExport(closureSymbolNamesToExport);
                     compilationSuccess = jsPublisher.publish(problems);
                 }
                 else
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCNode.java b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCNode.java
index 70c1c24..32132b4 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCNode.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCNode.java
@@ -28,6 +28,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
 import java.util.TreeSet;
@@ -320,6 +321,8 @@ public class MXMLJSCNode implements JSCompilerEntryPoint, ProblemQueryProvider,
                 }
 
                 Set<String> closurePropNamesToKeep = new HashSet<String>();
+                //use a LinkedHashSet because the order of the exported names matters -JT
+                LinkedHashSet<String> closureSymbolNamesToExport = new LinkedHashSet<String>();
                 jsPublisher = (IJSGoogPublisher) project.getBackend().createPublisher(
                         project, errors, config);
 
@@ -387,11 +390,14 @@ public class MXMLJSCNode implements JSCompilerEntryPoint, ProblemQueryProvider,
 	                        writer.close();
 	                    }
                         ClosureUtils.collectPropertyNamesToKeep(cu, project, closurePropNamesToKeep);
+                        ClosureUtils.collectSymbolNamesToExport(cu, project, closureSymbolNamesToExport);
 	                }
                 }
                 
                 if (jsPublisher != null)
                 {
+                    jsPublisher.setClosurePropertyNamesToKeep(closurePropNamesToKeep);
+                    jsPublisher.setClosureSymbolNamesToExport(closureSymbolNamesToExport);
                     compilationSuccess = jsPublisher.publish(problems);
                 }
                 else
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCRoyale.java b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCRoyale.java
index fe73f30..2574c5f 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCRoyale.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCRoyale.java
@@ -339,6 +339,8 @@ public class MXMLJSCRoyale implements JSCompilerEntryPoint, ProblemQueryProvider
                 }
 
                 Set<String> closurePropNamesToKeep = new HashSet<String>();
+                //use a LinkedHashSet because the order of the exported names matters -JT
+                LinkedHashSet<String> closureSymbolNamesToExport = new LinkedHashSet<String>();
                 jsPublisher = (IJSGoogPublisher) project.getBackend().createPublisher(
                         project, errors, config);
 
@@ -417,6 +419,7 @@ public class MXMLJSCRoyale implements JSCompilerEntryPoint, ProblemQueryProvider
 	                        writer.close();
 	                    }
                         ClosureUtils.collectPropertyNamesToKeep(cu, project, closurePropNamesToKeep);
+                        ClosureUtils.collectSymbolNamesToExport(cu, project, closureSymbolNamesToExport);
 	                }
 	                File externsReportFile = googConfiguration.getExternsReport();
 	                if (externsReportFile != null)
@@ -435,6 +438,7 @@ public class MXMLJSCRoyale implements JSCompilerEntryPoint, ProblemQueryProvider
                 if (jsPublisher != null)
                 {
                     jsPublisher.setClosurePropertyNamesToKeep(closurePropNamesToKeep);
+                    jsPublisher.setClosureSymbolNamesToExport(closureSymbolNamesToExport);
                     compilationSuccess = jsPublisher.publish(problems);
                 }
                 else
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCRoyaleCordova.java b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCRoyaleCordova.java
index 80bca1a..a508ec2 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCRoyaleCordova.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSCRoyaleCordova.java
@@ -28,6 +28,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
 import java.util.TreeSet;
@@ -323,6 +324,8 @@ public class MXMLJSCRoyaleCordova implements JSCompilerEntryPoint, ProblemQueryP
                 }
 
                 Set<String> closurePropNamesToKeep = new HashSet<String>();
+                //use a LinkedHashSet because the order of the exported names matters -JT
+                LinkedHashSet<String> closureSymbolNamesToExport = new LinkedHashSet<String>();
                 jsPublisher = (IJSGoogPublisher) project.getBackend().createPublisher(
                         project, errors, config);
 
@@ -390,12 +393,14 @@ public class MXMLJSCRoyaleCordova implements JSCompilerEntryPoint, ProblemQueryP
 	                        writer.close();
 	                    }
                         ClosureUtils.collectPropertyNamesToKeep(cu, project, closurePropNamesToKeep);
+                        ClosureUtils.collectSymbolNamesToExport(cu, project, closureSymbolNamesToExport);
 	                }
                 }
                 
                 if (jsPublisher != null)
                 {
                     jsPublisher.setClosurePropertyNamesToKeep(closurePropNamesToKeep);
+                    jsPublisher.setClosureSymbolNamesToExport(closureSymbolNamesToExport);
                     compilationSuccess = jsPublisher.publish(problems);
                 }
                 else
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/codegen/js/goog/IJSGoogPublisher.java b/compiler-jx/src/main/java/org/apache/royale/compiler/codegen/js/goog/IJSGoogPublisher.java
index eaa3bad..20fbab6 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/codegen/js/goog/IJSGoogPublisher.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/codegen/js/goog/IJSGoogPublisher.java
@@ -30,4 +30,5 @@ import org.apache.royale.compiler.codegen.js.IJSPublisher;
 public interface IJSGoogPublisher extends IJSPublisher
 {
 	void setClosurePropertyNamesToKeep(Set<String> propertyNames);
+	void setClosureSymbolNamesToExport(Set<String> symbolNames);
 }
\ No newline at end of file
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/ClassEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/ClassEmitter.java
index 9b86e96..42f3fe5 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/ClassEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/ClassEmitter.java
@@ -160,28 +160,6 @@ public class ClassEmitter extends JSSubEmitter implements
             }
         }
 
-  	    if (!getEmitter().getModel().isExterns && !suppressExport)
-  	    {
-  	        JSRoyaleDocEmitter doc = (JSRoyaleDocEmitter) getEmitter()
-  	        .getDocEmitter();
-  		    writeNewline();
-  		    writeNewline();
-  		    writeNewline();
-  		    doc.begin();
-  		    writeNewline(" * Prevent renaming of class. Needed for reflection.");
-  		    doc.end();
-  		    write(JSRoyaleEmitterTokens.GOOG_EXPORT_SYMBOL);
-  		    write(ASEmitterTokens.PAREN_OPEN);
-  		    write(ASEmitterTokens.SINGLE_QUOTE);
-  		    write(getEmitter().formatQualifiedName(node.getQualifiedName()));
-  		    write(ASEmitterTokens.SINGLE_QUOTE);
-  		    write(ASEmitterTokens.COMMA);
-  		    write(ASEmitterTokens.SPACE);
-  		    write(getEmitter().formatQualifiedName(node.getQualifiedName()));
-  		    write(ASEmitterTokens.PAREN_CLOSE);
-  		    write(ASEmitterTokens.SEMICOLON);
-  	    }
-
         IDefinitionNode[] dnodes = node.getAllMemberNodes();
         for (IDefinitionNode dnode : dnodes)
         {
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/InterfaceEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/InterfaceEmitter.java
index eb8f079..67db88c 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/InterfaceEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/InterfaceEmitter.java
@@ -74,27 +74,7 @@ public class InterfaceEmitter extends JSSubEmitter implements
             write(ASEmitterTokens.SEMICOLON);
         }
 
-        JSRoyaleDocEmitter doc = (JSRoyaleDocEmitter) getEmitter()
-        .getDocEmitter();
-  	    if (!getEmitter().getModel().isExterns)
-  	    {
-  		    writeNewline();
-  		    writeNewline();
-  		    writeNewline();
-  		    doc.begin();
-  		    writeNewline(" * Prevent renaming of class. Needed for reflection.");
-  		    doc.end();
-  		    write(JSRoyaleEmitterTokens.GOOG_EXPORT_SYMBOL);
-  		    write(ASEmitterTokens.PAREN_OPEN);
-  		    write(ASEmitterTokens.SINGLE_QUOTE);
-  		    write(getEmitter().formatQualifiedName(node.getQualifiedName()));
-  		    write(ASEmitterTokens.SINGLE_QUOTE);
-  		    write(ASEmitterTokens.COMMA);
-  		    write(ASEmitterTokens.SPACE);
-  		    write(getEmitter().formatQualifiedName(node.getQualifiedName()));
-  		    write(ASEmitterTokens.PAREN_CLOSE);
-  		    write(ASEmitterTokens.SEMICOLON);
-  	    }
+        JSRoyaleDocEmitter doc = (JSRoyaleDocEmitter) getEmitter().getDocEmitter();
   	    
         final IDefinitionNode[] members = node.getAllMemberDefinitionNodes();
         for (IDefinitionNode mnode : members)
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleDocEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleDocEmitter.java
index e2f7805..305a950 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleDocEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleDocEmitter.java
@@ -41,7 +41,6 @@ import org.apache.royale.compiler.internal.codegen.js.goog.JSGoogDocEmitterToken
 import org.apache.royale.compiler.internal.codegen.js.jx.BindableEmitter;
 import org.apache.royale.compiler.internal.projects.RoyaleJSProject;
 import org.apache.royale.compiler.internal.scopes.ASScope;
-import org.apache.royale.compiler.parsing.IASToken;
 import org.apache.royale.compiler.problems.PublicVarWarningProblem;
 import org.apache.royale.compiler.projects.ICompilerProject;
 import org.apache.royale.compiler.tree.ASTNodeID;
@@ -537,7 +536,8 @@ public class JSRoyaleDocEmitter extends JSGoogDocEmitter
         }
         else /*if (ns != null && ns == IASKeywordConstants.PUBLIC)*/
         {
-            emitPublic(node);
+            if(!node.hasModifier(ASModifier.STATIC))
+                emitPublic(node);
         }
     }
 
@@ -558,9 +558,9 @@ public class JSRoyaleDocEmitter extends JSGoogDocEmitter
             boolean preventRename = fjp.config != null && fjp.config.getPreventRenameProtectedSymbols();
             if(preventRename && node.hasModifier(ASModifier.STATIC) && !(node instanceof IAccessorNode))
             {
-                //dynamically getting/setting a protected static variable
-                //won't work properly if it is collapsed, even when it
-                //has been exported
+                //dynamically getting/setting a static variable won't
+                //work properly if it is collapsed in a release build,
+                //even when it has been exported
                 emitJSDocLine(JSGoogDocEmitterTokens.NOCOLLAPSE);
             }
         }
@@ -609,9 +609,9 @@ public class JSRoyaleDocEmitter extends JSGoogDocEmitter
                     boolean preventRename = fjp.config != null && fjp.config.getPreventRenamePublicSymbols();
                     if(preventRename && node.hasModifier(ASModifier.STATIC) && !(node instanceof IAccessorNode))
                     {
-                        //dynamically getting/setting a public static variable
-                        //won't work properly if it is collapsed, even when it
-                        //has been exported
+                        //dynamically getting/setting a static variable won't
+                        //work properly if it is collapsed in a release build,
+                        //even when it has been exported
                         emitJSDocLine(JSGoogDocEmitterTokens.NOCOLLAPSE);
                     }
                 }
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleEmitter.java
index 86083af..e8c8e2a 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleEmitter.java
@@ -1166,21 +1166,6 @@ public class MXMLRoyaleEmitter extends MXMLEmitter implements
         write(ASEmitterTokens.PAREN_CLOSE);
         writeNewline(ASEmitterTokens.SEMICOLON);
 
-	    writeNewline();
-	    writeNewline();
-        writeNewline("/**");
-	    writeNewline(" * Prevent renaming of class. Needed for reflection.");
-        writeNewline(" */");
-	    write(JSRoyaleEmitterTokens.GOOG_EXPORT_SYMBOL);
-	    write(ASEmitterTokens.PAREN_OPEN);
-	    write(ASEmitterTokens.SINGLE_QUOTE);
-	    write(formatQualifiedName(cname));
-	    write(ASEmitterTokens.SINGLE_QUOTE);
-	    write(ASEmitterTokens.COMMA);
-	    write(ASEmitterTokens.SPACE);
-	    write(formatQualifiedName(cname));
-	    write(ASEmitterTokens.PAREN_CLOSE);
-	    write(ASEmitterTokens.SEMICOLON);
         writeNewline();
         writeNewline();
 	    writeNewline();
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyalePublisher.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyalePublisher.java
index d823a33..1f9fb05 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyalePublisher.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyalePublisher.java
@@ -103,6 +103,7 @@ public class MXMLRoyalePublisher extends JSGoogPublisher implements IJSGoogPubli
     private boolean useStrictPublishing;
     private List<String> additionalHTML = new ArrayList<String>();
     private Set<String> closurePropertyNamesToKeep;
+    private Set<String> closureSymbolNamesToExport;
 
     private GoogDepsWriter getGoogDepsWriter(File intermediateDir, 
     										String mainClassQName, 
@@ -188,6 +189,11 @@ public class MXMLRoyalePublisher extends JSGoogPublisher implements IJSGoogPubli
         closurePropertyNamesToKeep = propertyNames;
     }
 
+    public void setClosureSymbolNamesToExport(Set<String> symbolNames)
+    {
+        closureSymbolNamesToExport = symbolNames;
+    }
+
     @Override
     public boolean publish(ProblemQuery problems) throws IOException
     {
@@ -387,6 +393,13 @@ public class MXMLRoyalePublisher extends JSGoogPublisher implements IJSGoogPubli
         {
             compilerWrapper = new JSClosureCompilerWrapper(googConfiguration.getJSCompilerOptions());
             compilerWrapper.setPropertyNamesToKeep(closurePropertyNamesToKeep);
+            if (closureSymbolNamesToExport == null) {
+                closureSymbolNamesToExport = new HashSet<String>();
+            }
+            //the HTML template always needs this name to be exported, even if
+            //other class names are not exported
+            closureSymbolNamesToExport.add(mainClassQName);
+            compilerWrapper.setExtraSymbolNamesToExport(closureSymbolNamesToExport);
         }
 
         if (compilerWrapper != null)
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/utils/ClosureUtils.java b/compiler-jx/src/main/java/org/apache/royale/compiler/utils/ClosureUtils.java
index b94fdf2..0dccf19 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/utils/ClosureUtils.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/utils/ClosureUtils.java
@@ -19,14 +19,21 @@
 
 package org.apache.royale.compiler.utils;
 
+import java.util.LinkedHashSet;
 import java.util.Set;
 
+import org.apache.royale.compiler.asdoc.royale.ASDocComment;
 import org.apache.royale.compiler.definitions.IDefinition;
 import org.apache.royale.compiler.definitions.IFunctionDefinition;
+import org.apache.royale.compiler.definitions.INamespaceDefinition;
+import org.apache.royale.compiler.definitions.IPackageDefinition;
 import org.apache.royale.compiler.definitions.ITypeDefinition;
 import org.apache.royale.compiler.definitions.IVariableDefinition;
+import org.apache.royale.compiler.definitions.references.INamespaceReference;
+import org.apache.royale.compiler.internal.codegen.js.utils.DocEmitterUtils;
 import org.apache.royale.compiler.internal.projects.RoyaleJSProject;
-import org.apache.royale.compiler.internal.scopes.ASProjectScope.DefinitionPromise;
+import org.apache.royale.compiler.scopes.IASScope;
+import org.apache.royale.compiler.scopes.IFileScope;
 import org.apache.royale.compiler.units.ICompilationUnit;
 
 public class ClosureUtils
@@ -38,49 +45,144 @@ public class ClosureUtils
             return;
         }
 		boolean preventRenamePublic = project.config.getPreventRenamePublicSymbols();
-		boolean preventRenameProtected = project.config.getPreventRenameProtectedSymbols();
-        for (IDefinition def : cu.getDefinitionPromises())
+        boolean preventRenameProtected = project.config.getPreventRenameProtectedSymbols();
+        try
         {
-            if(def instanceof DefinitionPromise)
+            for(IASScope scope : cu.getFileScopeRequest().get().getScopes())
             {
-                def = ((DefinitionPromise) def).getActualDefinition();
-            }
-            if (def instanceof ITypeDefinition)
-            {
-                if (def.isImplicit() || def.isNative())
-                {
-                    continue;
-                }
-                ITypeDefinition typeDef = (ITypeDefinition) def;
-                for (IDefinition localDef : typeDef.getContainedScope().getAllLocalDefinitions())
+                for(IDefinition def : scope.getAllLocalDefinitions())
                 {
-                    if (localDef.isImplicit())
+                    if(def instanceof IPackageDefinition)
                     {
-                        continue;
+                        //source files seem to return packages while SWC files
+                        //return symbols inside the packages
+                        //we want the symbols, so drill down into the package
+                        IPackageDefinition packageDef = (IPackageDefinition) def;
+                        def = packageDef.getContainedScope().getAllLocalDefinitions().iterator().next();
                     }
-                    if (!localDef.isPublic() && !localDef.isProtected())
+                    if(scope instanceof IFileScope && def.isPrivate())
                     {
-                        continue;
+                        //file-private symbols are emitted like static variables
+                        result.add(def.getBaseName());
                     }
-                    if (localDef.isProtected() && !preventRenameProtected)
+                    if (def instanceof ITypeDefinition)
                     {
-                        continue;
+                        if (def.isImplicit() || def.isNative())
+                        {
+                            continue;
+                        }
+                        ITypeDefinition typeDef = (ITypeDefinition) def;
+                        for (IDefinition localDef : typeDef.getContainedScope().getAllLocalDefinitions())
+                        {
+                            if (localDef.isImplicit())
+                            {
+                                continue;
+                            }
+                            INamespaceReference nsRef = localDef.getNamespaceReference();
+                            boolean isPublic = nsRef instanceof INamespaceDefinition.IPublicNamespaceDefinition;
+                            boolean isProtected = nsRef instanceof INamespaceDefinition.IProtectedNamespaceDefinition
+                                    || nsRef instanceof INamespaceDefinition.IStaticProtectedNamespaceDefinition;
+                            
+                            if (!isPublic && !isProtected)
+                            {
+                                continue;
+                            }
+                            if (isProtected && !preventRenameProtected)
+                            {
+                                continue;
+                            }
+                            if (isPublic && !preventRenamePublic)
+                            {
+                                continue;
+                            }
+                            if (localDef instanceof IVariableDefinition && localDef instanceof IFunctionDefinition)
+                            {
+                                continue;
+                            }
+                            result.add(localDef.getBaseName());
+                        }
                     }
-                    if (localDef.isPublic() && !preventRenamePublic)
+                }
+            }
+        }
+        catch(InterruptedException e) {}
+    }
+
+    //the result must be a LinkedHashSet so that it iterates over the keys in
+    //the same order that they were added
+    public static void collectSymbolNamesToExport(ICompilationUnit cu, RoyaleJSProject project, LinkedHashSet<String> symbolsResult)
+    {
+        if (project.isExternalLinkage(cu))
+        {
+            return;
+        }
+        try
+        {
+            String parentQName = null;
+            Set<String> filePrivateNames = new LinkedHashSet<String>();
+            for(IASScope scope : cu.getFileScopeRequest().get().getScopes())
+            {
+                for(IDefinition def : scope.getAllLocalDefinitions())
+                {
+                    if(def instanceof IPackageDefinition)
                     {
-                        continue;
+                        //source files seem to return packages while SWC files
+                        //return symbols inside the packages
+                        //we want the symbols, so drill down into the package
+                        IPackageDefinition packageDef = (IPackageDefinition) def;
+                        def = packageDef.getContainedScope().getAllLocalDefinitions().iterator().next();
                     }
-                    if (!(localDef instanceof IVariableDefinition))
+                    if (def.isImplicit() || def.isNative())
                     {
                         continue;
                     }
-                    if (localDef instanceof IFunctionDefinition)
+
+                    String qualifiedName = def.getQualifiedName();
+                    boolean isFilePrivate = false;
+                    if(scope instanceof IFileScope && def.isPrivate())
                     {
-                        continue;
+                        isFilePrivate = true;
+                        filePrivateNames.add(qualifiedName);
+                    }
+                    else
+                    {
+                        symbolsResult.add(qualifiedName);
+                        if(parentQName == null)
+                        {
+                            parentQName = qualifiedName;
+                        }
+                    }
+                    if (def instanceof ITypeDefinition)
+                    {
+                        ITypeDefinition typeDef = (ITypeDefinition) def;
+                        ASDocComment asDoc = (ASDocComment) typeDef.getExplicitSourceComment();
+                        if (asDoc != null && DocEmitterUtils.hasSuppressExport(null, asDoc.commentNoEnd()))
+                        {
+                            continue;
+                        }
+
+                        for(IDefinition childDef : typeDef.getContainedScope().getAllLocalDefinitions())
+                        {
+                            if(childDef instanceof IFunctionDefinition && !(childDef instanceof IVariableDefinition) && childDef.isStatic() && childDef.isPublic())
+                            {
+                                if(isFilePrivate)
+                                {
+                                    filePrivateNames.add(qualifiedName + "." + childDef.getBaseName());
+                                }
+                                else
+                                {
+                                    symbolsResult.add(qualifiedName + "." + childDef.getBaseName());
+                                }
+                            }
+                        }
                     }
-                    result.add(localDef.getBaseName());
                 }
             }
+            for(String filePrivateName : filePrivateNames)
+            {
+                symbolsResult.add(parentQName + "." + filePrivateName);
+            }
         }
-    } 
+        catch(InterruptedException e) {}
+    }
 }
\ No newline at end of file
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/utils/JSClosureCompilerWrapper.java b/compiler-jx/src/main/java/org/apache/royale/compiler/utils/JSClosureCompilerWrapper.java
index 0364d35..a343d35 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/utils/JSClosureCompilerWrapper.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/utils/JSClosureCompilerWrapper.java
@@ -89,10 +89,11 @@ public class JSClosureCompilerWrapper
     private String propertyMapOutputPath;
     private String variableMapInputPath;
     private String propertyMapInputPath;
+    private Set<String> propertyNamesToKeep;
+    private Set<String> extraSymbolNamesToExport;
     private boolean skipTypeInference;
     private boolean sourceMap = false;
     private boolean verbose = false;
-    private Set<String> propertyNamesToKeep;
     
     public String targetFilePath;
     
@@ -130,6 +131,11 @@ public class JSClosureCompilerWrapper
     {
         propertyNamesToKeep = propertyNames;
     }
+
+    public void setExtraSymbolNamesToExport(Set<String> names)
+    {
+        extraSymbolNamesToExport = names;
+    }
     
     public boolean compile()
     {
@@ -167,7 +173,7 @@ public class JSClosureCompilerWrapper
 
         compiler_.setPassConfig(new RoyaleClosurePassConfig(options_, 
         		jsSourceFiles_.get(jsSourceFiles_.size() - 1).getName(), 
-        		variableMapInputPath == null ? null : new File(outputFolder, variableMapInputPath), propertyNamesToKeep));
+        		variableMapInputPath == null ? null : new File(outputFolder, variableMapInputPath), propertyNamesToKeep, extraSymbolNamesToExport));
         Result result = compiler_.compile(jsExternsFiles_, jsSourceFiles_, options_);
         
         try
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleAccessorMembers.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleAccessorMembers.java
index 89e2c8d..079ff73 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleAccessorMembers.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleAccessorMembers.java
@@ -37,7 +37,7 @@ public class TestRoyaleAccessorMembers extends TestGoogAccessorMembers
         IClassNode node = (IClassNode) getNode("function get foo():int{}",
         		IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n" +
+        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n" +
 				"RoyaleTest_A.prototype.get__foo = function() {\n};\n\n\n" +
         		"Object.defineProperties(RoyaleTest_A.prototype, /** @lends {RoyaleTest_A.prototype} */ {\n/**\n  * @type {number} */\nfoo: {\nget: RoyaleTest_A.prototype.get__foo}}\n);");
     }
@@ -49,7 +49,7 @@ public class TestRoyaleAccessorMembers extends TestGoogAccessorMembers
     	IClassNode node = (IClassNode) getNode("function get foo():int{return -1;}",
     			IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n" +
+        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n" +
 				"RoyaleTest_A.prototype.get__foo = function() {\n  return -1;\n};\n\n\n" +
         		"Object.defineProperties(RoyaleTest_A.prototype, /** @lends {RoyaleTest_A.prototype} */ {\n/**\n  * @type {number} */\nfoo: {\nget: RoyaleTest_A.prototype.get__foo}}\n);");
     }
@@ -61,7 +61,7 @@ public class TestRoyaleAccessorMembers extends TestGoogAccessorMembers
     	IClassNode node = (IClassNode) getNode("public function get foo():int{return -1;}",
         		IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n" +
+        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n" +
 				"RoyaleTest_A.prototype.get__foo = function() {\n  return -1;\n};\n\n\n" +
         		"Object.defineProperties(RoyaleTest_A.prototype, /** @lends {RoyaleTest_A.prototype} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: {\nget: RoyaleTest_A.prototype.get__foo}}\n);");
     }
@@ -73,7 +73,7 @@ public class TestRoyaleAccessorMembers extends TestGoogAccessorMembers
     	IClassNode node = (IClassNode) getNode("public class B extends A { public override function get foo():int{return super.foo;} }; public class A {public function get foo():int {return 0;}} ",
         		IClassNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() {\n  B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('B', B);\n\n\n" +
+        assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() {\n  B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\n\n\n" +
 				"B.prototype.get__foo = function() {\n  return B.superClass_.get__foo.apply(this);\n};\n\n\n" +
         		"Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: {\nget: B.prototype.get__foo}}\n);");
     }
@@ -84,7 +84,7 @@ public class TestRoyaleAccessorMembers extends TestGoogAccessorMembers
     	IClassNode node = (IClassNode) getNode("public class B extends A { public override function get foo():int{return super.foo;} }; public class A { public function set foo(value:int):void{} public function get foo():int {return 0;}}",
         		IClassNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() {\n  B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('B', B);\n\n\n" +
+        assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() {\n  B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\n\n\n" +
 				"B.prototype.get__foo = function() {\n  return B.superClass_.get__foo.apply(this);\n};\n\n\n" +
         		"Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: {\nget: B.prototype.get__foo,\nset: A.prototype.set__foo}}\n);");
     }
@@ -96,7 +96,7 @@ public class TestRoyaleAccessorMembers extends TestGoogAccessorMembers
     	IClassNode node = (IClassNode) getNode("public static function get foo():int{return -1;}",
         		IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n" +
+        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n" +
 				"RoyaleTest_A.get__foo = function() {\n  return -1;\n};\n\n\n" +
         		"Object.defineProperties(RoyaleTest_A, /** @lends {RoyaleTest_A} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: {\nget: RoyaleTest_A.get__foo}}\n);");
     }
@@ -108,8 +108,7 @@ public class TestRoyaleAccessorMembers extends TestGoogAccessorMembers
     	IClassNode node = (IClassNode) getNode("function set foo(value:int):void{}",
         		IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        // /**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\nRoyaleTest_A.prototype.set__foo = function(value) {\n};\n\n\nObject.defineProperties(RoyaleTest_A.prototype, /** @lends {RoyaleTest_A.prototype} */ {\n/**\n  * @type {number} */\nfoo: {\nset: RoyaleTest_A.prototype.set__foo}}\n);
-        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n" +
+        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n" +
 				"RoyaleTest_A.prototype.set__foo = function(value) {\n};\n\n\n" +
         		"Object.defineProperties(RoyaleTest_A.prototype, /** @lends {RoyaleTest_A.prototype} */ {\n/**\n  * @type {number} */\nfoo: {\nset: RoyaleTest_A.prototype.set__foo}}\n);");
     }
@@ -121,7 +120,7 @@ public class TestRoyaleAccessorMembers extends TestGoogAccessorMembers
     	IClassNode node = (IClassNode) getNode("function set foo(value:int):void{fetch('haai');}",
         		IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n" +
+        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n" +
 				"RoyaleTest_A.prototype.set__foo = function(value) {\n  fetch('haai');\n};\n\n\n" +
         		"Object.defineProperties(RoyaleTest_A.prototype, /** @lends {RoyaleTest_A.prototype} */ {\n/**\n  * @type {number} */\nfoo: {\nset: RoyaleTest_A.prototype.set__foo}}\n);");
     }
@@ -133,7 +132,7 @@ public class TestRoyaleAccessorMembers extends TestGoogAccessorMembers
     	IClassNode node = (IClassNode) getNode("public function set foo(value:int):void{}",
         		IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n" +
+        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n" +
 				"RoyaleTest_A.prototype.set__foo = function(value) {\n};\n\n\n" +
         		"Object.defineProperties(RoyaleTest_A.prototype, /** @lends {RoyaleTest_A.prototype} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: {\nset: RoyaleTest_A.prototype.set__foo}}\n);");
     }
@@ -145,7 +144,7 @@ public class TestRoyaleAccessorMembers extends TestGoogAccessorMembers
     	IClassNode node = (IClassNode) getNode("public class B extends A { public override function set foo(value:int):void {super.foo = value;} }; public class A { public function set foo(value:int):void{}}",
         		IClassNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() {\n  B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('B', B);\n\n\n" +
+        assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() {\n  B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\n\n\n" +
 				"B.prototype.set__foo = function(value) {\n  B.superClass_.set__foo.apply(this, [ value] );\n};\n\n\n" +
         		"Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: {\nset: B.prototype.set__foo}}\n);");
     }
@@ -157,7 +156,7 @@ public class TestRoyaleAccessorMembers extends TestGoogAccessorMembers
     	IClassNode node = (IClassNode) getNode("public static function set foo(value:int):void{}",
         		IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n" +
+        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n" +
 				"RoyaleTest_A.set__foo = function(value) {\n};\n\n\n" +
         		"Object.defineProperties(RoyaleTest_A, /** @lends {RoyaleTest_A} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: {\nset: RoyaleTest_A.set__foo}}\n);");
     }
@@ -168,7 +167,7 @@ public class TestRoyaleAccessorMembers extends TestGoogAccessorMembers
     	IClassNode node = (IClassNode) getNode("public class B extends A { public override function set foo(value:int):void {super.foo = value;} }; public class A { public function set foo(value:int):void{} public function get foo():int { return 0;}}",
         		IClassNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() {\n  B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('B', B);\n\n\n" +
+        assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() {\n  B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\n\n\n" +
 				"B.prototype.set__foo = function(value) {\n  B.superClass_.set__foo.apply(this, [ value] );\n};\n\n\n" +
         		"Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: {\nget: A.prototype.get__foo,\nset: B.prototype.set__foo}}\n);");
     }
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleAccessors.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleAccessors.java
index fabe07f..3dce316 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleAccessors.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleAccessors.java
@@ -46,7 +46,7 @@ public class TestRoyaleAccessors extends ASTestBase
                 "public function doStuff():void {label = 'hello, bye'; var theLabel:String = label;}; private var _label:String; public function get label():String {return _label}; public function set label(value:String):void {_label = value}; ",
                 IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @export\n */\nRoyaleTest_A.prototype.doStuff = function() {\n  this.label = 'hello, bye';\n  var /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nRoyaleTest_A.prototype._label = null;\n\n\n" +
+        String expected = "/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * @export\n */\nRoyaleTest_A.prototype.doStuff = function() {\n  this.label = 'hello, bye';\n  var /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nRoyaleTest_A.prototype._label = null;\n\n\n" +
         		"RoyaleTest_A.prototype.get__label = function() {\n  return this._label;\n};\n\n\n" +
         		"RoyaleTest_A.prototype.set__label = function(value) {\n  this._label = value;\n};\n\n\n" +
         		"Object.defineProperties(RoyaleTest_A.prototype, /** @lends {RoyaleTest_A.prototype} */ {\n/**\n  * @export\n  * @type {string} */\n" +
@@ -61,7 +61,7 @@ public class TestRoyaleAccessors extends ASTestBase
                 "public class B { public function B() {}; public function doStuff():void {this.label = label + 'bye'; var theLabel:String = label;}; private var _label:String; public function get label():String {return _label}; public function set label(value:String):void {_label = value};}",
                 IClassNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('B', B);\n\n\n/**\n * @export\n */\nB.prototype.doStuff = function() {\n  this.label = this.label + 'bye';\n  var /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB.prototype._label = null;\n\n\n" +
+        String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n\n/**\n * @export\n */\nB.prototype.doStuff = function() {\n  this.label = this.label + 'bye';\n  var /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB.prototype._label = null;\n\n\n" +
 				"B.prototype.get__label = function() {\n  return this._label;\n};\n\n\n" +
 				"B.prototype.set__label = function(value) {\n  this._label = value;\n};\n\n\n" +
         		"Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/**\n  * @export\n  * @type {string} */\nlabel: {\n" +
@@ -76,7 +76,7 @@ public class TestRoyaleAccessors extends ASTestBase
                 "public function doStuff():void {label = label + 'bye'; var theLabel:String = label;}; private var _label:String; public function get label():String {return _label}; public function set label(value:String):void {_label = value}; ",
                 IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @export\n */\nRoyaleTest_A.prototype.doStuff = function() {\n  this.label = this.label + 'bye';\n  var /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nRoyaleTest_A.prototype._label = null;\n\n\n" +
+        String expected = "/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * @export\n */\nRoyaleTest_A.prototype.doStuff = function() {\n  this.label = this.label + 'bye';\n  var /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nRoyaleTest_A.prototype._label = null;\n\n\n" +
 				"RoyaleTest_A.prototype.get__label = function() {\n  return this._label;\n};\n\n\n" +
 				"RoyaleTest_A.prototype.set__label = function(value) {\n  this._label = value;\n};\n\n\n" +
 				"Object.defineProperties(RoyaleTest_A.prototype, /** @lends {RoyaleTest_A.prototype} */ {\n/**\n  * @export\n  * @type {string} */\nlabel: {\n" +
@@ -91,7 +91,7 @@ public class TestRoyaleAccessors extends ASTestBase
                 "public class B { public function B() {}; public function doStuff():void {label = this.label; var theLabel:String = label;}; private var _label:String; public function get label():String {return _label}; public function set label(value:String):void {_label = value};}",
                 IClassNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('B', B);\n\n\n/**\n * @export\n */\nB.prototype.doStuff = function() {\n  this.label = this.label;\n  var /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB.prototype._label = null;\n\n\n" +
+        String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n\n/**\n * @export\n */\nB.prototype.doStuff = function() {\n  this.label = this.label;\n  var /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB.prototype._label = null;\n\n\n" +
 				"B.prototype.get__label = function() {\n  return this._label;\n};\n\n\n" +
 				"B.prototype.set__label = function(value) {\n  this._label = value;\n};\n\n\n" +
 				"Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/**\n  * @export\n  * @type {string} */\nlabel: {\n" +
@@ -106,7 +106,7 @@ public class TestRoyaleAccessors extends ASTestBase
                 "import custom.custom_namespace;use namespace custom_namespace;public class B { public function B() {}; public function doStuff():void {var theLabel:String = label; label = theLabel;}; private var _label:String; custom_namespace function get label():String {return _label}; custom_namespace function set label(value:String):void {_label = value};}",
                 IClassNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('B', B);\n\n\n/**\n * @export\n */\nB.prototype.doStuff = function() {\n  var /** @type {string} */ theLabel = this.http_$$ns_apache_org$2017$custom$namespace__label;\n  this.http_$$ns_apache_org$2017$custom$namespace__label = theLabel;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB.prototype._label = null;\n\n\n" +
+        String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n\n/**\n * @export\n */\nB.prototype.doStuff = function() {\n  var /** @type {string} */ theLabel = this.http_$$ns_apache_org$2017$custom$namespace__label;\n  this.http_$$ns_apache_org$2017$custom$namespace__label = theLabel;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB.prototype._label = null;\n\n\n" +
 				"B.prototype.http_$$ns_apache_org$2017$custom$namespace__get__label = function() {\n  return this._label;\n};\n\n\n" +
 				"B.prototype.http_$$ns_apache_org$2017$custom$namespace__set__label = function(value) {\n  this._label = value;\n};\n\n\n" +
         		"Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/**\n  * @export\n  * @type {string} */\nhttp_$$ns_apache_org$2017$custom$namespace__label: {\nget: B.prototype.http_$$ns_apache_org$2017$custom$namespace__get__label,\nset: B.prototype.http_$$ns_apache_org$2017$custom$namespace__set__label}}\n);";
@@ -120,7 +120,7 @@ public class TestRoyaleAccessors extends ASTestBase
                 "import custom.custom_namespace;use namespace custom_namespace;public class B { public function B() {}; public function doStuff():void {var theLabel:String = this.label; this.label = theLabel;}; private var _label:String; custom_namespace function get label():String {return _label}; custom_namespace function set label(value:String):void {_label = value};}",
                 IClassNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('B', B);\n\n\n/**\n * @export\n */\nB.prototype.doStuff = function() {\n  var /** @type {string} */ theLabel = this.http_$$ns_apache_org$2017$custom$namespace__label;\n  this.http_$$ns_apache_org$2017$custom$namespace__label = theLabel;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB.prototype._label = null;\n\n\n" +
+        String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n\n/**\n * @export\n */\nB.prototype.doStuff = function() {\n  var /** @type {string} */ theLabel = this.http_$$ns_apache_org$2017$custom$namespace__label;\n  this.http_$$ns_apache_org$2017$custom$namespace__label = theLabel;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB.prototype._label = null;\n\n\n" +
 				"B.prototype.http_$$ns_apache_org$2017$custom$namespace__get__label = function() {\n  return this._label;\n};\n\n\n" +
 				"B.prototype.http_$$ns_apache_org$2017$custom$namespace__set__label = function(value) {\n  this._label = value;\n};\n\n\n" +
         		"Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/**\n  * @export\n  * @type {string} */\nhttp_$$ns_apache_org$2017$custom$namespace__label: {\nget: B.prototype.http_$$ns_apache_org$2017$custom$namespace__get__label,\nset: B.prototype.http_$$ns_apache_org$2017$custom$namespace__set__label}}\n);";
@@ -134,7 +134,7 @@ public class TestRoyaleAccessors extends ASTestBase
                 "import custom.custom_namespace;use namespace custom_namespace;public class B { public function B() {}; public function doStuff():void {var theLabel:String = label; label = theLabel;}; private static var _label:String; custom_namespace static function get label():String {return _label}; custom_namespace static function set label(value:String):void {_label = value};}",
                 IClassNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('B', B);\n\n\n/**\n * @export\n */\nB.prototype.doStuff = function() {\n  var /** @type {string} */ theLabel = B.http_$$ns_apache_org$2017$custom$namespace__label;\n  B.http_$$ns_apache_org$2017$custom$namespace__label = theLabel;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB._label = null;\n\n\n" +
+        String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n\n/**\n * @export\n */\nB.prototype.doStuff = function() {\n  var /** @type {string} */ theLabel = B.http_$$ns_apache_org$2017$custom$namespace__label;\n  B.http_$$ns_apache_org$2017$custom$namespace__label = theLabel;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB._label = null;\n\n\n" +
 				"B.http_$$ns_apache_org$2017$custom$namespace__get__label = function() {\n  return B._label;\n};\n\n\n" +
 				"B.http_$$ns_apache_org$2017$custom$namespace__set__label = function(value) {\n  B._label = value;\n};\n\n\n" +
         		"Object.defineProperties(B, /** @lends {B} */ {\n/**\n  * @export\n  * @type {string} */\nhttp_$$ns_apache_org$2017$custom$namespace__label: {\nget: B.http_$$ns_apache_org$2017$custom$namespace__get__label,\nset: B.http_$$ns_apache_org$2017$custom$namespace__set__label}}\n);";
@@ -148,7 +148,7 @@ public class TestRoyaleAccessors extends ASTestBase
                 "import custom.custom_namespace;use namespace custom_namespace;public class B { public function B() {}; public function doStuff():void {var theLabel:String = B.label; B.label = theLabel;}; private static var _label:String; custom_namespace static function get label():String {return _label}; custom_namespace static function set label(value:String):void {_label = value};}",
                 IClassNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('B', B);\n\n\n/**\n * @export\n */\nB.prototype.doStuff = function() {\n  var /** @type {string} */ theLabel = B.http_$$ns_apache_org$2017$custom$namespace__label;\n  B.http_$$ns_apache_org$2017$custom$namespace__label = theLabel;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB._label = null;\n\n\n" +
+        String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n\n/**\n * @export\n */\nB.prototype.doStuff = function() {\n  var /** @type {string} */ theLabel = B.http_$$ns_apache_org$2017$custom$namespace__label;\n  B.http_$$ns_apache_org$2017$custom$namespace__label = theLabel;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB._label = null;\n\n\n" +
 				"B.http_$$ns_apache_org$2017$custom$namespace__get__label = function() {\n  return B._label;\n};\n\n\n" +
 				"B.http_$$ns_apache_org$2017$custom$namespace__set__label = function(value) {\n  B._label = value;\n};\n\n\n" +
         		"Object.defineProperties(B, /** @lends {B} */ {\n/**\n  * @export\n  * @type {string} */\nhttp_$$ns_apache_org$2017$custom$namespace__label: {\nget: B.http_$$ns_apache_org$2017$custom$namespace__get__label,\nset: B.http_$$ns_apache_org$2017$custom$namespace__set__label}}\n);";
@@ -162,7 +162,7 @@ public class TestRoyaleAccessors extends ASTestBase
                 "public function doStuff():void {label = 'hello, bye'; var theLabel:String = label;}; private var _label:String; [Bindable] public function get label():String {return _label}; public function set label(value:String):void {_label = value}; ",
                 IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        String expected ="/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @export\n */\nRoyaleTest_A.prototype.doStuff = function() {\n  this.label = 'hello, bye';\n  var /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nRoyaleTest_A.prototype._label = null;\n\n\n" +
+        String expected ="/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * @export\n */\nRoyaleTest_A.prototype.doStuff = function() {\n  this.label = 'hello, bye';\n  var /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nRoyaleTest_A.prototype._label = null;\n\n\n" +
                 "RoyaleTest_A.prototype.get__label = function() {\n  return this._label;\n};\n\n\n" +
                 "RoyaleTest_A.prototype.bindable__set__label_RoyaleTest_A = function(value) {\n" +
                 "  this._label = value;" +
@@ -191,7 +191,7 @@ public class TestRoyaleAccessors extends ASTestBase
                 "public function doStuff():void {label = 'hello, bye'; var theLabel:String = label;}; private var _label:String; [Bindable(\"change\")] public function get label():String {return _label}; public function set label(value:String):void {_label = value}; ",
                 IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @export\n */\nRoyaleTest_A.prototype.doStuff = function() {\n  this.label = 'hello, bye';\n  var /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nRoyaleTest_A.prototype._label = null;\n\n\n" +
+        String expected = "/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * @export\n */\nRoyaleTest_A.prototype.doStuff = function() {\n  this.label = 'hello, bye';\n  var /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nRoyaleTest_A.prototype._label = null;\n\n\n" +
 				"RoyaleTest_A.prototype.get__label = function() {\n  return this._label;\n};\n\n\n" +
 				"RoyaleTest_A.prototype.set__label = function(value) {\n  this._label = value;\n};\n\n\n" +
         		"Object.defineProperties(RoyaleTest_A.prototype, /** @lends {RoyaleTest_A.prototype} */ {\n/**\n  * @export\n  * @type {string} */\n" +
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleClass.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleClass.java
index 7246eb8..c1fdcac 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleClass.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleClass.java
@@ -48,7 +48,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A {public function A() { super(); }}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n  ;\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);");
+        assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n  ;\n};");
     }
 
     @Override
@@ -57,7 +57,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A extends TestImplementation {public function A() {}}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n */\norg.apache.royale.A = function() {\n  org.apache.royale.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);");
+        assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n */\norg.apache.royale.A = function() {\n  org.apache.royale.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);");
     }
 
     @Test
@@ -65,7 +65,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A extends TestImplementation {public function A(arg:String) { super(arg);}}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @param {string} arg\n */\norg.apache.royale.A = function(arg) {\n  org.apache.royale.A.base(this, 'constructor', arg);\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);");
+        assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @param {string} arg\n */\norg.apache.royale.A = function(arg) {\n  org.apache.royale.A.base(this, 'constructor', arg);\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);");
     }
 
     @Test
@@ -73,7 +73,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A extends TestImplementation {public function A(arg:String) {}}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @param {string} arg\n */\norg.apache.royale.A = function(arg) {\n  org.apache.royale.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);");
+        assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @param {string} arg\n */\norg.apache.royale.A = function(arg) {\n  org.apache.royale.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);");
     }
 
     @Override
@@ -82,7 +82,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A extends TestImplementation implements TestInterface {public function A() {}}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @implements {custom.TestInterface}\n */\norg.apache.royale.A = function() {\n  org.apache.royale.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);");
+        assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @implements {custom.TestInterface}\n */\norg.apache.royale.A = function() {\n  org.apache.royale.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);");
     }
 
     @Override
@@ -91,7 +91,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A extends TestImplementation implements TestInterface, TestOtherInterface {public function A() {}}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @implements {custom.TestInterface}\n * @implements {custom.TestOtherInterface}\n */\norg.apache.royale.A = function() {\n  org.apache.royale.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);");
+        assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @implements {custom.TestInterface}\n * @implements {custom.TestOtherInterface}\n */\norg.apache.royale.A = function() {\n  org.apache.royale.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);");
     }
 
     @Override
@@ -100,7 +100,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public final class A extends TestImplementation implements TestInterface, TestOtherInterface {public function A() {}}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @implements {custom.TestInterface}\n * @implements {custom.TestOtherInterface}\n */\norg.apache.royale.A = function() {\n  org.apache.royale.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);");
+        assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @implements {custom.TestInterface}\n * @implements {custom.TestOtherInterface}\n */\norg.apache.royale.A = function() {\n  org.apache.royale.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);");
     }
 
     @Override
@@ -109,7 +109,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A extends custom.TestImplementation implements custom.TestInterface, custom.TestOtherInterface {public function A() {}}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @implements {custom.TestInterface}\n * @implements {custom.TestOtherInterface}\n */\norg.apache.royale.A = function() {\n  org.apache.royale.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);");
+        assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @implements {custom.TestInterface}\n * @implements {custom.TestOtherInterface}\n */\norg.apache.royale.A = function() {\n  org.apache.royale.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);");
     }
 
     @Override
@@ -118,7 +118,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A extends custom.TestImplementation { public function A() { super('foo', 42);}}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n */\norg.apache.royale.A = function() {\n  org.apache.royale.A.base(this, 'constructor', 'foo', 42);\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);");
+        assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n */\norg.apache.royale.A = function() {\n  org.apache.royale.A.base(this, 'constructor', 'foo', 42);\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);");
     }
 
     @Test
@@ -126,7 +126,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B {public function B(arg1:String) {this.arg1 = arg1}; public var arg1:String;}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n * @param {string} arg1\n */\norg.apache.royale.B = function(arg1) {\n  this.arg1 = arg1;\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @type {string}\n */\norg.apache.royale.B.prototype.arg1 = null;";
+        String expected = "/**\n * @constructor\n * @param {string} arg1\n */\norg.apache.royale.B = function(arg1) {\n  this.arg1 = arg1;\n};\n\n\n/**\n * @export\n * @type {string}\n */\norg.apache.royale.B.prototype.arg1 = null;";
         assertOut(expected);
     }
 
@@ -135,7 +135,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B {public function B() {}; public var event:Event = new Event(); public function foo():String {return event.type;};}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n\nthis.event = new Event();\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @type {Event}\n */\norg.apache.royale.B.prototype.event = null;\n\n\n/**\n * @export\n * @return {string}\n */\norg.apache.royale.B.prototype.foo = function() {\n  return this.event.type;\n};";
+        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n\nthis.event = new Event();\n};\n\n\n/**\n * @export\n * @type {Event}\n */\norg.apache.royale.B.prototype.event = null;\n\n\n/**\n * @export\n * @return {string}\n */\norg.apache.royale.B.prototype.foo = function() {\n  return this.event.type;\n};";
         assertOut(expected);
     }
 
@@ -144,7 +144,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B {public function B() {}; public function foo():void {};}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n */\norg.apache.royale.B.prototype.foo = function() {\n};";
+        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n */\norg.apache.royale.B.prototype.foo = function() {\n};";
         assertOut(expected);
     }
 
@@ -153,7 +153,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B {public function B() {}; public function foo():int { var a:int = 123; return a; };}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @return {number}\n */\norg.apache.royale.B.prototype.foo = function() {\n  var /** @type {number} */ a = 123;\n  return a;\n};";
+        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n * @return {number}\n */\norg.apache.royale.B.prototype.foo = function() {\n  var /** @type {number} */ a = 123;\n  return a;\n};";
         assertOut(expected);
     }
 
@@ -162,7 +162,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B {public function B() {}; public function foo():int { var a:Number = 123.4; return a; };}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @return {number}\n */\norg.apache.royale.B.prototype.foo = function() {\n  var /** @type {number} */ a = 123.4;\n  return (a) >> 0;\n};";
+        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n * @return {number}\n */\norg.apache.royale.B.prototype.foo = function() {\n  var /** @type {number} */ a = 123.4;\n  return (a) >> 0;\n};";
         assertOut(expected);
     }
 
@@ -171,7 +171,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B {public function B() {}; public function foo():int { return 123.4 };}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @return {number}\n */\norg.apache.royale.B.prototype.foo = function() {\n  return 123;\n};";
+        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n * @return {number}\n */\norg.apache.royale.B.prototype.foo = function() {\n  return 123;\n};";
         assertOut(expected);
     }
 
@@ -180,7 +180,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B {public function B() {}; public function foo():uint { var a:uint = 123; return a; };}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @return {number}\n */\norg.apache.royale.B.prototype.foo = function() {\n  var /** @type {number} */ a = 123;\n  return a;\n};";
+        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n * @return {number}\n */\norg.apache.royale.B.prototype.foo = function() {\n  var /** @type {number} */ a = 123;\n  return a;\n};";
         assertOut(expected);
     }
 
@@ -189,7 +189,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B {public function B() {}; public function foo():uint { var a:Number = 123.4; return a; };}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @return {number}\n */\norg.apache.royale.B.prototype.foo = function() {\n  var /** @type {number} */ a = 123.4;\n  return (a) >>> 0;\n};";
+        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n * @return {number}\n */\norg.apache.royale.B.prototype.foo = function() {\n  var /** @type {number} */ a = 123.4;\n  return (a) >>> 0;\n};";
         assertOut(expected);
     }
 
@@ -198,7 +198,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B {public function B() {}; public function foo():uint { return 123.4 };}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @return {number}\n */\norg.apache.royale.B.prototype.foo = function() {\n  return 123;\n};";
+        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n * @return {number}\n */\norg.apache.royale.B.prototype.foo = function() {\n  return 123;\n};";
         assertOut(expected);
     }
 
@@ -207,7 +207,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B {public function B() {}; public function foo():Boolean { var a:Boolean = true; return a; };}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @return {boolean}\n */\norg.apache.royale.B.prototype.foo = function() {\n  var /** @type {boolean} */ a = true;\n  return a;\n};";
+        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n * @return {boolean}\n */\norg.apache.royale.B.prototype.foo = function() {\n  var /** @type {boolean} */ a = true;\n  return a;\n};";
         assertOut(expected);
     }
 
@@ -216,7 +216,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B {public function B() {}; public function foo():Boolean { var a:Number = 123.4; return a; };}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @return {boolean}\n */\norg.apache.royale.B.prototype.foo = function() {\n  var /** @type {number} */ a = 123.4;\n  return !!(a);\n};";
+        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n * @return {boolean}\n */\norg.apache.royale.B.prototype.foo = function() {\n  var /** @type {number} */ a = 123.4;\n  return !!(a);\n};";
         assertOut(expected);
     }
 
@@ -225,7 +225,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B {public function B() {}; public function foo():Boolean { return 123.4 };}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @return {boolean}\n */\norg.apache.royale.B.prototype.foo = function() {\n  return true;\n};";
+        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n * @return {boolean}\n */\norg.apache.royale.B.prototype.foo = function() {\n  return true;\n};";
         assertOut(expected);
     }
 
@@ -234,7 +234,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B {public function B() {}; override public function foo():void {};}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @override\n */\norg.apache.royale.B.prototype.foo = function() {\n};";
+        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n * @override\n */\norg.apache.royale.B.prototype.foo = function() {\n};";
         assertOut(expected);
     }
 
@@ -243,7 +243,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B {public function B() {}; override public function foo(value:Object):void {baz = ''};}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @override\n */\norg.apache.royale.B.prototype.foo = function(value) {\n  baz = '';\n};";
+        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n * @override\n */\norg.apache.royale.B.prototype.foo = function(value) {\n  baz = '';\n};";
         assertOut(expected);
     }
 
@@ -252,7 +252,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B {public function B() {}; override public function foo():void {super.foo();};}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @override\n */\norg.apache.royale.B.prototype.foo = function() {\n  org.apache.royale.B.superClass_.foo.apply(this);\n};";
+        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n * @override\n */\norg.apache.royale.B.prototype.foo = function() {\n  org.apache.royale.B.superClass_.foo.apply(this);\n};";
         assertOut(expected);
     }
 
@@ -261,7 +261,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B {public function B() {}; public function set baz(value:Object):void {}; public function set foo(value:Object):void {baz = value;};}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\norg.apache.royale.B.prototype.set__baz = function(value) {\n};\n\n\norg.apache.royale.B.prototype.set__foo = function(value) {\n  this.baz = value;\n};\n\n\nObject.defineProperties(org.apache.royale.B.prototype, /** @lends {org.apache.royale.B.prototype} */ {\n/ [...]
+        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\norg.apache.royale.B.prototype.set__baz = function(value) {\n};\n\n\norg.apache.royale.B.prototype.set__foo = function(value) {\n  this.baz = value;\n};\n\n\nObject.defineProperties(org.apache.royale.B.prototype, /** @lends {org.apache.royale.B.prototype} */ {\n/**\n  * @export\n  * @type {Object} */\nbaz: {\nset: org.apache.royale.B.prototype.set__baz},\n/**\n  * @export\n  * @type {Object}  [...]
         assertOut(expected);
     }
 
@@ -270,7 +270,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B extends A {public function B() {}; override public function set foo(value:Object):void {super.foo = value;};} class A {public function set foo(value:Object):void {}}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n * @extends {org.apache.royale.A}\n */\norg.apache.royale.B = function() {\n  org.apache.royale.B.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.B, org.apache.royale.A);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\norg.apache.royale.B.prototype.set__foo = function(value) {\n  org.apache.royale.B.superClass_.set__foo.apply(this, [ va [...]
+        String expected = "/**\n * @constructor\n * @extends {org.apache.royale.A}\n */\norg.apache.royale.B = function() {\n  org.apache.royale.B.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.B, org.apache.royale.A);\n\n\norg.apache.royale.B.prototype.set__foo = function(value) {\n  org.apache.royale.B.superClass_.set__foo.apply(this, [ value] );\n};\n\n\nObject.defineProperties(org.apache.royale.B.prototype, /** @lends {org.apache.royale.B.prototype} */ {\n/**\n  * @e [...]
         assertOut(expected);
     }
 
@@ -279,7 +279,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("import custom.custom_namespace; use namespace custom_namespace; public class B {public function B() {}; custom_namespace function foo():void {};}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n */\norg.apache.royale.B.prototype.http_$$ns_apache_org$2017$custom$namespace__foo = function() {\n};";
+        String expected = "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n */\norg.apache.royale.B.prototype.http_$$ns_apache_org$2017$custom$namespace__foo = function() {\n};";
         assertOut(expected);
     }
 
@@ -289,7 +289,7 @@ public class TestRoyaleClass extends TestGoogClass
     	FileNode node = (FileNode)getNode("package org.apache.royale {\npublic class B {public function B() {}; }} class A {public function get a():A {return null}}", FileNode.class, 0);
         asBlockWalker.visitFile(node);
         String expected = "/**\n * org.apache.royale.B\n *\n * @fileoverview\n *\n * @suppress {checkTypes|accessControls}\n */\n\ngoog.provide('org.apache.royale.B');\ngoog.provide('org.apache.royale.B.A');\n\n\n\n" +
-                          "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);" +
+                          "/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};" +
                           "\n\n\n/**\n" + 
                           " * Metadata\n" + 
                           " *\n" + 
@@ -328,12 +328,6 @@ public class TestRoyaleClass extends TestGoogClass
                           "};\n" + 
                           "\n" + 
                           "\n" + 
-                          "/**\n" + 
-                          " * Prevent renaming of class. Needed for reflection.\n" + 
-                          " */\n" + 
-                          "goog.exportSymbol('org.apache.royale.B.A', org.apache.royale.B.A);\n" + 
-                          "\n" + 
-                          "\n" + 
                           "org.apache.royale.B.A.prototype.get__a = function() {\n" + 
                           "  return null;\n" + 
                           "};\n" + 
@@ -386,7 +380,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A extends custom.TestImplementation {public function A(arg1:String, arg2:int) {}}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @param {string} arg1\n * @param {number} arg2\n */\norg.apache.royale.A = function(arg1, arg2) {\n  org.apache.royale.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);");
+        assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @param {string} arg1\n * @param {number} arg2\n */\norg.apache.royale.A = function(arg1, arg2) {\n  org.apache.royale.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);");
     }
 
     @Override
@@ -396,7 +390,7 @@ public class TestRoyaleClass extends TestGoogClass
         IClassNode node = getClassNode("public class A {public var a:Object;protected var b:String; "
                 + "private var c:int; internal var d:uint; var e:Number}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);\n\n\n/**\n * @export\n * @type {Object}\n */\norg.apache.royale.A.prototype.a = null;\n\n\n/**\n * @protected\n * @type {string}\n */\norg.apache.royale.A.prototype.b = null;\n\n\n/**\n * @private\n * @type {number}\n */\norg.apache.royale.A.prototype.c = 0;\n\n\n/**\n * @ty [...]
+        assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * @export\n * @type {Object}\n */\norg.apache.royale.A.prototype.a = null;\n\n\n/**\n * @protected\n * @type {string}\n */\norg.apache.royale.A.prototype.b = null;\n\n\n/**\n * @private\n * @type {number}\n */\norg.apache.royale.A.prototype.c = 0;\n\n\n/**\n * @type {number}\n */\norg.apache.royale.A.prototype.d = 0;\n\n\n/**\n * @type {number}\n */\norg.apache.royale.A.prototype.e = NaN;");
     }
 
     @Test
@@ -407,7 +401,7 @@ public class TestRoyaleClass extends TestGoogClass
         asBlockWalker.visitClass(node);
         assertOut("/**\n * @constructor\n" +
         		  " */\norg.apache.royale.A = function() {\n" +
-        		  "};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);\n\n\n" +
+        		  "};\n\n\n" +
         		  "/**\n" +
         		  " * @export\n" +
         		  " * @type {Object}\n" +
@@ -495,7 +489,7 @@ public class TestRoyaleClass extends TestGoogClass
         assertOut("/**\n * @constructor\n" +
         		  " */\norg.apache.royale.A = function() {\n\n" +
         		  "this.a_ = {foo:1};\n" +
-        		  "};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);\n\n\n" +
+        		  "};\n\n\n" +
         		  "/**\n" +
         		  " * @export\n" +
         		  " * @type {Object}\n" +
@@ -582,7 +576,7 @@ public class TestRoyaleClass extends TestGoogClass
         asBlockWalker.visitClass(node);
         assertOut("/**\n * @constructor\n" +
         		  " */\norg.apache.royale.A = function() {\n" +
-        		  "};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);\n\n\n" +
+        		  "};\n\n\n" +
         		  "/**\n" +
         		  " * @export\n" +
         		  " * @type {Object}\n" +
@@ -632,7 +626,7 @@ public class TestRoyaleClass extends TestGoogClass
         IClassNode node = getClassNode("public class A {public static var a:int = 10;public static var b:String = initStatic(); "
                 + "private static function initStatic():String { return \"foo\"; }}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);\n\n\n/**\n * @export\n * @nocollapse\n * @type {number}\n */\norg.apache.royale.A.a = 10;\n\n\n/**\n * @export\n * @nocollapse\n * @type {string}\n */\norg.apache.royale.A.b;\n\n\n/**\n * @private\n * @return {string}\n */\norg.apache.royale.A.initStatic = function() {\n  re [...]
+        assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * @export\n * @nocollapse\n * @type {number}\n */\norg.apache.royale.A.a = 10;\n\n\n/**\n * @export\n * @nocollapse\n * @type {string}\n */\norg.apache.royale.A.b;\n\n\n/**\n * @private\n * @return {string}\n */\norg.apache.royale.A.initStatic = function() {\n  return \"foo\";\n};\n\norg.apache.royale.A.b = org.apache.royale.A.initStatic();\n\n");
     }
     
     @Test
@@ -640,7 +634,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         FileNode node = (FileNode)getNode("package org.apache.royale {\npublic class A {\nimport flash.display.Sprite; Sprite;\n}}", FileNode.class, 0);
         asBlockWalker.visitFile(node);
-        assertOut("/**\n * org.apache.royale.A\n *\n * @fileoverview\n *\n * @suppress {checkTypes|accessControls}\n */\n\ngoog.provide('org.apache.royale.A');\n\n\n\n/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);");
+        assertOut("/**\n * org.apache.royale.A\n *\n * @fileoverview\n *\n * @suppress {checkTypes|accessControls}\n */\n\ngoog.provide('org.apache.royale.A');\n\n\n\n/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};");
     }
     
     @Override
@@ -653,7 +647,7 @@ public class TestRoyaleClass extends TestGoogClass
                 + "private static const C:Number = 42;"
                 + "custom_namespace static const C:String = 'me' + 'you';}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);\n\n\n/**\n * @export\n * @nocollapse\n * @const\n * @type {number}\n */\norg.apache.royale.A.A = 42;\n\n\n/**\n * @protected\n * @nocollapse\n * @const\n * @type {number}\n */\norg.apache.royale.A.B = 42;\n\n\n/**\n * @private\n * @const\n * @type {number}\n */\norg.apache.r [...]
+        assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * @export\n * @nocollapse\n * @const\n * @type {number}\n */\norg.apache.royale.A.A = 42;\n\n\n/**\n * @protected\n * @nocollapse\n * @const\n * @type {number}\n */\norg.apache.royale.A.B = 42;\n\n\n/**\n * @private\n * @const\n * @type {number}\n */\norg.apache.royale.A.C = 42;\n\n\n/**\n * @const\n * @type {string}\n */\norg.apache.royale.A.http_$$ns_apache_org$2017$custom$namespace__C = 'me [...]
     }
 
     @Override
@@ -672,7 +666,7 @@ public class TestRoyaleClass extends TestGoogClass
                 + "custom_namespace function get foo6():Object{return null;}"
                 + "custom_namespace function set foo6(value:Object):void{}" + "}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);\n\n\n" +
+        assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n" +
         		"org.apache.royale.A.prototype.get__foo1 = function() {\n  return null;\n};\n\n\n" +
         		"org.apache.royale.A.prototype.set__foo1 = function(value) {\n};\n\n\n" +
         		"org.apache.royale.A.prototype.get__foo2 = function() {\n  return null;\n};\n\n\n" +
@@ -707,7 +701,7 @@ public class TestRoyaleClass extends TestGoogClass
                 + "public static function foo7(value:Object):void{}"
                 + "custom_namespace static function foo7(value:Object):void{}" + "}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);\n\n\n/**\n * @export\n * @return {Object}\n */\norg.apache.royale.A.prototype.foo1 = function() {\n  return null;\n};\n\n\n/**\n * @export\n * @return {Object}\n */\norg.apache.royale.A.prototype.foo1a = function() {\n  return null;\n};\n\n\n/**\n * @export\n * @override\n * [...]
+        assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * @export\n * @return {Object}\n */\norg.apache.royale.A.prototype.foo1 = function() {\n  return null;\n};\n\n\n/**\n * @export\n * @return {Object}\n */\norg.apache.royale.A.prototype.foo1a = function() {\n  return null;\n};\n\n\n/**\n * @export\n * @override\n */\norg.apache.royale.A.prototype.foo1b = function() {\n  return org.apache.royale.A.superClass_.foo1b.apply(this);\n};\n\n\n/**\n *  [...]
     }
 
     @Test
@@ -718,7 +712,7 @@ public class TestRoyaleClass extends TestGoogClass
                 + "public function foo2():Object{function bar2(param1:Object):Object {return null;}; return bar2('foo');}"
                 + "}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @return {Object}\n */\norg.apache.royale.B.prototype.foo1 = function() {\n  var self = this;\n  function bar1() {\n    return null;\n  };\n  return bar1();\n};\n\n\n/**\n * @export\n * @return {Object}\n */\norg.apache.royale.B.prototype.foo2 = funct [...]
+        assertOut("/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n * @return {Object}\n */\norg.apache.royale.B.prototype.foo1 = function() {\n  var self = this;\n  function bar1() {\n    return null;\n  };\n  return bar1();\n};\n\n\n/**\n * @export\n * @return {Object}\n */\norg.apache.royale.B.prototype.foo2 = function() {\n  var self = this;\n  function bar2(param1) {\n    return null;\n  };\n  return bar2('foo');\n};");
     }
 
     @Test
@@ -730,7 +724,7 @@ public class TestRoyaleClass extends TestGoogClass
                 + "public function foo2():String{function bar2(param1:String):String {return param1 + baz1;}; return bar2('foo');}"
                 + "}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @type {string}\n */\norg.apache.royale.B.prototype.baz1 = null;\n\n\n/**\n * @export\n * @return {string}\n */\norg.apache.royale.B.prototype.foo1 = function() {\n  var self = this;\n  function bar1() {\n    return self.baz1;\n  };\n  return bar1();\ [...]
+        assertOut("/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n * @type {string}\n */\norg.apache.royale.B.prototype.baz1 = null;\n\n\n/**\n * @export\n * @return {string}\n */\norg.apache.royale.B.prototype.foo1 = function() {\n  var self = this;\n  function bar1() {\n    return self.baz1;\n  };\n  return bar1();\n};\n\n\n/**\n * @export\n * @return {string}\n */\norg.apache.royale.B.prototype.foo2 = function() {\n  var self = this;\n  functio [...]
     }
 
     @Test
@@ -750,7 +744,7 @@ public class TestRoyaleClass extends TestGoogClass
                 + "public function clone():B { return new B() }"
                 + "}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.B', org.apache.royale.B);\n\n\n/**\n * @export\n * @return {org.apache.royale.B}\n */\norg.apache.royale.B.prototype.clone = function() {\n  return new org.apache.royale.B();\n};");
+        assertOut("/**\n * @constructor\n */\norg.apache.royale.B = function() {\n};\n\n\n/**\n * @export\n * @return {org.apache.royale.B}\n */\norg.apache.royale.B.prototype.clone = function() {\n  return new org.apache.royale.B();\n};");
     }
 
     @Override
@@ -759,7 +753,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A{}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);");
+        assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};");
     }
 
     @Override
@@ -770,7 +764,7 @@ public class TestRoyaleClass extends TestGoogClass
         //               in JS we ignore it
         IClassNode node = getClassNode("internal class A{}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);");
+        assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};");
     }
 
     @Override
@@ -781,7 +775,7 @@ public class TestRoyaleClass extends TestGoogClass
         //               in JS we ignore it
         IClassNode node = getClassNode("public final class A{}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);");
+        assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};");
     }
 
     @Override
@@ -791,7 +785,7 @@ public class TestRoyaleClass extends TestGoogClass
         // (erikdebruin) all JS objects are 'dynamic' by design
         IClassNode node = getClassNode("public dynamic class A{}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);");
+        assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};");
     }
 
     @Override
@@ -800,7 +794,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A implements TestInterface {public function A() {}}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @implements {custom.TestInterface}\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);");
+        assertOut("/**\n * @constructor\n * @implements {custom.TestInterface}\n */\norg.apache.royale.A = function() {\n};");
     }
 
     @Override
@@ -809,7 +803,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A implements TestInterface, TestOtherInterface {public function A() {}}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @implements {custom.TestInterface}\n * @implements {custom.TestOtherInterface}\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);");
+        assertOut("/**\n * @constructor\n * @implements {custom.TestInterface}\n * @implements {custom.TestOtherInterface}\n */\norg.apache.royale.A = function() {\n};");
     }
 
 
@@ -819,7 +813,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A {public function A() { }}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);");
+        assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};");
     }
 
 
@@ -829,7 +823,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A {public function A(arg1:String, arg2:int) {}}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @param {string} arg1\n * @param {number} arg2\n */\norg.apache.royale.A = function(arg1, arg2) {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);");
+        assertOut("/**\n * @constructor\n * @param {string} arg1\n * @param {number} arg2\n */\norg.apache.royale.A = function(arg1, arg2) {\n};");
     }
 
     @Test
@@ -837,7 +831,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A {public function A(arg1:String, arg2:int) {arg2 = arg2 + 2;} public var foo:Array = [];}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @param {string} arg1\n * @param {number} arg2\n */\norg.apache.royale.A = function(arg1, arg2) {\n  \n  this.foo = [];\n  arg2 = (arg2 + 2) >> 0;\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);\n\n\n/**\n * @export\n * @type {Array}\n */\norg.apache.royale.A.prototype.foo = null;");
+        assertOut("/**\n * @constructor\n * @param {string} arg1\n * @param {number} arg2\n */\norg.apache.royale.A = function(arg1, arg2) {\n  \n  this.foo = [];\n  arg2 = (arg2 + 2) >> 0;\n};\n\n\n/**\n * @export\n * @type {Array}\n */\norg.apache.royale.A.prototype.foo = null;");
     }
 
     @Test
@@ -845,7 +839,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("import custom.custom_namespace; use namespace custom_namespace; public class A {public function A(arg1:String, arg2:int) {arg2 = arg2 + 2;} custom_namespace var foo:Array = [];}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @param {string} arg1\n * @param {number} arg2\n */\norg.apache.royale.A = function(arg1, arg2) {\n  \n  this.http_$$ns_apache_org$2017$custom$namespace__foo = [];\n  arg2 = (arg2 + 2) >> 0;\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);\n\n\n/**\n * @type {Array}\n */\norg.apache.royale.A.prototype.http_$$ns_apache_org$2017$custom$namespace__foo = null;");
+        assertOut("/**\n * @constructor\n * @param {string} arg1\n * @param {number} arg2\n */\norg.apache.royale.A = function(arg1, arg2) {\n  \n  this.http_$$ns_apache_org$2017$custom$namespace__foo = [];\n  arg2 = (arg2 + 2) >> 0;\n};\n\n\n/**\n * @type {Array}\n */\norg.apache.royale.A.prototype.http_$$ns_apache_org$2017$custom$namespace__foo = null;");
     }
 
     @Test
@@ -853,7 +847,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A extends TestImplementation {public function A(arg1:String, arg2:int) {arg2 = arg2 + 2;} public var foo:Array = [];}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @param {string} arg1\n * @param {number} arg2\n */\norg.apache.royale.A = function(arg1, arg2) {\n  org.apache.royale.A.base(this, 'constructor');\n  \n  this.foo = [];\n  arg2 = (arg2 + 2) >> 0;\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);\n\n\n/**\n  [...]
+        assertOut("/**\n * @constructor\n * @extends {custom.TestImplementation}\n * @param {string} arg1\n * @param {number} arg2\n */\norg.apache.royale.A = function(arg1, arg2) {\n  org.apache.royale.A.base(this, 'constructor');\n  \n  this.foo = [];\n  arg2 = (arg2 + 2) >> 0;\n};\ngoog.inherits(org.apache.royale.A, custom.TestImplementation);\n\n\n/**\n * @export\n * @type {Array}\n */\norg.apache.royale.A.prototype.foo = null;");
     }
 
     @Test
@@ -861,7 +855,7 @@ public class TestRoyaleClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A {public static const NAME:String = 'Dummy'; public function A(arg1:String = NAME) {_name = arg1;} private var _name:String;}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @param {string=} arg1\n */\norg.apache.royale.A = function(arg1) {\n  arg1 = typeof arg1 !== 'undefined' ? arg1 : org.apache.royale.A.NAME;\n  this._name = arg1;\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);\n\n\n/**\n * @export\n * @nocollapse\n * @const\n * @type {string}\n */\norg.apache.royale.A.NAME = 'Dummy';\n\n\n/**\n * @private\n * @type {string}\ [...]
+        assertOut("/**\n * @constructor\n * @param {string=} arg1\n */\norg.apache.royale.A = function(arg1) {\n  arg1 = typeof arg1 !== 'undefined' ? arg1 : org.apache.royale.A.NAME;\n  this._name = arg1;\n};\n\n\n/**\n * @export\n * @nocollapse\n * @const\n * @type {string}\n */\norg.apache.royale.A.NAME = 'Dummy';\n\n\n/**\n * @private\n * @type {string}\n */\norg.apache.royale.A.prototype._name = null;");
     }
     
     protected IBackend createBackend()
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleEmitter.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleEmitter.java
index af42aec..95cf7b7 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleEmitter.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleEmitter.java
@@ -86,12 +86,6 @@ public class TestRoyaleEmitter extends TestGoogEmitter
 					"\n" +
 					"\n" +
 					"/**\n" +
-					" * Prevent renaming of class. Needed for reflection.\n" +
-					" */\n" +
-					"goog.exportSymbol('com.example.components.MyEventTarget', com.example.components.MyEventTarget);\n" +
-					"\n" +
-					"\n" +
-					"/**\n" +
 					" * @private\n" +
 					" * @type {string}\n" +
 					" */\n" +
@@ -178,12 +172,6 @@ public class TestRoyaleEmitter extends TestGoogEmitter
 				"\n" +
 				"\n" +
 				"/**\n" +
-				" * Prevent renaming of class. Needed for reflection.\n" +
-				" */\n" +
-				"goog.exportSymbol('com.example.components.TestInterface', com.example.components.TestInterface);\n" +
-				"\n" +
-				"\n" +
-				"/**\n" +
 				" * Metadata\n" +
 				" *\n" +
 				" * @type {Object.<string, Array.<Object>>}\n" +
@@ -235,12 +223,6 @@ public class TestRoyaleEmitter extends TestGoogEmitter
 				"\n" +
 				"\n" +
 				"/**\n" +
-				" * Prevent renaming of class. Needed for reflection.\n" +
-				" */\n" +
-				"goog.exportSymbol('com.example.components.TestClass', com.example.components.TestClass);\n" +
-				"\n" +
-				"\n" +
-				"/**\n" +
 				" * Metadata\n" +
 				" *\n" +
 				" * @type {Object.<string, Array.<Object>>}\n" +
@@ -300,12 +282,6 @@ public class TestRoyaleEmitter extends TestGoogEmitter
 				"\n" +
 				"\n" +
 				"/**\n" +
-				" * Prevent renaming of class. Needed for reflection.\n" +
-				" */\n" +
-				"goog.exportSymbol('com.example.components.TestClass', com.example.components.TestClass);\n" +
-				"\n" +
-				"\n" +
-				"/**\n" +
 				" * Metadata\n" +
 				" *\n" +
 				" * @type {Object.<string, Array.<Object>>}\n" +
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleExpressions.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleExpressions.java
index 631df2c..a9a7c26 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleExpressions.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleExpressions.java
@@ -116,10 +116,6 @@ public class TestRoyaleExpressions extends TestGoogExpressions
         		  "RoyaleTest_A = function() {\n" +
         		  "};\n\n\n" +
         		  "/**\n" +
-        		  " * Prevent renaming of class. Needed for reflection.\n" +
-        		  " */\n" +
-        		  "goog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n" +
-        		  "/**\n" +
         		  " * @export\n" +
         		  " * @override\n" +
         		  " */\n" +
@@ -1121,7 +1117,7 @@ public class TestRoyaleExpressions extends TestGoogExpressions
                 "public class B {public static function b(ff:Function) { function c(f:Function):void {}; c(ff); }}",
                 IFunctionNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitFunction(node);
-        assertOut("/**\n * @export\n * @param {Function} ff\n */\nB.b = function(ff) {\n  function c(f) {\n  };\n  c(ff);\n}");
+        assertOut("/**\n * @param {Function} ff\n */\nB.b = function(ff) {\n  function c(f) {\n  };\n  c(ff);\n}");
     }
 
     @Test
@@ -1141,7 +1137,7 @@ public class TestRoyaleExpressions extends TestGoogExpressions
                 "public class B {static public function b() { function c(f:Function):void {}; c(b); }}",
                 IFunctionNode.class, WRAP_LEVEL_PACKAGE, true);
         asBlockWalker.visitFunction(node);
-        assertOut("/**\n * @export\n */\nfoo.bar.B.b = function() {\n  function c(f) {\n  };\n  c(foo.bar.B.b);\n}");
+        assertOut("/**\n */\nfoo.bar.B.b = function() {\n  function c(f) {\n  };\n  c(foo.bar.B.b);\n}");
     }
 
     @Test
@@ -1211,7 +1207,7 @@ public class TestRoyaleExpressions extends TestGoogExpressions
                 "public class B {static public function b() { function c(f:Function):void {}; var f:Function = b; c(f); }}",
                 IFunctionNode.class, WRAP_LEVEL_PACKAGE, true);
         asBlockWalker.visitFunction(node);
-        assertOut("/**\n * @export\n */\nfoo.bar.B.b = function() {\n  function c(f) {\n  };\n  var /** @type {Function} */ f = foo.bar.B.b;\n  c(f);\n}");
+        assertOut("/**\n */\nfoo.bar.B.b = function() {\n  function c(f) {\n  };\n  var /** @type {Function} */ f = foo.bar.B.b;\n  c(f);\n}");
     }
     
     @Test
@@ -1221,7 +1217,7 @@ public class TestRoyaleExpressions extends TestGoogExpressions
                 "public class B {static public function b() { function c(f:Function):void {}; var f:Function = foo.bar.B.b; c(f); }}",
                 IFunctionNode.class, WRAP_LEVEL_PACKAGE, true);
         asBlockWalker.visitFunction(node);
-        assertOut("/**\n * @export\n */\nfoo.bar.B.b = function() {\n  function c(f) {\n  };\n  var /** @type {Function} */ f = foo.bar.B.b;\n  c(f);\n}");
+        assertOut("/**\n */\nfoo.bar.B.b = function() {\n  function c(f) {\n  };\n  var /** @type {Function} */ f = foo.bar.B.b;\n  c(f);\n}");
     }
     
     @Test
@@ -1241,7 +1237,7 @@ public class TestRoyaleExpressions extends TestGoogExpressions
                 "public class B {static public function b() { function c(f:Function):void {}; var f:Function = null; f = b; c(f); }}",
                 IFunctionNode.class, WRAP_LEVEL_PACKAGE, true);
         asBlockWalker.visitFunction(node);
-        assertOut("/**\n * @export\n */\nfoo.bar.B.b = function() {\n  function c(f) {\n  };\n  var /** @type {Function} */ f = null;\n  f = foo.bar.B.b;\n  c(f);\n}");
+        assertOut("/**\n */\nfoo.bar.B.b = function() {\n  function c(f) {\n  };\n  var /** @type {Function} */ f = null;\n  f = foo.bar.B.b;\n  c(f);\n}");
     }
     
     @Test
@@ -1261,7 +1257,7 @@ public class TestRoyaleExpressions extends TestGoogExpressions
                 "public class B {static public function b() { function c(f:Function):void {}; var f:Array = [b]; c(f); }}",
                 IFunctionNode.class, WRAP_LEVEL_PACKAGE, true);
         asBlockWalker.visitFunction(node);
-        assertOut("/**\n * @export\n */\nfoo.bar.B.b = function() {\n  function c(f) {\n  };\n  var /** @type {Array} */ f = [foo.bar.B.b];\n  c(f);\n}");
+        assertOut("/**\n */\nfoo.bar.B.b = function() {\n  function c(f) {\n  };\n  var /** @type {Array} */ f = [foo.bar.B.b];\n  c(f);\n}");
     }
     
     @Test
@@ -1325,7 +1321,7 @@ public class TestRoyaleExpressions extends TestGoogExpressions
     {
         IClassNode node = (IClassNode) getNode("import custom.TestOtherInterface; public class B implements TestOtherInterface { public function B() { TestOtherInterface(b).type = ''; } }", ClassNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @implements {custom.TestOtherInterface}\n */\nB = function() {\n  org.apache.royale.utils.Language.as(b, custom.TestOtherInterface, true).type = '';\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('B', B);");
+        assertOut("/**\n * @constructor\n * @implements {custom.TestOtherInterface}\n */\nB = function() {\n  org.apache.royale.utils.Language.as(b, custom.TestOtherInterface, true).type = '';\n};");
     }
 
     @Test
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleFieldMembers.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleFieldMembers.java
index f92714a..33005cd 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleFieldMembers.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleFieldMembers.java
@@ -159,7 +159,7 @@ public class TestRoyaleFieldMembers extends TestGoogFieldMembers
     	IClassNode node = (IClassNode) getNode("protected var foo:Foo = new Foo('bar', 42);",
     			IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n\nthis.foo = new Foo('bar', 42);\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @protected\n * @type {Foo}\n */\nRoyaleTest_A.prototype.foo;");
+        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n\nthis.foo = new Foo('bar', 42);\n};\n\n\n/**\n * @protected\n * @type {Foo}\n */\nRoyaleTest_A.prototype.foo;");
     }
 
     @Test
@@ -192,7 +192,7 @@ public class TestRoyaleFieldMembers extends TestGoogFieldMembers
     	IClassNode node = (IClassNode) getNode("protected var foo:Array = [ 'foo' ]",
         		IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n\nthis.foo = ['foo'];\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @protected\n * @type {Array}\n */\nRoyaleTest_A.prototype.foo;");
+        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n\nthis.foo = ['foo'];\n};\n\n\n/**\n * @protected\n * @type {Array}\n */\nRoyaleTest_A.prototype.foo;");
     }
     
     @Test
@@ -201,7 +201,7 @@ public class TestRoyaleFieldMembers extends TestGoogFieldMembers
     	IClassNode node = (IClassNode) getNode("protected var foo:Object = { 'foo': 'bar' }",
         		IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n\nthis.foo = {'foo':'bar'};\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @protected\n * @type {Object}\n */\nRoyaleTest_A.prototype.foo;");
+        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n\nthis.foo = {'foo':'bar'};\n};\n\n\n/**\n * @protected\n * @type {Object}\n */\nRoyaleTest_A.prototype.foo;");
     }
     
     @Test
@@ -210,7 +210,7 @@ public class TestRoyaleFieldMembers extends TestGoogFieldMembers
     	IClassNode node = (IClassNode) getNode("import custom.custom_namespace;use namespace custom_namespace;public static var foo:Object = initFoo(); custom_namespace static function initFoo():Object { return null; }",
         		IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @export\n * @type {Object}\n */\nRoyaleTest_A.foo;\n\n\n/**\n * @export\n * @return {Object}\n */\nRoyaleTest_A.http_$$ns_apache_org$2017$custom$namespace__initFoo = function() {\n  return null;\n};\n\nRoyaleTest_A.foo = RoyaleTest_A.http_$$ns_apache_org$2017$custom$namespace__initF [...]
+        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * @export\n * @type {Object}\n */\nRoyaleTest_A.foo;\n\n\n/**\n * @return {Object}\n */\nRoyaleTest_A.http_$$ns_apache_org$2017$custom$namespace__initFoo = function() {\n  return null;\n};\n\nRoyaleTest_A.foo = RoyaleTest_A.http_$$ns_apache_org$2017$custom$namespace__initFoo();\n\n");
     }
     
     @Test
@@ -219,7 +219,7 @@ public class TestRoyaleFieldMembers extends TestGoogFieldMembers
     	IClassNode node = (IClassNode) getNode("static public var foo:Object = { 'foo': 'bar' }",
         		IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @export\n * @type {Object}\n */\nRoyaleTest_A.foo = {'foo':'bar'};");
+        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * @export\n * @type {Object}\n */\nRoyaleTest_A.foo = {'foo':'bar'};");
     }
     
     @Test
@@ -228,7 +228,7 @@ public class TestRoyaleFieldMembers extends TestGoogFieldMembers
     	IClassNode node = (IClassNode) getNode("protected var foo:Number = parseFloat('1E2')",
         		IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n\nthis.foo = parseFloat('1E2');\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @protected\n * @type {number}\n */\nRoyaleTest_A.prototype.foo;");
+        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n\nthis.foo = parseFloat('1E2');\n};\n\n\n/**\n * @protected\n * @type {number}\n */\nRoyaleTest_A.prototype.foo;");
     }
     
     @Test
@@ -237,7 +237,7 @@ public class TestRoyaleFieldMembers extends TestGoogFieldMembers
     	IClassNode node = (IClassNode) getNode("private static var empty:Function = function():void {}",
         		IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @private\n * @type {Function}\n */\nRoyaleTest_A.empty = function() {\n};");
+        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * @private\n * @type {Function}\n */\nRoyaleTest_A.empty = function() {\n};");
     }
     
     @Override
@@ -318,7 +318,7 @@ public class TestRoyaleFieldMembers extends TestGoogFieldMembers
     	IClassNode node = (IClassNode) getNode("protected const foo:Number = parseFloat('1E2');",
     			IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n\nthis.foo = parseFloat('1E2');\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @protected\n * @const\n * @type {number}\n */\nRoyaleTest_A.prototype.foo;");
+        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n\nthis.foo = parseFloat('1E2');\n};\n\n\n/**\n * @protected\n * @const\n * @type {number}\n */\nRoyaleTest_A.prototype.foo;");
     }
     
     @Test
@@ -327,7 +327,7 @@ public class TestRoyaleFieldMembers extends TestGoogFieldMembers
     	IClassNode node = (IClassNode) getNode("protected const foo:Array = [ 'foo' ]",
         		IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n\nthis.foo = ['foo'];\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @protected\n * @const\n * @type {Array}\n */\nRoyaleTest_A.prototype.foo;");
+        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n\nthis.foo = ['foo'];\n};\n\n\n/**\n * @protected\n * @const\n * @type {Array}\n */\nRoyaleTest_A.prototype.foo;");
     }
     
     @Test
@@ -336,7 +336,7 @@ public class TestRoyaleFieldMembers extends TestGoogFieldMembers
     	IClassNode node = (IClassNode) getNode("protected const foo:Object = { 'foo': 'bar' }",
         		IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n\nthis.foo = {'foo':'bar'};\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @protected\n * @const\n * @type {Object}\n */\nRoyaleTest_A.prototype.foo;");
+        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n\nthis.foo = {'foo':'bar'};\n};\n\n\n/**\n * @protected\n * @const\n * @type {Object}\n */\nRoyaleTest_A.prototype.foo;");
     }
 
     @Override
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleInterface.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleInterface.java
index 6dc1bca..ce6b83b 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleInterface.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleInterface.java
@@ -40,7 +40,7 @@ public class TestRoyaleInterface extends TestGoogInterface
     {
         IInterfaceNode node = getInterfaceNode("public interface IA{}");
         asBlockWalker.visitInterface(node);
-        assertOut("/**\n * @interface\n */\nIA = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('IA', IA);");
+        assertOut("/**\n * @interface\n */\nIA = function() {\n};");
     }
 
     @Override
@@ -49,7 +49,7 @@ public class TestRoyaleInterface extends TestGoogInterface
     {
         IInterfaceNode node = getInterfaceNode("public interface IA extends IB{}");
         asBlockWalker.visitInterface(node);
-        assertOut("/**\n * @interface\n * @extends {IB}\n */\nIA = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('IA', IA);");
+        assertOut("/**\n * @interface\n * @extends {IB}\n */\nIA = function() {\n};");
     }
 
     @Override
@@ -58,7 +58,7 @@ public class TestRoyaleInterface extends TestGoogInterface
     {
         IInterfaceNode node = getInterfaceNode("public interface IA extends IB, IC, ID {}");
         asBlockWalker.visitInterface(node);
-        assertOut("/**\n * @interface\n * @extends {IB}\n * @extends {IC}\n * @extends {ID}\n */\nIA = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('IA', IA);");
+        assertOut("/**\n * @interface\n * @extends {IB}\n * @extends {IC}\n * @extends {ID}\n */\nIA = function() {\n};");
     }
 
     @Override
@@ -67,7 +67,7 @@ public class TestRoyaleInterface extends TestGoogInterface
     {
         IInterfaceNode node = getInterfaceNode("public interface IA extends foo.bar.IB, baz.goo.IC, foo.ID {}");
         asBlockWalker.visitInterface(node);
-        assertOut("/**\n * @interface\n * @extends {foo.bar.IB}\n * @extends {baz.goo.IC}\n * @extends {foo.ID}\n */\nIA = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('IA', IA);");
+        assertOut("/**\n * @interface\n * @extends {foo.bar.IB}\n * @extends {baz.goo.IC}\n * @extends {foo.ID}\n */\nIA = function() {\n};");
     }
 
 
@@ -79,7 +79,7 @@ public class TestRoyaleInterface extends TestGoogInterface
                 + "function get foo1():Object;"
                 + "function set foo1(value:Object):void;}");
         asBlockWalker.visitInterface(node);
-        assertOut("/**\n * @interface\n */\nIA = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('IA', IA);\n/**  * @type {Object}\n */IA.prototype.foo1;");
+        assertOut("/**\n * @interface\n */\nIA = function() {\n};\n/**  * @type {Object}\n */IA.prototype.foo1;");
     }
 
     @Override
@@ -90,7 +90,7 @@ public class TestRoyaleInterface extends TestGoogInterface
                 + "function baz1():Object;"
                 + "function baz2(value:Object):void;}");
         asBlockWalker.visitInterface(node);
-        assertOut("/**\n * @interface\n */\nIA = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('IA', IA);\n/**\n * @export\n * @return {Object}\n */\nIA.prototype.baz1 = function() {\n};\n/**\n * @export\n * @param {Object} value\n */\nIA.prototype.baz2 = function(value) {\n};");
+        assertOut("/**\n * @interface\n */\nIA = function() {\n};\n/**\n * @export\n * @return {Object}\n */\nIA.prototype.baz1 = function() {\n};\n/**\n * @export\n * @param {Object} value\n */\nIA.prototype.baz2 = function(value) {\n};");
     }
 
     @Override
@@ -103,7 +103,7 @@ public class TestRoyaleInterface extends TestGoogInterface
                 + "function baz1():Object;"
                 + "function baz2(value:Object):void;}");
         asBlockWalker.visitInterface(node);
-        assertOut("/**\n * @interface\n */\nIA = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('IA', IA);\n/**  * @type {Object}\n */IA.prototype.foo1;\n/**\n * @export\n * @return {Object}\n */\nIA.prototype.baz1 = function() {\n};\n/**\n * @export\n * @param {Object} value\n */\nIA.prototype.baz2 = function(value) {\n};");
+        assertOut("/**\n * @interface\n */\nIA = function() {\n};\n/**  * @type {Object}\n */IA.prototype.foo1;\n/**\n * @export\n * @return {Object}\n */\nIA.prototype.baz1 = function() {\n};\n/**\n * @export\n * @param {Object} value\n */\nIA.prototype.baz2 = function(value) {\n};");
     }
 
     protected IBackend createBackend()
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleMethodMembers.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleMethodMembers.java
index b7664c2..54a7263 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleMethodMembers.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleMethodMembers.java
@@ -113,7 +113,7 @@ public class TestRoyaleMethodMembers extends TestGoogMethodMembers
     {
         IClassNode node = (IClassNode) getNode("public function RoyaleTest_A(){this.foo();}; private function foo():String{return '';};", IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n  this.foo();\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @private\n * @return {string}\n */\nRoyaleTest_A.prototype.foo = function() {\n  return '';\n};");
+        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n  this.foo();\n};\n\n\n/**\n * @private\n * @return {string}\n */\nRoyaleTest_A.prototype.foo = function() {\n  return '';\n};");
     }
 
     @Test
@@ -121,7 +121,7 @@ public class TestRoyaleMethodMembers extends TestGoogMethodMembers
     {
         IClassNode node = (IClassNode) getNode("public function RoyaleTest_A(){foo();}; private function foo():String{return '';};", IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n  this.foo();\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @private\n * @return {string}\n */\nRoyaleTest_A.prototype.foo = function() {\n  return '';\n};");
+        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n  this.foo();\n};\n\n\n/**\n * @private\n * @return {string}\n */\nRoyaleTest_A.prototype.foo = function() {\n  return '';\n};");
     }
 
     @Override
@@ -130,7 +130,7 @@ public class TestRoyaleMethodMembers extends TestGoogMethodMembers
     {
         IClassNode node = (IClassNode) getNode("public function RoyaleTest_A(){}; private var baz:String; private function foo():String{return this.baz;};", IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-         assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @private\n * @type {string}\n */\nRoyaleTest_A.prototype.baz;\n\n\n/**\n * @private\n * @return {string}\n */\nRoyaleTest_A.prototype.foo = function() {\n  return this.baz;\n};");
+         assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * @private\n * @type {string}\n */\nRoyaleTest_A.prototype.baz;\n\n\n/**\n * @private\n * @return {string}\n */\nRoyaleTest_A.prototype.foo = function() {\n  return this.baz;\n};");
     }
 
     @Test
@@ -138,7 +138,7 @@ public class TestRoyaleMethodMembers extends TestGoogMethodMembers
     {
         IClassNode node = (IClassNode) getNode("public function RoyaleTest_A(){}; private var baz:String; private function foo():String{return baz;};", IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-         assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @private\n * @type {string}\n */\nRoyaleTest_A.prototype.baz;\n\n\n/**\n * @private\n * @return {string}\n */\nRoyaleTest_A.prototype.foo = function() {\n  return this.baz;\n};");
+         assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * @private\n * @type {string}\n */\nRoyaleTest_A.prototype.baz;\n\n\n/**\n * @private\n * @return {string}\n */\nRoyaleTest_A.prototype.foo = function() {\n  return this.baz;\n};");
     }
 
     @Override
@@ -147,7 +147,7 @@ public class TestRoyaleMethodMembers extends TestGoogMethodMembers
     {
         IClassNode node = (IClassNode) getNode("public function RoyaleTest_A(){}; private function foo(value:int):String{return value;}; private function bar():String{if(true){while(i){return this.foo(42);}}};", IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @private\n * @param {number} value\n * @return {string}\n */\nRoyaleTest_A.prototype.foo = function(value) {\n  return org.apache.royale.utils.Language.string(value);\n};\n\n\n/**\n * @private\n * @return {string}\n */\nRoyaleTest_A.prototype.bar = function() {\n  if (true) {\n    w [...]
+        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * @private\n * @param {number} value\n * @return {string}\n */\nRoyaleTest_A.prototype.foo = function(value) {\n  return org.apache.royale.utils.Language.string(value);\n};\n\n\n/**\n * @private\n * @return {string}\n */\nRoyaleTest_A.prototype.bar = function() {\n  if (true) {\n    while (i) {\n      return this.foo(42);\n    }\n  }\n};");
     }
 
     @Test
@@ -155,7 +155,7 @@ public class TestRoyaleMethodMembers extends TestGoogMethodMembers
     {
         IClassNode node = (IClassNode) getNode("public function RoyaleTest_A(){}; private function foo(value:int):String{return value;}; private function bar():void{if(true){while(i){foo(42);}}};", IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @private\n * @param {number} value\n * @return {string}\n */\nRoyaleTest_A.prototype.foo = function(value) {\n  return org.apache.royale.utils.Language.string(value);\n};\n\n\n/**\n * @private\n */\nRoyaleTest_A.prototype.bar = function() {\n  if (true) {\n    while (i) {\n      thi [...]
+        assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * @private\n * @param {number} value\n * @return {string}\n */\nRoyaleTest_A.prototype.foo = function(value) {\n  return org.apache.royale.utils.Language.string(value);\n};\n\n\n/**\n * @private\n */\nRoyaleTest_A.prototype.bar = function() {\n  if (true) {\n    while (i) {\n      this.foo(42);\n    }\n  }\n};");
     }
 
     @Override
@@ -177,7 +177,7 @@ public class TestRoyaleMethodMembers extends TestGoogMethodMembers
         // (erikdebruin) here we actually DO want to declare the method
         //               directly on the 'class' constructor instead of the
         //               prototype!
-        assertOut("/**\n * @export\n * @param {string} bar\n * @param {number=} baz\n * @return {number}\n */\nRoyaleTest_A.foo = function(bar, baz) {\n  baz = typeof baz !== 'undefined' ? baz : null;\n  return -1;\n}");
+        assertOut("/**\n * @param {string} bar\n * @param {number=} baz\n * @return {number}\n */\nRoyaleTest_A.foo = function(bar, baz) {\n  baz = typeof baz !== 'undefined' ? baz : null;\n  return -1;\n}");
     }
 
     @Override
@@ -211,7 +211,7 @@ public class TestRoyaleMethodMembers extends TestGoogMethodMembers
     {
         IClassNode node = (IClassNode) getNode("public abstract class A { public abstract function a(arg1:String):Object; }", IClassNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nA = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('A', A);\n\n\n/**\n * @export\n * @param {string} arg1\n * @return {Object}\n */\nA.prototype.a = function(arg1) {\n};");
+        assertOut("/**\n * @constructor\n */\nA = function() {\n};\n\n\n/**\n * @export\n * @param {string} arg1\n * @return {Object}\n */\nA.prototype.a = function(arg1) {\n};");
     }
 
     @Override
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyalePackage.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyalePackage.java
index 6e9ebc5..08c748d 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyalePackage.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyalePackage.java
@@ -82,7 +82,7 @@ public class TestRoyalePackage extends TestGoogPackage
         		" * @constructor\n" +
         		" */\n" +
         		"A = function() {\n" +
-        		"};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('A', A);\n" +
+        		"};\n" +
         		"\n" +
         		"\n" +
         		"/**\n" +
@@ -131,7 +131,7 @@ public class TestRoyalePackage extends TestGoogPackage
         		" * @constructor\n" +
         		" */\n" +
         		"foo.bar.baz.A = function() {\n" +
-        		"};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('foo.bar.baz.A', foo.bar.baz.A);\n" +
+        		"};\n" +
         		"\n" +
         		"\n" +
         		"/**\n" +
@@ -184,12 +184,6 @@ public class TestRoyalePackage extends TestGoogPackage
 				"\n" +
 				"\n" +
 				"/**\n" +
-				" * Prevent renaming of class. Needed for reflection.\n" +
-				" */\n" +
-				"goog.exportSymbol('foo.bar.baz.A', foo.bar.baz.A);\n" +
-				"\n" +
-				"\n" +
-				"/**\n" +
 				" * Metadata\n" +
 				" *\n" +
 				" * @type {Object.<string, Array.<Object>>}\n" +
@@ -252,12 +246,6 @@ public class TestRoyalePackage extends TestGoogPackage
 				"\n" +
 				"\n" +
 				"/**\n" +
-				" * Prevent renaming of class. Needed for reflection.\n" +
-				" */\n" +
-				"goog.exportSymbol('foo.bar.baz.A', foo.bar.baz.A);\n" +
-				"\n" +
-				"\n" +
-				"/**\n" +
 				" * Metadata\n" +
 				" *\n" +
 				" * @type {Object.<string, Array.<Object>>}\n" +
@@ -312,12 +300,6 @@ public class TestRoyalePackage extends TestGoogPackage
 				"\n" +
 				"\n" +
 				"/**\n" +
-				" * Prevent renaming of class. Needed for reflection.\n" +
-				" */\n" +
-				"goog.exportSymbol('foo.bar.baz.A', foo.bar.baz.A);\n" +
-				"\n" +
-				"\n" +
-				"/**\n" +
 				" * Metadata\n" +
 				" *\n" +
 				" * @type {Object.<string, Array.<Object>>}\n" +
@@ -373,12 +355,6 @@ public class TestRoyalePackage extends TestGoogPackage
 				"\n" +
 				"\n" +
 				"/**\n" +
-				" * Prevent renaming of class. Needed for reflection.\n" +
-				" */\n" +
-				"goog.exportSymbol('foo.bar.baz.A', foo.bar.baz.A);\n" +
-				"\n" +
-				"\n" +
-				"/**\n" +
 				" * @export\n" +
 				" */\n" +
 				"foo.bar.baz.A.prototype.foo = function() {\n" +
@@ -452,12 +428,6 @@ public class TestRoyalePackage extends TestGoogPackage
 				"\n" +
 				"\n" +
 				"/**\n" +
-				" * Prevent renaming of class. Needed for reflection.\n" +
-				" */\n" +
-				"goog.exportSymbol('foo.bar.baz.A', foo.bar.baz.A);\n" +
-				"\n" +
-				"\n" +
-				"/**\n" +
 				" * Metadata\n" +
 				" *\n" +
 				" * @type {Object.<string, Array.<Object>>}\n" +
@@ -496,12 +466,6 @@ public class TestRoyalePackage extends TestGoogPackage
 				"\n" +
 				"\n" +
 				"/**\n" +
-				" * Prevent renaming of class. Needed for reflection.\n" +
-				" */\n" +
-				"goog.exportSymbol('foo.bar.baz.A.InternalClass', foo.bar.baz.A.InternalClass);\n" +
-				"\n" +
-				"\n" +
-				"/**\n" +
 				" * Metadata\n" +
 				" *\n" +
 				" * @type {Object.<string, Array.<Object>>}\n" +
@@ -564,12 +528,6 @@ public class TestRoyalePackage extends TestGoogPackage
 				"\n" +
 				"\n" +
 				"/**\n" +
-				" * Prevent renaming of class. Needed for reflection.\n" +
-				" */\n" +
-				"goog.exportSymbol('foo.bar.baz.A', foo.bar.baz.A);\n" +
-				"\n" +
-				"\n" +
-				"/**\n" +
 				" * Metadata\n" +
 				" *\n" +
 				" * @type {Object.<string, Array.<Object>>}\n" +
@@ -636,12 +594,6 @@ public class TestRoyalePackage extends TestGoogPackage
 				"\n" +
 				"\n" +
 				"/**\n" +
-				" * Prevent renaming of class. Needed for reflection.\n" +
-				" */\n" +
-				"goog.exportSymbol('foo.bar.baz.A', foo.bar.baz.A);\n" +
-				"\n" +
-				"\n" +
-				"/**\n" +
 				" * Metadata\n" +
 				" *\n" +
 				" * @type {Object.<string, Array.<Object>>}\n" +
@@ -724,12 +676,6 @@ public class TestRoyalePackage extends TestGoogPackage
 				"\n" +
 				"\n" +
 				"/**\n" +
-				" * Prevent renaming of class. Needed for reflection.\n" +
-				" */\n" +
-				"goog.exportSymbol('foo.bar.baz.A', foo.bar.baz.A);\n" +
-				"\n" +
-				"\n" +
-				"/**\n" +
 				" * Metadata\n" +
 				" *\n" +
 				" * @type {Object.<string, Array.<Object>>}\n" +
@@ -768,12 +714,6 @@ public class TestRoyalePackage extends TestGoogPackage
 				"\n" +
 				"\n" +
 				"/**\n" +
-				" * Prevent renaming of class. Needed for reflection.\n" +
-				" */\n" +
-				"goog.exportSymbol('foo.bar.baz.A.InternalClass', foo.bar.baz.A.InternalClass);\n" +
-				"\n" +
-				"\n" +
-				"/**\n" +
 				" * @export\n" +
 				" * @nocollapse\n" +
 				" * @type {string}\n" +
@@ -782,7 +722,6 @@ public class TestRoyalePackage extends TestGoogPackage
 				"\n" +
 				"\n" +
 				"/**\n" +
-				" * @export\n" +
 				" * @return {string}\n" +
 				" */\n" +
 				"foo.bar.baz.A.InternalClass.someStaticFunction = function() {\n" +
@@ -890,12 +829,6 @@ public class TestRoyalePackage extends TestGoogPackage
 				"};\n" +
 				"\n" +
 				"\n" +
-				"/**\n" +
-				" * Prevent renaming of class. Needed for reflection.\n" +
-				" */\n" +
-				"goog.exportSymbol('foo.bar.baz.A', foo.bar.baz.A);\n" +
-				"\n" +
-				"\n" +
 				"foo.bar.baz.A.prototype.get__myString = function() {\n" +
 				"  return null;\n" +
 				"};\n" +
@@ -958,12 +891,6 @@ public class TestRoyalePackage extends TestGoogPackage
 				"};\n" +
 				"\n" +
 				"\n" +
-				"/**\n" +
-				" * Prevent renaming of class. Needed for reflection.\n" +
-				" */\n" +
-				"goog.exportSymbol('foo.bar.baz.A.InternalClass', foo.bar.baz.A.InternalClass);\n" +
-				"\n" +
-				"\n" +
 				"foo.bar.baz.A.InternalClass.prototype.get__someString = function() {\n" +
 				"  return null;\n" +
 				"};\n" +
@@ -1062,12 +989,6 @@ public class TestRoyalePackage extends TestGoogPackage
 				"\n" +
 				"\n" +
 				"/**\n" +
-				" * Prevent renaming of class. Needed for reflection.\n" +
-				" */\n" +
-				"goog.exportSymbol('foo.bar.baz.A', foo.bar.baz.A);\n" +
-				"\n" +
-				"\n" +
-				"/**\n" +
 				" * Metadata\n" +
 				" *\n" +
 				" * @type {Object.<string, Array.<Object>>}\n" +
@@ -1103,12 +1024,6 @@ public class TestRoyalePackage extends TestGoogPackage
 				" */\n" +
 				"foo.bar.baz.A.ITestInterface = function() {\n" +
 				"};\n" +
-				"\n" +
-				"\n" +
-				"/**\n" +
-				" * Prevent renaming of class. Needed for reflection.\n" +
-				" */\n" +
-				"goog.exportSymbol('foo.bar.baz.A.ITestInterface', foo.bar.baz.A.ITestInterface);\n" +
 				"foo.bar.baz.A.ITestInterface.prototype.test = function() {\n" +
 				"};\n" +
 				"\n" +
@@ -1153,12 +1068,6 @@ public class TestRoyalePackage extends TestGoogPackage
 				"\n" +
 				"\n" +
 				"/**\n" +
-				" * Prevent renaming of class. Needed for reflection.\n" +
-				" */\n" +
-				"goog.exportSymbol('foo.bar.baz.A.InternalClass', foo.bar.baz.A.InternalClass);\n" +
-				"\n" +
-				"\n" +
-				"/**\n" +
 				" * @export\n" +
 				" */\n" +
 				"foo.bar.baz.A.InternalClass.prototype.test = function() {\n" +
@@ -1240,12 +1149,6 @@ public class TestRoyalePackage extends TestGoogPackage
 				"\n" +
 				"\n" +
 				"/**\n" +
-				" * Prevent renaming of class. Needed for reflection.\n" +
-				" */\n" +
-				"goog.exportSymbol('foo.bar.A.Internal', foo.bar.A.Internal);\n" +
-				"\n" +
-				"\n" +
-				"/**\n" +
 				" * @export\n" +
 				" * @nocollapse\n" +
 				" * @const\n" +
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleStatements.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleStatements.java
index 50ab0e0..0234544 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleStatements.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleStatements.java
@@ -718,7 +718,7 @@ public class TestRoyaleStatements extends TestGoogStatements
         		              " * @constructor\n" +
         		              " */\n" +
         		              "RoyaleTest_A = function() {\n" +
-        		              "};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n" +
+        		              "};\n\n\n" +
         		              "RoyaleTest_A.prototype.royaleTest_a = function() {\n" +
                               "  var self = this;\n" +
                               "  var /** @type {number} */ len = 0;\n" +
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/royale/TestRoyaleMXMLApplication.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/royale/TestRoyaleMXMLApplication.java
index 0a806bf..6524960 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/royale/TestRoyaleMXMLApplication.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/royale/TestRoyaleMXMLApplication.java
@@ -199,11 +199,6 @@ public class TestRoyaleMXMLApplication extends RoyaleTestBase
         		"goog.inherits(AppName, org.apache.royale.core.Application);\n" +
           		"\n" +
         		"\n" +
-        		"/**\n" +
-        		" * Prevent renaming of class. Needed for reflection.\n" +
-        		" */\n" +
-        		"goog.exportSymbol('AppName', AppName);\n" +
-        		"\n" +
         		"\n" +
 				"\n" +
         		"/**\n" +
@@ -317,11 +312,6 @@ public class TestRoyaleMXMLApplication extends RoyaleTestBase
         		"goog.inherits(AppName, org.apache.royale.core.Application);\n" +
           		"\n" +
         		"\n" +
-        		"/**\n" +
-        		" * Prevent renaming of class. Needed for reflection.\n" +
-        		" */\n" +
-        		"goog.exportSymbol('AppName', AppName);\n" +
-        		"\n" +
         		"\n" +
 				"\n" +
         		"/**\n" +
@@ -410,11 +400,6 @@ public class TestRoyaleMXMLApplication extends RoyaleTestBase
         		"goog.inherits(AppName, org.apache.royale.core.Application);\n" +
           		"\n" +
         		"\n" +
-        		"/**\n" +
-        		" * Prevent renaming of class. Needed for reflection.\n" +
-        		" */\n" +
-        		"goog.exportSymbol('AppName', AppName);\n" +
-        		"\n" +
         		"\n" +
 				"\n" +
         		"/**\n" +
@@ -504,15 +489,10 @@ public class TestRoyaleMXMLApplication extends RoyaleTestBase
         		"  this.mxmldp;\n" +
         		"};\n" +
         		"goog.inherits(AppName, org.apache.royale.core.Application);\n" +
-          		"\n" +
-        		"\n" +
-        		"/**\n" +
-        		" * Prevent renaming of class. Needed for reflection.\n" +
-        		" */\n" +
-        		"goog.exportSymbol('AppName', AppName);\n" +
         		"\n" +
         		"\n" +
 				"\n" +
+				"\n" +
         		"/**\n" +
         		" * Metadata\n" +
         		" *\n" +
@@ -640,11 +620,6 @@ public class TestRoyaleMXMLApplication extends RoyaleTestBase
         		"goog.inherits(AppName, org.apache.royale.core.Application);\n" +
           		"\n" +
         		"\n" +
-        		"/**\n" +
-        		" * Prevent renaming of class. Needed for reflection.\n" +
-        		" */\n" +
-        		"goog.exportSymbol('AppName', AppName);\n" +
-        		"\n" +
         		"\n" +
 				"\n" +
         		"/**\n" +
@@ -783,11 +758,6 @@ public class TestRoyaleMXMLApplication extends RoyaleTestBase
         		"goog.inherits(AppName, org.apache.royale.core.Application);\n" +
           		"\n" +
         		"\n" +
-        		"/**\n" +
-        		" * Prevent renaming of class. Needed for reflection.\n" +
-        		" */\n" +
-        		"goog.exportSymbol('AppName', AppName);\n" +
-        		"\n" +
         		"\n" +
 				"\n" +
         		"/**\n" +
@@ -927,11 +897,6 @@ public class TestRoyaleMXMLApplication extends RoyaleTestBase
         		"goog.inherits(AppName, org.apache.royale.core.Application);\n" +
           		"\n" +
         		"\n" +
-        		"/**\n" +
-        		" * Prevent renaming of class. Needed for reflection.\n" +
-        		" */\n" +
-        		"goog.exportSymbol('AppName', AppName);\n" +
-        		"\n" +
         		"\n" +
 				"\n" +
         		"/**\n" +
@@ -1109,11 +1074,6 @@ public class TestRoyaleMXMLApplication extends RoyaleTestBase
         		"goog.inherits(AppName, org.apache.royale.core.Application);\n" +
           		"\n" +
         		"\n" +
-        		"/**\n" +
-        		" * Prevent renaming of class. Needed for reflection.\n" +
-        		" */\n" +
-        		"goog.exportSymbol('AppName', AppName);\n" +
-        		"\n" +
         		"\n" +
 				"\n" +
         		"/**\n" +
@@ -1256,11 +1216,6 @@ public class TestRoyaleMXMLApplication extends RoyaleTestBase
         		"goog.inherits(AppName, org.apache.royale.core.Application);\n" +
           		"\n" +
         		"\n" +
-        		"/**\n" +
-        		" * Prevent renaming of class. Needed for reflection.\n" +
-        		" */\n" +
-        		"goog.exportSymbol('AppName', AppName);\n" +
-        		"\n" +
         		"\n" +
 				"\n" +
         		"/**\n" +
@@ -1401,11 +1356,6 @@ public class TestRoyaleMXMLApplication extends RoyaleTestBase
         		"goog.inherits(AppName, org.apache.royale.core.Application);\n" +
           		"\n" +
         		"\n" +
-        		"/**\n" +
-        		" * Prevent renaming of class. Needed for reflection.\n" +
-        		" */\n" +
-        		"goog.exportSymbol('AppName', AppName);\n" +
-        		"\n" +
         		"\n" +
 				"\n" +
         		"/**\n" +
@@ -1548,11 +1498,6 @@ public class TestRoyaleMXMLApplication extends RoyaleTestBase
         		"goog.inherits(AppName, org.apache.royale.core.Application);\n" +
           		"\n" +
         		"\n" +
-        		"/**\n" +
-        		" * Prevent renaming of class. Needed for reflection.\n" +
-        		" */\n" +
-        		"goog.exportSymbol('AppName', AppName);\n" +
-        		"\n" +
         		"\n" +
 				"\n" +
         		"/**\n" +
@@ -1694,11 +1639,6 @@ public class TestRoyaleMXMLApplication extends RoyaleTestBase
         		"goog.inherits(AppName, org.apache.royale.core.Application);\n" +
           		"\n" +
         		"\n" +
-        		"/**\n" +
-        		" * Prevent renaming of class. Needed for reflection.\n" +
-        		" */\n" +
-        		"goog.exportSymbol('AppName', AppName);\n" +
-        		"\n" +
         		"\n" +
 				"\n" +
         		"/**\n" +
@@ -1797,11 +1737,6 @@ public class TestRoyaleMXMLApplication extends RoyaleTestBase
         		"goog.inherits(AppName, org.apache.royale.core.Application);\n" +
           		"\n" +
         		"\n" +
-        		"/**\n" +
-        		" * Prevent renaming of class. Needed for reflection.\n" +
-        		" */\n" +
-        		"goog.exportSymbol('AppName', AppName);\n" +
-        		"\n" +
         		"\n" +
 				"\n" +
         		"/**\n" +
@@ -1834,11 +1769,6 @@ public class TestRoyaleMXMLApplication extends RoyaleTestBase
         		"};\n" +
         		"goog.inherits(AppName.AppName_component0, org.apache.royale.html.DropDownList);\n" +
           		"\n" +
-        		"\n" +
-        		"/**\n" +
-        		" * Prevent renaming of class. Needed for reflection.\n" +
-        		" */\n" +
-        		"goog.exportSymbol('AppName.AppName_component0', AppName.AppName_component0);\n" +
 				"\n" +
 				"\n" +
         		"/**\n" +
@@ -1994,11 +1924,6 @@ public class TestRoyaleMXMLApplication extends RoyaleTestBase
         		"goog.inherits(AppName, org.apache.royale.core.Application);\n" +
           		"\n" +
         		"\n" +
-        		"/**\n" +
-        		" * Prevent renaming of class. Needed for reflection.\n" +
-        		" */\n" +
-        		"goog.exportSymbol('AppName', AppName);\n" +
-        		"\n" +
         		"\n" +
 				"\n" +
         		"/**\n" +
@@ -2122,11 +2047,6 @@ public class TestRoyaleMXMLApplication extends RoyaleTestBase
         		"goog.inherits(AppName, org.apache.royale.core.Application);\n" +
           		"\n" +
         		"\n" +
-        		"/**\n" +
-        		" * Prevent renaming of class. Needed for reflection.\n" +
-        		" */\n" +
-        		"goog.exportSymbol('AppName', AppName);\n" +
-        		"\n" +
         		"\n" +
 				"\n" +
         		"/**\n" +
@@ -2240,15 +2160,9 @@ public class TestRoyaleMXMLApplication extends RoyaleTestBase
         		"goog.inherits(AppName, org.apache.royale.core.Application);\n" +
           		"\n" +
         		"\n" +
-        		"/**\n" +
-        		" * Prevent renaming of class. Needed for reflection.\n" +
-        		" */\n" +
-        		"goog.exportSymbol('AppName', AppName);\n" +
-        		"\n" +
         		"\n" +
 				"\n" +
         		"/**\n" +
-        		" * @export\n" +
         		" * @param {string} foo\n" +
         		" */\n" +
         		"AppName.fn_test = function(foo) {\n" +
@@ -2376,11 +2290,6 @@ public class TestRoyaleMXMLApplication extends RoyaleTestBase
         		"goog.inherits(AppName, org.apache.royale.core.Application);\n" +
           		"\n" +
         		"\n" +
-        		"/**\n" +
-        		" * Prevent renaming of class. Needed for reflection.\n" +
-        		" */\n" +
-        		"goog.exportSymbol('AppName', AppName);\n" +
-        		"\n" +
         		"\n" +
 				"\n" +
         		"/**\n" +
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/royale/TestRoyaleMXMLScript.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/royale/TestRoyaleMXMLScript.java
index 7767429..f0eee63 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/royale/TestRoyaleMXMLScript.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/royale/TestRoyaleMXMLScript.java
@@ -79,11 +79,6 @@ public class TestRoyaleMXMLScript extends RoyaleTestBase
         		"goog.inherits(AppName, org.apache.royale.core.Application);\n" +
           		"\n" +
         		"\n" +
-        		"/**\n" +
-        		" * Prevent renaming of class. Needed for reflection.\n" +
-        		" */\n" +
-        		"goog.exportSymbol('AppName', AppName);\n" +
-        		"\n" +
         		"\n" +
 				"\n" +
 				"/**\n" +
@@ -179,11 +174,6 @@ public class TestRoyaleMXMLScript extends RoyaleTestBase
         		"goog.inherits(AppName, org.apache.royale.core.Application);\n" +
           		"\n" +
         		"\n" +
-        		"/**\n" +
-        		" * Prevent renaming of class. Needed for reflection.\n" +
-        		" */\n" +
-        		"goog.exportSymbol('AppName', AppName);\n" +
-        		"\n" +
         		"\n" +
 				"\n" +
 				"/**\n" +
@@ -283,11 +273,6 @@ public class TestRoyaleMXMLScript extends RoyaleTestBase
         		"goog.inherits(AppName, org.apache.royale.core.Application);\n" +
           		"\n" +
         		"\n" +
-        		"/**\n" +
-        		" * Prevent renaming of class. Needed for reflection.\n" +
-        		" */\n" +
-        		"goog.exportSymbol('AppName', AppName);\n" +
-        		"\n" +
         		"\n" +
 				"\n" +
 				"/**\n" +
@@ -348,48 +333,43 @@ public class TestRoyaleMXMLScript extends RoyaleTestBase
         mxmlBlockWalker.visitDocument(dnode);
         String appName = dnode.getQualifiedName();
         String outTemplate = "/**\n" +
-				" * AppName\n" +
-				" *\n" +
-				" * @fileoverview\n" +
-				" *\n" +
-				" * @suppress {checkTypes|accessControls}\n" +
-				" */\n" +
-				"\n" +
-				"goog.provide('AppName');\n" +
-				"\n" +
-				"goog.require('org.apache.royale.core.Application');\n" +
-				"goog.require('org.apache.royale.events.CloseEvent');\n" +
-				"\n" +
-				"\n" +
-				"\n" +
-				"/**\n" +
-				" * @constructor\n" +
-				" * @extends {org.apache.royale.core.Application}\n" +
-				" */\n" +
-				"AppName = function() {\n" +
-				"  AppName.base(this, 'constructor');\n" +
-				"  \n" +
-				"  /**\n" +
-				"   * @private\n" +
-				"   * @type {Array}\n" +
-				"   */\n" +
-				"  this.mxmldd;\n" +
-				"  \n" +
-				"  /**\n" +
-				"   * @private\n" +
-				"   * @type {Array}\n" +
-				"   */\n" +
-				"  this.mxmldp;\n" +
-				"};\n" +
-				"goog.inherits(AppName, org.apache.royale.core.Application);\n" +
-				"\n" +
-				"\n" +
-				"/**\n" +
-				" * Prevent renaming of class. Needed for reflection.\n" +
-				" */\n" +
-				"goog.exportSymbol('AppName', AppName);\n" +
-				"\n" +
-				"\n" +
+        		" * AppName\n" +
+        		" *\n" +
+        		" * @fileoverview\n" +
+        		" *\n" +
+        		" * @suppress {checkTypes|accessControls}\n" +
+        		" */\n" +
+        		"\n" +
+        		"goog.provide('AppName');\n" +
+        		"\n" +
+        		"goog.require('org.apache.royale.core.Application');\n" +
+        		"goog.require('org.apache.royale.events.CloseEvent');\n" +
+        		"\n" +
+        		"\n" +
+        		"\n" +
+        		"/**\n" +
+        		" * @constructor\n" +
+        		" * @extends {org.apache.royale.core.Application}\n" +
+        		" */\n" +
+        		"AppName = function() {\n" +
+        		"  AppName.base(this, 'constructor');\n" +
+        		"  \n" +
+        		"  /**\n" +
+        		"   * @private\n" +
+        		"   * @type {Array}\n" +
+        		"   */\n" +
+        		"  this.mxmldd;\n" +
+        		"  \n" +
+        		"  /**\n" +
+        		"   * @private\n" +
+        		"   * @type {Array}\n" +
+        		"   */\n" +
+        		"  this.mxmldp;\n" +
+        		"};\n" +
+        		"goog.inherits(AppName, org.apache.royale.core.Application);\n" +
+          		"\n" +
+        		"\n" +
+        		"\n" +
 				"\n" +
 				"AppName.get__foo = function() {\n" +
 				"  var value = org.apache.royale.events.CloseEvent.CLOSE;\n" +
@@ -501,11 +481,6 @@ public class TestRoyaleMXMLScript extends RoyaleTestBase
         		"goog.inherits(AppName, org.apache.royale.core.Application);\n" +
           		"\n" +
         		"\n" +
-        		"/**\n" +
-        		" * Prevent renaming of class. Needed for reflection.\n" +
-        		" */\n" +
-        		"goog.exportSymbol('AppName', AppName);\n" +
-        		"\n" +
         		"\n" +
 				"\n" +
 				"/**\n" +
@@ -600,11 +575,6 @@ public class TestRoyaleMXMLScript extends RoyaleTestBase
         		"goog.inherits(AppName, org.apache.royale.core.Application);\n" +
           		"\n" +
         		"\n" +
-        		"/**\n" +
-        		" * Prevent renaming of class. Needed for reflection.\n" +
-        		" */\n" +
-        		"goog.exportSymbol('AppName', AppName);\n" +
-        		"\n" +
         		"\n" +
 				"\n" +
 				"/**\n" +
@@ -665,48 +635,43 @@ public class TestRoyaleMXMLScript extends RoyaleTestBase
         mxmlBlockWalker.visitDocument(dnode);
         String appName = dnode.getQualifiedName();
         String outTemplate = "/**\n" +
-				" * AppName\n" +
-				" *\n" +
-				" * @fileoverview\n" +
-				" *\n" +
-				" * @suppress {checkTypes|accessControls}\n" +
-				" */\n" +
-				"\n" +
-				"goog.provide('AppName');\n" +
-				"\n" +
-				"goog.require('org.apache.royale.core.Application');\n" +
-				"goog.require('org.apache.royale.events.CloseEvent');\n" +
-				"\n" +
-				"\n" +
-				"\n" +
-				"/**\n" +
-				" * @constructor\n" +
-				" * @extends {org.apache.royale.core.Application}\n" +
-				" */\n" +
-				"AppName = function() {\n" +
-				"  AppName.base(this, 'constructor');\n" +
-				"  \n" +
-				"  /**\n" +
-				"   * @private\n" +
-				"   * @type {Array}\n" +
-				"   */\n" +
-				"  this.mxmldd;\n" +
-				"  \n" +
-				"  /**\n" +
-				"   * @private\n" +
-				"   * @type {Array}\n" +
-				"   */\n" +
-				"  this.mxmldp;\n" +
-				"};\n" +
-				"goog.inherits(AppName, org.apache.royale.core.Application);\n" +
-				"\n" +
-				"\n" +
-				"/**\n" +
-				" * Prevent renaming of class. Needed for reflection.\n" +
-				" */\n" +
-				"goog.exportSymbol('AppName', AppName);\n" +
-				"\n" +
-				"\n" +
+        		" * AppName\n" +
+        		" *\n" +
+        		" * @fileoverview\n" +
+        		" *\n" +
+        		" * @suppress {checkTypes|accessControls}\n" +
+        		" */\n" +
+        		"\n" +
+        		"goog.provide('AppName');\n" +
+        		"\n" +
+        		"goog.require('org.apache.royale.core.Application');\n" +
+        		"goog.require('org.apache.royale.events.CloseEvent');\n" +
+        		"\n" +
+        		"\n" +
+        		"\n" +
+        		"/**\n" +
+        		" * @constructor\n" +
+        		" * @extends {org.apache.royale.core.Application}\n" +
+        		" */\n" +
+        		"AppName = function() {\n" +
+        		"  AppName.base(this, 'constructor');\n" +
+        		"  \n" +
+        		"  /**\n" +
+        		"   * @private\n" +
+        		"   * @type {Array}\n" +
+        		"   */\n" +
+        		"  this.mxmldd;\n" +
+        		"  \n" +
+        		"  /**\n" +
+        		"   * @private\n" +
+        		"   * @type {Array}\n" +
+        		"   */\n" +
+        		"  this.mxmldp;\n" +
+        		"};\n" +
+        		"goog.inherits(AppName, org.apache.royale.core.Application);\n" +
+          		"\n" +
+        		"\n" +
+        		"\n" +
 				"\n" +
 				"AppName.get__foo = function() {\n" +
 				"  var value = org.apache.royale.events.CloseEvent.CLOSE;\n" +
@@ -814,11 +779,6 @@ public class TestRoyaleMXMLScript extends RoyaleTestBase
         		"goog.inherits(AppName, org.apache.royale.core.Application);\n" +
           		"\n" +
         		"\n" +
-        		"/**\n" +
-        		" * Prevent renaming of class. Needed for reflection.\n" +
-        		" */\n" +
-        		"goog.exportSymbol('AppName', AppName);\n" +
-        		"\n" +
         		"\n" +
 				"\n" +
 				"//use namespace custom.custom_namespace;\n" +
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/sourcemaps/TestSourceMapMXMLEvents.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/sourcemaps/TestSourceMapMXMLEvents.java
index c937cd0..c5067fe 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/sourcemaps/TestSourceMapMXMLEvents.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/sourcemaps/TestSourceMapMXMLEvents.java
@@ -37,7 +37,7 @@ public class TestSourceMapMXMLEvents extends RoyaleSourceMapTestBase
                 .getAncestorOfType(IMXMLDocumentNode.class);
         mxmlBlockWalker.walk(dnode);
         ///event
-        assertMapping(node, 0, 6, 79, 2, 79, 7);  // event
+        assertMapping(node, 0, 6, 74, 2, 74, 7);  // event
         //the start column in the ActionScript seems to be outside the quote
         //instead of inside. that seems like a bug. -JT
     }
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/sourcemaps/TestSourceMapMXMLScript.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/sourcemaps/TestSourceMapMXMLScript.java
index d449174..edf8c4f 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/sourcemaps/TestSourceMapMXMLScript.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/sourcemaps/TestSourceMapMXMLScript.java
@@ -45,7 +45,7 @@ public class TestSourceMapMXMLScript extends RoyaleSourceMapTestBase
         assertTrue(definitionName.startsWith(getClass().getSimpleName()));
         int endColumn = definitionName.length() + 14;
         ///**\n * @export\n * @type {*}\n */\nRoyaleTest_A.prototype.foo
-        assertMapping(node, 0, 4, 47, 0, 47, endColumn);  // foo
+        assertMapping(node, 0, 4, 42, 0, 42, endColumn);  // foo
     }
 
     @Test
@@ -63,11 +63,11 @@ public class TestSourceMapMXMLScript extends RoyaleSourceMapTestBase
         assertTrue(definitionName.startsWith(getClass().getSimpleName()));
         int nameEndColumn = definitionName.length() + 14;
         ///**\n * @export\n * @type {*}\n */\nRoyaleTest_A.prototype.foo
-        assertMapping(node, 0, 9, 44, 0, 44, nameEndColumn);  // foo
-        assertMapping(node, 0, 0, 44, nameEndColumn, 44, nameEndColumn + 11);  // = function
-        assertMapping(node, 0, 12, 44, nameEndColumn + 11, 44, nameEndColumn + 12);  // (
-        assertMapping(node, 0, 13, 44, nameEndColumn + 12, 44, nameEndColumn + 13);  // )
-        assertMapping(node, 0, 14, 44, nameEndColumn + 14, 44, nameEndColumn + 15);  // {
-        assertMapping(node, 0, 15, 45, 0, 45, 1);  // }
+        assertMapping(node, 0, 9, 39, 0, 39, nameEndColumn);  // foo
+        assertMapping(node, 0, 0, 39, nameEndColumn, 39, nameEndColumn + 11);  // = function
+        assertMapping(node, 0, 12, 39, nameEndColumn + 11, 39, nameEndColumn + 12);  // (
+        assertMapping(node, 0, 13, 39, nameEndColumn + 12, 39, nameEndColumn + 13);  // )
+        assertMapping(node, 0, 14, 39, nameEndColumn + 14, 39, nameEndColumn + 15);  // {
+        assertMapping(node, 0, 15, 40, 0, 40, 1);  // }
     }
 }
diff --git a/compiler-jx/src/test/resources/royale/files/LocalFunction_result.js b/compiler-jx/src/test/resources/royale/files/LocalFunction_result.js
index d5c832f..fb8e594 100644
--- a/compiler-jx/src/test/resources/royale/files/LocalFunction_result.js
+++ b/compiler-jx/src/test/resources/royale/files/LocalFunction_result.js
@@ -31,12 +31,6 @@ LocalFunction = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('LocalFunction', LocalFunction);
-
-
-/**
  * @private
  * @type {string}
  */
diff --git a/compiler-jx/src/test/resources/royale/files/MyInitialView_result.js b/compiler-jx/src/test/resources/royale/files/MyInitialView_result.js
index ff557ad..3bc10fb 100644
--- a/compiler-jx/src/test/resources/royale/files/MyInitialView_result.js
+++ b/compiler-jx/src/test/resources/royale/files/MyInitialView_result.js
@@ -200,11 +200,6 @@ MyInitialView = function() {
 goog.inherits(MyInitialView, org.apache.royale.core.View);
 
 
-/**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('MyInitialView', MyInitialView);
-
 
 
 /**
diff --git a/compiler-jx/src/test/resources/royale/files/RoyaleTest_again_result.js b/compiler-jx/src/test/resources/royale/files/RoyaleTest_again_result.js
index 78c68fb..dc301ee 100644
--- a/compiler-jx/src/test/resources/royale/files/RoyaleTest_again_result.js
+++ b/compiler-jx/src/test/resources/royale/files/RoyaleTest_again_result.js
@@ -209,11 +209,6 @@ this.$EH0
 goog.inherits(RoyaleTest_again, org.apache.royale.core.Application);
 
 
-/**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('RoyaleTest_again', RoyaleTest_again);
-
 
 
 /**
diff --git a/compiler-jx/src/test/resources/royale/files/controllers/MyController_result.js b/compiler-jx/src/test/resources/royale/files/controllers/MyController_result.js
index ed437af..4563cde 100644
--- a/compiler-jx/src/test/resources/royale/files/controllers/MyController_result.js
+++ b/compiler-jx/src/test/resources/royale/files/controllers/MyController_result.js
@@ -46,12 +46,6 @@ controllers.MyController = function(app) {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('controllers.MyController', controllers.MyController);
-
-
-/**
  * @private
  * @type {string}
  */
diff --git a/compiler-jx/src/test/resources/royale/files/models/MyModel_result.js b/compiler-jx/src/test/resources/royale/files/models/MyModel_result.js
index e6be50d..378bfb1 100644
--- a/compiler-jx/src/test/resources/royale/files/models/MyModel_result.js
+++ b/compiler-jx/src/test/resources/royale/files/models/MyModel_result.js
@@ -40,12 +40,6 @@ goog.inherits(models.MyModel, org.apache.royale.events.EventDispatcher);
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('models.MyModel', models.MyModel);
-
-
-/**
  * @private
  * @type {string}
  */
diff --git a/compiler-jx/src/test/resources/royale/files/wildcard_import_result.js b/compiler-jx/src/test/resources/royale/files/wildcard_import_result.js
index a841e31..5d2f8c2 100644
--- a/compiler-jx/src/test/resources/royale/files/wildcard_import_result.js
+++ b/compiler-jx/src/test/resources/royale/files/wildcard_import_result.js
@@ -48,11 +48,6 @@ wildcard_import = function() {
 goog.inherits(wildcard_import, org.apache.royale.core.Application);
 
 
-/**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('wildcard_import', wildcard_import);
-
 
 
 /**
diff --git a/compiler-jx/src/test/resources/royale/projects/bad_overrides/Test_result.js b/compiler-jx/src/test/resources/royale/projects/bad_overrides/Test_result.js
index 1a6f4d8..9ece63f 100644
--- a/compiler-jx/src/test/resources/royale/projects/bad_overrides/Test_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/bad_overrides/Test_result.js
@@ -36,12 +36,6 @@ goog.inherits(Test, classes.A);
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('Test', Test);
-
-
-/**
  * @export
  * @override
  */
diff --git a/compiler-jx/src/test/resources/royale/projects/bad_overrides/classes/A_result.js b/compiler-jx/src/test/resources/royale/projects/bad_overrides/classes/A_result.js
index 8dc18ff..9821355 100644
--- a/compiler-jx/src/test/resources/royale/projects/bad_overrides/classes/A_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/bad_overrides/classes/A_result.js
@@ -36,12 +36,6 @@ classes.A = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('classes.A', classes.A);
-
-
-/**
  * @export
  * @return {classes.B}
  */
diff --git a/compiler-jx/src/test/resources/royale/projects/bad_overrides/classes/B_result.js b/compiler-jx/src/test/resources/royale/projects/bad_overrides/classes/B_result.js
index 42e6b64..838ebbb 100644
--- a/compiler-jx/src/test/resources/royale/projects/bad_overrides/classes/B_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/bad_overrides/classes/B_result.js
@@ -31,12 +31,6 @@ classes.B = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('classes.B', classes.B);
-
-
-/**
  * Metadata
  *
  * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/bad_overrides/classes/C_result.js b/compiler-jx/src/test/resources/royale/projects/bad_overrides/classes/C_result.js
index 40feccb..75b2958 100644
--- a/compiler-jx/src/test/resources/royale/projects/bad_overrides/classes/C_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/bad_overrides/classes/C_result.js
@@ -31,12 +31,6 @@ classes.C = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('classes.C', classes.C);
-
-
-/**
  * Metadata
  *
  * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/bad_overrides/interfaces/IA_result.js b/compiler-jx/src/test/resources/royale/projects/bad_overrides/interfaces/IA_result.js
index d6896fe..c387ada 100644
--- a/compiler-jx/src/test/resources/royale/projects/bad_overrides/interfaces/IA_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/bad_overrides/interfaces/IA_result.js
@@ -31,12 +31,6 @@ goog.require('interfaces.IB');
  */
 interfaces.IA = function() {
 };
-
-
-/**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('interfaces.ID', interfaces.IA);
 interfaces.IA.prototype.someFunction = function() {
 };
 interfaces.IA.prototype.someOtherFunction = function() {
diff --git a/compiler-jx/src/test/resources/royale/projects/bad_overrides/interfaces/IB_result.js b/compiler-jx/src/test/resources/royale/projects/bad_overrides/interfaces/IB_result.js
index 702fb60..ab5dcca 100644
--- a/compiler-jx/src/test/resources/royale/projects/bad_overrides/interfaces/IB_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/bad_overrides/interfaces/IB_result.js
@@ -31,12 +31,6 @@ interfaces.IB = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('interfaces.IB', interfaces.IB);
-
-
-/**
  * Metadata
  *
  * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/bad_overrides/interfaces/IC_result.js b/compiler-jx/src/test/resources/royale/projects/bad_overrides/interfaces/IC_result.js
index 819394a..8228c9e 100644
--- a/compiler-jx/src/test/resources/royale/projects/bad_overrides/interfaces/IC_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/bad_overrides/interfaces/IC_result.js
@@ -31,12 +31,6 @@ interfaces.IC = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('interfaces.IC', interfaces.IC);
-
-
-/**
  * Metadata
  *
  * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/circular/Base_result.js b/compiler-jx/src/test/resources/royale/projects/circular/Base_result.js
index 56f6ab2..7d16e91 100644
--- a/compiler-jx/src/test/resources/royale/projects/circular/Base_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/circular/Base_result.js
@@ -36,12 +36,6 @@ goog.inherits(Base, Super);
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('Base', Base);
-
-
-/**
  * Metadata
  *
  * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/circular/Super_result.js b/compiler-jx/src/test/resources/royale/projects/circular/Super_result.js
index df530bb..8ae26de 100644
--- a/compiler-jx/src/test/resources/royale/projects/circular/Super_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/circular/Super_result.js
@@ -33,12 +33,6 @@ Super = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('Super', Super);
-
-
-/**
  * @private
  * @type {Base}
  */
diff --git a/compiler-jx/src/test/resources/royale/projects/circular_proto/A_result.js b/compiler-jx/src/test/resources/royale/projects/circular_proto/A_result.js
index 87271a0..2bf4522 100644
--- a/compiler-jx/src/test/resources/royale/projects/circular_proto/A_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/circular_proto/A_result.js
@@ -34,12 +34,6 @@ A = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('A', A);
-
-
-/**
  * @private
  */
 A.prototype.test = function() {
diff --git a/compiler-jx/src/test/resources/royale/projects/circular_proto/B_result.js b/compiler-jx/src/test/resources/royale/projects/circular_proto/B_result.js
index f5a1b1a..ad219ea 100644
--- a/compiler-jx/src/test/resources/royale/projects/circular_proto/B_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/circular_proto/B_result.js
@@ -33,12 +33,6 @@ B = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('B', B);
-
-
-/**
  * @export
  * @param {boolean} b
  * @return {number}
diff --git a/compiler-jx/src/test/resources/royale/projects/circular_proto/C_result.js b/compiler-jx/src/test/resources/royale/projects/circular_proto/C_result.js
index ea9f1e3..ae8fa8c 100644
--- a/compiler-jx/src/test/resources/royale/projects/circular_proto/C_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/circular_proto/C_result.js
@@ -37,12 +37,6 @@ goog.inherits(C, B);
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('C', C);
-
-
-/**
  * @export
  * @param {boolean} b
  * @return {number}
diff --git a/compiler-jx/src/test/resources/royale/projects/circular_proto/D_result.js b/compiler-jx/src/test/resources/royale/projects/circular_proto/D_result.js
index b6bfeee..584aa2e 100644
--- a/compiler-jx/src/test/resources/royale/projects/circular_proto/D_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/circular_proto/D_result.js
@@ -37,12 +37,6 @@ goog.inherits(D, C);
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('D', D);
-
-
-/**
  * @export
  * @param {boolean} b
  * @return {number}
diff --git a/compiler-jx/src/test/resources/royale/projects/circular_proto/E_result.js b/compiler-jx/src/test/resources/royale/projects/circular_proto/E_result.js
index 688d5c4..33abf6f 100644
--- a/compiler-jx/src/test/resources/royale/projects/circular_proto/E_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/circular_proto/E_result.js
@@ -33,12 +33,6 @@ E = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('E', E);
-
-
-/**
  * @export
  * @param {boolean} b
  * @return {number}
diff --git a/compiler-jx/src/test/resources/royale/projects/circular_proto/F_result.js b/compiler-jx/src/test/resources/royale/projects/circular_proto/F_result.js
index 5be3299..b6d8f61 100644
--- a/compiler-jx/src/test/resources/royale/projects/circular_proto/F_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/circular_proto/F_result.js
@@ -37,12 +37,6 @@ goog.inherits(F, D);
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('F', F);
-
-
-/**
  * @export
  * @param {boolean} b
  * @return {number}
diff --git a/compiler-jx/src/test/resources/royale/projects/interfaces/Test_result.js b/compiler-jx/src/test/resources/royale/projects/interfaces/Test_result.js
index f9cf4c8..c2a999d 100644
--- a/compiler-jx/src/test/resources/royale/projects/interfaces/Test_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/interfaces/Test_result.js
@@ -43,12 +43,6 @@ goog.inherits(Test, classes.A);
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('Test', Test);
-
-
-/**
  * @export
  * @param {interfaces.IC} ic
  * @return {interfaces.IC}
diff --git a/compiler-jx/src/test/resources/royale/projects/interfaces/classes/A_result.js b/compiler-jx/src/test/resources/royale/projects/interfaces/classes/A_result.js
index d32bf18..da8e3db 100644
--- a/compiler-jx/src/test/resources/royale/projects/interfaces/classes/A_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/interfaces/classes/A_result.js
@@ -36,12 +36,6 @@ goog.inherits(classes.A, classes.C);
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('classes.A', classes.A);
-
-
-/**
  * Metadata
  *
  * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/interfaces/classes/B_result.js b/compiler-jx/src/test/resources/royale/projects/interfaces/classes/B_result.js
index 274f1bf..7c5786a 100644
--- a/compiler-jx/src/test/resources/royale/projects/interfaces/classes/B_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/interfaces/classes/B_result.js
@@ -31,12 +31,6 @@ classes.B = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('classes.B', classes.B);
-
-
-/**
  * Metadata
  *
  * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/interfaces/classes/C_result.js b/compiler-jx/src/test/resources/royale/projects/interfaces/classes/C_result.js
index 78125c2..050d0e2 100644
--- a/compiler-jx/src/test/resources/royale/projects/interfaces/classes/C_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/interfaces/classes/C_result.js
@@ -31,12 +31,6 @@ classes.C = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('classes.C', classes.C);
-
-
-/**
  * Metadata
  *
  * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/IA_result.js b/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/IA_result.js
index 1873432..86a144a 100644
--- a/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/IA_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/IA_result.js
@@ -34,12 +34,6 @@ interfaces.IA = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('interfaces.IA', interfaces.IA);
-
-
-/**
  * Metadata
  *
  * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/IC_result.js b/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/IC_result.js
index 30f3376..2f05a3d 100644
--- a/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/IC_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/IC_result.js
@@ -34,12 +34,6 @@ interfaces.IC = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('interfaces.IC', interfaces.IC);
-
-
-/**
  * Metadata
  *
  * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/ID_result.js b/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/ID_result.js
index 02e09ea..3d67102 100644
--- a/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/ID_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/ID_result.js
@@ -31,12 +31,6 @@ interfaces.ID = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('interfaces.ID', interfaces.ID);
-
-
-/**
  * Metadata
  *
  * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/IE_result.js b/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/IE_result.js
index 3e57834..5cf0879 100644
--- a/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/IE_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/interfaces/interfaces/IE_result.js
@@ -28,12 +28,6 @@ goog.provide('interfaces.IE');
  */
 interfaces.IE = function() {
 };
-
-
-/**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('interfaces.IE', interfaces.IE);
 interfaces.IE.prototype.myMethod = function() {
 };
 /**  * @type {string}
diff --git a/compiler-jx/src/test/resources/royale/projects/internal/MainClass_result.js b/compiler-jx/src/test/resources/royale/projects/internal/MainClass_result.js
index 34c8332..266e02b 100644
--- a/compiler-jx/src/test/resources/royale/projects/internal/MainClass_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/internal/MainClass_result.js
@@ -34,12 +34,6 @@ MainClass = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('MainClass', MainClass);
-
-
-/**
  * Metadata
  *
  * @type {Object.<string, Array.<Object>>}
@@ -79,12 +73,6 @@ MainClass.InternalClass = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('MainClass.InternalClass', MainClass.InternalClass);
-
-
-/**
  * @export
  * @type {OtherClass}
  */
diff --git a/compiler-jx/src/test/resources/royale/projects/internal/OtherClass_result.js b/compiler-jx/src/test/resources/royale/projects/internal/OtherClass_result.js
index 907d8af..cadd4bb 100644
--- a/compiler-jx/src/test/resources/royale/projects/internal/OtherClass_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/internal/OtherClass_result.js
@@ -31,12 +31,6 @@ OtherClass = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('OtherClass', OtherClass);
-
-
-/**
  * Metadata
  *
  * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/overrides/Test_result.js b/compiler-jx/src/test/resources/royale/projects/overrides/Test_result.js
index 7644fc4..23a1310 100644
--- a/compiler-jx/src/test/resources/royale/projects/overrides/Test_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/overrides/Test_result.js
@@ -38,12 +38,6 @@ goog.inherits(Test, classes.A);
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('Test', Test);
-
-
-/**
  * @export
  * @override
  */
diff --git a/compiler-jx/src/test/resources/royale/projects/overrides/classes/A_result.js b/compiler-jx/src/test/resources/royale/projects/overrides/classes/A_result.js
index 58ce110..d44ac49 100644
--- a/compiler-jx/src/test/resources/royale/projects/overrides/classes/A_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/overrides/classes/A_result.js
@@ -36,12 +36,6 @@ classes.A = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('classes.A', classes.A);
-
-
-/**
  * @export
  * @return {classes.B}
  */
diff --git a/compiler-jx/src/test/resources/royale/projects/overrides/classes/B_result.js b/compiler-jx/src/test/resources/royale/projects/overrides/classes/B_result.js
index 274f1bf..7c5786a 100644
--- a/compiler-jx/src/test/resources/royale/projects/overrides/classes/B_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/overrides/classes/B_result.js
@@ -31,12 +31,6 @@ classes.B = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('classes.B', classes.B);
-
-
-/**
  * Metadata
  *
  * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/overrides/classes/C_result.js b/compiler-jx/src/test/resources/royale/projects/overrides/classes/C_result.js
index 4a75910..f237bb9 100644
--- a/compiler-jx/src/test/resources/royale/projects/overrides/classes/C_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/overrides/classes/C_result.js
@@ -36,12 +36,6 @@ goog.inherits(classes.C, classes.B);
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('classes.C', classes.C);
-
-
-/**
  * Metadata
  *
  * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/overrides/interfaces/IA_result.js b/compiler-jx/src/test/resources/royale/projects/overrides/interfaces/IA_result.js
index 43ca268..688908e 100644
--- a/compiler-jx/src/test/resources/royale/projects/overrides/interfaces/IA_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/overrides/interfaces/IA_result.js
@@ -31,12 +31,6 @@ goog.require('interfaces.IB');
  */
 interfaces.IA = function() {
 };
-
-
-/**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('interfaces.IA', interfaces.IA);
 /**
  * @export
  * @return {classes.B}
diff --git a/compiler-jx/src/test/resources/royale/projects/overrides/interfaces/IB_result.js b/compiler-jx/src/test/resources/royale/projects/overrides/interfaces/IB_result.js
index 55cb770..37d0d58 100644
--- a/compiler-jx/src/test/resources/royale/projects/overrides/interfaces/IB_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/overrides/interfaces/IB_result.js
@@ -31,12 +31,6 @@ interfaces.IB = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('interfaces.IB', interfaces.IB);
-
-
-/**
  * Metadata
  *
  * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/overrides/interfaces/IC_result.js b/compiler-jx/src/test/resources/royale/projects/overrides/interfaces/IC_result.js
index 958451b..f61ff09 100644
--- a/compiler-jx/src/test/resources/royale/projects/overrides/interfaces/IC_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/overrides/interfaces/IC_result.js
@@ -34,12 +34,6 @@ interfaces.IC = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('interfaces.IC', interfaces.IC);
-
-
-/**
  * Metadata
  *
  * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/DifferentPackageAsConflict_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/DifferentPackageAsConflict_result.js
index 0f2a958..48da335 100644
--- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/DifferentPackageAsConflict_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/DifferentPackageAsConflict_result.js
@@ -34,12 +34,6 @@ DifferentPackageAsConflict = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('DifferentPackageAsConflict', DifferentPackageAsConflict);
-
-
-/**
  * @private
  * @type {mypackage.TestClass}
  */
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/Event_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/Event_result.js
index 66a991c..c7afd93 100644
--- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/Event_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/Event_result.js
@@ -32,12 +32,6 @@ Event = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('Event', Event);
-
-
-/**
  * Metadata
  *
  * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/mypackage/TestClass_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/mypackage/TestClass_result.js
index 2fb9de0..dd079b3 100644
--- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/mypackage/TestClass_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/mypackage/TestClass_result.js
@@ -36,12 +36,6 @@ this.event = new otherpackage.Event();
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('mypackage.TestClass', mypackage.TestClass);
-
-
-/**
  * @private
  * @type {otherpackage.Event}
  */
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/otherpackage/Event_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/otherpackage/Event_result.js
index a9df84a..097c752 100644
--- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/otherpackage/Event_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_different_package_as_conflict/otherpackage/Event_result.js
@@ -32,12 +32,6 @@ otherpackage.Event = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('otherpackage.Event', otherpackage.Event);
-
-
-/**
  * Metadata
  *
  * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_no_window/Event_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_no_window/Event_result.js
index da797cb..f19785c 100644
--- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_no_window/Event_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_no_window/Event_result.js
@@ -31,12 +31,6 @@ Event = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('Event', Event);
-
-
-/**
  * Metadata
  *
  * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_no_window/NoConflictNoWindow_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_no_window/NoConflictNoWindow_result.js
index f037289..c40cde5 100644
--- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_no_window/NoConflictNoWindow_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_no_window/NoConflictNoWindow_result.js
@@ -34,12 +34,6 @@ NoConflictNoWindow = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('NoConflictNoWindow', NoConflictNoWindow);
-
-
-/**
  * @private
  * @type {mypackage.TestClass}
  */
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_no_window/mypackage/TestClass_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_no_window/mypackage/TestClass_result.js
index e4726df..d864bc8 100644
--- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_no_window/mypackage/TestClass_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_no_window/mypackage/TestClass_result.js
@@ -34,12 +34,6 @@ this.event = new Event();
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('mypackage.TestClass', mypackage.TestClass);
-
-
-/**
  * @private
  * @type {Event}
  */
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_use_window/Event_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_use_window/Event_result.js
index 66a991c..c7afd93 100644
--- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_use_window/Event_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_use_window/Event_result.js
@@ -32,12 +32,6 @@ Event = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('Event', Event);
-
-
-/**
  * Metadata
  *
  * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_use_window/NoConflictUseWindow_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_use_window/NoConflictUseWindow_result.js
index 65d2724..ea8c44f 100644
--- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_use_window/NoConflictUseWindow_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_use_window/NoConflictUseWindow_result.js
@@ -34,12 +34,6 @@ NoConflictUseWindow = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('NoConflictUseWindow', NoConflictUseWindow);
-
-
-/**
  * @private
  * @type {mypackage.TestClass}
  */
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_use_window/mypackage/TestClass_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_use_window/mypackage/TestClass_result.js
index e4726df..d864bc8 100644
--- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_use_window/mypackage/TestClass_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_no_conflict_use_window/mypackage/TestClass_result.js
@@ -34,12 +34,6 @@ this.event = new Event();
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('mypackage.TestClass', mypackage.TestClass);
-
-
-/**
  * @private
  * @type {Event}
  */
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/Event_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/Event_result.js
index 66a991c..c7afd93 100644
--- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/Event_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/Event_result.js
@@ -32,12 +32,6 @@ Event = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('Event', Event);
-
-
-/**
  * Metadata
  *
  * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/SamePackageAsConflict_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/SamePackageAsConflict_result.js
index 07b5ac0..f670ad9 100644
--- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/SamePackageAsConflict_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/SamePackageAsConflict_result.js
@@ -34,12 +34,6 @@ SamePackageAsConflict = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('SamePackageAsConflict', SamePackageAsConflict);
-
-
-/**
  * @private
  * @type {mypackage.TestClass}
  */
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/mypackage/Event_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/mypackage/Event_result.js
index b9429ad..18997ac 100644
--- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/mypackage/Event_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/mypackage/Event_result.js
@@ -32,12 +32,6 @@ mypackage.Event = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('mypackage.Event', mypackage.Event);
-
-
-/**
  * Metadata
  *
  * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/mypackage/TestClass_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/mypackage/TestClass_result.js
index 1a9924f..f633ba1 100644
--- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/mypackage/TestClass_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_same_package_as_conflict/mypackage/TestClass_result.js
@@ -36,12 +36,6 @@ this.event = new mypackage.Event();
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('mypackage.TestClass', mypackage.TestClass);
-
-
-/**
  * @private
  * @type {mypackage.Event}
  */
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/Event_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/Event_result.js
index 66a991c..c7afd93 100644
--- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/Event_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/Event_result.js
@@ -32,12 +32,6 @@ Event = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('Event', Event);
-
-
-/**
  * Metadata
  *
  * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/UseWindow_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/UseWindow_result.js
index 81a7d42..e904864 100644
--- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/UseWindow_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/UseWindow_result.js
@@ -34,12 +34,6 @@ UseWindow = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('UseWindow', UseWindow);
-
-
-/**
  * @private
  * @type {mypackage.TestClass}
  */
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/mypackage/TestClass_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/mypackage/TestClass_result.js
index ee74592..12579aa 100644
--- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/mypackage/TestClass_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/mypackage/TestClass_result.js
@@ -37,12 +37,6 @@ this.event2 = new otherpackage.Event();
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('mypackage.TestClass', mypackage.TestClass);
-
-
-/**
  * @private
  * @type {Event}
  */
diff --git a/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/otherpackage/Event_result.js b/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/otherpackage/Event_result.js
index a9df84a..097c752 100644
--- a/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/otherpackage/Event_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/package_conflicts_use_window/otherpackage/Event_result.js
@@ -32,12 +32,6 @@ otherpackage.Event = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('otherpackage.Event', otherpackage.Event);
-
-
-/**
  * Metadata
  *
  * @type {Object.<string, Array.<Object>>}
diff --git a/compiler-jx/src/test/resources/royale/projects/super/Base_result.js b/compiler-jx/src/test/resources/royale/projects/super/Base_result.js
index a9f9f92..f56c691 100644
--- a/compiler-jx/src/test/resources/royale/projects/super/Base_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/super/Base_result.js
@@ -35,12 +35,6 @@ Base = function() {
 goog.inherits(Base, Super);
 
 
-/**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('Base', Base);
-
-
 Base.prototype.get__text = function() {
   return "A" + Base.superClass_.get__text.apply(this);
 };
diff --git a/compiler-jx/src/test/resources/royale/projects/super/Super_result.js b/compiler-jx/src/test/resources/royale/projects/super/Super_result.js
index 8116b6f..617a2e3 100644
--- a/compiler-jx/src/test/resources/royale/projects/super/Super_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/super/Super_result.js
@@ -31,12 +31,6 @@ Super = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('Super', Super);
-
-
-/**
  * @private
  * @type {string}
  */
diff --git a/compiler-jx/src/test/resources/royale/projects/xml_requires/XMLRequire_result.js b/compiler-jx/src/test/resources/royale/projects/xml_requires/XMLRequire_result.js
index 54f1e8b..8928228 100644
--- a/compiler-jx/src/test/resources/royale/projects/xml_requires/XMLRequire_result.js
+++ b/compiler-jx/src/test/resources/royale/projects/xml_requires/XMLRequire_result.js
@@ -34,12 +34,6 @@ XMLRequire = function() {
 
 
 /**
- * Prevent renaming of class. Needed for reflection.
- */
-goog.exportSymbol('XMLRequire', XMLRequire);
-
-
-/**
  * Metadata
  *
  * @type {Object.<string, Array.<Object>>}