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 2015/04/09 01:05:20 UTC

[14/18] git commit: [flex-falcon] [refs/heads/develop] - adjust the tests for defineProp

adjust the tests for defineProp


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

Branch: refs/heads/develop
Commit: b974c9aa4c8ce0337500e2036a369e217375dc47
Parents: 8eefb00
Author: Alex Harui <ah...@apache.org>
Authored: Tue Apr 7 21:12:03 2015 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Tue Apr 7 21:12:03 2015 -0700

----------------------------------------------------------------------
 .../js/flexjs/TestFlexJSAccessorMembers.java    |  71 ++--
 .../codegen/js/flexjs/TestFlexJSAccessors.java  |   8 +-
 .../codegen/js/flexjs/TestFlexJSClass.java      |   8 +-
 .../js/flexjs/TestFlexJSExpressions.java        |  50 +--
 .../codegen/js/flexjs/TestFlexJSInterface.java  |   6 +-
 .../internal/codegen/js/goog/TestGoogClass.java |  14 +-
 .../codegen/js/goog/TestGoogEmiter.java         |   2 +-
 .../flexjs/files/FlexJSTest_again_result.js     |  92 ++---
 .../flexjs/files/MyInitialView_result.js        | 411 ++++++++-----------
 .../files/controllers/MyController_result.js    |  18 +-
 .../flexjs/files/models/MyModel_result.js       |  55 ++-
 .../projects/interfaces/interfaces/IE_result.js |  20 +-
 .../flexjs/projects/super/Base_result.js        |  29 +-
 .../flexjs/projects/super/Super_result.js       |  25 +-
 .../test-files/goog/files/call-super_result.js  |   4 +-
 .../test-files/goog/files/output.js             |   2 +-
 .../test-files/goog/files/poc_result.js         |   2 +-
 .../goog/files/qualify-new-object_result.js     |   2 +-
 .../codegen/js/flexjs/JSFlexJSEmitter.java      |  78 +++-
 .../internal/codegen/js/goog/JSGoogEmitter.java |   9 +-
 20 files changed, 458 insertions(+), 448 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b974c9aa/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
index 0d40229..09bf25c 100644
--- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
@@ -22,6 +22,7 @@ package org.apache.flex.compiler.internal.codegen.js.flexjs;
 import org.apache.flex.compiler.driver.IBackend;
 import org.apache.flex.compiler.internal.codegen.js.goog.TestGoogAccessorMembers;
 import org.apache.flex.compiler.internal.driver.js.flexjs.FlexJSBackend;
+import org.apache.flex.compiler.tree.as.IClassNode;
 import org.apache.flex.compiler.tree.as.IGetterNode;
 import org.apache.flex.compiler.tree.as.ISetterNode;
 import org.junit.Test;
@@ -35,90 +36,100 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
     @Test
     public void testGetAccessor()
     {
-        IGetterNode node = (IGetterNode) getAccessor("function get foo():int{}");
-        asBlockWalker.visitGetter(node);
-        assertOut("/**\n * @return {number}\n */\nFalconTest_A.prototype.get_foo = function() {\n}");
+        IClassNode node = (IClassNode) getNode("function get foo():int{}",
+        		IClassNode.class, WRAP_LEVEL_CLASS);
+        asBlockWalker.visitClass(node);
+        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n/**\n * @expose\n * @type {number}\n */\nFalconTest_A.prototype.foo;\n\n;Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @expose */\nfoo: {\nget: /** @this {FalconTest_A} */ function() {\n}}}\n);");
     }
 
     @Override
     @Test
     public void testGetAccessor_withBody()
     {
-        IGetterNode node = (IGetterNode) getAccessor("function get foo():int{return -1;}");
-        asBlockWalker.visitGetter(node);
-        assertOut("/**\n * @return {number}\n */\nFalconTest_A.prototype.get_foo = function() {\n  return -1;\n}");
+    	IClassNode node = (IClassNode) getNode("function get foo():int{return -1;}",
+    			IClassNode.class, WRAP_LEVEL_CLASS);
+        asBlockWalker.visitClass(node);
+        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n/**\n * @expose\n * @type {number}\n */\nFalconTest_A.prototype.foo;\n\n;Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @expose */\nfoo: {\nget: /** @this {FalconTest_A} */ function() {\n  return -1;\n}}}\n);");
     }
 
     @Override
     @Test
     public void testGetAccessor_withNamespace()
     {
-        IGetterNode node = (IGetterNode) getAccessor("public function get foo():int{return -1;}");
-        asBlockWalker.visitGetter(node);
-        assertOut("/**\n * @expose\n * @return {number}\n */\nFalconTest_A.prototype.get_foo = function() {\n  return -1;\n}");
+    	IClassNode node = (IClassNode) getNode("public function get foo():int{return -1;}",
+        		IClassNode.class, WRAP_LEVEL_CLASS);
+        asBlockWalker.visitClass(node);
+        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n/**\n * @expose\n * @type {number}\n */\nFalconTest_A.prototype.foo;\n\n;Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @expose */\nfoo: {\nget: /** @this {FalconTest_A} */ function() {\n  return -1;\n}}}\n);");
     }
 
     @Override
     @Test
     public void testGetAccessor_withNamespaceOverride()
     {
-        IGetterNode node = (IGetterNode) getAccessor("public override function get foo():int{super.foo(); return -1;}");
-        asBlockWalker.visitGetter(node);
-        assertOut("/**\n * @expose\n * @return {number}\n * @override\n */\nFalconTest_A.prototype.get_foo = function() {\n  FalconTest_A.base(this, 'get_foo');\n  return -1;\n}");
+    	IClassNode node = (IClassNode) getNode("public override function get foo():int{super.foo(); return -1;}",
+        		IClassNode.class, WRAP_LEVEL_CLASS);
+        asBlockWalker.visitClass(node);
+        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n/**\n * @expose\n * @type {number}\n */\nFalconTest_A.prototype.foo;\n\n;Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @expose */\nfoo: {\nget: /** @this {FalconTest_A} */ function() {\n  org_apache_flex_utils_Language.superGetter(FalconTest_A, this, 'foo');\n  return -1;\n}}}\n);");
     }
 
     @Override
     @Test
     public void testGetAccessor_withStatic()
     {
-        IGetterNode node = (IGetterNode) getAccessor("public static function get foo():int{return -1;}");
-        asBlockWalker.visitGetter(node);
-        assertOut("/**\n * @expose\n * @return {number}\n */\nFalconTest_A.get_foo = function() {\n  return -1;\n}");
+    	IClassNode node = (IClassNode) getNode("public static function get foo():int{return -1;}",
+        		IClassNode.class, WRAP_LEVEL_CLASS);
+        asBlockWalker.visitClass(node);
+        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n/**\n * @expose\n * @type {number}\n */\nFalconTest_A.foo;\n\n;Object.defineProperties(FalconTest_A, /** @lends {FalconTest_A} */ {\n/** @expose */\nfoo: {\nget: function() {\n  return -1;\n}}}\n);");
     }
 
     @Override
     @Test
     public void testSetAccessor()
     {
-        ISetterNode node = (ISetterNode) getAccessor("function set foo(value:int):void{}");
-        asBlockWalker.visitSetter(node);
-        assertOut("/**\n * @param {number} value\n */\nFalconTest_A.prototype.set_foo = function(value) {\n}");
+    	IClassNode node = (IClassNode) getNode("function set foo(value:int):void{}",
+        		IClassNode.class, WRAP_LEVEL_CLASS);
+        asBlockWalker.visitClass(node);
+        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n/**\n * @expose\n * @type {number}\n */\nFalconTest_A.prototype.foo;\n\n;Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @expose */\nfoo: {\nset: /** @this {FalconTest_A} */ function(value) {\n}}}\n);");
     }
 
     @Override
     @Test
     public void testSetAccessor_withBody()
     {
-        ISetterNode node = (ISetterNode) getAccessor("function set foo(value:int):void{fetch('haai');}");
-        asBlockWalker.visitSetter(node);
-        assertOut("/**\n * @param {number} value\n */\nFalconTest_A.prototype.set_foo = function(value) {\n  fetch('haai');\n}");
+    	IClassNode node = (IClassNode) getNode("function set foo(value:int):void{fetch('haai');}",
+        		IClassNode.class, WRAP_LEVEL_CLASS);
+        asBlockWalker.visitClass(node);
+        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n/**\n * @expose\n * @type {number}\n */\nFalconTest_A.prototype.foo;\n\n;Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @expose */\nfoo: {\nset: /** @this {FalconTest_A} */ function(value) {\n  fetch('haai');\n}}}\n);");
     }
 
     @Override
     @Test
     public void testSetAccessor_withNamespace()
     {
-        ISetterNode node = (ISetterNode) getAccessor("public function set foo(value:int):void{}");
-        asBlockWalker.visitSetter(node);
-        assertOut("/**\n * @expose\n * @param {number} value\n */\nFalconTest_A.prototype.set_foo = function(value) {\n}");
+    	IClassNode node = (IClassNode) getNode("public function set foo(value:int):void{}",
+        		IClassNode.class, WRAP_LEVEL_CLASS);
+        asBlockWalker.visitClass(node);
+        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n/**\n * @expose\n * @type {number}\n */\nFalconTest_A.prototype.foo;\n\n;Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @expose */\nfoo: {\nset: /** @this {FalconTest_A} */ function(value) {\n}}}\n);");
     }
 
     @Override
     @Test
     public void testSetAccessor_withNamespaceOverride()
     {
-        ISetterNode node = (ISetterNode) getAccessor("public override function set foo(value:int):void{super.foo();}");
-        asBlockWalker.visitSetter(node);
-        assertOut("/**\n * @expose\n * @param {number} value\n * @override\n */\nFalconTest_A.prototype.set_foo = function(value) {\n  FalconTest_A.base(this, 'set_foo');\n}");
+    	IClassNode node = (IClassNode) getNode("public class B extends A { public override function set foo(value:int):void {super.foo = value;} }; public class A extends B { public override set foo(value:int):void{}}",
+        		IClassNode.class, WRAP_LEVEL_PACKAGE);
+        asBlockWalker.visitClass(node);
+        assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() {\n  B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\n\n\n/**\n * @expose\n * @type {number}\n */\nB.prototype.foo;\n\n;Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/** @expose */\nfoo: {\nset: /** @this {B} */ function(value) {\n  org_apache_flex_utils_Language.superSetter(B, this, 'foo', value);\n}}}\n);");
     }
 
     @Override
     @Test
     public void testSetAccessor_withStatic()
     {
-        ISetterNode node = (ISetterNode) getAccessor("public static function set foo(value:int):void{}");
-        asBlockWalker.visitSetter(node);
-        assertOut("/**\n * @expose\n * @param {number} value\n */\nFalconTest_A.set_foo = function(value) {\n}");
+    	IClassNode node = (IClassNode) getNode("public static function set foo(value:int):void{}",
+        		IClassNode.class, WRAP_LEVEL_CLASS);
+        asBlockWalker.visitClass(node);
+        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n/**\n * @expose\n * @type {number}\n */\nFalconTest_A.foo;\n\n;Object.defineProperties(FalconTest_A, /** @lends {FalconTest_A} */ {\n/** @expose */\nfoo: {\nset: function(value) {\n}}}\n);");
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b974c9aa/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
index d6e6a28..2844dcc 100644
--- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
@@ -38,7 +38,7 @@ public class TestFlexJSAccessors extends ASTestBase
                 "public function doStuff():void {label = 'hello, bye'; var theLabel:String = label;}; private var _label:String; public function get label():String {return _label}; public function set label(value:String):void {_label = value}; ",
                 IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n/**\n * @expose\n */\nFalconTest_A.prototype.doStuff = function() {\n  this.set_label('hello, bye');\n  var /** @type {string} */ theLabel = this.get_label();\n};\n\n\n/**\n * @private\n * @type {string}\n */\nFalconTest_A.prototype._label;\n\n\n/**\n * @expose\n * @return {string}\n */\nFalconTest_A.prototype.get_label = function() {\n  return this._label;\n};\n\n\n/**\n * @expose\n * @param {string} value\n */\nFalconTest_A.prototype.set_label = function(value) {\n  this._label = value;\n};";
+        String expected = "/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n/**\n * @expose\n */\nFalconTest_A.prototype.doStuff = function() {\n  this.label = 'hello, bye';\n  var /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nFalconTest_A.prototype._label;\n\n\n/**\n * @expose\n * @type {string}\n */\nFalconTest_A.prototype.label;\n\n;\n\n\n;Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @expose */\nlabel: {\nget: /** @this {FalconTest_A} */ function() {\n  return this._label;\n},\nset: /** @this {FalconTest_A} */ function(value) {\n  this._label = value;\n}}}\n);";
         assertOut(expected);
     }
 
@@ -49,7 +49,7 @@ public class TestFlexJSAccessors extends ASTestBase
                 "public class B { public function B() {}; public function doStuff():void {this.label = label + 'bye'; var theLabel:String = label;}; private var _label:String; public function get label():String {return _label}; public function set label(value:String):void {_label = value};}",
                 IClassNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n\n/**\n * @expose\n */\nB.prototype.doStuff = function() {\n  this.set_label(this.get_label() + 'bye');\n  var /** @type {string} */ theLabel = this.get_label();\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB.prototype._label;\n\n\n/**\n * @expose\n * @return {string}\n */\nB.prototype.get_label = function() {\n  return this._label;\n};\n\n\n/**\n * @expose\n * @param {string} value\n */\nB.prototype.set_label = function(value) {\n  this._label = value;\n};"; 
+        String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n\n/**\n * @expose\n */\nB.prototype.doStuff = function() {\n  this.label = this.label + 'bye';\n  var /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB.prototype._label;\n\n\n/**\n * @expose\n * @type {string}\n */\nB.prototype.label;\n\n;\n\n\n;Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/** @expose */\nlabel: {\nget: /** @this {B} */ function() {\n  return this._label;\n},\nset: /** @this {B} */ function(value) {\n  this._label = value;\n}}}\n);"; 
         assertOut(expected);
     }
 
@@ -60,7 +60,7 @@ public class TestFlexJSAccessors extends ASTestBase
                 "public function doStuff():void {label = label + 'bye'; var theLabel:String = label;}; private var _label:String; public function get label():String {return _label}; public function set label(value:String):void {_label = value}; ",
                 IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n/**\n * @expose\n */\nFalconTest_A.prototype.doStuff = function() {\n  this.set_label(this.get_label() + 'bye');\n  var /** @type {string} */ theLabel = this.get_label();\n};\n\n\n/**\n * @private\n * @type {string}\n */\nFalconTest_A.prototype._label;\n\n\n/**\n * @expose\n * @return {string}\n */\nFalconTest_A.prototype.get_label = function() {\n  return this._label;\n};\n\n\n/**\n * @expose\n * @param {string} value\n */\nFalconTest_A.prototype.set_label = function(value) {\n  this._label = value;\n};";
+        String expected = "/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n/**\n * @expose\n */\nFalconTest_A.prototype.doStuff = function() {\n  this.label = this.label + 'bye';\n  var /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nFalconTest_A.prototype._label;\n\n\n/**\n * @expose\n * @type {string}\n */\nFalconTest_A.prototype.label;\n\n;\n\n\n;Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @expose */\nlabel: {\nget: /** @this {FalconTest_A} */ function() {\n  return this._label;\n},\nset: /** @this {FalconTest_A} */ function(value) {\n  this._label = value;\n}}}\n);";
         assertOut(expected);
     }
     
@@ -71,7 +71,7 @@ public class TestFlexJSAccessors extends ASTestBase
                 "public class B { public function B() {}; public function doStuff():void {label = this.label; var theLabel:String = label;}; private var _label:String; public function get label():String {return _label}; public function set label(value:String):void {_label = value};}",
                 IClassNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n\n/**\n * @expose\n */\nB.prototype.doStuff = function() {\n  this.set_label(this.get_label());\n  var /** @type {string} */ theLabel = this.get_label();\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB.prototype._label;\n\n\n/**\n * @expose\n * @return {string}\n */\nB.prototype.get_label = function() {\n  return this._label;\n};\n\n\n/**\n * @expose\n * @param {string} value\n */\nB.prototype.set_label = function(value) {\n  this._label = value;\n};";
+        String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n\n/**\n * @expose\n */\nB.prototype.doStuff = function() {\n  this.label = this.label;\n  var /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB.prototype._label;\n\n\n/**\n * @expose\n * @type {string}\n */\nB.prototype.label;\n\n;\n\n\n;Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/** @expose */\nlabel: {\nget: /** @this {B} */ function() {\n  return this._label;\n},\nset: /** @this {B} */ function(value) {\n  this._label = value;\n}}}\n);";
         assertOut(expected);
     }
 

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b974c9aa/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
index fd121ea..1eb5434 100644
--- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
@@ -108,7 +108,7 @@ public class TestFlexJSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B {public function B() {}; public var button:Button = new Button(); public function foo():String {return button.label;};}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\norg_apache_flex_B = function() {\n};\n\n\n/**\n * @expose\n * @type {spark_components_Button}\n */\norg_apache_flex_B.prototype.button = new spark_components_Button();\n\n\n/**\n * @expose\n * @return {string}\n */\norg_apache_flex_B.prototype.foo = function() {\n  return this.button.get_label();\n};";
+        String expected = "/**\n * @constructor\n */\norg_apache_flex_B = function() {\n};\n\n\n/**\n * @expose\n * @type {spark_components_Button}\n */\norg_apache_flex_B.prototype.button = new spark_components_Button();\n\n\n/**\n * @expose\n * @return {string}\n */\norg_apache_flex_B.prototype.foo = function() {\n  return this.button.label;\n};";
         assertOut(expected);
     }
 
@@ -153,7 +153,7 @@ public class TestFlexJSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B {public function B() {}; public function set baz(value:Object):void {}; public function set foo(value:Object):void {baz = value;};}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\norg_apache_flex_B = function() {\n};\n\n\n/**\n * @expose\n * @param {Object} value\n */\norg_apache_flex_B.prototype.set_baz = function(value) {\n};\n\n\n/**\n * @expose\n * @param {Object} value\n */\norg_apache_flex_B.prototype.set_foo = function(value) {\n  this.set_baz(value);\n};";
+        String expected = "/**\n * @constructor\n */\norg_apache_flex_B = function() {\n};\n\n\n/**\n * @expose\n * @type {Object}\n */\norg_apache_flex_B.prototype.baz;\n\n;\n\n\n/**\n * @expose\n * @type {Object}\n */\norg_apache_flex_B.prototype.foo;\n\n;Object.defineProperties(org_apache_flex_B.prototype, /** @lends {org_apache_flex_B.prototype} */ {\n/** @expose */\nbaz: {\nset: /** @this {org_apache_flex_B} */ function(value) {\n}},\n/** @expose */\nfoo: {\nset: /** @this {org_apache_flex_B} */ function(value) {\n  this.baz = value;\n}}}\n);";
         assertOut(expected);
     }
 
@@ -162,7 +162,7 @@ public class TestFlexJSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B {public function B() {}; override public function set foo(value:Object):void {super.foo = value;};}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\norg_apache_flex_B = function() {\n};\n\n\n/**\n * @expose\n * @param {Object} value\n * @override\n */\norg_apache_flex_B.prototype.set_foo = function(value) {\n  org_apache_flex_B.base(this, 'set_foo', value);\n};";
+        String expected = "/**\n * @constructor\n */\norg_apache_flex_B = function() {\n};\n\n\n/**\n * @expose\n * @type {Object}\n */\norg_apache_flex_B.prototype.foo;\n\n;Object.defineProperties(org_apache_flex_B.prototype, /** @lends {org_apache_flex_B.prototype} */ {\n/** @expose */\nfoo: {\nset: /** @this {org_apache_flex_B} */ function(value) {\n  foo = value;\n}}}\n);";
         assertOut(expected);
     }
 
@@ -214,7 +214,7 @@ public class TestFlexJSClass extends TestGoogClass
                 + "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_flex_A = function() {\n};\n\n\n/**\n * @expose\n * @return {Object}\n */\norg_apache_flex_A.prototype.get_foo1 = function() {\n  return null;\n};\n\n\n/**\n * @expose\n * @param {Object} value\n */\norg_apache_flex_A.prototype.set_foo1 = function(value) {\n};\n\n\n/**\n * @protected\n * @return {Object}\n */\norg_apache_flex_A.prototype.get_foo2 = function() {\n  return null;\n};\n\n\n/**\n * @protected\n * @param {Object} value\n */\norg_apache_flex_A.prototype.set_foo2 = function(value) {\n};\n\n\n/**\n * @private\n * @return {Object}\n */\norg_apache_flex_A.prototype.get_foo3 = function() {\n  return null;\n};\n\n\n/**\n * @private\n * @param {Object} value\n */\norg_apache_flex_A.prototype.set_foo3 = function(value) {\n};\n\n\n/**\n * @return {Object}\n */\norg_apache_flex_A.prototype.get_foo5 = function() {\n  return null;\n};\n\n\n/**\n * @param {Object} value\n */\norg_apache_flex_A.prototype.set_foo5 = function(value) 
 {\n};\n\n\n/**\n * @return {Object}\n */\norg_apache_flex_A.prototype.get_foo6 = function() {\n  return null;\n};\n\n\n/**\n * @param {Object} value\n */\norg_apache_flex_A.prototype.set_foo6 = function(value) {\n};");
+        assertOut("/**\n * @constructor\n */\norg_apache_flex_A = function() {\n};\n\n\n/**\n * @expose\n * @type {Object}\n */\norg_apache_flex_A.prototype.foo1;\n\n;\n\n\n;\n\n\n/**\n * @protected\n * @type {Object}\n */\norg_apache_flex_A.prototype.foo2;\n\n;\n\n\n;\n\n\n/**\n * @private\n * @type {Object}\n */\norg_apache_flex_A.prototype.foo3;\n\n;\n\n\n;\n\n\n/**\n * @expose\n * @type {Object}\n */\norg_apache_flex_A.prototype.foo5;\n\n;\n\n\n;\n\n\n/**\n * @expose\n * @type {Object}\n */\norg_apache_flex_A.prototype.foo6;\n\n;\n\n\n;Object.defineProperties(org_apache_flex_A.prototype, /** @lends {org_apache_flex_A.prototype} */ {\n/** @expose */\nfoo5: {\nget: /** @this {org_apache_flex_A} */ function() {\n  return null;\n},\nset: /** @this {org_apache_flex_A} */ function(value) {\n}},\n/** @expose */\nfoo3: {\nget: /** @this {org_apache_flex_A} */ function() {\n  return null;\n},\nset: /** @this {org_apache_flex_A} */ function(value) {\n}},\n/** @expose */\nfoo2: {\nget: /**
  @this {org_apache_flex_A} */ function() {\n  return null;\n},\nset: /** @this {org_apache_flex_A} */ function(value) {\n}},\n/** @expose */\nfoo1: {\nget: /** @this {org_apache_flex_A} */ function() {\n  return null;\n},\nset: /** @this {org_apache_flex_A} */ function(value) {\n}},\n/** @expose */\nfoo6: {\nget: /** @this {org_apache_flex_A} */ function() {\n  return null;\n},\nset: /** @this {org_apache_flex_A} */ function(value) {\n}}}\n);");
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b974c9aa/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
index 84ddd03..9691b70 100644
--- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
@@ -104,7 +104,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
                 "public class B {public function b(s:String):Boolean {return this.c + 10; } public function get c():int { return 0; }}",
                 IBinaryOperatorNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitBinaryOperator(node);
-        assertOut("this.get_c() + 10");
+        assertOut("this.c + 10");
     }
 
     @Test
@@ -134,7 +134,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
                 "public class B {public function set b(value:int):void {}; public function c() { b = 1; }}",
                 IBinaryOperatorNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitBinaryOperator(node);
-        assertOut("this.set_b(1)");
+        assertOut("this.b = 1");
     }
 
     @Test
@@ -144,7 +144,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
                 "public class B {public function set b(value:int):void {}; public function c() { this.b = 1; }}",
                 IBinaryOperatorNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitBinaryOperator(node);
-        assertOut("this.set_b(1)");
+        assertOut("this.b = 1");
     }
 
     @Test
@@ -168,7 +168,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
 
         ((JSFlexJSEmitter)asEmitter).thisClass = def;
         asBlockWalker.visitBinaryOperator(bnode);
-        assertOut("this.set_b(1)");
+        assertOut("this.b = 1");
     }
 
     @Test
@@ -192,7 +192,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
 
         ((JSFlexJSEmitter)asEmitter).thisClass = def;
         asBlockWalker.visitBinaryOperator(bnode);
-        assertOut("this.set_b(1)");
+        assertOut("this.b = 1");
     }
 
     @Test
@@ -202,7 +202,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
                 "public class B {public function set b(value:int):void {}; public function c(other:B) { other.b = 1; }}",
                 IBinaryOperatorNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitBinaryOperator(node);
-        assertOut("other.set_b(1)");
+        assertOut("other.b = 1");
     }
 
     @Test
@@ -212,7 +212,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
                 "public class B {public function set b(value:int):void {}; public function get d():B {}; public function c(other:B) { d.d.b = 1; }}",
                 IBinaryOperatorNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitBinaryOperator(node);
-        assertOut("this.get_d().get_d().set_b(1)");
+        assertOut("this.d.d.b = 1");
     }
 
     @Test
@@ -222,7 +222,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
                 "public class B {public function set b(value:int):void {}; public function get d():B {}; public function c(other:B) { other.d.b = 1; }}",
                 IBinaryOperatorNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitBinaryOperator(node);
-        assertOut("other.get_d().set_b(1)");
+        assertOut("other.d.b = 1");
     }
 
     @Test
@@ -232,7 +232,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
                 "public class B {public function set b(value:int):void {}; public function c() { b = b + 1; }}",
                 IBinaryOperatorNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitBinaryOperator(node);
-        assertOut("this.set_b(this.get_b() + 1)");
+        assertOut("this.b = this.b + 1");
     }
 
     @Test
@@ -262,7 +262,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
                 "public class B {[Bindable] public var b:int; public function c() { b = 1; }}",
                 IBinaryOperatorNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitBinaryOperator(node);
-        assertOut("this.set_b(1)");
+        assertOut("this.b = 1");
     }
 
     @Test
@@ -272,7 +272,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
                 "public class B {[Bindable] public var b:int; public function c() { this.b = 1; }}",
                 IBinaryOperatorNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitBinaryOperator(node);
-        assertOut("this.set_b(1)");
+        assertOut("this.b = 1");
     }
 
     @Test
@@ -282,7 +282,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
                 "public class B {[Bindable] public var b:int; public function c(other:B) { other.b = 1; }}",
                 IBinaryOperatorNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitBinaryOperator(node);
-        assertOut("other.set_b(1)");
+        assertOut("other.b = 1");
     }
 
     @Test
@@ -292,7 +292,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
                 "public class B {[Bindable] public var b:int; [Bindable] public var d:B; public function c(other:B) { d.d.b = 1; }}",
                 IBinaryOperatorNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitBinaryOperator(node);
-        assertOut("this.get_d().get_d().set_b(1)");
+        assertOut("this.d.d.b = 1");
     }
 
     @Test
@@ -302,7 +302,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
                 "public class B {[Bindable] public var b:int; [Bindable] public var d:B; public function c(other:B) { other.d.b = 1; }}",
                 IBinaryOperatorNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitBinaryOperator(node);
-        assertOut("other.get_d().set_b(1)");
+        assertOut("other.d.b = 1");
     }
 
     @Test
@@ -312,7 +312,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
                 "public class B {[Bindable] public var b:int; public function c() { b = b + 1; }}",
                 IBinaryOperatorNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitBinaryOperator(node);
-        assertOut("this.set_b(this.get_b() + 1)");
+        assertOut("this.b = this.b + 1");
     }
 
     @Test
@@ -372,7 +372,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
                 "public class B {[Bindable] public var b:int; public var d:B; public function c(other:B) { d.d.b = 1; }}",
                 IBinaryOperatorNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitBinaryOperator(node);
-        assertOut("this.d.d.set_b(1)");
+        assertOut("this.d.d.b = 1");
     }
 
     @Test
@@ -392,7 +392,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
                 "public class B {[Bindable] public var b:int; public var d:B; public function c(other:B) { other.d.b = 1; }}",
                 IBinaryOperatorNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitBinaryOperator(node);
-        assertOut("other.d.set_b(1)");
+        assertOut("other.d.b = 1");
     }
 
     @Test
@@ -434,7 +434,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
         IBinaryOperatorNode bnode = (IBinaryOperatorNode) findFirstDescendantOfType(
                 node, IBinaryOperatorNode.class);
         asBlockWalker.visitBinaryOperator(bnode);
-        assertOut("foo_bar_B.set_b(1)");
+        assertOut("foo_bar_B.b = 1");
     }
 
     @Test
@@ -446,7 +446,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
         IBinaryOperatorNode bnode = (IBinaryOperatorNode) findFirstDescendantOfType(
                 node, IBinaryOperatorNode.class);
         asBlockWalker.visitBinaryOperator(bnode);
-        assertOut("foo_bar_B.set_b(1)");
+        assertOut("foo_bar_B.b = 1");
     }
 
     @Test
@@ -458,7 +458,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
         IBinaryOperatorNode bnode = (IBinaryOperatorNode) findFirstDescendantOfType(
                 node, IBinaryOperatorNode.class);
         asBlockWalker.visitBinaryOperator(bnode);
-        assertOut("foo_bar_B.get_d().set_b(1)");
+        assertOut("foo_bar_B.d.b = 1");
     }
 
     @Test
@@ -482,7 +482,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
 
         ((JSFlexJSEmitter)asEmitter).thisClass = def;
         asBlockWalker.visitBinaryOperator(bnode);
-        assertOut("foo_bar_B.get_d().set_b(1)");
+        assertOut("foo_bar_B.d.b = 1");
     }
 
     @Test
@@ -494,7 +494,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
         IBinaryOperatorNode bnode = (IBinaryOperatorNode) findFirstDescendantOfType(
                 node, IBinaryOperatorNode.class);
         asBlockWalker.visitBinaryOperator(bnode);
-        assertOut("foo_bar_B.set_b(foo_bar_B.get_b() + 1)");
+        assertOut("foo_bar_B.b = foo_bar_B.b + 1");
     }
 
     @Test
@@ -542,7 +542,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
 
         ((JSFlexJSEmitter)asEmitter).thisClass = def;
         asBlockWalker.visitBinaryOperator(bnode);
-        assertOut("org_apache_flex_utils_Language.as(this.model, foo_bar_E, true).set_labelText(null)");
+        assertOut("org_apache_flex_utils_Language.as(this.model, foo_bar_E, true).labelText = null");
     }
 
     @Test
@@ -636,7 +636,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
     {
         IClassNode node = (IClassNode) getNode("import spark.components.Button; public class B implements Button { public function B() { Button(b).label = ''; } }", ClassNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @implements {spark_components_Button}\n */\nB = function() {\n  org_apache_flex_utils_Language.as(b, spark_components_Button, true).set_label('');\n};");
+        assertOut("/**\n * @constructor\n * @implements {spark_components_Button}\n */\nB = function() {\n  org_apache_flex_utils_Language.as(b, spark_components_Button, true).label = '';\n};");
     }
 
     @Test
@@ -644,7 +644,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
     {
         IFunctionNode node = getMethod("function foo(){var foo:Object = FalconTest_A(bar).bar = '';}; public function get bar():Object { return this; };");
         asBlockWalker.visitFunction(node);
-        assertOut("FalconTest_A.prototype.foo = function() {\n  var /** @type {Object} */ foo = org_apache_flex_utils_Language.as(this.get_bar(), FalconTest_A, true).set_bar('');\n}");
+        assertOut("FalconTest_A.prototype.foo = function() {\n  var /** @type {Object} */ foo = org_apache_flex_utils_Language.as(this.bar, FalconTest_A, true).bar = '';\n}");
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b974c9aa/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSInterface.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSInterface.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSInterface.java
index 1bc10f4..5d1028b 100644
--- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSInterface.java
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSInterface.java
@@ -43,7 +43,7 @@ public class TestFlexJSInterface extends TestGoogInterface
                 + "function get foo1():Object;"
                 + "function set foo1(value:Object):void;}");
         asBlockWalker.visitInterface(node);
-        assertOut("/**\n * @interface\n */\nIA = function() {\n};\n\n\n/**\n * @return {Object}\n */\nIA.prototype.get_foo1 = function() {};\n\n\n/**\n * @param {Object} value\n */\nIA.prototype.set_foo1 = function(value) {};");
+        assertOut("/**\n * @interface\n */\nIA = function() {\n};\nIA.prototype.foo1;");
     }
 
     @Override
@@ -54,7 +54,7 @@ public class TestFlexJSInterface extends TestGoogInterface
                 + "function baz1():Object;"
                 + "function baz2(value:Object):void;}");
         asBlockWalker.visitInterface(node);
-        assertOut("/**\n * @interface\n */\nIA = function() {\n};\n\n\n/**\n * @return {Object}\n */\nIA.prototype.baz1 = function() {};\n\n\n/**\n * @param {Object} value\n */\nIA.prototype.baz2 = function(value) {};");
+        assertOut("/**\n * @interface\n */\nIA = function() {\n};\nIA.prototype.baz1 = function() {\n};\nIA.prototype.baz2 = function(value) {\n};");
     }
 
     @Override
@@ -67,7 +67,7 @@ public class TestFlexJSInterface extends TestGoogInterface
                 + "function baz1():Object;"
                 + "function baz2(value:Object):void;}");
         asBlockWalker.visitInterface(node);
-        assertOut("/**\n * @interface\n */\nIA = function() {\n};\n\n\n/**\n * @return {Object}\n */\nIA.prototype.get_foo1 = function() {};\n\n\n/**\n * @param {Object} value\n */\nIA.prototype.set_foo1 = function(value) {};\n\n\n/**\n * @return {Object}\n */\nIA.prototype.baz1 = function() {};\n\n\n/**\n * @param {Object} value\n */\nIA.prototype.baz2 = function(value) {};");
+        assertOut("/**\n * @interface\n */\nIA = function() {\n};\nIA.prototype.foo1;\nIA.prototype.baz1 = function() {\n};\nIA.prototype.baz2 = function(value) {\n};");
     }
 
     protected IBackend createBackend()

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b974c9aa/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/goog/TestGoogClass.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/goog/TestGoogClass.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/goog/TestGoogClass.java
index 791e7d4..bbe0720 100644
--- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/goog/TestGoogClass.java
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/goog/TestGoogClass.java
@@ -81,7 +81,7 @@ public class TestGoogClass extends TestClass
     {
         IClassNode node = getClassNode("public class A extends Button {public function A() {}}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends {spark.components.Button}\n */\norg.apache.flex.A = function() {\n\torg.apache.flex.A.base(this, 'constructor');\n}\ngoog.inherits(org.apache.flex.A, spark.components.Button);");
+        assertOut("/**\n * @constructor\n * @extends {spark.components.Button}\n */\norg.apache.flex.A = function() {\n\torg.apache.flex.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.flex.A, spark.components.Button);");
     }
 
     @Override
@@ -108,7 +108,7 @@ public class TestGoogClass extends TestClass
     {
         IClassNode node = getClassNode("public class A extends Button implements IEventDispatcher {public function A() {}}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends {spark.components.Button}\n * @implements {flash.events.IEventDispatcher}\n */\norg.apache.flex.A = function() {\n\torg.apache.flex.A.base(this, 'constructor');\n}\ngoog.inherits(org.apache.flex.A, spark.components.Button);");
+        assertOut("/**\n * @constructor\n * @extends {spark.components.Button}\n * @implements {flash.events.IEventDispatcher}\n */\norg.apache.flex.A = function() {\n\torg.apache.flex.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.flex.A, spark.components.Button);");
     }
 
     @Override
@@ -117,7 +117,7 @@ public class TestGoogClass extends TestClass
     {
         IClassNode node = getClassNode("public class A extends Button implements IEventDispatcher, ILogger {public function A() {}}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends {spark.components.Button}\n * @implements {flash.events.IEventDispatcher}\n * @implements {mx.logging.ILogger}\n */\norg.apache.flex.A = function() {\n\torg.apache.flex.A.base(this, 'constructor');\n}\ngoog.inherits(org.apache.flex.A, spark.components.Button);");
+        assertOut("/**\n * @constructor\n * @extends {spark.components.Button}\n * @implements {flash.events.IEventDispatcher}\n * @implements {mx.logging.ILogger}\n */\norg.apache.flex.A = function() {\n\torg.apache.flex.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.flex.A, spark.components.Button);");
     }
 
     @Override
@@ -126,7 +126,7 @@ public class TestGoogClass extends TestClass
     {
         IClassNode node = getClassNode("public final class A extends Button implements IEventDispatcher, ILogger {public function A() {}}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends {spark.components.Button}\n * @implements {flash.events.IEventDispatcher}\n * @implements {mx.logging.ILogger}\n */\norg.apache.flex.A = function() {\n\torg.apache.flex.A.base(this, 'constructor');\n}\ngoog.inherits(org.apache.flex.A, spark.components.Button);");
+        assertOut("/**\n * @constructor\n * @extends {spark.components.Button}\n * @implements {flash.events.IEventDispatcher}\n * @implements {mx.logging.ILogger}\n */\norg.apache.flex.A = function() {\n\torg.apache.flex.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.flex.A, spark.components.Button);");
     }
 
     @Override
@@ -135,7 +135,7 @@ public class TestGoogClass extends TestClass
     {
         IClassNode node = getClassNode("public class A extends spark.components.Button implements flash.events.IEventDispatcher, mx.logging.ILogger {public function A() {}}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends {spark.components.Button}\n * @implements {flash.events.IEventDispatcher}\n * @implements {mx.logging.ILogger}\n */\norg.apache.flex.A = function() {\n\torg.apache.flex.A.base(this, 'constructor');\n}\ngoog.inherits(org.apache.flex.A, spark.components.Button);");
+        assertOut("/**\n * @constructor\n * @extends {spark.components.Button}\n * @implements {flash.events.IEventDispatcher}\n * @implements {mx.logging.ILogger}\n */\norg.apache.flex.A = function() {\n\torg.apache.flex.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.flex.A, spark.components.Button);");
     }
 
     @Override
@@ -160,7 +160,7 @@ public class TestGoogClass extends TestClass
     {
         IClassNode node = getClassNode("public class A extends spark.components.Button { public function A() { super('foo', 42);}}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends {spark.components.Button}\n */\norg.apache.flex.A = function() {\n\tvar self = this;\n\torg.apache.flex.A.base(this, 'constructor', 'foo', 42);\n}\ngoog.inherits(org.apache.flex.A, spark.components.Button);");
+        assertOut("/**\n * @constructor\n * @extends {spark.components.Button}\n */\norg.apache.flex.A = function() {\n\tvar self = this;\n\torg.apache.flex.A.base(this, 'constructor', 'foo', 42);\n};\ngoog.inherits(org.apache.flex.A, spark.components.Button);");
     }
 
     @Override
@@ -178,7 +178,7 @@ public class TestGoogClass extends TestClass
     {
         IClassNode node = getClassNode("public class A extends spark.components.Button {public function A(arg1:String, arg2:int) {}}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends {spark.components.Button}\n * @param {string} arg1\n * @param {number} arg2\n */\norg.apache.flex.A = function(arg1, arg2) {\n\torg.apache.flex.A.base(this, 'constructor', arg1, arg2);\n}\ngoog.inherits(org.apache.flex.A, spark.components.Button);");
+        assertOut("/**\n * @constructor\n * @extends {spark.components.Button}\n * @param {string} arg1\n * @param {number} arg2\n */\norg.apache.flex.A = function(arg1, arg2) {\n\torg.apache.flex.A.base(this, 'constructor', arg1, arg2);\n};\ngoog.inherits(org.apache.flex.A, spark.components.Button);");
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b974c9aa/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/goog/TestGoogEmiter.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/goog/TestGoogEmiter.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/goog/TestGoogEmiter.java
index ac460d2..e1f1278 100644
--- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/goog/TestGoogEmiter.java
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/goog/TestGoogEmiter.java
@@ -50,7 +50,7 @@ public class TestGoogEmiter extends ASTestBase
                 + "return \"Don't \" + _privateVar + value; }";
         IFileNode node = compileAS(code);
         asBlockWalker.visitFile(node);
-        assertOut("goog.provide('com.example.components.MyTextButton');\n\ngoog.require('spark.components.Button');\n\n/**\n * @constructor\n * @extends {spark.components.Button}\n */\ncom.example.components.MyTextButton = function() {\n\tvar self = this;\n\tcom.example.components.MyTextButton.base(this, 'constructor');\n\tif (foo() != 42) {\n\t\tbar();\n\t}\n}\ngoog.inherits(com.example.components.MyTextButton, spark.components.Button);\n\n/**\n * @private\n * @type {string}\n */\ncom.example.components.MyTextButton.prototype._privateVar = \"do \";\n\n/**\n * @type {number}\n */\ncom.example.components.MyTextButton.prototype.publicProperty = 100;\n\n/**\n * @param {string} value\n * @return {string}\n */\ncom.example.components.MyTextButton.prototype.myFunction = function(value) {\n\tvar self = this;\n\treturn \"Don't \" + self._privateVar + value;\n};");
+        assertOut("goog.provide('com.example.components.MyTextButton');\n\ngoog.require('spark.components.Button');\n\n/**\n * @constructor\n * @extends {spark.components.Button}\n */\ncom.example.components.MyTextButton = function() {\n\tvar self = this;\n\tcom.example.components.MyTextButton.base(this, 'constructor');\n\tif (foo() != 42) {\n\t\tbar();\n\t}\n};\ngoog.inherits(com.example.components.MyTextButton, spark.components.Button);\n\n/**\n * @private\n * @type {string}\n */\ncom.example.components.MyTextButton.prototype._privateVar = \"do \";\n\n/**\n * @type {number}\n */\ncom.example.components.MyTextButton.prototype.publicProperty = 100;\n\n/**\n * @param {string} value\n * @return {string}\n */\ncom.example.components.MyTextButton.prototype.myFunction = function(value) {\n\tvar self = this;\n\treturn \"Don't \" + self._privateVar + value;\n};");
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b974c9aa/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 5d6a1ca..5460952 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
@@ -46,49 +46,49 @@ FlexJSTest_again = function() {
    * @private
    * @type {org_apache_flex_core_SimpleCSSValuesImpl}
    */
-  this.$ID0;
+  this.$ID0_;
   
   /**
    * @private
    * @type {MyInitialView}
    */
-  this.$ID1;
+  this.$ID1_;
   
   /**
    * @private
    * @type {models_MyModel}
    */
-  this.$ID2;
+  this.$ID2_;
   
   /**
    * @private
    * @type {controllers_MyController}
    */
-  this.$ID3;
+  this.$ID3_;
   
   /**
    * @private
    * @type {org_apache_flex_net_HTTPService}
    */
-  this.service;
+  this.service_;
   
   /**
    * @private
    * @type {org_apache_flex_net_dataConverters_LazyCollection}
    */
-  this.collection;
+  this.collection_;
   
   /**
    * @private
    * @type {org_apache_flex_net_JSONInputParser}
    */
-  this.$ID4;
+  this.$ID4_;
   
   /**
    * @private
    * @type {StockDataJSONItemConverter}
    */
-  this.$ID5;
+  this.$ID5_;
   
   /**
    * @private
@@ -142,54 +142,38 @@ FlexJSTest_again.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'FlexJSTest_aga
  */
 FlexJSTest_again.prototype.$EH0 = function(event)
 {
-  org_apache_flex_utils_Language.as(this.model, models_MyModel, true).set_labelText('Hello World');
+  org_apache_flex_utils_Language.as(this.model, models_MyModel, true).labelText = 'Hello World';
 };
 
 
-/**
- * @expose
- * @return {org_apache_flex_net_HTTPService}
- */
-FlexJSTest_again.prototype.get_service = function()
-{
-  return this.service;
-};
-
-
-/**
- * @expose
- * @param {org_apache_flex_net_HTTPService} value
- */
-FlexJSTest_again.prototype.set_service = function(value)
-{
-  if (value != this.service) {
-    this.service = value;
-    this.dispatchEvent(org_apache_flex_events_ValueChangeEvent.createUpdateEvent(this, 'service', null, value));
+Object.defineProperties(FlexJSTest_again.prototype, /** @lends {FlexJSTest_again.prototype} */ {
+/** @expose */
+    service: {
+    /** @this {FlexJSTest_again} */
+    get: function() {
+      return this.service_;
+    },
+    /** @this {FlexJSTest_again} */
+    set: function(value) {
+      if (value != this.service_) {
+        this.service_ = value;
+        this.dispatchEvent(org_apache_flex_events_ValueChangeEvent.createUpdateEvent(this, 'service', null, value));
+      }
+    }
+  },
+  /** @expose */
+    collection: {
+    /** @this {FlexJSTest_again} */
+    get: function() {
+      return this.collection_;
+    },
+    /** @this {FlexJSTest_again} */
+    set: function(value) {
+      if (value != this.collection_) {
+        this.collection_ = value;
+        this.dispatchEvent(org_apache_flex_events_ValueChangeEvent.createUpdateEvent(this, 'collection', null, value));
+      }
+    }
   }
-};
-
-
-/**
- * @expose
- * @return {org_apache_flex_net_dataConverters_LazyCollection}
- */
-FlexJSTest_again.prototype.get_collection = function()
-{
-  return this.collection;
-};
-
-
-/**
- * @expose
- * @param {org_apache_flex_net_dataConverters_LazyCollection} value
- */
-FlexJSTest_again.prototype.set_collection = function(value)
-{
-  if (value != this.collection) {
-    this.collection = value;
-    this.dispatchEvent(org_apache_flex_events_ValueChangeEvent.createUpdateEvent(this, 'collection', null, value));
-  }
-};
-
-
+});
 

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b974c9aa/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 5f38962..6062278 100644
--- a/compiler.jx.tests/test-files/flexjs/files/MyInitialView_result.js
+++ b/compiler.jx.tests/test-files/flexjs/files/MyInitialView_result.js
@@ -51,139 +51,139 @@ MyInitialView = function() {
    * @private
    * @type {org_apache_flex_html_Label}
    */
-  this.lbl;
+  this.lbl_;
   
   /**
    * @private
    * @type {org_apache_flex_binding_SimpleBinding}
    */
-  this.$ID0;
+  this.$ID0_;
   
   /**
    * @private
    * @type {org_apache_flex_html_TextButton}
    */
-  this.$ID1;
+  this.$ID1_;
   
   /**
    * @private
    * @type {org_apache_flex_html_TextButton}
    */
-  this.$ID2;
+  this.$ID2_;
   
   /**
    * @private
    * @type {org_apache_flex_html_Label}
    */
-  this.timerLabel;
+  this.timerLabel_;
   
   /**
    * @private
    * @type {org_apache_flex_html_List}
    */
-  this.cityList;
+  this.cityList_;
   
   /**
    * @private
    * @type {org_apache_flex_binding_ConstantBinding}
    */
-  this.$ID3;
+  this.$ID3_;
   
   /**
    * @private
    * @type {org_apache_flex_html_TextArea}
    */
-  this.$ID5;
+  this.$ID5_;
   
   /**
    * @private
    * @type {org_apache_flex_binding_SimpleBinding}
    */
-  this.$ID4;
+  this.$ID4_;
   
   /**
    * @private
    * @type {org_apache_flex_html_TextInput}
    */
-  this.input;
+  this.input_;
   
   /**
    * @private
    * @type {org_apache_flex_html_TextButton}
    */
-  this.$ID6;
+  this.$ID6_;
   
   /**
    * @private
    * @type {org_apache_flex_html_CheckBox}
    */
-  this.checkbox;
+  this.checkbox_;
   
   /**
    * @private
    * @type {org_apache_flex_html_RadioButton}
    */
-  this.$ID7;
+  this.$ID7_;
   
   /**
    * @private
    * @type {org_apache_flex_html_RadioButton}
    */
-  this.$ID8;
+  this.$ID8_;
   
   /**
    * @private
    * @type {org_apache_flex_html_RadioButton}
    */
-  this.$ID9;
+  this.$ID9_;
   
   /**
    * @private
    * @type {org_apache_flex_html_RadioButton}
    */
-  this.$ID10;
+  this.$ID10_;
   
   /**
    * @private
    * @type {org_apache_flex_html_RadioButton}
    */
-  this.$ID11;
+  this.$ID11_;
   
   /**
    * @private
    * @type {org_apache_flex_html_RadioButton}
    */
-  this.$ID12;
+  this.$ID12_;
   
   /**
    * @private
    * @type {org_apache_flex_html_DropDownList}
    */
-  this.list;
+  this.list_;
   
   /**
    * @private
    * @type {org_apache_flex_binding_ConstantBinding}
    */
-  this.$ID13;
+  this.$ID13_;
   
   /**
    * @private
    * @type {org_apache_flex_html_TextButton}
    */
-  this.$ID14;
+  this.$ID14_;
   
   /**
    * @private
    * @type {org_apache_flex_html_ComboBox}
    */
-  this.comboBox;
+  this.comboBox_;
   
   /**
    * @private
    * @type {org_apache_flex_binding_ConstantBinding}
    */
-  this.$ID15;
+  this.$ID15_;
   
   /**
    * @private
@@ -215,40 +215,16 @@ MyInitialView.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'MyInitialView', q
 MyInitialView.prototype.timer;
 
 
-/**
- * @expose
- * @return {string}
- */
-MyInitialView.prototype.get_symbol = function() {
-  return org_apache_flex_utils_Language.as(this.get_list().get_selectedItem(), String);
-};
+;
 
 
-/**
- * @expose
- * @return {string}
- */
-MyInitialView.prototype.get_city = function() {
-  return org_apache_flex_utils_Language.as(this.get_cityList().get_selectedItem(), String);
-};
+;
 
 
-/**
- * @expose
- * @return {string}
- */
-MyInitialView.prototype.get_inputText = function() {
-  return this.get_input().get_text();
-};
+;
 
 
-/**
- * @expose
- * @return {string}
- */
-MyInitialView.prototype.get_comboBoxValue = function() {
-  return String(this.get_comboBox().get_selectedItem());
-};
+;
 
 
 /**
@@ -267,11 +243,32 @@ MyInitialView.prototype.startTimer = function(event) {
  * @param {org_apache_flex_events_Event} event
  */
 MyInitialView.prototype.timerHandler = function(event) {
-  this.get_timerLabel().set_text(this.timer.get_currentCount().toString());
+  this.timerLabel.text = this.timer.currentCount.toString();
 };
 
 
-/**
+Object.defineProperties(MyInitialView.prototype, /** @lends {MyInitialView.prototype} */ {
+/** @expose */
+comboBoxValue: {
+get: /** @this {MyInitialView} */ function() {
+  return String(this.comboBox.selectedItem);
+}},
+/** @expose */
+inputText: {
+get: /** @this {MyInitialView} */ function() {
+  return this.input.text;
+}},
+/** @expose */
+symbol: {
+get: /** @this {MyInitialView} */ function() {
+  return org_apache_flex_utils_Language.as(this.list.selectedItem, String);
+}},
+/** @expose */
+city: {
+get: /** @this {MyInitialView} */ function() {
+  return org_apache_flex_utils_Language.as(this.cityList.selectedItem, String);
+}}}
+);/**
  * @expose
  * @param {org_apache_flex_events_Event} event
  */
@@ -342,180 +339,116 @@ MyInitialView.prototype.$EH6 = function(event)
 };
 
 
-/**
- * @expose
- * @return {org_apache_flex_html_Label}
- */
-MyInitialView.prototype.get_lbl = function()
-{
-  return this.lbl;
-};
-
-
-/**
- * @expose
- * @param {org_apache_flex_html_Label} value
- */
-MyInitialView.prototype.set_lbl = function(value)
-{
-  if (value != this.lbl) {
-    this.lbl = value;
-    this.dispatchEvent(org_apache_flex_events_ValueChangeEvent.createUpdateEvent(this, 'lbl', null, value));
-  }
-};
-
-
-/**
- * @expose
- * @return {org_apache_flex_html_Label}
- */
-MyInitialView.prototype.get_timerLabel = function()
-{
-  return this.timerLabel;
-};
-
-
-/**
- * @expose
- * @param {org_apache_flex_html_Label} value
- */
-MyInitialView.prototype.set_timerLabel = function(value)
-{
-  if (value != this.timerLabel) {
-    this.timerLabel = value;
-    this.dispatchEvent(org_apache_flex_events_ValueChangeEvent.createUpdateEvent(this, 'timerLabel', null, value));
-  }
-};
-
-
-/**
- * @expose
- * @return {org_apache_flex_html_List}
- */
-MyInitialView.prototype.get_cityList = function()
-{
-  return this.cityList;
-};
-
-
-/**
- * @expose
- * @param {org_apache_flex_html_List} value
- */
-MyInitialView.prototype.set_cityList = function(value)
-{
-  if (value != this.cityList) {
-    this.cityList = value;
-    this.dispatchEvent(org_apache_flex_events_ValueChangeEvent.createUpdateEvent(this, 'cityList', null, value));
-  }
-};
-
-
-/**
- * @expose
- * @return {org_apache_flex_html_TextInput}
- */
-MyInitialView.prototype.get_input = function()
-{
-  return this.input;
-};
-
-
-/**
- * @expose
- * @param {org_apache_flex_html_TextInput} value
- */
-MyInitialView.prototype.set_input = function(value)
-{
-  if (value != this.input) {
-    this.input = value;
-    this.dispatchEvent(org_apache_flex_events_ValueChangeEvent.createUpdateEvent(this, 'input', null, value));
-  }
-};
-
-
-/**
- * @expose
- * @return {org_apache_flex_html_CheckBox}
- */
-MyInitialView.prototype.get_checkbox = function()
-{
-  return this.checkbox;
-};
-
-
-/**
- * @expose
- * @param {org_apache_flex_html_CheckBox} value
- */
-MyInitialView.prototype.set_checkbox = function(value)
-{
-  if (value != this.checkbox) {
-    this.checkbox = value;
-    this.dispatchEvent(org_apache_flex_events_ValueChangeEvent.createUpdateEvent(this, 'checkbox', null, value));
-  }
-};
-
-
-/**
- * @expose
- * @return {org_apache_flex_html_DropDownList}
- */
-MyInitialView.prototype.get_list = function()
-{
-  return this.list;
-};
-
-
-/**
- * @expose
- * @param {org_apache_flex_html_DropDownList} value
- */
-MyInitialView.prototype.set_list = function(value)
-{
-  if (value != this.list) {
-    this.list = value;
-    this.dispatchEvent(org_apache_flex_events_ValueChangeEvent.createUpdateEvent(this, 'list', null, value));
-  }
-};
-
-
-/**
- * @expose
- * @return {org_apache_flex_html_ComboBox}
- */
-MyInitialView.prototype.get_comboBox = function()
-{
-  return this.comboBox;
-};
-
-
-/**
- * @expose
- * @param {org_apache_flex_html_ComboBox} value
- */
-MyInitialView.prototype.set_comboBox = function(value)
-{
-  if (value != this.comboBox) {
-    this.comboBox = value;
-    this.dispatchEvent(org_apache_flex_events_ValueChangeEvent.createUpdateEvent(this, 'comboBox', null, value));
-  }
-};
-
-
-/**
- * @override
- * @return {Array} the Array of UI element descriptors.
- */
-MyInitialView.prototype.get_MXMLDescriptor = function()
-{
-  if (this.mxmldd == undefined)
-  {
-    /** @type {Array} */
-    var arr = MyInitialView.base(this, 'get_MXMLDescriptor');
-    /** @type {Array} */
-    var data = [
-org_apache_flex_html_Label,
+Object.defineProperties(MyInitialView.prototype, /** @lends {MyInitialView.prototype} */ {
+/** @expose */
+    lbl: {
+    /** @this {MyInitialView} */
+    get: function() {
+      return this.lbl_;
+    },
+    /** @this {MyInitialView} */
+    set: function(value) {
+      if (value != this.lbl_) {
+        this.lbl_ = value;
+        this.dispatchEvent(org_apache_flex_events_ValueChangeEvent.createUpdateEvent(this, 'lbl', null, value));
+      }
+    }
+  },
+  /** @expose */
+    timerLabel: {
+    /** @this {MyInitialView} */
+    get: function() {
+      return this.timerLabel_;
+    },
+    /** @this {MyInitialView} */
+    set: function(value) {
+      if (value != this.timerLabel_) {
+        this.timerLabel_ = value;
+        this.dispatchEvent(org_apache_flex_events_ValueChangeEvent.createUpdateEvent(this, 'timerLabel', null, value));
+      }
+    }
+  },
+  /** @expose */
+    cityList: {
+    /** @this {MyInitialView} */
+    get: function() {
+      return this.cityList_;
+    },
+    /** @this {MyInitialView} */
+    set: function(value) {
+      if (value != this.cityList_) {
+        this.cityList_ = value;
+        this.dispatchEvent(org_apache_flex_events_ValueChangeEvent.createUpdateEvent(this, 'cityList', null, value));
+      }
+    }
+  },
+  /** @expose */
+    input: {
+    /** @this {MyInitialView} */
+    get: function() {
+      return this.input_;
+    },
+    /** @this {MyInitialView} */
+    set: function(value) {
+      if (value != this.input_) {
+        this.input_ = value;
+        this.dispatchEvent(org_apache_flex_events_ValueChangeEvent.createUpdateEvent(this, 'input', null, value));
+      }
+    }
+  },
+  /** @expose */
+    checkbox: {
+    /** @this {MyInitialView} */
+    get: function() {
+      return this.checkbox_;
+    },
+    /** @this {MyInitialView} */
+    set: function(value) {
+      if (value != this.checkbox_) {
+        this.checkbox_ = value;
+        this.dispatchEvent(org_apache_flex_events_ValueChangeEvent.createUpdateEvent(this, 'checkbox', null, value));
+      }
+    }
+  },
+  /** @expose */
+    list: {
+    /** @this {MyInitialView} */
+    get: function() {
+      return this.list_;
+    },
+    /** @this {MyInitialView} */
+    set: function(value) {
+      if (value != this.list_) {
+        this.list_ = value;
+        this.dispatchEvent(org_apache_flex_events_ValueChangeEvent.createUpdateEvent(this, 'list', null, value));
+      }
+    }
+  },
+  /** @expose */
+    comboBox: {
+    /** @this {MyInitialView} */
+    get: function() {
+      return this.comboBox_;
+    },
+    /** @this {MyInitialView} */
+    set: function(value) {
+      if (value != this.comboBox_) {
+        this.comboBox_ = value;
+        this.dispatchEvent(org_apache_flex_events_ValueChangeEvent.createUpdateEvent(this, 'comboBox', null, value));
+      }
+    }
+  },
+  'MXMLDescriptor': {
+    /** @this {MyInitialView} */
+    get: function() {
+      {
+        if (this.mxmldd == undefined)
+        {
+          /** @type {Array} */
+          var arr = org_apache_flex_utils_Language.superGetter(MyInitialView,this, 'MXMLDescriptor');
+          /** @type {Array} */
+          var data = [
+      org_apache_flex_html_Label,
 4,
 'id',
 true,
@@ -887,14 +820,16 @@ null, [org_apache_flex_binding_ConstantBinding, 4, '_id', true, '$ID15', 'source
 'change',
 this.$EH6,
 null
-];
-  
-    if (arr)
-      this.mxmldd = arr.concat(data);
-    else
-      this.mxmldd = data;
-  }
-  return this.mxmldd;
-};
-
-
+      ];
+        
+          if (arr)
+            this.mxmldd = arr.concat(data);
+          else
+            this.mxmldd = data;
+        }
+        return this.mxmldd;
+      }
+      }
+    }
+  });
+  
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b974c9aa/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 27d163b..128b5e6 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
@@ -76,10 +76,10 @@ controllers_MyController.prototype.viewChangeHandler = function(event) {
  * @param {org_apache_flex_events_Event} event
  */
 controllers_MyController.prototype.buttonClickHandler = function(event) {
-  var /** @type {string} */ sym = org_apache_flex_utils_Language.as(this.app.initialView, MyInitialView, true).get_symbol();
-  this.app.get_service().set_url(this.queryBegin + sym + this.queryEnd);
-  this.app.get_service().send();
-  this.app.get_service().addEventListener("complete", goog.bind(this.completeHandler, this));
+  var /** @type {string} */ sym = org_apache_flex_utils_Language.as(this.app.initialView, MyInitialView, true).symbol;
+  this.app.service.url = this.queryBegin + sym + this.queryEnd;
+  this.app.service.send();
+  this.app.service.addEventListener("complete", goog.bind(this.completeHandler, this));
 };
 
 
@@ -88,7 +88,7 @@ controllers_MyController.prototype.buttonClickHandler = function(event) {
  * @param {org_apache_flex_events_Event} event
  */
 controllers_MyController.prototype.completeHandler = function(event) {
-  org_apache_flex_utils_Language.as(this.app.model, models_MyModel, true).set_labelText(org_apache_flex_utils_Language.as(this.app.get_collection().getItemAt(0), String));
+  org_apache_flex_utils_Language.as(this.app.model, models_MyModel, true).labelText = org_apache_flex_utils_Language.as(this.app.collection.getItemAt(0), String);
 };
 
 
@@ -97,7 +97,7 @@ controllers_MyController.prototype.completeHandler = function(event) {
  * @param {org_apache_flex_events_Event} event
  */
 controllers_MyController.prototype.listChangedHandler = function(event) {
-  org_apache_flex_utils_Language.as(this.app.model, models_MyModel, true).set_labelText(org_apache_flex_utils_Language.as(this.app.initialView, MyInitialView, true).get_symbol());
+  org_apache_flex_utils_Language.as(this.app.model, models_MyModel, true).labelText = org_apache_flex_utils_Language.as(this.app.initialView, MyInitialView, true).symbol;
 };
 
 
@@ -106,7 +106,7 @@ controllers_MyController.prototype.listChangedHandler = function(event) {
  * @param {org_apache_flex_events_Event} event
  */
 controllers_MyController.prototype.cityListChangeHandler = function(event) {
-  org_apache_flex_utils_Language.as(this.app.model, models_MyModel, true).set_labelText(org_apache_flex_utils_Language.as(this.app.initialView, MyInitialView, true).get_city());
+  org_apache_flex_utils_Language.as(this.app.model, models_MyModel, true).labelText = org_apache_flex_utils_Language.as(this.app.initialView, MyInitialView, true).city;
 };
 
 
@@ -115,7 +115,7 @@ controllers_MyController.prototype.cityListChangeHandler = function(event) {
  * @param {org_apache_flex_events_Event} event
  */
 controllers_MyController.prototype.transferClickHandler = function(event) {
-  org_apache_flex_utils_Language.as(this.app.model, models_MyModel, true).set_labelText(org_apache_flex_utils_Language.as(this.app.initialView, MyInitialView, true).get_inputText());
+  org_apache_flex_utils_Language.as(this.app.model, models_MyModel, true).labelText = org_apache_flex_utils_Language.as(this.app.initialView, MyInitialView, true).inputText;
 };
 
 
@@ -124,7 +124,7 @@ controllers_MyController.prototype.transferClickHandler = function(event) {
  * @param {org_apache_flex_events_Event} event
  */
 controllers_MyController.prototype.comboBoxChangeHandler = function(event) {
-  org_apache_flex_utils_Language.as(this.app.model, models_MyModel, true).set_labelText(org_apache_flex_utils_Language.as(this.app.initialView, MyInitialView, true).get_comboBoxValue());
+  org_apache_flex_utils_Language.as(this.app.model, models_MyModel, true).labelText = org_apache_flex_utils_Language.as(this.app.initialView, MyInitialView, true).comboBoxValue;
 };
 
 

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b974c9aa/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 4f73cf3..5921236 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
@@ -42,23 +42,14 @@ models_MyModel.prototype._labelText;
 
 /**
  * @expose
- * @return {string}
+ * @type {string}
  */
-models_MyModel.prototype.get_labelText = function() {
-  return this._labelText;
-};
+models_MyModel.prototype.labelText;
 
+;
 
-/**
- * @expose
- * @param {string} value
- */
-models_MyModel.prototype.set_labelText = function(value) {
-  if (value != this._labelText) {
-    this._labelText = value;
-    this.dispatchEvent(new org_apache_flex_events_Event("labelTextChanged"));
-  }
-};
+
+;
 
 
 /**
@@ -70,11 +61,11 @@ models_MyModel.prototype._strings = ["AAPL", "ADBE", "GOOG", "MSFT", "YHOO"];
 
 /**
  * @expose
- * @return {Array}
+ * @type {Array}
  */
-models_MyModel.prototype.get_strings = function() {
-  return this._strings;
-};
+models_MyModel.prototype.strings;
+
+;
 
 
 /**
@@ -86,11 +77,33 @@ models_MyModel.prototype._cities = ["London", "Miami", "Paris", "Sydney", "Tokyo
 
 /**
  * @expose
- * @return {Array}
+ * @type {Array}
  */
-models_MyModel.prototype.get_cities = function() {
+models_MyModel.prototype.cities;
+
+;Object.defineProperties(models_MyModel.prototype, /** @lends {models_MyModel.prototype} */ {
+/** @expose */
+labelText: {
+get: /** @this {models_MyModel} */ function() {
+  return this._labelText;
+},
+set: /** @this {models_MyModel} */ function(value) {
+  if (value != this._labelText) {
+    this._labelText = value;
+    this.dispatchEvent(new org_apache_flex_events_Event("labelTextChanged"));
+  }
+}},
+/** @expose */
+cities: {
+get: /** @this {models_MyModel} */ function() {
   return this._cities;
-};
+}},
+/** @expose */
+strings: {
+get: /** @this {models_MyModel} */ function() {
+  return this._strings;
+}}}
+);
 
 
 /**

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b974c9aa/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 19275b0..78e3f86 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
@@ -28,21 +28,9 @@ goog.provide('interfaces_IE');
  */
 interfaces_IE = function() {
 };
-
-
-interfaces_IE.prototype.myMethod = function() {};
-
-
-/**
- * @return {string}
- */
-interfaces_IE.prototype.get_myProp = function() {};
-
-
-/**
- * @param {string} value
- */
-interfaces_IE.prototype.set_myProp = function(value) {};
+interfaces_IE.prototype.myMethod = function() {
+};
+interfaces_IE.prototype.myProp;
 
 
 /**
@@ -50,4 +38,4 @@ interfaces_IE.prototype.set_myProp = function(value) {};
  *
  * @type {Object.<string, Array.<Object>>}
  */
-interfaces_IE.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'IE', qName: 'interfaces_IE'}] };
+interfaces_IE.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'IE', qName: 'interfaces_IE'}] };
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b974c9aa/compiler.jx.tests/test-files/flexjs/projects/super/Base_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/projects/super/Base_result.js b/compiler.jx.tests/test-files/flexjs/projects/super/Base_result.js
index e482ccc..e9f3263 100644
--- a/compiler.jx.tests/test-files/flexjs/projects/super/Base_result.js
+++ b/compiler.jx.tests/test-files/flexjs/projects/super/Base_result.js
@@ -38,24 +38,25 @@ goog.inherits(Base, Super);
 
 /**
  * @expose
- * @return {string}
- * @override
+ * @type {string}
  */
-Base.prototype.get_text = function() {
-  return "A" + Base.base(this, 'get_text');
-};
+Base.prototype.text;
 
+;
 
-/**
- * @expose
- * @param {string} value
- * @override
- */
-Base.prototype.set_text = function(value) {
-  if (value != Base.base(this, 'get_text')) {
-    Base.base(this, 'set_text', "B" + value);
+
+;Object.defineProperties(Base.prototype, /** @lends {Base.prototype} */ {
+/** @expose */
+text: {
+get: /** @this {Base} */ function() {
+  return "A" + text;
+},
+set: /** @this {Base} */ function(value) {
+  if (value != text) {
+    org_apache_flex_utils_Language.superSetter(Base, this, 'text', "B" + value);
   }
-};
+}}}
+);
 
 
 /**

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b974c9aa/compiler.jx.tests/test-files/flexjs/projects/super/Super_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/projects/super/Super_result.js b/compiler.jx.tests/test-files/flexjs/projects/super/Super_result.js
index 5a11768..d35c1e0 100644
--- a/compiler.jx.tests/test-files/flexjs/projects/super/Super_result.js
+++ b/compiler.jx.tests/test-files/flexjs/projects/super/Super_result.js
@@ -39,22 +39,25 @@ Super.prototype._text = '';
 
 /**
  * @expose
- * @return {string}
+ * @type {string}
  */
-Super.prototype.get_text = function() {
-  return this._text;
-};
+Super.prototype.text;
 
+;
 
-/**
- * @expose
- * @param {string} value
- */
-Super.prototype.set_text = function(value) {
+
+;Object.defineProperties(Super.prototype, /** @lends {Super.prototype} */ {
+/** @expose */
+text: {
+get: /** @this {Super} */ function() {
+  return this._text;
+},
+set: /** @this {Super} */ function(value) {
   if (value != this._text) {
     this._text = value;
   }
-};
+}}}
+);
 
 
 /**
@@ -62,4 +65,4 @@ Super.prototype.set_text = function(value) {
  *
  * @type {Object.<string, Array.<Object>>}
  */
-Super.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'Super', qName: 'Super'}] };
+Super.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'Super', qName: 'Super'}] };
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b974c9aa/compiler.jx.tests/test-files/goog/files/call-super_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/goog/files/call-super_result.js b/compiler.jx.tests/test-files/goog/files/call-super_result.js
index 6b751fb..d877c86 100644
--- a/compiler.jx.tests/test-files/goog/files/call-super_result.js
+++ b/compiler.jx.tests/test-files/goog/files/call-super_result.js
@@ -25,7 +25,7 @@ goog.require('spark.components.Button');
 org.apache.flex.A = function(z) {
 	var self = this;
 	org.apache.flex.A.base(this, 'constructor', z);
-}
+};
 goog.inherits(org.apache.flex.A, spark.components.Button);
 
 /**
@@ -38,4 +38,4 @@ org.apache.flex.A.prototype.hasSuperCall = function(a, b) {
 	org.apache.flex.A.base(this, 'hasSuperCall', a, b, 100);
 	var /** @type {string} */ result = myRegularFunctionCall(-1);
 	return result;
-};
+};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b974c9aa/compiler.jx.tests/test-files/goog/files/output.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/goog/files/output.js b/compiler.jx.tests/test-files/goog/files/output.js
index a2d00e5..af542a3 100644
--- a/compiler.jx.tests/test-files/goog/files/output.js
+++ b/compiler.jx.tests/test-files/goog/files/output.js
@@ -25,7 +25,7 @@ org.apache.flex.A = function() {
 	var self = this;
 	org.apache.flex.A.base(this, 'constructor');
 	self.trace(typeof("a"));
-}
+};
 goog.inherits(org.apache.flex.A, spark.components.Button);
 
 /**

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b974c9aa/compiler.jx.tests/test-files/goog/files/poc_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/goog/files/poc_result.js b/compiler.jx.tests/test-files/goog/files/poc_result.js
index 3b983ef..e9d176a 100644
--- a/compiler.jx.tests/test-files/goog/files/poc_result.js
+++ b/compiler.jx.tests/test-files/goog/files/poc_result.js
@@ -26,7 +26,7 @@ Example = function() {
 	var self = this;
 	Example.base(this, 'constructor');
 	self.init();
-}
+};
 goog.inherits(Example, spark.components.Group);
 
 /**

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b974c9aa/compiler.jx.tests/test-files/goog/files/qualify-new-object_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/goog/files/qualify-new-object_result.js b/compiler.jx.tests/test-files/goog/files/qualify-new-object_result.js
index b5821e4..e10f9fd 100644
--- a/compiler.jx.tests/test-files/goog/files/qualify-new-object_result.js
+++ b/compiler.jx.tests/test-files/goog/files/qualify-new-object_result.js
@@ -24,7 +24,7 @@ org.apache.flex.A = function() {
 	var self = this;
 	org.apache.flex.A.base(this, 'constructor');
 	self.init();
-}
+};
 goog.inherits(org.apache.flex.A, flash.events.EventDispatcher);
 
 /**

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b974c9aa/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
index 46a4da9..51a3510 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
@@ -121,9 +121,16 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
     }
     
     HashMap<String, PropertyNodes> propertyMap = new HashMap<String, PropertyNodes>();
+    HashMap<String, PropertyNodes> staticPropertyMap = new HashMap<String, PropertyNodes>();
     ArrayList<String> bindableVars = new ArrayList<String>();
     
     @Override
+    protected void writeIndent()
+    {
+        write(JSFlexJSEmitterTokens.INDENT);
+    }
+    
+    @Override
     protected String getIndent(int numIndent)
     {
         final StringBuilder sb = new StringBuilder();
@@ -312,6 +319,63 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
             write(ASEmitterTokens.PAREN_CLOSE);
             write(ASEmitterTokens.SEMICOLON);
         }
+        if (!staticPropertyMap.isEmpty())
+        {
+            write(JSGoogEmitterTokens.OBJECT);
+            write(ASEmitterTokens.MEMBER_ACCESS);
+            write(JSEmitterTokens.DEFINE_PROPERTIES);
+            write(ASEmitterTokens.PAREN_OPEN);
+            String qname = definition.getQualifiedName();
+            write(formatQualifiedName(qname));
+            write(ASEmitterTokens.COMMA);
+            write(ASEmitterTokens.SPACE);
+            write("/** @lends {" + formatQualifiedName(qname) + "} */ ");
+            writeNewline(ASEmitterTokens.BLOCK_OPEN);
+            
+	        Set<String> propertyNames = staticPropertyMap.keySet();
+	        boolean firstTime = true;
+	        for (String propName : propertyNames)
+	        {
+	        	if (firstTime)
+	        		firstTime = false;
+	        	else
+	                writeNewline(ASEmitterTokens.COMMA);
+	        		
+	        	PropertyNodes p = staticPropertyMap.get(propName);
+	            writeNewline("/** @expose */");
+	        	write(propName);
+	        	write(ASEmitterTokens.COLON);
+	            write(ASEmitterTokens.SPACE);
+	            writeNewline(ASEmitterTokens.BLOCK_OPEN);
+	            if (p.getter != null)
+	            {
+	            	write(ASEmitterTokens.GET);
+		        	write(ASEmitterTokens.COLON);
+		            write(ASEmitterTokens.SPACE);
+		            write(ASEmitterTokens.FUNCTION);
+		            emitParameters(p.getter.getParameterNodes());
+
+		            emitDefinePropertyFunction(p.getter);
+	            }
+	            if (p.setter != null)
+	            {
+	            	if (p.getter != null)
+	                    writeNewline(ASEmitterTokens.COMMA);
+	            		
+	            	write(ASEmitterTokens.SET);
+		        	write(ASEmitterTokens.COLON);
+		            write(ASEmitterTokens.SPACE);
+		            write(ASEmitterTokens.FUNCTION);
+		            emitParameters(p.setter.getParameterNodes());
+
+		            emitDefinePropertyFunction(p.setter);
+	            }
+	            write(ASEmitterTokens.BLOCK_CLOSE);	            
+	        }
+            writeNewline(ASEmitterTokens.BLOCK_CLOSE);
+            write(ASEmitterTokens.PAREN_CLOSE);
+            write(ASEmitterTokens.SEMICOLON);
+        }
     }
 
     private void loadImportIgnores(String doc) 
@@ -1379,12 +1443,15 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
     @Override
     public void emitGetAccessor(IGetterNode node)
     {
+        ModifiersSet modifierSet = node.getDefinition().getModifiers();
+    	boolean isStatic = (modifierSet != null && modifierSet.hasModifier(ASModifier.STATIC));
+    	HashMap<String, PropertyNodes> map = isStatic ? staticPropertyMap : propertyMap;
     	String name = node.getName();
-    	PropertyNodes p = propertyMap.get(name);
+    	PropertyNodes p = map.get(name);
     	if (p == null)
     	{
     		p = new PropertyNodes();
-    		propertyMap.put(name, p);
+    		map.put(name, p);
     	}
     	p.getter = node;
         FunctionNode fn = (FunctionNode) node;
@@ -1394,12 +1461,15 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
     @Override
     public void emitSetAccessor(ISetterNode node)
     {
+        ModifiersSet modifierSet = node.getDefinition().getModifiers();
+    	boolean isStatic = (modifierSet != null && modifierSet.hasModifier(ASModifier.STATIC));
+    	HashMap<String, PropertyNodes> map = isStatic ? staticPropertyMap : propertyMap;
     	String name = node.getName();
-    	PropertyNodes p = propertyMap.get(name);
+    	PropertyNodes p = map.get(name);
     	if (p == null)
     	{
     		p = new PropertyNodes();
-    		propertyMap.put(name, p);
+    		map.put(name, p);
     	}
     	p.setter = node;
         FunctionNode fn = (FunctionNode) node;

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b974c9aa/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
index 58cc59f..b253fbc 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
@@ -101,6 +101,11 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
         return new JSGoogDocEmitter(this);
     }
 
+    protected void writeIndent()
+    {
+        write(ASEmitterTokens.INDENT);
+    }
+    
     //--------------------------------------------------------------------------
     // 
     //--------------------------------------------------------------------------
@@ -493,7 +498,7 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
 
         if (isConstructor && hasSuperClass)
         {
-            writeNewline();
+            writeNewline(ASEmitterTokens.SEMICOLON);
             write(JSGoogEmitterTokens.GOOG_INHERITS);
             write(ASEmitterTokens.PAREN_OPEN);
             write(formatQualifiedName(qname));
@@ -736,7 +741,7 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
             if (!hasBody(node))
             {
                 indentPush();
-                write(ASEmitterTokens.INDENT);
+                writeIndent();
             }
 
             List<IParameterNode> parameters = new ArrayList<IParameterNode>(