You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by gr...@apache.org on 2020/03/23 07:07:50 UTC

[royale-asjs] branch develop updated (ecd7312 -> 9cd53a9)

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

gregdove pushed a change to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git.


    from ecd7312  jewel-badge: temporal fix for badges clipped
     new 958b532  quick sweep through manualtests
     new db9f9a4  Merge branch 'develop' of https://github.com/apache/royale-asjs into develop
     new 9cd53a9  Sidestepping a few issues with swf html-template stuff to get past upper level gitignore rules.

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../projects/Jewel/src/main/resources/defaults.css |   3 -
 .../apache/royale/jewel/beads/controls/Badge.as    |  10 +-
 .../Jewel/src/main/sass/components/_button.sass    |   3 -
 manualtests/UnitTests/build.xml                    | 107 ++++++++-
 manualtests/UnitTests/pom.xml                      | 256 +++++++++++----------
 .../src/main/config/compile-app-config.xml         |  15 ++
 .../UnitTests/src/main/royale/MyInitialView.mxml   |  17 +-
 .../UnitTests/src/main/royale/TestClasses.as       |   1 +
 .../main}/royale/flexUnitTests/BindingTester.as    |   4 +-
 .../flexUnitTests/binding/BindableCoreTests.as     |   0
 .../flexUnitTests/binding/BindingCoreTests.as      |  24 +-
 .../flexUnitTests/binding/support/IBindingTest.as  |   0
 .../BaseWithAccesorVariantsBindableClass.as        |   0
 .../bindables/BaseWithBindableAndUnbindableVars.as |   0
 .../support/bindables/BaseWithBindableClass.as     |   0
 .../support/bindables/BaseWithBindableGetter.as    |   0
 .../support/bindables/BaseWithBindableVar.as       |   0
 .../bindables/BaseWithGetterBindableClass.as       |   0
 .../binding/support/bindables/BindableMxmlTest.as  |   0
 .../binding/support/bindables/BindableSetterVO.as  |   0
 .../binding/support/bindables/BindableSubVO1.as    |   0
 .../binding/support/bindables/BindableSubVO2.as    |   0
 .../binding/support/bindables/BindableSubVO3.as    |   0
 .../bindables/BindableWithConstructorInit.as       |   0
 .../binding/support/bindables/UnbindableBase.as    |   0
 .../support/bindables/UnbindableIntermediateVO.as  |   0
 .../binding/support/bindings/bindables/ITaskVO.as  |   2 +-
 .../support/bindings/bindables/OneLayerBindable.as |   0
 .../binding/support/bindings/bindables/TaskVO.as   |   2 +-
 .../bindings/bindables/TaskVO_on_top_of_class.as   |   2 +-
 .../bindables/TaskVO_on_top_of_property.as         |   2 +-
 .../support/bindings/bindables/TwoLayerBindable.as |   0
 .../support/bindings/flex/DeepBindingsA.mxml       |   0
 .../support/bindings/flex/FunctionBindingsA.mxml   |   0
 .../support/bindings/flex/RendereBindingTestA.mxml |  34 ++-
 .../support/bindings/flex/SimpleBindingsA.mxml     |   0
 .../support/bindings/flex/SimpleBindingsB.mxml     |   0
 .../flex/internalmxml}/TaskVOItemRenderer.mxml     |  26 +--
 .../support/bindings/royale/DeepBindingsA.mxml     |   0
 .../support/bindings/royale/FunctionBindingsA.mxml |   0
 .../bindings/royale/RendereBindingTestA.mxml       |  58 ++++-
 .../support/bindings/royale/SimpleBindingsA.mxml   |  10 +-
 .../support/bindings/royale/SimpleBindingsB.mxml   |   0
 .../royale/internalmxml}/TaskVOItemRenderer.mxml   |  21 +-
 .../internalmxml/support}/ListItemRenderer.as      |  14 +-
 .../binding/utils/BindableTestUtil.as              |   1 +
 .../flexUnitTests/binding/utils/BindingTestUtil.as |   0
 .../language/LanguageTesterTestArraylikeGetSet.as  |   7 +-
 .../language/LanguageTesterTestForEach.as          |   7 +-
 .../flexUnitTests/mxroyale/SharedObjectTest.as     |   3 +-
 .../network/AMFBinaryDataTesterTest.as             |  38 ++-
 .../support/{TestClass2.as => TestClass7a.as}      |  20 +-
 .../support/{TestClass2.as => TestClass7b.as}      |  18 +-
 .../reflection/ReflectionTesterNativeTypes.as      |   3 +-
 .../reflection/ReflectionTesterTest.as             |  27 +--
 .../reflection/ReflectionTesterTestUseCache.as     |  11 +-
 .../royale/flexUnitTests/xml/XMLNamespaceTest.as   |  30 +--
 .../flexUnitTests/xml/XMLTesterGeneralTest.as      |  44 ++--
 .../main/royale/testshim/RoyaleUnitTestRunner.as   |  19 +-
 .../swf-html-template/index.template.html          | 135 +++++++++++
 manualtests/build.xml                              |   4 +-
 manualtests/build_example.xml                      |  18 +-
 manualtests/pom.xml                                |   4 +-
 63 files changed, 712 insertions(+), 288 deletions(-)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/BindingTester.as (95%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/BindableCoreTests.as (100%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/BindingCoreTests.as (91%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/IBindingTest.as (100%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/bindables/BaseWithAccesorVariantsBindableClass.as (100%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/bindables/BaseWithBindableAndUnbindableVars.as (100%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/bindables/BaseWithBindableClass.as (100%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/bindables/BaseWithBindableGetter.as (100%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/bindables/BaseWithBindableVar.as (100%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/bindables/BaseWithGetterBindableClass.as (100%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/bindables/BindableMxmlTest.as (100%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/bindables/BindableSetterVO.as (100%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/bindables/BindableSubVO1.as (100%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/bindables/BindableSubVO2.as (100%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/bindables/BindableSubVO3.as (100%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/bindables/BindableWithConstructorInit.as (100%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/bindables/UnbindableBase.as (100%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/bindables/UnbindableIntermediateVO.as (100%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/bindings/bindables/ITaskVO.as (99%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/bindings/bindables/OneLayerBindable.as (100%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/bindings/bindables/TaskVO.as (98%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/bindings/bindables/TaskVO_on_top_of_class.as (94%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/bindings/bindables/TaskVO_on_top_of_property.as (94%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/bindings/bindables/TwoLayerBindable.as (100%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/bindings/flex/DeepBindingsA.mxml (100%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/bindings/flex/FunctionBindingsA.mxml (100%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/bindings/flex/RendereBindingTestA.mxml (73%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/bindings/flex/SimpleBindingsA.mxml (100%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/bindings/flex/SimpleBindingsB.mxml (100%)
 copy {frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindings/royale => manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/flex/internalmxml}/TaskVOItemRenderer.mxml (61%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/bindings/royale/DeepBindingsA.mxml (100%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/bindings/royale/FunctionBindingsA.mxml (100%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/bindings/royale/RendereBindingTestA.mxml (66%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/bindings/royale/SimpleBindingsA.mxml (86%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/support/bindings/royale/SimpleBindingsB.mxml (100%)
 copy {frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindings/royale => manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/royale/internalmxml}/TaskVOItemRenderer.mxml (77%)
 copy {frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers => manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/royale/internalmxml/support}/ListItemRenderer.as (91%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/utils/BindableTestUtil.as (99%)
 copy {frameworks/projects/Binding/src/test => manualtests/UnitTests/src/main}/royale/flexUnitTests/binding/utils/BindingTestUtil.as (100%)
 copy manualtests/UnitTests/src/main/royale/flexUnitTests/network/support/{TestClass2.as => TestClass7a.as} (75%)
 copy manualtests/UnitTests/src/main/royale/flexUnitTests/network/support/{TestClass2.as => TestClass7b.as} (75%)
 create mode 100644 manualtests/UnitTests/swf-html-template/index.template.html


[royale-asjs] 02/03: Merge branch 'develop' of https://github.com/apache/royale-asjs into develop

Posted by gr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit db9f9a45d9ffa6b1667260b0ddd8d4720763ebfa
Merge: 958b532 ecd7312
Author: greg-dove <gr...@gmail.com>
AuthorDate: Mon Mar 23 18:31:00 2020 +1300

    Merge branch 'develop' of https://github.com/apache/royale-asjs into develop

 examples/jewel/TourDeJewel/pom.xml                 | 1739 +++++++++++++++++++-
 .../defaults.css                                   |  286 ----
 .../defaults.css                                   |  286 ----
 .../defaults.css                                   |  286 ----
 .../defaults.css                                   |  286 ----
 .../defaults.css                                   |  286 ----
 .../defaults.css                                   |  286 ----
 .../defaults.css                                   |  286 ----
 .../defaults.css                                   |  286 ----
 .../defaults.css                                   |  286 ----
 .../defaults.css                                   |  286 ----
 .../defaults.css                                   |  286 ----
 .../defaults.css                                   |  286 ----
 .../defaults.css                                   | 1692 -------------------
 .../defaults.css                                   | 1692 -------------------
 .../defaults.css                                   | 1692 -------------------
 .../defaults.css                                   | 1692 -------------------
 .../defaults.css                                   | 1692 -------------------
 .../defaults.css                                   | 1692 -------------------
 .../defaults.css                                   | 1692 -------------------
 .../defaults.css                                   | 1692 -------------------
 .../defaults.css                                   | 1692 -------------------
 .../defaults.css                                   | 1692 -------------------
 .../defaults.css                                   | 1692 -------------------
 .../defaults.css                                   | 1692 -------------------
 .../defaults.css                                   |  296 ----
 .../defaults.css                                   |  296 ----
 .../defaults.css                                   |  296 ----
 .../defaults.css                                   |  296 ----
 .../defaults.css                                   |  296 ----
 .../defaults.css                                   |  296 ----
 .../defaults.css                                   |  296 ----
 .../defaults.css                                   |  296 ----
 .../defaults.css                                   |  296 ----
 .../defaults.css                                   |  296 ----
 .../defaults.css                                   |  296 ----
 .../defaults.css                                   |  296 ----
 .../defaults.css                                   |  284 ----
 .../defaults.css                                   |  284 ----
 .../defaults.css                                   |  284 ----
 .../defaults.css                                   |  284 ----
 .../defaults.css                                   |  284 ----
 .../defaults.css                                   |  284 ----
 .../defaults.css                                   |  284 ----
 .../defaults.css                                   |  284 ----
 .../defaults.css                                   |  284 ----
 .../defaults.css                                   |  284 ----
 .../defaults.css                                   |  284 ----
 .../defaults.css                                   |  284 ----
 .../defaults.css                                   | 1692 -------------------
 .../defaults.css                                   | 1692 -------------------
 .../defaults.css                                   | 1692 -------------------
 .../defaults.css                                   | 1692 -------------------
 .../defaults.css                                   | 1692 -------------------
 .../defaults.css                                   | 1692 -------------------
 .../defaults.css                                   | 1692 -------------------
 .../defaults.css                                   | 1692 -------------------
 .../defaults.css                                   | 1692 -------------------
 .../defaults.css                                   | 1692 -------------------
 .../defaults.css                                   | 1692 -------------------
 .../defaults.css                                   | 1692 -------------------
 .../defaults.css                                   |  294 ----
 .../defaults.css                                   |  294 ----
 .../defaults.css                                   |  294 ----
 .../defaults.css                                   |  294 ----
 .../defaults.css                                   |  294 ----
 .../defaults.css                                   |  294 ----
 .../defaults.css                                   |  294 ----
 .../defaults.css                                   |  294 ----
 .../defaults.css                                   |  294 ----
 .../defaults.css                                   |  294 ----
 .../defaults.css                                   |  294 ----
 .../defaults.css                                   |  294 ----
 manualtests/pom.xml                                |    4 +-
 74 files changed, 1727 insertions(+), 54544 deletions(-)

diff --cc manualtests/pom.xml
index 773cf14,773cf14..53cc7e0
--- a/manualtests/pom.xml
+++ b/manualtests/pom.xml
@@@ -69,7 -69,7 +69,7 @@@
          </plugin>
        </plugins>
      </pluginManagement>
--	<plugins />
++    <plugins />
    </build>
  
    <dependencies>
@@@ -180,5 -180,5 +180,5 @@@
          <compiler.output-dir>${basedir}/target/javascript/bin/js-release</compiler.output-dir>
        </properties>
      </profile>
--   </profiles>
++  </profiles>
  </project>


[royale-asjs] 01/03: quick sweep through manualtests

Posted by gr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 958b532deea530e4a366bd4e13f8b8eb5604abc6
Author: greg-dove <gr...@gmail.com>
AuthorDate: Mon Mar 23 18:18:46 2020 +1300

    quick sweep through manualtests
---
 manualtests/UnitTests/build.xml                    |   6 +-
 manualtests/UnitTests/pom.xml                      | 252 ++++++++---------
 .../src/main/config/compile-app-config.xml         |  15 ++
 .../UnitTests/src/main/royale/MyInitialView.mxml   |  17 +-
 .../UnitTests/src/main/royale/TestClasses.as       |   1 +
 .../BindingTester.as}                              |  36 ++-
 .../flexUnitTests/binding/BindableCoreTests.as     | 298 +++++++++++++++++++++
 .../flexUnitTests/binding/BindingCoreTests.as      | 281 +++++++++++++++++++
 .../binding/support/IBindingTest.as}               |  29 +-
 .../BaseWithAccesorVariantsBindableClass.as        |  93 +++++++
 .../BaseWithBindableAndUnbindableVars.as}          |  24 +-
 .../support/bindables/BaseWithBindableClass.as}    |  22 +-
 .../support/bindables/BaseWithBindableGetter.as    |  69 +++++
 .../support/bindables/BaseWithBindableVar.as}      |  23 +-
 .../bindables/BaseWithGetterBindableClass.as}      |  33 +--
 .../binding/support/bindables/BindableMxmlTest.as} |  30 +--
 .../binding/support/bindables/BindableSetterVO.as} |  29 +-
 .../binding/support/bindables/BindableSubVO1.as}   |  30 +--
 .../binding/support/bindables/BindableSubVO2.as}   |  30 +--
 .../binding/support/bindables/BindableSubVO3.as}   |  30 +--
 .../bindables/BindableWithConstructorInit.as}      |  37 +--
 .../binding/support/bindables/UnbindableBase.as}   |  26 +-
 .../support/bindables/UnbindableIntermediateVO.as} |  26 +-
 .../binding/support/bindings/bindables/ITaskVO.as} |  39 ++-
 .../bindings/bindables/OneLayerBindable.as}        |  37 ++-
 .../binding/support/bindings/bindables/TaskVO.as}  |  69 +++--
 .../bindings/bindables/TaskVO_on_top_of_class.as   |  76 ++++++
 .../bindables/TaskVO_on_top_of_property.as         |  80 ++++++
 .../bindings/bindables/TwoLayerBindable.as}        |  26 +-
 .../support/bindings/flex/DeepBindingsA.mxml       | 156 +++++++++++
 .../support/bindings/flex/FunctionBindingsA.mxml   | 280 +++++++++++++++++++
 .../support/bindings/flex/RendereBindingTestA.mxml | 164 ++++++++++++
 .../support/bindings/flex/SimpleBindingsA.mxml     |  81 ++++++
 .../support/bindings/flex/SimpleBindingsB.mxml     | 169 ++++++++++++
 .../flex/internalmxml/TaskVOItemRenderer.mxml      |  49 ++++
 .../support/bindings/royale/DeepBindingsA.mxml     | 159 +++++++++++
 .../support/bindings/royale/FunctionBindingsA.mxml | 285 ++++++++++++++++++++
 .../bindings/royale/RendereBindingTestA.mxml       | 182 +++++++++++++
 .../support/bindings/royale/SimpleBindingsA.mxml   |  92 +++++++
 .../support/bindings/royale/SimpleBindingsB.mxml   | 174 ++++++++++++
 .../royale/internalmxml/TaskVOItemRenderer.mxml    |  58 ++++
 .../internalmxml/support/ListItemRenderer.as       | 147 ++++++++++
 .../binding/utils/BindableTestUtil.as              | 190 +++++++++++++
 .../flexUnitTests/binding/utils/BindingTestUtil.as |  84 ++++++
 .../language/LanguageTesterTestArraylikeGetSet.as  |   7 +-
 .../language/LanguageTesterTestForEach.as          |   7 +-
 .../flexUnitTests/mxroyale/SharedObjectTest.as     |   3 +-
 .../network/AMFBinaryDataTesterTest.as             |  38 ++-
 .../network/support/TestClass7a.as}                |  50 ++--
 .../network/support/TestClass7b.as}                |  50 ++--
 .../reflection/ReflectionTesterNativeTypes.as      |   3 +-
 .../reflection/ReflectionTesterTest.as             |  27 +-
 .../reflection/ReflectionTesterTestUseCache.as     |  11 +-
 .../royale/flexUnitTests/xml/XMLNamespaceTest.as   |  30 ++-
 .../flexUnitTests/xml/XMLTesterGeneralTest.as      |  44 +--
 .../main/royale/testshim/RoyaleUnitTestRunner.as   |  19 +-
 manualtests/build.xml                              |   4 +-
 manualtests/build_example.xml                      |   6 +-
 58 files changed, 3749 insertions(+), 584 deletions(-)

diff --git a/manualtests/UnitTests/build.xml b/manualtests/UnitTests/build.xml
index e4fbad5..a01cd3f 100644
--- a/manualtests/UnitTests/build.xml
+++ b/manualtests/UnitTests/build.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0"?>
 <!--
-
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
@@ -15,10 +14,7 @@
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-
 -->
-
-
 <project name="UnitTests" default="main" basedir=".">
     <property name="ROYALE_HOME" location="../.."/>
     <property name="example" value="UnitTests" />
@@ -39,7 +35,7 @@
     <!--<property name="swf.version" value="30" />
     <property name="playerglobal.version" value="19" />-->
     <property name="destDir" value="${basedir}/target/swf"/>
-    <property name="html_template_base" value="${basedir}/src/main/resources" />
+    <property name="html_template_base" value="${basedir}/swf-html-template" />
     <include file="${basedir}/../build_example.xml" />
 
     <target name="main" depends="clean" description="Clean build of ${example}">
diff --git a/manualtests/UnitTests/pom.xml b/manualtests/UnitTests/pom.xml
index 0e7e533..3cfc217 100644
--- a/manualtests/UnitTests/pom.xml
+++ b/manualtests/UnitTests/pom.xml
@@ -52,124 +52,38 @@
 				<artifactId>royale-maven-plugin</artifactId>
 				<extensions>true</extensions>
 				<configuration>
-					<targets>SWF,JSRoyale</targets>
+					<targets>JSRoyale</targets>
 					<mainClass>${project.artifactId}.mxml</mainClass>
-                    <removeCirculars>true</removeCirculars>
+					<removeCirculars>true</removeCirculars>
 					<debug>false</debug>
+					<allowSubclassOverrides>true</allowSubclassOverrides>
 					<additionalCompilerOptions>
 						-swf-version=30;
 						-js-default-initializers;
 						-source-map=true;
 						-compiler.exclude-defaults-css-files=MXRoyale-0.9.7-SNAPSHOT-js.swc:defaults.css;
-						-compiler.exclude-defaults-css-files=MXRoyale-0.9.7-SNAPSHOT-swf.swc:defaults.css;
-						-keep-as3-metadata+=Test,BeforeClass,AfterClass,Before,After,TestVariance,Event,Bindable,TestMeta;
-						-keep-code-with-metadata=Test,BeforeClass,AfterClass,Before,After,TestVariance,TestMeta;
+						-keep-as3-metadata+=Test,BeforeClass,AfterClass,Before,After,TestVariance,Event,Bindable,TestMeta,Transient;
+						-keep-code-with-metadata=Test,BeforeClass,AfterClass,Before,After,TestVariance,TestMeta,Transient;
 					</additionalCompilerOptions>
+					<defines>
+						<define append="true">
+							<name>COMPILE::Flex</name>
+							<value>false</value>
+						</define>
+						<define append="true">
+							<name>COMPILE::Royale</name>
+							<value>true</value>
+						</define>
+					</defines>
 					<outputDirectory>${basedir}/target</outputDirectory>
-					<flashOutputFileName>swf/${project.artifactId}.swf</flashOutputFileName>
 					<javascriptOutputDirectoryName>javascript</javascriptOutputDirectoryName>
 				</configuration>
-				<!--<executions>
-					<execution>
-						<id>compile-js</id>
-						<phase>process-sources</phase>
-						<goals>
-							<goal>compile-app</goal>
-						</goals>
-						<configuration>
-							<targets>JSRoyale</targets>
-							<mainClass>${project.artifactId}.mxml</mainClass>
-							<debug>false</debug>
-							<additionalCompilerOptions>-js-default-initializers;-source-map=true;-keep-as3-metadata+=Test,BeforeClass,AfterClass,Before,After,TestVariance,Event,Bindable,TestMeta;-keep-code-with-metadata=Test,BeforeClass,AfterClass,Before,After,TestVariance,TestMeta</additionalCompilerOptions>
-							<outputDirectory>${basedir}/target</outputDirectory>
-						</configuration>
-					</execution>
-				</executions>-->
 			</plugin>
-
-			<plugin>
-				<artifactId>maven-resources-plugin</artifactId>
-				<version>3.1.0</version>
-				<executions>
-					<execution>
-						<id>copy-template-swf</id>
-						<phase>compile</phase>
-						<goals>
-							<goal>copy-resources</goal>
-						</goals>
-						<configuration>
-							<outputDirectory>${basedir}/target/swf</outputDirectory>
-							<includeEmptyDirs>true</includeEmptyDirs>
-							<resources>
-								<resource>
-									<directory>${basedir}/src/main/resources/swfobject</directory>
-									<filtering>true</filtering>
-								</resource>
-							</resources>
-						</configuration>
-					</execution>
-				</executions>
-			</plugin>
-			<plugin>
-				<groupId>com.coderplus.maven.plugins</groupId>
-				<artifactId>copy-rename-maven-plugin</artifactId>
-				<version>1.0.1</version>
-				<executions>
-					<execution>
-						<id>rename-file</id>
-						<phase>compile</phase>
-						<goals>
-							<goal>rename</goal>
-						</goals>
-						<configuration>
-							<sourceFile>${basedir}/target/swf/index.template.html</sourceFile>
-							<destinationFile>${basedir}/target/swf/${project.artifactId}.html</destinationFile>
-						</configuration>
-					</execution>
-				</executions>
-			</plugin>
-
-
-			<!--<plugin>
-         <groupId>com.google.code.maven-replacer-plugin</groupId>
-         <artifactId>replacer</artifactId>
-         <version>1.5.2</version>
-         <executions>
-           <execution>
-             <id>configure-swf-template</id>
-             <phase>compile</phase>
-             <goals>
-               <goal>replace</goal>
-             </goals>
-             <configuration>
-               <file>${basedir}/bin-debug/index.template.html</file>
-			   <regex>false</regex>
-               <replacements>
-
-               </replacements>
-             </configuration>
-           </execution>
-		    </executions>
-			</plugin>-->
 		</plugins>
 	</build>
 
 	<dependencies>
 		<dependency>
-			<groupId>com.adobe.flash.framework</groupId>
-			<artifactId>playerglobal</artifactId>
-			<version>${flash.version}</version>
-			<type>swc</type>
-			<scope>provided</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.royale.framework</groupId>
-			<artifactId>MXRoyale</artifactId>
-			<version>0.9.7-SNAPSHOT</version>
-			<type>swc</type>
-			<classifier>swf</classifier>
-		</dependency>
-		<dependency>
 			<groupId>org.apache.royale.framework</groupId>
 			<artifactId>MXRoyale</artifactId>
 			<version>0.9.7-SNAPSHOT</version>
@@ -181,13 +95,6 @@
 			<artifactId>Reflection</artifactId>
 			<version>0.9.7-SNAPSHOT</version>
 			<type>swc</type>
-			<classifier>swf</classifier>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.royale.framework</groupId>
-			<artifactId>Reflection</artifactId>
-			<version>0.9.7-SNAPSHOT</version>
-			<type>swc</type>
 			<classifier>js</classifier>
 		</dependency>
 		<dependency>
@@ -195,13 +102,6 @@
 			<artifactId>Network</artifactId>
 			<version>0.9.7-SNAPSHOT</version>
 			<type>swc</type>
-			<classifier>swf</classifier>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.royale.framework</groupId>
-			<artifactId>Network</artifactId>
-			<version>0.9.7-SNAPSHOT</version>
-			<type>swc</type>
 			<classifier>js</classifier>
 		</dependency>
 		<dependency>
@@ -209,15 +109,121 @@
 			<artifactId>XML</artifactId>
 			<version>0.9.7-SNAPSHOT</version>
 			<type>swc</type>
-			<classifier>swf</classifier>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.royale.framework</groupId>
-			<artifactId>XML</artifactId>
-			<version>0.9.7-SNAPSHOT</version>
-			<type>swc</type>
 			<classifier>js</classifier>
 		</dependency>
 	</dependencies>
-
+	<profiles>
+		<profile>
+			<id>option-with-swf</id>
+			<build>
+				<plugins>
+					<plugin>
+						<groupId>org.apache.royale.compiler</groupId>
+						<artifactId>royale-maven-plugin</artifactId>
+						<extensions>true</extensions>
+						<configuration>
+							<targets>SWF,JSRoyale</targets>
+							<mainClass>${project.artifactId}.mxml</mainClass>
+							<removeCirculars>true</removeCirculars>
+							<debug>false</debug>
+							<allowSubclassOverrides>true</allowSubclassOverrides>
+							<additionalCompilerOptions>
+								-swf-version=30;
+								-js-default-initializers;
+								-source-map=true;
+								-compiler.exclude-defaults-css-files=MXRoyale-0.9.7-SNAPSHOT-js.swc:defaults.css;
+								-compiler.exclude-defaults-css-files=MXRoyale-0.9.7-SNAPSHOT-swf.swc:defaults.css;
+								-keep-as3-metadata+=Test,BeforeClass,AfterClass,Before,After,TestVariance,Event,Bindable,TestMeta,Transient;
+								-keep-code-with-metadata=Test,BeforeClass,AfterClass,Before,After,TestVariance,TestMeta,Transient;
+							</additionalCompilerOptions>
+							<defines>
+								<define append="true">
+									<name>COMPILE::Flex</name>
+									<value>false</value>
+								</define>
+								<define append="true">
+									<name>COMPILE::Royale</name>
+									<value>true</value>
+								</define>
+							</defines>
+							<outputDirectory>${basedir}/target</outputDirectory>
+							<flashOutputFileName>swf/${project.artifactId}.swf</flashOutputFileName>
+							<javascriptOutputDirectoryName>javascript</javascriptOutputDirectoryName>
+						</configuration>
+					</plugin>
+					<plugin>
+						<artifactId>maven-resources-plugin</artifactId>
+						<version>3.1.0</version>
+						<executions>
+							<execution>
+								<id>copy-template-swf</id>
+								<phase>compile</phase>
+								<goals>
+									<goal>copy-resources</goal>
+								</goals>
+								<configuration>
+									<outputDirectory>${basedir}/target/swf</outputDirectory>
+									<includeEmptyDirs>true</includeEmptyDirs>
+									<resources>
+										<resource>
+											<directory>${basedir}/swf-html-template/swfobject</directory>
+											<filtering>true</filtering>
+										</resource>
+									</resources>
+								</configuration>
+							</execution>
+						</executions>
+					</plugin>
+					<plugin>
+						<groupId>com.coderplus.maven.plugins</groupId>
+						<artifactId>copy-rename-maven-plugin</artifactId>
+						<version>1.0.1</version>
+						<executions>
+							<execution>
+								<id>rename-file</id>
+								<phase>compile</phase>
+								<goals>
+									<goal>rename</goal>
+								</goals>
+								<configuration>
+									<sourceFile>${basedir}/target/swf/index.template.html</sourceFile>
+									<destinationFile>${basedir}/target/swf/${project.artifactId}.html</destinationFile>
+								</configuration>
+							</execution>
+						</executions>
+					</plugin>
+				</plugins>
+			</build>
+			<dependencies>
+				<dependency>
+					<groupId>com.adobe.flash.framework</groupId>
+					<artifactId>playerglobal</artifactId>
+					<version>${flash.version}</version>
+					<type>swc</type>
+					<scope>provided</scope>
+				</dependency>
+				<dependency>
+					<groupId>org.apache.royale.framework</groupId>
+					<artifactId>MXRoyale</artifactId>
+					<version>0.9.7-SNAPSHOT</version>
+					<type>swc</type>
+					<classifier>swf</classifier>
+				</dependency>
+				<dependency>
+					<groupId>org.apache.royale.framework</groupId>
+					<artifactId>Reflection</artifactId>
+					<version>0.9.7-SNAPSHOT</version>
+					<type>swc</type>
+					<classifier>swf</classifier>
+				</dependency>
+				<dependency>
+					<groupId>org.apache.royale.framework</groupId>
+					<artifactId>Network</artifactId>
+					<version>0.9.7-SNAPSHOT</version>
+					<type>swc</type>
+					<classifier>swf</classifier>
+				</dependency>
+			</dependencies>
+		</profile>
+	</profiles>
 </project>
diff --git a/manualtests/UnitTests/src/main/config/compile-app-config.xml b/manualtests/UnitTests/src/main/config/compile-app-config.xml
index 9e40011..61fe692 100644
--- a/manualtests/UnitTests/src/main/config/compile-app-config.xml
+++ b/manualtests/UnitTests/src/main/config/compile-app-config.xml
@@ -26,6 +26,21 @@
     <swf-version>30</swf-version>
     <source-map>true</source-map>
     <compiler>
+        <library-path append="true">
+            <path-element>../../../../../frameworks/libs/MXRoyale.swc</path-element>
+        </library-path>
+        <js-library-path append="true">
+            <path-element>../../../../../frameworks/js/libs//MXRoyaleJS.swc</path-element>
+        </js-library-path>
+        <define append="true">
+            <name>COMPILE::Flex</name>
+            <value>false</value>
+        </define>
+        <define append="true">
+            <name>COMPILE::Royale</name>
+            <value>true</value>
+        </define>
+
         <keep-as3-metadata append="true">
             <name>Test</name>
             <name>BeforeClass</name>
diff --git a/manualtests/UnitTests/src/main/royale/MyInitialView.mxml b/manualtests/UnitTests/src/main/royale/MyInitialView.mxml
index 32eaa9e..a2ba582 100644
--- a/manualtests/UnitTests/src/main/royale/MyInitialView.mxml
+++ b/manualtests/UnitTests/src/main/royale/MyInitialView.mxml
@@ -58,6 +58,9 @@ limitations under the License.
 	<fx:Script>
 		<![CDATA[
 		import org.apache.royale.html.Label;
+		import org.apache.royale.html.Group;
+		import org.apache.royale.core.IParent;
+		import org.apache.royale.core.UIBase;
 		import org.apache.royale.reflection.VariableDefinition;
 		import org.apache.royale.reflection.getDefinitionByName;
 		import org.apache.royale.reflection.describeType;
@@ -83,11 +86,22 @@ limitations under the License.
 			return '';
 		}
 
+		private static var _instance:MyInitialView;
+		public static function getInstance():MyInitialView{
+			return _instance;
+		}
+
+		public function get bindingsTestParent():IParent{
+			return bindingTestHolder;
+		}
+
 
 		private var _tests:Array;
 
 		public function runTests():void {
+			_instance = this;
 			setPlatform();
+
 			RoyaleUnitTestRunner.swfVersion = getSwfVersion();
 			var label:Label;
 			var groups:Array = TestClasses.testClasses;
@@ -134,7 +148,7 @@ limitations under the License.
 					}
 				}
 			}
-
+		//	testArrayLike()
 		}
 
 
@@ -231,4 +245,5 @@ limitations under the License.
 			<js:VerticalFlexLayout />
 		</js:beads>
 	</js:Group>
+	<js:Group localId="bindingTestHolder" />
 </js:View>
diff --git a/manualtests/UnitTests/src/main/royale/TestClasses.as b/manualtests/UnitTests/src/main/royale/TestClasses.as
index 11f141c..9332ebd 100644
--- a/manualtests/UnitTests/src/main/royale/TestClasses.as
+++ b/manualtests/UnitTests/src/main/royale/TestClasses.as
@@ -35,6 +35,7 @@ package
 					,NetworkTester
 					,XMLTester
 					,MXRoyaleTester
+					,BindingTester
 					];
 		}
 	}
diff --git a/manualtests/UnitTests/src/main/royale/TestClasses.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/BindingTester.as
similarity index 73%
copy from manualtests/UnitTests/src/main/royale/TestClasses.as
copy to manualtests/UnitTests/src/main/royale/flexUnitTests/BindingTester.as
index 11f141c..08dd137 100644
--- a/manualtests/UnitTests/src/main/royale/TestClasses.as
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/BindingTester.as
@@ -16,26 +16,24 @@
 //  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package
+package flexUnitTests
 {
-	//test groups
-	import flexUnitTests.*;
+    import flexUnitTests.binding.*
+    
+    [Suite]
+   
+    /**
+     *  @royalesuppresspublicvarwarning
+     */
+    public class BindingTester
+    {
+        public function BindingTester()
+        {
+        }
 
+        public var bindableCoreTest:BindableCoreTests;
+    
+        public var bindingCoreTest:BindingCoreTests;
 
-	public class TestClasses
-	{
-		
-		public static function get testClasses():Array {
-			return [
-				  LanguageTester
-					,CoreTester
-					,ReflectionTester
-					,ObservedBugsTester
-					,GithubIssuesTester
-					,NetworkTester
-					,XMLTester
-					,MXRoyaleTester
-					];
-		}
-	}
+    }
 }
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/BindableCoreTests.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/BindableCoreTests.as
new file mode 100644
index 0000000..42204c5
--- /dev/null
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/BindableCoreTests.as
@@ -0,0 +1,298 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package flexUnitTests.binding
+{
+
+COMPILE::Royale{
+    import org.apache.royale.test.asserts.*;
+    import org.apache.royale.events.IEventDispatcher;
+}
+
+COMPILE::Flex{
+    import royale.flexunitcompatible.asserts.*;
+    import flash.events.IEventDispatcher;
+}
+
+
+
+import flexUnitTests.binding.support.bindables.*;
+import flexUnitTests.binding.utils.BindableTestUtil;
+
+public class BindableCoreTests
+{
+
+
+    public static var testUtil:BindableTestUtil;
+
+    [BeforeClass]
+    public static function setUpBeforeClass():void
+    {
+        testUtil = BindableTestUtil.instance;
+    }
+
+    [AfterClass]
+    public static function tearDownAfterClass():void
+    {
+        testUtil.reset();
+        testUtil = null;
+    }
+
+    [Before]
+    public function setUp():void
+    {
+
+    }
+
+    [After]
+    public function tearDown():void
+    {
+        testUtil.reset();
+    }
+
+    //no bindings, UnBindable is not IEventDispatcher
+    [Test]
+    public function testBasicUnbindable():void
+    {
+        var unbindable:UnbindableBase = new UnbindableBase();
+
+        assertFalse(unbindable is IEventDispatcher, 'unbindable should not have IEventDispatcher-ness')
+    }
+
+    [Test]
+    public function testBasicBindableVar():void
+    {
+        // a variable member is marked [Bindable], but the class itself is not
+        testUtil.reset();
+        var bindable:BaseWithBindableVar = new BaseWithBindableVar();
+
+        assertTrue(bindable is IEventDispatcher, 'bindable should have IEventDispatcher-ness');
+
+        var bindableDispatcher:IEventDispatcher = bindable as IEventDispatcher;
+        testUtil.listenTo(bindableDispatcher, BindableTestUtil.VALUE_CHANGE_EVENT);
+
+        bindable.bindableVarOfBaseWithBindableVar = 'a new assigned value';
+        bindable.bindableVarOfBaseWithBindableVar = 'a second assigned value';
+
+        var expected:String =
+                '0:ValueChangeEvent::property(bindableVarOfBaseWithBindableVar), oldVal:(bindableVarOfBaseWithBindableVar_value), newValue:(a new assigned value)\n' +
+                '1:ValueChangeEvent::property(bindableVarOfBaseWithBindableVar), oldVal:(a new assigned value), newValue:(a second assigned value)';
+
+        assertEquals(testUtil.getSequenceString(), expected, 'Unexpected results from changes to a "bindable"');
+
+        testUtil.reset();
+    }
+
+    [Test]
+    public function testBasicBindableClass():void
+    {
+        // a class is marked [Bindable], but not its variable member(s)
+        testUtil.reset();
+        var bindable:BaseWithBindableClass = new BaseWithBindableClass();
+
+        assertTrue(bindable is IEventDispatcher, 'bindable should have IEventDispatcher-ness');
+
+        var bindableDispatcher:IEventDispatcher = bindable as IEventDispatcher;
+        testUtil.listenTo(bindableDispatcher, BindableTestUtil.VALUE_CHANGE_EVENT);
+
+        bindable.varOfBaseWithBindableClass = 'a new assigned value';
+        bindable.varOfBaseWithBindableClass = 'a second assigned value';
+
+        var expected:String =
+                '0:ValueChangeEvent::property(varOfBaseWithBindableClass), oldVal:(varOfBaseWithBindableClass_value), newValue:(a new assigned value)\n' +
+                '1:ValueChangeEvent::property(varOfBaseWithBindableClass), oldVal:(a new assigned value), newValue:(a second assigned value)';
+
+        assertEquals(testUtil.getSequenceString(), expected, 'Unexpected results from changes to a "bindable"');
+
+        testUtil.reset();
+    }
+
+
+    [Test]
+    public function testBasicBindableAndUnbindableVar():void
+    {
+        // a variable member is marked [Bindable] and another is not, and the class itself is not [Bindable]
+        testUtil.reset();
+        var bindable:BaseWithBindableAndUnbindableVars = new BaseWithBindableAndUnbindableVars();
+
+        assertTrue(bindable is IEventDispatcher, 'bindable should have IEventDispatcher-ness');
+
+        var bindableDispatcher:IEventDispatcher = bindable as IEventDispatcher;
+        testUtil.listenTo(bindableDispatcher, BindableTestUtil.VALUE_CHANGE_EVENT);
+
+        bindable.bindableVarOfBaseWithBindableAndUnbindableVars = 'a new assigned value for bindable';
+        bindable.unbindableVarOfBaseWithBindableAndUnbindableVars = 'a new assigned value for unbindable';
+        bindable.bindableVarOfBaseWithBindableAndUnbindableVars = 'a second assigned value for bindable';
+        bindable.unbindableVarOfBaseWithBindableAndUnbindableVars = 'a second assigned value for unbindable';
+        //events are only expected from the Bindable member:
+        var expected:String =
+                '0:ValueChangeEvent::property(bindableVarOfBaseWithBindableAndUnbindableVars), oldVal:(bindableVarOfBaseWithBindableAndUnbindableVars_value), newValue:(a new assigned value for bindable)\n' +
+                '1:ValueChangeEvent::property(bindableVarOfBaseWithBindableAndUnbindableVars), oldVal:(a new assigned value for bindable), newValue:(a second assigned value for bindable)';
+
+        assertEquals(testUtil.getSequenceString(), expected, 'Unexpected results from changes to a "bindable"');
+
+        testUtil.reset();
+    }
+
+    [Test]
+    public function testBasicBindableGetter():void
+    {
+        // an accessor member is marked [Bindable], but the class itself is not
+        testUtil.reset();
+        var bindable:BaseWithBindableGetter = new BaseWithBindableGetter();
+
+        assertTrue(bindable is IEventDispatcher, 'bindable should have IEventDispatcher-ness');
+
+        var bindableDispatcher:IEventDispatcher = bindable as IEventDispatcher;
+        testUtil.listenTo(bindableDispatcher, BindableTestUtil.VALUE_CHANGE_EVENT);
+
+        bindable.accessorOfBaseWithBindableGetter = 'a new assigned value';
+        bindable.accessorOfBaseWithBindableGetter = 'a second assigned value';
+
+
+        var expected:String =
+                '0:history:accessing value from original getter , accessorOfBaseWithBindableGetter_value\n' +
+                '1:history:assigning value in original setter , a new assigned value\n' +
+                '2:ValueChangeEvent::property(accessorOfBaseWithBindableGetter), oldVal:(accessorOfBaseWithBindableGetter_value), newValue:(a new assigned value)\n' +
+                '3:history:accessing value from original getter , a new assigned value\n' +
+                '4:history:assigning value in original setter , a second assigned value\n' +
+                '5:ValueChangeEvent::property(accessorOfBaseWithBindableGetter), oldVal:(a new assigned value), newValue:(a second assigned value)';
+
+        assertEquals(testUtil.getSequenceString(), expected, 'Unexpected results from changes to a "bindable"');
+
+        testUtil.reset();
+    }
+
+
+    [Test]
+    public function testBasicBindableGetterVariations():void
+    {
+        // an accessor member is marked [Bindable], but the class itself is not
+        testUtil.reset();
+        var bindable:BaseWithBindableGetter = new BaseWithBindableGetter();
+
+        assertTrue(bindable is IEventDispatcher, 'bindable should have IEventDispatcher-ness');
+
+        var bindableDispatcher:IEventDispatcher = bindable as IEventDispatcher;
+        testUtil.listenTo(bindableDispatcher, BindableTestUtil.VALUE_CHANGE_EVENT);
+        testUtil.listenTo(bindableDispatcher,'testEvent');
+        testUtil.listenTo(bindableDispatcher,'somethingChanged');
+
+        bindable.accessorOfBaseWithBindableGetter2 = 'a new assigned value';
+        bindable.accessorOfBaseWithBindableGetter2 = 'a second assigned value';
+        bindable.something = 'this does not dispatch';
+
+
+
+        var expected:String =
+                '0:history:accessing value from original getter , _accessorOfBaseWithBindableGetter2_value\n' +
+                '1:history:assigning value in original setter , a new assigned value\n' +
+                '2:Event(type="testEvent", bubbles=false, cancelable=false)\n' +
+                '3:ValueChangeEvent::property(accessorOfBaseWithBindableGetter2), oldVal:(_accessorOfBaseWithBindableGetter2_value), newValue:(a new assigned value)\n' +
+                '4:history:accessing value from original getter , a new assigned value\n' +
+                '5:history:assigning value in original setter , a second assigned value\n' +
+                '6:Event(type="testEvent", bubbles=false, cancelable=false)\n' +
+                '7:ValueChangeEvent::property(accessorOfBaseWithBindableGetter2), oldVal:(a new assigned value), newValue:(a second assigned value)';
+
+        assertEquals(testUtil.getSequenceString(), expected, 'Unexpected results from changes to a "bindable"');
+
+        testUtil.reset();
+    }
+
+
+
+    [Test]
+    public function testBasicBindableClassGetter():void
+    {
+        // a class is marked [Bindable], but not its accessor member(s)
+        testUtil.reset();
+        var bindable:BaseWithGetterBindableClass = new BaseWithGetterBindableClass();
+
+        assertTrue(bindable is IEventDispatcher, 'bindable should have IEventDispatcher-ness');
+
+        var bindableDispatcher:IEventDispatcher = bindable as IEventDispatcher;
+        testUtil.listenTo(bindableDispatcher, BindableTestUtil.VALUE_CHANGE_EVENT);
+
+        bindable.accessorOfBaseWithGetterBindableClass = 'a new assigned value';
+        bindable.accessorOfBaseWithGetterBindableClass = 'a second assigned value';
+
+
+        var expected:String =
+                '0:history:accessing value from original getter , accessorOfBaseWithGetterBindableClass_value\n' +
+                '1:history:assigning value in original setter , a new assigned value\n' +
+                '2:ValueChangeEvent::property(accessorOfBaseWithGetterBindableClass), oldVal:(accessorOfBaseWithGetterBindableClass_value), newValue:(a new assigned value)\n' +
+                '3:history:accessing value from original getter , a new assigned value\n' +
+                '4:history:assigning value in original setter , a second assigned value\n' +
+                '5:ValueChangeEvent::property(accessorOfBaseWithGetterBindableClass), oldVal:(a new assigned value), newValue:(a second assigned value)';
+
+        assertEquals(testUtil.getSequenceString(), expected, 'Unexpected results from changes to a "bindable"');
+
+        testUtil.reset();
+    }
+
+
+    [Test]
+    public function testBindableClassWithAccessorVariations():void
+    {
+        // a class is marked [Bindable], but not its accessor member(s)
+        testUtil.reset();
+        var bindable:BaseWithAccesorVariantsBindableClass = new BaseWithAccesorVariantsBindableClass();
+
+        assertTrue(bindable is IEventDispatcher, 'bindable should have IEventDispatcher-ness');
+
+        var bindableDispatcher:IEventDispatcher = bindable as IEventDispatcher;
+        testUtil.listenTo(bindableDispatcher, BindableTestUtil.VALUE_CHANGE_EVENT);
+        testUtil.listenTo(bindableDispatcher, 'alternateChanged');
+        testUtil.listenTo(bindableDispatcher, 'alternate2Changed');
+
+        bindable.accessorOfBaseWithAccesorVariantsBindableClass = 'a new assigned value';
+        bindable.accessorOfBaseWithAccesorVariantsBindableClass = 'a second assigned value';
+        var val:String = bindable.getterOnly;
+        bindable.setterOnly = 'assigned value for setterOnly with val from getter:' + val;
+        bindable.alternate = 'new value for alternate';
+        bindable.alternate = 'another new value for alternate';
+        bindable.alternate2 = 'new value for alternate2';
+        bindable.alternate2 = 'another new value for alternate2';
+
+
+        var expected:String =
+                '0:history:accessing value from original getter , BaseWithAccessorVariantsBindableClass_value\n' +
+                '1:history:assigning value in original setter , a new assigned value\n' +
+                '2:ValueChangeEvent::property(accessorOfBaseWithAccesorVariantsBindableClass), oldVal:(BaseWithAccessorVariantsBindableClass_value), newValue:(a new assigned value)\n' +
+                '3:history:accessing value from original getter , a new assigned value\n' +
+                '4:history:assigning value in original setter , a second assigned value\n' +
+                '5:ValueChangeEvent::property(accessorOfBaseWithAccesorVariantsBindableClass), oldVal:(a new assigned value), newValue:(a second assigned value)\n' +
+                '6:history:getting non bindable getterOnly , getterOnly\n' +
+                '7:history:setting non bindable setterOnly , assigned value for setterOnly with val from getter:getterOnly\n' +
+                '8:history:setting alternate value with explicit Bindable event , new value for alternate\n' +
+                '9:Event(type="alternateChanged", bubbles=false, cancelable=false)\n' +
+                '10:history:setting alternate value with explicit Bindable event , another new value for alternate\n' +
+                '11:Event(type="alternateChanged", bubbles=false, cancelable=false)\n' +
+                '12:history:setting alternate2 value with both types of Bindable event , new value for alternate2\n' +
+                '13:Event(type="alternate2Changed", bubbles=false, cancelable=false)\n' +
+                '14:history:setting alternate2 value with both types of Bindable event , another new value for alternate2\n' +
+                '15:Event(type="alternate2Changed", bubbles=false, cancelable=false)';
+
+
+        assertEquals(testUtil.getSequenceString(), expected, 'Unexpected results from changes to a "bindable"');
+
+        testUtil.reset();
+    }
+
+}
+}
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/BindingCoreTests.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/BindingCoreTests.as
new file mode 100644
index 0000000..d244915
--- /dev/null
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/BindingCoreTests.as
@@ -0,0 +1,281 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package flexUnitTests.binding
+{
+
+
+COMPILE::Royale{
+    import flexUnitTests.binding.support.bindings.royale.SimpleBindingsA;
+    import flexUnitTests.binding.support.bindings.royale.SimpleBindingsB;
+    import flexUnitTests.binding.support.bindings.royale.FunctionBindingsA;
+    import flexUnitTests.binding.support.bindings.royale.DeepBindingsA;
+    import flexUnitTests.binding.support.bindings.royale.RendereBindingTestA;
+    import org.apache.royale.test.asserts.*;
+}
+COMPILE::Flex{
+    import flexUnitTests.binding.support.bindings.flex.SimpleBindingsA;
+    import flexUnitTests.binding.support.bindings.flex.SimpleBindingsB;
+    import flexUnitTests.binding.support.bindings.flex.FunctionBindingsA;
+    import flexUnitTests.binding.support.bindings.flex.DeepBindingsA;
+    import flexUnitTests.binding.support.bindings.flex.RendereBindingTestA;
+
+
+    // reverse message arguments between RoyaleUnit and FlexUnit
+    //wild card import does not seem to work here in Flex:
+    //using specific imports:
+    import royale.flexunitcompatible.asserts.assertEquals;
+    import royale.flexunitcompatible.asserts.assertStrictlyEquals;
+}
+
+import flexUnitTests.binding.support.IBindingTest;
+import flexUnitTests.binding.utils.BindingTestUtil;
+
+/**
+ * @royalesuppresspublicvarwarning
+ */
+public class BindingCoreTests
+{
+
+
+    [BeforeClass]
+    public static function setUpBeforeClass():void
+    {
+        COMPILE::Royale{
+            //Main is the Flex application
+            BindingTestUtil.setTestParent(MyInitialView.getInstance().bindingsTestParent)
+        }
+        COMPILE::Flex{
+            //Main is the Flex application
+            BindingTestUtil.setTestParent(Main.getInstance().bindingsTestParent)
+        }
+    }
+
+    [AfterClass]
+    public static function tearDownAfterClass():void
+    {
+        BindingTestUtil.reset();
+    }
+
+    private var testInstance:Object;
+
+    [Before]
+    public function setUp():void
+    {
+
+    }
+
+    [After]
+    public function tearDown():void
+    {
+        if (testInstance) {
+            BindingTestUtil.removeInstance(testInstance);
+        }
+    }
+
+    private function createTestInstance(clazz:Class):IBindingTest{
+        return (testInstance =  BindingTestUtil.createAndAddInstance(clazz)) as IBindingTest;
+    }
+
+
+    //no bindings, just test startup values
+    [Test]
+    public function testPlainLabel():void
+    {
+
+        var simpleBindings:IBindingTest = createTestInstance(SimpleBindingsA);
+
+        //initial value should be '' for the Label
+        //in flex this is null for Spark Label and '' for mx Label
+        //using mx Label as 'expected' emulation ....
+        assertEquals(simpleBindings.getBindingResultValue(0), '', 'Bad initial value in simple binding');
+
+
+    }
+
+
+    [Test]
+    public function testSimpleBindings():void
+    {
+        var simpleBindings:IBindingTest = createTestInstance(SimpleBindingsA);
+
+        //simpleBindings.labelText = 'testSimpleBindings';
+        simpleBindings.setInboundValue('testSimpleBindings', 0);
+        //simpleBindings.testLabel.text
+        assertEquals(simpleBindings.getBindingResultValue(0), 'testSimpleBindings', 'Bad binding text value in simple binding');
+
+        //simpleBindings.labelText = null;
+        simpleBindings.setInboundValue(null, 0);
+        //in flex this is null for Spark Label and '' for mx Label
+        //using mx Label as 'expected' emulation ....
+        assertEquals(simpleBindings.getBindingResultValue(0), '', 'Bad null inbound value in simple text binding');
+
+        simpleBindings.setInboundValue(undefined, 0);
+        //in flex this is null for Spark Label and '' for mx Label
+        //using mx Label as 'expected' emulation ....
+        assertEquals(simpleBindings.getBindingResultValue(0), '', 'Bad null inbound value in simple text binding');
+
+        //simpleBindings.labelText = 'testSimpleBindings'; check the binding target with a 'this' binding
+        simpleBindings.setInboundValue('testSimpleBindingsThis', 1);
+        //simpleBindings.testLabel.text
+        assertEquals(simpleBindings.getBindingResultValue(1), 'testSimpleBindingsThis', 'Bad binding text value in simple binding');
+
+    }
+
+
+    [Test]
+    public function testSimpleBindingsB():void
+    {
+        var simpleBindings:IBindingTest = createTestInstance(SimpleBindingsB);
+
+        //simpleBindings.labelText = 'testSimpleBindings';
+        simpleBindings.setInboundValue('setStringValue', 0);
+        //simpleBindings.testLabel.text
+        assertEquals(simpleBindings.getBindingResultValue(0), 'setStringValue', 'Bad binding text value in simple binding');
+        assertEquals(simpleBindings.getBindingResultValue(1), 'setStringValue', 'Bad binding Object target value in simple binding');
+
+
+        //this is not really a Binding test, more a mxml codgen  test, there were errors before a compiler fix:
+        assertEquals(simpleBindings.getBindingResultValue(2), 'test', 'Bad codegen for fx:Object tag');
+
+        simpleBindings.setInboundValue('testval', 2);
+        assertEquals(simpleBindings.getBindingResultValue(2), 'testval', 'Bad codegen for fx:Object tag');
+        simpleBindings.setInboundValue('testval', 3);
+        assertEquals(simpleBindings.getBindingResultValue(3), 'testval', 'Bad codegen for fx:Object tag');
+
+
+        simpleBindings.setInboundValue(99, 4);
+        assertStrictlyEquals(simpleBindings.getBindingResultValue(4), 99, 'Bad binding numeric value in simple binding');
+        simpleBindings.setInboundValue(99, 5);
+        assertStrictlyEquals(simpleBindings.getBindingResultValue(5), '99', 'Bad binding text value in simple binding');
+
+
+        simpleBindings.setInboundValue(99, 6);
+        assertStrictlyEquals(simpleBindings.getBindingResultValue(6), 99, 'Bad binding numeric value in simple binding');
+
+        simpleBindings.setInboundValue(99, 7);
+        assertStrictlyEquals(simpleBindings.getBindingResultValue(7), 99, 'Bad binding numeric value in simple binding');
+
+    }
+
+
+
+
+    [Test]
+    public function testDeepBindingsA():void
+    {
+        var deepBindings:IBindingTest = createTestInstance(DeepBindingsA);
+
+        deepBindings.setInboundValue('setStringValue', 0);
+        //deepBindings.testLabel.text
+        assertEquals(deepBindings.getBindingResultValue(0), 'setStringValue', 'Bad binding text value in simple binding');
+        assertEquals(deepBindings.getBindingResultValue(1), 'setStringValue', 'Bad binding Object target value in simple binding');
+
+        deepBindings.setInboundValue(99, 2);
+        assertStrictlyEquals(deepBindings.getBindingResultValue(2), 99, 'Bad binding numeric value in simple binding');
+        deepBindings.setInboundValue(99, 3);
+        assertStrictlyEquals(deepBindings.getBindingResultValue(3), '99', 'Bad binding text value in simple binding');
+
+
+        deepBindings.setInboundValue(99, 4);
+        assertStrictlyEquals(deepBindings.getBindingResultValue(4), 99, 'Bad binding numeric value in simple binding');
+
+
+    }
+
+    [Test]
+    public function testFunctionBindingsA():void
+    {
+        var funcBindings:IBindingTest = createTestInstance(FunctionBindingsA);
+
+        //check startup values for all
+        assertEquals(funcBindings.getBindingResultValue(0), 'Internally false', 'Bad binding text value in function binding');
+        assertEquals(funcBindings.getBindingResultValue(1), 'Internally false', 'Bad binding Object target value in function binding');
+
+        assertEquals(funcBindings.getBindingResultValue(2), 'Inbound only', 'Bad binding text value in function binding');
+        assertEquals(funcBindings.getBindingResultValue(3), 'Inbound only', 'Bad binding Object target value in function binding');
+
+        assertEquals(funcBindings.getBindingResultValue(4), 'Internally false', 'Bad binding text value in function binding');
+        assertEquals(funcBindings.getBindingResultValue(5), 'Internally false', 'Bad binding Object target value in function binding');
+
+        assertEquals(funcBindings.getBindingResultValue(6), 'Inbound only', 'Bad binding text value in function binding');
+        assertEquals(funcBindings.getBindingResultValue(7), 'Inbound only', 'Bad binding Object target value in function binding');
+
+        funcBindings.setInboundValue(true,8); //changes:
+        assertEquals(funcBindings.getBindingResultValue(8), 'Internally false', 'Bad binding text value in function binding');
+        assertEquals(funcBindings.getBindingResultValue(9), 'Internally false', 'Bad binding Object target value in function binding');
+
+        funcBindings.setInboundValue(true,10);
+
+        assertEquals(funcBindings.getBindingResultValue(10), "Both are true", 'Bad binding text value in function binding');
+        assertEquals(funcBindings.getBindingResultValue(11), "Both are true", 'Bad binding Object target value in function binding');
+
+        //bindable2.bindableOne.toggle = value;
+        funcBindings.setInboundValue(true,12);
+
+        assertEquals(funcBindings.getBindingResultValue(12), 'Internally false', 'Bad binding text value in function binding');
+        funcBindings.setInboundValue(true,13);
+        assertEquals(funcBindings.getBindingResultValue(13), 'Internally false', 'Bad binding Object target value in function binding');
+        funcBindings.setInboundValue(false,13);
+        assertEquals(funcBindings.getBindingResultValue(13), 'Internally false', 'Bad binding Object target value in function binding');
+
+        funcBindings.setInboundValue(true,14);
+        assertEquals(funcBindings.getBindingResultValue(14), 'Internally false', 'Bad binding Object target value in function binding');
+
+        funcBindings.setInboundValue(false,14);
+        assertEquals(funcBindings.getBindingResultValue(14), 'Internally false', 'Bad binding Object target value in function binding');
+
+        funcBindings.setInboundValue(true,15);
+        assertEquals(funcBindings.getBindingResultValue(15), 'Internally false', 'Bad binding Object target value in function binding');
+
+        funcBindings.setInboundValue(false,15);
+        assertEquals(funcBindings.getBindingResultValue(15), 'Internally false', 'Bad binding Object target value in function binding');
+
+
+        funcBindings.setInboundValue(true,16);
+        assertEquals(funcBindings.getBindingResultValue(16), "Inbound only", 'Bad binding Object target value in function binding');
+
+        funcBindings.setInboundValue(false,16);
+        assertEquals(funcBindings.getBindingResultValue(16), "Inbound only", 'Bad binding Object target value in function binding');
+
+
+        funcBindings.setInboundValue(true,17);
+        assertEquals(funcBindings.getBindingResultValue(17), "Both are true", 'Bad binding Object target value in function binding');
+
+        funcBindings.setInboundValue(false,17);
+        assertEquals(funcBindings.getBindingResultValue(17), "Inbound only", 'Bad binding Object target value in function binding');
+
+    }
+
+
+    [Test]
+    public function testRendererBinding():void{
+        var rendererTest:IBindingTest = createTestInstance(RendereBindingTestA);
+
+        assertEquals(rendererTest.getBindingResultValue(0), '', 'Bad binding startup value in renderer binding');
+
+        rendererTest.setInboundValue(0,1);
+        assertEquals(rendererTest.getBindingResultValue(1), "myTaskVOlabel1 - mytooltip1", 'Bad binding Object target value in renderer binding');
+
+
+
+    }
+
+
+}
+}
diff --git a/manualtests/UnitTests/src/main/royale/TestClasses.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/IBindingTest.as
similarity index 74%
copy from manualtests/UnitTests/src/main/royale/TestClasses.as
copy to manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/IBindingTest.as
index 11f141c..26dd829 100644
--- a/manualtests/UnitTests/src/main/royale/TestClasses.as
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/IBindingTest.as
@@ -16,26 +16,13 @@
 //  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package
-{
-	//test groups
-	import flexUnitTests.*;
+package flexUnitTests.binding.support {
+    public interface IBindingTest {
 
+        function get testName():String;
+        function get internalTestCount():uint;
+        function setInboundValue(value:*, internalTestNum:uint=0):void
+        function getBindingResultValue(internalTestNum:uint=0):*;
 
-	public class TestClasses
-	{
-		
-		public static function get testClasses():Array {
-			return [
-				  LanguageTester
-					,CoreTester
-					,ReflectionTester
-					,ObservedBugsTester
-					,GithubIssuesTester
-					,NetworkTester
-					,XMLTester
-					,MXRoyaleTester
-					];
-		}
-	}
-}
+    }
+}
\ No newline at end of file
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BaseWithAccesorVariantsBindableClass.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BaseWithAccesorVariantsBindableClass.as
new file mode 100644
index 0000000..46bcba3
--- /dev/null
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BaseWithAccesorVariantsBindableClass.as
@@ -0,0 +1,93 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package flexUnitTests.binding.support.bindables
+{
+	import flexUnitTests.binding.utils.BindableTestUtil;
+	import org.apache.royale.events.Event;
+	import org.apache.royale.events.IEventDispatcher;
+
+	[Bindable]
+	public class BaseWithAccesorVariantsBindableClass
+	{
+		private var _accessorOfBaseWithAccesorVariantsBindableClass:String = "BaseWithAccessorVariantsBindableClass_value";
+		private var _alternate:String = 'alternate_value';
+
+		public function get accessorOfBaseWithAccesorVariantsBindableClass():String
+		{
+			BindableTestUtil.instance.addHistoryItem('accessing value from original getter', _accessorOfBaseWithAccesorVariantsBindableClass);
+			return _accessorOfBaseWithAccesorVariantsBindableClass;
+		}
+		
+		public function set accessorOfBaseWithAccesorVariantsBindableClass(value:String):void
+		{
+			BindableTestUtil.instance.addHistoryItem('assigning value in original setter', value);
+			_accessorOfBaseWithAccesorVariantsBindableClass = value;
+		}
+		
+		private var _setterOnly:String;
+		public function set setterOnly(value:String):void{
+			BindableTestUtil.instance.addHistoryItem('setting non bindable setterOnly', value);
+			_setterOnly = value;
+		}
+
+
+		public function get getterOnly():String{
+			BindableTestUtil.instance.addHistoryItem('getting non bindable getterOnly', 'getterOnly');
+			return 'getterOnly';
+		}
+		
+		[Bindable('alternateChanged')]
+		public function get alternate():String{
+			BindableTestUtil.instance.addHistoryItem('getting alternate value with explicit Bindable event', _alternate);
+			return _alternate
+		}
+
+		public function set alternate(value:String):void{
+			BindableTestUtil.instance.addHistoryItem('setting alternate value with explicit Bindable event', value);
+			var dispatch:Boolean = value != _alternate;
+			_alternate = value;
+			if (dispatch) {
+				(this as IEventDispatcher).dispatchEvent(new Event('alternateChanged'));
+			}
+		}
+
+
+		private var _alternate2:String = 'alternate2_value';
+		[Bindable]
+		public function get alternate2():String{
+			BindableTestUtil.instance.addHistoryItem('getting alternate2 value with both types of Bindable event', _alternate2);
+			return _alternate2
+		}
+
+		[Bindable('alternate2Changed')]
+		public function set alternate2(value:String):void{
+			BindableTestUtil.instance.addHistoryItem('setting alternate2 value with both types of Bindable event', value);
+			var dispatch:Boolean = value != _alternate2;
+			_alternate2 = value;
+			if (dispatch) {
+				(this as IEventDispatcher).dispatchEvent(new Event('alternate2Changed'));
+			}
+		}
+
+		//this should get normal [Bindable] treatment from the class [Bindable] meta (because it is a variable):
+		[Bindable('somethingChanged')]
+		public var something:String;
+		
+	}
+}
diff --git a/manualtests/UnitTests/src/main/royale/TestClasses.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BaseWithBindableAndUnbindableVars.as
similarity index 72%
copy from manualtests/UnitTests/src/main/royale/TestClasses.as
copy to manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BaseWithBindableAndUnbindableVars.as
index 11f141c..f3b5066 100644
--- a/manualtests/UnitTests/src/main/royale/TestClasses.as
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BaseWithBindableAndUnbindableVars.as
@@ -16,26 +16,14 @@
 //  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package
+package flexUnitTests.binding.support.bindables
 {
-	//test groups
-	import flexUnitTests.*;
 
-
-	public class TestClasses
+	public class BaseWithBindableAndUnbindableVars
 	{
-		
-		public static function get testClasses():Array {
-			return [
-				  LanguageTester
-					,CoreTester
-					,ReflectionTester
-					,ObservedBugsTester
-					,GithubIssuesTester
-					,NetworkTester
-					,XMLTester
-					,MXRoyaleTester
-					];
-		}
+			[Bindable]
+			public var bindableVarOfBaseWithBindableAndUnbindableVars:String = "bindableVarOfBaseWithBindableAndUnbindableVars_value";
+
+			public var unbindableVarOfBaseWithBindableAndUnbindableVars:String = "unbindableVarOfBaseWithBindableAndUnbindableVars_value";
 	}
 }
diff --git a/manualtests/UnitTests/src/main/royale/TestClasses.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BaseWithBindableClass.as
similarity index 75%
copy from manualtests/UnitTests/src/main/royale/TestClasses.as
copy to manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BaseWithBindableClass.as
index 11f141c..4ebb202 100644
--- a/manualtests/UnitTests/src/main/royale/TestClasses.as
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BaseWithBindableClass.as
@@ -16,26 +16,12 @@
 //  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package
+package flexUnitTests.binding.support.bindables
 {
-	//test groups
-	import flexUnitTests.*;
 
-
-	public class TestClasses
+	[Bindable]
+	public class BaseWithBindableClass
 	{
-		
-		public static function get testClasses():Array {
-			return [
-				  LanguageTester
-					,CoreTester
-					,ReflectionTester
-					,ObservedBugsTester
-					,GithubIssuesTester
-					,NetworkTester
-					,XMLTester
-					,MXRoyaleTester
-					];
-		}
+		public var varOfBaseWithBindableClass:String = "varOfBaseWithBindableClass_value";
 	}
 }
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BaseWithBindableGetter.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BaseWithBindableGetter.as
new file mode 100644
index 0000000..bd4bc1b
--- /dev/null
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BaseWithBindableGetter.as
@@ -0,0 +1,69 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package flexUnitTests.binding.support.bindables
+{
+	import flexUnitTests.binding.utils.BindableTestUtil;
+	
+	import org.apache.royale.events.Event;
+	import org.apache.royale.events.IEventDispatcher;
+
+	public class BaseWithBindableGetter
+	{
+		private var _accessorOfBaseWithBindableGetter:String = "accessorOfBaseWithBindableGetter_value";
+		
+		[Bindable]
+		public function get accessorOfBaseWithBindableGetter():String
+		{
+			BindableTestUtil.instance.addHistoryItem('accessing value from original getter', _accessorOfBaseWithBindableGetter);
+			return _accessorOfBaseWithBindableGetter;
+		}
+		
+		public function set accessorOfBaseWithBindableGetter(value:String):void
+		{
+			BindableTestUtil.instance.addHistoryItem('assigning value in original setter', value);
+			_accessorOfBaseWithBindableGetter = value;
+		}
+
+		private var _accessorOfBaseWithBindableGetter2:String = '_accessorOfBaseWithBindableGetter2_value';
+
+		//this has at least one [Bindable] so should code-gen Bindable code
+		[Bindable]
+		[Bindable(event='testEvent')]
+		public function get accessorOfBaseWithBindableGetter2():String
+		{
+			BindableTestUtil.instance.addHistoryItem('accessing value from original getter', _accessorOfBaseWithBindableGetter2);
+			return _accessorOfBaseWithBindableGetter2;
+		}
+
+		public function set accessorOfBaseWithBindableGetter2(value:String):void
+		{
+			BindableTestUtil.instance.addHistoryItem('assigning value in original setter', value);
+			if (value != _accessorOfBaseWithBindableGetter2) {
+				_accessorOfBaseWithBindableGetter2 = value;
+				IEventDispatcher(this).dispatchEvent(new Event('testEvent'));
+			}
+
+		}
+
+		//this should be ignored, because this class itself is not marked [Bindable]
+		[Bindable('somethingChanged')]
+		public var something:String;
+
+	}
+}
diff --git a/manualtests/UnitTests/src/main/royale/TestClasses.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BaseWithBindableVar.as
similarity index 75%
copy from manualtests/UnitTests/src/main/royale/TestClasses.as
copy to manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BaseWithBindableVar.as
index 11f141c..ad7823b 100644
--- a/manualtests/UnitTests/src/main/royale/TestClasses.as
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BaseWithBindableVar.as
@@ -16,26 +16,13 @@
 //  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package
+package flexUnitTests.binding.support.bindables
 {
-	//test groups
-	import flexUnitTests.*;
 
-
-	public class TestClasses
+	public class BaseWithBindableVar
 	{
-		
-		public static function get testClasses():Array {
-			return [
-				  LanguageTester
-					,CoreTester
-					,ReflectionTester
-					,ObservedBugsTester
-					,GithubIssuesTester
-					,NetworkTester
-					,XMLTester
-					,MXRoyaleTester
-					];
-		}
+			[Bindable]
+			public var bindableVarOfBaseWithBindableVar:String = "bindableVarOfBaseWithBindableVar_value";
+
 	}
 }
diff --git a/manualtests/UnitTests/src/main/royale/TestClasses.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BaseWithGetterBindableClass.as
similarity index 57%
copy from manualtests/UnitTests/src/main/royale/TestClasses.as
copy to manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BaseWithGetterBindableClass.as
index 11f141c..a692780 100644
--- a/manualtests/UnitTests/src/main/royale/TestClasses.as
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BaseWithGetterBindableClass.as
@@ -16,26 +16,27 @@
 //  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package
+package flexUnitTests.binding.support.bindables
 {
-	//test groups
-	import flexUnitTests.*;
+import flexUnitTests.binding.utils.BindableTestUtil;
 
-
-	public class TestClasses
+[Bindable]
+	public class BaseWithGetterBindableClass
 	{
+		private var _accessorOfBaseWithGetterBindableClass:String = "accessorOfBaseWithGetterBindableClass_value";
 		
-		public static function get testClasses():Array {
-			return [
-				  LanguageTester
-					,CoreTester
-					,ReflectionTester
-					,ObservedBugsTester
-					,GithubIssuesTester
-					,NetworkTester
-					,XMLTester
-					,MXRoyaleTester
-					];
+
+		public function get accessorOfBaseWithGetterBindableClass():String
+		{
+			BindableTestUtil.instance.addHistoryItem('accessing value from original getter', _accessorOfBaseWithGetterBindableClass);
+			return _accessorOfBaseWithGetterBindableClass;
 		}
+		
+		public function set accessorOfBaseWithGetterBindableClass(value:String):void
+		{
+			BindableTestUtil.instance.addHistoryItem('assigning value in original setter', value);
+			_accessorOfBaseWithGetterBindableClass = value;
+		}
+
 	}
 }
diff --git a/manualtests/UnitTests/src/main/royale/TestClasses.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BindableMxmlTest.as
similarity index 69%
copy from manualtests/UnitTests/src/main/royale/TestClasses.as
copy to manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BindableMxmlTest.as
index 11f141c..d2e24b7 100644
--- a/manualtests/UnitTests/src/main/royale/TestClasses.as
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BindableMxmlTest.as
@@ -1,4 +1,4 @@
-////////////////////////////////////////////////////////////////////////////////
+0.////////////////////////////////////////////////////////////////////////////////
 //
 //  Licensed to the Apache Software Foundation (ASF) under one or more
 //  contributor license agreements.  See the NOTICE file distributed with
@@ -16,26 +16,18 @@
 //  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package
+package flexUnitTests.binding.support.bindables
 {
-	//test groups
-	import flexUnitTests.*;
-
 
-	public class TestClasses
+	public class BindableMxmlTest 
 	{
-		
-		public static function get testClasses():Array {
-			return [
-				  LanguageTester
-					,CoreTester
-					,ReflectionTester
-					,ObservedBugsTester
-					,GithubIssuesTester
-					,NetworkTester
-					,XMLTester
-					,MXRoyaleTester
-					];
-		}
+			
+
+			
+			[Bindable]
+			public var fieldofBindableMxmlTest:String = "fieldofBindableMxmlTest_value";
+			
+
+
 	}
 }
diff --git a/manualtests/UnitTests/src/main/royale/TestClasses.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BindableSetterVO.as
similarity index 72%
copy from manualtests/UnitTests/src/main/royale/TestClasses.as
copy to manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BindableSetterVO.as
index 11f141c..f931a77 100644
--- a/manualtests/UnitTests/src/main/royale/TestClasses.as
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BindableSetterVO.as
@@ -16,26 +16,23 @@
 //  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package
+package flexUnitTests.binding.support.bindables
 {
-	//test groups
-	import flexUnitTests.*;
 
-
-	public class TestClasses
+	public class BindableSetterVO
 	{
+		private var _fieldOfBindableSetterVO:String = "fieldOfBindableSetterVO_value";
+		
+		public function get fieldOfBindableSetterVO():String
+		{
+			return _fieldOfBindableSetterVO;
+		}
 		
-		public static function get testClasses():Array {
-			return [
-				  LanguageTester
-					,CoreTester
-					,ReflectionTester
-					,ObservedBugsTester
-					,GithubIssuesTester
-					,NetworkTester
-					,XMLTester
-					,MXRoyaleTester
-					];
+		[Bindable]
+		public function set fieldOfBindableSetterVO(value:String):void
+		{
+			_fieldOfBindableSetterVO = value;
 		}
+
 	}
 }
diff --git a/manualtests/UnitTests/src/main/royale/TestClasses.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BindableSubVO1.as
similarity index 69%
copy from manualtests/UnitTests/src/main/royale/TestClasses.as
copy to manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BindableSubVO1.as
index 11f141c..d289fd1 100644
--- a/manualtests/UnitTests/src/main/royale/TestClasses.as
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BindableSubVO1.as
@@ -1,4 +1,4 @@
-////////////////////////////////////////////////////////////////////////////////
+0.////////////////////////////////////////////////////////////////////////////////
 //
 //  Licensed to the Apache Software Foundation (ASF) under one or more
 //  contributor license agreements.  See the NOTICE file distributed with
@@ -16,26 +16,18 @@
 //  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package
+package flexUnitTests.binding.support.bindables
 {
-	//test groups
-	import flexUnitTests.*;
-
 
-	public class TestClasses
+	public class BindableSubVO1 extends BaseWithBindableVar
 	{
-		
-		public static function get testClasses():Array {
-			return [
-				  LanguageTester
-					,CoreTester
-					,ReflectionTester
-					,ObservedBugsTester
-					,GithubIssuesTester
-					,NetworkTester
-					,XMLTester
-					,MXRoyaleTester
-					];
-		}
+			
+
+			
+			[Bindable]
+			public var fieldOfBindableSubVO1:String = "fieldOfBindableSubVO1_value";
+			
+
+
 	}
 }
diff --git a/manualtests/UnitTests/src/main/royale/TestClasses.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BindableSubVO2.as
similarity index 69%
copy from manualtests/UnitTests/src/main/royale/TestClasses.as
copy to manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BindableSubVO2.as
index 11f141c..4ba6685 100644
--- a/manualtests/UnitTests/src/main/royale/TestClasses.as
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BindableSubVO2.as
@@ -1,4 +1,4 @@
-////////////////////////////////////////////////////////////////////////////////
+0.////////////////////////////////////////////////////////////////////////////////
 //
 //  Licensed to the Apache Software Foundation (ASF) under one or more
 //  contributor license agreements.  See the NOTICE file distributed with
@@ -16,26 +16,18 @@
 //  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package
+package flexUnitTests.binding.support.bindables
 {
-	//test groups
-	import flexUnitTests.*;
-
 
-	public class TestClasses
+	public class BindableSubVO2 extends UnbindableBase
 	{
-		
-		public static function get testClasses():Array {
-			return [
-				  LanguageTester
-					,CoreTester
-					,ReflectionTester
-					,ObservedBugsTester
-					,GithubIssuesTester
-					,NetworkTester
-					,XMLTester
-					,MXRoyaleTester
-					];
-		}
+			
+
+			
+			[Bindable]
+			public var fieldofBindableSubVO2:String = "fieldofBindableSubVO2_value";
+			
+
+
 	}
 }
diff --git a/manualtests/UnitTests/src/main/royale/TestClasses.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BindableSubVO3.as
similarity index 69%
copy from manualtests/UnitTests/src/main/royale/TestClasses.as
copy to manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BindableSubVO3.as
index 11f141c..13db540 100644
--- a/manualtests/UnitTests/src/main/royale/TestClasses.as
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BindableSubVO3.as
@@ -1,4 +1,4 @@
-////////////////////////////////////////////////////////////////////////////////
+0.////////////////////////////////////////////////////////////////////////////////
 //
 //  Licensed to the Apache Software Foundation (ASF) under one or more
 //  contributor license agreements.  See the NOTICE file distributed with
@@ -16,26 +16,18 @@
 //  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package
+package flexUnitTests.binding.support.bindables
 {
-	//test groups
-	import flexUnitTests.*;
-
 
-	public class TestClasses
+	public class BindableSubVO3 extends UnbindableIntermediateVO
 	{
-		
-		public static function get testClasses():Array {
-			return [
-				  LanguageTester
-					,CoreTester
-					,ReflectionTester
-					,ObservedBugsTester
-					,GithubIssuesTester
-					,NetworkTester
-					,XMLTester
-					,MXRoyaleTester
-					];
-		}
+			
+
+			
+			[Bindable]
+			public var fieldofBindableSubVO3:String = "fieldofBindableSubVO3_value";
+
+			[Bindable]
+			public var rangeEnd:Object;
 	}
 }
diff --git a/manualtests/UnitTests/src/main/royale/TestClasses.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BindableWithConstructorInit.as
similarity index 63%
copy from manualtests/UnitTests/src/main/royale/TestClasses.as
copy to manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BindableWithConstructorInit.as
index 11f141c..2438b20 100644
--- a/manualtests/UnitTests/src/main/royale/TestClasses.as
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/BindableWithConstructorInit.as
@@ -16,26 +16,31 @@
 //  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package
+package flexUnitTests.binding.support.bindables
 {
-	//test groups
-	import flexUnitTests.*;
 
-
-	public class TestClasses
+	
+	[Bindable]
+	public class BindableWithConstructorInit
 	{
+	
+		public static const STATIC_INIT:BindableWithConstructorInit 	= new BindableWithConstructorInit( "STATIC_INIT"	,-1 );
+		
+		public var ordinal:int;
+		public var value:String;
+		
+		public function BindableWithConstructorInit (value:String, ordinal:int )
+		{
+			this.value = value;
+			this.ordinal = ordinal;
+		}
+
+	
 		
-		public static function get testClasses():Array {
-			return [
-				  LanguageTester
-					,CoreTester
-					,ReflectionTester
-					,ObservedBugsTester
-					,GithubIssuesTester
-					,NetworkTester
-					,XMLTester
-					,MXRoyaleTester
-					];
+		public function equals( other:BindableWithConstructorInit ):Boolean
+		{
+			return ( this.ordinal == other.ordinal && this.value == other.value );
 		}
 	}
+
 }
diff --git a/manualtests/UnitTests/src/main/royale/TestClasses.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/UnbindableBase.as
similarity index 75%
copy from manualtests/UnitTests/src/main/royale/TestClasses.as
copy to manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/UnbindableBase.as
index 11f141c..be38204 100644
--- a/manualtests/UnitTests/src/main/royale/TestClasses.as
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/UnbindableBase.as
@@ -16,26 +16,16 @@
 //  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package
+package flexUnitTests.binding.support.bindables
 {
-	//test groups
-	import flexUnitTests.*;
 
-
-	public class TestClasses
+	public class UnbindableBase
 	{
-		
-		public static function get testClasses():Array {
-			return [
-				  LanguageTester
-					,CoreTester
-					,ReflectionTester
-					,ObservedBugsTester
-					,GithubIssuesTester
-					,NetworkTester
-					,XMLTester
-					,MXRoyaleTester
-					];
-		}
+			
+
+			
+			public var fieldOfUnbindableBaseVO:String = "fieldOfUnbindableBaseVO_value";
+			
+
 	}
 }
diff --git a/manualtests/UnitTests/src/main/royale/TestClasses.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/UnbindableIntermediateVO.as
similarity index 75%
copy from manualtests/UnitTests/src/main/royale/TestClasses.as
copy to manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/UnbindableIntermediateVO.as
index 11f141c..33e13e6 100644
--- a/manualtests/UnitTests/src/main/royale/TestClasses.as
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindables/UnbindableIntermediateVO.as
@@ -16,26 +16,16 @@
 //  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package
+package flexUnitTests.binding.support.bindables
 {
-	//test groups
-	import flexUnitTests.*;
 
-
-	public class TestClasses
+	public class UnbindableIntermediateVO extends BaseWithBindableVar
 	{
-		
-		public static function get testClasses():Array {
-			return [
-				  LanguageTester
-					,CoreTester
-					,ReflectionTester
-					,ObservedBugsTester
-					,GithubIssuesTester
-					,NetworkTester
-					,XMLTester
-					,MXRoyaleTester
-					];
-		}
+			
+
+			
+			public var fieldOfUnbindableIntermediateVO:String = "fieldOfUnbindableIntermediateVO_value";
+			
+
 	}
 }
diff --git a/manualtests/UnitTests/src/main/royale/TestClasses.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/bindables/ITaskVO.as
similarity index 66%
copy from manualtests/UnitTests/src/main/royale/TestClasses.as
copy to manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/bindables/ITaskVO.as
index 11f141c..42b7e8f 100644
--- a/manualtests/UnitTests/src/main/royale/TestClasses.as
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/bindables/ITaskVO.as
@@ -16,26 +16,25 @@
 //  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package
-{
-	//test groups
-	import flexUnitTests.*;
+package flexUnitTests.binding.support.bindings.bindables  {
+[Bindable]
+    public interface ITaskVO {
+        
+        
+        function get label():String;
+        function set label(value:String):void;
+        
 
+        function get data():String;
+        function set data(value:String):void;
+        
+
+        function get tooltip():String;
+        function set tooltip(value:String):void;
+
+        function get selected():Boolean;
+        function set selected(value:Boolean):void;
+    }
 
-	public class TestClasses
-	{
-		
-		public static function get testClasses():Array {
-			return [
-				  LanguageTester
-					,CoreTester
-					,ReflectionTester
-					,ObservedBugsTester
-					,GithubIssuesTester
-					,NetworkTester
-					,XMLTester
-					,MXRoyaleTester
-					];
-		}
-	}
 }
+
diff --git a/manualtests/UnitTests/src/main/royale/TestClasses.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/bindables/OneLayerBindable.as
similarity index 64%
copy from manualtests/UnitTests/src/main/royale/TestClasses.as
copy to manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/bindables/OneLayerBindable.as
index 11f141c..2812fb4 100644
--- a/manualtests/UnitTests/src/main/royale/TestClasses.as
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/bindables/OneLayerBindable.as
@@ -16,26 +16,25 @@
 //  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package
+package flexUnitTests.binding.support.bindings.bindables
 {
-	//test groups
-	import flexUnitTests.*;
 
+[Bindable]
+public class OneLayerBindable
+{
+    public var bindableString:String;
+
+    public var bindableNumber:Number;
+
+    public var bindableBoolean:Boolean;
+
+    public function getSomething():String{
+        return bindableBoolean ? 'Internally true' : 'Internally false';
+    }
+
+    public function getSomethingBasedOn(something:Boolean):String{
+        return bindableBoolean && something ? "Both are true" : (bindableBoolean ? "Local only" : "Inbound only");
+    }
 
-	public class TestClasses
-	{
-		
-		public static function get testClasses():Array {
-			return [
-				  LanguageTester
-					,CoreTester
-					,ReflectionTester
-					,ObservedBugsTester
-					,GithubIssuesTester
-					,NetworkTester
-					,XMLTester
-					,MXRoyaleTester
-					];
-		}
-	}
 }
+}
\ No newline at end of file
diff --git a/manualtests/UnitTests/src/main/royale/TestClasses.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/bindables/TaskVO.as
similarity index 50%
copy from manualtests/UnitTests/src/main/royale/TestClasses.as
copy to manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/bindables/TaskVO.as
index 11f141c..c40a1af 100644
--- a/manualtests/UnitTests/src/main/royale/TestClasses.as
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/bindables/TaskVO.as
@@ -16,26 +16,61 @@
 //  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package
+package flexUnitTests.binding.support.bindings.bindables
 {
-	//test groups
-	import flexUnitTests.*;
+	[Bindable]
+	public class TaskVO implements ITaskVO
+	{
+		public function TaskVO(label:String = null, data:String = null, tooltip:String = null)
+		{
 
+			this.label = label;
+			this.data = data;
+			this.tooltip = tooltip;
+		}
+		
+		private var _label:String;
+		
+		public function get label():String
+		{
+			return _label;
+		}
+		
+		public function set label(value:String):void
+		{
+			_label = value;
+		}
 
-	public class TestClasses
-	{
+		private var _data:String;
+
+		public function get data():String
+		{
+			return _data;
+		}
+		
+		public function set data(value:String):void
+		{
+			_data = value;
+		}
 		
-		public static function get testClasses():Array {
-			return [
-				  LanguageTester
-					,CoreTester
-					,ReflectionTester
-					,ObservedBugsTester
-					,GithubIssuesTester
-					,NetworkTester
-					,XMLTester
-					,MXRoyaleTester
-					];
+		private var _tooltip:String;
+
+		public function get tooltip():String
+		{
+			return _tooltip;
+		}
+		
+		public function set tooltip(value:String):void
+		{
+			_tooltip = value;
+		}
+
+		private var _selected:Boolean;
+		public function get selected():Boolean{
+			return _selected;
+		}
+		public function set selected(value:Boolean):void{
+			_selected = value;
 		}
 	}
-}
+}
\ No newline at end of file
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/bindables/TaskVO_on_top_of_class.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/bindables/TaskVO_on_top_of_class.as
new file mode 100644
index 0000000..7348fb3
--- /dev/null
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/bindables/TaskVO_on_top_of_class.as
@@ -0,0 +1,76 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package flexUnitTests.binding.support.bindings.bindables
+{
+	[Bindable]
+	public class TaskVO_on_top_of_class implements ITaskVO
+	{
+		public function TaskVO_on_top_of_class(label:String = null, data:String = null, tooltip:String = null)
+		{
+			
+			this.label = label;
+			this.data = data;
+			this.tooltip = tooltip;
+		}
+		
+		private var _label:String;
+		
+		public function get label():String
+		{
+			return _label;
+		}
+		
+		public function set label(value:String):void
+		{
+			_label = value;
+		}
+
+		private var _data:String;
+
+		public function get data():String
+		{
+			return _data;
+		}
+		
+		public function set data(value:String):void
+		{
+			_data = value;
+		}
+		
+		private var _tooltip:String;
+
+		public function get tooltip():String
+		{
+			return _tooltip;
+		}
+		
+		public function set tooltip(value:String):void
+		{
+			_tooltip = value;
+		}
+
+		private var _selected:Boolean
+		public function get selected():Boolean{
+			return _selected;
+		}
+		public function set selected(value:Boolean):void{
+			_selected = value;
+		}
+	}
+}
\ No newline at end of file
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/bindables/TaskVO_on_top_of_property.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/bindables/TaskVO_on_top_of_property.as
new file mode 100644
index 0000000..fd91e8c
--- /dev/null
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/bindables/TaskVO_on_top_of_property.as
@@ -0,0 +1,80 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package flexUnitTests.binding.support.bindings.bindables
+{
+	public class TaskVO_on_top_of_property implements ITaskVO
+	{
+		public function TaskVO_on_top_of_property(label:String = null, data:String = null, tooltip:String = null)
+		{
+			
+			this.label = label;
+			this.data = data;
+			this.tooltip = tooltip;
+		}
+		
+		private var _label:String;
+		
+		[Bindable]
+		public function get label():String
+		{
+			return _label;
+		}
+		
+		public function set label(value:String):void
+		{
+			_label = value;
+		}
+
+		private var _data:String;
+
+		[Bindable]
+		public function get data():String
+		{
+			return _data;
+		}
+		
+		public function set data(value:String):void
+		{
+			_data = value;
+		}
+		
+		private var _tooltip:String;
+
+		[Bindable]
+		public function get tooltip():String
+		{
+			return _tooltip;
+		}
+		
+		public function set tooltip(value:String):void
+		{
+			_tooltip = value;
+		}
+
+
+		private var _selected:Boolean;
+		[Bindable]
+		public function get selected():Boolean{
+			return _selected;
+		}
+		public function set selected(value:Boolean):void{
+			_selected = value;
+		}
+	}
+}
\ No newline at end of file
diff --git a/manualtests/UnitTests/src/main/royale/TestClasses.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/bindables/TwoLayerBindable.as
similarity index 75%
copy from manualtests/UnitTests/src/main/royale/TestClasses.as
copy to manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/bindables/TwoLayerBindable.as
index 11f141c..ab7ee35 100644
--- a/manualtests/UnitTests/src/main/royale/TestClasses.as
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/bindables/TwoLayerBindable.as
@@ -16,26 +16,14 @@
 //  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package
+package flexUnitTests.binding.support.bindings.bindables
 {
-	//test groups
-	import flexUnitTests.*;
 
+[Bindable]
+public class TwoLayerBindable
+{
+    public var bindableOne:OneLayerBindable;
 
-	public class TestClasses
-	{
-		
-		public static function get testClasses():Array {
-			return [
-				  LanguageTester
-					,CoreTester
-					,ReflectionTester
-					,ObservedBugsTester
-					,GithubIssuesTester
-					,NetworkTester
-					,XMLTester
-					,MXRoyaleTester
-					];
-		}
-	}
+    public var toggle:Boolean;
 }
+}
\ No newline at end of file
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/flex/DeepBindingsA.mxml b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/flex/DeepBindingsA.mxml
new file mode 100644
index 0000000..cfc54c6
--- /dev/null
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/flex/DeepBindingsA.mxml
@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<s:HGroup  xmlns:fx="http://ns.adobe.com/mxml/2009"
+            xmlns:s="library://ns.adobe.com/flex/spark"
+            implements="flexUnitTests.binding.support.IBindingTest"
+            xmlns:mx="library://ns.adobe.com/flex/mx"
+            xmlns:bindables="flexUnitTests.binding.support.bindings.bindables.*"
+            initialize="initCompleteHandler()">
+
+
+    <fx:Declarations>
+        <bindables:TwoLayerBindable id="bindable2" >
+            <bindables:bindableOne>
+                <bindables:OneLayerBindable bindableString="deepBindable"/>
+            </bindables:bindableOne>
+        </bindables:TwoLayerBindable>
+        <fx:Object id="destinationObject"
+                   something="true"
+                   destString="{bindable2.bindableOne.bindableString}"
+                   destNumber="{bindable2.bindableOne.bindableNumber}"
+                   destBoolean="{bindable2.bindableOne.bindableBoolean}">
+            <fx:sub>
+                <fx:Object test="test" somelongname="test"  lowerLevelNumDest="{bindable2.bindableOne.bindableNumber}"/>
+            </fx:sub>
+        </fx:Object>
+    </fx:Declarations>
+    <fx:Script>
+        <![CDATA[
+
+
+        import flash.utils.getQualifiedClassName;
+        //IBindingTest methods
+        public function get testName():String {
+
+            return getQualifiedClassName(this);
+        }
+
+
+        public function get internalTestCount():uint {
+            return getTests().length;
+        }
+
+        public function setInboundValue(value:*, internalTestNum:uint = 0):void {
+            try{
+                getTests()[internalTestNum]['setVal'](value)
+            } catch(e:Error) {
+                e.message = "[fail in internal test "+internalTestNum +"]:" +e.message;
+                throw e;
+            }
+        }
+
+        public function getBindingResultValue(internalTestNum:uint = 0):* {
+            var result:*;
+            try{
+                result = getTests()[internalTestNum]['getVal']()
+            } catch(e:Error) {
+                e.message = "[fail in internal test "+internalTestNum +"]:" +e.message;
+                throw e;
+            }
+            return result;
+        }
+
+        private var _tests:Array;
+        //only one internal test
+        private function getTests():Array {
+            if (!_tests) {
+                _tests = [
+                    { //test 0 String
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableString = value
+                        },
+                        'getVal': function ():* {
+                            return testLabel1.text;
+                        }
+                    },
+                    { //test 1 String
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableString = value
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.destString;
+                        }
+                    }
+                    ,
+                    { //test 2  Binding test
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableNumber = value
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.destNumber;
+                        }
+                    },
+                    { //test 3 Binding test
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableNumber = value
+                        },
+                        'getVal': function ():* {
+                            return testLabel2.text;
+                        }
+                    }
+                    ,
+                    { //test 4 Binding test
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableNumber = value
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.destNumber;
+                        }
+                    },
+                    { //test 5 Binding test
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableNumber = value
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.sub.lowerLevelNumDest;
+                        }
+                    }
+                ]
+            }
+            return _tests;
+        }
+
+
+        private function initCompleteHandler():void {
+           // trace('initCompleteHandler', this);
+        }
+
+        [Bindable]
+        public var labelText:String;
+        ]]>
+    </fx:Script>
+
+
+
+    <mx:Label id="testLabel1" text="{bindable2.bindableOne.bindableString}" />
+    <mx:Label id="testLabel2" text="{bindable2.bindableOne.bindableNumber}" />
+    <mx:Label id="testLabel3" text="{bindable2.bindableOne.bindableBoolean}" />
+
+</s:HGroup>
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/flex/FunctionBindingsA.mxml b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/flex/FunctionBindingsA.mxml
new file mode 100644
index 0000000..79e379b
--- /dev/null
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/flex/FunctionBindingsA.mxml
@@ -0,0 +1,280 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<s:HGroup  xmlns:fx="http://ns.adobe.com/mxml/2009"
+            xmlns:s="library://ns.adobe.com/flex/spark"
+            implements="flexUnitTests.binding.support.IBindingTest"
+            xmlns:mx="library://ns.adobe.com/flex/mx"
+            xmlns:bindables="flexUnitTests.binding.support.bindings.bindables.*"
+            initialize="initCompleteHandler()">
+
+
+    <fx:Declarations>
+        <bindables:OneLayerBindable id="bindable1" />
+        <bindables:TwoLayerBindable id="bindable2" >
+            <bindables:bindableOne>
+                <bindables:OneLayerBindable bindableString="deepBindable"/>
+            </bindables:bindableOne>
+        </bindables:TwoLayerBindable>
+        <fx:Object id="destinationObject"
+                   something="true"
+                   destString="{bindable1.getSomething()}"
+                   altString="{bindable1.getSomethingBasedOn(bindable2.toggle)}"
+                   >
+            <fx:sub>
+                <fx:Object  deepLowerLevelString0="{bindable1.getSomething()}"
+                            deepLowerLevelString1="{bindable2.bindableOne.getSomething()}"
+                            deepLowerLevelString2="{bindable2.bindableOne.getSomethingBasedOn(bindable2.toggle)}"
+                />
+            </fx:sub>
+        </fx:Object>
+
+
+    </fx:Declarations>
+    <fx:Script>
+        <![CDATA[
+
+        import flash.utils.getQualifiedClassName;
+
+
+        //IBindingTest methods
+        public function get testName():String {
+
+            return getQualifiedClassName(this);
+        }
+
+        public function get internalTestCount():uint {
+            return getTests().length;
+        }
+
+        public function setInboundValue(value:*, internalTestNum:uint = 0):void {
+            try{
+                getTests()[internalTestNum]['setVal'](value)
+            } catch(e:Error) {
+                e.message = "[fail in internal test "+internalTestNum +"]:" +e.message;
+                throw e;
+            }
+        }
+
+        public function getBindingResultValue(internalTestNum:uint = 0):* {
+            var result:*;
+            try{
+                result = getTests()[internalTestNum]['getVal']()
+            } catch(e:Error) {
+                e.message = "[fail in internal test "+internalTestNum +"]:" +e.message;
+                throw e;
+            }
+            return result;
+        }
+
+        public function getValue(something:*):*{
+            return 'cat'
+        }
+
+        public static function SOMETHING():String{
+            return 'something';
+        }
+
+        public function getFunctParams():Function{
+            return function(test:Boolean=false):Array{
+                return [bindable2.toggle, getValue('blueberry'), SOMETHING(), bindable1.getSomething()];
+            }
+        }
+
+        private var _tests:Array;
+        //only one internal test
+        private function getTests():Array {
+            if (!_tests) {
+                _tests = [
+                        //check start values
+                    { //test 0 String
+                        'setVal': function (value:*):void {
+                            //do nothing
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.destString;
+                        }
+                    },
+                    { //test 1 String
+                        'setVal': function (value:*):void {
+                            //do nothing
+                        },
+                        'getVal': function ():* {
+                            return testLabel1.text;
+                        }
+                    },
+                    { //test 2 String
+                        'setVal': function (value:*):void {
+                            //do nothing
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.altString;
+                        }
+                    },
+                    { //test 3 String
+                        'setVal': function (value:*):void {
+                            //do nothing
+                        },
+                        'getVal': function ():* {
+                            return testLabel2.text;
+                        }
+                    }
+                    ,
+                    { //test 4 String
+                        'setVal': function (value:*):void {
+                            //do nothing
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.sub.deepLowerLevelString0;
+                        }
+                    },
+                    { //test 5 String
+                        'setVal': function (value:*):void {
+                            //do nothing
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.sub.deepLowerLevelString1
+                        }
+                    }
+                    ,
+                    { //test 6String
+                        'setVal': function (value:*):void {
+                            //do nothing
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.sub.deepLowerLevelString2
+                        }
+                    },
+                    { //test 7 String
+                        'setVal': function (value:*):void {
+                            bindable1.bindableBoolean = value;
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.sub.deepLowerLevelString2
+                        }
+                    },
+//now actually do some change based testing
+                    { //test 8 String
+                        'setVal': function (value:*):void {
+                           bindable1.bindableBoolean = value;
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.destString;
+                        }
+                    },
+                    { //test 9 String
+                        'setVal': function (value:*):void {
+                            bindable1.bindableBoolean = value;
+                        },
+                        'getVal': function ():* {
+                            return testLabel1.text;
+                        }
+                    },
+                    { //test 10 String
+                        'setVal': function (value:*):void {
+                            bindable2.toggle = value;
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.altString;
+                        }
+                    },
+                    { //test 11 String
+                        'setVal': function (value:*):void {
+                            bindable2.toggle = value;
+                        },
+                        'getVal': function ():* {
+                            return testLabel2.text;
+                        }
+                    },
+                    { //test 12 String deeper destination
+                        'setVal': function (value:*):void {
+                            bindable1.bindableBoolean = value;
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.sub.deepLowerLevelString0;
+                        }
+                    },
+                    //now some of the deeper source bindings, and deeper desintations (in some cases)
+                    { //test 13 String
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableBoolean = value;
+                        },
+                        'getVal': function ():* {
+                            return testLabel3.text;
+                        }
+                    }
+                    ,
+                    { //test 14 String
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableBoolean = value;
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.sub.deepLowerLevelString1;
+                        }
+                    },
+                    { //test 15 String
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableBoolean = value;
+                        },
+                        'getVal': function ():* {
+                            return testLabel3.text;
+                        }
+                    }
+                    ,
+                    { //test 16 String
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableBoolean = value;
+                            bindable2.toggle = value;
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.sub.deepLowerLevelString2
+                        }
+                    },
+                    { //test 17 String
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableBoolean = value;
+                            bindable2.toggle = value;
+                        },
+                        'getVal': function ():* {
+                            return testLabel4.text;
+                        }
+                    }
+
+
+                ]
+            }
+            return _tests;
+        }
+
+
+        private function initCompleteHandler():void {
+           // trace('initCompleteHandler', this);
+        }
+
+        [Bindable]
+        public var labelText:String;
+        ]]>
+    </fx:Script>
+
+
+    <mx:Label id="testLabel1" text="{bindable1.getSomething()}" />
+    <mx:Label id="testLabel2" text="{bindable1.getSomethingBasedOn(bindable2.toggle)}" />
+    <mx:Label id="testLabel3" text="{bindable2.bindableOne.getSomething()}" />
+    <mx:Label id="testLabel4" text="{bindable2.bindableOne.getSomethingBasedOn(bindable2.toggle)}" />
+</s:HGroup>
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/flex/RendereBindingTestA.mxml b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/flex/RendereBindingTestA.mxml
new file mode 100644
index 0000000..b58c8c7
--- /dev/null
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/flex/RendereBindingTestA.mxml
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<s:HGroup  xmlns:fx="http://ns.adobe.com/mxml/2009"
+            implements="flexUnitTests.binding.support.IBindingTest"
+           xmlns:mx="library://ns.adobe.com/flex/mx"
+            xmlns:s="library://ns.adobe.com/flex/spark"
+           xmlns:internalmxml="flexUnitTests.binding.support.bindings.flex.internalmxml.*"
+            initialize="initCompleteHandler()">
+
+
+    <fx:Script>
+        <![CDATA[
+        import flash.utils.getQualifiedClassName;
+        import flexUnitTests.binding.support.bindings.bindables.ITaskVO;
+        import flexUnitTests.binding.support.bindings.bindables.TaskVO;
+        import flexUnitTests.binding.support.bindings.bindables.TaskVO_on_top_of_class;
+        import flexUnitTests.binding.support.bindings.bindables.TaskVO_on_top_of_property;
+
+        //IBindingTest methods
+        public function get testName():String {
+            return getQualifiedClassName(this);
+        }
+
+
+        public function get internalTestCount():uint {
+            return getTests().length;
+        }
+
+        public function setInboundValue(value:*, internalTestNum:uint = 0):void {
+            try{
+                getTests()[internalTestNum]['setVal'](value)
+            } catch(e:Error) {
+                e.message = "[fail in internal test "+internalTestNum +"]:" +e.message;
+                throw e;
+            }
+        }
+
+        public function getBindingResultValue(internalTestNum:uint = 0):* {
+            var result:*;
+            try{
+                result = getTests()[internalTestNum]['getVal']()
+            } catch(e:Error) {
+                e.message = "[fail in internal test "+internalTestNum +"]:" +e.message;
+                throw e;
+            }
+            return result;
+        }
+
+        private var _tests:Array;
+        //only one internal test
+        private function getTests():Array {
+            if (!_tests) {
+                _tests = [
+                    _tests = [
+                        { //test 0 String
+                            'setVal': function (value:*):void {
+                                //do nothing, this test is to get the initial value
+                            },
+                            'getVal': function ():* {
+                                return testRenderer.checkBoxTarget.label;
+                            }
+                        }
+                    /*{ //test 0 String
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableString = value
+                        },
+                        'getVal': function ():* {
+                            return testLabel1.text;
+                        }
+                    },
+                    { //test 1 String
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableString = value
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.destString;
+                        }
+                    }
+                    ,
+                    { //test 2  Binding test
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableNumber = value
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.destNumber;
+                        }
+                    },
+                    { //test 3 Binding test
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableNumber = value
+                        },
+                        'getVal': function ():* {
+                            return testLabel2.text;
+                        }
+                    }
+                    ,
+                    { //test 4 Binding test
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableNumber = value
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.destNumber;
+                        }
+                    },
+                    { //test 5 Binding test
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableNumber = value
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.sub.lowerLevelNumDest;
+                        }
+                    }*/
+                ]
+            }
+            return _tests;
+        }
+
+
+
+        private var testItems:Array;
+        public function getTestItem(index:int):ITaskVO {
+            if (!testItems) {
+                testItems = [
+                    new TaskVO('myTaskVOlabel1', 'mydata1','mytooltip1'),
+                    new TaskVO('myTaskVOlabel2', 'mydata2','mytooltip2'),
+                    new TaskVO_on_top_of_class('myTaskVOClassToplabel3', 'mydata3','mytooltip3'),
+                    new TaskVO_on_top_of_class('myTaskVOClassToplabel4', 'mydata4','mytooltip4'),
+                    new TaskVO_on_top_of_property('myTaskVOPropToplabel5', 'mydata5','mytooltip5'),
+                    new TaskVO_on_top_of_property('myTaskVOPropToplabel6', 'mydata6','mytooltip6')
+                ];
+
+            }
+
+            return testItems[index];
+        }
+
+        private function initCompleteHandler():void {
+           // trace('initCompleteHandler', this);
+        }
+
+        ]]>
+    </fx:Script>
+
+
+
+    <internalmxml:TaskVOItemRenderer id="testRenderer" />
+</s:HGroup>
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/flex/SimpleBindingsA.mxml b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/flex/SimpleBindingsA.mxml
new file mode 100644
index 0000000..d5f1e04
--- /dev/null
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/flex/SimpleBindingsA.mxml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<s:HGroup xmlns:fx="http://ns.adobe.com/mxml/2009"
+          xmlns:s="library://ns.adobe.com/flex/spark"
+          xmlns:mx="library://ns.adobe.com/flex/mx"
+          implements="flexUnitTests.binding.support.IBindingTest"
+          initialize="initCompleteHandler()">
+
+    <fx:Script>
+        <![CDATA[
+
+        import flash.utils.getQualifiedClassName;
+        //IBindingTest methods
+        public function get testName():String {
+
+            return getQualifiedClassName(this);
+        }
+
+
+        public function get internalTestCount():uint {
+            return getTests().length;
+        }
+
+        public function setInboundValue(value:*, internalTestNum:uint = 0):void {
+            getTests()[internalTestNum]['setVal'](value)
+        }
+
+        public function getBindingResultValue(internalTestNum:uint = 0):* {
+            return getTests()[internalTestNum]['getVal']()
+        }
+
+        private var _tests:Array;
+        //only one internal test
+        private function getTests():Array {
+            if (!_tests) {
+                _tests = [
+                    { //test 0
+                        'setVal': function (value:*):void {
+                            labelText = value
+                        },
+                        'getVal': function ():* {
+                            return testLabel.text;
+                        }
+                    }
+                ]
+            }
+            return _tests;
+        }
+
+
+        private function initCompleteHandler():void {
+           // trace('initCompleteHandler', this);
+        }
+
+        [Bindable]
+        public var labelText:String;
+        ]]>
+    </fx:Script>
+
+
+
+    <mx:Label id="testLabel" text="{labelText}" />
+
+</s:HGroup>
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/flex/SimpleBindingsB.mxml b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/flex/SimpleBindingsB.mxml
new file mode 100644
index 0000000..a3ab5df
--- /dev/null
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/flex/SimpleBindingsB.mxml
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<s:HGroup  xmlns:fx="http://ns.adobe.com/mxml/2009"
+           xmlns:s="library://ns.adobe.com/flex/spark"
+           xmlns:mx="library://ns.adobe.com/flex/mx"
+            implements="flexUnitTests.binding.support.IBindingTest"
+            xmlns:bindables="flexUnitTests.binding.support.bindings.bindables.*"
+            initialize="initCompleteHandler()">
+
+    <fx:Declarations>
+        <bindables:OneLayerBindable id="bindable1" />
+        <fx:Object id="destinationObject"
+                   something="true"
+                   destString="{bindable1.bindableString}"
+                   destNumber="{bindable1.bindableNumber}"
+                   destBoolean="{bindable1.bindableBoolean}">
+            <fx:sub>
+                <fx:Object test="test" somelongname="test"  lowerLevelNumDest="{bindable1.bindableNumber}"/>
+            </fx:sub>
+            <fx:other>
+                <bindables:OneLayerBindable bindableString="test"/>
+            </fx:other>
+        </fx:Object>
+
+
+    </fx:Declarations>
+    <fx:Script>
+        <![CDATA[
+
+        import flash.utils.getQualifiedClassName;
+        //IBindingTest methods
+        public function get testName():String {
+
+            return getQualifiedClassName(this);
+        }
+
+
+        public function get internalTestCount():uint {
+            return getTests().length;
+        }
+
+        public function setInboundValue(value:*, internalTestNum:uint = 0):void {
+            try{
+                getTests()[internalTestNum]['setVal'](value)
+            } catch(e:Error) {
+                e.message = "[fail in internal test "+internalTestNum +"]:" +e.message;
+                throw e;
+            }
+        }
+
+        public function getBindingResultValue(internalTestNum:uint = 0):* {
+            var result:*;
+            try{
+                result = getTests()[internalTestNum]['getVal']()
+            } catch(e:Error) {
+                e.message = "[fail in internal test "+internalTestNum +"]:" +e.message;
+                throw e;
+            }
+            return result;
+        }
+
+        private var _tests:Array;
+        //only one internal test
+        private function getTests():Array {
+            if (!_tests) {
+                _tests = [
+                    { //test 0 String
+                        'setVal': function (value:*):void {
+                            bindable1.bindableString = value
+                        },
+                        'getVal': function ():* {
+                            return testLabel1.text;
+                        }
+                    },
+                    { //test 1 String
+                        'setVal': function (value:*):void {
+                            bindable1.bindableString = value
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.destString;
+                        }
+                    }
+                    ,
+                    { //test 2 Codegen test only. Testing a compiler-jx fix for fx:Object output for the above definition (also release mode fixes)
+                        'setVal': function (value:*):void {
+                            destinationObject.sub.somelongname = value
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.sub.somelongname;
+                        }
+                    },
+                    { //test 3 Codegen test only. Testing a compiler-jx fix for fx:Object output for the above definition (release mode)
+                        'setVal': function (value:*):void {
+                            destinationObject.other.bindableString = value
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.other.bindableString;
+                        }
+                    },
+                    { //test 4 Binding test
+                        'setVal': function (value:*):void {
+                            bindable1.bindableNumber = value
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.destNumber;
+                        }
+                    },
+                    { //test 5 Binding test
+                        'setVal': function (value:*):void {
+                            bindable1.bindableNumber = value
+                        },
+                        'getVal': function ():* {
+                            return testLabel2.text;
+                        }
+                    }
+                    ,
+                    { //test 6 Binding test
+                        'setVal': function (value:*):void {
+                            bindable1.bindableNumber = value
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.destNumber;
+                        }
+                    },
+                    { //test 7 Binding test
+                        'setVal': function (value:*):void {
+                            bindable1.bindableNumber = value
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.sub.lowerLevelNumDest;
+                        }
+                    }
+                ]
+            }
+            return _tests;
+        }
+
+
+        private function initCompleteHandler():void {
+           // trace('initCompleteHandler', this);
+        }
+
+        [Bindable]
+        public var labelText:String;
+        ]]>
+    </fx:Script>
+
+    <mx:Label id="testLabel1" text="{bindable1.bindableString}" />
+    <mx:Label id="testLabel2" text="{bindable1.bindableNumber}" />
+    <mx:Label id="testLabel3" text="{bindable1.bindableBoolean}" />
+
+</s:HGroup>
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/flex/internalmxml/TaskVOItemRenderer.mxml b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/flex/internalmxml/TaskVOItemRenderer.mxml
new file mode 100644
index 0000000..7f039a5
--- /dev/null
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/flex/internalmxml/TaskVOItemRenderer.mxml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<s:ItemRenderer  xmlns:fx="http://ns.adobe.com/mxml/2009"
+				 xmlns:s="library://ns.adobe.com/flex/spark"
+					>
+	
+	<fx:Script>
+		<![CDATA[
+		
+			import flexUnitTests.binding.support.bindings.bindables.ITaskVO;
+
+			import flash.events.Event;
+			
+			[Bindable("dataChange")]
+	        public function get partitionTaskVo():ITaskVO
+	        {
+	            return data as ITaskVO;
+	        }
+			
+			protected function onSelectionChanged(event:Event):void
+			{
+				data.isSelected = event.target["selected"];
+			}
+			
+		]]>
+	</fx:Script>
+
+	<s:HGroup width="100%">
+		<s:CheckBox id="checkBoxTarget"  label="{partitionTaskVo.label + ' - ' + partitionTaskVo.tooltip}" change="onSelectionChanged(event)"
+					percentWidth="100"/>
+	</s:HGroup>
+</s:ItemRenderer>
\ No newline at end of file
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/royale/DeepBindingsA.mxml b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/royale/DeepBindingsA.mxml
new file mode 100644
index 0000000..408ab2d
--- /dev/null
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/royale/DeepBindingsA.mxml
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<js:HGroup  xmlns:fx="http://ns.adobe.com/mxml/2009"
+            implements="flexUnitTests.binding.support.IBindingTest"
+            xmlns:js="library://ns.apache.org/royale/basic"
+            xmlns:bindables="flexUnitTests.binding.support.bindings.bindables.*"
+            initComplete="initCompleteHandler()">
+
+
+    <fx:Declarations>
+        <bindables:TwoLayerBindable id="bindable2" >
+            <bindables:bindableOne>
+                <bindables:OneLayerBindable bindableString="deepBindable"/>
+            </bindables:bindableOne>
+        </bindables:TwoLayerBindable>
+        <fx:Object id="destinationObject"
+                   something="true"
+                   destString="{bindable2.bindableOne.bindableString}"
+                   destNumber="{bindable2.bindableOne.bindableNumber}"
+                   destBoolean="{bindable2.bindableOne.bindableBoolean}">
+            <fx:sub>
+                <fx:Object test="test" somelongname="test"  lowerLevelNumDest="{bindable2.bindableOne.bindableNumber}"/>
+            </fx:sub>
+        </fx:Object>
+
+
+    </fx:Declarations>
+    <fx:Script>
+        <![CDATA[
+
+
+        import org.apache.royale.reflection.getQualifiedClassName;
+        //IBindingTest methods
+        public function get testName():String {
+
+            return getQualifiedClassName(this);
+        }
+
+
+        public function get internalTestCount():uint {
+            return getTests().length;
+        }
+
+        public function setInboundValue(value:*, internalTestNum:uint = 0):void {
+            try{
+                getTests()[internalTestNum]['setVal'](value)
+            } catch(e:Error) {
+                e.message = "[fail in internal test "+internalTestNum +"]:" +e.message;
+                throw e;
+            }
+        }
+
+        public function getBindingResultValue(internalTestNum:uint = 0):* {
+            var result:*;
+            try{
+                result = getTests()[internalTestNum]['getVal']()
+            } catch(e:Error) {
+                e.message = "[fail in internal test "+internalTestNum +"]:" +e.message;
+                throw e;
+            }
+            return result;
+        }
+
+        private var _tests:Array;
+        //only one internal test
+        private function getTests():Array {
+            if (!_tests) {
+                _tests = [
+                    { //test 0 String
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableString = value
+                        },
+                        'getVal': function ():* {
+                            return testLabel1.text;
+                        }
+                    },
+                    { //test 1 String
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableString = value
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.destString;
+                        }
+                    }
+                    ,
+                    { //test 2  Binding test
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableNumber = value
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.destNumber;
+                        }
+                    },
+                    { //test 3 Binding test
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableNumber = value
+                        },
+                        'getVal': function ():* {
+                            return testLabel2.text;
+                        }
+                    }
+                    ,
+                    { //test 4 Binding test
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableNumber = value
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.destNumber;
+                        }
+                    },
+                    { //test 5 Binding test
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableNumber = value
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.sub.lowerLevelNumDest;
+                        }
+                    }
+                ]
+            }
+            return _tests;
+        }
+
+
+        private function initCompleteHandler():void {
+           // trace('initCompleteHandler', this);
+        }
+
+        [Bindable]
+        public var labelText:String;
+        ]]>
+    </fx:Script>
+
+    <js:beads>
+        <js:ContainerDataBinding/>
+    </js:beads>
+
+    <js:Label localId="testLabel1" text="{bindable2.bindableOne.bindableString}" />
+    <js:Label localId="testLabel2" text="{bindable2.bindableOne.bindableNumber}" />
+    <js:Label localId="testLabel3" text="{bindable2.bindableOne.bindableBoolean}" />
+
+</js:HGroup>
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/royale/FunctionBindingsA.mxml b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/royale/FunctionBindingsA.mxml
new file mode 100644
index 0000000..9148b04
--- /dev/null
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/royale/FunctionBindingsA.mxml
@@ -0,0 +1,285 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<js:HGroup  xmlns:fx="http://ns.adobe.com/mxml/2009"
+            implements="flexUnitTests.binding.support.IBindingTest"
+            xmlns:js="library://ns.apache.org/royale/basic"
+            xmlns:bindables="flexUnitTests.binding.support.bindings.bindables.*"
+            initComplete="initCompleteHandler()">
+
+
+    <fx:Declarations>
+        <bindables:OneLayerBindable id="bindable1" />
+        <bindables:TwoLayerBindable id="bindable2" >
+            <bindables:bindableOne>
+                <bindables:OneLayerBindable bindableString="deepBindable"/>
+            </bindables:bindableOne>
+        </bindables:TwoLayerBindable>
+        <fx:Object id="destinationObject"
+                   something="true"
+                   destString="{bindable1.getSomething()}"
+                   altString="{bindable1.getSomethingBasedOn(bindable2.toggle)}"
+                   >
+            <fx:sub>
+                <fx:Object  deepLowerLevelString0="{bindable1.getSomething()}"
+                            deepLowerLevelString1="{bindable2.bindableOne.getSomething()}"
+                            deepLowerLevelString2="{bindable2.bindableOne.getSomethingBasedOn(bindable2.toggle)}"
+                />
+            </fx:sub>
+        </fx:Object>
+
+
+    </fx:Declarations>
+    <fx:Script>
+        <![CDATA[
+
+
+
+
+
+        import org.apache.royale.reflection.getQualifiedClassName;
+        //IBindingTest methods
+        public function get testName():String {
+
+            return getQualifiedClassName(this);
+        }
+
+
+        public function get internalTestCount():uint {
+            return getTests().length;
+        }
+
+        public function setInboundValue(value:*, internalTestNum:uint = 0):void {
+            try{
+                getTests()[internalTestNum]['setVal'](value)
+            } catch(e:Error) {
+                e.message = "[fail in internal test "+internalTestNum +"]:" +e.message;
+                throw e;
+            }
+        }
+
+        public function getBindingResultValue(internalTestNum:uint = 0):* {
+            var result:*;
+            try{
+                result = getTests()[internalTestNum]['getVal']()
+            } catch(e:Error) {
+                e.message = "[fail in internal test "+internalTestNum +"]:" +e.message;
+                throw e;
+            }
+            return result;
+        }
+
+        public function getValue(something:*):*{
+            return 'cat'
+        }
+
+        public static function SOMETHING():String{
+            return 'something';
+        }
+
+        public function getFunctParams():Function{
+            return function(test:Boolean=false):Array{
+                return [bindable2.toggle, getValue('blueberry'), SOMETHING(), bindable1.getSomething()];
+            }
+        }
+
+        private var _tests:Array;
+        //only one internal test
+        private function getTests():Array {
+            if (!_tests) {
+                _tests = [
+                        //check start values
+                    { //test 0 String
+                        'setVal': function (value:*):void {
+                            //do nothing
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.destString;
+                        }
+                    },
+                    { //test 1 String
+                        'setVal': function (value:*):void {
+                            //do nothing
+                        },
+                        'getVal': function ():* {
+                            return testLabel1.text;
+                        }
+                    },
+                    { //test 2 String
+                        'setVal': function (value:*):void {
+                            //do nothing
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.altString;
+                        }
+                    },
+                    { //test 3 String
+                        'setVal': function (value:*):void {
+                            //do nothing
+                        },
+                        'getVal': function ():* {
+                            return testLabel2.text;
+                        }
+                    }
+                    ,
+                    { //test 4 String
+                        'setVal': function (value:*):void {
+                            //do nothing
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.sub.deepLowerLevelString0;
+                        }
+                    },
+                    { //test 5 String
+                        'setVal': function (value:*):void {
+                            //do nothing
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.sub.deepLowerLevelString1
+                        }
+                    }
+                    ,
+                    { //test 6String
+                        'setVal': function (value:*):void {
+                            //do nothing
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.sub.deepLowerLevelString2
+                        }
+                    },
+                    { //test 7 String
+                        'setVal': function (value:*):void {
+                            bindable1.bindableBoolean = value;
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.sub.deepLowerLevelString2
+                        }
+                    },
+//now actually do some change based testing
+                    { //test 8 String
+                        'setVal': function (value:*):void {
+                           bindable1.bindableBoolean = value;
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.destString;
+                        }
+                    },
+                    { //test 9 String
+                        'setVal': function (value:*):void {
+                            bindable1.bindableBoolean = value;
+                        },
+                        'getVal': function ():* {
+                            return testLabel1.text;
+                        }
+                    },
+                    { //test 10 String
+                        'setVal': function (value:*):void {
+                            bindable2.toggle = value;
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.altString;
+                        }
+                    },
+                    { //test 11 String
+                        'setVal': function (value:*):void {
+                            bindable2.toggle = value;
+                        },
+                        'getVal': function ():* {
+                            return testLabel2.text;
+                        }
+                    },
+                    { //test 12 String deeper destination
+                        'setVal': function (value:*):void {
+                            bindable1.bindableBoolean = value;
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.sub.deepLowerLevelString0;
+                        }
+                    },
+                    //now some of the deeper source bindings, and deeper desintations (in some cases)
+                    { //test 13 String
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableBoolean = value;
+                        },
+                        'getVal': function ():* {
+                            return testLabel3.text;
+                        }
+                    }
+                    ,
+                    { //test 14 String
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableBoolean = value;
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.sub.deepLowerLevelString1;
+                        }
+                    },
+                    { //test 15 String
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableBoolean = value;
+                        },
+                        'getVal': function ():* {
+                            return testLabel3.text;
+                        }
+                    }
+                    ,
+                    { //test 16 String
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableBoolean = value;
+                            bindable2.toggle = value;
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.sub.deepLowerLevelString2
+                        }
+                    },
+                    { //test 17 String
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableBoolean = value;
+                            bindable2.toggle = value;
+                        },
+                        'getVal': function ():* {
+                            return testLabel4.text;
+                        }
+                    }
+
+
+                ]
+            }
+            return _tests;
+        }
+
+
+        private function initCompleteHandler():void {
+           // trace('initCompleteHandler', this);
+        }
+
+        [Bindable]
+        public var labelText:String;
+        ]]>
+    </fx:Script>
+
+    <js:beads>
+        <js:ContainerDataBinding/>
+    </js:beads>
+
+    <js:Label localId="testLabel1" text="{bindable1.getSomething()}" />
+    <js:Label localId="testLabel2" text="{bindable1.getSomethingBasedOn(bindable2.toggle)}" />
+    <js:Label localId="testLabel3" text="{bindable2.bindableOne.getSomething()}" />
+    <js:Label localId="testLabel4" text="{bindable2.bindableOne.getSomethingBasedOn(bindable2.toggle)}" />
+</js:HGroup>
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/royale/RendereBindingTestA.mxml b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/royale/RendereBindingTestA.mxml
new file mode 100644
index 0000000..c5cde0f
--- /dev/null
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/royale/RendereBindingTestA.mxml
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<js:HGroup  xmlns:fx="http://ns.adobe.com/mxml/2009"
+            implements="flexUnitTests.binding.support.IBindingTest"
+            xmlns:js="library://ns.apache.org/royale/basic"
+            xmlns:bindings="flexUnitTests.binding.support.bindings.royale.*"
+            xmlns:bindables="flexUnitTests.binding.support.bindings.bindables.*"
+            xmlns:internalmxml="flexUnitTests.binding.support.bindings.royale.internalmxml.*"
+            initComplete="initCompleteHandler()">
+
+
+    <fx:Script>
+        <![CDATA[
+        import flexUnitTests.binding.support.bindings.bindables.ITaskVO;
+        import flexUnitTests.binding.support.bindings.bindables.TaskVO;
+        import flexUnitTests.binding.support.bindings.bindables.TaskVO_on_top_of_class;
+        import flexUnitTests.binding.support.bindings.bindables.TaskVO_on_top_of_property;
+
+        import org.apache.royale.reflection.getQualifiedClassName;
+        //IBindingTest methods
+        public function get testName():String {
+            return getQualifiedClassName(this);
+        }
+
+        public function get internalTestCount():uint {
+            return getTests().length;
+        }
+
+        public function setInboundValue(value:*, internalTestNum:uint = 0):void {
+            try{
+                getTests()[internalTestNum]['setVal'](value)
+            } catch(e:Error) {
+                e.message = "[fail in internal test "+internalTestNum +"]:" +e.message;
+                throw e;
+            }
+        }
+
+        public function getBindingResultValue(internalTestNum:uint = 0):* {
+            var result:*;
+            try{
+                result = getTests()[internalTestNum]['getVal']()
+            } catch(e:Error) {
+                e.message = "[fail in internal test "+internalTestNum +"]:" +e.message;
+                throw e;
+            }
+            return result;
+        }
+
+        private var _tests:Array;
+        //only one internal test
+        private function getTests():Array {
+            if (!_tests) {
+                _tests = [
+                    { //test 0 String
+                        'setVal': function (value:*):void {
+                            //do nothing, this test is to get the initial value
+                        },
+                        'getVal': function ():* {
+                            return testRenderer.checkBoxTarget.text;
+                        }
+                    },
+                    { //test 1
+                        'setVal': function (value:*):void {
+                            testRenderer.data = getTestItem(value)
+                        },
+                        'getVal': function ():* {
+                            return testRenderer.checkBoxTarget.text;
+                        }
+                    },
+                    { //test 1
+                        'setVal': function (value:*):void {
+                            var item:ITaskVO =  getTestItem(value);
+                            testRenderer.data = item;
+                            item.tooltip = value;
+                        },
+                        'getVal': function ():* {
+                            return testRenderer.checkBoxTarget.text;
+                        }
+                    }
+
+                    /*{ //test 0 String
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableString = value
+                        },
+                        'getVal': function ():* {
+                            return testLabel1.text;
+                        }
+                    },
+                    { //test 1 String
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableString = value
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.destString;
+                        }
+                    }
+                    ,
+                    { //test 2  Binding test
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableNumber = value
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.destNumber;
+                        }
+                    },
+                    { //test 3 Binding test
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableNumber = value
+                        },
+                        'getVal': function ():* {
+                            return testLabel2.text;
+                        }
+                    }
+                    ,
+                    { //test 4 Binding test
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableNumber = value
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.destNumber;
+                        }
+                    },
+                    { //test 5 Binding test
+                        'setVal': function (value:*):void {
+                            bindable2.bindableOne.bindableNumber = value
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.sub.lowerLevelNumDest;
+                        }
+                    }*/
+                ]
+            }
+            return _tests;
+        }
+        private var testItems:Array;
+        public function getTestItem(index:int):ITaskVO {
+            if (!testItems) {
+                testItems = [
+                    new TaskVO('myTaskVOlabel1', 'mydata1','mytooltip1'),
+                    new TaskVO('myTaskVOlabel2', 'mydata2','mytooltip2'),
+                    new TaskVO_on_top_of_class('myTaskVOClassToplabel3', 'mydata3','mytooltip3'),
+                    new TaskVO_on_top_of_class('myTaskVOClassToplabel4', 'mydata4','mytooltip4'),
+                    new TaskVO_on_top_of_property('myTaskVOPropToplabel5', 'mydata5','mytooltip5'),
+                    new TaskVO_on_top_of_property('myTaskVOPropToplabel6', 'mydata6','mytooltip6')
+                ];
+
+            }
+
+            return testItems[index];
+        }
+
+
+        private function initCompleteHandler():void {
+           // trace('initCompleteHandler', this);
+        }
+
+        ]]>
+    </fx:Script>
+
+  <!--  <js:beads>
+        <js:ContainerDataBinding/>
+    </js:beads>-->
+
+    <internalmxml:TaskVOItemRenderer id="testRenderer" />
+</js:HGroup>
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/royale/SimpleBindingsA.mxml b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/royale/SimpleBindingsA.mxml
new file mode 100644
index 0000000..d316f08
--- /dev/null
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/royale/SimpleBindingsA.mxml
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<js:HGroup xmlns:fx="http://ns.adobe.com/mxml/2009"
+           implements="flexUnitTests.binding.support.IBindingTest"
+          xmlns:js="library://ns.apache.org/royale/basic"
+          initComplete="initCompleteHandler()">
+
+    <fx:Script>
+        <![CDATA[
+
+
+
+        import org.apache.royale.reflection.getQualifiedClassName;
+        //IBindingTest methods
+        public function get testName():String {
+
+            return getQualifiedClassName(this);
+        }
+
+
+        public function get internalTestCount():uint {
+            return getTests().length;
+        }
+
+        public function setInboundValue(value:*, internalTestNum:uint = 0):void {
+            getTests()[internalTestNum]['setVal'](value)
+        }
+
+        public function getBindingResultValue(internalTestNum:uint = 0):* {
+            return getTests()[internalTestNum]['getVal']()
+        }
+
+        private var _tests:Array;
+        //only one internal test
+        private function getTests():Array {
+            if (!_tests) {
+                _tests = [
+                    { //test 0
+                        'setVal': function (value:*):void {
+                            labelText = value
+                        },
+                        'getVal': function ():* {
+                            return testLabel.text;
+                        }
+                    },
+                    { //test 1 ('binding with 'this' in it)
+                        'setVal': function (value:*):void {
+                            labelText = value
+                        },
+                        'getVal': function ():* {
+                            return testLabel2.text;
+                        }
+                    }
+                ]
+            }
+            return _tests;
+        }
+
+
+        private function initCompleteHandler():void {
+           // trace('initCompleteHandler', this);
+        }
+
+        [Bindable]
+        public var labelText:String;
+        ]]>
+    </fx:Script>
+
+    <js:beads>
+        <js:ContainerDataBinding/>
+    </js:beads>
+
+    <js:Label localId="testLabel" text="{labelText}" />
+    <js:Label localId="testLabel2" text="{this.labelText}" />
+</js:HGroup>
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/royale/SimpleBindingsB.mxml b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/royale/SimpleBindingsB.mxml
new file mode 100644
index 0000000..9f41ce3
--- /dev/null
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/royale/SimpleBindingsB.mxml
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<js:HGroup  xmlns:fx="http://ns.adobe.com/mxml/2009"
+            implements="flexUnitTests.binding.support.IBindingTest"
+            xmlns:js="library://ns.apache.org/royale/basic"
+            xmlns:bindables="flexUnitTests.binding.support.bindings.bindables.*"
+            initComplete="initCompleteHandler()">
+
+
+    <fx:Declarations>
+        <bindables:OneLayerBindable id="bindable1" />
+        <fx:Object id="destinationObject"
+                   something="true"
+                   destString="{bindable1.bindableString}"
+                   destNumber="{bindable1.bindableNumber}"
+                   destBoolean="{bindable1.bindableBoolean}">
+            <fx:sub>
+                <fx:Object test="test" somelongname="test"  lowerLevelNumDest="{bindable1.bindableNumber}"/>
+            </fx:sub>
+            <fx:other>
+                <bindables:OneLayerBindable bindableString="test"/>
+            </fx:other>
+        </fx:Object>
+
+
+    </fx:Declarations>
+    <fx:Script>
+        <![CDATA[
+
+
+        import org.apache.royale.reflection.getQualifiedClassName;
+        //IBindingTest methods
+        public function get testName():String {
+
+            return getQualifiedClassName(this);
+        }
+
+
+        public function get internalTestCount():uint {
+            return getTests().length;
+        }
+
+        public function setInboundValue(value:*, internalTestNum:uint = 0):void {
+            try{
+                getTests()[internalTestNum]['setVal'](value)
+            } catch(e:Error) {
+                e.message = "[fail in internal test "+internalTestNum +"]:" +e.message;
+                throw e;
+            }
+        }
+
+        public function getBindingResultValue(internalTestNum:uint = 0):* {
+            var result:*;
+            try{
+                result = getTests()[internalTestNum]['getVal']()
+            } catch(e:Error) {
+                e.message = "[fail in internal test "+internalTestNum +"]:" +e.message;
+                throw e;
+            }
+            return result;
+        }
+
+        private var _tests:Array;
+        //only one internal test
+        private function getTests():Array {
+            if (!_tests) {
+                _tests = [
+                    { //test 0 String
+                        'setVal': function (value:*):void {
+                            bindable1.bindableString = value
+                        },
+                        'getVal': function ():* {
+                            return testLabel1.text;
+                        }
+                    },
+                    { //test 1 String
+                        'setVal': function (value:*):void {
+                            bindable1.bindableString = value
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.destString;
+                        }
+                    }
+                    ,
+                    { //test 2 Codegen test only. Testing a compiler-jx fix for fx:Object output for the above definition (also release mode fixes)
+                        'setVal': function (value:*):void {
+                            destinationObject.sub.somelongname = value
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.sub.somelongname;
+                        }
+                    },
+                    { //test 3 Codegen test only. Testing a compiler-jx fix for fx:Object output for the above definition (release mode)
+                        'setVal': function (value:*):void {
+                            destinationObject.other.bindableString = value
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.other.bindableString;
+                        }
+                    },
+                    { //test 4 Binding test
+                        'setVal': function (value:*):void {
+                            bindable1.bindableNumber = value
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.destNumber;
+                        }
+                    },
+                    { //test 5 Binding test
+                        'setVal': function (value:*):void {
+                            bindable1.bindableNumber = value
+                        },
+                        'getVal': function ():* {
+                            return testLabel2.text;
+                        }
+                    }
+                    ,
+                    { //test 6 Binding test
+                        'setVal': function (value:*):void {
+                            bindable1.bindableNumber = value
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.destNumber;
+                        }
+                    },
+                    { //test 7 Binding test
+                        'setVal': function (value:*):void {
+                            bindable1.bindableNumber = value
+                        },
+                        'getVal': function ():* {
+                            return destinationObject.sub.lowerLevelNumDest;
+                        }
+                    }
+                ]
+            }
+            return _tests;
+        }
+
+
+        private function initCompleteHandler():void {
+           // trace('initCompleteHandler', this);
+        }
+
+        [Bindable]
+        public var labelText:String;
+        ]]>
+    </fx:Script>
+
+    <js:beads>
+        <js:ContainerDataBinding/>
+    </js:beads>
+
+    <js:Label localId="testLabel1" text="{bindable1.bindableString}" />
+    <js:Label localId="testLabel2" text="{bindable1.bindableNumber}" />
+    <js:Label localId="testLabel3" text="{bindable1.bindableBoolean}" />
+
+</js:HGroup>
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/royale/internalmxml/TaskVOItemRenderer.mxml b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/royale/internalmxml/TaskVOItemRenderer.mxml
new file mode 100644
index 0000000..3245be9
--- /dev/null
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/royale/internalmxml/TaskVOItemRenderer.mxml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<j:ListItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
+				  	 xmlns:j="flexUnitTests.binding.support.bindings.royale.internalmxml.support.*"
+					 xmlns:js="library://ns.apache.org/royale/basic" 
+					 xmlns:html="library://ns.apache.org/royale/html" 
+					 xmlns="http://www.w3.org/1999/xhtml" 
+					  >
+	<!--<j:style>
+		<js:AllCSSStyles paddingLeft="0" borderTop="1px solid #CCCCCC"/>
+	</j:style>-->
+	<j:beads>
+		<js:ItemRendererDataBinding />
+	</j:beads>
+	
+	<fx:Script>
+		<![CDATA[
+		
+			import flexUnitTests.binding.support.bindings.bindables.ITaskVO;
+
+			import org.apache.royale.events.Event;
+			
+			[Bindable("dataChange")]
+	        public function get partitionTaskVo():ITaskVO
+	        {
+	            return data as ITaskVO;
+	        }
+			
+			protected function onSelectionChanged(event:Event):void
+			{
+				data.isSelected = event.target["selected"];
+			}
+			
+		]]>
+	</fx:Script>
+
+	<js:HGroup percentWidth="100">
+		<js:CheckBox id="checkBoxTarget" text="{partitionTaskVo.label + ' - ' + partitionTaskVo.tooltip}" change="onSelectionChanged(event)"
+					percentWidth="100"/>
+	</js:HGroup>
+</j:ListItemRenderer>
\ No newline at end of file
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/royale/internalmxml/support/ListItemRenderer.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/royale/internalmxml/support/ListItemRenderer.as
new file mode 100644
index 0000000..c0cd467
--- /dev/null
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/support/bindings/royale/internalmxml/support/ListItemRenderer.as
@@ -0,0 +1,147 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package flexUnitTests.binding.support.bindings.royale.internalmxml.support
+{
+    COMPILE::JS
+    {
+	import org.apache.royale.core.WrappedHTMLElement;
+	import org.apache.royale.html.util.addElementToWrapper;
+    }
+    import org.apache.royale.core.StyledMXMLItemRenderer;
+	import org.apache.royale.events.Event;
+	import org.apache.royale.html.util.getLabelFromData;
+	/*import org.apache.royale.jewel.beads.controls.TextAlign;
+	import org.apache.royale.jewel.beads.itemRenderers.IAlignItemRenderer;
+	import org.apache.royale.jewel.beads.itemRenderers.ITextItemRenderer;*/
+	
+	/**
+	 *  The ListItemRenderer defines the basic Item Renderer for a Jewel List Component.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion Royale 0.9.4
+	 */
+	public class ListItemRenderer extends StyledMXMLItemRenderer /*implements ITextItemRenderer*//*, IAlignItemRenderer*/
+	{
+		/**
+		 *  constructor.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion Royale 0.9.4
+		 */
+		public function ListItemRenderer()
+		{
+			super();
+
+			typeNames = "jewel item";
+
+			if(MXMLDescriptor != null)
+			{
+				addClass("mxmlContent");
+			}
+		}
+
+		private var _text:String = "";
+
+		[Bindable(event="textChange")]
+        /**
+         *  The text of the renderer
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.9.4
+         */
+		public function get text():String
+		{
+            return _text;
+		}
+
+		public function set text(value:String):void
+		{
+            if(value != _text) {
+				_text = value;
+				COMPILE::JS
+				{
+				if(MXMLDescriptor == null)
+				{
+					element.innerHTML = _text;
+				}
+				}
+				dispatchEvent(new Event('textChange'));
+			}
+		}
+
+   //     protected var textAlign:TextAlign;
+
+		/**
+		 *  How text align in the itemRenderer instance.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion Royale 0.9.4
+		 */
+		/*public function get align():String
+		{
+			return textAlign.align;
+		}
+
+		public function set align(value:String):void
+		{
+			if(!textAlign)
+			{
+				textAlign = new TextAlign();
+				addBead(textAlign);
+			}
+			textAlign.align = value;
+		}*/
+
+		/**
+		 *  Sets the data value and uses the String version of the data for display.
+		 * 
+		 *  @param Object data The object being displayed by the itemRenderer instance.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion Royale 0.9.4
+		 */
+        override public function set data(value:Object):void
+        {
+            text = getLabelFromData(this, value);
+            super.data = value;
+        }
+
+        /**
+         * @royaleignorecoercion org.apache.royale.core.WrappedHTMLElement
+		 * @royaleignorecoercion Text
+         */
+        COMPILE::JS
+        override protected function createElement():WrappedHTMLElement
+        {
+			addElementToWrapper(this, 'li');
+            return element;
+        }
+        
+	}
+}
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/utils/BindableTestUtil.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/utils/BindableTestUtil.as
new file mode 100644
index 0000000..5d2abcb
--- /dev/null
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/utils/BindableTestUtil.as
@@ -0,0 +1,190 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package flexUnitTests.binding.utils {
+import testshim.RoyaleUnitTestRunner;
+
+
+COMPILE::Flex{
+    import flash.events.Event;
+    import flash.events.IEventDispatcher;
+    import mx.events.PropertyChangeEvent;
+    import flash.utils.getQualifiedClassName;
+}
+COMPILE::Royale{
+    import org.apache.royale.events.Event;
+    import org.apache.royale.events.IEventDispatcher;
+    import org.apache.royale.events.ValueChangeEvent;
+    import org.apache.royale.reflection.getQualifiedClassName;
+}
+
+public class BindableTestUtil {
+
+    COMPILE::Flex
+    public static const VALUE_CHANGE_EVENT:String = "propertyChange";
+
+    COMPILE::Royale
+    public static const VALUE_CHANGE_EVENT:String = "valueChange";
+
+
+    private static function getBaseEventName(event:Event):String{
+        var name:String = getQualifiedClassName(event);
+        name = name.split('::').join('.'); //in flex
+        name = name.split('.').pop();
+        return name;
+    }
+
+    private static function getValueChangeDescription(event:Event):String{
+        var desc:String;
+        COMPILE::Flex{
+            var vce:PropertyChangeEvent = PropertyChangeEvent(event);
+            desc = 'ValueChangeEvent::property('+ vce.property+'), oldVal:('+ vce.oldValue+ "), newValue:("+ vce.newValue+")";
+        }
+        COMPILE::Royale{
+            var vce:ValueChangeEvent = ValueChangeEvent(event);
+            desc = 'ValueChangeEvent::property('+ vce.propertyName+'), oldVal:('+ vce.oldValue+ "), newValue:("+ vce.newValue+")";
+        }
+        return desc;
+    }
+
+    COMPILE::Flex
+    private static const VALUECHANGE_EVENT_CLASS:Class = PropertyChangeEvent;
+    COMPILE::Royale
+    private static const VALUECHANGE_EVENT_CLASS:Class = ValueChangeEvent;
+
+    public static var deactivated:Boolean;
+
+    private static var _unlocked:Boolean;
+    private static var _instance:BindableTestUtil;
+    public static function get instance():BindableTestUtil{
+        if (!_instance) {
+            _unlocked = true;
+            _instance = new BindableTestUtil();
+            _unlocked = false;
+        }
+        return _instance;
+    }
+
+    private var _history:Array= [];
+
+
+    public function BindableTestUtil() {
+        if (!_unlocked) throw new Error("Singleton only, access view BindableTestUtil.instance");
+    }
+
+
+    public function reset():void{
+        _history= [];
+        for (var eventType:String in listening) {
+            var arr:Array = listening[eventType];
+            for (var i:int=0; i<arr.length; i++) {
+                var dispatcher:IEventDispatcher = arr[i];
+                dispatcher.removeEventListener(eventType, addEventItem);
+            }
+        }
+        listening = {};
+    }
+
+    public function getContents():Array{
+        return _history.slice();
+    }
+
+    public function getSequenceString():String{
+        var temp:Array = _history.slice();
+        temp = temp.map(function(val:*, index:int, arr:Array):*{
+            return index + ":" + val;
+        });
+        return temp.join("\n");
+    }
+
+    public function addHistoryItem(...rest):void{
+        if (deactivated) return;
+        var contents:Array = rest;
+        contents = contents.map(
+                function(value:*, index:int, arr:Array):*{
+                    if (value === null) return 'null';
+                    if (value === undefined) return 'undefined';
+                    return (value.toString());
+                }
+        );
+        _history.push("history:" + contents.join(' , '));
+    }
+
+    COMPILE::Royale
+    private function getRoyaleStackTrace(e:Error):String{
+        COMPILE::SWF{
+            return e.getStackTrace();
+        }
+        COMPILE::JS{
+            return e.stack;
+        }
+    }
+
+    public function addStacktrace():void{
+        if (deactivated) return;
+        var stack:String;
+        COMPILE::Flex{
+            stack = new Error().getStackTrace();
+        }
+        COMPILE::Royale{
+            stack = getRoyaleStackTrace(new Error())
+        }
+
+        //remove the first line
+        var contents:Array = stack.split('\n').slice(1);
+        contents[0] = "Execution stack: [";
+        contents.push("]");
+        _history.push(contents.join('\n'));
+    }
+
+    public function addEventItem(event:Event):void{
+        if (deactivated) return;
+        if (event is VALUECHANGE_EVENT_CLASS) {
+            _history.push(getValueChangeDescription(event));
+        } else {
+
+            _history.push(getBaseEventName(event)+'(type="'+event.type+'", bubbles='+event.bubbles+', cancelable='+event.cancelable+')');
+        }
+    }
+
+    private var listening:Object  = {};
+    public function listenTo(object:Object, eventType:String):void{
+        if (object is IEventDispatcher) {
+            IEventDispatcher(object).addEventListener(eventType,addEventItem);
+            var listeners:Array = listening[eventType] || (listening[eventType] = []);
+            listeners.push(object);
+        } else {
+            throw new Error("Cannot listen to a non-IEventDispatcher");
+        }
+    }
+
+    public function unListenTo(object:Object, eventType:String):void{
+        if (object is IEventDispatcher) {
+            IEventDispatcher(object).removeEventListener(eventType,addEventItem);
+            var listeners:Array = listening[eventType] || (listening[eventType] = []);
+            var idx:int = listeners.indexOf(object);
+            if (idx != -1) {
+                listeners.splice(idx,1);
+            }
+        } else {
+            throw new Error("Cannot unListen to a non-IEventDispatcher");
+        }
+    }
+
+}
+}
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/utils/BindingTestUtil.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/utils/BindingTestUtil.as
new file mode 100644
index 0000000..9a2a065
--- /dev/null
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/binding/utils/BindingTestUtil.as
@@ -0,0 +1,84 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package flexUnitTests.binding.utils
+{
+
+    COMPILE::Flex{
+        import mx.core.IVisualElementContainer;
+        import mx.core.IVisualElement;
+    }
+
+    COMPILE::Royale{
+        import IVisualElementContainer=org.apache.royale.core.IParent;
+        import IVisualElement=org.apache.royale.core.IChild;
+    }
+    
+    /**
+     * @royalesuppresspublicvarwarning
+     */
+    public class BindingTestUtil
+    {
+        private static var _testParent:IVisualElementContainer;
+        private static var _testClasses:Array = [];
+        private static var _testInstances:Array = [];
+        
+        public static function setTestParent(testParent:IVisualElementContainer):void{
+            _testParent = testParent;
+        }
+        
+        public static function createAndAddInstance(instanceClass:Class):IVisualElement{
+            var inst:IVisualElement;
+            if (!_testParent) throw new Error('setTestParent must set a parent before calling createAndAddInstance')
+            if (instanceClass) {
+                if (_testClasses.indexOf(instanceClass) == -1) {
+                    _testClasses.push(instanceClass);
+                }
+                inst = new instanceClass() as IVisualElement;
+                if (!inst) {
+                    throw new Error('bad mxml instance class');
+                }
+                _testInstances.push(inst);
+                _testParent.addElement(inst);
+            } else {
+                throw new Error('instanceClass must not be null');
+            }
+            
+            return inst;
+        }
+        
+        public static function removeInstance(instance:Object):void{
+            if (instance is IVisualElement){
+                if (IVisualElement(instance).parent) {
+                    IVisualElementContainer(instance.parent).removeElement(instance as IVisualElement);
+                }
+            }
+            if (_testInstances.indexOf(instance) != -1) {
+                _testInstances.splice(_testInstances.indexOf(instance), 1);
+            }
+        }
+
+        public static function reset():void{
+            _testClasses = [];
+            while (_testInstances.length) {
+                removeInstance(_testInstances.pop())
+            }
+        }
+        
+    }
+}
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/language/LanguageTesterTestArraylikeGetSet.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/language/LanguageTesterTestArraylikeGetSet.as
index 0ee90ee..49d4d16 100644
--- a/manualtests/UnitTests/src/main/royale/flexUnitTests/language/LanguageTesterTestArraylikeGetSet.as
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/language/LanguageTesterTestArraylikeGetSet.as
@@ -40,18 +40,19 @@ package flexUnitTests.language
         [BeforeClass]
         public static function setUpBeforeClass():void
         {
-
+            arrayList= new ArrayList(['dog', 'cat','mouse','gerbil']);
         }
         
         [AfterClass]
         public static function tearDownAfterClass():void
         {
+            arrayList = null;
         }
         
         [Before]
         public function setUp():void
         {
-            arrayList= new ArrayList(['dog', 'cat','mouse','gerbil']);
+
         }
         
         [After]
@@ -62,7 +63,7 @@ package flexUnitTests.language
         
 
     
-        public var arrayList:ArrayList;
+        public static var arrayList:ArrayList;
     
         [Test]
         public function testImpl():void
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/language/LanguageTesterTestForEach.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/language/LanguageTesterTestForEach.as
index 47e64e2..2939be8 100644
--- a/manualtests/UnitTests/src/main/royale/flexUnitTests/language/LanguageTesterTestForEach.as
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/language/LanguageTesterTestForEach.as
@@ -40,18 +40,19 @@ package flexUnitTests.language
         [BeforeClass]
         public static function setUpBeforeClass():void
         {
-           
+            _myList = new ArrayList(['dog', 'cat','mouse','gerbil'])
         }
         
         [AfterClass]
         public static function tearDownAfterClass():void
         {
+            _myList = null;
         }
         
         [Before]
         public function setUp():void
         {
-            _myList = new ArrayList(['dog', 'cat','mouse','gerbil'])
+
         }
         
         [After]
@@ -60,7 +61,7 @@ package flexUnitTests.language
         }
         private var _animal:String;
         private var _char:String;
-        private var _myList:ArrayList 
+        private static var _myList:ArrayList
         
       
         [Test]
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/mxroyale/SharedObjectTest.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/mxroyale/SharedObjectTest.as
index c05aa56..db83730 100644
--- a/manualtests/UnitTests/src/main/royale/flexUnitTests/mxroyale/SharedObjectTest.as
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/mxroyale/SharedObjectTest.as
@@ -42,7 +42,7 @@ package flexUnitTests.mxroyale
         [Before]
         public function setUp():void
         {
-            registerClassAlias('TestClass5', TestClass5);
+
         }
         
         [After]
@@ -54,6 +54,7 @@ package flexUnitTests.mxroyale
         [BeforeClass]
         public static function setUpBeforeClass():void
         {
+            registerClassAlias('TestClass5', TestClass5);
         }
         
         [AfterClass]
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/network/AMFBinaryDataTesterTest.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/network/AMFBinaryDataTesterTest.as
index 3a30bc0..59eb6f7 100644
--- a/manualtests/UnitTests/src/main/royale/flexUnitTests/network/AMFBinaryDataTesterTest.as
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/network/AMFBinaryDataTesterTest.as
@@ -28,8 +28,10 @@ package flexUnitTests.network
     import flexUnitTests.network.support.TestClass4;
     import flexUnitTests.network.support.DynamicTestClass;
     import flexUnitTests.network.support.TestClass6;
-    
-    import org.apache.royale.test.asserts.*;
+import flexUnitTests.network.support.TestClass7a;
+import flexUnitTests.network.support.TestClass7b;
+
+import org.apache.royale.test.asserts.*;
     
     import org.apache.royale.net.remoting.amf.AMFBinaryData;
     import org.apache.royale.reflection.*;
@@ -544,7 +546,7 @@ package flexUnitTests.network
             var test:TestClass6 = new TestClass6();
             ba.writeObject(test);
             ba.position = 0;
-            assertEquals(ba.length, 50, 'unexpected serialized content with custom namespaces')
+            assertEquals(ba.length, 50, 'unexpected serialized content with custom namespaces');
             //cover variation in order
             const validOptions:Array = [
                     '0a23010b6d79566172156d794163636573736f7206177075626c69634d79566172061f7075626c6963206163636573736f72',
@@ -558,6 +560,36 @@ package flexUnitTests.network
             var json:String = JSON.stringify(restored)
             //order may be different... need json object check here for: {"myAccessor":"public accessor","myVar":"publicMyVar"}
         }
+
+        [Test]
+        public function testTransientAndBindable():void{
+            var ba:AMFBinaryData = new AMFBinaryData();
+            registerClassAlias('TestClass7a', TestClass7a);
+            registerClassAlias('TestClass7b', TestClass7b);
+            var test1:TestClass7a = new TestClass7a();
+            test1.something = 'whatever';
+            ba.writeObject(test1);
+            RoyaleUnitTestRunner.consoleOut(getBytesOut(ba));
+            ba.position = 0;
+
+            var retrieved:Object = ba.readObject();
+            RoyaleUnitTestRunner.consoleOut(retrieved.something)
+
+            assertTrue(retrieved is TestClass7a, 'unexpected deserialization');
+
+            var test2:TestClass7b = new TestClass7b();
+            test1.something = 'whatever';
+            ba.length = 0;
+            ba.writeObject(test2);
+            RoyaleUnitTestRunner.consoleOut(getBytesOut(ba));
+            ba.position = 0;
+
+            retrieved = ba.readObject();
+            RoyaleUnitTestRunner.consoleOut(retrieved.something)
+
+            assertTrue(retrieved is TestClass7b, 'unexpected deserialization');
+
+        }
         
         
         private function getBytesOut(bytes:AMFBinaryData):String{
diff --git a/manualtests/UnitTests/src/main/royale/TestClasses.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/network/support/TestClass7a.as
similarity index 56%
copy from manualtests/UnitTests/src/main/royale/TestClasses.as
copy to manualtests/UnitTests/src/main/royale/flexUnitTests/network/support/TestClass7a.as
index 11f141c..db6ec8b 100644
--- a/manualtests/UnitTests/src/main/royale/TestClasses.as
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/network/support/TestClass7a.as
@@ -16,26 +16,36 @@
 //  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package
+package flexUnitTests.network.support
 {
-	//test groups
-	import flexUnitTests.*;
+   
+    import flexUnitTests.network.support.testnamespace;
+    
+    /**
+     * @royalesuppresspublicvarwarning
+     */
+    public class TestClass7a
+    {
+        //Note: do not change this test class unless you change the related tests to
+        //support any changes that might appear when testing reflection into it
+        
+        public function TestClass7a()
+        {
+        
+        }
 
-
-	public class TestClasses
-	{
-		
-		public static function get testClasses():Array {
-			return [
-				  LanguageTester
-					,CoreTester
-					,ReflectionTester
-					,ObservedBugsTester
-					,GithubIssuesTester
-					,NetworkTester
-					,XMLTester
-					,MXRoyaleTester
-					];
-		}
-	}
+        public var test:String = 'test';
+        
+        protected var _something:String;
+        [Transient]
+        public function get something():String{
+            return _something;
+        }
+        public function set something(value:String):void{
+            _something = value;
+        }
+        
+    }
+    
+    
 }
diff --git a/manualtests/UnitTests/src/main/royale/TestClasses.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/network/support/TestClass7b.as
similarity index 56%
copy from manualtests/UnitTests/src/main/royale/TestClasses.as
copy to manualtests/UnitTests/src/main/royale/flexUnitTests/network/support/TestClass7b.as
index 11f141c..25f31be 100644
--- a/manualtests/UnitTests/src/main/royale/TestClasses.as
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/network/support/TestClass7b.as
@@ -16,26 +16,34 @@
 //  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package
+package flexUnitTests.network.support
 {
-	//test groups
-	import flexUnitTests.*;
-
-
-	public class TestClasses
-	{
-		
-		public static function get testClasses():Array {
-			return [
-				  LanguageTester
-					,CoreTester
-					,ReflectionTester
-					,ObservedBugsTester
-					,GithubIssuesTester
-					,NetworkTester
-					,XMLTester
-					,MXRoyaleTester
-					];
-		}
-	}
+   
+    import flexUnitTests.network.support.testnamespace;
+    
+    /**
+     * @royalesuppresspublicvarwarning
+     */
+    public class TestClass7b extends TestClass7a
+    {
+        //Note: do not change this test class unless you change the related tests to
+        //support any changes that might appear when testing reflection into it
+        
+        public function TestClass7b()
+        {
+        
+        }
+        
+        //private var _something:String;
+        [Bindable]
+        override public function get something():String{
+            return _something;
+        }
+        override public function set something(value:String):void{
+            _something = value;
+        }
+        
+    }
+    
+    
 }
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/reflection/ReflectionTesterNativeTypes.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/reflection/ReflectionTesterNativeTypes.as
index 8b9d74e..a3fec9f 100644
--- a/manualtests/UnitTests/src/main/royale/flexUnitTests/reflection/ReflectionTesterNativeTypes.as
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/reflection/ReflectionTesterNativeTypes.as
@@ -35,6 +35,7 @@ package flexUnitTests.reflection
         public static function setUpBeforeClass():void
         {
             isJS = COMPILE::JS;
+            ExtraData.addAll();
         }
         
         [AfterClass]
@@ -45,7 +46,7 @@ package flexUnitTests.reflection
         [Before]
         public function setUp():void
         {
-            ExtraData.addAll();
+
         }
         
         [After]
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/reflection/ReflectionTesterTest.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/reflection/ReflectionTesterTest.as
index d9f78b7..3ba8e7a 100644
--- a/manualtests/UnitTests/src/main/royale/flexUnitTests/reflection/ReflectionTesterTest.as
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/reflection/ReflectionTesterTest.as
@@ -30,27 +30,13 @@ package flexUnitTests.reflection
     public class ReflectionTesterTest
     {
         
-        public static var isJS:Boolean;
+        public static var isJS:Boolean = COMPILE::JS;
         
         [BeforeClass]
         public static function setUpBeforeClass():void
         {
-            var js:Boolean = false;
-            try
-            {
-                var check:* = getDefinitionByName("flash.system.Capabilities");
-            } catch (e:Error)
-            {
-                js = true;
-            }
-            //if this next reference to 'check' is not included, then the above try/catch code
-            //appears to be optimized away in js-release mode
-            //a separate test has been created for this
-            if (check == null)
-            {
-                js = true;
-            }
-            isJS = js;
+            TestClass2.testStaticVar = "testStaticVar_val";
+            TestClass2.testStaticWriteOnly = "staticAccessor_initial_value";
         }
         
         [AfterClass]
@@ -61,8 +47,7 @@ package flexUnitTests.reflection
         [Before]
         public function setUp():void
         {
-            TestClass2.testStaticVar = "testStaticVar_val";
-            TestClass2.testStaticWriteOnly = "staticAccessor_initial_value";
+
         }
         
         [After]
@@ -159,7 +144,7 @@ package flexUnitTests.reflection
             assertEquals( 3, variables.length, "unexpected instance variables length");
             
             //there is a difference based on the EventDispatcher inheritance chain differences between js and swf:
-            expected = isJS ? 5 : 7;
+            expected = isJS ? 6 : 7;
             var methods:Array = def.methods;
             assertEquals( expected, methods.length, "unexpected instance methods length");
             
@@ -192,7 +177,7 @@ package flexUnitTests.reflection
             assertEquals( 3, variables.length, "unexpected instance variables length");
             
             //there is a difference based on the EventDispatcher inheritance chain differences between js and swf:
-            expected = isJS ? 5 : 7;
+            expected = isJS ? 6 : 7;
             var methods:Array = def.methods;
             assertEquals( expected, methods.length, "unexpected instance methods length");
             
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/reflection/ReflectionTesterTestUseCache.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/reflection/ReflectionTesterTestUseCache.as
index ff5b36c..50b2508 100644
--- a/manualtests/UnitTests/src/main/royale/flexUnitTests/reflection/ReflectionTesterTestUseCache.as
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/reflection/ReflectionTesterTestUseCache.as
@@ -51,25 +51,28 @@ package flexUnitTests.reflection
                 js = true;
             }
             isJS = js;
+
+            TypeDefinition.useCache = true;
+            TestClass2.testStaticVar = "testStaticVar_val";
+            TestClass2.testStaticWriteOnly = "staticAccessor_initial_value";
         }
         
         [AfterClass]
         public static function tearDownAfterClass():void
         {
+            TypeDefinition.useCache = false;
         }
         
         [Before]
         public function setUp():void
         {
-            TypeDefinition.useCache = true;
-            TestClass2.testStaticVar = "testStaticVar_val";
-            TestClass2.testStaticWriteOnly = "staticAccessor_initial_value";
+
         }
         
         [After]
         public function tearDown():void
         {
-            TypeDefinition.useCache = false;
+
         }
         
         private static function retrieveItemWithName(collection:Array, name:String):DefinitionBase
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/xml/XMLNamespaceTest.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/xml/XMLNamespaceTest.as
index a18a28f..b7a6d74 100644
--- a/manualtests/UnitTests/src/main/royale/flexUnitTests/xml/XMLNamespaceTest.as
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/xml/XMLNamespaceTest.as
@@ -38,13 +38,25 @@ package flexUnitTests.xml
         
         public static var isJS:Boolean = COMPILE::JS;
     
-        private var settings:Object;
+        private static var settings:Object;
         
-        private var source:String;
+        private static var source:String;
         
         [Before]
         public function setUp():void
         {
+
+        }
+        
+        [After]
+        public function tearDown():void
+        {
+
+        }
+        
+        [BeforeClass]
+        public static function setUpBeforeClass():void
+        {
             settings = XML.settings();
             source = '<xml><?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?>\n' +
                     '<?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?>\n' +
@@ -73,21 +85,11 @@ package flexUnitTests.xml
                     '</rss></xml>';
         }
         
-        [After]
-        public function tearDown():void
-        {
-            source=null;
-            XML.setSettings(settings);
-        }
-        
-        [BeforeClass]
-        public static function setUpBeforeClass():void
-        {
-        }
-        
         [AfterClass]
         public static function tearDownAfterClass():void
         {
+            source=null;
+            XML.setSettings(settings);
         }
     
         public function getPlayerVersion():Number{
diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/xml/XMLTesterGeneralTest.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/xml/XMLTesterGeneralTest.as
index e5e9986..0c4b921 100644
--- a/manualtests/UnitTests/src/main/royale/flexUnitTests/xml/XMLTesterGeneralTest.as
+++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/xml/XMLTesterGeneralTest.as
@@ -31,13 +31,13 @@ package flexUnitTests.xml
     {
         public static var isJS:Boolean = COMPILE::JS;
         
-        private var xmlStr:String;
+        private static var xmlStr:String;
         
-        private var quotedXML:XML;
+        private static var quotedXML:XML;
         
-        private var xml:XML;
-        private var text:String;
-        private var xml2:XML;
+        private static var xml:XML;
+        private static var text:String;
+        private static var xml2:XML;
         
         private var settings:Object;
         
@@ -57,6 +57,20 @@ package flexUnitTests.xml
         {
             settings = XML.settings();
             
+
+        }
+        
+        [After]
+        public function tearDown():void
+        {
+
+            
+            XML.setSettings(settings);
+        }
+        
+        [BeforeClass]
+        public static function setUpBeforeClass():void
+        {
             xmlStr ='<?xml version="1.0" encoding="UTF-8" ?>' +
                     '<catalog xmlns:fx="http://ns.adobe.com/mxml/2009"' +
                     '              xmlns:dac="com.printui.view.components.DesignAreaComponents.*">' +
@@ -101,34 +115,22 @@ package flexUnitTests.xml
                     '      </catalog_item>' +
                     '   </product>' +
                     '</catalog>';
-            
+
             quotedXML = <root title="That's Entertainment"/>;
             xml = new XML(xmlStr);
             text = "hi";
             xml2 = new XML('<root xmlns:fz="http://ns.adobe.com/mxml/2009"><a><b/></a><a name="fred"/><a>hi<b>yeah!</b></a><a name="frank"/><c/></root>');
-            
+
         }
         
-        [After]
-        public function tearDown():void
+        [AfterClass]
+        public static function tearDownAfterClass():void
         {
             xmlStr = null;
             quotedXML = null;
             xml = null;
             text = null;
             xml2 = null;
-            
-            XML.setSettings(settings);
-        }
-        
-        [BeforeClass]
-        public static function setUpBeforeClass():void
-        {
-        }
-        
-        [AfterClass]
-        public static function tearDownAfterClass():void
-        {
         }
         
         
diff --git a/manualtests/UnitTests/src/main/royale/testshim/RoyaleUnitTestRunner.as b/manualtests/UnitTests/src/main/royale/testshim/RoyaleUnitTestRunner.as
index 8d99136..55f010d 100644
--- a/manualtests/UnitTests/src/main/royale/testshim/RoyaleUnitTestRunner.as
+++ b/manualtests/UnitTests/src/main/royale/testshim/RoyaleUnitTestRunner.as
@@ -192,21 +192,22 @@ package testshim
         {
             begin();
             var testInstance:Object = new testerClass();
-            if (setupFunc != null)
-            {
-                testInstance[setupFunc.name]();
-            }
+
             var i:uint = 0, l:uint = testMethods.length;
             
             for (; i < l; i++)
             {
+                if (setupFunc != null)
+                {
+                    testInstance[setupFunc.name]();
+                }
                 runRoyaleTest(_testingName, testInstance, testMethods[i] as MethodDefinition, callback);
+                if (tearDownFunc != null)
+                {
+                    testInstance[tearDownFunc.name]();
+                }
             }
-            
-            if (tearDownFunc != null)
-            {
-                testInstance[tearDownFunc.name]();
-            }
+
             end();
         }
         
diff --git a/manualtests/build.xml b/manualtests/build.xml
index 2921923..db7ce82 100644
--- a/manualtests/build.xml
+++ b/manualtests/build.xml
@@ -75,7 +75,7 @@
     
     <target name="compile" description="Compile Examples" >
 		<ant dir="${basedir}/BubbleTest"/>
-        <ant dir="${basedir}/ContainerTest"/>
+        <!-- @todo needs fixing or removal: <ant dir="${basedir}/ContainerTest"/>-->
 		<ant dir="${basedir}/CursorTest"/>
 		<ant dir="${basedir}/DateChooserExample"/>
         <ant dir="${basedir}/EffectsExample"/>
@@ -88,7 +88,7 @@
         <ant dir="${basedir}/FormExample"/>
         <ant dir="${basedir}/ImageTest"/>
         <ant dir="${basedir}/LanguageTests"/>
-        <ant dir="${basedir}/ListsTest"/>
+       <!-- @todo needs fixing or removal: <ant dir="${basedir}/ListsTest"/>-->
 		<ant dir="${basedir}/ProxyTest"/>
 		<ant dir="${basedir}/ReflectionTest"/>
         <ant dir="${basedir}/RollEventsTest"/>
diff --git a/manualtests/build_example.xml b/manualtests/build_example.xml
index 7e626cd..e9dd31d 100644
--- a/manualtests/build_example.xml
+++ b/manualtests/build_example.xml
@@ -204,7 +204,7 @@
             </fileset>
         </copy>
 		
-		<antcall target="build_example.compile-js-release"/>
+		<!--<antcall target="build_example.compile-js-release"/>-->
 		<antcall target="build_example.copy-app-xml" />
     </target>
     
@@ -337,8 +337,8 @@
             <arg line="${optional_arg}" />
 			<arg value="${theme_arg}" />
 			<arg value="${extlib_arg}" />
-			<arg value="-define=COMPILE::SWF,false" />
-            <arg value="-define=COMPILE::JS,true" />
+			<arg value="-define+=COMPILE::SWF,false" />
+            <arg value="-define+=COMPILE::JS,true" />
 			<arg value="-targets=${js.release.target}" />
             <arg value="+playerglobal.version=${playerglobal.version}" />
 			<arg value="-js-output=${jsDir}" />


[royale-asjs] 03/03: Sidestepping a few issues with swf html-template stuff to get past upper level gitignore rules.

Posted by gr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 9cd53a93ead0c8f283816c6aa9d1d411780eb8a8
Author: greg-dove <gr...@gmail.com>
AuthorDate: Mon Mar 23 20:03:25 2020 +1300

    Sidestepping a few issues with swf html-template stuff to get past upper level gitignore rules.
---
 manualtests/UnitTests/build.xml                    | 101 +++++++++++++++
 manualtests/UnitTests/pom.xml                      |   5 +-
 .../swf-html-template/index.template.html          | 135 +++++++++++++++++++++
 manualtests/build_example.xml                      |  12 +-
 4 files changed, 251 insertions(+), 2 deletions(-)

diff --git a/manualtests/UnitTests/build.xml b/manualtests/UnitTests/build.xml
index a01cd3f..d8318f9 100644
--- a/manualtests/UnitTests/build.xml
+++ b/manualtests/UnitTests/build.xml
@@ -39,9 +39,12 @@
     <include file="${basedir}/../build_example.xml" />
 
     <target name="main" depends="clean" description="Clean build of ${example}">
+
         <antcall target="build_example.compile">
             <param name="debug" value="false"/>
+            <param name="no.wrapper" value="true"/>
         </antcall>
+        <antcall target="wrapper"/>
     </target>
 
     <target name="clean">
@@ -55,4 +58,102 @@
         </exec>
     </target>
 
+    <target name="wrapper">
+        <property name="templatebase" value="${basedir}/swf-html-template/index.template.html"/>
+        <copy todir="${destDir}">
+            <fileset dir="${ROYALE_HOME}/templates/swfobject">
+                <exclude name="index.template.html"/>
+            </fileset>
+        </copy>
+
+        <html-wrapper
+                height="100%"
+                width="100%"
+                bgcolor="#ffffff"
+                name="${example}"
+                versionmajor="11"
+                versionminor="5"
+                versionrevision="0"
+                template="${templatebase}"
+                output="${destDir}"/>
+    </target>
+
+
+    <property name="html_template_base" value="${basedir}/swf-html-template/index.template.html" />
+    <macrodef name="html-wrapper">
+        <attribute name="width"/>
+        <attribute name="height"/>
+        <attribute name="bgcolor"/>
+        <attribute name="name"/>
+        <attribute name="versionmajor"/>
+        <attribute name="versionminor"/>
+        <attribute name="versionrevision"/>
+        <attribute name="output"/>
+        <attribute name="template" default="${html_template_base}"/>
+        <sequential>
+            <copy toFile="@{output}/@{name}.html"
+                  file="@{template}" />
+            <replace file="@{output}/@{name}.html">
+                <replacefilter
+                        token="$${title}"
+                        value="@{name}"/>
+            </replace>
+            <replace file="@{output}/@{name}.html">
+                <replacefilter
+                        token="$${bgcolor}"
+                        value="@{bgcolor}"/>
+            </replace>
+            <replace file="@{output}/@{name}.html">
+                <replacefilter
+                        token="$${useBrowserHistory}"
+                        value="&#45;&#45;"/>
+            </replace>
+            <replace file="@{output}/@{name}.html">
+                <replacefilter
+                        token="$${version_major}"
+                        value="@{versionmajor}"/>
+            </replace>
+            <replace file="@{output}/@{name}.html">
+                <replacefilter
+                        token="$${version_minor}"
+                        value="@{versionminor}"/>
+            </replace>
+            <replace file="@{output}/@{name}.html">
+                <replacefilter
+                        token="$${version_revision}"
+                        value="@{versionrevision}"/>
+            </replace>
+            <replace file="@{output}/@{name}.html">
+                <replacefilter
+                        token="$${expressInstallSwf}"
+                        value="expressInstall.swf"/>
+            </replace>
+            <replace file="@{output}/@{name}.html">
+                <replacefilter
+                        token="$${expressInstallSwf}"
+                        value="expressInstall.swf"/>
+            </replace>
+            <replace file="@{output}/@{name}.html">
+                <replacefilter
+                        token="$${width}"
+                        value="@{width}"/>
+            </replace>
+            <replace file="@{output}/@{name}.html">
+                <replacefilter
+                        token="$${height}"
+                        value="@{height}"/>
+            </replace>
+            <replace file="@{output}/@{name}.html">
+                <replacefilter
+                        token="$${application}"
+                        value="@{name}"/>
+            </replace>
+            <replace file="@{output}/@{name}.html">
+                <replacefilter
+                        token="$${swf}"
+                        value="@{name}"/>
+            </replace>
+        </sequential>
+    </macrodef>
+
 </project>
diff --git a/manualtests/UnitTests/pom.xml b/manualtests/UnitTests/pom.xml
index 3cfc217..937f41b 100644
--- a/manualtests/UnitTests/pom.xml
+++ b/manualtests/UnitTests/pom.xml
@@ -166,7 +166,10 @@
 									<includeEmptyDirs>true</includeEmptyDirs>
 									<resources>
 										<resource>
-											<directory>${basedir}/swf-html-template/swfobject</directory>
+											<directory>${basedir}/../../templates/swfobject</directory>
+										</resource>
+										<resource>
+											<directory>${basedir}/swf-html-template</directory>
 											<filtering>true</filtering>
 										</resource>
 									</resources>
diff --git a/manualtests/UnitTests/swf-html-template/index.template.html b/manualtests/UnitTests/swf-html-template/index.template.html
new file mode 100644
index 0000000..33489c4
--- /dev/null
+++ b/manualtests/UnitTests/swf-html-template/index.template.html
@@ -0,0 +1,135 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!-- saved from url=(0014)about:internet -->
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<!--
+Smart developers always View Source.
+
+This application was built using Apache Royale, an open source framework
+that cross compiles MXML and ActionScript into HTML and JavaScript. It runs
+in web, desktop and mobile(app) in swf format and runs in browser based
+environments as HTML/JS/CSS files without the need for the Flash Player
+plugin. It brings the advantages of Flex to the HTML/JavaScript world.
+
+Learn more about Royale at http://royale.apache.org
+// -->
+<head>
+    <title>${title}</title>
+    <meta name="google" value="notranslate" />
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <!-- Include CSS to eliminate any default margins/padding and set the height of the html element and
+         the body element to 100%, because Firefox, or any Gecko based browser, interprets percentage as
+         the percentage of the height of its parent container, which has to be set explicitly.  Fix for
+         Firefox 3.6 focus border issues.  Initially, don't display flashContent div so it won't show
+         if JavaScript disabled.
+    -->
+    <style type="text/css" media="screen">
+        html, body  { height:100%; }
+        body { margin:0; padding:0; overflow:auto; text-align:center;
+            background-color: ${bgcolor}; }
+        object:focus { outline:none; }
+        #flashContent { display:none; }
+    </style>
+
+    <!-- Enable Browser History by replacing useBrowserHistory tokens with two hyphens -->
+    <!-- BEGIN Browser History required section ${useBrowserHistory}>
+    <link rel="stylesheet" type="text/css" href="history/history.css" />
+    <script type="text/javascript" src="history/history.js"></script>
+    <!${useBrowserHistory} END Browser History required section -->
+
+    <script type="text/javascript" src="swfobject.js"></script>
+    <script type="text/javascript">
+        // For version detection, set to min. required Flash Player version, or 0 (or 0.0.0), for no version detection.
+
+        var swf = ".swf";
+
+        //this supports intellij's 'open in browser'
+        if (window.location.search) {
+            swf += window.location.search;
+            console.log('appending window url params to swf...');
+        }
+
+        var swfVersionStr = "${version_major}.${version_minor}.${version_revision}";
+        // To use express install, set to playerProductInstall.swf, otherwise the empty string.
+        var xiSwfUrlStr = "${expressInstallSwf}";
+        var flashvars = {};
+        var params = {};
+        params.quality = "high";
+        params.bgcolor = "${bgcolor}";
+        params.allowscriptaccess = "sameDomain";
+        params.allowfullscreen = "true";
+        var attributes = {};
+        attributes.id = "${application}";
+        attributes.name = "${application}";
+        attributes.align = "left";
+        swfobject.embedSWF(
+            "${swf}"+swf, "flashContent",
+            "${width}", "${height}",
+            swfVersionStr, xiSwfUrlStr,
+            flashvars, params, attributes);
+        // JavaScript enabled so display the flashContent div in case it is not replaced with a swf object.
+        swfobject.createCSS("#flashContent", "display:block;text-align:left;");
+    </script>
+</head>
+<body>
+<!-- SWFObject's dynamic embed method replaces this alternative HTML content with Flash content when enough
+     JavaScript and Flash plug-in support is available. The div is initially hidden so that it doesn't show
+     when JavaScript is disabled.
+-->
+<div id="flashContent">
+    <p>
+        To view this page ensure that Adobe Flash Player version
+        ${version_major}.${version_minor}.${version_revision} or greater is installed.
+    </p>
+    <script type="text/javascript">
+        var pageHost = ((document.location.protocol == "https:") ? "https://" : "http://");
+        document.write("<a href='http://www.adobe.com/go/getflashplayer'><img src='"
+            + pageHost + "www.adobe.com/images/shared/download_buttons/get_flash_player.gif' alt='Get Adobe Flash player' /></a>" );
+    </script>
+</div>
+
+<noscript>
+    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="${width}" height="${height}" id="${application}">
+        <param name="movie" value="${swf}.swf" />
+        <param name="quality" value="high" />
+        <param name="bgcolor" value="${bgcolor}" />
+        <param name="allowScriptAccess" value="sameDomain" />
+        <param name="allowFullScreen" value="true" />
+        <!--[if !IE]>-->
+        <object type="application/x-shockwave-flash" data="${swf}.swf" width="${width}" height="${height}">
+            <param name="quality" value="high" />
+            <param name="bgcolor" value="${bgcolor}" />
+            <param name="allowScriptAccess" value="sameDomain" />
+            <param name="allowFullScreen" value="true" />
+            <!--<![endif]-->
+            <!--[if gte IE 6]>-->
+            <p>
+                Either scripts and active content are not permitted to run or Adobe Flash Player version
+                ${version_major}.${version_minor}.${version_revision} or greater is not installed.
+            </p>
+            <!--<![endif]-->
+            <a href="http://www.adobe.com/go/getflashplayer">
+                <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash Player" />
+            </a>
+            <!--[if !IE]>-->
+        </object>
+        <!--<![endif]-->
+    </object>
+</noscript>
+</body>
+</html>
diff --git a/manualtests/build_example.xml b/manualtests/build_example.xml
index e9dd31d..a1c9d44 100644
--- a/manualtests/build_example.xml
+++ b/manualtests/build_example.xml
@@ -158,6 +158,12 @@
 				<isset property="no.js"/>
 			</not>
 		</condition>
+
+        <condition property="wrapperTarget" value="build_example.wrapper" else="build_example.skipWrapper">
+            <not>
+                <isset property="no.wrapper"/>
+            </not>
+        </condition>
 		 <!-- Load the <compc> task. We can't do this at the <project> level -->
         <!-- because targets that run before flexTasks.jar gets built would fail. -->
         <taskdef resource="flexTasks.tasks" classpathref="lib.path"/>
@@ -187,7 +193,7 @@
              -->
         </mxmlc>
 
-        <antcall target="build_example.wrapper">
+        <antcall target="${wrapperTarget}">
 			<param name="output" value="${destDir}"/>
 			<param name="templatebase" value="${html_template_base}"/>
 		</antcall>
@@ -350,6 +356,10 @@
             <equals arg1="${config_arg}" arg2="air" />
         </condition>
     </target>
+
+    <target name="skipWrapper">
+        <echo>Wrapper build was skipped</echo>
+    </target>
 	
 	<target name="wrapper" depends="check-air" unless="is.air">
 		<property name="output" value="${basedir}/bin-debug"/>