diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/codegen/js/goog/IJSGoogDocEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/codegen/js/goog/IJSGoogDocEmitter.java
index 6c99459..33b2afa 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/codegen/js/goog/IJSGoogDocEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/codegen/js/goog/IJSGoogDocEmitter.java
@@ -130,6 +130,8 @@
 
     void emitProtected(IASNode node);
 
+    void emitInternal(IASNode node);
+
     void emitReturn(IFunctionNode node, String packageName);
 
     void emitThis(ITypeDefinition node, String packageName);
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/goog/JSGoogDocEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/goog/JSGoogDocEmitter.java
index 40d28a0..f5620b5 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/goog/JSGoogDocEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/goog/JSGoogDocEmitter.java
@@ -122,6 +122,10 @@
         {
             emitProtected(node);
         }
+        else if (ns == IASKeywordConstants.INTERNAL)
+        {
+            emitInternal(node);
+        }
 
         if (node.isConst())
             emitConst(node);
@@ -339,6 +343,12 @@
     }
 
     @Override
+    public void emitInternal(IASNode node)
+    {
+        emitJSDocLine(JSGoogDocEmitterTokens.PACKAGE);
+    }
+
+    @Override
     public void emitPublic(IASNode node)
     {
         emitJSDocLine(JSGoogDocEmitterTokens.EXPORT);
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/goog/JSGoogDocEmitterTokens.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/goog/JSGoogDocEmitterTokens.java
index 623f131..4a777aa 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/goog/JSGoogDocEmitterTokens.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/goog/JSGoogDocEmitterTokens.java
@@ -22,7 +22,7 @@
 
 public enum JSGoogDocEmitterTokens implements IEmitterTokens
 {
-    PARAM("param"), STAR("*"), TYPE("type"), EXPOSE("expose"), EXPORT("export"), NOCOLLAPSE("nocollapse");
+    PARAM("param"), STAR("*"), TYPE("type"), EXPOSE("expose"), EXPORT("export"), NOCOLLAPSE("nocollapse"), PACKAGE("package");
 
     private String token;
 
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleDocEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleDocEmitter.java
index 7d9aa22..f65833e 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleDocEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleDocEmitter.java
@@ -547,6 +547,10 @@
         {
             emitProtected(node);
         }
+        else if (ns == IASKeywordConstants.INTERNAL)
+        {
+            emitInternal(node);
+        }
         else // public or custom namespace
         {
             emitPublic(node);
@@ -624,6 +628,10 @@
                 emitNoCollapse(node);
             }
         }
+        else if (ns == IASKeywordConstants.INTERNAL)
+        {
+            emitInternal(node);
+        }
         else
         {
             boolean warnPublicVars = fjp.config != null && fjp.config.getWarnPublicVars() && !fjp.config.getPreventRenamePublicSymbols();
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/goog/TestGoogClass.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/goog/TestGoogClass.java
index 67c4caa..961d4fe 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/goog/TestGoogClass.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/goog/TestGoogClass.java
@@ -188,7 +188,7 @@
         IClassNode node = getClassNode("public class A {public var a:Object;protected var b:String; "
                 + "private var c:int; internal var d:uint; var e:Number}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n/**\n * @type {Object}\n */\norg.apache.royale.A.prototype.a;\n\n/**\n * @protected\n * @type {string}\n */\norg.apache.royale.A.prototype.b;\n\n/**\n * @private\n * @type {number}\n */\norg.apache.royale.A.prototype.c;\n\n/**\n * @type {number}\n */\norg.apache.royale.A.prototype.d;\n\n/**\n * @type {number}\n */\norg.apache.royale.A.prototype.e;");
+        assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n/**\n * @type {Object}\n */\norg.apache.royale.A.prototype.a;\n\n/**\n * @protected\n * @type {string}\n */\norg.apache.royale.A.prototype.b;\n\n/**\n * @private\n * @type {number}\n */\norg.apache.royale.A.prototype.c;\n\n/**\n * @package\n * @type {number}\n */\norg.apache.royale.A.prototype.d;\n\n/**\n * @package\n * @type {number}\n */\norg.apache.royale.A.prototype.e;");
     }
 
     @Override
@@ -220,7 +220,7 @@
                 + "foo_bar function get foo6():Object{return null;}"
                 + "foo_bar function set foo6(value:Object):void{}" + "}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n/**\n * @type {Object}\n */\norg.apache.royale.A.prototype.foo1;\n\nObject.defineProperty(\n\torg.apache.royale.A.prototype, \n\t'foo1', \n\t{get:function() {\n\t\tvar self = this;\n\t\treturn null;\n\t}, configurable:true}\n);\n\nObject.defineProperty(\n\torg.apache.royale.A.prototype, \n\t'foo1', \n\t{set:function(value) {\n\t}, configurable:true}\n);\n\n/**\n * @protected\n * @type {Object}\n */\norg.apache.royale.A.prototype.foo2;\n\nObject.defineProperty(\n\torg.apache.royale.A.prototype, \n\t'foo2', \n\t{get:function() {\n\t\tvar self = this;\n\t\treturn null;\n\t}, configurable:true}\n);\n\nObject.defineProperty(\n\torg.apache.royale.A.prototype, \n\t'foo2', \n\t{set:function(value) {\n\t}, configurable:true}\n);\n\n/**\n * @private\n * @type {Object}\n */\norg.apache.royale.A.prototype.foo3;\n\nObject.defineProperty(\n\torg.apache.royale.A.prototype, \n\t'foo3', \n\t{get:function() {\n\t\tvar self = this;\n\t\treturn null;\n\t}, configurable:true}\n);\n\nObject.defineProperty(\n\torg.apache.royale.A.prototype, \n\t'foo3', \n\t{set:function(value) {\n\t}, configurable:true}\n);\n\n/**\n * @type {Object}\n */\norg.apache.royale.A.prototype.foo5;\n\nObject.defineProperty(\n\torg.apache.royale.A.prototype, \n\t'foo5', \n\t{get:function() {\n\t\tvar self = this;\n\t\treturn null;\n\t}, configurable:true}\n);\n\nObject.defineProperty(\n\torg.apache.royale.A.prototype, \n\t'foo5', \n\t{set:function(value) {\n\t}, configurable:true}\n);\n\n/**\n * @type {Object}\n */\norg.apache.royale.A.prototype.foo6;\n\nObject.defineProperty(\n\torg.apache.royale.A.prototype, \n\t'foo6', \n\t{get:function() {\n\t\tvar self = this;\n\t\treturn null;\n\t}, configurable:true}\n);\n\nObject.defineProperty(\n\torg.apache.royale.A.prototype, \n\t'foo6', \n\t{set:function(value) {\n\t}, configurable:true}\n);");
+        assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n/**\n * @type {Object}\n */\norg.apache.royale.A.prototype.foo1;\n\nObject.defineProperty(\n\torg.apache.royale.A.prototype, \n\t'foo1', \n\t{get:function() {\n\t\tvar self = this;\n\t\treturn null;\n\t}, configurable:true}\n);\n\nObject.defineProperty(\n\torg.apache.royale.A.prototype, \n\t'foo1', \n\t{set:function(value) {\n\t}, configurable:true}\n);\n\n/**\n * @protected\n * @type {Object}\n */\norg.apache.royale.A.prototype.foo2;\n\nObject.defineProperty(\n\torg.apache.royale.A.prototype, \n\t'foo2', \n\t{get:function() {\n\t\tvar self = this;\n\t\treturn null;\n\t}, configurable:true}\n);\n\nObject.defineProperty(\n\torg.apache.royale.A.prototype, \n\t'foo2', \n\t{set:function(value) {\n\t}, configurable:true}\n);\n\n/**\n * @private\n * @type {Object}\n */\norg.apache.royale.A.prototype.foo3;\n\nObject.defineProperty(\n\torg.apache.royale.A.prototype, \n\t'foo3', \n\t{get:function() {\n\t\tvar self = this;\n\t\treturn null;\n\t}, configurable:true}\n);\n\nObject.defineProperty(\n\torg.apache.royale.A.prototype, \n\t'foo3', \n\t{set:function(value) {\n\t}, configurable:true}\n);\n\n/**\n * @package\n * @type {Object}\n */\norg.apache.royale.A.prototype.foo5;\n\nObject.defineProperty(\n\torg.apache.royale.A.prototype, \n\t'foo5', \n\t{get:function() {\n\t\tvar self = this;\n\t\treturn null;\n\t}, configurable:true}\n);\n\nObject.defineProperty(\n\torg.apache.royale.A.prototype, \n\t'foo5', \n\t{set:function(value) {\n\t}, configurable:true}\n);\n\n/**\n * @type {Object}\n */\norg.apache.royale.A.prototype.foo6;\n\nObject.defineProperty(\n\torg.apache.royale.A.prototype, \n\t'foo6', \n\t{get:function() {\n\t\tvar self = this;\n\t\treturn null;\n\t}, configurable:true}\n);\n\nObject.defineProperty(\n\torg.apache.royale.A.prototype, \n\t'foo6', \n\t{set:function(value) {\n\t}, configurable:true}\n);");
     }
 
     @Override
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/goog/TestGoogFieldMembers.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/goog/TestGoogFieldMembers.java
index a1318d4..e410ab3 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/goog/TestGoogFieldMembers.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/goog/TestGoogFieldMembers.java
@@ -43,7 +43,7 @@
     {
         IVariableNode node = getField("var foo;");
         asBlockWalker.visitVariable(node);
-        assertOut("/**\n * @type {*}\n */\nRoyaleTest_A.prototype.foo");
+        assertOut("/**\n * @package\n * @type {*}\n */\nRoyaleTest_A.prototype.foo");
     }
 
     @Override
@@ -52,7 +52,7 @@
     {
         IVariableNode node = getField("var foo:int;");
         asBlockWalker.visitVariable(node);
-        assertOut("/**\n * @type {number}\n */\nRoyaleTest_A.prototype.foo");
+        assertOut("/**\n * @package\n * @type {number}\n */\nRoyaleTest_A.prototype.foo");
     }
 
     @Override
@@ -61,7 +61,7 @@
     {
         IVariableNode node = getField("var foo:int = 420;");
         asBlockWalker.visitVariable(node);
-        assertOut("/**\n * @type {number}\n */\nRoyaleTest_A.prototype.foo = 420");
+        assertOut("/**\n * @package\n * @type {number}\n */\nRoyaleTest_A.prototype.foo = 420");
     }
 
     @Test
@@ -69,7 +69,7 @@
     {
         IVariableNode node = getField("var foo:int = -420;");
         asBlockWalker.visitVariable(node);
-        assertOut("/**\n * @type {number}\n */\nRoyaleTest_A.prototype.foo = -420");
+        assertOut("/**\n * @package\n * @type {number}\n */\nRoyaleTest_A.prototype.foo = -420");
     }
 
     @Override
@@ -137,7 +137,7 @@
     {
         IVariableNode node = getField("static const foo;");
         asBlockWalker.visitVariable(node);
-        assertOut("/**\n * @const\n * @type {*}\n */\nRoyaleTest_A.foo");
+        assertOut("/**\n * @package\n * @const\n * @type {*}\n */\nRoyaleTest_A.foo");
     }
 
     @Test
@@ -145,7 +145,7 @@
     {
         IVariableNode node = getField("const foo;");
         asBlockWalker.visitVariable(node);
-        assertOut("/**\n * @const\n * @type {*}\n */\nRoyaleTest_A.prototype.foo");
+        assertOut("/**\n * @package\n * @const\n * @type {*}\n */\nRoyaleTest_A.prototype.foo");
     }
 
     @Override
@@ -154,7 +154,7 @@
     {
         IVariableNode node = getField("static const foo:int;");
         asBlockWalker.visitVariable(node);
-        assertOut("/**\n * @const\n * @type {number}\n */\nRoyaleTest_A.foo");
+        assertOut("/**\n * @package\n * @const\n * @type {number}\n */\nRoyaleTest_A.foo");
     }
 
     @Test
@@ -162,7 +162,7 @@
     {
         IVariableNode node = getField("const foo:int;");
         asBlockWalker.visitVariable(node);
-        assertOut("/**\n * @const\n * @type {number}\n */\nRoyaleTest_A.prototype.foo");
+        assertOut("/**\n * @package\n * @const\n * @type {number}\n */\nRoyaleTest_A.prototype.foo");
     }
 
     @Override
@@ -171,7 +171,7 @@
     {
         IVariableNode node = getField("static const foo:int = 420;");
         asBlockWalker.visitVariable(node);
-        assertOut("/**\n * @const\n * @type {number}\n */\nRoyaleTest_A.foo = 420");
+        assertOut("/**\n * @package\n * @const\n * @type {number}\n */\nRoyaleTest_A.foo = 420");
     }
 
     @Test
@@ -179,7 +179,7 @@
     {
         IVariableNode node = getField("const foo:int = 420;");
         asBlockWalker.visitVariable(node);
-        assertOut("/**\n * @const\n * @type {number}\n */\nRoyaleTest_A.prototype.foo = 420");
+        assertOut("/**\n * @package\n * @const\n * @type {number}\n */\nRoyaleTest_A.prototype.foo = 420");
     }
 
     @Override
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/goog/TestGoogGlobalConstants.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/goog/TestGoogGlobalConstants.java
index 985df6d..a3706c7 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/goog/TestGoogGlobalConstants.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/goog/TestGoogGlobalConstants.java
@@ -34,7 +34,7 @@
     @Test
     public void testInfinity()
     {
-        IVariableNode node = getField("var a:Number = Infinity;");
+        IVariableNode node = getField("public var a:Number = Infinity;");
         asBlockWalker.visitVariable(node);
         assertOut("/**\n * @type {number}\n */\nRoyaleTest_A.prototype.a = Infinity");
     }
@@ -43,7 +43,7 @@
     @Test
     public void testNegativeInfinity()
     {
-        IVariableNode node = getField("var a:Number = -Infinity;");
+        IVariableNode node = getField("public var a:Number = -Infinity;");
         asBlockWalker.visitVariable(node);
         assertOut("/**\n * @type {number}\n */\nRoyaleTest_A.prototype.a = -Infinity");
     }
@@ -52,7 +52,7 @@
     @Test
     public void testNaN()
     {
-        IVariableNode node = getField("var a:Number = NaN;");
+        IVariableNode node = getField("public var a:Number = NaN;");
         asBlockWalker.visitVariable(node);
         assertOut("/**\n * @type {number}\n */\nRoyaleTest_A.prototype.a = NaN");
     }
@@ -61,7 +61,7 @@
     @Test
     public void testUndefined()
     {
-        IVariableNode node = getField("var a:* = undefined;");
+        IVariableNode node = getField("public var a:* = undefined;");
         asBlockWalker.visitVariable(node);
         assertOut("/**\n * @type {*}\n */\nRoyaleTest_A.prototype.a = undefined");
     }
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleClass.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleClass.java
index 39f85dd..cf750eb 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleClass.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleClass.java
@@ -390,7 +390,7 @@
         IClassNode node = getClassNode("public class A {public var a:Object;protected var b:String; "
                 + "private var c:int; internal var d:uint; var e:Number}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * @export\n * @type {Object}\n */\norg.apache.royale.A.prototype.a = null;\n\n\n/**\n * @protected\n * @type {string}\n */\norg.apache.royale.A.prototype.b = null;\n\n\n/**\n * @private\n * @type {number}\n */\norg.apache.royale.A.prototype.c = 0;\n\n\n/**\n * @type {number}\n */\norg.apache.royale.A.prototype.d = 0;\n\n\n/**\n * @type {number}\n */\norg.apache.royale.A.prototype.e = NaN;");
+        assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * @export\n * @type {Object}\n */\norg.apache.royale.A.prototype.a = null;\n\n\n/**\n * @protected\n * @type {string}\n */\norg.apache.royale.A.prototype.b = null;\n\n\n/**\n * @private\n * @type {number}\n */\norg.apache.royale.A.prototype.c = 0;\n\n\n/**\n * @package\n * @type {number}\n */\norg.apache.royale.A.prototype.d = 0;\n\n\n/**\n * @package\n * @type {number}\n */\norg.apache.royale.A.prototype.e = NaN;");
     }
 
     @Test
@@ -417,11 +417,13 @@
         		  " * @type {number}\n" +
         		  " */\n" +
         		  "org.apache.royale.A.prototype.c_ = 0;\n\n\n" +
-        		  "/**\n" +
+                  "/**\n" +
+                  " * @package\n" + 
         		  " * @type {number}\n" +
         		  " */\n" +
         		  "org.apache.royale.A.prototype.d = 0;\n\n\n" +
-        		  "/**\n" +
+                  "/**\n" +
+                  " * @package\n" +
         		  " * @type {number}\n" +
         		  " */\n" +
         		  "org.apache.royale.A.prototype.e = NaN;Object.defineProperties(org.apache.royale.A.prototype, /** @lends {org.apache.royale.A.prototype} */ {\n" +
@@ -505,11 +507,13 @@
         		  " * @type {number}\n" +
         		  " */\n" +
         		  "org.apache.royale.A.prototype.c_ = 0;\n\n\n" +
-        		  "/**\n" +
+                  "/**\n" +
+                  " * @package\n" + 
         		  " * @type {number}\n" +
         		  " */\n" +
         		  "org.apache.royale.A.prototype.d = 0;\n\n\n" +
         		  "/**\n" +
+                  " * @package\n" + 
         		  " * @type {number}\n" +
         		  " */\n" +
         		  "org.apache.royale.A.prototype.e = NaN;Object.defineProperties(org.apache.royale.A.prototype, /** @lends {org.apache.royale.A.prototype} */ {\n" +
@@ -593,10 +597,12 @@
         		  " */\n" +
         		  "org.apache.royale.A.prototype.c = 0;\n\n\n" +
         		  "/**\n" +
+                  " * @package\n" + 
         		  " * @type {number}\n" +
         		  " */\n" +
         		  "org.apache.royale.A.prototype.d = 0;\n\n\n" +
         		  "/**\n" +
+                  " * @package\n" + 
         		  " * @type {number}\n" +
         		  " */\n" +
         		  "org.apache.royale.A.prototype.e = NaN;Object.defineProperties(org.apache.royale.A.prototype, /** @lends {org.apache.royale.A.prototype} */ {\n" +
@@ -701,7 +707,7 @@
                 + "public static function foo7(value:Object):void{}"
                 + "custom_namespace static function foo7(value:Object):void{}" + "}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * @export\n * @return {Object}\n */\norg.apache.royale.A.prototype.foo1 = function() {\n  return null;\n};\n\n\n/**\n * @export\n * @return {Object}\n */\norg.apache.royale.A.prototype.foo1a = function() {\n  return null;\n};\n\n\n/**\n * @export\n * @override\n */\norg.apache.royale.A.prototype.foo1b = function() {\n  return org.apache.royale.A.superClass_.foo1b.apply(this);\n};\n\n\n/**\n * @protected\n * @param {Object} value\n */\norg.apache.royale.A.prototype.foo2 = function(value) {\n};\n\n\n/**\n * @private\n * @param {Object} value\n */\norg.apache.royale.A.prototype.foo3 = function(value) {\n};\n\n\n/**\n * @export\n * @param {Object} value\n */\norg.apache.royale.A.prototype.foo5 = function(value) {\n};\n\n\n/**\n * @export\n * @param {Object} value\n */\norg.apache.royale.A.prototype.http_$$ns_apache_org$2017$custom$namespace__foo6 = function(value) {\n};\n\n\n/**\n * @nocollapse\n * @param {Object} value\n */\norg.apache.royale.A.foo7 = function(value) {\n};\n\n\n/**\n * @nocollapse\n * @param {Object} value\n */\norg.apache.royale.A.http_$$ns_apache_org$2017$custom$namespace__foo7 = function(value) {\n};");
+        assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * @export\n * @return {Object}\n */\norg.apache.royale.A.prototype.foo1 = function() {\n  return null;\n};\n\n\n/**\n * @export\n * @return {Object}\n */\norg.apache.royale.A.prototype.foo1a = function() {\n  return null;\n};\n\n\n/**\n * @export\n * @override\n */\norg.apache.royale.A.prototype.foo1b = function() {\n  return org.apache.royale.A.superClass_.foo1b.apply(this);\n};\n\n\n/**\n * @protected\n * @param {Object} value\n */\norg.apache.royale.A.prototype.foo2 = function(value) {\n};\n\n\n/**\n * @private\n * @param {Object} value\n */\norg.apache.royale.A.prototype.foo3 = function(value) {\n};\n\n\n/**\n * @package\n * @param {Object} value\n */\norg.apache.royale.A.prototype.foo5 = function(value) {\n};\n\n\n/**\n * @export\n * @param {Object} value\n */\norg.apache.royale.A.prototype.http_$$ns_apache_org$2017$custom$namespace__foo6 = function(value) {\n};\n\n\n/**\n * @nocollapse\n * @param {Object} value\n */\norg.apache.royale.A.foo7 = function(value) {\n};\n\n\n/**\n * @nocollapse\n * @param {Object} value\n */\norg.apache.royale.A.http_$$ns_apache_org$2017$custom$namespace__foo7 = function(value) {\n};");
     }
 
     @Test
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleFieldMembers.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleFieldMembers.java
index 33005cd..c715e9d 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleFieldMembers.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleFieldMembers.java
@@ -44,7 +44,7 @@
     {
         IVariableNode node = getField("var foo;");
         asBlockWalker.visitVariable(node);
-        assertOut("/**\n * @type {*}\n */\nRoyaleTest_A.prototype.foo");
+        assertOut("/**\n * @package\n * @type {*}\n */\nRoyaleTest_A.prototype.foo");
     }
 
     @Test
@@ -167,7 +167,7 @@
     {
         IVariableNode node = getField("static var foo;");
         asBlockWalker.visitVariable(node);
-        assertOut("/**\n * @type {*}\n */\nRoyaleTest_A.foo");
+        assertOut("/**\n * @package\n * @type {*}\n */\nRoyaleTest_A.foo");
     }
 
     @Test
@@ -183,7 +183,7 @@
     {
         IVariableNode node = getField("static var foo:int = 420;");
         asBlockWalker.visitVariable(node);
-        assertOut("/**\n * @type {number}\n */\nRoyaleTest_A.foo = 420");
+        assertOut("/**\n * @package\n * @type {number}\n */\nRoyaleTest_A.foo = 420");
     }
 
     @Test
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleGlobalConstants.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleGlobalConstants.java
index 8cc7803..71f5c6a 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleGlobalConstants.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleGlobalConstants.java
@@ -43,7 +43,7 @@
     {
         IVariableNode node = getField("var a:Number = Infinity;");
         asBlockWalker.visitVariable(node);
-        assertOut("/**\n * @type {number}\n */\nRoyaleTest_A.prototype.a = Infinity");
+        assertOut("/**\n * @package\n * @type {number}\n */\nRoyaleTest_A.prototype.a = Infinity");
     }
 
     @Override
@@ -52,7 +52,7 @@
     {
         IVariableNode node = getField("var a:Number = -Infinity;");
         asBlockWalker.visitVariable(node);
-        assertOut("/**\n * @type {number}\n */\nRoyaleTest_A.prototype.a = -Infinity");
+        assertOut("/**\n * @package\n * @type {number}\n */\nRoyaleTest_A.prototype.a = -Infinity");
     }
 
     @Override
@@ -61,7 +61,7 @@
     {
         IVariableNode node = getField("var a:Number = NaN;");
         asBlockWalker.visitVariable(node);
-        assertOut("/**\n * @type {number}\n */\nRoyaleTest_A.prototype.a = NaN");
+        assertOut("/**\n * @package\n * @type {number}\n */\nRoyaleTest_A.prototype.a = NaN");
     }
 
     @Override
@@ -70,6 +70,6 @@
     {
         IVariableNode node = getField("var a:* = undefined;");
         asBlockWalker.visitVariable(node);
-        assertOut("/**\n * @type {*}\n */\nRoyaleTest_A.prototype.a = undefined");
+        assertOut("/**\n * @package\n * @type {*}\n */\nRoyaleTest_A.prototype.a = undefined");
     }
 }
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 0ca2e6a..9fdceab 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
@@ -625,7 +625,7 @@
 				"\n" +
 				"\n" +
 				"/**\n" +
-				//" * @export\n" +
+				" * @package\n" +
 				" * @type {number}\n" +
 				" */\n" +
 				"foo.bar.baz.A.internalVar = 2"
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/sourcemaps/TestSourceMapFieldMembers.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/sourcemaps/TestSourceMapFieldMembers.java
index 503923c..219f6f6 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/sourcemaps/TestSourceMapFieldMembers.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/sourcemaps/TestSourceMapFieldMembers.java
@@ -32,8 +32,8 @@
     {
         IVariableNode node = getField("var foo;");
         asBlockWalker.visitVariable(node);
-        ///**\n * @type {*}\n */\nRoyaleTest_A.prototype.foo
-        assertMapping(node, 0, 4, 3, 0, 3, 26);  // foo
+        ///**\n * @package\n * @type {*}\n */\nRoyaleTest_A.prototype.foo
+        assertMapping(node, 0, 4, 4, 0, 4, 26);  // foo
     }
 
     @Test
@@ -41,10 +41,10 @@
     {
         IVariableNode node = getField("var foo:String = null;");
         asBlockWalker.visitVariable(node);
-        //**\n * @type {string}\n */\nRoyaleTest_A.prototype.foo = null
-        assertMapping(node, 0, 4, 3, 0, 3, 26);  // foo
-        assertMapping(node, 0, 14, 3, 26, 3, 29);  // =
-        assertMapping(node, 0, 17, 3, 29, 3, 33);  // null
+        //**\n * @package\n * @type {string}\n */\nRoyaleTest_A.prototype.foo = null
+        assertMapping(node, 0, 4, 4, 0, 4, 26);  // foo
+        assertMapping(node, 0, 14, 4, 26, 4, 29);  // =
+        assertMapping(node, 0, 17, 4, 29, 4, 33);  // null
     }
 
     @Test
@@ -52,8 +52,8 @@
     {
         IVariableNode node = getField("var foo:int;");
         asBlockWalker.visitVariable(node);
-        ///**\n * @type {number}\n */\nRoyaleTest_A.prototype.foo = 0
-        assertMapping(node, 0, 4, 3, 0, 3, 26);  // foo
+        ///**\n * @package\n * @type {number}\n */\nRoyaleTest_A.prototype.foo = 0
+        assertMapping(node, 0, 4, 4, 0, 4, 26);  // foo
     }
 
     @Test
@@ -61,10 +61,10 @@
     {
         IVariableNode node = getField("var foo = 420;");
         asBlockWalker.visitVariable(node);
-        ///**\n * @type {*}\n */\nRoyaleTest_A.prototype.foo = 420
-        assertMapping(node, 0, 4, 3, 0, 3, 26);  // foo
-        assertMapping(node, 0, 7, 3, 26, 3, 29);  // =
-        assertMapping(node, 0, 10, 3, 29, 3, 32);  // 420
+        ///**\n * @package\n * @type {*}\n */\nRoyaleTest_A.prototype.foo = 420
+        assertMapping(node, 0, 4, 4, 0, 4, 26);  // foo
+        assertMapping(node, 0, 7, 4, 26, 4, 29);  // =
+        assertMapping(node, 0, 10, 4, 29, 4, 32);  // 420
     }
 
     @Test
@@ -72,10 +72,10 @@
     {
         IVariableNode node = getField("var foo:int = 420;");
         asBlockWalker.visitVariable(node);
-        ///**\n * @type {number}\n */\nRoyaleTest_A.prototype.foo = 420
-        assertMapping(node, 0, 4, 3, 0, 3, 26);  // foo
-        assertMapping(node, 0, 11, 3, 26, 3, 29);  // =
-        assertMapping(node, 0, 14, 3, 29, 3, 32);  // 420
+        ///**\n * @package\n * @type {number}\n */\nRoyaleTest_A.prototype.foo = 420
+        assertMapping(node, 0, 4, 4, 0, 4, 26);  // foo
+        assertMapping(node, 0, 11, 4, 26, 4, 29);  // =
+        assertMapping(node, 0, 14, 4, 29, 4, 32);  // 420
     }
 
     @Test
@@ -83,8 +83,8 @@
     {
         IVariableNode node = getField("static var foo;");
         asBlockWalker.visitVariable(node);
-        ////**\n * @type {*}\n */\nRoyaleTest_A.foo
-        assertMapping(node, 0, 11, 3, 0, 3, 16);  // foo
+        ////**\n * @package\n * @type {*}\n */\nRoyaleTest_A.foo
+        assertMapping(node, 0, 11, 4, 0, 4, 16);  // foo
     }
 
     @Test
@@ -92,8 +92,8 @@
     {
         IVariableNode node = getField("static var foo:int;");
         asBlockWalker.visitVariable(node);
-        ///**\n * @type {number}\n */\nRoyaleTest_A.foo = 0
-        assertMapping(node, 0, 11, 3, 0, 3, 16);  // foo
+        ///**\n * @package\n * @type {number}\n */\nRoyaleTest_A.foo = 0
+        assertMapping(node, 0, 11, 4, 0, 4, 16);  // foo
     }
 
     @Test
@@ -101,10 +101,10 @@
     {
         IVariableNode node = getField("static var foo = 420;");
         asBlockWalker.visitVariable(node);
-        ///**\n * @type {*}\n */\nRoyaleTest_A.foo = 420
-        assertMapping(node, 0, 11, 3, 0, 3, 16);   // foo
-        assertMapping(node, 0, 14, 3, 16, 3, 19);  // =
-        assertMapping(node, 0, 17, 3, 19, 3, 22);  // 420
+        ///**\n * @package\n * @type {*}\n */\nRoyaleTest_A.foo = 420
+        assertMapping(node, 0, 11, 4, 0, 4, 16);   // foo
+        assertMapping(node, 0, 14, 4, 16, 4, 19);  // =
+        assertMapping(node, 0, 17, 4, 19, 4, 22);  // 420
     }
 
     @Test
@@ -112,10 +112,10 @@
     {
         IVariableNode node = getField("static var foo:int = 420;");
         asBlockWalker.visitVariable(node);
-        ///**\n * @type {number}\n */\nRoyaleTest_A.foo = 420
-        assertMapping(node, 0, 11, 3, 0, 3, 16);  // foo
-        assertMapping(node, 0, 18, 3, 16, 3, 19);  // =
-        assertMapping(node, 0, 21, 3, 19, 3, 22);  // 420
+        ///**\n * @package\n * @type {number}\n */\nRoyaleTest_A.foo = 420
+        assertMapping(node, 0, 11, 4, 0, 4, 16);  // foo
+        assertMapping(node, 0, 18, 4, 16, 4, 19);  // =
+        assertMapping(node, 0, 21, 4, 19, 4, 22);  // 420
     }
 
     @Test
@@ -123,8 +123,8 @@
     {
         IVariableNode node = getField("const foo;");
         asBlockWalker.visitVariable(node);
-        ///**\n * @const\n * @type {*}\n */\nRoyaleTest_A.prototype.foo
-        assertMapping(node, 0, 6, 4, 0, 4, 26);  // foo
+        ///**\n * @package\n * @const\n * @type {*}\n */\nRoyaleTest_A.prototype.foo
+        assertMapping(node, 0, 6, 5, 0, 5, 26);  // foo
     }
 
     @Test
@@ -132,8 +132,8 @@
     {
         IVariableNode node = getField("const foo:int;");
         asBlockWalker.visitVariable(node);
-        ///**\n * @const\n * @type {number}\n */\nRoyaleTest_A.prototype.foo = 0
-        assertMapping(node, 0, 6, 4, 0, 4, 26);  // foo
+        ///**\n * @package\n * @const\n * @type {number}\n */\nRoyaleTest_A.prototype.foo = 0
+        assertMapping(node, 0, 6, 5, 0, 5, 26);  // foo
     }
 
     @Test
@@ -141,10 +141,10 @@
     {
         IVariableNode node = getField("const foo = 420;");
         asBlockWalker.visitVariable(node);
-        ///**\n * @const\n * @type {*}\n */\nRoyaleTest_A.prototype.foo = 420
-        assertMapping(node, 0, 6, 4, 0, 4, 26);  // foo
-        assertMapping(node, 0, 9, 4, 26, 4, 29);  // =
-        assertMapping(node, 0, 12, 4, 29, 4, 32);  // 420
+        ///**\n * @package\n * @const\n * @type {*}\n */\nRoyaleTest_A.prototype.foo = 420
+        assertMapping(node, 0, 6, 5, 0, 5, 26);  // foo
+        assertMapping(node, 0, 9, 5, 26, 5, 29);  // =
+        assertMapping(node, 0, 12, 5, 29, 5, 32);  // 420
     }
 
     @Test
@@ -152,10 +152,10 @@
     {
         IVariableNode node = getField("const foo:int = 420;");
         asBlockWalker.visitVariable(node);
-        ///**\n * @const\n * @type {number}\n */\nRoyaleTest_A.prototype.foo = 420
-        assertMapping(node, 0, 6, 4, 0, 4, 26);  // foo
-        assertMapping(node, 0, 13, 4, 26, 4, 29);  // =
-        assertMapping(node, 0, 16, 4, 29, 4, 32);  // 420
+        ///**\n * @package\n * @const\n * @type {number}\n */\nRoyaleTest_A.prototype.foo = 420
+        assertMapping(node, 0, 6, 5, 0, 5, 26);  // foo
+        assertMapping(node, 0, 13, 5, 26, 5, 29);  // =
+        assertMapping(node, 0, 16, 5, 29, 5, 32);  // 420
     }
 
     @Test
@@ -163,8 +163,8 @@
     {
         IVariableNode node = getField("static const foo;");
         asBlockWalker.visitVariable(node);
-        ///**\n * @const\n * @type {*}\n */\nRoyaleTest_A.foo
-        assertMapping(node, 0, 13, 4, 0, 4, 16);  // foo
+        ///**\n * @package\n * @const\n * @type {*}\n */\nRoyaleTest_A.foo
+        assertMapping(node, 0, 13, 5, 0, 5, 16);  // foo
     }
 
     @Test
@@ -172,8 +172,8 @@
     {
         IVariableNode node = getField("static const foo:int;");
         asBlockWalker.visitVariable(node);
-        ///**\n * @const\n * @type {number}\n */\nRoyaleTest_A.foo = 0
-        assertMapping(node, 0, 13, 4, 0, 4, 16);  // foo
+        ///**\n * @package\n * @const\n * @type {number}\n */\nRoyaleTest_A.foo = 0
+        assertMapping(node, 0, 13, 5, 0, 5, 16);  // foo
     }
 
     @Test
@@ -181,10 +181,10 @@
     {
         IVariableNode node = getField("static const foo = 420;");
         asBlockWalker.visitVariable(node);
-        ///**\n * @const\n * @type {*}\n */\nRoyaleTest_A.foo = 420
-        assertMapping(node, 0, 13, 4, 0, 4, 16);  // foo
-        assertMapping(node, 0, 16, 4, 16, 4, 19);  // =
-        assertMapping(node, 0, 19, 4, 19, 4, 22);  // 420
+        ///**\n * @package\n * @const\n * @type {*}\n */\nRoyaleTest_A.foo = 420
+        assertMapping(node, 0, 13, 5, 0, 5, 16);  // foo
+        assertMapping(node, 0, 16, 5, 16, 5, 19);  // =
+        assertMapping(node, 0, 19, 5, 19, 5, 22);  // 420
     }
 
     @Test
@@ -192,10 +192,10 @@
     {
         IVariableNode node = getField("static const foo:int = 420;");
         asBlockWalker.visitVariable(node);
-        ///**\n * @export\n * @const\n * @type {number}\n */\nRoyaleTest_A.foo = 420
-        assertMapping(node, 0, 13, 4, 0, 4, 16);  // foo
-        assertMapping(node, 0, 20, 4, 16, 4, 19);  // =
-        assertMapping(node, 0, 23, 4, 19, 4, 22);  // 420
+        ///**\n * @package\n * @const\n * @type {number}\n */\nRoyaleTest_A.foo = 420
+        assertMapping(node, 0, 13, 5, 0, 5, 16);  // foo
+        assertMapping(node, 0, 20, 5, 16, 5, 19);  // =
+        assertMapping(node, 0, 23, 5, 19, 5, 22);  // 420
     }
 
     protected IBackend createBackend()
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/sourcemaps/TestSourceMapMXMLScript.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/sourcemaps/TestSourceMapMXMLScript.java
index edf8c4f..6416831 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/sourcemaps/TestSourceMapMXMLScript.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/sourcemaps/TestSourceMapMXMLScript.java
@@ -44,8 +44,8 @@
         String definitionName = definition.getQualifiedName();
         assertTrue(definitionName.startsWith(getClass().getSimpleName()));
         int endColumn = definitionName.length() + 14;
-        ///**\n * @export\n * @type {*}\n */\nRoyaleTest_A.prototype.foo
-        assertMapping(node, 0, 4, 42, 0, 42, endColumn);  // foo
+        ///**\n * @package\n * @type {*}\n */\nRoyaleTest_A.prototype.foo
+        assertMapping(node, 0, 4, 43, 0, 43, endColumn);  // foo
     }
 
     @Test
