You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2016/01/26 01:37:02 UTC

[2/4] git commit: [flex-falcon] [refs/heads/develop] - first attempt at outputting reflection info. Needs improvement around static vs instance data

first attempt at outputting reflection info.  Needs improvement around static vs instance data


Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/e1c69a7d
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/e1c69a7d
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/e1c69a7d

Branch: refs/heads/develop
Commit: e1c69a7d6d5ed1d10fe41da4be4954058f4a056e
Parents: 6bd08f1
Author: Alex Harui <ah...@apache.org>
Authored: Sat Jan 23 22:28:23 2016 -0800
Committer: Alex Harui <ah...@apache.org>
Committed: Mon Jan 25 16:19:11 2016 -0800

----------------------------------------------------------------------
 .../codegen/js/flexjs/TestFlexJSEmiter.java     | 183 +++++-
 .../codegen/js/flexjs/TestFlexJSPackage.java    | 555 ++++++++++++++++++-
 .../codegen/js/flexjs/TestFlexJSStatements.java |  26 +-
 .../mxml/flexjs/TestFlexJSMXMLScript.java       | 159 +++++-
 .../flexjs/files/FlexJSTest_again_result.js     |  27 +
 .../flexjs/files/LocalFunction_result.js        |  26 +
 .../flexjs/files/MyInitialView_result.js        |  44 ++
 .../files/controllers/MyController_result.js    |  26 +
 .../flexjs/files/models/MyModel_result.js       |  28 +
 .../flexjs/files/wildcard_import_result.js      |  24 +
 .../flexjs/projects/circular/Base_result.js     |  25 +
 .../flexjs/projects/circular/Super_result.js    |  25 +
 .../flexjs/projects/interfaces/Test_result.js   |  26 +
 .../projects/interfaces/classes/A_result.js     |  25 +
 .../projects/interfaces/classes/B_result.js     |  25 +
 .../projects/interfaces/classes/C_result.js     |  25 +
 .../projects/interfaces/interfaces/IA_result.js |  24 +
 .../projects/interfaces/interfaces/IC_result.js |  24 +
 .../projects/interfaces/interfaces/ID_result.js |  24 +
 .../projects/interfaces/interfaces/IE_result.js |  26 +
 .../DifferentPackageAsConflict_result.js        |  26 +-
 .../Event_result.js                             |  25 +
 .../mypackage/TestClass_result.js               |  25 +
 .../otherpackage/Event_result.js                |  25 +
 .../Event_result.js                             |  25 +
 .../NoConflictNoWindow_result.js                |  26 +-
 .../mypackage/TestClass_result.js               |  25 +
 .../Event_result.js                             |  25 +
 .../NoConflictUseWindow_result.js               |  26 +-
 .../mypackage/TestClass_result.js               |  25 +
 .../Event_result.js                             |  25 +
 .../SamePackageAsConflict_result.js             |  26 +-
 .../mypackage/Event_result.js                   |  25 +
 .../mypackage/TestClass_result.js               |  25 +
 .../Event_result.js                             |  25 +
 .../UseWindow_result.js                         |  26 +-
 .../mypackage/TestClass_result.js               |  25 +
 .../otherpackage/Event_result.js                |  25 +
 .../flexjs/projects/super/Base_result.js        |  26 +
 .../flexjs/projects/super/Super_result.js       |  26 +
 .../internal/codegen/js/JSSessionModel.java     |  24 +
 .../codegen/js/flexjs/JSFlexJSEmitter.java      |   8 +-
 .../js/flexjs/JSFlexJSEmitterTokens.java        |   1 +
 .../internal/codegen/js/jx/MethodEmitter.java   |   2 +
 .../codegen/js/jx/PackageFooterEmitter.java     | 460 ++++++++++++++-
 .../codegen/js/jx/VarDeclarationEmitter.java    |   2 +
 .../codegen/mxml/flexjs/MXMLFlexJSEmitter.java  | 135 ++++-
 47 files changed, 2460 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSEmiter.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSEmiter.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSEmiter.java
index c6aea33..d441a8e 100644
--- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSEmiter.java
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSEmiter.java
@@ -56,7 +56,88 @@ public class TestFlexJSEmiter extends TestGoogEmiter
                 + "return \"Don't \" + _privateVar + value; }";
         IFileNode node = compileAS(code);
         asBlockWalker.visitFile(node);
-        assertOutWithMetadata("/**\n * com.example.components.MyEventTarget\n *\n * @fileoverview\n *\n * @suppress {checkTypes|accessControls}\n */\n\ngoog.provide('com.example.components.MyEventTarget');\n\n\n\n/**\n * @constructor\n * @extends {goog.events.EventTarget}\n */\ncom.example.components.MyEventTarget = function() {\n  com.example.components.MyEventTarget.base(this, 'constructor');\n  if (foo() != 42) {\n    bar();\n  }\n};\ngoog.inherits(com.example.components.MyEventTarget, goog.events.EventTarget);\n\n\n/**\n * @private\n * @type {string}\n */\ncom.example.components.MyEventTarget.prototype._privateVar = \"do \";\n\n\n/**\n * @export\n * @type {number}\n */\ncom.example.components.MyEventTarget.prototype.publicProperty = 100;\n\n\n/**\n * @export\n * @param {string} value\n * @return {string}\n */\ncom.example.components.MyEventTarget.prototype.myFunction = function(value) {\n  return \"Don't \" + this._privateVar + value;\n};\n\n\n/**\n * Metadata\n *\n * @type {Obj
 ect.<string, Array.<Object>>}\n */\ncom.example.components.MyEventTarget.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'MyEventTarget', qName: 'com.example.components.MyEventTarget'}] };\n");
+	        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" +
+        		"\n" +
+        		"\n" +
+        		"/**\n" +
+        		" * @constructor\n" +
+        		" * @extends {goog.events.EventTarget}\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, goog.events.EventTarget);\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.FLEXJS_CLASS_INFO = { names: [{ name: 'MyEventTarget', qName: 'com.example.components.MyEventTarget'}] };\n" +
+          		"\n" +
+        		"\n" +
+        		"\n" +
+        		"/**\n" +
+        		" * Reflection\n" +
+        		" *\n" +
+        		" * @return {Object.<string, Function>}\n" +
+        		" */\n" +
+        		"com.example.components.MyEventTarget.prototype.FLEXJS_REFLECTION_INFO = function () {\n" +
+        		"  return {\n" +
+        		"    variables: function () {\n" +
+        		"      return {\n" +
+        		"        'publicProperty': { type: 'Number'}\n" +
+        		"      };\n" + 
+        		"    },\n" +
+        		"    accessors: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" +
+        		"    },\n" +
+        		"    methods: function () {\n" +
+        		"      return {\n" +
+        		"        'MyEventTarget': { type: '', declaredBy: 'com.example.components.MyEventTarget'},\n" +
+        		"        'myFunction': { type: 'String', declaredBy: 'com.example.components.MyEventTarget'}\n" +
+        		"      };\n" +
+        		"    }\n" +
+        		"  };\n" +
+        		"};\n");
     }
 
     @Override
@@ -67,7 +148,54 @@ public class TestFlexJSEmiter extends TestGoogEmiter
                 + "public interface TestInterface { } }";
         IFileNode node = compileAS(code);
         asBlockWalker.visitFile(node);
-        assertOutWithMetadata("/**\n * com.example.components.TestInterface\n *\n * @fileoverview\n *\n * @suppress {checkTypes|accessControls}\n */\n\ngoog.provide('com.example.components.TestInterface');\n\n\n\n/**\n * @interface\n */\ncom.example.components.TestInterface = function() {\n};\n\n\n/**\n * Metadata\n *\n * @type {Object.<string, Array.<Object>>}\n */\ncom.example.components.TestInterface.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'TestInterface', qName: 'com.example.components.TestInterface'}] };\n");
+        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" +
+        		"\n" +
+        		"/**\n" +
+        		" * Metadata\n" +
+        		" *\n" +
+        		" * @type {Object.<string, Array.<Object>>}\n" +
+        		" */\n" +
+        		"com.example.components.TestInterface.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'TestInterface', qName: 'com.example.components.TestInterface'}] };\n" +
+          		"\n" +
+        		"\n" +
+        		"\n" +
+        		"/**\n" +
+        		" * Reflection\n" +
+        		" *\n" +
+        		" * @return {Object.<string, Function>}\n" +
+        		" */\n" +
+        		"com.example.components.TestInterface.prototype.FLEXJS_REFLECTION_INFO = function () {\n" +
+        		"  return {\n" +
+        		"    variables: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" + 
+        		"    },\n" +
+        		"    accessors: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" +
+        		"    },\n" +
+        		"    methods: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" +
+        		"    }\n" +
+        		"  };\n" +
+        		"};\n");
     }
 
     @Override
@@ -78,8 +206,57 @@ public class TestFlexJSEmiter extends TestGoogEmiter
                 + "public class TestClass { } }";
         IFileNode node = compileAS(code);
         asBlockWalker.visitFile(node);
-        assertOutWithMetadata("/**\n * com.example.components.TestClass\n *\n * @fileoverview\n *\n * @suppress {checkTypes|accessControls}\n */\n\ngoog.provide('com.example.components.TestClass');\n\n\n\n/**\n * @constructor\n */\ncom.example.components.TestClass = function() {\n};\n\n\n/**\n * Metadata\n *\n * @type {Object.<string, Array.<Object>>}\n */\ncom.example.components.TestClass.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'TestClass', qName: 'com.example.components.TestClass'}] };\n");
+        assertOutWithMetadata("/**\n" +
+        		" * com.example.components.TestClass\n" +
+        		" *\n" +
+        		" * @fileoverview\n" +
+        		" *\n" +
+        		" * @suppress {checkTypes|accessControls}\n" +
+        		" */\n" +
+        		"\n" +
+        		"goog.provide('com.example.components.TestClass');\n" +
+        		"\n" +
+        		"\n" +
+        		"\n" +
+        		"/**\n" +
+        		" * @constructor\n" +
+        		" */\n" +
+        		"com.example.components.TestClass = function() {\n" +
+        		"};\n" +
+        		"\n" +
+        		"\n" +
+        		"/**\n" +
+        		" * Metadata\n" +
+        		" *\n" +
+        		" * @type {Object.<string, Array.<Object>>}\n" +
+        		" */\n" +
+        		"com.example.components.TestClass.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'TestClass', qName: 'com.example.components.TestClass'}] };\n" +
+          		"\n" +
+        		"\n" +
+        		"\n" +
+        		"/**\n" +
+        		" * Reflection\n" +
+        		" *\n" +
+        		" * @return {Object.<string, Function>}\n" +
+        		" */\n" +
+        		"com.example.components.TestClass.prototype.FLEXJS_REFLECTION_INFO = function () {\n" +
+        		"  return {\n" +
+        		"    variables: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" + 
+        		"    },\n" +
+        		"    accessors: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" +
+        		"    },\n" +
+        		"    methods: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" +
+        		"    }\n" +
+        		"  };\n" +
+        		"};\n");
     }
+    
 
     @Override
     @Test

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java
index 3d9fe41..eaf24e6 100644
--- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java
@@ -55,7 +55,55 @@ public class TestFlexJSPackage extends TestGoogPackage
 
         IFileNode node = compileAS("package {public class A{}}");
         asBlockWalker.visitFile(node);
-        assertOutWithMetadata("/**\n * A\n *\n * @fileoverview\n *\n * @suppress {checkTypes|accessControls}\n */\n\ngoog.provide('A');\n\n\n\n/**\n * @constructor\n */\nA = function() {\n};\n\n\n/**\n * Metadata\n *\n * @type {Object.<string, Array.<Object>>}\n */\nA.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'A', qName: 'A'}] };\n");
+        assertOutWithMetadata("/**\n" +
+        		" * A\n" +
+        		" *\n" +
+        		" * @fileoverview\n" +
+        		" *\n" +
+        		" * @suppress {checkTypes|accessControls}\n" +
+        		" */\n" +
+        		"\n" +
+        		"goog.provide('A');\n" +
+        		"\n" +
+        		"\n" +
+        		"\n" +
+        		"/**\n" +
+        		" * @constructor\n" +
+        		" */\n" +
+        		"A = function() {\n" +
+        		"};\n" +
+        		"\n" +
+        		"\n" +
+        		"/**\n" +
+        		" * Metadata\n" +
+        		" *\n" +
+        		" * @type {Object.<string, Array.<Object>>}\n" +
+        		" */\n" +
+        		"A.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'A', qName: 'A'}] };\n" +
+        		"\n" +
+        		"\n" +
+        		"\n" +
+        		"/**\n" +
+        		" * Reflection\n" +
+        		" *\n" +
+        		" * @return {Object.<string, Function>}\n" +
+        		" */\n" +
+        		"A.prototype.FLEXJS_REFLECTION_INFO = function () {\n" +
+        		"  return {\n" +
+        		"    variables: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" + 
+        		"    },\n" +
+        		"    accessors: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" +
+        		"    },\n" +
+        		"    methods: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" +
+        		"    }\n" + 
+        		"  };\n" +
+        		"};\n");
     }
 
     @Override
@@ -64,7 +112,55 @@ public class TestFlexJSPackage extends TestGoogPackage
     {
         IFileNode node = compileAS("package foo.bar.baz {public class A{}}");
         asBlockWalker.visitFile(node);
-        assertOutWithMetadata("/**\n * foo.bar.baz.A\n *\n * @fileoverview\n *\n * @suppress {checkTypes|accessControls}\n */\n\ngoog.provide('foo.bar.baz.A');\n\n\n\n/**\n * @constructor\n */\nfoo.bar.baz.A = function() {\n};\n\n\n/**\n * Metadata\n *\n * @type {Object.<string, Array.<Object>>}\n */\nfoo.bar.baz.A.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'A', qName: 'foo.bar.baz.A'}] };\n");
+        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" +
+        		" * Metadata\n" +
+        		" *\n" +
+        		" * @type {Object.<string, Array.<Object>>}\n" +
+        		" */\n" +
+        		"foo.bar.baz.A.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'A', qName: 'foo.bar.baz.A'}] };\n" +
+        		"\n" +
+        		"\n" +
+        		"\n" +
+        		"/**\n" +
+        		" * Reflection\n" +
+        		" *\n" +
+        		" * @return {Object.<string, Function>}\n" +
+        		" */\n" +
+        		"foo.bar.baz.A.prototype.FLEXJS_REFLECTION_INFO = function () {\n" +
+        		"  return {\n" +
+        		"    variables: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" + 
+        		"    },\n" +
+        		"    accessors: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" +
+        		"    },\n" +
+        		"    methods: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" +
+        		"    }\n" + 
+        		"  };\n" +
+        		"};\n");
     }
 
     @Override
@@ -73,7 +169,56 @@ public class TestFlexJSPackage 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\ngoog.provide('foo.bar.baz.A');\n\n\n\n/**\n * @constructor\n */\nfoo.bar.baz.A = function() {\n};\n\n\n/**\n * Metadata\n *\n * @type {Object.<string, Array.<Object>>}\n */\nfoo.bar.baz.A.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'A', qName: 'foo.bar.baz.A'}] };\n");
+        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" +
+        		" * Metadata\n" +
+        		" *\n" +
+        		" * @type {Object.<string, Array.<Object>>}\n" +
+        		" */\n" +
+        		"foo.bar.baz.A.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'A', qName: 'foo.bar.baz.A'}] };\n" +
+        		"\n" +
+        		"\n" +
+        		"\n" +
+        		"/**\n" +
+        		" * Reflection\n" +
+        		" *\n" +
+        		" * @return {Object.<string, Function>}\n" +
+        		" */\n" +
+        		"foo.bar.baz.A.prototype.FLEXJS_REFLECTION_INFO = function () {\n" +
+        		"  return {\n" +
+        		"    variables: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" + 
+        		"    },\n" +
+        		"    accessors: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" +
+        		"    },\n" +
+        		"    methods: function () {\n" +
+        		"      return {\n" +
+        		"        'A': { type: '', declaredBy: 'foo.bar.baz.A'}\n" +
+        		"      };\n" +
+        		"    }\n" + 
+        		"  };\n" +
+        		"};\n");
     }
 
     @Override
@@ -82,7 +227,119 @@ public class TestFlexJSPackage 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\ngoog.provide('foo.bar.baz.A');\n\n\n\n/**\n * @constructor\n */\nfoo.bar.baz.A = function() {\n  if (a) {\n    for (var /** @type {Object} */ i in obj) {\n      doit();\n    }\n  }\n};\n\n\n/**\n * Metadata\n *\n * @type {Object.<string, Array.<Object>>}\n */\nfoo.bar.baz.A.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'A', qName: 'foo.bar.baz.A'}] };\n");
+        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" +
+        		" * Metadata\n" +
+        		" *\n" +
+        		" * @type {Object.<string, Array.<Object>>}\n" +
+        		" */\n" +
+        		"foo.bar.baz.A.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'A', qName: 'foo.bar.baz.A'}] };\n" +
+        		"\n" +
+        		"\n" +
+        		"\n" +
+        		"/**\n" +
+        		" * Reflection\n" +
+        		" *\n" +
+        		" * @return {Object.<string, Function>}\n" +
+        		" */\n" +
+        		"foo.bar.baz.A.prototype.FLEXJS_REFLECTION_INFO = function () {\n" +
+        		"  return {\n" +
+        		"    variables: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" + 
+        		"    },\n" +
+        		"    accessors: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" +
+        		"    },\n" +
+        		"    methods: function () {\n" +
+        		"      return {\n" +
+        		"        'A': { type: '', declaredBy: 'foo.bar.baz.A'}\n" +
+        		"      };\n" +
+        		"    }\n" + 
+        		"  };\n" +
+        		"};\n");
+    }
+
+    @Test
+    public void testPackageQualified_ClassBodyMetaData()
+    {
+        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" +
+        		" * Metadata\n" +
+        		" *\n" +
+        		" * @type {Object.<string, Array.<Object>>}\n" +
+        		" */\n" +
+        		"foo.bar.baz.A.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'A', qName: 'foo.bar.baz.A'}] };\n" +
+        		"\n" +
+        		"\n" +
+        		"\n" +
+        		"/**\n" +
+        		" * Reflection\n" +
+        		" *\n" +
+        		" * @return {Object.<string, Function>}\n" +
+        		" */\n" +
+        		"foo.bar.baz.A.prototype.FLEXJS_REFLECTION_INFO = function () {\n" +
+        		"  return {\n" +
+        		"    variables: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" + 
+        		"    },\n" +
+        		"    accessors: function () {\n" +
+        		"      return {\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");
     }
 
     @Test
@@ -123,6 +380,31 @@ public class TestFlexJSPackage extends TestGoogPackage
         		  " * @type {Object.<string, Array.<Object>>}\n" +
         		  " */\n" +
         		  "foo.bar.baz.A.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'A', qName: 'foo.bar.baz.A'}] };\n" +
+          		"\n" +
+        		"\n" +
+        		"\n" +
+        		"/**\n" +
+        		" * Reflection\n" +
+        		" *\n" +
+        		" * @return {Object.<string, Function>}\n" +
+        		" */\n" +
+        		"foo.bar.baz.A.prototype.FLEXJS_REFLECTION_INFO = function () {\n" +
+        		"  return {\n" +
+        		"    variables: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" + 
+        		"    },\n" +
+        		"    accessors: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" +
+        		"    },\n" +
+        		"    methods: function () {\n" +
+        		"      return {\n" +
+        		"        'A': { type: '', declaredBy: 'foo.bar.baz.A'}\n" +
+        		"      };\n" +
+        		"    }\n" +
+        		"  };\n" +
+        		"};\n" +
         		  "\n" +
         		  "\n" +
         		  "\n" +
@@ -138,7 +420,32 @@ public class TestFlexJSPackage extends TestGoogPackage
         		  " *\n" +
         		  " * @type {Object.<string, Array.<Object>>}\n" +
         		  " */\n" +
-        		  "foo.bar.baz.A.InternalClass.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'InternalClass', qName: 'foo.bar.baz.A.InternalClass'}] };\n");
+        		  "foo.bar.baz.A.InternalClass.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'InternalClass', qName: 'foo.bar.baz.A.InternalClass'}] };\n" +
+          		"\n" +
+        		"\n" +
+        		"\n" +
+        		"/**\n" +
+        		" * Reflection\n" +
+        		" *\n" +
+        		" * @return {Object.<string, Function>}\n" +
+        		" */\n" +
+        		"foo.bar.baz.A.InternalClass.prototype.FLEXJS_REFLECTION_INFO = function () {\n" +
+        		"  return {\n" +
+        		"    variables: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" + 
+        		"    },\n" +
+        		"    accessors: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" +
+        		"    },\n" +
+        		"    methods: function () {\n" +
+        		"      return {\n" +
+        		"        'InternalClass': { type: '', declaredBy: 'foo.bar.baz.A.InternalClass'}\n" +
+        		"      };\n" +
+        		"    }\n" +
+        		"  };\n" +
+        		"};\n");
     }
 
 	@Test
@@ -177,6 +484,31 @@ public class TestFlexJSPackage extends TestGoogPackage
 				" * @type {Object.<string, Array.<Object>>}\n" +
 				" */\n" +
 				"foo.bar.baz.A.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'A', qName: 'foo.bar.baz.A'}] };\n" +
+          		"\n" +
+        		"\n" +
+        		"\n" +
+        		"/**\n" +
+        		" * Reflection\n" +
+        		" *\n" +
+        		" * @return {Object.<string, Function>}\n" +
+        		" */\n" +
+        		"foo.bar.baz.A.prototype.FLEXJS_REFLECTION_INFO = function () {\n" +
+        		"  return {\n" +
+        		"    variables: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" + 
+        		"    },\n" +
+        		"    accessors: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" +
+        		"    },\n" +
+        		"    methods: function () {\n" +
+        		"      return {\n" +
+        		"        'A': { type: '', declaredBy: 'foo.bar.baz.A'}\n" +
+        		"      };\n" +
+        		"    }\n" +
+        		"  };\n" +
+        		"};\n" +
 				"\n" +
 				"\n" +
 				"\n" +
@@ -220,6 +552,31 @@ public class TestFlexJSPackage extends TestGoogPackage
 				" * @type {Object.<string, Array.<Object>>}\n" +
 				" */\n" +
 				"foo.bar.baz.A.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'A', qName: 'foo.bar.baz.A'}] };\n" +
+          		"\n" +
+        		"\n" +
+        		"\n" +
+        		"/**\n" +
+        		" * Reflection\n" +
+        		" *\n" +
+        		" * @return {Object.<string, Function>}\n" +
+        		" */\n" +
+        		"foo.bar.baz.A.prototype.FLEXJS_REFLECTION_INFO = function () {\n" +
+        		"  return {\n" +
+        		"    variables: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" + 
+        		"    },\n" +
+        		"    accessors: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" +
+        		"    },\n" +
+        		"    methods: function () {\n" +
+        		"      return {\n" +
+        		"        'A': { type: '', declaredBy: 'foo.bar.baz.A'}\n" +
+        		"      };\n" +
+        		"    }\n" +
+        		"  };\n" +
+        		"};\n" +
 				"\n" +
 				"\n" +
 				"\n" +
@@ -278,6 +635,31 @@ public class TestFlexJSPackage extends TestGoogPackage
         		  " * @type {Object.<string, Array.<Object>>}\n" +
         		  " */\n" +
         		  "foo.bar.baz.A.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'A', qName: 'foo.bar.baz.A'}] };\n" +
+            		"\n" +
+            		"\n" +
+            		"\n" +
+            		"/**\n" +
+            		" * Reflection\n" +
+            		" *\n" +
+            		" * @return {Object.<string, Function>}\n" +
+            		" */\n" +
+            		"foo.bar.baz.A.prototype.FLEXJS_REFLECTION_INFO = function () {\n" +
+            		"  return {\n" +
+            		"    variables: function () {\n" +
+            		"      return {\n" +
+            		"      };\n" + 
+            		"    },\n" +
+            		"    accessors: function () {\n" +
+            		"      return {\n" +
+            		"      };\n" +
+            		"    },\n" +
+            		"    methods: function () {\n" +
+            		"      return {\n" +
+            		"        'A': { type: '', declaredBy: 'foo.bar.baz.A'}\n" +
+            		"      };\n" +
+            		"    }\n" +
+            		"  };\n" +
+            		"};\n" +
         		  "\n" +
         		  "\n" +
         		  "\n" +
@@ -318,7 +700,35 @@ public class TestFlexJSPackage extends TestGoogPackage
         		  " *\n" +
         		  " * @type {Object.<string, Array.<Object>>}\n" +
         		  " */\n" +
-        		  "foo.bar.baz.A.InternalClass.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'InternalClass', qName: 'foo.bar.baz.A.InternalClass'}] };\n");
+        		  "foo.bar.baz.A.InternalClass.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'InternalClass', qName: 'foo.bar.baz.A.InternalClass'}] };\n" +
+          		"\n" +
+        		"\n" +
+        		"\n" +
+        		"/**\n" +
+        		" * Reflection\n" +
+        		" *\n" +
+        		" * @return {Object.<string, Function>}\n" +
+        		" */\n" +
+        		"foo.bar.baz.A.InternalClass.prototype.FLEXJS_REFLECTION_INFO = function () {\n" +
+        		"  return {\n" +
+        		"    variables: function () {\n" +
+        		"      return {\n" +
+        		"        'someString': { type: 'String'}\n" +
+        		"      };\n" + 
+        		"    },\n" +
+        		"    accessors: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" +
+        		"    },\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");
     }
     
     @Test
@@ -384,6 +794,32 @@ public class TestFlexJSPackage extends TestGoogPackage
         		  " * @type {Object.<string, Array.<Object>>}\n" +
         		  " */\n" +
         		  "foo.bar.baz.A.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'A', qName: 'foo.bar.baz.A'}] };\n" +
+            		"\n" +
+            		"\n" +
+            		"\n" +
+            		"/**\n" +
+            		" * Reflection\n" +
+            		" *\n" +
+            		" * @return {Object.<string, Function>}\n" +
+            		" */\n" +
+            		"foo.bar.baz.A.prototype.FLEXJS_REFLECTION_INFO = function () {\n" +
+            		"  return {\n" +
+            		"    variables: function () {\n" +
+            		"      return {\n" +
+            		"      };\n" + 
+            		"    },\n" +
+            		"    accessors: function () {\n" +
+            		"      return {\n" +
+            		"        'myString': { type: 'String', 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" +
@@ -410,7 +846,33 @@ public class TestFlexJSPackage extends TestGoogPackage
         		  " *\n" +
         		  " * @type {Object.<string, Array.<Object>>}\n" +
         		  " */\n" +
-        		  "foo.bar.baz.A.InternalClass.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'InternalClass', qName: 'foo.bar.baz.A.InternalClass'}] };\n");
+        		  "foo.bar.baz.A.InternalClass.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'InternalClass', qName: 'foo.bar.baz.A.InternalClass'}] };\n" +
+          		"\n" +
+        		"\n" +
+        		"\n" +
+        		"/**\n" +
+        		" * Reflection\n" +
+        		" *\n" +
+        		" * @return {Object.<string, Function>}\n" +
+        		" */\n" +
+        		"foo.bar.baz.A.InternalClass.prototype.FLEXJS_REFLECTION_INFO = function () {\n" +
+        		"  return {\n" +
+        		"    variables: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" + 
+        		"    },\n" +
+        		"    accessors: function () {\n" +
+        		"      return {\n" +
+        		"        'someString': { type: 'String', 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");
     }
     
     @Test
@@ -459,6 +921,31 @@ public class TestFlexJSPackage extends TestGoogPackage
         		  " * @type {Object.<string, Array.<Object>>}\n" +
         		  " */\n" +
         		  "foo.bar.baz.A.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'A', qName: 'foo.bar.baz.A'}] };\n" +
+            		"\n" +
+            		"\n" +
+            		"\n" +
+            		"/**\n" +
+            		" * Reflection\n" +
+            		" *\n" +
+            		" * @return {Object.<string, Function>}\n" +
+            		" */\n" +
+            		"foo.bar.baz.A.prototype.FLEXJS_REFLECTION_INFO = function () {\n" +
+            		"  return {\n" +
+            		"    variables: function () {\n" +
+            		"      return {\n" +
+            		"      };\n" + 
+            		"    },\n" +
+            		"    accessors: function () {\n" +
+            		"      return {\n" +
+            		"      };\n" +
+            		"    },\n" +
+            		"    methods: function () {\n" +
+            		"      return {\n" +
+            		"        'A': { type: '', declaredBy: 'foo.bar.baz.A'}\n" +
+            		"      };\n" +
+            		"    }\n" +
+            		"  };\n" +
+            		"};\n" +
         		  "\n" +
         		  "\n" +
         		  "\n" +
@@ -477,6 +964,31 @@ public class TestFlexJSPackage extends TestGoogPackage
         		  " * @type {Object.<string, Array.<Object>>}\n" +
         		  " */\n" +
         		  "foo.bar.baz.A.ITestInterface.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'ITestInterface', qName: 'foo.bar.baz.A.ITestInterface'}] };\n" +
+          		"\n" +
+        		"\n" +
+        		"\n" +
+        		"/**\n" +
+        		" * Reflection\n" +
+        		" *\n" +
+        		" * @return {Object.<string, Function>}\n" +
+        		" */\n" +
+        		"foo.bar.baz.A.ITestInterface.prototype.FLEXJS_REFLECTION_INFO = function () {\n" +
+        		"  return {\n" +
+        		"    variables: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" + 
+        		"    },\n" +
+        		"    accessors: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" +
+        		"    },\n" +
+        		"    methods: function () {\n" +
+        		"      return {\n" +
+        		"        'test': { type: 'void', declaredBy: 'foo.bar.baz.A.ITestInterface'}\n" +
+        		"      };\n" +
+        		"    }\n" +
+        		"  };\n" +
+        		"};\n" +
         		  "\n" +
         		  "\n" +
         		  "\n" +
@@ -500,7 +1012,34 @@ public class TestFlexJSPackage extends TestGoogPackage
         		  " *\n" +
         		  " * @type {Object.<string, Array.<Object>>}\n" +
         		  " */\n" +
-        		  "foo.bar.baz.A.InternalClass.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'InternalClass', qName: 'foo.bar.baz.A.InternalClass'}], interfaces: [foo.bar.baz.A.ITestInterface] };\n");
+        		  "foo.bar.baz.A.InternalClass.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'InternalClass', qName: 'foo.bar.baz.A.InternalClass'}], 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.FLEXJS_REFLECTION_INFO = function () {\n" +
+            		"  return {\n" +
+            		"    variables: function () {\n" +
+            		"      return {\n" +
+            		"      };\n" + 
+            		"    },\n" +
+            		"    accessors: function () {\n" +
+            		"      return {\n" +
+            		"      };\n" +
+            		"    },\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"
+        		  );
     }
 
 	@Test

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSStatements.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSStatements.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSStatements.java
index d2ba448..bc18b4d 100644
--- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSStatements.java
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSStatements.java
@@ -548,7 +548,31 @@ public class TestFlexJSStatements extends TestGoogStatements
         		              " *\n" +
         		              " * @type {Object.<string, Array.<Object>>}\n" +
         		              " */\n" +
-        		              "FalconTest_A.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'FalconTest_A', qName: 'FalconTest_A'}] };\n");
+        		              "FalconTest_A.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'FalconTest_A', qName: 'FalconTest_A'}] };\n" +
+        		          		"\n" +
+        		        		"\n" +
+        		        		"\n" +
+        		        		"/**\n" +
+        		        		" * Reflection\n" +
+        		        		" *\n" +
+        		        		" * @return {Object.<string, Function>}\n" +
+        		        		" */\n" +
+        		        		"FalconTest_A.prototype.FLEXJS_REFLECTION_INFO = function () {\n" +
+        		        		"return {\n" +
+        		        		"  variables: function () {\n" +
+        		        		"    return {\n" +
+        		        		"    };\n" + 
+        		        		"  },\n" +
+        		        		"  accessors: function () {\n" +
+        		        		"    return {\n" +
+        		        		"    };\n" +
+        		        		"  },\n" +
+        		        		"  methods: function () {\n" +
+        		        		"    return {\n" +
+        		        		"    };\n" +
+        		        		"  }\n" +
+        		        		"};\n" +
+        		        		"};\n");
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/TestFlexJSMXMLScript.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/TestFlexJSMXMLScript.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/TestFlexJSMXMLScript.java
index 6b50135..ca6542d 100644
--- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/TestFlexJSMXMLScript.java
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/TestFlexJSMXMLScript.java
@@ -43,7 +43,85 @@ public class TestFlexJSMXMLScript extends FlexJSTestBase
         ((JSFlexJSEmitter)(mxmlBlockWalker.getASEmitter())).getModel().setCurrentClass(dnode.getDefinition());
         mxmlBlockWalker.visitDocument(dnode);
         String appName = dnode.getQualifiedName();
-        String outTemplate = "/**\n * AppName\n *\n * @fileoverview\n *\n * @suppress {checkTypes|accessControls}\n */\n\ngoog.provide('AppName');\n\ngoog.require('org.apache.flex.core.Application');\n\n\n\n\n/**\n * @constructor\n * @extends {org.apache.flex.core.Application}\n */\nAppName = function() {\n  AppName.base(this, 'constructor');\n  \n  /**\n   * @private\n   * @type {Array}\n   */\n  this.mxmldd;\n  \n  /**\n   * @private\n   * @type {Array}\n   */\n  this.mxmldp;\n};\ngoog.inherits(AppName, org.apache.flex.core.Application);\n\n\n/**\n * Metadata\n *\n * @type {Object.<string, Array.<Object>>}\n */\nAppName.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'AppName', qName: 'AppName' }] };\n\n\n/**\n * @export\n * @override\n */\nAppName.prototype.addedToParent = function() {\n  AppName.base(this, 'addedToParent');\n};\n\n\n";
+        String outTemplate = "/**\n" +
+        		" * AppName\n" +
+        		" *\n" +
+        		" * @fileoverview\n" +
+        		" *\n" +
+        		" * @suppress {checkTypes|accessControls}\n" +
+        		" */\n" +
+        		"\n" +
+        		"goog.provide('AppName');\n" +
+        		"\n" +
+        		"goog.require('org.apache.flex.core.Application');\n" +
+        		"\n" +
+        		"\n" +
+        		"\n" +
+        		"\n" +
+        		"/**\n" +
+        		" * @constructor\n" +
+        		" * @extends {org.apache.flex.core.Application}\n" +
+        		" */\n" +
+        		"AppName = function() {\n" +
+        		"  AppName.base(this, 'constructor');\n" +
+        		"  \n" +
+        		"  /**\n" +
+        		"   * @private\n" +
+        		"   * @type {Array}\n" +
+        		"   */\n" +
+        		"  this.mxmldd;\n" +
+        		"  \n" +
+        		"  /**\n" +
+        		"   * @private\n" +
+        		"   * @type {Array}\n" +
+        		"   */\n" +
+        		"  this.mxmldp;\n" +
+        		"};\n" +
+        		"goog.inherits(AppName, org.apache.flex.core.Application);\n" +
+        		"\n" +
+        		"\n" +
+        		"/**\n" +
+        		" * Metadata\n" +
+        		" *\n" +
+        		" * @type {Object.<string, Array.<Object>>}\n" +
+        		" */\n" +
+        		"AppName.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'AppName', qName: 'AppName' }] };\n" +
+          		"\n" +
+        		"\n" +
+        		"\n" +
+        		"/**\n" +
+        		" * Reflection\n" +
+        		" *\n" +
+        		" * @return {Object.<string, Function>}\n" +
+        		" */\n" +
+        		"AppName.prototype.FLEXJS_REFLECTION_INFO = function () {\n" +
+        		"  return {\n" +
+        		"    variables: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" + 
+        		"    },\n" +
+        		"    accessors: function () {\n" +
+        		"      return {\n" +
+        		"        'addedToParent': { type: 'void', declaredBy: 'AppName'}\n" +
+        		"      };\n" +
+        		"    },\n" +
+        		"    methods: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" +
+        		"    }\n" +
+        		"  };\n" +
+        		"};\n" +
+        		"\n" +
+        		"\n" +
+        		"/**\n" +
+        		" * @export\n" +
+        		" * @override\n" +
+        		" */\n" +
+        		"AppName.prototype.addedToParent = function() {\n" +
+        		"  AppName.base(this, 'addedToParent');\n" +
+        		"};\n" +
+        		"\n" +
+        		"\n";
         	
         assertOutWithMetadata(outTemplate.replaceAll("AppName", appName));
     }
@@ -63,7 +141,84 @@ public class TestFlexJSMXMLScript extends FlexJSTestBase
         ((JSFlexJSEmitter)(mxmlBlockWalker.getASEmitter())).getModel().setCurrentClass(dnode.getDefinition());
         mxmlBlockWalker.visitDocument(dnode);
         String appName = dnode.getQualifiedName();
-        String outTemplate = "/**\n * AppName\n *\n * @fileoverview\n *\n * @suppress {checkTypes|accessControls}\n */\n\ngoog.provide('AppName');\n\ngoog.require('org.apache.flex.core.Application');\n\n\n\n\n/**\n * @constructor\n * @extends {org.apache.flex.core.Application}\n */\nAppName = function() {\n  AppName.base(this, 'constructor');\n  \n  this.foo = ['foo'];\n  /**\n   * @private\n   * @type {Array}\n   */\n  this.mxmldd;\n  \n  /**\n   * @private\n   * @type {Array}\n   */\n  this.mxmldp;\n};\ngoog.inherits(AppName, org.apache.flex.core.Application);\n\n\n/**\n * Metadata\n *\n * @type {Object.<string, Array.<Object>>}\n */\nAppName.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'AppName', qName: 'AppName' }] };\n\n\n/**\n * @export\n * @type {Array}\n */\nAppName.prototype.foo;\n\n\n";
+        String outTemplate = "/**\n" +
+        		" * AppName\n" +
+        		" *\n" +
+        		" * @fileoverview\n" +
+        		" *\n" +
+        		" * @suppress {checkTypes|accessControls}\n" +
+        		" */\n" +
+        		"\n" +
+        		"goog.provide('AppName');\n" +
+        		"\n" +
+        		"goog.require('org.apache.flex.core.Application');\n" +
+        		"\n" +
+        		"\n" +
+        		"\n" +
+        		"\n" +
+        		"/**\n" +
+        		" * @constructor\n" +
+        		" * @extends {org.apache.flex.core.Application}\n" +
+        		" */\n" +
+        		"AppName = function() {\n" +
+        		"  AppName.base(this, 'constructor');\n" +
+        		"  \n" +
+        		"  this.foo = ['foo'];\n" +
+        		"  /**\n" +
+        		"   * @private\n" +
+        		"   * @type {Array}\n" +
+        		"   */\n" +
+        		"  this.mxmldd;\n" +
+        		"  \n" +
+        		"  /**\n" +
+        		"   * @private\n" +
+        		"   * @type {Array}\n" +
+        		"   */\n" +
+        		"  this.mxmldp;\n" +
+        		"};\n" +
+        		"goog.inherits(AppName, org.apache.flex.core.Application);\n" +
+        		"\n" +
+        		"\n" +
+        		"/**\n" +
+        		" * Metadata\n" +
+        		" *\n" +
+        		" * @type {Object.<string, Array.<Object>>}\n" +
+        		" */\n" +
+        		"AppName.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'AppName', qName: 'AppName' }] };\n" +
+          		"\n" +
+        		"\n" +
+        		"\n" +
+        		"/**\n" +
+        		" * Reflection\n" +
+        		" *\n" +
+        		" * @return {Object.<string, Function>}\n" +
+        		" */\n" +
+        		"AppName.prototype.FLEXJS_REFLECTION_INFO = function () {\n" +
+        		"  return {\n" +
+        		"    variables: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" + 
+        		"    },\n" +
+        		"    accessors: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" +
+        		"    },\n" +
+        		"    methods: function () {\n" +
+        		"      return {\n" +
+        		"      };\n" +
+        		"    }\n" +
+        		"  };\n" +
+        		"};\n" +
+        		"\n" +
+        		"\n" +
+        		"/**\n" +
+        		" * @export\n" +
+        		" * @type {Array}\n" +
+        		" */\n" +
+        		"AppName.prototype.foo;\n" +
+        		"\n" +
+        		"\n" +
+        		"";
         	
         assertOutWithMetadata(outTemplate.replaceAll("AppName", appName));
     }

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/test-files/flexjs/files/FlexJSTest_again_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/files/FlexJSTest_again_result.js b/compiler.jx.tests/test-files/flexjs/files/FlexJSTest_again_result.js
index d729d0a..e2f657d 100644
--- a/compiler.jx.tests/test-files/flexjs/files/FlexJSTest_again_result.js
+++ b/compiler.jx.tests/test-files/flexjs/files/FlexJSTest_again_result.js
@@ -136,6 +136,33 @@ goog.inherits(FlexJSTest_again, org.apache.flex.core.Application);
 FlexJSTest_again.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'FlexJSTest_again', qName: 'FlexJSTest_again' }] };
 
 
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+FlexJSTest_again.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+        'service': { type: 'org.apache.flex.net.HTTPService', declaredBy: 'FlexJSTest_again'},
+        'collection': { type: 'org.apache.flex.collections.LazyCollection', declaredBy: 'FlexJSTest_again'}
+      };
+    },
+    methods: function () {
+      return {
+        '$EH0': { type: 'void', declaredBy: 'FlexJSTest_again'}
+      };
+    }
+  };
+};
+
+
 /**
  * @export
  * @param {org.apache.flex.events.Event} event

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/test-files/flexjs/files/LocalFunction_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/files/LocalFunction_result.js b/compiler.jx.tests/test-files/flexjs/files/LocalFunction_result.js
index 09f3245..78f5ba5 100644
--- a/compiler.jx.tests/test-files/flexjs/files/LocalFunction_result.js
+++ b/compiler.jx.tests/test-files/flexjs/files/LocalFunction_result.js
@@ -65,3 +65,29 @@ LocalFunction.prototype.doIt = function() {
  */
 LocalFunction.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'LocalFunction', qName: 'LocalFunction'}] };
 
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+LocalFunction.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+        'LocalFunction': { type: '', declaredBy: 'LocalFunction'},
+        'doIt': { type: 'void', declaredBy: 'LocalFunction'}
+      };
+    }
+  };
+};
+

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/test-files/flexjs/files/MyInitialView_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/files/MyInitialView_result.js b/compiler.jx.tests/test-files/flexjs/files/MyInitialView_result.js
index 5ac94c6..b3d358f 100644
--- a/compiler.jx.tests/test-files/flexjs/files/MyInitialView_result.js
+++ b/compiler.jx.tests/test-files/flexjs/files/MyInitialView_result.js
@@ -208,6 +208,50 @@ goog.inherits(MyInitialView, org.apache.flex.core.ViewBase);
 MyInitialView.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'MyInitialView', qName: 'MyInitialView' }] };
 
 
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+MyInitialView.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+        'symbol': { type: 'String', declaredBy: 'MyInitialView'},
+        'city': { type: 'String', declaredBy: 'MyInitialView'},
+        'inputText': { type: 'String', declaredBy: 'MyInitialView'},
+        'comboBoxValue': { type: 'String', declaredBy: 'MyInitialView'},
+        'lbl': { type: 'org.apache.flex.html.Label', declaredBy: 'MyInitialView'},
+        'timerLabel': { type: 'org.apache.flex.html.Label', declaredBy: 'MyInitialView'},
+        'cityList': { type: 'org.apache.flex.html.List', declaredBy: 'MyInitialView'},
+        'input': { type: 'org.apache.flex.html.TextInput', declaredBy: 'MyInitialView'},
+        'checkbox': { type: 'org.apache.flex.html.CheckBox', declaredBy: 'MyInitialView'},
+        'list': { type: 'org.apache.flex.html.DropDownList', declaredBy: 'MyInitialView'},
+        'comboBox': { type: 'org.apache.flex.html.ComboBox', declaredBy: 'MyInitialView'},
+        'startTimer': { type: 'void', declaredBy: 'MyInitialView'},
+        'timerHandler': { type: 'void', declaredBy: 'MyInitialView'}
+      };
+    },
+    methods: function () {
+      return {
+        '$EH0': { type: 'void', declaredBy: 'MyInitialView'},
+        '$EH1': { type: 'void', declaredBy: 'MyInitialView'},
+        '$EH2': { type: 'void', declaredBy: 'MyInitialView'},
+        '$EH3': { type: 'void', declaredBy: 'MyInitialView'},
+        '$EH4': { type: 'void', declaredBy: 'MyInitialView'},
+        '$EH5': { type: 'void', declaredBy: 'MyInitialView'},
+        '$EH6': { type: 'void', declaredBy: 'MyInitialView'}
+      };
+    }
+  };
+};
+
+
 /**
  * @private
  * @type {org.apache.flex.utils.Timer}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/test-files/flexjs/files/controllers/MyController_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/files/controllers/MyController_result.js b/compiler.jx.tests/test-files/flexjs/files/controllers/MyController_result.js
index e01247d..2a2f350 100644
--- a/compiler.jx.tests/test-files/flexjs/files/controllers/MyController_result.js
+++ b/compiler.jx.tests/test-files/flexjs/files/controllers/MyController_result.js
@@ -147,3 +147,29 @@ controllers.MyController.prototype.setDocument = function(document, id) {
  */
 controllers.MyController.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'MyController', qName: 'controllers.MyController'}], interfaces: [org.apache.flex.core.IDocument] };
 
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+controllers.MyController.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+        'MyController': { type: '', declaredBy: 'controllers.MyController'},
+        'setDocument': { type: 'void', declaredBy: 'controllers.MyController'}
+      };
+    }
+  };
+};
+

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/test-files/flexjs/files/models/MyModel_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/files/models/MyModel_result.js b/compiler.jx.tests/test-files/flexjs/files/models/MyModel_result.js
index 0b01eca..11cd19d 100644
--- a/compiler.jx.tests/test-files/flexjs/files/models/MyModel_result.js
+++ b/compiler.jx.tests/test-files/flexjs/files/models/MyModel_result.js
@@ -89,3 +89,31 @@ get: /** @this {models.MyModel} */ function() {
  */
 models.MyModel.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'MyModel', qName: 'models.MyModel'}] };
 
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+models.MyModel.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+        'labelText': { type: 'String', declaredBy: 'models.MyModel'},
+        'strings': { type: 'Array', declaredBy: 'models.MyModel'},
+        'cities': { type: 'Array', declaredBy: 'models.MyModel'}
+      };
+    },
+    methods: function () {
+      return {
+        'MyModel': { type: '', declaredBy: 'models.MyModel'}
+      };
+    }
+  };
+};
+

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/test-files/flexjs/files/wildcard_import_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/files/wildcard_import_result.js b/compiler.jx.tests/test-files/flexjs/files/wildcard_import_result.js
index 9632477..2f591e6 100644
--- a/compiler.jx.tests/test-files/flexjs/files/wildcard_import_result.js
+++ b/compiler.jx.tests/test-files/flexjs/files/wildcard_import_result.js
@@ -57,6 +57,30 @@ goog.inherits(wildcard_import, org.apache.flex.core.Application);
 wildcard_import.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'wildcard_import', qName: 'wildcard_import' }] };
 
 
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+wildcard_import.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+      };
+    }
+  };
+};
+
+
 /**
  * @private
  */

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/test-files/flexjs/projects/circular/Base_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/projects/circular/Base_result.js b/compiler.jx.tests/test-files/flexjs/projects/circular/Base_result.js
index fac69d9..eec9ab3 100644
--- a/compiler.jx.tests/test-files/flexjs/projects/circular/Base_result.js
+++ b/compiler.jx.tests/test-files/flexjs/projects/circular/Base_result.js
@@ -41,3 +41,28 @@ goog.inherits(Base, Super);
  * @type {Object.<string, Array.<Object>>}
  */
 Base.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'Base', qName: 'Base'}] };
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+Base.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+        'Base': { type: '', declaredBy: 'Base'}
+      };
+    }
+  };
+};

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/test-files/flexjs/projects/circular/Super_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/projects/circular/Super_result.js b/compiler.jx.tests/test-files/flexjs/projects/circular/Super_result.js
index 64afaa2..83acc09 100644
--- a/compiler.jx.tests/test-files/flexjs/projects/circular/Super_result.js
+++ b/compiler.jx.tests/test-files/flexjs/projects/circular/Super_result.js
@@ -45,3 +45,28 @@ Super.isItCircular;
  * @type {Object.<string, Array.<Object>>}
  */
 Super.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'Super', qName: 'Super'}] };
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+Super.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+        'Super': { type: '', declaredBy: 'Super'}
+      };
+    }
+  };
+};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/test-files/flexjs/projects/interfaces/Test_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/projects/interfaces/Test_result.js b/compiler.jx.tests/test-files/flexjs/projects/interfaces/Test_result.js
index ff88e94..7c92f53 100644
--- a/compiler.jx.tests/test-files/flexjs/projects/interfaces/Test_result.js
+++ b/compiler.jx.tests/test-files/flexjs/projects/interfaces/Test_result.js
@@ -61,3 +61,29 @@ Test.prototype.doSomething = function(ic) {
  * @type {Object.<string, Array.<Object>>}
  */
 Test.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'Test', qName: 'Test'}], interfaces: [interfaces.IA, interfaces.IE] };
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+Test.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+        'Test': { type: '', declaredBy: 'Test'},
+        'doSomething': { type: 'IC', declaredBy: 'Test'}
+      };
+    }
+  };
+};

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/test-files/flexjs/projects/interfaces/classes/A_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/projects/interfaces/classes/A_result.js b/compiler.jx.tests/test-files/flexjs/projects/interfaces/classes/A_result.js
index 9c03911..22a7f37 100644
--- a/compiler.jx.tests/test-files/flexjs/projects/interfaces/classes/A_result.js
+++ b/compiler.jx.tests/test-files/flexjs/projects/interfaces/classes/A_result.js
@@ -41,3 +41,28 @@ goog.inherits(classes.A, classes.C);
  * @type {Object.<string, Array.<Object>>}
  */
 classes.A.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'A', qName: 'classes.A'}] };
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+classes.A.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+        'A': { type: '', declaredBy: 'classes.A'}
+      };
+    }
+  };
+};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/test-files/flexjs/projects/interfaces/classes/B_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/projects/interfaces/classes/B_result.js b/compiler.jx.tests/test-files/flexjs/projects/interfaces/classes/B_result.js
index cc85f09..ba191ab 100644
--- a/compiler.jx.tests/test-files/flexjs/projects/interfaces/classes/B_result.js
+++ b/compiler.jx.tests/test-files/flexjs/projects/interfaces/classes/B_result.js
@@ -36,3 +36,28 @@ classes.B = function() {
  * @type {Object.<string, Array.<Object>>}
  */
 classes.B.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'B', qName: 'classes.B'}] };
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+classes.B.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+        'B': { type: '', declaredBy: 'classes.B'}
+      };
+    }
+  };
+};

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/test-files/flexjs/projects/interfaces/classes/C_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/projects/interfaces/classes/C_result.js b/compiler.jx.tests/test-files/flexjs/projects/interfaces/classes/C_result.js
index 4b9443a..2db65f9 100644
--- a/compiler.jx.tests/test-files/flexjs/projects/interfaces/classes/C_result.js
+++ b/compiler.jx.tests/test-files/flexjs/projects/interfaces/classes/C_result.js
@@ -36,3 +36,28 @@ classes.C = function() {
  * @type {Object.<string, Array.<Object>>}
  */
 classes.C.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'C', qName: 'classes.C'}] };
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+classes.C.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+        'C': { type: '', declaredBy: 'classes.C'}
+      };
+    }
+  };
+};

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/test-files/flexjs/projects/interfaces/interfaces/IA_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/projects/interfaces/interfaces/IA_result.js b/compiler.jx.tests/test-files/flexjs/projects/interfaces/interfaces/IA_result.js
index be372df..19d0593 100644
--- a/compiler.jx.tests/test-files/flexjs/projects/interfaces/interfaces/IA_result.js
+++ b/compiler.jx.tests/test-files/flexjs/projects/interfaces/interfaces/IA_result.js
@@ -39,3 +39,27 @@ interfaces.IA = function() {
  * @type {Object.<string, Array.<Object>>}
  */
 interfaces.IA.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'IA', qName: 'interfaces.IA'}], interfaces: [interfaces.IC] };
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+interfaces.IA.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+      };
+    }
+  };
+};

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/test-files/flexjs/projects/interfaces/interfaces/IC_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/projects/interfaces/interfaces/IC_result.js b/compiler.jx.tests/test-files/flexjs/projects/interfaces/interfaces/IC_result.js
index 7f4bf1a..d5bb746 100644
--- a/compiler.jx.tests/test-files/flexjs/projects/interfaces/interfaces/IC_result.js
+++ b/compiler.jx.tests/test-files/flexjs/projects/interfaces/interfaces/IC_result.js
@@ -39,3 +39,27 @@ interfaces.IC = function() {
  * @type {Object.<string, Array.<Object>>}
  */
 interfaces.IC.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'IC', qName: 'interfaces.IC'}], interfaces: [interfaces.ID] };
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+interfaces.IC.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+      };
+    }
+  };
+};

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/test-files/flexjs/projects/interfaces/interfaces/ID_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/projects/interfaces/interfaces/ID_result.js b/compiler.jx.tests/test-files/flexjs/projects/interfaces/interfaces/ID_result.js
index 3d93fbf..13cee62 100644
--- a/compiler.jx.tests/test-files/flexjs/projects/interfaces/interfaces/ID_result.js
+++ b/compiler.jx.tests/test-files/flexjs/projects/interfaces/interfaces/ID_result.js
@@ -36,3 +36,27 @@ interfaces.ID = function() {
  * @type {Object.<string, Array.<Object>>}
  */
 interfaces.ID.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'ID', qName: 'interfaces.ID'}] };
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+interfaces.ID.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+      };
+    }
+  };
+};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/test-files/flexjs/projects/interfaces/interfaces/IE_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/projects/interfaces/interfaces/IE_result.js b/compiler.jx.tests/test-files/flexjs/projects/interfaces/interfaces/IE_result.js
index 6b49590..bc57179 100644
--- a/compiler.jx.tests/test-files/flexjs/projects/interfaces/interfaces/IE_result.js
+++ b/compiler.jx.tests/test-files/flexjs/projects/interfaces/interfaces/IE_result.js
@@ -40,3 +40,29 @@ interfaces.IE.prototype.myMethod = function() {
  * @type {Object.<string, Array.<Object>>}
  */
 interfaces.IE.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'IE', qName: 'interfaces.IE'}] };
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+interfaces.IE.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+        'myProp': { type: 'String', declaredBy: 'interfaces.IE'}
+      };
+    },
+    methods: function () {
+      return {
+        'myMethod': { type: 'void', declaredBy: 'interfaces.IE'}
+      };
+    }
+  };
+};

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_different_package_as_conflict/DifferentPackageAsConflict_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_different_package_as_conflict/DifferentPackageAsConflict_result.js b/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_different_package_as_conflict/DifferentPackageAsConflict_result.js
index 9916ae5..27239b9 100644
--- a/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_different_package_as_conflict/DifferentPackageAsConflict_result.js
+++ b/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_different_package_as_conflict/DifferentPackageAsConflict_result.js
@@ -12,7 +12,6 @@
  * limitations under the License.
  */
 /**
- * Generated by Apache Flex Cross-Compiler from DifferentPackageAsConflict.as
  * DifferentPackageAsConflict
  *
  * @fileoverview
@@ -47,3 +46,28 @@ DifferentPackageAsConflict.prototype.testClass;
  * @type {Object.<string, Array.<Object>>}
  */
 DifferentPackageAsConflict.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'DifferentPackageAsConflict', qName: 'DifferentPackageAsConflict'}] };
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+DifferentPackageAsConflict.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+        'DifferentPackageAsConflict': { type: '', declaredBy: 'DifferentPackageAsConflict'}
+      };
+    }
+  };
+};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_different_package_as_conflict/Event_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_different_package_as_conflict/Event_result.js b/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_different_package_as_conflict/Event_result.js
index 8bd22d5..1382eb5 100644
--- a/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_different_package_as_conflict/Event_result.js
+++ b/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_different_package_as_conflict/Event_result.js
@@ -37,3 +37,28 @@ Event = function() {
  * @type {Object.<string, Array.<Object>>}
  */
 Event.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'Event', qName: 'Event'}] };
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+Event.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+        'Event': { type: '', declaredBy: 'Event'}
+      };
+    }
+  };
+};

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_different_package_as_conflict/mypackage/TestClass_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_different_package_as_conflict/mypackage/TestClass_result.js b/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_different_package_as_conflict/mypackage/TestClass_result.js
index de1e202..d181092 100644
--- a/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_different_package_as_conflict/mypackage/TestClass_result.js
+++ b/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_different_package_as_conflict/mypackage/TestClass_result.js
@@ -48,3 +48,28 @@ mypackage.TestClass.prototype.event;
  * @type {Object.<string, Array.<Object>>}
  */
 mypackage.TestClass.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'TestClass', qName: 'mypackage.TestClass'}] };
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+mypackage.TestClass.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+        'TestClass': { type: '', declaredBy: 'mypackage.TestClass'}
+      };
+    }
+  };
+};

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_different_package_as_conflict/otherpackage/Event_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_different_package_as_conflict/otherpackage/Event_result.js b/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_different_package_as_conflict/otherpackage/Event_result.js
index edc8003..d8ba2eb 100644
--- a/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_different_package_as_conflict/otherpackage/Event_result.js
+++ b/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_different_package_as_conflict/otherpackage/Event_result.js
@@ -37,3 +37,28 @@ otherpackage.Event = function() {
  * @type {Object.<string, Array.<Object>>}
  */
 otherpackage.Event.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'Event', qName: 'otherpackage.Event'}] };
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+otherpackage.Event.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+        'Event': { type: '', declaredBy: 'otherpackage.Event'}
+      };
+    }
+  };
+};

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_no_conflict_no_window/Event_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_no_conflict_no_window/Event_result.js b/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_no_conflict_no_window/Event_result.js
index 8bd22d5..1382eb5 100644
--- a/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_no_conflict_no_window/Event_result.js
+++ b/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_no_conflict_no_window/Event_result.js
@@ -37,3 +37,28 @@ Event = function() {
  * @type {Object.<string, Array.<Object>>}
  */
 Event.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'Event', qName: 'Event'}] };
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+Event.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+        'Event': { type: '', declaredBy: 'Event'}
+      };
+    }
+  };
+};

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_no_conflict_no_window/NoConflictNoWindow_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_no_conflict_no_window/NoConflictNoWindow_result.js b/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_no_conflict_no_window/NoConflictNoWindow_result.js
index 183f30a..d0c7888 100644
--- a/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_no_conflict_no_window/NoConflictNoWindow_result.js
+++ b/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_no_conflict_no_window/NoConflictNoWindow_result.js
@@ -12,7 +12,6 @@
  * limitations under the License.
  */
 /**
- * Generated by Apache Flex Cross-Compiler from NoConflictNoWindow.as
  * NoConflictNoWindow
  *
  * @fileoverview
@@ -47,3 +46,28 @@ NoConflictNoWindow.prototype.testClass;
  * @type {Object.<string, Array.<Object>>}
  */
 NoConflictNoWindow.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'NoConflictNoWindow', qName: 'NoConflictNoWindow'}] };
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+NoConflictNoWindow.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+        'NoConflictNoWindow': { type: '', declaredBy: 'NoConflictNoWindow'}
+      };
+    }
+  };
+};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_no_conflict_no_window/mypackage/TestClass_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_no_conflict_no_window/mypackage/TestClass_result.js b/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_no_conflict_no_window/mypackage/TestClass_result.js
index 9b74aad..acc3ecf 100644
--- a/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_no_conflict_no_window/mypackage/TestClass_result.js
+++ b/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_no_conflict_no_window/mypackage/TestClass_result.js
@@ -46,3 +46,28 @@ mypackage.TestClass.prototype.event;
  * @type {Object.<string, Array.<Object>>}
  */
 mypackage.TestClass.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'TestClass', qName: 'mypackage.TestClass'}] };
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+mypackage.TestClass.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+        'TestClass': { type: '', declaredBy: 'mypackage.TestClass'}
+      };
+    }
+  };
+};

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_no_conflict_use_window/Event_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_no_conflict_use_window/Event_result.js b/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_no_conflict_use_window/Event_result.js
index 8bd22d5..1382eb5 100644
--- a/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_no_conflict_use_window/Event_result.js
+++ b/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_no_conflict_use_window/Event_result.js
@@ -37,3 +37,28 @@ Event = function() {
  * @type {Object.<string, Array.<Object>>}
  */
 Event.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'Event', qName: 'Event'}] };
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+Event.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+        'Event': { type: '', declaredBy: 'Event'}
+      };
+    }
+  };
+};

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_no_conflict_use_window/NoConflictUseWindow_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_no_conflict_use_window/NoConflictUseWindow_result.js b/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_no_conflict_use_window/NoConflictUseWindow_result.js
index bbb0fec..de67ca1 100644
--- a/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_no_conflict_use_window/NoConflictUseWindow_result.js
+++ b/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_no_conflict_use_window/NoConflictUseWindow_result.js
@@ -12,7 +12,6 @@
  * limitations under the License.
  */
 /**
- * Generated by Apache Flex Cross-Compiler from NoConflictUseWindow.as
  * NoConflictUseWindow
  *
  * @fileoverview
@@ -47,3 +46,28 @@ NoConflictUseWindow.prototype.testClass;
  * @type {Object.<string, Array.<Object>>}
  */
 NoConflictUseWindow.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'NoConflictUseWindow', qName: 'NoConflictUseWindow'}] };
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+NoConflictUseWindow.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+        'NoConflictUseWindow': { type: '', declaredBy: 'NoConflictUseWindow'}
+      };
+    }
+  };
+};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_no_conflict_use_window/mypackage/TestClass_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_no_conflict_use_window/mypackage/TestClass_result.js b/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_no_conflict_use_window/mypackage/TestClass_result.js
index 9b74aad..acc3ecf 100644
--- a/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_no_conflict_use_window/mypackage/TestClass_result.js
+++ b/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_no_conflict_use_window/mypackage/TestClass_result.js
@@ -46,3 +46,28 @@ mypackage.TestClass.prototype.event;
  * @type {Object.<string, Array.<Object>>}
  */
 mypackage.TestClass.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'TestClass', qName: 'mypackage.TestClass'}] };
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+mypackage.TestClass.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+        'TestClass': { type: '', declaredBy: 'mypackage.TestClass'}
+      };
+    }
+  };
+};

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_same_package_as_conflict/Event_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_same_package_as_conflict/Event_result.js b/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_same_package_as_conflict/Event_result.js
index 8bd22d5..1382eb5 100644
--- a/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_same_package_as_conflict/Event_result.js
+++ b/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_same_package_as_conflict/Event_result.js
@@ -37,3 +37,28 @@ Event = function() {
  * @type {Object.<string, Array.<Object>>}
  */
 Event.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'Event', qName: 'Event'}] };
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+Event.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+        'Event': { type: '', declaredBy: 'Event'}
+      };
+    }
+  };
+};

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_same_package_as_conflict/SamePackageAsConflict_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_same_package_as_conflict/SamePackageAsConflict_result.js b/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_same_package_as_conflict/SamePackageAsConflict_result.js
index deae674..7d264bc 100644
--- a/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_same_package_as_conflict/SamePackageAsConflict_result.js
+++ b/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_same_package_as_conflict/SamePackageAsConflict_result.js
@@ -12,7 +12,6 @@
  * limitations under the License.
  */
 /**
- * Generated by Apache Flex Cross-Compiler from SamePackageAsConflict.as
  * SamePackageAsConflict
  *
  * @fileoverview
@@ -47,3 +46,28 @@ SamePackageAsConflict.prototype.testClass;
  * @type {Object.<string, Array.<Object>>}
  */
 SamePackageAsConflict.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'SamePackageAsConflict', qName: 'SamePackageAsConflict'}] };
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+SamePackageAsConflict.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+        'SamePackageAsConflict': { type: '', declaredBy: 'SamePackageAsConflict'}
+      };
+    }
+  };
+};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1c69a7d/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_same_package_as_conflict/mypackage/Event_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_same_package_as_conflict/mypackage/Event_result.js b/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_same_package_as_conflict/mypackage/Event_result.js
index 4591d85..2c62aff 100644
--- a/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_same_package_as_conflict/mypackage/Event_result.js
+++ b/compiler.jx.tests/test-files/flexjs/projects/package_conflicts_same_package_as_conflict/mypackage/Event_result.js
@@ -37,3 +37,28 @@ mypackage.Event = function() {
  * @type {Object.<string, Array.<Object>>}
  */
 mypackage.Event.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'Event', qName: 'mypackage.Event'}] };
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+mypackage.Event.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+        'Event': { type: '', declaredBy: 'mypackage.Event'}
+      };
+    }
+  };
+};