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

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

commit a76198f29f612dd062527625249f60797aabf12b
Author: greg-dove <[email protected]>
AuthorDate: Tue Feb 26 22:27:55 2019 +1300

    Reflection support compiler updates:
    -some minor fomatting improvements in reflection data output
    -addition of 'isDynamic' for dynamic classes in CLASS_INFO
    -support for release build (renamed) access to public vars via 'variables' 
reflection (using an on-demand getter-setter function)
    -changes to output for js default initializers to fully populate the 
prototype with default values, and capture initial static fields of classes. 
Important for reflection (and serialization) of dynamics
    -additiion of compileFlags which permits awareness of compiletime settings 
used at runtime, which may be different between libs (e.g. framework) vs. 
current project.
    -removal of reflection data from internal classes. These should not need 
reflection data, because they are 'private'
    -updates to compiler tests
---
 .../royale/compiler/clients/JSConfiguration.java   |   20 +-
 .../internal/codegen/js/jx/FieldEmitter.java       |   41 +-
 .../codegen/js/jx/PackageFooterEmitter.java        |  384 +++--
 .../codegen/js/royale/JSRoyaleEmitterTokens.java   |    4 +
 .../codegen/mxml/royale/MXMLRoyaleEmitter.java     |   20 +-
 .../driver/js/goog/JSGoogConfiguration.java        |   25 +-
 .../codegen/js/royale/TestRoyaleEmitter.java       |  280 ++--
 .../codegen/js/royale/TestRoyalePackage.java       | 1494 +++++++++++---------
 .../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     |    8 +-
 .../royale/projects/circular_proto/C_result.js     |    8 +-
 .../royale/projects/circular_proto/D_result.js     |    8 +-
 .../royale/projects/circular_proto/E_result.js     |    8 +-
 .../royale/projects/circular_proto/F_result.js     |    8 +-
 .../royale/projects/interfaces/Test_result.js      |    8 +-
 .../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   |   29 +-
 .../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                                |    7 +-
 .../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 +
 61 files changed, 1602 insertions(+), 1020 deletions(-)

diff --git 
a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/JSConfiguration.java
 
b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/JSConfiguration.java
index b10853c..b560915 100644
--- 
a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/JSConfiguration.java
+++ 
b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/JSConfiguration.java
@@ -49,7 +49,7 @@ import com.google.common.collect.ImmutableList;
  * configure() method of {@link MXMLJSC}.
  * <p>
  * This class inherits all compiler arguments from the MXMLC compiler.
- * 
+ *
  * @author Michael Schmalle
  */
 public class JSConfiguration extends Configuration
@@ -153,7 +153,7 @@ public class JSConfiguration extends Configuration
      * If the definition of a member cannot be resolved, emit dynamic access
      * instead of normal member access. Ensures that dynamic members aren't
      * renamed.
-     * 
+     *
      * <code>myObject.memberAccess</code> becomes 
<code>myObject["memberAccess"]</code>
      */
     @Config
@@ -222,7 +222,7 @@ public class JSConfiguration extends Configuration
      * Example: <code>-define=CONFIG::debugging,true</code>
      *
      * In <code>royale-config.xml</code>:<br/>
-     * 
+     *
      * <pre>
      * <royale-config>
      *    <compiler>
@@ -251,7 +251,7 @@ public class JSConfiguration extends Configuration
      * <code>"\"foo\""</code> or <code>"\'foo\'"</code>) or single-quoted 
(<code>"'foo'"</code>).
      *
      * String values in configuration files need only be single- or double- 
quoted:<br/>
-     * 
+     *
      * <pre>
      * <royale-config>
      *    <compiler>
@@ -270,18 +270,18 @@ public class JSConfiguration extends Configuration
      *
      * Empty strings <i>must</i> be passed as <code>"''"</code> on the 
command-line, and <code>''</code> or
      * <code>""</code> in configuration files.
-     * 
+     *
      * Finally, if you have existing definitions in a configuration file, and 
you would like to add to them with the
      * command-line (let's say most of your build setCompilertings are in the 
configuration, and that you are adding one
      * temporarily using the command-line), you use the following syntax: 
<code>-define+=TEST::temporary,false</code>
      * (noting the plus sign)
-     * 
+     *
      * Note that definitions can be overridden/redefined if you use the append 
("+=") syntax (on the commandline or in a
      * user config file, for instance) with the same namespace and name, and a 
new value.
-     * 
+     *
      * Definitions cannot be removed/undefined. You can undefine ALL existing 
definitions from (e.g. from
      * royale-config.xml) if you do not use append syntax ("=" or 
append="false").
-     * 
+     *
      * IMPORTANT FOR FLASH BUILDER If you are using "Additional commandline 
arguments" to "-define", don't use the
      * following syntax though I suggest it above: 
-define+=CONFIG::foo,"'value'" The trouble is that FB parses the
      * double quotes incorrectly as <"'value'> -- the trailing double-quote is 
dropped. The solution is to avoid inner
@@ -382,7 +382,7 @@ public class JSConfiguration extends Configuration
     @Arguments("filename")
     public void setJsLoadConfig(ConfigurationValue cv, String filename) throws 
ConfigurationException
     {
-        
+    
     }
     
     //////////////////////////////////////////////////////////////////////////
@@ -400,7 +400,7 @@ public class JSConfiguration extends Configuration
      * Configures a list of many manifests mapped to a single namespace URI.
      * <namespace> <uri>library:adobe/flex/something</uri> 
<manifest>something-manifest.xml</manifest>
      * <manifest>something-else-manifest.xml</manifest> ... </namespace>
-     * 
+     *
      * @param cfgval The configuration value context.
      * @param args A List of values for the namespace element, with the first 
item expected to be the uri and the
      *        remaining are manifest paths.
diff --git 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/FieldEmitter.java
 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/FieldEmitter.java
index dfcff18..a1b4803 100644
--- 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/FieldEmitter.java
+++ 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/FieldEmitter.java
@@ -145,7 +145,7 @@ public class FieldEmitter extends JSSubEmitter implements
                }
             }
                getModel().inStaticInitializer = false;
-               if ((ndef.isStatic() && 
!EmitterUtils.needsStaticInitializer(vnodeString, className)) || 
+               if ((ndef.isStatic() && 
!EmitterUtils.needsStaticInitializer(vnodeString, className)) ||
                                (!ndef.isStatic() && 
EmitterUtils.isScalar(vnode)) ||
                                isPackageOrFileMember)
                {
@@ -164,7 +164,31 @@ public class FieldEmitter extends JSSubEmitter implements
                {
                        hasComplexStaticInitializers = true;
                }
-        }        
+               
+               if (!isPackageOrFileMember  && !ndef.isStatic() && 
!EmitterUtils.isScalar(vnode)
+                    && getProject() instanceof RoyaleJSProject
+                    && ((RoyaleJSProject) getProject()).config != null
+                    && ((RoyaleJSProject) 
getProject()).config.getJsDefaultInitializers()
+            )
+               {
+                   //this value will actually be initialized inside the 
constructor.
+                //but if default initializers is set, we define it on the 
prototype with null value first.
+                   //Why?: this needs to be defined on the prototype to 
support reflection
+                //otherwise the constructor initializers will create the new 
property value on 'this' and
+                //there is no runtime clue to separate what is 'dynamic' and 
what is 'inherited'
+                //these clues throughout the prototype chain are important for 
runtime identification
+                //of dynamic fields.
+                //runtime checks will only work accurately using this 
technique if the entire inheritance chain
+                //for the reflection target is compiled with default js 
initializers, because it permits
+                //inspection of the prototype chain to determine all the 
sealed members, and isolate them
+                //from whatever else is defined as 'own' properties on the 
instance (which can be assumed to be
+                // 'dynamic' properties).
+                write(ASEmitterTokens.SPACE);
+                writeToken(ASEmitterTokens.EQUAL);
+                write(ASEmitterTokens.SPACE);
+                write(ASEmitterTokens.NULL);
+            }
+        }
         if (vnode == null && def != null)
         {
             String defName = def.getQualifiedName();
@@ -199,12 +223,17 @@ public class FieldEmitter extends JSSubEmitter implements
                         write(ASEmitterTokens.SPACE);
                         writeToken(ASEmitterTokens.EQUAL);
                         write(IASKeywordConstants.FALSE);
+                        
+                    } else if (defName.equals("*")) {
+                        //setting the value to *undefined* is needed  to 
create the field
+                        //on the prototype - this is important for reflection 
purposes
+                        write(ASEmitterTokens.SPACE);
+                        writeToken(ASEmitterTokens.EQUAL);
+                        write(ASEmitterTokens.UNDEFINED);
                     }
-                    else if (!defName.equals("*"))
+                    else
                     {
-                        //type * is meant to default to undefined, so it
-                        //doesn't need to be initialized, but everything
-                        //else should default to null
+                        //everything else should default to null
                         write(ASEmitterTokens.SPACE);
                         writeToken(ASEmitterTokens.EQUAL);
                         write(IASKeywordConstants.NULL);
diff --git 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/PackageFooterEmitter.java
 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/PackageFooterEmitter.java
index 0048b91..fec56eb 100644
--- 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/PackageFooterEmitter.java
+++ 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/PackageFooterEmitter.java
@@ -37,12 +37,14 @@ import 
org.apache.royale.compiler.internal.codegen.js.royale.JSRoyaleDocEmitter;
 import org.apache.royale.compiler.internal.codegen.js.royale.JSRoyaleEmitter;
 import 
org.apache.royale.compiler.internal.codegen.js.royale.JSRoyaleEmitterTokens;
 import org.apache.royale.compiler.internal.codegen.js.utils.EmitterUtils;
+import org.apache.royale.compiler.internal.definitions.ClassDefinition;
 import org.apache.royale.compiler.internal.driver.js.goog.JSGoogConfiguration;
 import org.apache.royale.compiler.internal.projects.RoyaleJSProject;
 import org.apache.royale.compiler.internal.tree.as.SetterNode;
 import org.apache.royale.compiler.problems.UnknownTypeProblem;
 import org.apache.royale.compiler.projects.ICompilerProject;
 import org.apache.royale.compiler.scopes.IASScope;
+import org.apache.royale.compiler.scopes.IDefinitionSet;
 import org.apache.royale.compiler.tree.ASTNodeID;
 import org.apache.royale.compiler.tree.as.*;
 import org.apache.royale.compiler.tree.metadata.IMetaTagNode;
@@ -74,13 +76,14 @@ public class PackageFooterEmitter extends JSSubEmitter 
implements
         JSRoyaleDocEmitter doc = (JSRoyaleDocEmitter) getEmitter()
         .getDocEmitter();
 
-               boolean isInterface = tnode instanceof IInterfaceNode;
-
            if (!getEmitter().getModel().isExterns)
            {
-                   /*
+                       boolean isInterface = tnode instanceof IInterfaceNode;
+                       boolean isDynamic = tnode instanceof IClassNode && 
tnode.hasModifier(ASModifier.DYNAMIC);
+               boolean isInternalClass  = !isInterface && tnode instanceof 
IClassNode && getEmitter().getModel().isInternalClass(tnode.getQualifiedName());
+                       /*
                     * Metadata
-                    * 
+                    *
                     * @type {Object.<string, Array.<Object>>}
                     */
                    writeNewline();
@@ -123,7 +126,19 @@ public class PackageFooterEmitter extends JSSubEmitter 
implements
                        write(ASEmitterTokens.SINGLE_QUOTE);
                        if (isInterface) 
write(JSRoyaleEmitterTokens.ROYALE_CLASS_INFO_INTERFACE_KIND);
                        else 
write(JSRoyaleEmitterTokens.ROYALE_CLASS_INFO_CLASS_KIND);
-                       writeToken(ASEmitterTokens.SINGLE_QUOTE);
+                       //writeToken(ASEmitterTokens.SINGLE_QUOTE);
+                       
+                       if (isDynamic) {
+                               //only add the 'isDynamic' tag when it is needed
+                               write(ASEmitterTokens.SINGLE_QUOTE);
+                               writeToken(ASEmitterTokens.COMMA);
+                               
write(JSRoyaleEmitterTokens.ROYALE_CLASS_INFO_IS_DYNAMIC);
+                               writeToken(ASEmitterTokens.COLON);
+                               write(ASEmitterTokens.TRUE);
+                       } else {
+                               writeToken(ASEmitterTokens.SINGLE_QUOTE);
+                       }
+                       
                    write(ASEmitterTokens.BLOCK_CLOSE);
                    write(ASEmitterTokens.SQUARE_CLOSE);
        
@@ -184,14 +199,20 @@ public class PackageFooterEmitter extends JSSubEmitter 
implements
        
                        String typeName = 
getEmitter().formatQualifiedName(tnode.getQualifiedName());
        
-                   emitReflectionData(
-                               typeName,
-                                       reflectionKind,
-                               varData,
-                               accessorData,
-                               methodData,
-                               metadata);
-                   
+                       if (!isInternalClass) {
+                               emitReflectionData(
+                                               typeName,
+                                               reflectionKind,
+                                               varData,
+                                               accessorData,
+                                               methodData,
+                                               metadata);
+                       }
+                       
+                   if (!isInterface && !isInternalClass) {
+                       emitReflectionRegisterInitialStaticFields(typeName, 
(ClassDefinition) tnode.getDefinition());
+                       }
+                  
                    emitExportProperties(typeName, exportProperties, 
exportSymbols);
            }
     }
@@ -249,7 +270,7 @@ public class PackageFooterEmitter extends JSSubEmitter 
implements
        methodData = new ArrayList<MethodData>();
        /*
             * Reflection
-            * 
+            *
             * @return {Object.<string, Function>}
             */
         IDefinitionNode[] dnodes;
@@ -278,14 +299,14 @@ public class PackageFooterEmitter extends JSSubEmitter 
implements
                                        //todo consider outputting consts, none 
output for now
                                        continue;
                                }
-                if (ns == IASKeywordConstants.PUBLIC || isInterface)
+                if (isInterface || (ns != null && 
ns.equals(IASKeywordConstants.PUBLIC )))
                 {
                        name = varNode.getName();
 
                                        IMetaTagsNode metaData = 
varNode.getMetaTags();
                                        //first deal with 'Bindable' upgrades 
to getters/setters
                                        if (!isInterface && 
bindableVars.containsKey(name)
-                                                       && 
bindableVars.get(name).namespace == IASKeywordConstants.PUBLIC) {
+                                                       && 
bindableVars.get(name).namespace.equals(IASKeywordConstants.PUBLIC)) {
 
                                                AccessorData bindableAccessor = 
new AccessorData();
                                                bindableAccessor.name = name;
@@ -347,7 +368,7 @@ public class PackageFooterEmitter extends JSSubEmitter 
implements
                        staticEventDispatcher.isStatic = true;
                        accessorData.add(staticEventDispatcher);
                }
-        
+     
            HashMap<String, AccessorData> instanceAccessorMap = new 
HashMap<String, AccessorData>();
                HashMap<String, AccessorData> staticAccessorMap = new 
HashMap<String, AccessorData>();
         for (IDefinitionNode dnode : dnodes)
@@ -362,7 +383,8 @@ public class PackageFooterEmitter extends JSSubEmitter 
implements
             {
                IFunctionNode fnNode = (IFunctionNode)dnode;
                 String ns = fnNode.getNamespace();
-                if (ns == IASKeywordConstants.PUBLIC || isInterface)
+
+                if (isInterface || (ns != null && 
ns.equals(IASKeywordConstants.PUBLIC)))
                 {
                                        String accessorName = fnNode.getName();
                        AccessorData data = accessorMap.get(accessorName);
@@ -426,7 +448,7 @@ public class PackageFooterEmitter extends JSSubEmitter 
implements
             {
                IFunctionNode fnNode = (IFunctionNode)dnode;
                 String ns = fnNode.getNamespace();
-                if (ns == IASKeywordConstants.PUBLIC || isInterface)
+                if (isInterface || (ns != null && 
ns.equals(IASKeywordConstants.PUBLIC)))
                 {
                        MethodData data = new MethodData();
                                        data.isStatic = isStatic;
@@ -519,6 +541,8 @@ public class PackageFooterEmitter extends JSSubEmitter 
implements
        }
 
        private void emitReflectionDataEnd(String typeName) {
+               JSGoogConfiguration config = 
((RoyaleJSProject)getWalker().getProject()).config;
+               
                writeNewline();
                // close return object
                write(ASEmitterTokens.BLOCK_CLOSE);
@@ -529,6 +553,28 @@ public class PackageFooterEmitter extends JSSubEmitter 
implements
                writeNewline();
                write(ASEmitterTokens.BLOCK_CLOSE);
                writeNewline(ASEmitterTokens.SEMICOLON);
+               
+               if (config == null) return;
+               //add compiletime descriptor flags
+               //doc emitter-ish:
+               writeNewline("/**");
+               writeNewline(" * @export");
+               writeNewline(" * @const");
+               writeNewline(" * @type {number}");
+               writeNewline(" */");
+               
+               //{typeName}.prototype.ROYALE_REFLECTION_INFO.compileFlags = 
{int value here};
+               write(typeName);
+               write(ASEmitterTokens.MEMBER_ACCESS);
+               write(JSEmitterTokens.PROTOTYPE);
+               write(ASEmitterTokens.MEMBER_ACCESS);
+               write(JSRoyaleEmitterTokens.ROYALE_REFLECTION_INFO);
+               write(ASEmitterTokens.MEMBER_ACCESS);
+               
writeToken(JSRoyaleEmitterTokens.ROYALE_REFLECTION_INFO_COMPILE_TIME_FLAGS);
+               writeToken(ASEmitterTokens.EQUAL);
+               //
+               write(String.valueOf(config.getReflectionFlags()));
+               writeNewline(ASEmitterTokens.SEMICOLON);
        }
     
     public void emitReflectionData(
@@ -538,7 +584,6 @@ public class PackageFooterEmitter extends JSSubEmitter 
implements
                List<AccessorData> accessorData,
                List<MethodData> methodData,
                IMetaTagNode[] metaData
-
                )
     {
 
@@ -586,13 +631,48 @@ public class PackageFooterEmitter extends JSSubEmitter 
implements
                                        write(ASEmitterTokens.SINGLE_QUOTE);
                                        write(var.type);
                                        write(ASEmitterTokens.SINGLE_QUOTE);
-                               //      if (var.isStatic) {
-                               //              writeIsStatic();
-                               //      }
+                                       
+                                       //provide a get_set function that works 
in release build with public vars
+                                       writeToken(ASEmitterTokens.COMMA);
+                                       
write(JSRoyaleEmitterTokens.ROYALE_REFLECTION_INFO_GET_SET);
+                                       writeToken(ASEmitterTokens.COLON);
+                                       writeToken(ASEmitterTokens.FUNCTION);
+                                       boolean valueIsUntyped = 
var.type.equals("*");
+                                       if (valueIsUntyped) {
+                                               //give the function a local 
name because a self-reference argument will be used to signify that
+                                               //it is not being used as a 
setter (because 'undefined' is a valid possible value to set)
+                                               write("f");
+                                       }
+                                       write(ASEmitterTokens.PAREN_OPEN);
+                                       
+                                       if (!var.isStatic) {
+                                               //instance type parameter
+                                               writeToken("/** " + typeName + 
" */");
+                                               write("inst");
+                                               
writeToken(ASEmitterTokens.COMMA);
+                                       }
+                                       //any type for value
+                                       write("/** * */ v");
+                                       writeToken(ASEmitterTokens.PAREN_CLOSE);
+                                       write(ASEmitterTokens.BLOCK_OPEN);
+                                       String getterSetter;
+                                       String field = var.isStatic ? typeName 
+ "." + var.name : "inst." + var.name;
+                                       if (valueIsUntyped) {
+                                               //to avoid setting when type is 
'*' set the 'value' param to the function being called, which
+                                               //causes a 'getter only' result
+                                               //In the case of no parameter 
or literal undefined being passed, it will be treated as the value
+                                               //of undefined to be assigned 
to the variable field
+                                               getterSetter = "return v !== f 
? "+ field + " = v : " + field + ";";
+                                       } else {
+                                               getterSetter = "return v !== 
undefined ? " + field + " = v : " + field + ";";
+                                       }
+                                       write(getterSetter);
+                                       write(ASEmitterTokens.BLOCK_CLOSE);
+                                       
                                        IMetaTagNode[] tags = var.metaData;
                                        if (tags != null) {
-                                               
writeToken(ASEmitterTokens.COMMA);
-                                               writeMetaData(tags);
+                                               
//writeToken(ASEmitterTokens.COMMA);
+                                               writeMetaData(tags, true, 
false);
                                        }
                                        // close object
                                        write(ASEmitterTokens.BLOCK_CLOSE);
@@ -651,9 +731,6 @@ public class PackageFooterEmitter extends JSSubEmitter 
implements
                                write(ASEmitterTokens.SINGLE_QUOTE);
                                write(accessor.type);
                                write(ASEmitterTokens.SINGLE_QUOTE);
-                       //      if (accessor.isStatic) {
-                       //              writeIsStatic();
-                       //      }
                                writeToken(ASEmitterTokens.COMMA);
                                write("access");
                                writeToken(ASEmitterTokens.COLON);
@@ -669,8 +746,8 @@ public class PackageFooterEmitter extends JSSubEmitter 
implements
                                IMetaTagNode[] tags = accessor.metaData;
                                if (tags != null)
                                {
-                                       writeToken(ASEmitterTokens.COMMA);
-                                       writeMetaData(tags);
+                                       //writeToken(ASEmitterTokens.COMMA);
+                                       writeMetaData(tags, true, false);
                                }
                                // close object
                                write(ASEmitterTokens.BLOCK_CLOSE);
@@ -728,9 +805,6 @@ public class PackageFooterEmitter extends JSSubEmitter 
implements
                                write(ASEmitterTokens.SINGLE_QUOTE);
                                write(method.type);
                                write(ASEmitterTokens.SINGLE_QUOTE);
-                       //      if (method.isStatic) {
-                       //              writeIsStatic();
-                       //      }
                                writeToken(ASEmitterTokens.COMMA);
                                write("declaredBy");
                                writeToken(ASEmitterTokens.COLON);
@@ -747,8 +821,8 @@ public class PackageFooterEmitter extends JSSubEmitter 
implements
                                IMetaTagNode[] metas = method.metaData;
                                if (metas != null)
                                {
-                                       writeToken(ASEmitterTokens.COMMA);
-                                       writeMetaData(metas);
+                                       //writeToken(ASEmitterTokens.COMMA);
+                                       writeMetaData(metas, true, false);
                                }
 
                                // close object
@@ -764,18 +838,15 @@ public class PackageFooterEmitter extends JSSubEmitter 
implements
                        // close method function
                        write(ASEmitterTokens.BLOCK_CLOSE);
                }
-
-
-
+               
        if (metaData != null && metaData.length > 0)
        {
-               write(ASEmitterTokens.COMMA);
-           writeNewline();
-           writeMetaData(metaData);
-       }                       
+               //write(ASEmitterTokens.COMMA);
+           //writeNewline();
+           writeMetaData(metaData, true, true);
+       }
            
            indentPop();
-
                emitReflectionDataEnd(typeName);
     }
 
@@ -798,13 +869,7 @@ public class PackageFooterEmitter extends JSSubEmitter 
implements
                writeToken(ASEmitterTokens.SQUARE_CLOSE);
        }
        */
-    
-       /*private void writeIsStatic() {
-               writeToken(ASEmitterTokens.COMMA);
-               write("isStatic");
-               writeToken(ASEmitterTokens.COLON);
-               writeToken(ASEmitterTokens.TRUE);
-       }*/
+ 
 
        private void writeEmptyContent(Boolean appendComma, Boolean 
includeNewline) {
                //return {};
@@ -830,7 +895,6 @@ public class PackageFooterEmitter extends JSSubEmitter 
implements
                // return [ array of parameter definitions ]
                writeToken(ASEmitterTokens.RETURN);
                writeToken(ASEmitterTokens.SQUARE_OPEN);
-               write(ASEmitterTokens.SPACE);
 
                int len = params.length;
                for (int i = 0; i < len ; i++) {
@@ -872,96 +936,116 @@ public class PackageFooterEmitter extends JSSubEmitter 
implements
                // close function
                write(ASEmitterTokens.BLOCK_CLOSE);
        }
-    
-    private void writeMetaData(IMetaTagNode[] tags)
-    {
-       JSGoogConfiguration config = 
((RoyaleJSProject)getWalker().getProject()).config;
-       Set<String> allowedNames = config.getCompilerKeepAs3Metadata();
-       
-           // metadata: function() {
-               write("metadata");
-           writeToken(ASEmitterTokens.COLON);
-           writeToken(ASEmitterTokens.FUNCTION);
-           write(ASEmitterTokens.PAREN_OPEN);
-           writeToken(ASEmitterTokens.PAREN_CLOSE);
-           writeToken(ASEmitterTokens.BLOCK_OPEN);
-           // return [ array of metadata tags ]
-           writeToken(ASEmitterTokens.RETURN);
-           writeToken(ASEmitterTokens.SQUARE_OPEN);
-
+       
+       private ArrayList<IMetaTagNode> getAllowedMetadata(IMetaTagNode[] tags) 
{
+               JSGoogConfiguration config = 
((RoyaleJSProject)getWalker().getProject()).config;
+               Set<String> allowedNames = config.getCompilerKeepAs3Metadata();
+               
                ArrayList<IMetaTagNode> filteredTags = new 
ArrayList<IMetaTagNode>(tags.length);
                for (IMetaTagNode tag : tags)
                {
                        if (allowedNames.contains(tag.getTagName())) 
filteredTags.add(tag);
-
                }
-
-           int count = 0;
+               return filteredTags;
+       }
+       
+       private void writeAllowedMetadata(ArrayList<IMetaTagNode> filteredTags 
) {
+               int count = 0;
                int len = filteredTags.size();
-           for (IMetaTagNode tag : filteredTags)
-           {
-
-
-               count++;
-           // { name: <tag name>
-           writeToken(ASEmitterTokens.BLOCK_OPEN);
-           write("name");
-           writeToken(ASEmitterTokens.COLON);
-           write(ASEmitterTokens.SINGLE_QUOTE);
-           write(tag.getTagName());
-           write(ASEmitterTokens.SINGLE_QUOTE);
-           IMetaTagAttribute[] args = tag.getAllAttributes();
-           if (args.length > 0)
-           {
-                       writeToken(ASEmitterTokens.COMMA);
-                   
-                   // args: [
-                   write("args");
-                   writeToken(ASEmitterTokens.COLON);
-                   writeToken(ASEmitterTokens.SQUARE_OPEN);
-                   
-                   for (int j = 0; j < args.length; j++)
-                   {
-                       if (j > 0)
-                       {
-                               writeToken(ASEmitterTokens.COMMA);
-                       }
-                       // { key: key, value: value }
-                       IMetaTagAttribute arg = args[j];
-                   writeToken(ASEmitterTokens.BLOCK_OPEN);
-                   write("key");
-                   writeToken(ASEmitterTokens.COLON);
-                   write(ASEmitterTokens.SINGLE_QUOTE);
-                   String key = arg.getKey();
-                   write(key == null ? "" : key);
-                   write(ASEmitterTokens.SINGLE_QUOTE);
-                       writeToken(ASEmitterTokens.COMMA);
-                   write("value");
-                   writeToken(ASEmitterTokens.COLON);
-                   write(ASEmitterTokens.SINGLE_QUOTE);
-                   write(formatJSStringValue(arg.getValue()));
-                   write(ASEmitterTokens.SINGLE_QUOTE);
+               
+               // metadata: function() {
+               write("metadata");
+               writeToken(ASEmitterTokens.COLON);
+               writeToken(ASEmitterTokens.FUNCTION);
+               write(ASEmitterTokens.PAREN_OPEN);
+               writeToken(ASEmitterTokens.PAREN_CLOSE);
+               writeToken(ASEmitterTokens.BLOCK_OPEN);
+               // return [ array of metadata tags ]
+               writeToken(ASEmitterTokens.RETURN);
+               writeToken(ASEmitterTokens.SQUARE_OPEN);
+               
+               for (IMetaTagNode tag : filteredTags)
+               {
+                       count++;
+                       // { name: <tag name>
+                       writeToken(ASEmitterTokens.BLOCK_OPEN);
+                       write("name");
+                       writeToken(ASEmitterTokens.COLON);
+                       write(ASEmitterTokens.SINGLE_QUOTE);
+                       write(tag.getTagName());
+                       write(ASEmitterTokens.SINGLE_QUOTE);
+                       IMetaTagAttribute[] args = tag.getAllAttributes();
+                       if (args.length > 0)
+                       {
+                               writeToken(ASEmitterTokens.COMMA);
+                               
+                               // args: [
+                               write("args");
+                               writeToken(ASEmitterTokens.COLON);
+                               writeToken(ASEmitterTokens.SQUARE_OPEN);
+                               
+                               for (int j = 0; j < args.length; j++)
+                               {
+                                       if (j > 0)
+                                       {
+                                               
writeToken(ASEmitterTokens.COMMA);
+                                       }
+                                       // { key: key, value: value }
+                                       IMetaTagAttribute arg = args[j];
+                                       writeToken(ASEmitterTokens.BLOCK_OPEN);
+                                       write("key");
+                                       writeToken(ASEmitterTokens.COLON);
+                                       write(ASEmitterTokens.SINGLE_QUOTE);
+                                       String key = arg.getKey();
+                                       write(key == null ? "" : key);
+                                       write(ASEmitterTokens.SINGLE_QUOTE);
+                                       writeToken(ASEmitterTokens.COMMA);
+                                       write("value");
+                                       writeToken(ASEmitterTokens.COLON);
+                                       write(ASEmitterTokens.SINGLE_QUOTE);
+                                       
write(formatJSStringValue(arg.getValue()));
+                                       write(ASEmitterTokens.SINGLE_QUOTE);
                                        write(ASEmitterTokens.SPACE);
-                   write(ASEmitterTokens.BLOCK_CLOSE);
-                   }
-                   // close array of args
+                                       write(ASEmitterTokens.BLOCK_CLOSE);
+                               }
+                               // close array of args
                                write(ASEmitterTokens.SPACE);
-                   write(ASEmitterTokens.SQUARE_CLOSE);
-           }
-           // close metadata object
+                               write(ASEmitterTokens.SQUARE_CLOSE);
+                       }
+                       // close metadata object
                        write(ASEmitterTokens.SPACE);
-           write(ASEmitterTokens.BLOCK_CLOSE);
+                       write(ASEmitterTokens.BLOCK_CLOSE);
                        if (count > 0 && count < len)
                        {
                                writeToken(ASEmitterTokens.COMMA);
                        }
-           }
-           // close array of metadatas
+               }
+               // close array of metadatas
                write(ASEmitterTokens.SPACE);
-           write(ASEmitterTokens.SQUARE_CLOSE);
-           writeToken(ASEmitterTokens.SEMICOLON);
-           // close function
-           write(ASEmitterTokens.BLOCK_CLOSE);
+               write(ASEmitterTokens.SQUARE_CLOSE);
+               writeToken(ASEmitterTokens.SEMICOLON);
+               // close function
+               write(ASEmitterTokens.BLOCK_CLOSE);
+       }
+    
+    private void writeMetaData(IMetaTagNode[] tags, boolean prefixComma, 
boolean prefixNewline)
+    {
+               ArrayList<IMetaTagNode> filteredTags = getAllowedMetadata(tags);
+               if (filteredTags.size() == 0) {
+                       //nothing to write
+                       return;
+               }
+               if (prefixNewline) {
+                       if (prefixComma) {
+                               write(ASEmitterTokens.COMMA);
+                       }
+                       writeNewline();
+               } else {
+                       if (prefixComma) {
+                               writeToken(ASEmitterTokens.COMMA);
+                       }
+               }
+               writeAllowedMetadata(filteredTags);
     }
 
     private String formatJSStringValue(String value) {
@@ -969,6 +1053,52 @@ public class PackageFooterEmitter extends JSSubEmitter 
implements
        value = value.replace("'","\\'");
        return value;
        }
+       
+       public void emitReflectionRegisterInitialStaticFields(String typeName, 
IClassDefinition classDef) {
+               //this is only output if the default initializers are enabled 
(otherwise runtime reflection results are not reliable)
+               //local config check here (instead of call site check) - in 
case this needs to change in the future:
+               JSGoogConfiguration config = 
((RoyaleJSProject)getWalker().getProject()).config;
+               if (config == null || !config.getJsDefaultInitializers()) 
return;
+               
+               boolean needsStaticsList = false;
+               Collection<IDefinitionSet> defs = 
classDef.getContainedScope().getAllLocalDefinitionSets();
+               for (IDefinitionSet set : defs) {
+                       for (int i = 0, l = set.getSize(); i < l; ++i) {
+                               IDefinition d = set.getDefinition(i);
+                               if (d.isStatic()) {
+                                       needsStaticsList = true;
+                                       break;
+                               }
+                       }
+                       if (needsStaticsList) break;
+               }
+               if (needsStaticsList) {
+                       //support for reflection on static classes: supports 
ability to distinguish between initial fields and dynamic fields
+                       //doc emitter-ish:
+                       writeNewline("/**");
+                       writeNewline(" * Provide reflection support for 
distinguishing dynamic fields on class object (static)");
+                       writeNewline(" * @export");
+                       writeNewline(" * @const");
+                       writeNewline(" * @type {Array<string>}");
+                       writeNewline(" */");
+                       
+                       //{typeName}.prototype.ROYALE_REFLECTION_INFO.statics = 
Object.keys({typeName});
+                       write(typeName);
+                       write(ASEmitterTokens.MEMBER_ACCESS);
+                       write(JSEmitterTokens.PROTOTYPE);
+                       write(ASEmitterTokens.MEMBER_ACCESS);
+                       write(JSRoyaleEmitterTokens.ROYALE_REFLECTION_INFO);
+                       write(ASEmitterTokens.MEMBER_ACCESS);
+                       
writeToken(JSRoyaleEmitterTokens.ROYALE_REFLECTION_INFO_INITIAL_STATICS);
+                       writeToken(ASEmitterTokens.EQUAL);
+                       write("Object.keys");
+                       write(ASEmitterTokens.PAREN_OPEN);
+                       write(typeName);
+                       write(ASEmitterTokens.PAREN_CLOSE);
+                       write(ASEmitterTokens.SEMICOLON);
+                       writeNewline();
+               }
+       }
     
     public void emitExportProperties(String typeName, ArrayList<String> 
exportProperties, ArrayList<String> exportSymbols)
     {
diff --git 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleEmitterTokens.java
 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleEmitterTokens.java
index 8155c0d..20bc298 100644
--- 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleEmitterTokens.java
+++ 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleEmitterTokens.java
@@ -28,9 +28,13 @@ public enum JSRoyaleEmitterTokens implements IEmitterTokens
 {
     ROYALE_CLASS_INFO("ROYALE_CLASS_INFO"),
     ROYALE_REFLECTION_INFO("ROYALE_REFLECTION_INFO"),
+    ROYALE_REFLECTION_INFO_GET_SET("get_set"),
+    ROYALE_REFLECTION_INFO_INITIAL_STATICS("statics"),
+    ROYALE_REFLECTION_INFO_COMPILE_TIME_FLAGS("compileFlags"),
     ROYALE_CLASS_INFO_KIND("kind"),
     ROYALE_CLASS_INFO_CLASS_KIND("class"),
     ROYALE_CLASS_INFO_INTERFACE_KIND("interface"),
+    ROYALE_CLASS_INFO_IS_DYNAMIC("isDynamic"),
     GOOG_EXPORT_PROPERTY("goog.exportProperty"),
     GOOG_EXPORT_SYMBOL("goog.exportSymbol"),
     INDENT("  "),
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 a1e1d3e..159afe2 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
@@ -1184,16 +1184,7 @@ public class MXMLRoyaleEmitter extends MXMLEmitter 
implements
             data.isStatic = false;
             data.declaredBy = cdef.getQualifiedName();
         }
-
-
-        for (MXMLEventSpecifier event : events)
-        {
-               PackageFooterEmitter.MethodData data = 
asEmitter.packageFooterEmitter.new MethodData();
-               methodData.add(data);
-               data.name = event.eventHandler;
-               data.type = ASEmitterTokens.VOID.getToken();
-           data.declaredBy = cdef.getQualifiedName();
-        }
+        
         ArrayList<IMetaTagNode> metadataTagNodes = new 
ArrayList<IMetaTagNode>();
         for (IMXMLMetadataNode metadataTag : metadataNodes)
         {
@@ -1212,6 +1203,11 @@ public class MXMLRoyaleEmitter extends MXMLEmitter 
implements
                        accessorData,
                 methodData,
                 metadataTagNodes.toArray(metaDataTags));
+       
+               
asEmitter.packageFooterEmitter.emitReflectionRegisterInitialStaticFields(
+                               formatQualifiedName(cdef.getQualifiedName()),
+                               cdef);
+        
         asEmitter.packageFooterEmitter.emitExportProperties(
                 formatQualifiedName(cdef.getQualifiedName()),
                 exportProperties,
@@ -1476,14 +1472,14 @@ public class MXMLRoyaleEmitter extends MXMLEmitter 
implements
        StringBuilder sb = new StringBuilder();
        MXMLBindingNode node = (MXMLBindingNode)bi.node;
        IMXMLBindingAttributeNode destNode = node.getDestinationAttributeNode();
-       Stack<IASNode> nodeStack = new Stack<IASNode>();    
+       Stack<IASNode> nodeStack = new Stack<IASNode>();
        nodeStack.push(node);
        IASNode parentNode = node.getParent();
        while (!(parentNode instanceof IMXMLInstanceNode))
        {
                nodeStack.push(parentNode);
                parentNode = parentNode.getParent();
-       }       
+       }
        boolean isXML = parentNode instanceof IMXMLXMLNode;
        sb.append("this.");
        sb.append(((IMXMLInstanceNode)parentNode).getEffectiveID());
diff --git 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/driver/js/goog/JSGoogConfiguration.java
 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/driver/js/goog/JSGoogConfiguration.java
index 3009d3c..45af81c 100644
--- 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/driver/js/goog/JSGoogConfiguration.java
+++ 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/driver/js/goog/JSGoogConfiguration.java
@@ -46,7 +46,7 @@ import 
org.apache.royale.compiler.internal.config.annotations.Mapping;
  * configure() method of {@link MXMLJSC}.
  * <p>
  * This class inherits all compiler arguments from the MXMLC compiler.
- * 
+ *
  * @author Erik de Bruin
  */
 public class JSGoogConfiguration extends JSConfiguration
@@ -488,7 +488,28 @@ public class JSGoogConfiguration extends JSConfiguration
     {
         this.externsReportFileName = getOutputPath(cv, filename);
     }
-
     
+    
+    /**
+     * Support for reflection data output to represent selected config options
+     * that were used when compiling
+     * @return an integer representation of bit flags representing
+     */
+    public int getReflectionFlags() {
+        int ret = 0;
+        final int WITH_DEFAULT_INITIALIZERS = 1;
+        final int HAS_KEEP_AS3_METADATA = 2;
+        final int HAS_KEEP_CODE_WITH_METADATA = 4;
+        final int HAS_EXPORT_PUBLIC_SYMBOLS = 8;
+        final int EXPORT_PROTECTED_SYMBOLS = 16;
+    
+        if (getJsDefaultInitializers()) ret |= WITH_DEFAULT_INITIALIZERS;
+        if (getCompilerKeepAs3Metadata().size() > 0) ret |= 
HAS_KEEP_AS3_METADATA;
+        if (getCompilerKeepCodeWithMetadata().size() > 0) ret |= 
HAS_KEEP_CODE_WITH_METADATA;
+        if (getExportPublicSymbols()) ret |= HAS_EXPORT_PUBLIC_SYMBOLS;
+        if (getExportProtectedSymbols()) ret |= EXPORT_PROTECTED_SYMBOLS;
+        
+        return ret;
+    }
 
 }
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 69c529e..6a96320 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
@@ -59,92 +59,98 @@ public class TestRoyaleEmitter extends TestGoogEmitter
         IFileNode node = compileAS(code);
         asBlockWalker.visitFile(node);
                assertOutWithMetadata("/**\n" +
-                       " * com.example.components.MyEventTarget\n" +
-                       " *\n" +
-                       " * @fileoverview\n" +
-                       " *\n" +
-                       " * @suppress {checkTypes|accessControls}\n" +
-                       " */\n" +
-                       "\n" +
-                       
"goog.provide('com.example.components.MyEventTarget');\n" +
-                       "\n" +
-                       "goog.require('custom.TestImplementation');\n" +
-                       "\n" +
-                       "\n" +
-                       "\n" +
-                       "/**\n" +
-                       " * @constructor\n" +
-                       " * @extends {custom.TestImplementation}\n" +
-                       " */\n" +
-                       "com.example.components.MyEventTarget = function() {\n" 
+
-                       "  com.example.components.MyEventTarget.base(this, 
'constructor');\n" +
-                       "  if (foo() != 42) {\n" +
-                       "    bar();\n" +
-                       "  }\n" +
-                       "};\n" +
-                       "goog.inherits(com.example.components.MyEventTarget, 
custom.TestImplementation);\n" +
-                       "\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" +
-                       
"com.example.components.MyEventTarget.prototype._privateVar = \"do \";\n" +
-                       "\n" +
-                       "\n" +
-                       "/**\n" +
-                       " * @export\n" +
-                       " * @type {number}\n" +
-                       " */\n" +
-                       
"com.example.components.MyEventTarget.prototype.publicProperty = 100;\n" +
-                       "\n" +
-                       "\n" +
-                       "/**\n" +
-                       " * @export\n" +
-                       " * @param {string} value\n" +
-                       " * @return {string}\n" +
-                       " */\n" +
-                       
"com.example.components.MyEventTarget.prototype.myFunction = function(value) 
{\n" +
-                       "  return \"Don't \" + this._privateVar + value;\n" +
-                       "};\n" +
-                       "\n" +
-                       "\n" +
-                       "/**\n" +
-                       " * Metadata\n" +
-                       " *\n" +
-                       " * @type {Object.<string, Array.<Object>>}\n" +
-                       " */\n" +
-                       
"com.example.components.MyEventTarget.prototype.ROYALE_CLASS_INFO = { names: [{ 
name: 'MyEventTarget', qName: 'com.example.components.MyEventTarget', kind: 
'class' }] };\n" +
-                       "\n" +
-                       "\n" +
-                       "\n" +
-                       "/**\n" +
-                       " * Reflection\n" +
-                       " *\n" +
-                       " * @return {Object.<string, Function>}\n" +
-                       " */\n" +
-                       
"com.example.components.MyEventTarget.prototype.ROYALE_REFLECTION_INFO = 
function () {\n" +
-                       "  return {\n" +
-                       "    variables: function () {\n" +
-                       "      return {\n" +
-                       "        'publicProperty': { type: 'Number'}\n" +
-                       "      };\n" + 
-                       "    },\n" +
-                       "    accessors: function () {return {};},\n" +
-                       "    methods: function () {\n" +
-                       "      return {\n" +
-                       "        'MyEventTarget': { type: '', declaredBy: 
'com.example.components.MyEventTarget'},\n" +
-                       "        'myFunction': { type: 'String', declaredBy: 
'com.example.components.MyEventTarget', parameters: function () { return [  { 
index: 1, type: 'String', optional: false } ]; }}\n" +
-                       "      };\n" +
-                       "    }\n" +
-                       "  };\n" +
-                       "};\n");
+                                       " * 
com.example.components.MyEventTarget\n" +
+                                       " *\n" +
+                                       " * @fileoverview\n" +
+                                       " *\n" +
+                                       " * @suppress 
{checkTypes|accessControls}\n" +
+                                       " */\n" +
+                                       "\n" +
+                                       
"goog.provide('com.example.components.MyEventTarget');\n" +
+                                       "\n" +
+                                       
"goog.require('custom.TestImplementation');\n" +
+                                       "\n" +
+                                       "\n" +
+                                       "\n" +
+                                       "/**\n" +
+                                       " * @constructor\n" +
+                                       " * @extends 
{custom.TestImplementation}\n" +
+                                       " */\n" +
+                                       "com.example.components.MyEventTarget = 
function() {\n" +
+                                       "  
com.example.components.MyEventTarget.base(this, 'constructor');\n" +
+                                       "  if (foo() != 42) {\n" +
+                                       "    bar();\n" +
+                                       "  }\n" +
+                                       "};\n" +
+                                       
"goog.inherits(com.example.components.MyEventTarget, 
custom.TestImplementation);\n" +
+                                       "\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" +
+                                       
"com.example.components.MyEventTarget.prototype._privateVar = \"do \";\n" +
+                       "\n" +
+                       "\n" +
+                       "/**\n" +
+                       " * @export\n" +
+                       " * @type {number}\n" +
+                       " */\n" +
+                       
"com.example.components.MyEventTarget.prototype.publicProperty = 100;\n" +
+                       "\n" +
+                       "\n" +
+                       "/**\n" +
+                       " * @export\n" +
+                       " * @param {string} value\n" +
+                       " * @return {string}\n" +
+                       " */\n" +
+                       
"com.example.components.MyEventTarget.prototype.myFunction = function(value) 
{\n" +
+                       "  return \"Don't \" + this._privateVar + value;\n" +
+               "};\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * Metadata\n" +
+                               " *\n" +
+                               " * @type {Object.<string, Array.<Object>>}\n" +
+                               " */\n" +
+                               
"com.example.components.MyEventTarget.prototype.ROYALE_CLASS_INFO = { names: [{ 
name: 'MyEventTarget', qName: 'com.example.components.MyEventTarget', kind: 
'class' }] };\n" +
+                               "\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * Reflection\n" +
+                               " *\n" +
+                               " * @return {Object.<string, Function>}\n" +
+                               " */\n" +
+                               
"com.example.components.MyEventTarget.prototype.ROYALE_REFLECTION_INFO = 
function () {\n" +
+                               "  return {\n" +
+                               "    variables: function () {\n" +
+                               "      return {\n" +
+                               "        'publicProperty': { type: 'Number', 
get_set: function (/** com.example.components.MyEventTarget */ inst, /** * */ 
v) {return v !== undefined ? inst.publicProperty = v : 
inst.publicProperty;}}\n" +
+                               "      };\n" +
+                               "    },\n" +
+                               "    accessors: function () {return {};},\n" +
+                               "    methods: function () {\n" +
+                               "      return {\n" +
+                               "        'MyEventTarget': { type: '', 
declaredBy: 'com.example.components.MyEventTarget'},\n" +
+                               "        'myFunction': { type: 'String', 
declaredBy: 'com.example.components.MyEventTarget', parameters: function () { 
return [ { index: 1, type: 'String', optional: false } ]; }}\n" +
+                               "      };\n" +
+                               "    }\n" +
+                               "  };\n" +
+                               "};\n" +
+                               "/**\n" +
+                               " * @export\n" +
+                               " * @const\n" +
+                               " * @type {number}\n" +
+                               " */\n" +
+                               
"com.example.components.MyEventTarget.prototype.ROYALE_REFLECTION_INFO.compileFlags
 = 8;\n");
     }
 
     @Override
@@ -156,49 +162,55 @@ public class TestRoyaleEmitter extends TestGoogEmitter
         IFileNode node = compileAS(code);
         asBlockWalker.visitFile(node);
         assertOutWithMetadata("/**\n" +
-                       " * com.example.components.TestInterface\n" +
-                       " *\n" +
-                       " * @fileoverview\n" +
-                       " *\n" +
-                       " * @suppress {checkTypes|accessControls}\n" +
-                       " */\n" +
-                       "\n" +
-                       
"goog.provide('com.example.components.TestInterface');\n" +
-                       "\n" +
-                       "\n" +
-                       "\n" +
-                       "/**\n" +
-                       " * @interface\n" +
-                       " */\ncom.example.components.TestInterface = function() 
{\n" +
-                       "};\n" +
-                       "\n" +
+                               " * com.example.components.TestInterface\n" +
+                               " *\n" +
+                               " * @fileoverview\n" +
+                               " *\n" +
+                               " * @suppress {checkTypes|accessControls}\n" +
+                               " */\n" +
+                               "\n" +
+                               
"goog.provide('com.example.components.TestInterface');\n" +
+                               "\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * @interface\n" +
+                               " */\ncom.example.components.TestInterface = 
function() {\n" +
+                               "};\n" +
+                               "\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" +
-                       " */\n" +
-                       
"com.example.components.TestInterface.prototype.ROYALE_CLASS_INFO = { names: [{ 
name: 'TestInterface', qName: 'com.example.components.TestInterface', kind: 
'interface' }] };\n" +
-                               "\n" +
-                       "\n" +
-                       "\n" +
-                       "/**\n" +
-                       " * Reflection\n" +
-                       " *\n" +
-                       " * @return {Object.<string, Function>}\n" +
-                       " */\n" +
-                       
"com.example.components.TestInterface.prototype.ROYALE_REFLECTION_INFO = 
function () {\n" +
-                       "  return {\n" +
-                       "    accessors: function () {return {};},\n" +
-                       "    methods: function () {return {};}\n" +
-                       "  };\n" +
-                       "};\n");
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * Metadata\n" +
+                               " *\n" +
+                               " * @type {Object.<string, Array.<Object>>}\n" +
+                               " */\n" +
+                               
"com.example.components.TestInterface.prototype.ROYALE_CLASS_INFO = { names: [{ 
name: 'TestInterface', qName: 'com.example.components.TestInterface', kind: 
'interface' }] };\n" +
+                               "\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * Reflection\n" +
+                               " *\n" +
+                               " * @return {Object.<string, Function>}\n" +
+                               " */\n" +
+                               
"com.example.components.TestInterface.prototype.ROYALE_REFLECTION_INFO = 
function () {\n" +
+                               "  return {\n" +
+                               "    accessors: function () {return {};},\n" +
+                               "    methods: function () {return {};}\n" +
+                               "  };\n" +
+                               "};\n" +
+                               "/**\n" +
+                               " * @export\n" +
+                               " * @const\n" +
+                               " * @type {number}\n" +
+                               " */\n" +
+                               
"com.example.components.TestInterface.prototype.ROYALE_REFLECTION_INFO.compileFlags
 = 8;\n");
     }
 
     @Override
@@ -254,7 +266,13 @@ public class TestRoyaleEmitter extends TestGoogEmitter
                                "    accessors: function () {return {};},\n" +
                                "    methods: function () {return {};}\n" +
                                "  };\n" +
-                               "};\n");
+                               "};\n" +
+                               "/**\n" +
+                               " * @export\n" +
+                               " * @const\n" +
+                               " * @type {number}\n" +
+                               " */\n" +
+                               
"com.example.components.TestClass.prototype.ROYALE_REFLECTION_INFO.compileFlags 
= 8;\n");
     }
     
     @Test
@@ -283,9 +301,9 @@ public class TestRoyaleEmitter extends TestGoogEmitter
                                "\n" +
                                "\n" +
                                "/**\n" +
-                   " * <inject_html>\n" +
+                               " * <inject_html>\n" +
                                " * This will be injected.\n" +
-                       " * </inject_html>\n" +
+                               " * </inject_html>\n" +
                                " * @constructor\n" +
                                " */\n" +
                                "com.example.components.TestClass = function() 
{\n" +
@@ -322,7 +340,13 @@ public class TestRoyaleEmitter extends TestGoogEmitter
                                "      };\n" +
                                "    }\n" +
                                "  };\n" +
-                               "};\n");
+                               "};\n" +
+                               "/**\n" +
+                               " * @export\n" +
+                               " * @const\n" +
+                               " * @type {number}\n" +
+                               " */\n" +
+                               
"com.example.components.TestClass.prototype.ROYALE_REFLECTION_INFO.compileFlags 
= 8;\n");
     }
     
 
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 15a4d07..32815fb 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
@@ -61,7 +61,7 @@ public class TestRoyalePackage extends TestGoogPackage
         // with block disallows implicit blocks from getting { }
 
         // (erikdebruin) the constuctor IS the class definition, in 'goog' JS,
-        //               therefor we need to write out implicit constructors 
+        //               therefor we need to write out implicit constructors
         //               (if I understand the term correctly)
 
         IFileNode node = compileAS("package {public class A{}}");
@@ -105,7 +105,13 @@ public class TestRoyalePackage extends TestGoogPackage
                        "    accessors: function () {return {};},\n" +
                        "    methods: function () {return {};}\n" +
                        "  };\n" +
-                       "};\n");
+                       "};\n"+
+                               "/**\n" +
+                               " * @export\n" +
+                               " * @const\n" +
+                               " * @type {number}\n" +
+                               " */\n" +
+                               
"A.prototype.ROYALE_REFLECTION_INFO.compileFlags = 14;\n");
     }
 
     @Override
@@ -153,7 +159,13 @@ public class TestRoyalePackage extends TestGoogPackage
                                "    accessors: function () {return {};},\n" +
                                "    methods: function () {return {};}\n" +
                        "  };\n" +
-                       "};\n");
+                       "};\n"+
+                               "/**\n" +
+                               " * @export\n" +
+                               " * @const\n" +
+                               " * @type {number}\n" +
+                               " */\n" +
+                               
"foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO.compileFlags = 14;\n");
     }
 
     @Override
@@ -163,49 +175,63 @@ public class TestRoyalePackage extends TestGoogPackage
         IFileNode node = compileAS("package foo.bar.baz {public class A{public 
function A(){}}}");
         asBlockWalker.visitFile(node);
         assertOutWithMetadata("/**\n" +
-                       " * foo.bar.baz.A\n" +
-                       " *\n" +
-                       " * @fileoverview\n" +
-                       " *\n" +
-                       " * @suppress {checkTypes|accessControls}\n" +
-                       " */\n" +
-                       "\n" +
-                       "goog.provide('foo.bar.baz.A');\n" +
-                       "\n" +
-                       "\n" +
-                       "\n" +
-                       "/**\n" +
-                       " * @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" +
-                       " * Metadata\n" +
-                       " *\n" +
-                       " * @type {Object.<string, Array.<Object>>}\n" +
-                       " */\n" +
-                       "foo.bar.baz.A.prototype.ROYALE_CLASS_INFO = { names: 
[{ name: 'A', qName: 'foo.bar.baz.A', kind: 'class' }] };\n" +
-                       "\n" +
-                       "\n" +
-                       "\n" +
-                       "/**\n" +
-                       " * Reflection\n" +
-                       " *\n" +
-                       " * @return {Object.<string, Function>}\n" +
-                       " */\n" +
-                       "foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO = 
function () {\n" +
-                       "  return {\n" +
+                               " * foo.bar.baz.A\n" +
+                               " *\n" +
+                               " * @fileoverview\n" +
+                               " *\n" +
+                               " * @suppress {checkTypes|accessControls}\n" +
+                               " */\n" +
+                               "\n" +
+                               "goog.provide('foo.bar.baz.A');\n" +
+                               "\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * @constructor\n" +
+                               " */\n" +
+                               "foo.bar.baz.A = function() {\n" +
+                               "};\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" +
+                               "/**\n" +
+                               " * Metadata\n" +
+                               " *\n" +
+                               " * @type {Object.<string, Array.<Object>>}\n" +
+                               " */\n" +
+                               "foo.bar.baz.A.prototype.ROYALE_CLASS_INFO = { 
names: [{ name: 'A', qName: 'foo.bar.baz.A', kind: 'class' }] };\n" +
+                               "\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * Reflection\n" +
+                               " *\n" +
+                               " * @return {Object.<string, Function>}\n" +
+                               " */\n" +
+                               "foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO 
= function () {\n" +
+                               "  return {\n" +
                                "    variables: function () {return {};},\n" +
                                "    accessors: function () {return {};},\n" +
-                       "    methods: function () {\n" +
-                       "      return {\n" +
-                       "        'A': { type: '', declaredBy: 
'foo.bar.baz.A'}\n" +
-                       "      };\n" +
-                       "    }\n" + 
-                       "  };\n" +
-                       "};\n");
+                               "    methods: function () {\n" +
+                               "      return {\n" +
+                               "        'A': { type: '', declaredBy: 
'foo.bar.baz.A'}\n" +
+                               "      };\n" +
+                               "    }\n" +
+                               "  };\n" +
+                               "};\n" +
+                               "/**\n" +
+                               " * @export\n" +
+                               " * @const\n" +
+                               " * @type {number}\n" +
+                               " */\n" +
+                               
"foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO.compileFlags = 14;\n"
+               
+               );
     }
 
     @Override
@@ -215,54 +241,66 @@ public class TestRoyalePackage extends TestGoogPackage
         IFileNode node = compileAS("package foo.bar.baz {public class A{public 
function A(){if (a){for (var i:Object in obj){doit();}}}}}");
         asBlockWalker.visitFile(node);
         assertOutWithMetadata("/**\n" +
-                       " * foo.bar.baz.A\n" +
-                       " *\n" +
-                       " * @fileoverview\n" +
-                       " *\n" +
-                       " * @suppress {checkTypes|accessControls}\n" +
-                       " */\n" +
-                       "\n" +
-                       "goog.provide('foo.bar.baz.A');\n" +
-                       "\n" +
-                       "\n" +
-                       "\n" +
-                       "/**\n" +
-                       " * @constructor\n" +
-                       " */\n" +
-                       "foo.bar.baz.A = function() {\n" +
-                       "  if (a) {\n" +
-                       "    for (var /** @type {Object} */ i in obj) {\n" +
-                       "      doit();\n" +
-                       "    }\n" +
-                       "  }\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" +
-                       " * Metadata\n" +
-                       " *\n" +
-                       " * @type {Object.<string, Array.<Object>>}\n" +
-                       " */\n" +
-                       "foo.bar.baz.A.prototype.ROYALE_CLASS_INFO = { names: 
[{ name: 'A', qName: 'foo.bar.baz.A', kind: 'class' }] };\n" +
-                       "\n" +
-                       "\n" +
-                       "\n" +
-                       "/**\n" +
-                       " * Reflection\n" +
-                       " *\n" +
-                       " * @return {Object.<string, Function>}\n" +
-                       " */\n" +
-                       "foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO = 
function () {\n" +
-                       "  return {\n" +
+                               " * foo.bar.baz.A\n" +
+                               " *\n" +
+                               " * @fileoverview\n" +
+                               " *\n" +
+                               " * @suppress {checkTypes|accessControls}\n" +
+                               " */\n" +
+                               "\n" +
+                               "goog.provide('foo.bar.baz.A');\n" +
+                               "\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * @constructor\n" +
+                               " */\n" +
+                               "foo.bar.baz.A = function() {\n" +
+                               "  if (a) {\n" +
+                               "    for (var /** @type {Object} */ i in obj) 
{\n" +
+                               "      doit();\n" +
+                               "    }\n" +
+                               "  }\n" +
+                               "};\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" +
+                               "/**\n" +
+                               " * Metadata\n" +
+                               " *\n" +
+                               " * @type {Object.<string, Array.<Object>>}\n" +
+                               " */\n" +
+                               "foo.bar.baz.A.prototype.ROYALE_CLASS_INFO = { 
names: [{ name: 'A', qName: 'foo.bar.baz.A', kind: 'class' }] };\n" +
+                               "\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * Reflection\n" +
+                               " *\n" +
+                               " * @return {Object.<string, Function>}\n" +
+                               " */\n" +
+                               "foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO 
= function () {\n" +
+                               "  return {\n" +
                                "    variables: function () {return {};},\n" +
                                "    accessors: function () {return {};},\n" +
-                       "    methods: function () {\n" +
-                       "      return {\n" +
-                       "        'A': { type: '', declaredBy: 
'foo.bar.baz.A'}\n" +
-                       "      };\n" +
-                       "    }\n" + 
-                       "  };\n" +
-                       "};\n");
+                               "    methods: function () {\n" +
+                               "      return {\n" +
+                               "        'A': { type: '', declaredBy: 
'foo.bar.baz.A'}\n" +
+                               "      };\n" +
+                               "    }\n" +
+                               "  };\n" +
+                               "};\n" +
+                               "/**\n" +
+                               " * @export\n" +
+                               " * @const\n" +
+                               " * @type {number}\n" +
+                               " */\n" +
+                               
"foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO.compileFlags = 14;\n");
     }
 
     @Test
@@ -271,50 +309,62 @@ public class TestRoyalePackage extends TestGoogPackage
         IFileNode node = compileAS("package foo.bar.baz {[Event(name='add', 
type='mx.events.FlexEvent')]\npublic class A{public function A(){}}}");
         asBlockWalker.visitFile(node);
         assertOutWithMetadata("/**\n" +
-                       " * foo.bar.baz.A\n" +
-                       " *\n" +
-                       " * @fileoverview\n" +
-                       " *\n" +
-                       " * @suppress {checkTypes|accessControls}\n" +
-                       " */\n" +
-                       "\n" +
-                       "goog.provide('foo.bar.baz.A');\n" +
-                       "\n" +
-                       "\n" +
-                       "\n" +
-                       "/**\n" +
-                       " * @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" +
-                       " * Metadata\n" +
-                       " *\n" +
-                       " * @type {Object.<string, Array.<Object>>}\n" +
-                       " */\n" +
-                       "foo.bar.baz.A.prototype.ROYALE_CLASS_INFO = { names: 
[{ name: 'A', qName: 'foo.bar.baz.A', kind: 'class' }] };\n" +
-                       "\n" +
-                       "\n" +
-                       "\n" +
-                       "/**\n" +
-                       " * Reflection\n" +
-                       " *\n" +
-                       " * @return {Object.<string, Function>}\n" +
-                       " */\n" +
-                       "foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO = 
function () {\n" +
-                       "  return {\n" +
+                               " * foo.bar.baz.A\n" +
+                               " *\n" +
+                               " * @fileoverview\n" +
+                               " *\n" +
+                               " * @suppress {checkTypes|accessControls}\n" +
+                               " */\n" +
+                               "\n" +
+                               "goog.provide('foo.bar.baz.A');\n" +
+                               "\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * @constructor\n" +
+                               " */\n" +
+                               "foo.bar.baz.A = function() {\n" +
+                               "};\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" +
+                               "/**\n" +
+                               " * Metadata\n" +
+                               " *\n" +
+                               " * @type {Object.<string, Array.<Object>>}\n" +
+                               " */\n" +
+                               "foo.bar.baz.A.prototype.ROYALE_CLASS_INFO = { 
names: [{ name: 'A', qName: 'foo.bar.baz.A', kind: 'class' }] };\n" +
+                               "\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * Reflection\n" +
+                               " *\n" +
+                               " * @return {Object.<string, Function>}\n" +
+                               " */\n" +
+                               "foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO 
= function () {\n" +
+                               "  return {\n" +
                                "    variables: function () {return {};},\n" +
                                "    accessors: function () {return {};},\n" +
-                       "    methods: function () {\n" +
-                       "      return {\n" +
-                       "        'A': { type: '', declaredBy: 
'foo.bar.baz.A'}\n" +
-                       "      };\n" +
-                       "    },\n" +
-                       "    metadata: function () { return [ { name: 'Event', 
args: [ { key: 'name', value: 'add' }, { key: 'type', value: 
'mx.events.FlexEvent' } ] } ]; }\n" +
-                       "  };\n" +
-                       "};\n");
+                               "    methods: function () {\n" +
+                               "      return {\n" +
+                               "        'A': { type: '', declaredBy: 
'foo.bar.baz.A'}\n" +
+                               "      };\n" +
+                               "    },\n" +
+                               "    metadata: function () { return [ { name: 
'Event', args: [ { key: 'name', value: 'add' }, { key: 'type', value: 
'mx.events.FlexEvent' } ] } ]; }\n" +
+                               "  };\n" +
+                               "};\n" +
+                               "/**\n" +
+                               " * @export\n" +
+                               " * @const\n" +
+                               " * @type {number}\n" +
+                               " */\n" +
+                               
"foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO.compileFlags = 14;\n");
     }
 
     @Test
@@ -323,58 +373,71 @@ public class TestRoyalePackage extends TestGoogPackage
         IFileNode node = compileAS("package foo.bar.baz {[Event(name='add', 
type='mx.events.FlexEvent')]\npublic class A{public function 
A(){}\n[Before]\npublic function foo() {}}}");
         asBlockWalker.visitFile(node);
         assertOutWithMetadata("/**\n" +
-                       " * foo.bar.baz.A\n" +
-                       " *\n" +
-                       " * @fileoverview\n" +
-                       " *\n" +
-                       " * @suppress {checkTypes|accessControls}\n" +
-                       " */\n" +
-                       "\n" +
-                       "goog.provide('foo.bar.baz.A');\n" +
-                       "\n" +
-                       "\n" +
-                       "\n" +
-                       "/**\n" +
-                       " * @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" +
-                       " * @export\n" +
-                       " */\n" +
-                       "foo.bar.baz.A.prototype.foo = function() {\n};\n" +
-                       "\n" +
-                       "\n" +
-                       "/**\n" +
-                       " * Metadata\n" +
-                       " *\n" +
-                       " * @type {Object.<string, Array.<Object>>}\n" +
-                       " */\n" +
-                       "foo.bar.baz.A.prototype.ROYALE_CLASS_INFO = { names: 
[{ name: 'A', qName: 'foo.bar.baz.A', kind: 'class' }] };\n" +
-                       "\n" +
-                       "\n" +
-                       "\n" +
-                       "/**\n" +
-                       " * Reflection\n" +
-                       " *\n" +
-                       " * @return {Object.<string, Function>}\n" +
-                       " */\n" +
-                       "foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO = 
function () {\n" +
-                       "  return {\n" +
+                               " * foo.bar.baz.A\n" +
+                               " *\n" +
+                               " * @fileoverview\n" +
+                               " *\n" +
+                               " * @suppress {checkTypes|accessControls}\n" +
+                               " */\n" +
+                               "\n" +
+                               "goog.provide('foo.bar.baz.A');\n" +
+                               "\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * @constructor\n" +
+                               " */\n" +
+                               "foo.bar.baz.A = function() {\n" +
+                               "};\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" +
+                               "/**\n" +
+                               " * @export\n" +
+                               " */\n" +
+                               "foo.bar.baz.A.prototype.foo = function() {\n" +
+                               "};\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * Metadata\n" +
+                               " *\n" +
+                               " * @type {Object.<string, Array.<Object>>}\n" +
+                               " */\n" +
+                               "foo.bar.baz.A.prototype.ROYALE_CLASS_INFO = { 
names: [{ name: 'A', qName: 'foo.bar.baz.A', kind: 'class' }] };\n" +
+                               "\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * Reflection\n" +
+                               " *\n" +
+                               " * @return {Object.<string, Function>}\n" +
+                               " */\n" +
+                               "foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO 
= function () {\n" +
+                               "  return {\n" +
                                "    variables: function () {return {};},\n" +
                                "    accessors: function () {return {};},\n" +
-                       "    methods: function () {\n" +
-                       "      return {\n" +
-                       "        'A': { type: '', declaredBy: 
'foo.bar.baz.A'},\n" +
-                       "        'foo': { type: '', declaredBy: 
'foo.bar.baz.A', metadata: function () { return [ { name: 'Before' } ]; }}\n" +
-                       "      };\n" +
-                       "    },\n" +
-                       "    metadata: function () { return [ { name: 'Event', 
args: [ { key: 'name', value: 'add' }, { key: 'type', value: 
'mx.events.FlexEvent' } ] } ]; }\n" +
-                       "  };\n" +
-                       "};\n" +
-                       "goog.exportProperty(foo.bar.baz.A.prototype, 'foo', 
foo.bar.baz.A.prototype.foo);\n");
+                               "    methods: function () {\n" +
+                               "      return {\n" +
+                               "        'A': { type: '', declaredBy: 
'foo.bar.baz.A'},\n" +
+                               "        'foo': { type: '', declaredBy: 
'foo.bar.baz.A', metadata: function () { return [ { name: 'Before' } ]; }}\n" +
+                               "      };\n" +
+                               "    },\n" +
+                               "    metadata: function () { return [ { name: 
'Event', args: [ { key: 'name', value: 'add' }, { key: 'type', value: 
'mx.events.FlexEvent' } ] } ]; }\n" +
+                               "  };\n" +
+                               "};\n" +
+                               "/**\n" +
+                               " * @export\n" +
+                               " * @const\n" +
+                               " * @type {number}\n" +
+                               " */\n" +
+                               
"foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO.compileFlags = 14;\n" +
+                               "goog.exportProperty(foo.bar.baz.A.prototype, 
'foo', foo.bar.baz.A.prototype.foo);\n" );
     }
 
     @Test
@@ -390,86 +453,86 @@ public class TestRoyalePackage extends TestGoogPackage
                                                                  "}");
         asBlockWalker.visitFile(node);
         assertOutWithMetadata("/**\n" +
-                         " * foo.bar.baz.A\n" +
-                         " *\n" +
-                         " * @fileoverview\n" +
-                         " *\n" +
-                         " * @suppress {checkTypes|accessControls}\n" +
-                         " */\n" +
-                         "\n" +
-                         "goog.provide('foo.bar.baz.A');\n" +
-                         "goog.provide('foo.bar.baz.A.InternalClass');\n" +
-                         "\n" +
-                         "\n" +
-                         "\n" +
-                         "/**\n" +
-                         " * @constructor\n" +
-                         " */\n" +
-                         "foo.bar.baz.A = function() {\n" +
-                         "  var /** @type {foo.bar.baz.A.InternalClass} */ 
internalClass = new foo.bar.baz.A.InternalClass();\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" +
-                         " * Metadata\n" +
-                         " *\n" +
-                         " * @type {Object.<string, Array.<Object>>}\n" +
-                         " */\n" +
-                         "foo.bar.baz.A.prototype.ROYALE_CLASS_INFO = { names: 
[{ name: 'A', qName: 'foo.bar.baz.A', kind: 'class' }] };\n" +
-                       "\n" +
-                       "\n" +
-                       "\n" +
-                       "/**\n" +
-                       " * Reflection\n" +
-                       " *\n" +
-                       " * @return {Object.<string, Function>}\n" +
-                       " */\n" +
-                       "foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO = 
function () {\n" +
-                       "  return {\n" +
-                               "    variables: function () {return {};},\n" +
-                               "    accessors: function () {return {};},\n" +
-                       "    methods: function () {\n" +
-                       "      return {\n" +
-                       "        'A': { type: '', declaredBy: 
'foo.bar.baz.A'}\n" +
-                       "      };\n" +
-                       "    }\n" +
-                       "  };\n" +
-                       "};\n" +
-                         "\n" +
-                         "\n" +
-                         "\n" +
-                         "/**\n" +
-                         " * @constructor\n" +
-                         " */\n" +
-                         "foo.bar.baz.A.InternalClass = function() {\n" +
-                         "};\n\n\n/**\n * Prevent renaming of class. Needed 
for reflection.\n */\ngoog.exportSymbol('foo.bar.baz.A.InternalClass', 
foo.bar.baz.A.InternalClass);\n" +
-                         "\n" +
-                         "\n" +
-                         "/**\n" +
-                         " * Metadata\n" +
-                         " *\n" +
-                         " * @type {Object.<string, Array.<Object>>}\n" +
-                         " */\n" +
-                         
"foo.bar.baz.A.InternalClass.prototype.ROYALE_CLASS_INFO = { names: [{ name: 
'InternalClass', qName: 'foo.bar.baz.A.InternalClass', kind: 'class' }] };\n" +
-                       "\n" +
-                       "\n" +
-                       "\n" +
-                       "/**\n" +
-                       " * Reflection\n" +
-                       " *\n" +
-                       " * @return {Object.<string, Function>}\n" +
-                       " */\n" +
-                       
"foo.bar.baz.A.InternalClass.prototype.ROYALE_REFLECTION_INFO = function () 
{\n" +
-                       "  return {\n" +
+                               " * foo.bar.baz.A\n" +
+                               " *\n" +
+                               " * @fileoverview\n" +
+                               " *\n" +
+                               " * @suppress {checkTypes|accessControls}\n" +
+                               " */\n" +
+                               "\n" +
+                               "goog.provide('foo.bar.baz.A');\n" +
+                               
"goog.provide('foo.bar.baz.A.InternalClass');\n" +
+                               "\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * @constructor\n" +
+                               " */\n" +
+                               "foo.bar.baz.A = function() {\n" +
+                               "  var /** @type {foo.bar.baz.A.InternalClass} 
*/ internalClass = new foo.bar.baz.A.InternalClass();\n" +
+                               "};\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" +
+                               "/**\n" +
+                               " * Metadata\n" +
+                               " *\n" +
+                               " * @type {Object.<string, Array.<Object>>}\n" +
+                               " */\n" +
+                               "foo.bar.baz.A.prototype.ROYALE_CLASS_INFO = { 
names: [{ name: 'A', qName: 'foo.bar.baz.A', kind: 'class' }] };\n" +
+                               "\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * Reflection\n" +
+                               " *\n" +
+                               " * @return {Object.<string, Function>}\n" +
+                               " */\n" +
+                               "foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO 
= function () {\n" +
+                               "  return {\n" +
                                "    variables: function () {return {};},\n" +
                                "    accessors: function () {return {};},\n" +
-                       "    methods: function () {\n" +
-                       "      return {\n" +
-                       "        'InternalClass': { type: '', declaredBy: 
'foo.bar.baz.A.InternalClass'}\n" +
-                       "      };\n" +
-                       "    }\n" +
-                       "  };\n" +
-                       "};\n");
+                               "    methods: function () {\n" +
+                               "      return {\n" +
+                               "        'A': { type: '', declaredBy: 
'foo.bar.baz.A'}\n" +
+                               "      };\n" +
+                               "    }\n" +
+                               "  };\n" +
+                               "};\n" +
+                               "/**\n" +
+                               " * @export\n" +
+                               " * @const\n" +
+                               " * @type {number}\n" +
+                               " */\n" +
+                               
"foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO.compileFlags = 14;\n" +
+                               "\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * @constructor\n" +
+                               " */\n" +
+                               "foo.bar.baz.A.InternalClass = function() {\n" +
+                               "};\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" +
+                               "/**\n" +
+                               " * Metadata\n" +
+                               " *\n" +
+                               " * @type {Object.<string, Array.<Object>>}\n" +
+                               " */\n" +
+                               
"foo.bar.baz.A.InternalClass.prototype.ROYALE_CLASS_INFO = { names: [{ name: 
'InternalClass', qName: 'foo.bar.baz.A.InternalClass', kind: 'class' }] };"
+               );
     }
 
        @Test
@@ -500,34 +563,46 @@ public class TestRoyalePackage extends TestGoogPackage
                                " */\n" +
                                "foo.bar.baz.A = function() {\n" +
                                "  foo.bar.baz.A.internalFunction();\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/" +
-                               "**\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" +
                                " */\n" +
                                "foo.bar.baz.A.prototype.ROYALE_CLASS_INFO = { 
names: [{ name: 'A', qName: 'foo.bar.baz.A', kind: 'class' }] };\n" +
-                       "\n" +
-                       "\n" +
-                       "\n" +
-                       "/**\n" +
-                       " * Reflection\n" +
-                       " *\n" +
-                       " * @return {Object.<string, Function>}\n" +
-                       " */\n" +
-                       "foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO = 
function () {\n" +
-                       "  return {\n" +
+                               "\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * Reflection\n" +
+                               " *\n" +
+                               " * @return {Object.<string, Function>}\n" +
+                               " */\n" +
+                               "foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO 
= function () {\n" +
+                               "  return {\n" +
                                "    variables: function () {return {};},\n" +
                                "    accessors: function () {return {};},\n" +
-                       "    methods: function () {\n" +
-                       "      return {\n" +
-                       "        'A': { type: '', declaredBy: 
'foo.bar.baz.A'}\n" +
-                       "      };\n" +
-                       "    }\n" +
-                       "  };\n" +
-                       "};\n" +
+                               "    methods: function () {\n" +
+                               "      return {\n" +
+                               "        'A': { type: '', declaredBy: 
'foo.bar.baz.A'}\n" +
+                               "      };\n" +
+                               "    }\n" +
+                               "  };\n" +
+                               "};\n" +
+                               "/**\n" +
+                               " * @export\n" +
+                               " * @const\n" +
+                               " * @type {number}\n" +
+                               " */\n" +
+                               
"foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO.compileFlags = 14;\n" +
                                "\n" +
                                "\n" +
                                "\n" +
@@ -563,178 +638,185 @@ public class TestRoyalePackage extends TestGoogPackage
                                " */\n" +
                                "foo.bar.baz.A = function() {\n" +
                                "  foo.bar.baz.A.internalVar = 3;\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" +
+                               " * 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" +
+                               " */\n" +
+                               "foo.bar.baz.A.prototype.ROYALE_CLASS_INFO = { 
names: [{ name: 'A', qName: 'foo.bar.baz.A', kind: 'class' }] };\n" +
+                               "\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * Reflection\n" +
+                               " *\n" +
+                               " * @return {Object.<string, Function>}\n" +
+                               " */\n" +
+                               "foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO 
= function () {\n" +
+                               "  return {\n" +
+                               "    variables: function () {return {};},\n" +
+                               "    accessors: function () {return {};},\n" +
+                               "    methods: function () {\n" +
+                               "      return {\n" +
+                               "        'A': { type: '', declaredBy: 
'foo.bar.baz.A'}\n" +
+                               "      };\n" +
+                               "    }\n" +
+                               "  };\n" +
+                               "};\n" +
+                               "/**\n" +
+                               " * @export\n" +
+                               " * @const\n" +
+                               " * @type {number}\n" +
+                               " */\n" +
+                               
"foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO.compileFlags = 14;\n" +
+                               "\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * @export\n" +
+                               " * @type {number}\n" +
+                               " */\n" +
+                               "foo.bar.baz.A.internalVar = 2"
+               );
+       }
+
+    @Test
+    public void testPackageQualified_ClassAndInternalClassMethods()
+    {
+        IFileNode node = compileAS("package foo.bar.baz {\n" +
+                                                                 "public class 
A {\n" +
+                                                                 "public 
function A(){\n" +
+                                                                     "var 
internalClass:InternalClass = new InternalClass();\n" +
+                                                                     "var 
myString:String = InternalClass.someString;\n" +
+                                                                     "myString 
= InternalClass.someStaticFunction();\n" +
+                                                                     "myString 
= internalClass.someMethod();\n" +
+                                                                 "}}}\n" +
+                                                                 "class 
InternalClass {\n" +
+                                                                     "public 
function InternalClass(){\n" +
+                                                                     "}\n" +
+                                                                         
"public static var someString:String = \"foo\";\n" +
+                                                                 "public 
static function someStaticFunction():String { return \"bar\";}\n" +
+                                                                 "public 
function someMethod():String { return \"baz\";}\n" +
+                                                                 "}");
+        asBlockWalker.visitFile(node);
+        assertOutWithMetadata("/**\n" +
+                               " * foo.bar.baz.A\n" +
+                               " *\n" +
+                               " * @fileoverview\n" +
+                               " *\n" +
+                               " * @suppress {checkTypes|accessControls}\n" +
+                               " */\n" +
+                               "\n" +
+                               "goog.provide('foo.bar.baz.A');\n" +
+                               
"goog.provide('foo.bar.baz.A.InternalClass');\n" +
+                               "\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * @constructor\n" +
+                               " */\n" +
+                               "foo.bar.baz.A = function() {\n" +
+                               "  var /** @type {foo.bar.baz.A.InternalClass} 
*/ internalClass = new foo.bar.baz.A.InternalClass();\n" +
+                               "  var /** @type {string} */ myString = 
foo.bar.baz.A.InternalClass.someString;\n" +
+                               "  myString = 
foo.bar.baz.A.InternalClass.someStaticFunction();\n" +
+                               "  myString = internalClass.someMethod();\n" +
+                               "};\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" +
-                               "\n/" +
-                               "**\n" +
+                               "/**\n" +
                                " * Metadata\n" +
                                " *\n" +
                                " * @type {Object.<string, Array.<Object>>}\n" +
                                " */\n" +
-                               "foo.bar.baz.A.prototype.ROYALE_CLASS_INFO = { 
names: [{ name: 'A', qName: 'foo.bar.baz.A', kind: 'class' }] };\n" +
-                       "\n" +
-                       "\n" +
-                       "\n" +
-                       "/**\n" +
-                       " * Reflection\n" +
-                       " *\n" +
-                       " * @return {Object.<string, Function>}\n" +
-                       " */\n" +
-                       "foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO = 
function () {\n" +
-                       "  return {\n" +
-                               "    variables: function () {return {};},\n" +
-                               "    accessors: function () {return {};},\n" +
-                       "    methods: function () {\n" +
-                       "      return {\n" +
-                       "        'A': { type: '', declaredBy: 
'foo.bar.baz.A'}\n" +
-                       "      };\n" +
-                       "    }\n" +
-                       "  };\n" +
-                       "};\n" +
+                               "foo.bar.baz.A.prototype.ROYALE_CLASS_INFO = { 
names: [{ name: 'A', qName: 'foo.bar.baz.A', kind: 'class' }] };\n" +
+                               "\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * Reflection\n" +
+                               " *\n" +
+                               " * @return {Object.<string, Function>}\n" +
+                               " */\n" +
+                               "foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO 
= function () {\n" +
+                               "  return {\n" +
+                               "    variables: function () {return {};},\n" +
+                               "    accessors: function () {return {};},\n" +
+                               "    methods: function () {\n" +
+                               "      return {\n" +
+                               "        'A': { type: '', declaredBy: 
'foo.bar.baz.A'}\n" +
+                               "      };\n" +
+                               "    }\n" +
+                               "  };\n" +
+                               "};\n" +
+                               "/**\n" +
+                               " * @export\n" +
+                               " * @const\n" +
+                               " * @type {number}\n" +
+                               " */\n" +
+                               
"foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO.compileFlags = 14;\n" +
+                               "\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * @constructor\n" +
+                               " */\n" +
+                               "foo.bar.baz.A.InternalClass = function() {\n" +
+                               "};\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" +
+                               "/**\n" +
+                               " * @export\n" +
+                               " * @type {string}\n" +
+                               " */\n" +
+                               "foo.bar.baz.A.InternalClass.someString = 
\"foo\";\n" +
+                               "\n" +
                                "\n" +
+                               "/**\n" +
+                               " * @export\n" +
+                               " * @return {string}\n" +
+                               " */\n" +
+                               "foo.bar.baz.A.InternalClass.someStaticFunction 
= function() {\n" +
+                               "  return \"bar\";\n" +
+                               "};\n" +
                                "\n" +
                                "\n" +
                                "/**\n" +
                                " * @export\n" +
-                               " * @type {number}\n" +
+                               " * @return {string}\n" +
                                " */\n" +
-                               "foo.bar.baz.A.internalVar = 2");
-       }
-
-    @Test
-    public void testPackageQualified_ClassAndInternalClassMethods()
-    {
-        IFileNode node = compileAS("package foo.bar.baz {\n" +
-                                                                 "public class 
A {\n" +
-                                                                 "public 
function A(){\n" +
-                                                                     "var 
internalClass:InternalClass = new InternalClass();\n" +
-                                                                     "var 
myString:String = InternalClass.someString;\n" +
-                                                                     "myString 
= InternalClass.someStaticFunction();\n" +
-                                                                     "myString 
= internalClass.someMethod();\n" +
-                                                                 "}}}\n" +
-                                                                 "class 
InternalClass {\n" +
-                                                                     "public 
function InternalClass(){\n" +
-                                                                     "}\n" +
-                                                                         
"public static var someString:String = \"foo\";\n" +
-                                                                 "public 
static function someStaticFunction():String { return \"bar\";}\n" +
-                                                                 "public 
function someMethod():String { return \"baz\";}\n" +
-                                                                 "}");
-        asBlockWalker.visitFile(node);
-        assertOutWithMetadata("/**\n" +
-                         " * foo.bar.baz.A\n" +
-                         " *\n" +
-                         " * @fileoverview\n" +
-                         " *\n" +
-                         " * @suppress {checkTypes|accessControls}\n" +
-                         " */\n" +
-                         "\n" +
-                         "goog.provide('foo.bar.baz.A');\n" +
-                         "goog.provide('foo.bar.baz.A.InternalClass');\n" +
-                         "\n" +
-                         "\n" +
-                         "\n" +
-                         "/**\n" +
-                         " * @constructor\n" +
-                         " */\n" +
-                         "foo.bar.baz.A = function() {\n" +
-                         "  var /** @type {foo.bar.baz.A.InternalClass} */ 
internalClass = new foo.bar.baz.A.InternalClass();\n" +
-                         "  var /** @type {string} */ myString = 
foo.bar.baz.A.InternalClass.someString;\n" +
-                         "  myString = 
foo.bar.baz.A.InternalClass.someStaticFunction();\n" +
-                         "  myString = internalClass.someMethod();\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" +
-                         " * Metadata\n" +
-                         " *\n" +
-                         " * @type {Object.<string, Array.<Object>>}\n" +
-                         " */\n" +
-                         "foo.bar.baz.A.prototype.ROYALE_CLASS_INFO = { names: 
[{ name: 'A', qName: 'foo.bar.baz.A', kind: 'class' }] };\n" +
-                       "\n" +
-                       "\n" +
-                       "\n" +
-                       "/**\n" +
-                       " * Reflection\n" +
-                       " *\n" +
-                       " * @return {Object.<string, Function>}\n" +
-                       " */\n" +
-                       "foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO = 
function () {\n" +
-                       "  return {\n" +
-                                       "    variables: function () {return 
{};},\n" +
-                                       "    accessors: function () {return 
{};},\n" +
-                       "    methods: function () {\n" +
-                       "      return {\n" +
-                       "        'A': { type: '', declaredBy: 
'foo.bar.baz.A'}\n" +
-                       "      };\n" +
-                       "    }\n" +
-                       "  };\n" +
-                       "};\n" +
-                         "\n" +
-                         "\n" +
-                         "\n" +
-                         "/**\n" +
-                         " * @constructor\n" +
-                         " */\n" +
-                         "foo.bar.baz.A.InternalClass = function() {\n" +
-                         "};\n\n\n/**\n * Prevent renaming of class. Needed 
for reflection.\n */\ngoog.exportSymbol('foo.bar.baz.A.InternalClass', 
foo.bar.baz.A.InternalClass);\n" +
-                         "\n" +
-                         "\n" +
-                         "/**\n" +
-                         " * @export\n" +
-                         " * @type {string}\n" +
-                         " */\n" +
-                         "foo.bar.baz.A.InternalClass.someString = \"foo\";\n" 
+
-                         "\n" +
-                         "\n" +
-                         "/**\n" +
-                         " * @export\n" +
-                         " * @return {string}\n" +
-                         " */\n" +
-                         "foo.bar.baz.A.InternalClass.someStaticFunction = 
function() {\n" +
-                         "  return \"bar\";\n" +
-                         "};\n" +
-                         "\n" +
-                         "\n" +
-                         "/**\n" +
-                         " * @export\n" +
-                         " * @return {string}\n" +
-                         " */\n" +
-                         "foo.bar.baz.A.InternalClass.prototype.someMethod = 
function() {\n" +
-                         "  return \"baz\";\n" +
-                         "};\n" +
-                         "\n" +
-                         "\n" +
-                         "/**\n" +
-                         " * Metadata\n" +
-                         " *\n" +
-                         " * @type {Object.<string, Array.<Object>>}\n" +
-                         " */\n" +
-                         
"foo.bar.baz.A.InternalClass.prototype.ROYALE_CLASS_INFO = { names: [{ name: 
'InternalClass', qName: 'foo.bar.baz.A.InternalClass', kind: 'class' }] };\n" +
-                       "\n" +
-                       "\n" +
-                       "\n" +
-                       "/**\n" +
-                       " * Reflection\n" +
-                       " *\n" +
-                       " * @return {Object.<string, Function>}\n" +
-                       " */\n" +
-                       
"foo.bar.baz.A.InternalClass.prototype.ROYALE_REFLECTION_INFO = function () 
{\n" +
-                       "  return {\n" +
-                               "    variables: function () {\n" +
-                               "      return {\n" +
-                               "        '|someString': { type: 'String'}\n" +
-                               "      };\n" +
-                               "    },\n" +
-                               "    accessors: function () {return {};},\n" +
-                       "    methods: function () {\n" +
-                       "      return {\n" +
-                       "        'InternalClass': { type: '', declaredBy: 
'foo.bar.baz.A.InternalClass'},\n" +
-                               "        '|someStaticFunction': { type: 
'String', declaredBy: 'foo.bar.baz.A.InternalClass'},\n" +
-                       "        'someMethod': { type: 'String', declaredBy: 
'foo.bar.baz.A.InternalClass'}\n" +
-                       "      };\n" +
-                       "    }\n" +
-                       "  };\n" +
-                       "};\n");
+                               
"foo.bar.baz.A.InternalClass.prototype.someMethod = function() {\n" +
+                               "  return \"baz\";\n" +
+                               "};\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * Metadata\n" +
+                               " *\n" +
+                               " * @type {Object.<string, Array.<Object>>}\n" +
+                               " */\n" +
+                               
"foo.bar.baz.A.InternalClass.prototype.ROYALE_CLASS_INFO = { names: [{ name: 
'InternalClass', qName: 'foo.bar.baz.A.InternalClass', kind: 'class' }] };"
+               );
     }
 
     @Test
@@ -762,130 +844,130 @@ public class TestRoyalePackage extends TestGoogPackage
                                                                  "}");
         asBlockWalker.visitFile(node);
         assertOutWithMetadata("/**\n" +
-                         " * foo.bar.baz.A\n" +
-                         " *\n" +
-                         " * @fileoverview\n" +
-                         " *\n" +
-                         " * @suppress {checkTypes|accessControls}\n" +
-                         " */\n" +
-                         "\n" +
-                         "goog.provide('foo.bar.baz.A');\n" +
-                         "goog.provide('foo.bar.baz.A.InternalClass');\n" +
-                         "\n" +
-                         "\n" +
-                         "\n" +
-                         "/**\n" +
-                         " * @constructor\n" +
-                         " */\n" +
-                         "foo.bar.baz.A = function() {\n" +
-                         "  var /** @type {foo.bar.baz.A.InternalClass} */ 
internalClass = new foo.bar.baz.A.InternalClass();\n" +
-                         "  this.myString = internalClass.someString;\n" +
-                         "  internalClass.someString = this.myString;\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" +
-                  "foo.bar.baz.A.prototype.get__myString = function() {\n" +
-                  "  return null;\n" +
-                  "};\n" +
-                         "\n" +
-                         "\n" +
-                  "foo.bar.baz.A.prototype.set__myString = function(value) 
{\n" +
-                  "};\n" +
-                         "\n" +
-                         "\n" +
-                         "Object.defineProperties(foo.bar.baz.A.prototype, /** 
@lends {foo.bar.baz.A.prototype} */ {\n" +
-                  "/**\n  * @export\n  * @type {string} */\n" +
-                  "myString: {\n" +
-                  "get: foo.bar.baz.A.prototype.get__myString,\n" +
-                  "set: foo.bar.baz.A.prototype.set__myString}}\n" +
-                  ");\n" +
-                         "\n" +
-                         "\n" +
-                         "/**\n" +
-                         " * Metadata\n" +
-                         " *\n" +
-                         " * @type {Object.<string, Array.<Object>>}\n" +
-                         " */\n" +
-                         "foo.bar.baz.A.prototype.ROYALE_CLASS_INFO = { names: 
[{ name: 'A', qName: 'foo.bar.baz.A', kind: 'class' }] };\n" +
-                       "\n" +
-                       "\n" +
-                       "\n" +
-                       "/**\n" +
-                       " * Reflection\n" +
-                       " *\n" +
-                       " * @return {Object.<string, Function>}\n" +
-                       " */\n" +
-                       "foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO = 
function () {\n" +
-                       "  return {\n" +
-                                       "    variables: function () {return 
{};},\n" +
-                       "    accessors: function () {\n" +
-                       "      return {\n" +
-                       "        'myString': { type: 'String', access: 
'readwrite', declaredBy: 'foo.bar.baz.A'}\n" +
-                       "      };\n" +
-                       "    },\n" +
-                       "    methods: function () {\n" +
-                       "      return {\n" +
-                       "        'A': { type: '', declaredBy: 
'foo.bar.baz.A'}\n" +
-                       "      };\n" +
-                       "    }\n" +
-                       "  };\n" +
-                       "};\n" +
-                         "\n" +
-                         "\n" +
-                         "\n" +
-                         "/**\n" +
-                         " * @constructor\n" +
-                         " */\n" +
-                         "foo.bar.baz.A.InternalClass = function() {\n" +
-                         "};\n\n\n/**\n * Prevent renaming of class. Needed 
for reflection.\n */\ngoog.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" +
-                         "\n" +
-                         "\n" +
-                  "foo.bar.baz.A.InternalClass.prototype.set__someString = 
function(value) {\n" +
-                  "};\n" +
-                         "\n" +
-                         "\n" +
-                         
"Object.defineProperties(foo.bar.baz.A.InternalClass.prototype, /** @lends 
{foo.bar.baz.A.InternalClass.prototype} */ {\n" +
-                  "/**\n  * @export\n  * @type {string} */\n" +
-                  "someString: {\n" +
-                  "get: 
foo.bar.baz.A.InternalClass.prototype.get__someString,\n" +
-                  "set: 
foo.bar.baz.A.InternalClass.prototype.set__someString}}\n" +
-                  ");\n" +
-                         "\n" +
-                         "\n" +
-                         "/**\n" +
-                         " * Metadata\n" +
-                         " *\n" +
-                         " * @type {Object.<string, Array.<Object>>}\n" +
-                         " */\n" +
-                         
"foo.bar.baz.A.InternalClass.prototype.ROYALE_CLASS_INFO = { names: [{ name: 
'InternalClass', qName: 'foo.bar.baz.A.InternalClass', kind: 'class' }] };\n" +
-                       "\n" +
-                       "\n" +
-                       "\n" +
-                       "/**\n" +
-                       " * Reflection\n" +
-                       " *\n" +
-                       " * @return {Object.<string, Function>}\n" +
-                       " */\n" +
-                       
"foo.bar.baz.A.InternalClass.prototype.ROYALE_REFLECTION_INFO = function () 
{\n" +
-                       "  return {\n" +
+                               " * foo.bar.baz.A\n" +
+                               " *\n" +
+                               " * @fileoverview\n" +
+                               " *\n" +
+                               " * @suppress {checkTypes|accessControls}\n" +
+                               " */\n" +
+                               "\n" +
+                               "goog.provide('foo.bar.baz.A');\n" +
+                               
"goog.provide('foo.bar.baz.A.InternalClass');\n" +
+                               "\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * @constructor\n" +
+                               " */\n" +
+                               "foo.bar.baz.A = function() {\n" +
+                               "  var /** @type {foo.bar.baz.A.InternalClass} 
*/ internalClass = new foo.bar.baz.A.InternalClass();\n" +
+                               "  this.myString = internalClass.someString;\n" 
+
+                               "  internalClass.someString = this.myString;\n" 
+
+                               "};\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" +
+                               "\n" +
+                               "\n" +
+                               "foo.bar.baz.A.prototype.set__myString = 
function(value) {\n" +
+                               "};\n" +
+                               "\n" +
+                               "\n" +
+                               
"Object.defineProperties(foo.bar.baz.A.prototype, /** @lends 
{foo.bar.baz.A.prototype} */ {\n" +
+                               "/**\n" +
+                               "  * @export\n" +
+                               "  * @type {string} */\n" +
+                               "myString: {\n" +
+                               "get: foo.bar.baz.A.prototype.get__myString,\n" 
+
+                               "set: 
foo.bar.baz.A.prototype.set__myString}}\n" +
+                               ");\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * Metadata\n" +
+                               " *\n" +
+                               " * @type {Object.<string, Array.<Object>>}\n" +
+                               " */\n" +
+                               "foo.bar.baz.A.prototype.ROYALE_CLASS_INFO = { 
names: [{ name: 'A', qName: 'foo.bar.baz.A', kind: 'class' }] };\n" +
+                               "\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * Reflection\n" +
+                               " *\n" +
+                               " * @return {Object.<string, Function>}\n" +
+                               " */\n" +
+                               "foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO 
= function () {\n" +
+                               "  return {\n" +
                                "    variables: function () {return {};},\n" +
-                       "    accessors: function () {\n" +
-                       "      return {\n" +
-                       "        'someString': { type: 'String', access: 
'readwrite', declaredBy: 'foo.bar.baz.A.InternalClass'}\n" +
-                       "      };\n" +
-                       "    },\n" +
-                       "    methods: function () {\n" +
-                       "      return {\n" +
-                       "        'InternalClass': { type: '', declaredBy: 
'foo.bar.baz.A.InternalClass'}\n" +
-                       "      };\n" +
-                       "    }\n" +
-                       "  };\n" +
-                       "};\n");
+                               "    accessors: function () {\n" +
+                               "      return {\n" +
+                               "        'myString': { type: 'String', access: 
'readwrite', declaredBy: 'foo.bar.baz.A'}\n" +
+                               "      };\n" +
+                               "    },\n" +
+                               "    methods: function () {\n" +
+                               "      return {\n" +
+                               "        'A': { type: '', declaredBy: 
'foo.bar.baz.A'}\n" +
+                               "      };\n" +
+                               "    }\n" +
+                               "  };\n" +
+                               "};\n" +
+                               "/**\n" +
+                               " * @export\n" +
+                               " * @const\n" +
+                               " * @type {number}\n" +
+                               " */\n" +
+                               
"foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO.compileFlags = 14;\n" +
+                               "\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * @constructor\n" +
+                               " */\n" +
+                               "foo.bar.baz.A.InternalClass = function() {\n" +
+                               "};\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" +
+                               "\n" +
+                               "\n" +
+                               
"foo.bar.baz.A.InternalClass.prototype.set__someString = function(value) {\n" +
+                               "};\n" +
+                               "\n" +
+                               "\n" +
+                               
"Object.defineProperties(foo.bar.baz.A.InternalClass.prototype, /** @lends 
{foo.bar.baz.A.InternalClass.prototype} */ {\n" +
+                               "/**\n" +
+                               "  * @export\n" +
+                               "  * @type {string} */\n" +
+                               "someString: {\n" +
+                               "get: 
foo.bar.baz.A.InternalClass.prototype.get__someString,\n" +
+                               "set: 
foo.bar.baz.A.InternalClass.prototype.set__someString}}\n" +
+                               ");\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * Metadata\n" +
+                               " *\n" +
+                               " * @type {Object.<string, Array.<Object>>}\n" +
+                               " */\n" +
+                               
"foo.bar.baz.A.InternalClass.prototype.ROYALE_CLASS_INFO = { names: [{ name: 
'InternalClass', qName: 'foo.bar.baz.A.InternalClass', kind: 'class' }] };"
+               );
     }
 
     @Test
@@ -908,134 +990,144 @@ public class TestRoyalePackage extends TestGoogPackage
                                                                  "}");
         asBlockWalker.visitFile(node);
         assertOutWithMetadata("/**\n" +
-                         " * foo.bar.baz.A\n" +
-                         " *\n" +
-                         " * @fileoverview\n" +
-                         " *\n" +
-                         " * @suppress {checkTypes|accessControls}\n" +
-                         " */\n" +
-                         "\n" +
-                         "goog.provide('foo.bar.baz.A');\n" +
-                         "goog.provide('foo.bar.baz.A.ITestInterface');\n" +
-                         "goog.provide('foo.bar.baz.A.InternalClass');\n" +
-                         "\n" +
-                         "\n" +
-                         "\n" +
-                         "/**\n" +
-                         " * @constructor\n" +
-                         " */\n" +
-                         "foo.bar.baz.A = function() {\n" +
-                         "  var /** @type {foo.bar.baz.A.ITestInterface} */ 
internalClass = org.apache.royale.utils.Language.as(new 
foo.bar.baz.A.InternalClass(), foo.bar.baz.A.ITestInterface);\n" +
-                         "  internalClass.test();\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" +
-                         " * Metadata\n" +
-                         " *\n" +
-                         " * @type {Object.<string, Array.<Object>>}\n" +
-                         " */\n" +
-                         "foo.bar.baz.A.prototype.ROYALE_CLASS_INFO = { names: 
[{ name: 'A', qName: 'foo.bar.baz.A', kind: 'class' }] };\n" +
-                       "\n" +
-                       "\n" +
-                       "\n" +
-                       "/**\n" +
-                       " * Reflection\n" +
-                       " *\n" +
-                       " * @return {Object.<string, Function>}\n" +
-                       " */\n" +
-                       "foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO = 
function () {\n" +
-                       "  return {\n" +
-                                       "    variables: function () {return 
{};},\n" +
-                                       "    accessors: function () {return 
{};},\n" +
-                       "    methods: function () {\n" +
-                       "      return {\n" +
-                       "        'A': { type: '', declaredBy: 
'foo.bar.baz.A'}\n" +
-                       "      };\n" +
-                       "    }\n" +
-                       "  };\n" +
-                       "};\n" +
-                         "\n" +
-                         "\n" +
-                         "\n" +
-                         "/**\n" +
-                         " * @interface\n" +
-                         " */\n" +
-                         "foo.bar.baz.A.ITestInterface = function() {\n" +
-                         "};\n\n\n/**\n * Prevent renaming of class. Needed 
for reflection.\n */\ngoog.exportSymbol('foo.bar.baz.A.ITestInterface', 
foo.bar.baz.A.ITestInterface);\n" +
-                         "foo.bar.baz.A.ITestInterface.prototype.test = 
function() {\n" +
-                         "};\n" +
-                         "\n" +
-                         "\n" +
-                         "/**\n" +
-                         " * Metadata\n" +
-                         " *\n" +
-                         " * @type {Object.<string, Array.<Object>>}\n" +
-                         " */\n" +
-                         
"foo.bar.baz.A.ITestInterface.prototype.ROYALE_CLASS_INFO = { names: [{ name: 
'ITestInterface', qName: 'foo.bar.baz.A.ITestInterface', kind: 'interface' }] 
};\n" +
+                               " * foo.bar.baz.A\n" +
+                               " *\n" +
+                               " * @fileoverview\n" +
+                               " *\n" +
+                               " * @suppress {checkTypes|accessControls}\n" +
+                               " */\n" +
                                "\n" +
+                               "goog.provide('foo.bar.baz.A');\n" +
+                               
"goog.provide('foo.bar.baz.A.ITestInterface');\n" +
+                               
"goog.provide('foo.bar.baz.A.InternalClass');\n" +
                                "\n" +
                                "\n" +
-                       "/**\n" +
-                       " * Reflection\n" +
-                       " *\n" +
-                       " * @return {Object.<string, Function>}\n" +
-                       " */\n" +
-                       
"foo.bar.baz.A.ITestInterface.prototype.ROYALE_REFLECTION_INFO = function () 
{\n" +
-                       "  return {\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * @constructor\n" +
+                               " */\n" +
+                               "foo.bar.baz.A = function() {\n" +
+                               "  var /** @type {foo.bar.baz.A.ITestInterface} 
*/ internalClass = org.apache.royale.utils.Language.as(new 
foo.bar.baz.A.InternalClass(), foo.bar.baz.A.ITestInterface);\n" +
+                               "  internalClass.test();\n" +
+                               "};\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" +
+                               "/**\n" +
+                               " * Metadata\n" +
+                               " *\n" +
+                               " * @type {Object.<string, Array.<Object>>}\n" +
+                               " */\n" +
+                               "foo.bar.baz.A.prototype.ROYALE_CLASS_INFO = { 
names: [{ name: 'A', qName: 'foo.bar.baz.A', kind: 'class' }] };\n" +
+                               "\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * Reflection\n" +
+                               " *\n" +
+                               " * @return {Object.<string, Function>}\n" +
+                               " */\n" +
+                               "foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO 
= function () {\n" +
+                               "  return {\n" +
+                               "    variables: function () {return {};},\n" +
                                "    accessors: function () {return {};},\n" +
-                       "    methods: function () {\n" +
-                       "      return {\n" +
-                       "        'test': { type: 'void', declaredBy: 
'foo.bar.baz.A.ITestInterface'}\n" +
-                       "      };\n" +
-                       "    }\n" +
-                       "  };\n" +
-                       "};\n" +
-                         "\n" +
-                         "\n" +
-                         "\n" +
-                         "/**\n" +
-                         " * @constructor\n" +
-                         " * @implements {foo.bar.baz.A.ITestInterface}\n" +
-                         " */\n" +
-                         "foo.bar.baz.A.InternalClass = function() {\n" +
-                         "};\n\n\n/**\n * Prevent renaming of class. Needed 
for reflection.\n */\ngoog.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" +
-                         "};\n" +
-                         "\n" +
-                         "\n" +
-                         "/**\n" +
-                         " * Metadata\n" +
-                         " *\n" +
-                         " * @type {Object.<string, Array.<Object>>}\n" +
-                         " */\n" +
-                         
"foo.bar.baz.A.InternalClass.prototype.ROYALE_CLASS_INFO = { names: [{ name: 
'InternalClass', qName: 'foo.bar.baz.A.InternalClass', kind: 'class' }], 
interfaces: [foo.bar.baz.A.ITestInterface] };\n" +
-                       "\n" +
-                       "\n" +
-                       "\n" +
-                       "/**\n" +
-                       " * Reflection\n" +
-                       " *\n" +
-                       " * @return {Object.<string, Function>}\n" +
-                       " */\n" +
-                       
"foo.bar.baz.A.InternalClass.prototype.ROYALE_REFLECTION_INFO = function () 
{\n" +
-                       "  return {\n" +
-                                       "    variables: function () {return 
{};},\n" +
-                                       "    accessors: function () {return 
{};},\n" +
-                       "    methods: function () {\n" +
-                       "      return {\n" +
-                       "        'InternalClass': { type: '', declaredBy: 
'foo.bar.baz.A.InternalClass'},\n" +
-                       "        'test': { type: 'void', declaredBy: 
'foo.bar.baz.A.InternalClass'}\n" +
-                       "      };\n" +
-                       "    }\n" +
-                       "  };\n" +
-                       "};\n"
-                         );
+                               "    methods: function () {\n" +
+                               "      return {\n" +
+                               "        'A': { type: '', declaredBy: 
'foo.bar.baz.A'}\n" +
+                               "      };\n" +
+                               "    }\n" +
+                               "  };\n" +
+                               "};\n" +
+                               "/**\n" +
+                               " * @export\n" +
+                               " * @const\n" +
+                               " * @type {number}\n" +
+                               " */\n" +
+                               
"foo.bar.baz.A.prototype.ROYALE_REFLECTION_INFO.compileFlags = 14;\n" +
+                               "\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * @interface\n" +
+                               " */\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" +
+                               "\n" +
+                               "/**\n" +
+                               " * Metadata\n" +
+                               " *\n" +
+                               " * @type {Object.<string, Array.<Object>>}\n" +
+                               " */\n" +
+                               
"foo.bar.baz.A.ITestInterface.prototype.ROYALE_CLASS_INFO = { names: [{ name: 
'ITestInterface', qName: 'foo.bar.baz.A.ITestInterface', kind: 'interface' }] 
};\n" +
+                               "\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * Reflection\n" +
+                               " *\n" +
+                               " * @return {Object.<string, Function>}\n" +
+                               " */\n" +
+                               
"foo.bar.baz.A.ITestInterface.prototype.ROYALE_REFLECTION_INFO = function () 
{\n" +
+                               "  return {\n" +
+                               "    accessors: function () {return {};},\n" +
+                               "    methods: function () {\n" +
+                               "      return {\n" +
+                               "        'test': { type: 'void', declaredBy: 
'foo.bar.baz.A.ITestInterface'}\n" +
+                               "      };\n" +
+                               "    }\n" +
+                               "  };\n" +
+                               "};\n" +
+                               "/**\n" +
+                               " * @export\n" +
+                               " * @const\n" +
+                               " * @type {number}\n" +
+                               " */\n" +
+                               
"foo.bar.baz.A.ITestInterface.prototype.ROYALE_REFLECTION_INFO.compileFlags = 
14;\n" +
+                               "\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * @constructor\n" +
+                               " * @implements 
{foo.bar.baz.A.ITestInterface}\n" +
+                               " */\n" +
+                               "foo.bar.baz.A.InternalClass = function() {\n" +
+                               "};\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" +
+                               "/**\n" +
+                               " * @export\n" +
+                               " */\n" +
+                               "foo.bar.baz.A.InternalClass.prototype.test = 
function() {\n" +
+                               "};\n" +
+                               "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * Metadata\n" +
+                               " *\n" +
+                               " * @type {Object.<string, Array.<Object>>}\n" +
+                               " */\n" +
+                               
"foo.bar.baz.A.InternalClass.prototype.ROYALE_CLASS_INFO = { names: [{ name: 
'InternalClass', qName: 'foo.bar.baz.A.InternalClass', kind: 'class' }], 
interfaces: [foo.bar.baz.A.ITestInterface] };"
+               );
     }
 
        @Test
@@ -1075,7 +1167,13 @@ public class TestRoyalePackage extends TestGoogPackage
                                " * @constructor\n" +
                                " */\n" +
                                "foo.bar.A.Internal = function() {\n" +
-                               "};\n\n\n/**\n * Prevent renaming of class. 
Needed for reflection.\n */\ngoog.exportSymbol('foo.bar.A.Internal', 
foo.bar.A.Internal);\n" +
+                               "};\n" +
+                               "\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" +
@@ -1091,22 +1189,8 @@ public class TestRoyalePackage extends TestGoogPackage
                                " *\n" +
                                " * @type {Object.<string, Array.<Object>>}\n" +
                                " */\n" +
-                               "foo.bar.A.Internal.prototype.ROYALE_CLASS_INFO 
= { names: [{ name: 'Internal', qName: 'foo.bar.A.Internal', kind: 'class' }] 
};\n" +
-                       "\n" +
-                       "\n" +
-                       "\n" +
-                       "/**\n" +
-                       " * Reflection\n" +
-                       " *\n" +
-                       " * @return {Object.<string, Function>}\n" +
-                       " */\n" +
-                       "foo.bar.A.Internal.prototype.ROYALE_REFLECTION_INFO = 
function () {\n" +
-                       "  return {\n" +
-                               "    variables: function () {return {};},\n" +
-                               "    accessors: function () {return {};},\n" +
-                               "    methods: function () {return {};}\n" +
-                       "  };\n" +
-                       "};\n");
+                               "foo.bar.A.Internal.prototype.ROYALE_CLASS_INFO 
= { names: [{ name: 'Internal', qName: 'foo.bar.A.Internal', kind: 'class' }] 
};"
+               );
        }
        
        @Test
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 23bd2a6..63b5209 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
@@ -86,3 +86,9 @@ Test.prototype.ROYALE_REFLECTION_INFO = function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+Test.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 ec11c7e..00a8df0 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
@@ -86,3 +86,9 @@ classes.A.prototype.ROYALE_REFLECTION_INFO = function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+classes.A.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 d4a3f12..a0174ff 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
@@ -61,3 +61,9 @@ classes.B.prototype.ROYALE_REFLECTION_INFO = function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+classes.B.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 0b1398e..4799d88 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
@@ -61,3 +61,9 @@ classes.C.prototype.ROYALE_REFLECTION_INFO = function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+classes.C.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 395e896..878ead5 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
@@ -68,3 +68,9 @@ interfaces.IA.prototype.ROYALE_REFLECTION_INFO = function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+interfaces.IA.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 e28bf2e..c70befd 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
@@ -56,3 +56,9 @@ interfaces.IB.prototype.ROYALE_REFLECTION_INFO = function () {
     methods: function () {return {};}
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+interfaces.IB.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 cf0628d..db98f47 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
@@ -56,3 +56,9 @@ interfaces.IC.prototype.ROYALE_REFLECTION_INFO = function () {
     methods: function () {return {};}
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+interfaces.IC.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 1d27a23..3737be0 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
@@ -66,3 +66,9 @@ Base.prototype.ROYALE_REFLECTION_INFO = function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+Base.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 146ca29..450ca38 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
@@ -70,3 +70,9 @@ Super.prototype.ROYALE_REFLECTION_INFO = function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+Super.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 b2481e4..007efbf 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
@@ -72,3 +72,9 @@ A.prototype.ROYALE_REFLECTION_INFO = function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+A.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 efacd72..8bafb82 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
@@ -71,8 +71,14 @@ B.prototype.ROYALE_REFLECTION_INFO = function () {
     methods: function () {
       return {
         'B': { type: '', declaredBy: 'B'},
-        '|a': { type: 'int', declaredBy: 'B', parameters: function () { return 
[  { index: 1, type: 'Boolean', optional: false } ]; }}
+        '|a': { type: 'int', declaredBy: 'B', parameters: function () { return 
[ { index: 1, type: 'Boolean', optional: false } ]; }}
       };
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+B.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 e230054..30562a9 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
@@ -73,8 +73,14 @@ C.prototype.ROYALE_REFLECTION_INFO = function () {
     methods: function () {
       return {
         'C': { type: '', declaredBy: 'C'},
-        '|a': { type: 'int', declaredBy: 'C', parameters: function () { return 
[  { index: 1, type: 'Boolean', optional: false } ]; }}
+        '|a': { type: 'int', declaredBy: 'C', parameters: function () { return 
[ { index: 1, type: 'Boolean', optional: false } ]; }}
       };
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+C.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 d3171dc..48d84c0 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
@@ -73,8 +73,14 @@ D.prototype.ROYALE_REFLECTION_INFO = function () {
     methods: function () {
       return {
         'D': { type: '', declaredBy: 'D'},
-        '|a': { type: 'int', declaredBy: 'D', parameters: function () { return 
[  { index: 1, type: 'Boolean', optional: false } ]; }}
+        '|a': { type: 'int', declaredBy: 'D', parameters: function () { return 
[ { index: 1, type: 'Boolean', optional: false } ]; }}
       };
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+D.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 9eb682c..04e154d 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
@@ -69,8 +69,14 @@ E.prototype.ROYALE_REFLECTION_INFO = function () {
     methods: function () {
       return {
         'E': { type: '', declaredBy: 'E'},
-        '|a': { type: 'int', declaredBy: 'E', parameters: function () { return 
[  { index: 1, type: 'Boolean', optional: false } ]; }}
+        '|a': { type: 'int', declaredBy: 'E', parameters: function () { return 
[ { index: 1, type: 'Boolean', optional: false } ]; }}
       };
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+E.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 c641222..bb5bf9d 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
@@ -73,8 +73,14 @@ F.prototype.ROYALE_REFLECTION_INFO = function () {
     methods: function () {
       return {
         'F': { type: '', declaredBy: 'F'},
-        '|a': { type: 'int', declaredBy: 'F', parameters: function () { return 
[  { index: 1, type: 'Boolean', optional: false } ]; }}
+        '|a': { type: 'int', declaredBy: 'F', parameters: function () { return 
[ { index: 1, type: 'Boolean', optional: false } ]; }}
       };
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+F.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 ffdd7be..1517644 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
@@ -82,8 +82,14 @@ Test.prototype.ROYALE_REFLECTION_INFO = function () {
     methods: function () {
       return {
         'Test': { type: '', declaredBy: 'Test'},
-        'doSomething': { type: 'interfaces.IC', declaredBy: 'Test', 
parameters: function () { return [  { index: 1, type: 'interfaces.IC', 
optional: false } ]; }}
+        'doSomething': { type: 'interfaces.IC', declaredBy: 'Test', 
parameters: function () { return [ { index: 1, type: 'interfaces.IC', optional: 
false } ]; }}
       };
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+Test.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 5020237..b843e24 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
@@ -66,3 +66,9 @@ classes.A.prototype.ROYALE_REFLECTION_INFO = function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+classes.A.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 d4a3f12..a0174ff 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
@@ -61,3 +61,9 @@ classes.B.prototype.ROYALE_REFLECTION_INFO = function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+classes.B.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 0b1398e..4799d88 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
@@ -61,3 +61,9 @@ classes.C.prototype.ROYALE_REFLECTION_INFO = function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+classes.C.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 6b1a475..604bf16 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
@@ -59,3 +59,9 @@ interfaces.IA.prototype.ROYALE_REFLECTION_INFO = function () {
     methods: function () {return {};}
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+interfaces.IA.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 465c89c..b769f2a 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
@@ -59,3 +59,9 @@ interfaces.IC.prototype.ROYALE_REFLECTION_INFO = function () {
     methods: function () {return {};}
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+interfaces.IC.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 b86a0af..2531d35 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
@@ -56,3 +56,9 @@ interfaces.ID.prototype.ROYALE_REFLECTION_INFO = function () {
     methods: function () {return {};}
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+interfaces.ID.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 239c8bd..7aea0a3 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
@@ -68,3 +68,9 @@ interfaces.IE.prototype.ROYALE_REFLECTION_INFO = function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+interfaces.IE.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 826e5f1..9a5c28e 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
@@ -64,6 +64,12 @@ MainClass.prototype.ROYALE_REFLECTION_INFO = function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+MainClass.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
 
 
 
@@ -94,26 +100,3 @@ MainClass.InternalClass.prototype.foo;
  * @type {Object.<string, Array.<Object>>}
  */
 MainClass.InternalClass.prototype.ROYALE_CLASS_INFO = { names: [{ name: 
'InternalClass', qName: 'MainClass.InternalClass', kind: 'class' }] };
-
-
-
-/**
- * Reflection
- *
- * @return {Object.<string, Function>}
- */
-MainClass.InternalClass.prototype.ROYALE_REFLECTION_INFO = function () {
-  return {
-    variables: function () {
-      return {
-        'foo': { type: 'OtherClass'}
-      };
-    },
-    accessors: function () {return {};},
-    methods: function () {
-      return {
-        'InternalClass': { type: '', declaredBy: 'MainClass.InternalClass'}
-      };
-    }
-  };
-};
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 9506443..471b66a 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
@@ -61,3 +61,9 @@ OtherClass.prototype.ROYALE_REFLECTION_INFO = function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+OtherClass.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 5a0e4db..c04f324 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
@@ -88,3 +88,9 @@ Test.prototype.ROYALE_REFLECTION_INFO = function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+Test.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 65ede50..50a3f63 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
@@ -86,3 +86,9 @@ classes.A.prototype.ROYALE_REFLECTION_INFO = function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+classes.A.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 d4a3f12..a0174ff 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
@@ -61,3 +61,9 @@ classes.B.prototype.ROYALE_REFLECTION_INFO = function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+classes.B.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 0506eac..d7e10b4 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
@@ -66,3 +66,9 @@ classes.C.prototype.ROYALE_REFLECTION_INFO = function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+classes.C.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 3e06938..8c09540 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
@@ -76,3 +76,9 @@ interfaces.IA.prototype.ROYALE_REFLECTION_INFO = function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+interfaces.IA.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 e28bf2e..c70befd 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
@@ -56,3 +56,9 @@ interfaces.IB.prototype.ROYALE_REFLECTION_INFO = function () {
     methods: function () {return {};}
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+interfaces.IB.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 9f0b203..54923f7 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
@@ -59,3 +59,9 @@ interfaces.IC.prototype.ROYALE_REFLECTION_INFO = function () {
     methods: function () {return {};}
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+interfaces.IC.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 920736a..ff4cae7 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
@@ -71,3 +71,9 @@ DifferentPackageAsConflict.prototype.ROYALE_REFLECTION_INFO = 
function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+DifferentPackageAsConflict.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 7ab655d..6b5f4e8 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
@@ -62,3 +62,9 @@ Event.prototype.ROYALE_REFLECTION_INFO = function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+Event.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 6b487b5..1f4075c 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
@@ -73,3 +73,9 @@ mypackage.TestClass.prototype.ROYALE_REFLECTION_INFO = 
function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+mypackage.TestClass.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 9064c05..ccd2439 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
@@ -62,3 +62,9 @@ otherpackage.Event.prototype.ROYALE_REFLECTION_INFO = 
function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+otherpackage.Event.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 7ab655d..bef8801 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
@@ -12,7 +12,6 @@
  * limitations under the License.
  */
 /**
- * Generated by Apache Royale Compiler from Event.as
  * Event
  *
  * @fileoverview
@@ -62,3 +61,9 @@ Event.prototype.ROYALE_REFLECTION_INFO = function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+Event.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 efbdb42..4a77bb5 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
@@ -71,3 +71,9 @@ NoConflictNoWindow.prototype.ROYALE_REFLECTION_INFO = 
function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+NoConflictNoWindow.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 c644d1f..29803ad 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
@@ -71,3 +71,9 @@ mypackage.TestClass.prototype.ROYALE_REFLECTION_INFO = 
function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+mypackage.TestClass.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 7ab655d..6b5f4e8 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
@@ -62,3 +62,9 @@ Event.prototype.ROYALE_REFLECTION_INFO = function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+Event.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 9410ca3..366eed0 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
@@ -71,3 +71,9 @@ NoConflictUseWindow.prototype.ROYALE_REFLECTION_INFO = 
function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+NoConflictUseWindow.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 c644d1f..29803ad 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
@@ -71,3 +71,9 @@ mypackage.TestClass.prototype.ROYALE_REFLECTION_INFO = 
function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+mypackage.TestClass.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 7ab655d..6b5f4e8 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
@@ -62,3 +62,9 @@ Event.prototype.ROYALE_REFLECTION_INFO = function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+Event.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 ebf818c..9b15787 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
@@ -71,3 +71,9 @@ SamePackageAsConflict.prototype.ROYALE_REFLECTION_INFO = 
function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+SamePackageAsConflict.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 6bf3477..019ca3d 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
@@ -62,3 +62,9 @@ mypackage.Event.prototype.ROYALE_REFLECTION_INFO = function 
() {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+mypackage.Event.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 a0a5b4e..88ac267 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
@@ -73,3 +73,9 @@ mypackage.TestClass.prototype.ROYALE_REFLECTION_INFO = 
function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+mypackage.TestClass.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 7ab655d..6b5f4e8 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
@@ -62,3 +62,9 @@ Event.prototype.ROYALE_REFLECTION_INFO = function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+Event.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 2efb878..9899bd9 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
@@ -71,3 +71,9 @@ UseWindow.prototype.ROYALE_REFLECTION_INFO = function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+UseWindow.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 812e1b0..49aa8dc 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
@@ -81,3 +81,9 @@ mypackage.TestClass.prototype.ROYALE_REFLECTION_INFO = 
function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+mypackage.TestClass.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 9064c05..ccd2439 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
@@ -62,3 +62,9 @@ otherpackage.Event.prototype.ROYALE_REFLECTION_INFO = 
function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+otherpackage.Event.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 6e626be..6276d70 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
@@ -92,3 +92,9 @@ Base.prototype.ROYALE_REFLECTION_INFO = function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+Base.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 4612c43..0521323 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
@@ -94,3 +94,9 @@ Super.prototype.ROYALE_REFLECTION_INFO = function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+Super.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;
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 914a071..801c3d8 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
@@ -64,3 +64,9 @@ XMLRequire.prototype.ROYALE_REFLECTION_INFO = function () {
     }
   };
 };
+/**
+ * @export
+ * @const
+ * @type {number}
+ */
+XMLRequire.prototype.ROYALE_REFLECTION_INFO.compileFlags = 8;

Reply via email to