diff --git a/compiler-common/pom.xml b/compiler-common/pom.xml
index ae2a6e3..dc7cc9e 100644
--- a/compiler-common/pom.xml
+++ b/compiler-common/pom.xml
@@ -1,90 +1,90 @@
-<?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.
-
---><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.royale.compiler</groupId>
-        <artifactId>royale-compiler-parent</artifactId>
-        <version>0.9.9-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>compiler-common</artifactId>
-    <version>0.9.9-SNAPSHOT</version>
-
-    <name>Apache Royale: Compiler: Compiler-Common</name>
-    <description>The Apache Royale Compiler Common classes</description>
-
-    <build>
-      <plugins>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-jar-plugin</artifactId>
-          <configuration>
-            <archive>
-              <manifestEntries>
-                <Sealed>false</Sealed>
-                <!-- These paths are all defined the way the layout will be in the distribution -->
-                <Class-Path>external/commons-cli.jar external/commons-io.jar external/guava.jar ..</Class-Path>
-              </manifestEntries>
-            </archive>
-          </configuration>
-        </plugin>
-      </plugins>
-    </build>
-  
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.flex</groupId>
-      <artifactId>flex-tool-api</artifactId>
-      <version>1.0.0</version>
-    </dependency>
-    <dependency>
-      <groupId>commons-io</groupId>
-      <artifactId>commons-io</artifactId>
-      <version>2.6</version>
-    </dependency>
-    <dependency>
-      <groupId>commons-cli</groupId>
-      <artifactId>commons-cli</artifactId>
-      <version>1.4</version>
-    </dependency>
-    <dependency>
-      <groupId>org.antlr</groupId>
-      <artifactId>antlr</artifactId>
-      <version>3.3</version>
-    </dependency>
-    <dependency>
-      <groupId>com.google.guava</groupId>
-      <artifactId>guava</artifactId>
-      <version>25.1-jre</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven.plugins</groupId>
-      <artifactId>maven-scm-plugin</artifactId>
-      <version>1.10.0</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven.plugins</groupId>
-      <artifactId>maven-resources-plugin</artifactId>
-      <version>3.1.0</version>
-    </dependency>
-  </dependencies>
-
-<properties /></project>
+<?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.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.royale.compiler</groupId>
+        <artifactId>royale-compiler-parent</artifactId>
+        <version>0.9.8-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>compiler-common</artifactId>
+    <version>0.9.8-SNAPSHOT</version>
+
+    <name>Apache Royale: Compiler: Compiler-Common</name>
+    <description>The Apache Royale Compiler Common classes</description>
+
+    <build>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-jar-plugin</artifactId>
+          <configuration>
+            <archive>
+              <manifestEntries>
+                <Sealed>false</Sealed>
+                <!-- These paths are all defined the way the layout will be in the distribution -->
+                <Class-Path>external/commons-cli.jar external/commons-io.jar external/guava.jar ..</Class-Path>
+              </manifestEntries>
+            </archive>
+          </configuration>
+        </plugin>
+      </plugins>
+    </build>
+  
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.flex</groupId>
+      <artifactId>flex-tool-api</artifactId>
+      <version>1.0.0</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
+      <version>2.6</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-cli</groupId>
+      <artifactId>commons-cli</artifactId>
+      <version>1.4</version>
+    </dependency>
+    <dependency>
+      <groupId>org.antlr</groupId>
+      <artifactId>antlr</artifactId>
+      <version>3.3</version>
+    </dependency>
+    <dependency>
+      <groupId>com.google.guava</groupId>
+      <artifactId>guava</artifactId>
+      <version>25.1-jre</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugins</groupId>
+      <artifactId>maven-scm-plugin</artifactId>
+      <version>1.10.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugins</groupId>
+      <artifactId>maven-resources-plugin</artifactId>
+      <version>3.1.0</version>
+    </dependency>
+  </dependencies>
+
+<properties /></project>
diff --git a/compiler-externc/pom.xml b/compiler-externc/pom.xml
index abed5e0..77fdbbc 100644
--- a/compiler-externc/pom.xml
+++ b/compiler-externc/pom.xml
@@ -1,280 +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.
-
---><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.royale.compiler</groupId>
-    <artifactId>royale-compiler-parent</artifactId>
-    <version>0.9.9-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>compiler-externc</artifactId>
-  <version>0.9.9-SNAPSHOT</version>
-
-  <name>Apache Royale: Compiler: Externc</name>
-  <description>The Apache Royale Compiler Externs Compiler</description>
-
-  <build>
-    <plugins>
-        <plugin>
-            <groupId>org.apache.royale.compiler</groupId>
-            <artifactId>compiler-build-tools</artifactId>
-            <version>${compiler-build-tools.version}</version>
-            <executions>
-                <execution>
-                    <id>unpack-closure-externs</id>
-                    <phase>validate</phase>
-                    <goals>
-                        <goal>unpack-resources</goal>
-                    </goals>
-                    <configuration>
-                        <resource>externs.zip</resource>
-                    </configuration>
-                </execution>
-            </executions>
-            <!--
-             Dependency to the closure compiler externs artifact so
-             the "unpack-resources" goal can find the externs.zip
-             -->
-            <dependencies>
-                <dependency>
-                    <groupId>com.google.javascript</groupId>
-                    <artifactId>closure-compiler-externs</artifactId>
-                    <version>v20181210</version>
-                </dependency>
-            </dependencies>
-        </plugin>
-        <!-- Download JavaScript from GitHub -->
-        <plugin>
-            <groupId>com.googlecode.maven-download-plugin</groupId>
-            <artifactId>download-maven-plugin</artifactId>
-            <executions>
-                <execution>
-                    <id>get-svg</id>
-                    <phase>validate</phase>
-                    <goals>
-                        <goal>wget</goal>
-                    </goals>
-                    <configuration>
-                        <url>https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/contrib/externs/svg.js</url>
-                        <outputFileName>svg.js</outputFileName>
-                        <outputDirectory>${project.build.directory}/downloads</outputDirectory>
-                        <skipCache>true</skipCache>
-                    </configuration>
-                </execution>
-                <execution>
-                    <id>get-es3</id>
-                    <phase>validate</phase>
-                    <goals>
-                        <goal>wget</goal>
-                    </goals>
-                    <configuration>
-                        <url>https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/externs/es3.js</url>
-                        <outputFileName>es3.js</outputFileName>
-                        <outputDirectory>${project.build.directory}/downloads</outputDirectory>
-                        <skipCache>true</skipCache>
-                        <overwrite>true</overwrite>
-                    </configuration>
-                </execution>
-                <execution>
-                    <id>get-es6</id>
-                    <phase>validate</phase>
-                    <goals>
-                        <goal>wget</goal>
-                    </goals>
-                    <configuration>
-                        <url>https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/externs/es6.js</url>
-                        <outputFileName>es6.js</outputFileName>
-                        <outputDirectory>${project.build.directory}/downloads</outputDirectory>
-                        <skipCache>true</skipCache>
-                        <overwrite>true</overwrite>
-                    </configuration>
-                </execution>
-                <execution>
-                    <id>get-w3c_composition_event</id>
-                    <phase>validate</phase>
-                    <goals>
-                        <goal>wget</goal>
-                    </goals>
-                    <configuration>
-                        <url>https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/externs/browser/w3c_composition_event.js</url>
-                        <outputFileName>w3c_composition_event.js</outputFileName>
-                        <outputDirectory>${project.build.directory}/downloads/browser</outputDirectory>
-                        <skipCache>true</skipCache>
-                        <overwrite>true</overwrite>
-                    </configuration>
-                </execution>
-                <execution>
-                    <id>get-w3c_css</id>
-                    <phase>validate</phase>
-                    <goals>
-                        <goal>wget</goal>
-                    </goals>
-                    <configuration>
-                        <url>https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/externs/browser/w3c_css.js</url>
-                        <outputFileName>w3c_css.js</outputFileName>
-                        <outputDirectory>${project.build.directory}/downloads/browser</outputDirectory>
-                        <skipCache>true</skipCache>
-                        <overwrite>true</overwrite>
-                    </configuration>
-                </execution>
-                <execution>
-                    <id>get-gecko_dom</id>
-                    <phase>validate</phase>
-                    <goals>
-                        <goal>wget</goal>
-                    </goals>
-                    <configuration>
-                        <url>https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/externs/browser/gecko_dom.js</url>
-                        <outputFileName>gecko_dom.js</outputFileName>
-                        <outputDirectory>${project.build.directory}/downloads/browser</outputDirectory>
-                        <skipCache>true</skipCache>
-                        <overwrite>true</overwrite>
-                    </configuration>
-                </execution>
-                <execution>
-                    <id>get-w3c_dom2</id>
-                    <phase>validate</phase>
-                    <goals>
-                        <goal>wget</goal>
-                    </goals>
-                    <configuration>
-                        <url>https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/externs/browser/w3c_dom2.js</url>
-                        <outputFileName>w3c_dom2.js</outputFileName>
-                        <outputDirectory>${project.build.directory}/downloads/browser</outputDirectory>
-                        <skipCache>true</skipCache>
-                        <overwrite>true</overwrite>
-                    </configuration>
-                </execution>
-                <execution>
-                    <id>get-html5</id>
-                    <phase>validate</phase>
-                    <goals>
-                        <goal>wget</goal>
-                    </goals>
-                    <configuration>
-                        <url>https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/externs/browser/html5.js</url>
-                        <outputFileName>html5.js</outputFileName>
-                        <outputDirectory>${project.build.directory}/downloads/browser</outputDirectory>
-                        <skipCache>true</skipCache>
-                        <overwrite>true</overwrite>
-                    </configuration>
-                </execution>
-            </executions>
-        </plugin>
-        
-        <!-- Make the surefire execute all unit-tests -->
-        <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-surefire-plugin</artifactId>
-            <configuration>
-                <includes>
-                    <include>org/**/TestExternES3.java</include>
-                    <include>org/**/TestExternChrome.java</include>
-                    <include>org/**/TestExternJSMissing.java</include>
-                    <include>org/**/TestAnnotationEnum.java</include>
-                    <include>org/**/TestCollectImports.java</include>
-                    <include>org/**/TestConstructor.java</include>
-                    <include>org/**/TestPackageNamespace.java</include>
-                    <include>org/**/TestReferenceModel.java</include>
-                    <include>org/**/TestTypeTypedefs.java</include>
-                    <include>org/**/TestTypeInheritance.java</include>
-                </includes>
-                <excludes>
-                </excludes>
-            </configuration>
-        </plugin>
-        
-        <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-failsafe-plugin</artifactId>
-            <configuration>
-                <includes>
-                    <include>org/**/TestExternES3.java</include>
-                    <include>org/**/TestExternChrome.java</include>
-                    <include>org/**/TestExternJSMissing.java</include>
-                    <include>org/**/TestAnnotationEnum.java</include>
-                    <include>org/**/TestCollectImports.java</include>
-                    <include>org/**/TestConstructor.java</include>
-                    <include>org/**/TestPackageNamespace.java</include>
-                    <include>org/**/TestReferenceModel.java</include>
-                    <include>org/**/TestTypeTypedefs.java</include>
-                    <include>org/**/TestTypeInheritance.java</include>
-                </includes>
-                <excludes>
-                </excludes>
-            </configuration>
-        </plugin>
-        
-        <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-jar-plugin</artifactId>
-            <executions>
-                <execution>
-                    <id>default-jar</id>
-                    <configuration>
-                        <archive>
-                            <manifestEntries>
-                                <!-- These paths are all defined the way the layout will be in the distribution -->
-                                <Class-Path>../../compiler/lib/external/commons-cli.jar ../../lib/external/commons-cli.jar ../../compiler/lib/external/commons-io.jar ../../lib/external/commons-io.jar ../../compiler/lib/external/guava.jar ../../lib/external/guava.jar ../../compiler/lib/external/flex-tool-api.jar ../../lib/external/flex-tool-api.jar google/closure-compiler/compiler.jar ../../compiler/lib/compiler-common.jar ../../lib/compiler-common.jar ..</Class-Path>
-                            </manifestEntries>
-                        </archive>
-                    </configuration>
-                </execution>
-                <execution>
-                    <id>default-test-jar</id>
-                    <goals>
-                        <goal>test-jar</goal>
-                    </goals>
-                </execution>
-            </executions>
-        </plugin>
-    </plugins>
-  </build>
-
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.royale.compiler</groupId>
-      <artifactId>compiler-common</artifactId>
-      <version>0.9.9-SNAPSHOT</version>
-    </dependency>
-    <dependency>
-      <groupId>com.google.javascript</groupId>
-      <artifactId>closure-compiler</artifactId>
-      <version>v20181210</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.royale.compiler</groupId>
-      <artifactId>compiler-test-utils</artifactId>
-      <version>0.9.9-SNAPSHOT</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>4.10</version>
-      <scope>test</scope>
-    </dependency>
-
-  </dependencies>
-
-<properties /></project>
+<?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.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.royale.compiler</groupId>
+    <artifactId>royale-compiler-parent</artifactId>
+    <version>0.9.8-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>compiler-externc</artifactId>
+  <version>0.9.8-SNAPSHOT</version>
+
+  <name>Apache Royale: Compiler: Externc</name>
+  <description>The Apache Royale Compiler Externs Compiler</description>
+
+  <build>
+    <plugins>
+        <plugin>
+            <groupId>org.apache.royale.compiler</groupId>
+            <artifactId>compiler-build-tools</artifactId>
+            <version>${compiler-build-tools.version}</version>
+            <executions>
+                <execution>
+                    <id>unpack-closure-externs</id>
+                    <phase>validate</phase>
+                    <goals>
+                        <goal>unpack-resources</goal>
+                    </goals>
+                    <configuration>
+                        <resource>externs.zip</resource>
+                    </configuration>
+                </execution>
+            </executions>
+            <!--
+             Dependency to the closure compiler externs artifact so
+             the "unpack-resources" goal can find the externs.zip
+             -->
+            <dependencies>
+                <dependency>
+                    <groupId>com.google.javascript</groupId>
+                    <artifactId>closure-compiler-externs</artifactId>
+                    <version>v20181210</version>
+                </dependency>
+            </dependencies>
+        </plugin>
+        <!-- Download JavaScript from GitHub -->
+        <plugin>
+            <groupId>com.googlecode.maven-download-plugin</groupId>
+            <artifactId>download-maven-plugin</artifactId>
+            <executions>
+                <execution>
+                    <id>get-svg</id>
+                    <phase>validate</phase>
+                    <goals>
+                        <goal>wget</goal>
+                    </goals>
+                    <configuration>
+                        <url>https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/contrib/externs/svg.js</url>
+                        <outputFileName>svg.js</outputFileName>
+                        <outputDirectory>${project.build.directory}/downloads</outputDirectory>
+                        <skipCache>true</skipCache>
+                    </configuration>
+                </execution>
+                <execution>
+                    <id>get-es3</id>
+                    <phase>validate</phase>
+                    <goals>
+                        <goal>wget</goal>
+                    </goals>
+                    <configuration>
+                        <url>https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/externs/es3.js</url>
+                        <outputFileName>es3.js</outputFileName>
+                        <outputDirectory>${project.build.directory}/downloads</outputDirectory>
+                        <skipCache>true</skipCache>
+                        <overwrite>true</overwrite>
+                    </configuration>
+                </execution>
+                <execution>
+                    <id>get-es6</id>
+                    <phase>validate</phase>
+                    <goals>
+                        <goal>wget</goal>
+                    </goals>
+                    <configuration>
+                        <url>https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/externs/es6.js</url>
+                        <outputFileName>es6.js</outputFileName>
+                        <outputDirectory>${project.build.directory}/downloads</outputDirectory>
+                        <skipCache>true</skipCache>
+                        <overwrite>true</overwrite>
+                    </configuration>
+                </execution>
+                <execution>
+                    <id>get-w3c_composition_event</id>
+                    <phase>validate</phase>
+                    <goals>
+                        <goal>wget</goal>
+                    </goals>
+                    <configuration>
+                        <url>https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/externs/browser/w3c_composition_event.js</url>
+                        <outputFileName>w3c_composition_event.js</outputFileName>
+                        <outputDirectory>${project.build.directory}/downloads/browser</outputDirectory>
+                        <skipCache>true</skipCache>
+                        <overwrite>true</overwrite>
+                    </configuration>
+                </execution>
+                <execution>
+                    <id>get-w3c_css</id>
+                    <phase>validate</phase>
+                    <goals>
+                        <goal>wget</goal>
+                    </goals>
+                    <configuration>
+                        <url>https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/externs/browser/w3c_css.js</url>
+                        <outputFileName>w3c_css.js</outputFileName>
+                        <outputDirectory>${project.build.directory}/downloads/browser</outputDirectory>
+                        <skipCache>true</skipCache>
+                        <overwrite>true</overwrite>
+                    </configuration>
+                </execution>
+                <execution>
+                    <id>get-gecko_dom</id>
+                    <phase>validate</phase>
+                    <goals>
+                        <goal>wget</goal>
+                    </goals>
+                    <configuration>
+                        <url>https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/externs/browser/gecko_dom.js</url>
+                        <outputFileName>gecko_dom.js</outputFileName>
+                        <outputDirectory>${project.build.directory}/downloads/browser</outputDirectory>
+                        <skipCache>true</skipCache>
+                        <overwrite>true</overwrite>
+                    </configuration>
+                </execution>
+                <execution>
+                    <id>get-w3c_dom2</id>
+                    <phase>validate</phase>
+                    <goals>
+                        <goal>wget</goal>
+                    </goals>
+                    <configuration>
+                        <url>https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/externs/browser/w3c_dom2.js</url>
+                        <outputFileName>w3c_dom2.js</outputFileName>
+                        <outputDirectory>${project.build.directory}/downloads/browser</outputDirectory>
+                        <skipCache>true</skipCache>
+                        <overwrite>true</overwrite>
+                    </configuration>
+                </execution>
+                <execution>
+                    <id>get-html5</id>
+                    <phase>validate</phase>
+                    <goals>
+                        <goal>wget</goal>
+                    </goals>
+                    <configuration>
+                        <url>https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/externs/browser/html5.js</url>
+                        <outputFileName>html5.js</outputFileName>
+                        <outputDirectory>${project.build.directory}/downloads/browser</outputDirectory>
+                        <skipCache>true</skipCache>
+                        <overwrite>true</overwrite>
+                    </configuration>
+                </execution>
+            </executions>
+        </plugin>
+        
+        <!-- Make the surefire execute all unit-tests -->
+        <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-surefire-plugin</artifactId>
+            <configuration>
+                <includes>
+                    <include>org/**/TestExternES3.java</include>
+                    <include>org/**/TestExternChrome.java</include>
+                    <include>org/**/TestExternJSMissing.java</include>
+                    <include>org/**/TestAnnotationEnum.java</include>
+                    <include>org/**/TestCollectImports.java</include>
+                    <include>org/**/TestConstructor.java</include>
+                    <include>org/**/TestPackageNamespace.java</include>
+                    <include>org/**/TestReferenceModel.java</include>
+                    <include>org/**/TestTypeTypedefs.java</include>
+                    <include>org/**/TestTypeInheritance.java</include>
+                </includes>
+                <excludes>
+                </excludes>
+            </configuration>
+        </plugin>
+        
+        <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-failsafe-plugin</artifactId>
+            <configuration>
+                <includes>
+                    <include>org/**/TestExternES3.java</include>
+                    <include>org/**/TestExternChrome.java</include>
+                    <include>org/**/TestExternJSMissing.java</include>
+                    <include>org/**/TestAnnotationEnum.java</include>
+                    <include>org/**/TestCollectImports.java</include>
+                    <include>org/**/TestConstructor.java</include>
+                    <include>org/**/TestPackageNamespace.java</include>
+                    <include>org/**/TestReferenceModel.java</include>
+                    <include>org/**/TestTypeTypedefs.java</include>
+                    <include>org/**/TestTypeInheritance.java</include>
+                </includes>
+                <excludes>
+                </excludes>
+            </configuration>
+        </plugin>
+        
+        <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-jar-plugin</artifactId>
+            <executions>
+                <execution>
+                    <id>default-jar</id>
+                    <configuration>
+                        <archive>
+                            <manifestEntries>
+                                <!-- These paths are all defined the way the layout will be in the distribution -->
+                                <Class-Path>../../compiler/lib/external/commons-cli.jar ../../lib/external/commons-cli.jar ../../compiler/lib/external/commons-io.jar ../../lib/external/commons-io.jar ../../compiler/lib/external/guava.jar ../../lib/external/guava.jar ../../compiler/lib/external/flex-tool-api.jar ../../lib/external/flex-tool-api.jar google/closure-compiler/compiler.jar ../../compiler/lib/compiler-common.jar ../../lib/compiler-common.jar ..</Class-Path>
+                            </manifestEntries>
+                        </archive>
+                    </configuration>
+                </execution>
+                <execution>
+                    <id>default-test-jar</id>
+                    <goals>
+                        <goal>test-jar</goal>
+                    </goals>
+                </execution>
+            </executions>
+        </plugin>
+    </plugins>
+  </build>
+
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.royale.compiler</groupId>
+      <artifactId>compiler-common</artifactId>
+      <version>0.9.8-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>com.google.javascript</groupId>
+      <artifactId>closure-compiler</artifactId>
+      <version>v20181210</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.royale.compiler</groupId>
+      <artifactId>compiler-test-utils</artifactId>
+      <version>0.9.8-SNAPSHOT</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.10</version>
+      <scope>test</scope>
+    </dependency>
+
+  </dependencies>
+
+<properties /></project>
diff --git a/compiler-jx/pom.xml b/compiler-jx/pom.xml
index ebb3fc4..500de78 100644
--- a/compiler-jx/pom.xml
+++ b/compiler-jx/pom.xml
@@ -22,11 +22,11 @@
   <parent>
     <groupId>org.apache.royale.compiler</groupId>
     <artifactId>royale-compiler-parent</artifactId>
-    <version>0.9.9-SNAPSHOT</version>
+    <version>0.9.8-SNAPSHOT</version>
   </parent>
 
   <artifactId>compiler-jx</artifactId>
-  <version>0.9.9-SNAPSHOT</version>
+  <version>0.9.8-SNAPSHOT</version>
 
   <name>Apache Royale: Compiler: Compiler-JX</name>
 
@@ -178,22 +178,22 @@
     <dependency>
       <groupId>org.apache.royale.compiler</groupId>
       <artifactId>compiler-common</artifactId>
-      <version>0.9.9-SNAPSHOT</version>
+      <version>0.9.8-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.royale.compiler</groupId>
       <artifactId>compiler-externc</artifactId>
-      <version>0.9.9-SNAPSHOT</version>
+      <version>0.9.8-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.royale.compiler</groupId>
       <artifactId>compiler-playerglobalc</artifactId>
-      <version>0.9.9-SNAPSHOT</version>
+      <version>0.9.8-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.royale.compiler</groupId>
       <artifactId>compiler</artifactId>
-      <version>0.9.9-SNAPSHOT</version>
+      <version>0.9.8-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.commons</groupId>
@@ -225,7 +225,7 @@
     <dependency>
       <groupId>org.apache.royale.compiler</groupId>
       <artifactId>compiler-test-utils</artifactId>
-      <version>0.9.9-SNAPSHOT</version>
+      <version>0.9.8-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
@@ -237,7 +237,7 @@
     <dependency>
       <groupId>org.apache.royale.compiler</groupId>
       <artifactId>compiler-externc</artifactId>
-      <version>0.9.9-SNAPSHOT</version>
+      <version>0.9.8-SNAPSHOT</version>
       <type>test-jar</type>
       <scope>test</scope>
     </dependency>
diff --git a/compiler-playerglobalc/pom.xml b/compiler-playerglobalc/pom.xml
index bfe4aef..d390a8b 100644
--- a/compiler-playerglobalc/pom.xml
+++ b/compiler-playerglobalc/pom.xml
@@ -16,17 +16,19 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 
---><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+--><project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+  xmlns="http://maven.apache.org/POM/4.0.0"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
     <groupId>org.apache.royale.compiler</groupId>
     <artifactId>royale-compiler-parent</artifactId>
-    <version>0.9.9-SNAPSHOT</version>
+    <version>0.9.8-SNAPSHOT</version>
   </parent>
 
   <artifactId>compiler-playerglobalc</artifactId>
-  <version>0.9.9-SNAPSHOT</version>
+  <version>0.9.8-SNAPSHOT</version>
   
   <build>
     <plugins>
@@ -60,7 +62,7 @@
     <dependency>
       <groupId>org.apache.royale.compiler</groupId>
       <artifactId>compiler-common</artifactId>
-      <version>0.9.9-SNAPSHOT</version>
+      <version>0.9.8-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>commons-io</groupId>
diff --git a/compiler-test-utils/pom.xml b/compiler-test-utils/pom.xml
index d36cec5..abf04f4 100644
--- a/compiler-test-utils/pom.xml
+++ b/compiler-test-utils/pom.xml
@@ -1,54 +1,54 @@
-<?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.
-
---><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.royale.compiler</groupId>
-    <artifactId>royale-compiler-parent</artifactId>
-    <version>0.9.9-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>compiler-test-utils</artifactId>
-  <version>0.9.9-SNAPSHOT</version>
-
-  <name>Apache Royale: Compiler: Test Utils</name>
-  <description>
-    Shared test code, which is needed by the compiler and the compiler-jx test-suites.
-  </description>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-compress</artifactId>
-      <version>1.10</version>
-    </dependency>
-    <dependency>
-      <groupId>commons-io</groupId>
-      <artifactId>commons-io</artifactId>
-      <version>2.4</version>
-    </dependency>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>4.10</version>
-    </dependency>
-  </dependencies>
-
-<properties /></project>
+<?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.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.royale.compiler</groupId>
+    <artifactId>royale-compiler-parent</artifactId>
+    <version>0.9.8-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>compiler-test-utils</artifactId>
+  <version>0.9.8-SNAPSHOT</version>
+
+  <name>Apache Royale: Compiler: Test Utils</name>
+  <description>
+    Shared test code, which is needed by the compiler and the compiler-jx test-suites.
+  </description>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-compress</artifactId>
+      <version>1.10</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
+      <version>2.4</version>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.10</version>
+    </dependency>
+  </dependencies>
+
+<properties /></project>
diff --git a/compiler/pom.xml b/compiler/pom.xml
index a29aafc..1fbaab1 100644
--- a/compiler/pom.xml
+++ b/compiler/pom.xml
@@ -1,659 +1,659 @@
-<?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.
-
---><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.royale.compiler</groupId>
-    <artifactId>royale-compiler-parent</artifactId>
-    <version>0.9.9-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>compiler</artifactId>
-  <version>0.9.9-SNAPSHOT</version>
-
-  <name>Apache Royale: Compiler: Compiler</name>
-  <description>The Apache Royale Compiler</description>
-
-  <build>
-    <plugins>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-jar-plugin</artifactId>
-          <executions>
-            <execution>
-              <id>default-jar</id>
-              <configuration>
-                <archive>
-                  <manifestEntries>
-                    <!-- These paths are all defined the way the layout will be in the distribution -->
-                    <Class-Path>compiler-common.jar external/antlr.jar external/antlr-runtime.jar external/commons-cli.jar external/commons-io.jar external/guava.jar external/lzma-sdk-4j.jar external/flex-tool-api.jar ..</Class-Path>
-                  </manifestEntries>
-                </archive>
-              </configuration>
-            </execution>
-            <execution>
-              <id>scripts-jar</id>
-              <phase>package</phase>
-              <goals>
-                <goal>jar</goal>
-              </goals>
-              <configuration>
-                <classesDirectory>src/assembly/scripts</classesDirectory>
-                <classifier>scripts</classifier>
-              </configuration>
-            </execution>
-          </executions>
-        </plugin>
-
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-resources-plugin</artifactId>
-          <executions>
-            <execution>
-              <id>copy-externc-resources</id>
-              <phase>process-test-resources</phase>
-              <goals>
-                <goal>copy-resources</goal>
-              </goals>
-            <configuration>
-            <outputDirectory>${basedir}/../compiler-externc/target</outputDirectory>
-              <resources>
-                <resource>
-                  <directory>${basedir}/../compiler-externc/src/test/config</directory>
-                </resource>
-              </resources>
-            </configuration>
-          </execution>
-          <execution>
-            <id>copy-custom-resources</id>
-            <phase>process-test-resources</phase>
-            <goals>
-              <goal>copy-resources</goal>
-            </goals>
-            <configuration>
-              <outputDirectory>${basedir}/target</outputDirectory>
-              <resources>
-                <resource>
-                  <directory>${basedir}/src/test/config</directory>
-                </resource>
-              </resources>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <!--
-              Do all the JFlex code generation
-      -->
-      <plugin>
-        <groupId>de.jflex</groupId>
-        <artifactId>maven-jflex-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>generate-raw-as-tokenizer</id>
-            <goals>
-              <goal>generate</goal>
-            </goals>
-            <configuration>
-              <outputDirectory>target/generated-sources/jflex</outputDirectory>
-              <lexDefinitions>
-                <lexDefinition>src/main/jflex/org/apache/royale/compiler/internal/parsing/as/RawASTokenizer.lex</lexDefinition>
-              </lexDefinitions>
-              <skeleton>src/main/jflex/org/apache/royale/compiler/internal/parsing/as/skeleton.royale</skeleton>
-            </configuration>
-          </execution>
-          <execution>
-            <id>generate-raw-as-doc-tokenizer</id>
-            <goals>
-              <goal>generate</goal>
-            </goals>
-            <configuration>
-              <outputDirectory>target/generated-sources/jflex</outputDirectory>
-              <lexDefinitions>
-                <lexDefinition>src/main/jflex/org/apache/royale/compiler/internal/parsing/as/RawASDocTokenizer.lex</lexDefinition>
-              </lexDefinitions>
-              <skeleton>src/main/jflex/org/apache/royale/compiler/internal/parsing/as/skeleton.default</skeleton>
-            </configuration>
-          </execution>
-          <execution>
-            <id>generate-raw-mxml-tokenizer</id>
-            <goals>
-              <goal>generate</goal>
-            </goals>
-            <configuration>
-              <outputDirectory>target/generated-sources/jflex</outputDirectory>
-              <lexDefinitions>
-                <lexDefinition>src/main/jflex/org/apache/royale/compiler/internal/parsing/mxml/RawMXMLTokenizer.lex</lexDefinition>
-              </lexDefinitions>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <!--
-            Do all the Antlr2 code generation
-      -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-antlr-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>generate-as-parser</id>
-            <goals>
-              <goal>generate</goal>
-            </goals>
-            <configuration>
-              <grammars>org/apache/royale/compiler/internal/parsing/as/ASParser.g</grammars>
-            </configuration>
-          </execution>
-        </executions>
-        <dependencies>
-          <dependency>
-            <groupId>antlr</groupId>
-            <artifactId>antlr</artifactId>
-            <version>2.7.7</version>
-          </dependency>
-        </dependencies>
-      </plugin>
-
-      <!--
-          The generation of the metadata-parser requires Antlr to
-          load ImportMetadataTokenTypes.txt. Unfortunately Altlr
-          looks in the current working directory. The only way to
-          force it to work, is to start a new process with the
-          working directory in the directory containing the file.
-      -->
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>exec-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>generate-metadata-parser</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>exec</goal>
-            </goals>
-            <configuration>
-              <executable>java</executable>
-              <arguments>
-                <argument>-classpath</argument>
-                <classpath />
-                <arguments>antlr.Tool</arguments>
-                <argument>-o</argument>
-                <argument>../../../../../../../../../../target/generated-sources/antlr/org/apache/royale/compiler/internal/parsing/as</argument>
-                <argument>MetadataParser.g</argument>
-              </arguments>
-              <workingDirectory>src/main/antlr/org/apache/royale/compiler/internal/parsing/as</workingDirectory>
-              <sourceRoot>target/generated-sources/antlr</sourceRoot>
-            </configuration>
-          </execution>
-          <execution>
-              <id>generate-test-js-typedefs</id>
-              <phase>test-compile</phase>
-              <goals>
-                  <goal>exec</goal>
-              </goals>
-              <configuration>
-                  <executable>java</executable>
-                  <arguments>
-                      <argument>-classpath</argument>
-                      <classpath />
-                      <arguments>org.apache.royale.compiler.clients.EXTERNC</arguments>
-                      <argument>-load-config+=../compiler-externc/src/test/config/externc-config.xml</argument>
-                  </arguments>
-              </configuration>
-          </execution>
-          <execution>
-              <id>generate-test-js-swc</id>
-              <phase>test-compile</phase>
-              <goals>
-                  <goal>exec</goal>
-              </goals>
-              <configuration>
-                  <executable>java</executable>
-                  <arguments>
-                      <argument>-classpath</argument>
-                      <classpath />
-                      <arguments>org.apache.royale.compiler.clients.COMPC</arguments>
-                      <argument>-load-config+=../compiler-externc/target/compile-as-config.xml</argument>
-                      <argument>-output=../compiler-externc/target/js.swc</argument>
-                  </arguments>
-              </configuration>
-          </execution>
-          <execution>
-              <id>generate-test-custom-swc</id>
-              <phase>test-compile</phase>
-              <goals>
-                  <goal>exec</goal>
-              </goals>
-              <configuration>
-                  <executable>java</executable>
-                  <arguments>
-                      <argument>-classpath</argument>
-                      <classpath />
-                      <arguments>org.apache.royale.compiler.clients.COMPC</arguments>
-                      <argument>-load-config+=target/compile-as-config.xml</argument>
-                      <argument>-output=target/custom.swc</argument>
-                  </arguments>
-              </configuration>
-          </execution>
-        </executions>
-      </plugin>
-
-      <!--
-            Do all the JBurg code generation.
-      -->
-      <plugin>
-        <groupId>net.sourceforge.jburg</groupId>
-        <artifactId>jburg-maven-plugin</artifactId>
-        <extensions>true</extensions>
-        <executions>
-          <execution>
-            <id>generate-css-emitter</id>
-            <goals>
-              <goal>generate</goal>
-            </goals>
-            <configuration>
-              <includes>
-                <include>CSSEmitter.jbg</include>
-              </includes>
-              <sourceDirectory>src/main/jburg/org/apache/royale/compiler/internal/css/codegen</sourceDirectory>
-              <outputDirectory>target/generated-sources/jburg/org/apache/royale/compiler/internal/css/codegen</outputDirectory>
-            </configuration>
-          </execution>
-          <execution>
-            <id>generate-cmc-emitter</id>
-            <goals>
-              <goal>generate</goal>
-            </goals>
-            <configuration>
-              <includes>
-                <include>CmcEmitter.jbg</include>
-              </includes>
-              <sourceDirectory>src/main/jburg/org/apache/royale/compiler/internal/as/codegen</sourceDirectory>
-              <outputDirectory>target/generated-sources/jburg/org/apache/royale/compiler/internal/as/codegen</outputDirectory>
-            </configuration>
-          </execution>
-        </executions>
-        <configuration>
-          <!-- debug=true generates the "dump" method for Emitters, which is used for debugging -->
-          <debug>true</debug>
-        </configuration>
-        <dependencies>
-          <!-- this needs to be first in order to patch jburg -->
-          <dependency>
-            <groupId>org.apache.royale.compiler</groupId>
-            <artifactId>compiler-jburg-types</artifactId>
-            <version>${compiler-jburg-types.version}</version>
-          </dependency>
-          <dependency>
-            <groupId>net.sourceforge.jburg</groupId>
-            <artifactId>jburg</artifactId>
-            <version>1.10.3</version>
-          </dependency>
-        </dependencies>
-      </plugin>
-
-      <!--
-            Do all the Antlr3 code generation.
-      -->
-      <plugin>
-        <groupId>org.antlr</groupId>
-        <artifactId>antlr3-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>generate-csslexer-and-cssparser</id>
-            <goals>
-              <goal>antlr</goal>
-            </goals>
-            <configuration>
-              <includes>
-                <include>CSS.g</include>
-              </includes>
-              <sourceDirectory>src/main/antlr3/org/apache/royale/compiler/internal/css</sourceDirectory>
-              <outputDirectory>target/generated-sources/antlr3/org/apache/royale/compiler/internal/css</outputDirectory>
-            </configuration>
-          </execution>
-          <execution>
-            <id>generate-csstree</id>
-            <goals>
-              <goal>antlr</goal>
-            </goals>
-            <configuration>
-              <includes>
-                <include>CSSTree.g</include>
-              </includes>
-              <sourceDirectory>src/main/antlr3/org/apache/royale/compiler/internal/css</sourceDirectory>
-              <outputDirectory>target/generated-sources/antlr3/org/apache/royale/compiler/internal/css</outputDirectory>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-
-      <!--
-              Do all the custom processing with the royale build tools.
-      -->
-      <plugin>
-        <groupId>org.apache.royale.compiler</groupId>
-        <artifactId>compiler-build-tools</artifactId>
-        <executions>
-          <execution>
-            <id>generate-unknown-tree-handler</id>
-            <goals>
-              <goal>generate-unknown-tree-handler</goal>
-            </goals>
-            <configuration>
-              <inputFile>org/apache/royale/compiler/internal/as/codegen/UnknownTreeHandlerPatterns.xml</inputFile>
-              <outputFile>org/apache/royale/compiler/internal/as/codegen/UnknownTreeHandlerPatterns.java</outputFile>
-            </configuration>
-          </execution>
-          <execution>
-            <id>add-suppress-unused-warnings-annotations</id>
-            <goals>
-              <goal>add-class-annotation</goal>
-            </goals>
-            <configuration>
-              <includes>
-                <include>antlr/org/apache/royale/compiler/internal/parsing/as/ASParser.java</include>
-                <include>antlr/org/apache/royale/compiler/internal/parsing/as/ASTokenTypes.java</include>
-                <include>antlr/org/apache/royale/compiler/internal/parsing/as/MetadataTokenTypes.java</include>
-              </includes>
-              <annotation>@SuppressWarnings("unused")</annotation>
-            </configuration>
-          </execution>
-          <execution>
-            <id>add-suppress-all-warnings-annotations-css</id>
-            <goals>
-              <goal>add-class-annotation</goal>
-            </goals>
-            <configuration>
-              <includes>
-                <include>antlr3/org/apache/royale/compiler/internal/css/CSSLexer.java</include>
-                <include>antlr3/org/apache/royale/compiler/internal/css/CSSParser.java</include>
-              </includes>
-              <annotation>@SuppressWarnings("all")</annotation>
-              <dateStart>// $ANTLR 3.5.2 ***CSS.g</dateStart>
-            </configuration>
-          </execution>
-          <execution>
-            <id>add-suppress-all-warnings-annotations-csstree</id>
-            <goals>
-              <goal>add-class-annotation</goal>
-            </goals>
-            <configuration>
-              <includes>
-                <include>antlr3/org/apache/royale/compiler/internal/css/CSSTree.java</include>
-              </includes>
-              <annotation>@SuppressWarnings("all")</annotation>
-              <dateStart>// $ANTLR 3.5.2 ***CSSTree.g</dateStart>
-            </configuration>
-          </execution>
-          <execution>
-            <id>add-suppress-all-warnings-annotations-jburg</id>
-            <goals>
-              <goal>add-class-annotation</goal>
-            </goals>
-            <configuration>
-              <includes>
-                <include>antlr/org/apache/royale/compiler/internal/parsing/as/MetadataParser.java</include>
-              </includes>
-              <annotation>@SuppressWarnings("all")</annotation>
-            </configuration>
-          </execution>
-          <execution>
-            <id>add-suppress-rawtypes-unchecked-unused-warnings-annotations</id>
-            <goals>
-              <goal>add-class-annotation</goal>
-            </goals>
-            <configuration>
-              <includes>
-                <include>jburg/org/apache/royale/compiler/internal/css/codegen/CSSEmitter.java</include>
-                <include>jburg/org/apache/royale/compiler/internal/as/codegen/CmcEmitter.java</include>
-              </includes>
-              <annotation>@SuppressWarnings({"rawtypes", "unchecked", "unused"})</annotation>
-              <dateStart>/*  Generated</dateStart>
-              <dateEnd> by JBurg</dateEnd>
-            </configuration>
-          </execution>
-          <execution>
-            <id>generate-problems-enum</id>
-            <goals>
-              <goal>generate-problems-enum</goal>
-            </goals>
-          </execution>
-          <execution>
-            <id>generate-problems-resource-bundle</id>
-            <goals>
-              <goal>generate-problems-resource-bundle</goal>
-            </goals>
-          </execution>
-          <execution>
-            <id>order-jflex-switch-statements</id>
-            <goals>
-              <goal>order-jflex-switches</goal>
-            </goals>
-            <configuration>
-              <includes>
-              <include>jflex/org/apache/royale/compiler/internal/parsing/as/RawASDocTokenizer.java</include>
-              <include>jflex/org/apache/royale/compiler/internal/parsing/as/RawASTokenizer.java</include>
-              <include>jflex/org/apache/royale/compiler/internal/parsing/mxml/RawMXMLTokenizer.java</include>
-              </includes>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-
-      <!-- Make the surefire execute all unit-tests -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-        <configuration>
-          <includes>
-            <include>**/*Tests.java</include>
-          </includes>
-          <excludes>
-            <exclude>as/**/*Tests.java</exclude>
-            <exclude>f/**</exclude>
-            <exclude>mxml/tags/**</exclude>
-            <exclude>properties/**</exclude>
-            <exclude>**/MXMLComponentTagTests.java</exclude>
-            <exclude>**/MXMLComponentNodeTests.java</exclude>
-            <exclude>**/MXMLHTTPServiceTagTests.java</exclude>
-            <exclude>**/MXMLModelTagTests.java</exclude>
-            <exclude>**/MXMLRemoteObjectNodeTests.java</exclude>
-            <exclude>**/MXMLWebServiceNodeTests.java</exclude>
-            <exclude>**/MXMLDesignLayerNodeTests.java</exclude>
-            <exclude>**/MXMLHTTPServiceNodeTests.java</exclude>
-            <exclude>**/MXMLModelNodeTests.java</exclude>
-            <exclude>**/MXMLRemoteObjectTagTests.java</exclude>
-            <exclude>**/MXMLStateNodeTests.java</exclude>
-            <exclude>**/MXMLVectorNodeTests.java</exclude>
-            <exclude>**/MXMLWebServiceTagTests.java</exclude>
-          </excludes>
-        </configuration>
-      </plugin>
-
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-failsafe-plugin</artifactId>
-        <configuration>
-          <includes>
-            <include>as/**/*Tests.java</include>
-          </includes>
-          <excludes>
-            <exclude>f/**</exclude>
-            <exclude>mxml/tags/**</exclude>
-            <exclude>properties/**</exclude>
-            <exclude>**/MXMLComponentTagTests.java</exclude>
-            <exclude>**/MXMLComponentNodeTests.java</exclude>
-            <exclude>**/MXMLHTTPServiceTagTests.java</exclude>
-            <exclude>**/MXMLModelTagTests.java</exclude>
-            <exclude>**/MXMLRemoteObjectNodeTests.java</exclude>
-            <exclude>**/MXMLWebServiceNodeTests.java</exclude>
-            <exclude>**/MXMLDesignLayerNodeTests.java</exclude>
-            <exclude>**/MXMLHTTPServiceNodeTests.java</exclude>
-            <exclude>**/MXMLModelNodeTests.java</exclude>
-            <exclude>**/MXMLRemoteObjectTagTests.java</exclude>
-            <exclude>**/MXMLStateNodeTests.java</exclude>
-            <exclude>**/MXMLVectorNodeTests.java</exclude>
-            <exclude>**/MXMLWebServiceTagTests.java</exclude>
-          </excludes>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-
-  <profiles>
-    <!--
-        This profile adds one test, that relies on the original FDK being
-        available as it compiles each project in the framework/projects
-        directory. It requires some environment variables being set.
-    -->
-    <profile>
-      <id>option-with-flex-sdk-tests</id>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-failsafe-plugin</artifactId>
-            <configuration>
-              <includes combine.children="append">
-                <include>f/**/*Tests.java</include>
-                <include>mxml/**/*Tests.java</include>
-                <include>properties/**/*Tests.java</include>
-                <include>**/MXMLComponentTagTests.java</include>
-                <include>**/MXMLComponentNodeTests.java</include>
-                <include>**/MXMLHTTPServiceTagTests.java</include>
-                <include>**/MXMLModelTagTests.java</include>
-                <include>**/MXMLRemoteObjectNodeTests.java</include>
-                <include>**/MXMLWebServiceNodeTests.java</include>
-                <include>**/MXMLDesignLayerNodeTests.java</include>
-                <include>**/MXMLHTTPServiceNodeTests.java</include>
-                <include>**/MXMLModelNodeTests.java</include>
-                <include>**/MXMLRemoteObjectTagTests.java</include>
-                <include>**/MXMLStateNodeTests.java</include>
-                <include>**/MXMLVectorNodeTests.java</include>
-                <include>**/MXMLWebServiceTagTests.java</include>
-              </includes>
-            </configuration>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-
-    <!-- Also run tests using the FLASHPLAYER_DEBUGGER -->
-    <profile>
-      <id>option-with-swf</id>
-      <dependencies>
-        <!-- Ensure the playerglobal is available for running tests -->
-        <dependency>
-          <groupId>com.adobe.flash.framework</groupId>
-          <artifactId>playerglobal</artifactId>
-          <version>${flash.version}</version>
-          <type>swc</type>
-          <scope>runtime</scope>
-        </dependency>
-      </dependencies>
-    </profile>
-  </profiles>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.royale.compiler</groupId>
-      <artifactId>compiler-jburg-types</artifactId>
-      <version>${compiler-jburg-types.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.royale.compiler</groupId>
-      <artifactId>compiler-common</artifactId>
-      <version>0.9.9-SNAPSHOT</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.flex</groupId>
-      <artifactId>flex-tool-api</artifactId>
-      <version>1.0.0</version>
-    </dependency>
-    <dependency>
-      <groupId>commons-io</groupId>
-      <artifactId>commons-io</artifactId>
-      <version>2.4</version>
-    </dependency>
-    <dependency>
-      <groupId>commons-cli</groupId>
-      <artifactId>commons-cli</artifactId>
-      <version>1.2</version>
-    </dependency>
-    <dependency>
-      <groupId>org.antlr</groupId>
-      <artifactId>antlr</artifactId>
-      <version>3.3</version>
-    </dependency>
-    <dependency>
-      <groupId>com.google.guava</groupId>
-      <artifactId>guava</artifactId>
-      <version>25.1-jre</version>
-    </dependency>
-    <dependency>
-      <groupId>net.sourceforge.jburg</groupId>
-      <artifactId>jburg</artifactId>
-      <version>1.10.3</version>
-    </dependency>
-    <dependency>
-      <groupId>de.jflex</groupId>
-      <artifactId>jflex</artifactId>
-      <version>1.6.0</version>
-      <exclusions>
-        <exclusion>
-          <groupId>org.apache.ant</groupId>
-          <artifactId>ant</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.b1.pack</groupId>
-      <artifactId>lzma-sdk-4j</artifactId>
-      <version>9.22.0</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.royale.compiler</groupId>
-      <artifactId>compiler-test-utils</artifactId>
-      <version>0.9.9-SNAPSHOT</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.royale.compiler</groupId>
-      <artifactId>compiler-externc</artifactId>
-      <version>0.9.9-SNAPSHOT</version>
-    </dependency>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>4.10</version>
-      <scope>test</scope>
-    </dependency>
-    <!-- TODO: Currently only needed for the duplicate FlashplayerSecurityHandler -->
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-lang3</artifactId>
-      <version>3.4</version>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-
-<properties /></project>
+<?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.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.royale.compiler</groupId>
+    <artifactId>royale-compiler-parent</artifactId>
+    <version>0.9.8-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>compiler</artifactId>
+  <version>0.9.8-SNAPSHOT</version>
+
+  <name>Apache Royale: Compiler: Compiler</name>
+  <description>The Apache Royale Compiler</description>
+
+  <build>
+    <plugins>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-jar-plugin</artifactId>
+          <executions>
+            <execution>
+              <id>default-jar</id>
+              <configuration>
+                <archive>
+                  <manifestEntries>
+                    <!-- These paths are all defined the way the layout will be in the distribution -->
+                    <Class-Path>compiler-common.jar external/antlr.jar external/antlr-runtime.jar external/commons-cli.jar external/commons-io.jar external/guava.jar external/lzma-sdk-4j.jar external/flex-tool-api.jar ..</Class-Path>
+                  </manifestEntries>
+                </archive>
+              </configuration>
+            </execution>
+            <execution>
+              <id>scripts-jar</id>
+              <phase>package</phase>
+              <goals>
+                <goal>jar</goal>
+              </goals>
+              <configuration>
+                <classesDirectory>src/assembly/scripts</classesDirectory>
+                <classifier>scripts</classifier>
+              </configuration>
+            </execution>
+          </executions>
+        </plugin>
+
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-resources-plugin</artifactId>
+          <executions>
+            <execution>
+              <id>copy-externc-resources</id>
+              <phase>process-test-resources</phase>
+              <goals>
+                <goal>copy-resources</goal>
+              </goals>
+            <configuration>
+            <outputDirectory>${basedir}/../compiler-externc/target</outputDirectory>
+              <resources>
+                <resource>
+                  <directory>${basedir}/../compiler-externc/src/test/config</directory>
+                </resource>
+              </resources>
+            </configuration>
+          </execution>
+          <execution>
+            <id>copy-custom-resources</id>
+            <phase>process-test-resources</phase>
+            <goals>
+              <goal>copy-resources</goal>
+            </goals>
+            <configuration>
+              <outputDirectory>${basedir}/target</outputDirectory>
+              <resources>
+                <resource>
+                  <directory>${basedir}/src/test/config</directory>
+                </resource>
+              </resources>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <!--
+              Do all the JFlex code generation
+      -->
+      <plugin>
+        <groupId>de.jflex</groupId>
+        <artifactId>maven-jflex-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>generate-raw-as-tokenizer</id>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <configuration>
+              <outputDirectory>target/generated-sources/jflex</outputDirectory>
+              <lexDefinitions>
+                <lexDefinition>src/main/jflex/org/apache/royale/compiler/internal/parsing/as/RawASTokenizer.lex</lexDefinition>
+              </lexDefinitions>
+              <skeleton>src/main/jflex/org/apache/royale/compiler/internal/parsing/as/skeleton.royale</skeleton>
+            </configuration>
+          </execution>
+          <execution>
+            <id>generate-raw-as-doc-tokenizer</id>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <configuration>
+              <outputDirectory>target/generated-sources/jflex</outputDirectory>
+              <lexDefinitions>
+                <lexDefinition>src/main/jflex/org/apache/royale/compiler/internal/parsing/as/RawASDocTokenizer.lex</lexDefinition>
+              </lexDefinitions>
+              <skeleton>src/main/jflex/org/apache/royale/compiler/internal/parsing/as/skeleton.default</skeleton>
+            </configuration>
+          </execution>
+          <execution>
+            <id>generate-raw-mxml-tokenizer</id>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <configuration>
+              <outputDirectory>target/generated-sources/jflex</outputDirectory>
+              <lexDefinitions>
+                <lexDefinition>src/main/jflex/org/apache/royale/compiler/internal/parsing/mxml/RawMXMLTokenizer.lex</lexDefinition>
+              </lexDefinitions>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <!--
+            Do all the Antlr2 code generation
+      -->
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-antlr-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>generate-as-parser</id>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <configuration>
+              <grammars>org/apache/royale/compiler/internal/parsing/as/ASParser.g</grammars>
+            </configuration>
+          </execution>
+        </executions>
+        <dependencies>
+          <dependency>
+            <groupId>antlr</groupId>
+            <artifactId>antlr</artifactId>
+            <version>2.7.7</version>
+          </dependency>
+        </dependencies>
+      </plugin>
+
+      <!--
+          The generation of the metadata-parser requires Antlr to
+          load ImportMetadataTokenTypes.txt. Unfortunately Altlr
+          looks in the current working directory. The only way to
+          force it to work, is to start a new process with the
+          working directory in the directory containing the file.
+      -->
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>exec-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>generate-metadata-parser</id>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>exec</goal>
+            </goals>
+            <configuration>
+              <executable>java</executable>
+              <arguments>
+                <argument>-classpath</argument>
+                <classpath />
+                <arguments>antlr.Tool</arguments>
+                <argument>-o</argument>
+                <argument>../../../../../../../../../../target/generated-sources/antlr/org/apache/royale/compiler/internal/parsing/as</argument>
+                <argument>MetadataParser.g</argument>
+              </arguments>
+              <workingDirectory>src/main/antlr/org/apache/royale/compiler/internal/parsing/as</workingDirectory>
+              <sourceRoot>target/generated-sources/antlr</sourceRoot>
+            </configuration>
+          </execution>
+          <execution>
+              <id>generate-test-js-typedefs</id>
+              <phase>test-compile</phase>
+              <goals>
+                  <goal>exec</goal>
+              </goals>
+              <configuration>
+                  <executable>java</executable>
+                  <arguments>
+                      <argument>-classpath</argument>
+                      <classpath />
+                      <arguments>org.apache.royale.compiler.clients.EXTERNC</arguments>
+                      <argument>-load-config+=../compiler-externc/src/test/config/externc-config.xml</argument>
+                  </arguments>
+              </configuration>
+          </execution>
+          <execution>
+              <id>generate-test-js-swc</id>
+              <phase>test-compile</phase>
+              <goals>
+                  <goal>exec</goal>
+              </goals>
+              <configuration>
+                  <executable>java</executable>
+                  <arguments>
+                      <argument>-classpath</argument>
+                      <classpath />
+                      <arguments>org.apache.royale.compiler.clients.COMPC</arguments>
+                      <argument>-load-config+=../compiler-externc/target/compile-as-config.xml</argument>
+                      <argument>-output=../compiler-externc/target/js.swc</argument>
+                  </arguments>
+              </configuration>
+          </execution>
+          <execution>
+              <id>generate-test-custom-swc</id>
+              <phase>test-compile</phase>
+              <goals>
+                  <goal>exec</goal>
+              </goals>
+              <configuration>
+                  <executable>java</executable>
+                  <arguments>
+                      <argument>-classpath</argument>
+                      <classpath />
+                      <arguments>org.apache.royale.compiler.clients.COMPC</arguments>
+                      <argument>-load-config+=target/compile-as-config.xml</argument>
+                      <argument>-output=target/custom.swc</argument>
+                  </arguments>
+              </configuration>
+          </execution>
+        </executions>
+      </plugin>
+
+      <!--
+            Do all the JBurg code generation.
+      -->
+      <plugin>
+        <groupId>net.sourceforge.jburg</groupId>
+        <artifactId>jburg-maven-plugin</artifactId>
+        <extensions>true</extensions>
+        <executions>
+          <execution>
+            <id>generate-css-emitter</id>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <configuration>
+              <includes>
+                <include>CSSEmitter.jbg</include>
+              </includes>
+              <sourceDirectory>src/main/jburg/org/apache/royale/compiler/internal/css/codegen</sourceDirectory>
+              <outputDirectory>target/generated-sources/jburg/org/apache/royale/compiler/internal/css/codegen</outputDirectory>
+            </configuration>
+          </execution>
+          <execution>
+            <id>generate-cmc-emitter</id>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <configuration>
+              <includes>
+                <include>CmcEmitter.jbg</include>
+              </includes>
+              <sourceDirectory>src/main/jburg/org/apache/royale/compiler/internal/as/codegen</sourceDirectory>
+              <outputDirectory>target/generated-sources/jburg/org/apache/royale/compiler/internal/as/codegen</outputDirectory>
+            </configuration>
+          </execution>
+        </executions>
+        <configuration>
+          <!-- debug=true generates the "dump" method for Emitters, which is used for debugging -->
+          <debug>true</debug>
+        </configuration>
+        <dependencies>
+          <!-- this needs to be first in order to patch jburg -->
+          <dependency>
+            <groupId>org.apache.royale.compiler</groupId>
+            <artifactId>compiler-jburg-types</artifactId>
+            <version>${compiler-jburg-types.version}</version>
+          </dependency>
+          <dependency>
+            <groupId>net.sourceforge.jburg</groupId>
+            <artifactId>jburg</artifactId>
+            <version>1.10.3</version>
+          </dependency>
+        </dependencies>
+      </plugin>
+
+      <!--
+            Do all the Antlr3 code generation.
+      -->
+      <plugin>
+        <groupId>org.antlr</groupId>
+        <artifactId>antlr3-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>generate-csslexer-and-cssparser</id>
+            <goals>
+              <goal>antlr</goal>
+            </goals>
+            <configuration>
+              <includes>
+                <include>CSS.g</include>
+              </includes>
+              <sourceDirectory>src/main/antlr3/org/apache/royale/compiler/internal/css</sourceDirectory>
+              <outputDirectory>target/generated-sources/antlr3/org/apache/royale/compiler/internal/css</outputDirectory>
+            </configuration>
+          </execution>
+          <execution>
+            <id>generate-csstree</id>
+            <goals>
+              <goal>antlr</goal>
+            </goals>
+            <configuration>
+              <includes>
+                <include>CSSTree.g</include>
+              </includes>
+              <sourceDirectory>src/main/antlr3/org/apache/royale/compiler/internal/css</sourceDirectory>
+              <outputDirectory>target/generated-sources/antlr3/org/apache/royale/compiler/internal/css</outputDirectory>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+
+      <!--
+              Do all the custom processing with the royale build tools.
+      -->
+      <plugin>
+        <groupId>org.apache.royale.compiler</groupId>
+        <artifactId>compiler-build-tools</artifactId>
+        <executions>
+          <execution>
+            <id>generate-unknown-tree-handler</id>
+            <goals>
+              <goal>generate-unknown-tree-handler</goal>
+            </goals>
+            <configuration>
+              <inputFile>org/apache/royale/compiler/internal/as/codegen/UnknownTreeHandlerPatterns.xml</inputFile>
+              <outputFile>org/apache/royale/compiler/internal/as/codegen/UnknownTreeHandlerPatterns.java</outputFile>
+            </configuration>
+          </execution>
+          <execution>
+            <id>add-suppress-unused-warnings-annotations</id>
+            <goals>
+              <goal>add-class-annotation</goal>
+            </goals>
+            <configuration>
+              <includes>
+                <include>antlr/org/apache/royale/compiler/internal/parsing/as/ASParser.java</include>
+                <include>antlr/org/apache/royale/compiler/internal/parsing/as/ASTokenTypes.java</include>
+                <include>antlr/org/apache/royale/compiler/internal/parsing/as/MetadataTokenTypes.java</include>
+              </includes>
+              <annotation>@SuppressWarnings("unused")</annotation>
+            </configuration>
+          </execution>
+          <execution>
+            <id>add-suppress-all-warnings-annotations-css</id>
+            <goals>
+              <goal>add-class-annotation</goal>
+            </goals>
+            <configuration>
+              <includes>
+                <include>antlr3/org/apache/royale/compiler/internal/css/CSSLexer.java</include>
+                <include>antlr3/org/apache/royale/compiler/internal/css/CSSParser.java</include>
+              </includes>
+              <annotation>@SuppressWarnings("all")</annotation>
+              <dateStart>// $ANTLR 3.5.2 ***CSS.g</dateStart>
+            </configuration>
+          </execution>
+          <execution>
+            <id>add-suppress-all-warnings-annotations-csstree</id>
+            <goals>
+              <goal>add-class-annotation</goal>
+            </goals>
+            <configuration>
+              <includes>
+                <include>antlr3/org/apache/royale/compiler/internal/css/CSSTree.java</include>
+              </includes>
+              <annotation>@SuppressWarnings("all")</annotation>
+              <dateStart>// $ANTLR 3.5.2 ***CSSTree.g</dateStart>
+            </configuration>
+          </execution>
+          <execution>
+            <id>add-suppress-all-warnings-annotations-jburg</id>
+            <goals>
+              <goal>add-class-annotation</goal>
+            </goals>
+            <configuration>
+              <includes>
+                <include>antlr/org/apache/royale/compiler/internal/parsing/as/MetadataParser.java</include>
+              </includes>
+              <annotation>@SuppressWarnings("all")</annotation>
+            </configuration>
+          </execution>
+          <execution>
+            <id>add-suppress-rawtypes-unchecked-unused-warnings-annotations</id>
+            <goals>
+              <goal>add-class-annotation</goal>
+            </goals>
+            <configuration>
+              <includes>
+                <include>jburg/org/apache/royale/compiler/internal/css/codegen/CSSEmitter.java</include>
+                <include>jburg/org/apache/royale/compiler/internal/as/codegen/CmcEmitter.java</include>
+              </includes>
+              <annotation>@SuppressWarnings({"rawtypes", "unchecked", "unused"})</annotation>
+              <dateStart>/*  Generated</dateStart>
+              <dateEnd> by JBurg</dateEnd>
+            </configuration>
+          </execution>
+          <execution>
+            <id>generate-problems-enum</id>
+            <goals>
+              <goal>generate-problems-enum</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>generate-problems-resource-bundle</id>
+            <goals>
+              <goal>generate-problems-resource-bundle</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>order-jflex-switch-statements</id>
+            <goals>
+              <goal>order-jflex-switches</goal>
+            </goals>
+            <configuration>
+              <includes>
+              <include>jflex/org/apache/royale/compiler/internal/parsing/as/RawASDocTokenizer.java</include>
+              <include>jflex/org/apache/royale/compiler/internal/parsing/as/RawASTokenizer.java</include>
+              <include>jflex/org/apache/royale/compiler/internal/parsing/mxml/RawMXMLTokenizer.java</include>
+              </includes>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+
+      <!-- Make the surefire execute all unit-tests -->
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <includes>
+            <include>**/*Tests.java</include>
+          </includes>
+          <excludes>
+            <exclude>as/**/*Tests.java</exclude>
+            <exclude>f/**</exclude>
+            <exclude>mxml/tags/**</exclude>
+            <exclude>properties/**</exclude>
+            <exclude>**/MXMLComponentTagTests.java</exclude>
+            <exclude>**/MXMLComponentNodeTests.java</exclude>
+            <exclude>**/MXMLHTTPServiceTagTests.java</exclude>
+            <exclude>**/MXMLModelTagTests.java</exclude>
+            <exclude>**/MXMLRemoteObjectNodeTests.java</exclude>
+            <exclude>**/MXMLWebServiceNodeTests.java</exclude>
+            <exclude>**/MXMLDesignLayerNodeTests.java</exclude>
+            <exclude>**/MXMLHTTPServiceNodeTests.java</exclude>
+            <exclude>**/MXMLModelNodeTests.java</exclude>
+            <exclude>**/MXMLRemoteObjectTagTests.java</exclude>
+            <exclude>**/MXMLStateNodeTests.java</exclude>
+            <exclude>**/MXMLVectorNodeTests.java</exclude>
+            <exclude>**/MXMLWebServiceTagTests.java</exclude>
+          </excludes>
+        </configuration>
+      </plugin>
+
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-failsafe-plugin</artifactId>
+        <configuration>
+          <includes>
+            <include>as/**/*Tests.java</include>
+          </includes>
+          <excludes>
+            <exclude>f/**</exclude>
+            <exclude>mxml/tags/**</exclude>
+            <exclude>properties/**</exclude>
+            <exclude>**/MXMLComponentTagTests.java</exclude>
+            <exclude>**/MXMLComponentNodeTests.java</exclude>
+            <exclude>**/MXMLHTTPServiceTagTests.java</exclude>
+            <exclude>**/MXMLModelTagTests.java</exclude>
+            <exclude>**/MXMLRemoteObjectNodeTests.java</exclude>
+            <exclude>**/MXMLWebServiceNodeTests.java</exclude>
+            <exclude>**/MXMLDesignLayerNodeTests.java</exclude>
+            <exclude>**/MXMLHTTPServiceNodeTests.java</exclude>
+            <exclude>**/MXMLModelNodeTests.java</exclude>
+            <exclude>**/MXMLRemoteObjectTagTests.java</exclude>
+            <exclude>**/MXMLStateNodeTests.java</exclude>
+            <exclude>**/MXMLVectorNodeTests.java</exclude>
+            <exclude>**/MXMLWebServiceTagTests.java</exclude>
+          </excludes>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+  <profiles>
+    <!--
+        This profile adds one test, that relies on the original FDK being
+        available as it compiles each project in the framework/projects
+        directory. It requires some environment variables being set.
+    -->
+    <profile>
+      <id>option-with-flex-sdk-tests</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-failsafe-plugin</artifactId>
+            <configuration>
+              <includes combine.children="append">
+                <include>f/**/*Tests.java</include>
+                <include>mxml/**/*Tests.java</include>
+                <include>properties/**/*Tests.java</include>
+                <include>**/MXMLComponentTagTests.java</include>
+                <include>**/MXMLComponentNodeTests.java</include>
+                <include>**/MXMLHTTPServiceTagTests.java</include>
+                <include>**/MXMLModelTagTests.java</include>
+                <include>**/MXMLRemoteObjectNodeTests.java</include>
+                <include>**/MXMLWebServiceNodeTests.java</include>
+                <include>**/MXMLDesignLayerNodeTests.java</include>
+                <include>**/MXMLHTTPServiceNodeTests.java</include>
+                <include>**/MXMLModelNodeTests.java</include>
+                <include>**/MXMLRemoteObjectTagTests.java</include>
+                <include>**/MXMLStateNodeTests.java</include>
+                <include>**/MXMLVectorNodeTests.java</include>
+                <include>**/MXMLWebServiceTagTests.java</include>
+              </includes>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+
+    <!-- Also run tests using the FLASHPLAYER_DEBUGGER -->
+    <profile>
+      <id>option-with-swf</id>
+      <dependencies>
+        <!-- Ensure the playerglobal is available for running tests -->
+        <dependency>
+          <groupId>com.adobe.flash.framework</groupId>
+          <artifactId>playerglobal</artifactId>
+          <version>${flash.version}</version>
+          <type>swc</type>
+          <scope>runtime</scope>
+        </dependency>
+      </dependencies>
+    </profile>
+  </profiles>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.royale.compiler</groupId>
+      <artifactId>compiler-jburg-types</artifactId>
+      <version>${compiler-jburg-types.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.royale.compiler</groupId>
+      <artifactId>compiler-common</artifactId>
+      <version>0.9.8-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.flex</groupId>
+      <artifactId>flex-tool-api</artifactId>
+      <version>1.0.0</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
+      <version>2.4</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-cli</groupId>
+      <artifactId>commons-cli</artifactId>
+      <version>1.2</version>
+    </dependency>
+    <dependency>
+      <groupId>org.antlr</groupId>
+      <artifactId>antlr</artifactId>
+      <version>3.3</version>
+    </dependency>
+    <dependency>
+      <groupId>com.google.guava</groupId>
+      <artifactId>guava</artifactId>
+      <version>25.1-jre</version>
+    </dependency>
+    <dependency>
+      <groupId>net.sourceforge.jburg</groupId>
+      <artifactId>jburg</artifactId>
+      <version>1.10.3</version>
+    </dependency>
+    <dependency>
+      <groupId>de.jflex</groupId>
+      <artifactId>jflex</artifactId>
+      <version>1.6.0</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.apache.ant</groupId>
+          <artifactId>ant</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.b1.pack</groupId>
+      <artifactId>lzma-sdk-4j</artifactId>
+      <version>9.22.0</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.royale.compiler</groupId>
+      <artifactId>compiler-test-utils</artifactId>
+      <version>0.9.8-SNAPSHOT</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.royale.compiler</groupId>
+      <artifactId>compiler-externc</artifactId>
+      <version>0.9.8-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.10</version>
+      <scope>test</scope>
+    </dependency>
+    <!-- TODO: Currently only needed for the duplicate FlashplayerSecurityHandler -->
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-lang3</artifactId>
+      <version>3.4</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+<properties /></project>
diff --git a/debugger/pom.xml b/debugger/pom.xml
index 8845f5b..b3ae60b 100644
--- a/debugger/pom.xml
+++ b/debugger/pom.xml
@@ -1,140 +1,140 @@
-<?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.
-
---><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.royale.compiler</groupId>
-    <artifactId>royale-compiler-parent</artifactId>
-    <version>0.9.9-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>debugger</artifactId>
-  <version>0.9.9-SNAPSHOT</version>
-
-  <name>Apache Royale: Compiler: Debugger</name>
-
-  <build>
-    <plugins>
-      <!--
-Do all the JBurg code generation.
--->
-      <plugin>
-        <groupId>net.sourceforge.jburg</groupId>
-        <artifactId>jburg-maven-plugin</artifactId>
-        <extensions>true</extensions>
-        <executions>
-          <execution>
-            <id>generate-debugger</id>
-            <goals>
-              <goal>generate</goal>
-            </goals>
-            <configuration>
-              <includes>
-                <include>AS3DebuggerBURM.jbg</include>
-                <!--include>AS3DebuggerCompoundAssignmentRules.jbg</include>
-                <include>AS3DebuggerRules.jbg</include-->
-              </includes>
-              <sourceDirectory>src/main/jburg/flash/tools/debugger/expression</sourceDirectory>
-              <outputDirectory>target/generated-sources/jburg/flash/tools/debugger/expression</outputDirectory>
-            </configuration>
-          </execution>
-        </executions>
-        <configuration>
-          <!-- debug=true generates the "dump" method for Emitters, which is used for debugging -->
-          <!--debug>true</debug-->
-        </configuration>
-        <dependencies>
-            <!-- this needs to be first in order to patch jburg -->
-          <dependency>
-            <groupId>org.apache.royale.compiler</groupId>
-            <artifactId>compiler-jburg-types</artifactId>
-            <version>${compiler-jburg-types.version}</version>
-          </dependency>
-          <dependency>
-            <groupId>net.sourceforge.jburg</groupId>
-            <artifactId>jburg</artifactId>
-            <version>1.10.3</version>
-          </dependency>
-        </dependencies>
-      </plugin>
-      <plugin>
-        <artifactId>maven-jar-plugin</artifactId>
-        <configuration>
-          <archive>
-            <manifest>
-              <addClasspath>false</addClasspath>
-            </manifest>
-            <manifestEntries>
-              <!-- These paths are all defined the way the layout will be in the distribution -->
-              <Class-Path>compiler.jar compiler-common.jar swfutils.jar external/commons-lang.jar</Class-Path>
-            </manifestEntries>
-          </archive>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.royale.compiler</groupId>
-      <artifactId>compiler</artifactId>
-      <version>0.9.9-SNAPSHOT</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.royale.compiler</groupId>
-      <artifactId>swfutils</artifactId>
-      <version>0.9.9-SNAPSHOT</version>
-    </dependency>
-    <dependency>
-      <groupId>commons-lang</groupId>
-      <artifactId>commons-lang</artifactId>
-      <version>2.6</version>
-    </dependency>
-
-    <dependency>
-      <groupId>args4j</groupId>
-      <artifactId>args4j</artifactId>
-      <version>2.0.28</version>
-    </dependency>
-    <dependency>
-      <groupId>org.codeartisans</groupId>
-      <artifactId>org.json</artifactId>
-      <version>20131017</version>
-    </dependency>
-    <dependency>
-      <groupId>com.google.javascript</groupId>
-      <artifactId>closure-compiler</artifactId>
-      <version>v20181210</version>
-    </dependency>
-    <dependency>
-      <groupId>org.clojure</groupId>
-      <artifactId>google-closure-library</artifactId>
-      <version>0.0-20170809-b9c14c6b</version>
-    </dependency>
-
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>4.10</version>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-
-<properties /></project>
+<?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.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.royale.compiler</groupId>
+    <artifactId>royale-compiler-parent</artifactId>
+    <version>0.9.8-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>debugger</artifactId>
+  <version>0.9.8-SNAPSHOT</version>
+
+  <name>Apache Royale: Compiler: Debugger</name>
+
+  <build>
+    <plugins>
+      <!--
+Do all the JBurg code generation.
+-->
+      <plugin>
+        <groupId>net.sourceforge.jburg</groupId>
+        <artifactId>jburg-maven-plugin</artifactId>
+        <extensions>true</extensions>
+        <executions>
+          <execution>
+            <id>generate-debugger</id>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <configuration>
+              <includes>
+                <include>AS3DebuggerBURM.jbg</include>
+                <!--include>AS3DebuggerCompoundAssignmentRules.jbg</include>
+                <include>AS3DebuggerRules.jbg</include-->
+              </includes>
+              <sourceDirectory>src/main/jburg/flash/tools/debugger/expression</sourceDirectory>
+              <outputDirectory>target/generated-sources/jburg/flash/tools/debugger/expression</outputDirectory>
+            </configuration>
+          </execution>
+        </executions>
+        <configuration>
+          <!-- debug=true generates the "dump" method for Emitters, which is used for debugging -->
+          <!--debug>true</debug-->
+        </configuration>
+        <dependencies>
+            <!-- this needs to be first in order to patch jburg -->
+          <dependency>
+            <groupId>org.apache.royale.compiler</groupId>
+            <artifactId>compiler-jburg-types</artifactId>
+            <version>${compiler-jburg-types.version}</version>
+          </dependency>
+          <dependency>
+            <groupId>net.sourceforge.jburg</groupId>
+            <artifactId>jburg</artifactId>
+            <version>1.10.3</version>
+          </dependency>
+        </dependencies>
+      </plugin>
+      <plugin>
+        <artifactId>maven-jar-plugin</artifactId>
+        <configuration>
+          <archive>
+            <manifest>
+              <addClasspath>false</addClasspath>
+            </manifest>
+            <manifestEntries>
+              <!-- These paths are all defined the way the layout will be in the distribution -->
+              <Class-Path>compiler.jar compiler-common.jar swfutils.jar external/commons-lang.jar</Class-Path>
+            </manifestEntries>
+          </archive>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.royale.compiler</groupId>
+      <artifactId>compiler</artifactId>
+      <version>0.9.8-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.royale.compiler</groupId>
+      <artifactId>swfutils</artifactId>
+      <version>0.9.8-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-lang</groupId>
+      <artifactId>commons-lang</artifactId>
+      <version>2.6</version>
+    </dependency>
+
+    <dependency>
+      <groupId>args4j</groupId>
+      <artifactId>args4j</artifactId>
+      <version>2.0.28</version>
+    </dependency>
+    <dependency>
+      <groupId>org.codeartisans</groupId>
+      <artifactId>org.json</artifactId>
+      <version>20131017</version>
+    </dependency>
+    <dependency>
+      <groupId>com.google.javascript</groupId>
+      <artifactId>closure-compiler</artifactId>
+      <version>v20181210</version>
+    </dependency>
+    <dependency>
+      <groupId>org.clojure</groupId>
+      <artifactId>google-closure-library</artifactId>
+      <version>0.0-20170809-b9c14c6b</version>
+    </dependency>
+
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.10</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+<properties /></project>
diff --git a/flex-compiler-oem/pom.xml b/flex-compiler-oem/pom.xml
index 81a95a1..a9b69f9 100644
--- a/flex-compiler-oem/pom.xml
+++ b/flex-compiler-oem/pom.xml
@@ -1,71 +1,71 @@
-<?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.
-
---><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.royale.compiler</groupId>
-    <artifactId>royale-compiler-parent</artifactId>
-    <version>0.9.9-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>flex-compiler-oem</artifactId>
-  <version>0.9.9-SNAPSHOT</version>
-
-  <name>Apache Royale: Compiler: OEM Layer</name>
-
-  <build>
-    <plugins>
-      <plugin>
-        <artifactId>maven-jar-plugin</artifactId>
-        <configuration>
-          <archive>
-            <manifest>
-              <addClasspath>false</addClasspath>
-              <mainClass>flex2.tools.Mxmlc</mainClass>
-            </manifest>
-            <manifestEntries>
-              <!-- These paths are all defined the way the layout will be in the distribution -->
-              <Class-Path>compiler.jar swfutils.jar ../js/lib/jsc.jar</Class-Path>
-            </manifestEntries>
-          </archive>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.royale.compiler</groupId>
-      <artifactId>compiler</artifactId>
-      <version>0.9.9-SNAPSHOT</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.royale.compiler</groupId>
-      <artifactId>compiler-jx</artifactId>
-      <version>0.9.9-SNAPSHOT</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.royale.compiler</groupId>
-      <artifactId>swfutils</artifactId>
-      <version>0.9.9-SNAPSHOT</version>
-    </dependency>
-  </dependencies>
-
-<properties /></project>
+<?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.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.royale.compiler</groupId>
+    <artifactId>royale-compiler-parent</artifactId>
+    <version>0.9.8-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>flex-compiler-oem</artifactId>
+  <version>0.9.8-SNAPSHOT</version>
+
+  <name>Apache Royale: Compiler: OEM Layer</name>
+
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-jar-plugin</artifactId>
+        <configuration>
+          <archive>
+            <manifest>
+              <addClasspath>false</addClasspath>
+              <mainClass>flex2.tools.Mxmlc</mainClass>
+            </manifest>
+            <manifestEntries>
+              <!-- These paths are all defined the way the layout will be in the distribution -->
+              <Class-Path>compiler.jar swfutils.jar ../js/lib/jsc.jar</Class-Path>
+            </manifestEntries>
+          </archive>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.royale.compiler</groupId>
+      <artifactId>compiler</artifactId>
+      <version>0.9.8-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.royale.compiler</groupId>
+      <artifactId>compiler-jx</artifactId>
+      <version>0.9.8-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.royale.compiler</groupId>
+      <artifactId>swfutils</artifactId>
+      <version>0.9.8-SNAPSHOT</version>
+    </dependency>
+  </dependencies>
+
+<properties /></project>
diff --git a/pom.xml b/pom.xml
index fb3c165..c1c641d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,777 +1,777 @@
-<?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.
-
---><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache</groupId>
-    <artifactId>apache</artifactId>
-    <version>23</version>
-  </parent>
-
-  <groupId>org.apache.royale.compiler</groupId>
-  <artifactId>royale-compiler-parent</artifactId>
-  <version>0.9.9-SNAPSHOT</version>
-  <packaging>pom</packaging>
-
-  <name>Apache Royale: Compiler: Parent</name>
-  <description>The Apache Royale Project</description>
-  
-  <scm>
-    <connection>scm:git:https://gitbox.apache.org/repos/asf/royale-compiler.git</connection>
-    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/royale-compiler.git</developerConnection>
-    <url>https://github.com/apache/royale-compiler</url>
-    <tag>HEAD</tag>
-  </scm>
-
-  <properties>
-    <java.version>1.8</java.version>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <project.reporting.outputencoding>UTF-8</project.reporting.outputencoding>
-    <maven.version>3.3.1</maven.version>
-
-    <compiler-build-tools.version>1.2.1</compiler-build-tools.version>
-    <compiler-jburg-types.version>1.1.0</compiler-jburg-types.version>
-
-    <flex.version>4.15.0</flex.version>
-    <flash.version>20.0</flash.version>
-    <air.version>20.0</air.version>
-    <option.withSwf.enabled>false</option.withSwf.enabled>
-
-    <release-profiles>apache-release,option-with-swf</release-profiles>
-
-    <!-- Dont't open multiple connections to one service to upload multiple artifacts at the same time -->
-    <maven.wagon.httpconnectionManager.maxPerRoute>1</maven.wagon.httpconnectionManager.maxPerRoute>
-    <!-- Dont't open multiple connections in total to upload multiple artifacts at the same time -->
-    <maven.wagon.httpconnectionManager.maxTotal>1</maven.wagon.httpconnectionManager.maxTotal>
-    <!-- Change the retry handler to a version that supports retries -->
-    <maven.wagon.http.retryHandler.class>standard</maven.wagon.http.retryHandler.class>
-    <!-- Try at most 6 times to deploy every artifact -->
-    <maven.wagon.http.retryHandler.count>6</maven.wagon.http.retryHandler.count>
-    <project.build.outputTimestamp>2021-08-15T06:25:20Z</project.build.outputTimestamp>
-  </properties>
-
-  <!-- Only configure the site distribution as the rest is handled by the apache parent -->
-  <distributionManagement>
-    <site>
-      <id>apache.website</id>
-      <url>scm:git:https://gitbox.apache.org/repos/asf/royale-compiler.git</url>
-    </site>
-  </distributionManagement>
-
-  <issueManagement>
-    <system>GitHub</system>
-    <url>https://github.com/apache/royale-compiler/issues</url>
-  </issueManagement>
-
-  <mailingLists>
-    <mailingList>
-      <name>Apache Royale User List</name>
-      <subscribe>users-subscribe@royale.apache.org</subscribe>
-      <unsubscribe>users-unsubscribe@royale.apache.org</unsubscribe>
-      <post>users@royale.apache.org</post>
-      <archive>http://mail-archives.apache.org/mod_mbox/royale-users/</archive>
-    </mailingList>
-    <mailingList>
-      <name>Apache Royale Developer List</name>
-      <subscribe>dev-subscribe@royale.apache.org</subscribe>
-      <unsubscribe>dev-unsubscribe@royale.apache.org</unsubscribe>
-      <post>dev@royale.apache.org</post>
-      <archive>http://mail-archives.apache.org/mod_mbox/royale-dev/</archive>
-    </mailingList>
-  </mailingLists>
-
-  <modules>
-    <module>compiler-common</module>
-    <module>compiler-externc</module>
-    <module>compiler-playerglobalc</module>
-    <module>compiler</module>
-    <module>compiler-jx</module>
-    <module>compiler-test-utils</module>
-    <module>swfutils</module>
-    <module>debugger</module>
-    <module>flex-compiler-oem</module>
-    <module>royale-ant-tasks</module>
-    <module>royaleunit-ant-tasks</module>
-    <!--<module>royale-maven-extension</module>-->
-    <module>royale-maven-plugin</module>
-  </modules>
-
-  <build>
-    <extensions>
-      <extension>
-        <groupId>org.apache.maven.wagon</groupId>
-        <artifactId>wagon-http</artifactId>
-        <version>3.4.0</version>
-      </extension>
-    </extensions>
-
-    <plugins>
-      <!-- Execute some checks if the environment ist correctly configured -->
-      <plugin>
-        <groupId>org.codehaus.gmaven</groupId>
-        <artifactId>groovy-maven-plugin</artifactId>
-        <executions>
-          <!-- Do some pre-build checks and report any findings to the user -->
-          <execution>
-            <id>prerequisite-check</id>
-            <phase>validate</phase>
-            <goals>
-              <goal>execute</goal>
-            </goals>
-            <inherited>false</inherited>
-            <configuration>
-              <source>${project.basedir}/src/main/script/prerequisiteCheck.groovy</source>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-
-      <!-- Check if all source files have the required apache license headers -->
-      <plugin>
-        <groupId>org.apache.rat</groupId>
-        <artifactId>apache-rat-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>license-check</id>
-            <phase>verify</phase>
-            <goals>
-              <goal>check</goal>
-            </goals>
-          </execution>
-        </executions>
-        <configuration>
-          <consoleOutput>true</consoleOutput>
-          <excludes>
-            <exclude>LICENSE*</exclude>
-            <exclude>NOTICE*</exclude>
-            <exclude>README*</exclude>
-            <exclude>**/RELEASE_NOTES*</exclude>
-            <!-- Modules which are excluded from the build -->
-            <!-- FlashBuilder settings. frameworks/fb.properties contains Alex' path entries and should be removed -->
-            <exclude>fb.properties</exclude>
-            <!-- FlashBuilder / Eclipse settings. If checked in, they should have apache headers -->
-            <exclude>**/.settings/**</exclude>
-            <exclude>**/*.classpath</exclude>
-            <exclude>**/*.project</exclude>
-            <!-- Ignore IntelliJ IDEA project files -->
-            <exclude>**/*.iml</exclude>
-            <exclude>**/.idea/**</exclude>
-            <!-- Ignore VSCode/Java project files -->
-            <exclude>**/.factorypath</exclude>
-            <!--
-                Exclude any eventually existing content of target directories.
-                Some times when building with a bigger maven reactor and then
-                with a smaller one, RAT will complain about stuff still in the
-                target directories. We don't want that.
-            -->
-            <exclude>**/target/**</exclude>
-            <exclude>**/release-dir/**</exclude>
-            <!-- Stuff an Ant build might have left behind. -->
-            <exclude>lib/**</exclude>
-            <!--
-                In case of an ANT based release the typedefs are included as a
-                subdirectory. We need to exclude this directory from the compiler checks
-                as the typedefs build will handle all content in that directory
-            -->
-            <exclude>royale-typedefs/**</exclude>
-            <!-- This file is used to get reproducible builds.  See royale-maven-plugin/pom.xml
-                 for more info.
-             -->
-            <exclude>**/src/main/sisu/javax.inject.Named</exclude>
-          </excludes>
-        </configuration>
-      </plugin>
-
-      <plugin>
-        <groupId>net.sourceforge.jburg</groupId>
-        <artifactId>jburg-maven-plugin</artifactId>
-        <dependencies>
-          <dependency>
-            <groupId>org.apache.royale.compiler</groupId>
-            <artifactId>compiler-jburg-types</artifactId>
-            <version>${compiler-jburg-types.version}</version>
-          </dependency>
-        </dependencies>
-      </plugin>
-
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-release-plugin</artifactId>
-        <configuration>
-          <arguments combine.self="override">-P${release-profiles}</arguments>
-        </configuration>
-      </plugin>
-
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-compiler-plugin</artifactId>
-        <configuration>
-          <source>${java.version}</source>
-          <target>${java.version}</target>
-        </configuration>
-      </plugin>
-
-      <plugin>
-        <groupId>org.jacoco</groupId>
-        <artifactId>jacoco-maven-plugin</artifactId>
-        <executions>
-          <!--
-              Prepares the property pointing to the JaCoCo runtime agent which
-              is passed as VM argument when Maven the Surefire plugin is executed.
-          -->
-          <execution>
-            <id>pre-unit-test</id>
-            <goals>
-              <goal>prepare-agent</goal>
-            </goals>
-            <configuration>
-              <!-- Sets the path to the file which contains the execution data. -->
-              <destFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</destFile>
-              <!--
-                  Sets the name of the property containing the settings
-                  for JaCoCo runtime agent.
-              -->
-              <propertyName>surefireArgLine</propertyName>
-            </configuration>
-          </execution>
-          <!--
-              Prepares the property pointing to the JaCoCo runtime agent which
-              is passed as VM argument when Maven the Failsafe plugin is executed.
-          -->
-          <execution>
-            <id>pre-integration-test</id>
-            <phase>pre-integration-test</phase>
-            <goals>
-              <goal>prepare-agent</goal>
-            </goals>
-            <configuration>
-              <!-- Sets the path to the file which contains the execution data. -->
-              <destFile>${project.build.directory}/coverage-reports/jacoco-it.exec</destFile>
-              <!--
-                  Sets the name of the property containing the settings
-                  for JaCoCo runtime agent.
-              -->
-              <propertyName>failsafeArgLine</propertyName>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-
-      <!-- Make the surefire execute all unit-tests -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-        <configuration>
-          <!-- the @-sign implies late-evaluation of the property -->
-          <argLine>@{surefireArgLine}</argLine>
-          <systemPropertyVariables>
-            <buildType>Maven</buildType>
-            <flexVersion>${flex.version}</flexVersion>
-            <flashVersion>${flash.version}</flashVersion>
-            <airVersion>${air.version}</airVersion>
-            <mavenLocalRepoDir>${settings.localRepository}</mavenLocalRepoDir>
-            <optionWithSwfEnabled>${option.withSwf.enabled}</optionWithSwfEnabled>
-          </systemPropertyVariables>
-          <!--
-              Currently some tests need this to be disabled,
-              but actually this is a bug. For now I'll disable
-              them to avoid problems during the maven migration.
-              After this is finished, we should definitely fix
-              the tests so assertions can be enabled.
-          -->
-          <enableAssertions>false</enableAssertions>
-        </configuration>
-      </plugin>
-
-      <!-- Make the failsafe execute all integration-tests -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-failsafe-plugin</artifactId>
-        <executions>
-          <execution>
-            <goals>
-              <goal>integration-test</goal>
-              <goal>verify</goal>
-            </goals>
-          </execution>
-        </executions>
-        <configuration>
-          <!-- the @-sign implies late-evaluation of the property -->
-          <argLine>@{failsafeArgLine}</argLine>
-          <systemPropertyVariables>
-            <buildType>Maven</buildType>
-            <flexVersion>${flex.version}</flexVersion>
-            <flashVersion>${flash.version}</flashVersion>
-            <airVersion>${air.version}</airVersion>
-            <mavenLocalRepoDir>${settings.localRepository}</mavenLocalRepoDir>
-            <FLASHPLAYER_DEBUGGER>${env.FLASHPLAYER_DEBUGGER}</FLASHPLAYER_DEBUGGER>
-          </systemPropertyVariables>
-        </configuration>
-      </plugin>
-
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-dependency-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>analyze</id>
-            <goals>
-              <goal>analyze-only</goal>
-            </goals>
-            <configuration>
-              <failOnWarning>false</failOnWarning>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-
-      <!-- Plugin to detect problems with JDK incompatibilities -->
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>animal-sniffer-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>check-jdk-1.8</id>
-            <phase>test</phase>
-            <goals>
-              <goal>check</goal>
-            </goals>
-            <configuration>
-              <signature>
-                <groupId>org.codehaus.mojo.signature</groupId>
-                <artifactId>java18</artifactId>
-                <version>1.0</version>
-              </signature>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.apache.royale.compiler</groupId>
-          <artifactId>compiler-build-tools</artifactId>
-          <version>${compiler-build-tools.version}</version>
-        </plugin>
-
-        <plugin>
-          <groupId>com.googlecode.maven-download-plugin</groupId>
-          <artifactId>download-maven-plugin</artifactId>
-          <version>1.5.0</version>
-        </plugin>
-
-        <plugin>
-          <groupId>org.apache.rat</groupId>
-          <artifactId>apache-rat-plugin</artifactId>
-          <version>0.13</version>
-        </plugin>
-
-        <plugin>
-          <groupId>org.codehaus.mojo</groupId>
-          <artifactId>exec-maven-plugin</artifactId>
-          <version>1.6.0</version>
-        </plugin>
-
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-resources-plugin</artifactId>
-          <version>3.1.0</version>
-        </plugin>
-
-        <plugin>
-          <groupId>net.sourceforge.jburg</groupId>
-          <artifactId>jburg-maven-plugin</artifactId>
-          <version>1.10.4</version>
-        </plugin>
-
-        <plugin>
-          <groupId>de.jflex</groupId>
-          <artifactId>maven-jflex-plugin</artifactId>
-          <version>1.4.3</version>
-        </plugin>
-
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-antlr-plugin</artifactId>
-          <version>2.0-beta-1</version>
-        </plugin>
-
-        <plugin>
-          <groupId>org.antlr</groupId>
-          <artifactId>antlr3-maven-plugin</artifactId>
-          <version>3.5.2</version>
-        </plugin>
-
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-compiler-plugin</artifactId>
-          <version>3.8.1</version>
-        </plugin>
-
-        <plugin>
-          <groupId>org.codehaus.gmaven</groupId>
-          <artifactId>groovy-maven-plugin</artifactId>
-          <version>2.1.1</version>
-        </plugin>
-
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-dependency-plugin</artifactId>
-          <version>3.1.1</version>
-        </plugin>
-
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-deploy-plugin</artifactId>
-          <version>2.8.2</version>
-          <!-- If deploying fails due to repo or network problems, retry the given number of times (1-10) -->
-          <configuration>
-            <retryFailedDeploymentCount>6</retryFailedDeploymentCount>
-          </configuration>
-        </plugin>
-
-        <plugin>
-          <groupId>org.jacoco</groupId>
-          <artifactId>jacoco-maven-plugin</artifactId>
-          <version>0.8.5</version>
-        </plugin>
-
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-jar-plugin</artifactId>
-          <configuration>
-            <archive>
-              <manifest>
-                <!-- <addClasspath>true</addClasspath> -->
-                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
-                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
-              </manifest>
-            </archive>
-          </configuration>
-        </plugin>
-
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-archiver-plugin</artifactId>
-          <version>3.0.1</version>
-        </plugin>
-
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-surefire-plugin</artifactId>
-          <version>2.22.1</version>
-        </plugin>
-
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-failsafe-plugin</artifactId>
-          <version>2.22.1</version>
-        </plugin>
-
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-source-plugin</artifactId>
-          <version>3.2.1</version>
-        </plugin>
-
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-assembly-plugin</artifactId>
-          <version>3.2.0</version>
-        </plugin>
-
-        <plugin>
-          <groupId>org.codehaus.mojo</groupId>
-          <artifactId>animal-sniffer-maven-plugin</artifactId>
-          <version>1.18</version>
-        </plugin>
-
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-javadoc-plugin</artifactId>
-          <version>3.2.0</version>
-          <configuration>
-            <tags>
-              <tag>
-                <name>goal</name>
-                <placement>a</placement>
-                <head>Goal:</head>
-              </tag>
-              <tag>
-                <name>phase</name>
-                <placement>a</placement>
-                <head>Phase:</head>
-              </tag>
-              <tag>
-                <name>threadSafe</name>
-                <placement>a</placement>
-                <head>Thread Safe:</head>
-              </tag>
-              <tag>
-                <name>requiresDependencyResolution</name>
-                <placement>a</placement>
-                <head>Requires Dependency Resolution:</head>
-              </tag>
-              <tag>
-                <name>requiresProject</name>
-                <placement>a</placement>
-                <head>Requires Project:</head>
-              </tag>
-            </tags>
-            <!-- TODO: This should only be a measure of last resort -->
-            <failOnError>false</failOnError>
-          </configuration>
-        </plugin>
-
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-scm-plugin</artifactId>
-          <version>1.10.0</version>
-        </plugin>
-
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-site-plugin</artifactId>
-          <version>3.8.2</version>
-        </plugin>
-
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-scm-publish-plugin</artifactId>
-          <version>3.0.0</version>
-        </plugin>
-
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-release-plugin</artifactId>
-          <version>3.0.0-M1</version>
-        </plugin>
-      </plugins>
-    </pluginManagement>
-  </build>
-
-  <profiles>
-    <profile>
-      <id>option-with-swf</id>
-      <properties>
-        <option.withSwf.enabled>true</option.withSwf.enabled>
-      </properties>
-    </profile>
-
-    <!-- Profile for linux (Self-Enabling) -->
-    <profile>
-      <id>_os-unix</id>
-      <activation>
-        <os>
-          <family>unix</family>
-        </os>
-      </activation>
-      <properties>
-        <os.type>linux</os.type>
-      </properties>
-    </profile>
-
-    <!-- Profile for mac (Self-Enabling) -->
-    <profile>
-      <id>_os-mac</id>
-      <activation>
-        <os>
-          <family>mac</family>
-        </os>
-      </activation>
-      <properties>
-        <os.type>mac</os.type>
-      </properties>
-    </profile>
-
-    <!-- profile for windows (Self-Enabling) -->
-    <profile>
-      <id>_os-windows</id>
-      <activation>
-        <os>
-          <family>windows</family>
-        </os>
-      </activation>
-      <properties>
-        <os.type>win</os.type>
-      </properties>
-    </profile>
-
-    <profile>
-      <!-- This profile is used to test against staged release artifacts.
-           Be sure to clear out artifacts in the local repository before
-           and after using -->
-      <id>staged-releases</id>
-      <pluginRepositories>
-        <pluginRepository>
-          <id>staged-releases</id>
-          <url>https://repository.apache.org/content/repositories/orgapacheroyale-${maven.folder.number}</url>
-        </pluginRepository>
-      </pluginRepositories>
-    </profile>
-
-    <!--
-      This profile enables the changes required to do releases on the Royale CI server.
-      It should not be used otherwise.
-    -->
-    <profile>
-      <id>royale-release</id>
-      <properties>
-        <!-- Ensure the royale-release plugin is enabled when running release:perform -->
-        <release-profiles>apache-release,royale-release,option-with-swf</release-profiles>
-      </properties>
-
-      <!-- Redirect the deployment to a local directory -->
-      <!-- Note: using the 'altReleaseDeploymentRepository' and alike were ignored in the release:perform phase -->
-      <distributionManagement>
-        <repository>
-          <id>apache.releases.https</id>
-          <name>Apache Release Distribution Repository</name>
-          <!--
-            'maven.multiModuleProjectDirectory' is a property introduced with maven 3.3.1 ...
-            don't worry if your IDE is complaining.
-            Also this will be set to the 'target/checkout' directory the output will be in
-            'target/local-release-dir'.
-          -->
-          <url>file://${maven.multiModuleProjectDirectory}/../local-release-dir</url>
-        </repository>
-      </distributionManagement>
-
-      <build>
-        <plugins>
-          <!-- Generate the effective poms for this build -->
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-help-plugin</artifactId>
-            <executions>
-              <execution>
-                <id>generate-effective-pom</id>
-                <phase>compile</phase>
-                <goals>
-                  <goal>effective-pom</goal>
-                </goals>
-                <configuration>
-                  <output>${project.build.directory}/effective.pom</output>
-                </configuration>
-              </execution>
-            </executions>
-          </plugin>
-        </plugins>
-        <pluginManagement>
-          <plugins>
-            <!-- We require the release manager to manually login an sign using his credentials -->
-            <plugin>
-              <groupId>org.apache.maven.plugins</groupId>
-              <artifactId>maven-gpg-plugin</artifactId>
-              <configuration>
-                <skip>true</skip>
-              </configuration>
-            </plugin>
-            <!-- We require the release manager to login and push the changes using his credentials -->
-            <plugin>
-              <groupId>org.apache.maven.plugins</groupId>
-              <artifactId>maven-release-plugin</artifactId>
-              <configuration>
-                <pushChanges>false</pushChanges>
-                <providerImplementations>
-                  <git>jgit</git>
-                </providerImplementations>
-              </configuration>
-              <dependencies>
-                <dependency>
-                  <groupId>org.apache.maven.scm</groupId>
-                  <artifactId>maven-scm-provider-jgit</artifactId>
-                  <version>1.11.3-SNAPSHOT</version>
-                </dependency>
-              </dependencies>
-            </plugin>
-          </plugins>
-        </pluginManagement>
-      </build>
-    </profile>
-
-    <!-- Make the release-plugin use the new reproducible build plugin extension -->
-    <profile>
-      <id>apache-release</id>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>net.nicoulaj.maven.plugins</groupId>
-            <artifactId>checksum-maven-plugin</artifactId>
-            <version>1.8</version>
-            <executions>
-              <execution>
-                <goals>
-                  <goal>files</goal>
-                </goals>
-              </execution>
-            </executions>
-            <configuration>
-              <algorithms>
-                <algorithm>SHA-512</algorithm>
-              </algorithms>
-              <fileSets>
-                <fileSet>
-                  <directory>${project.build.directory}</directory>
-                  <includes>
-                    <include>royale-compiler-parent-${project.version}-source-release.zip</include>
-                  </includes>
-                </fileSet>
-              </fileSets>
-            </configuration>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-
-    <!--
-      This profile is intended to help when having problems with Maven.
-      When enabled, it automatically generates an "effective.pom" in the target directory.
-      This version is the fully expanded version where all inherited configuration is in
-      place and all variables are resolved and profile configuration is included.
-    -->
-    <profile>
-      <id>debug-pom</id>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-help-plugin</artifactId>
-            <executions>
-              <execution>
-                <id>generate-effective-pom</id>
-                <phase>compile</phase>
-                <goals>
-                  <goal>effective-pom</goal>
-                </goals>
-                <configuration>
-                  <output>${project.build.directory}/effective.pom</output>
-                </configuration>
-              </execution>
-            </executions>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-  </profiles>
-
-</project>
+<?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.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache</groupId>
+    <artifactId>apache</artifactId>
+    <version>23</version>
+  </parent>
+
+  <groupId>org.apache.royale.compiler</groupId>
+  <artifactId>royale-compiler-parent</artifactId>
+  <version>0.9.8-SNAPSHOT</version>
+  <packaging>pom</packaging>
+
+  <name>Apache Royale: Compiler: Parent</name>
+  <description>The Apache Royale Project</description>
+  
+  <scm>
+    <connection>scm:git:https://gitbox.apache.org/repos/asf/royale-compiler.git</connection>
+    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/royale-compiler.git</developerConnection>
+    <url>https://github.com/apache/royale-compiler</url>
+    <tag>HEAD</tag>
+  </scm>
+
+  <properties>
+    <java.version>1.8</java.version>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <project.reporting.outputencoding>UTF-8</project.reporting.outputencoding>
+    <maven.version>3.3.1</maven.version>
+
+    <compiler-build-tools.version>1.2.1</compiler-build-tools.version>
+    <compiler-jburg-types.version>1.1.0</compiler-jburg-types.version>
+
+    <flex.version>4.15.0</flex.version>
+    <flash.version>20.0</flash.version>
+    <air.version>20.0</air.version>
+    <option.withSwf.enabled>false</option.withSwf.enabled>
+
+    <release-profiles>apache-release,option-with-swf</release-profiles>
+
+    <!-- Dont't open multiple connections to one service to upload multiple artifacts at the same time -->
+    <maven.wagon.httpconnectionManager.maxPerRoute>1</maven.wagon.httpconnectionManager.maxPerRoute>
+    <!-- Dont't open multiple connections in total to upload multiple artifacts at the same time -->
+    <maven.wagon.httpconnectionManager.maxTotal>1</maven.wagon.httpconnectionManager.maxTotal>
+    <!-- Change the retry handler to a version that supports retries -->
+    <maven.wagon.http.retryHandler.class>standard</maven.wagon.http.retryHandler.class>
+    <!-- Try at most 6 times to deploy every artifact -->
+    <maven.wagon.http.retryHandler.count>6</maven.wagon.http.retryHandler.count>
+    <project.build.outputTimestamp>2020-11-26T15:20:12Z</project.build.outputTimestamp>
+  </properties>
+
+  <!-- Only configure the site distribution as the rest is handled by the apache parent -->
+  <distributionManagement>
+    <site>
+      <id>apache.website</id>
+      <url>scm:git:https://gitbox.apache.org/repos/asf/royale-compiler.git</url>
+    </site>
+  </distributionManagement>
+
+  <issueManagement>
+    <system>GitHub</system>
+    <url>https://github.com/apache/royale-compiler/issues</url>
+  </issueManagement>
+
+  <mailingLists>
+    <mailingList>
+      <name>Apache Royale User List</name>
+      <subscribe>users-subscribe@royale.apache.org</subscribe>
+      <unsubscribe>users-unsubscribe@royale.apache.org</unsubscribe>
+      <post>users@royale.apache.org</post>
+      <archive>http://mail-archives.apache.org/mod_mbox/royale-users/</archive>
+    </mailingList>
+    <mailingList>
+      <name>Apache Royale Developer List</name>
+      <subscribe>dev-subscribe@royale.apache.org</subscribe>
+      <unsubscribe>dev-unsubscribe@royale.apache.org</unsubscribe>
+      <post>dev@royale.apache.org</post>
+      <archive>http://mail-archives.apache.org/mod_mbox/royale-dev/</archive>
+    </mailingList>
+  </mailingLists>
+
+  <modules>
+    <module>compiler-common</module>
+    <module>compiler-externc</module>
+    <module>compiler-playerglobalc</module>
+    <module>compiler</module>
+    <module>compiler-jx</module>
+    <module>compiler-test-utils</module>
+    <module>swfutils</module>
+    <module>debugger</module>
+    <module>flex-compiler-oem</module>
+    <module>royale-ant-tasks</module>
+    <module>royaleunit-ant-tasks</module>
+    <!--<module>royale-maven-extension</module>-->
+    <module>royale-maven-plugin</module>
+  </modules>
+
+  <build>
+    <extensions>
+      <extension>
+        <groupId>org.apache.maven.wagon</groupId>
+        <artifactId>wagon-http</artifactId>
+        <version>3.4.0</version>
+      </extension>
+    </extensions>
+
+    <plugins>
+      <!-- Execute some checks if the environment ist correctly configured -->
+      <plugin>
+        <groupId>org.codehaus.gmaven</groupId>
+        <artifactId>groovy-maven-plugin</artifactId>
+        <executions>
+          <!-- Do some pre-build checks and report any findings to the user -->
+          <execution>
+            <id>prerequisite-check</id>
+            <phase>validate</phase>
+            <goals>
+              <goal>execute</goal>
+            </goals>
+            <inherited>false</inherited>
+            <configuration>
+              <source>${project.basedir}/src/main/script/prerequisiteCheck.groovy</source>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+
+      <!-- Check if all source files have the required apache license headers -->
+      <plugin>
+        <groupId>org.apache.rat</groupId>
+        <artifactId>apache-rat-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>license-check</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>check</goal>
+            </goals>
+          </execution>
+        </executions>
+        <configuration>
+          <consoleOutput>true</consoleOutput>
+          <excludes>
+            <exclude>LICENSE*</exclude>
+            <exclude>NOTICE*</exclude>
+            <exclude>README*</exclude>
+            <exclude>**/RELEASE_NOTES*</exclude>
+            <!-- Modules which are excluded from the build -->
+            <!-- FlashBuilder settings. frameworks/fb.properties contains Alex' path entries and should be removed -->
+            <exclude>fb.properties</exclude>
+            <!-- FlashBuilder / Eclipse settings. If checked in, they should have apache headers -->
+            <exclude>**/.settings/**</exclude>
+            <exclude>**/*.classpath</exclude>
+            <exclude>**/*.project</exclude>
+            <!-- Ignore IntelliJ IDEA project files -->
+            <exclude>**/*.iml</exclude>
+            <exclude>**/.idea/**</exclude>
+            <!-- Ignore VSCode/Java project files -->
+            <exclude>**/.factorypath</exclude>
+            <!--
+                Exclude any eventually existing content of target directories.
+                Some times when building with a bigger maven reactor and then
+                with a smaller one, RAT will complain about stuff still in the
+                target directories. We don't want that.
+            -->
+            <exclude>**/target/**</exclude>
+            <exclude>**/release-dir/**</exclude>
+            <!-- Stuff an Ant build might have left behind. -->
+            <exclude>lib/**</exclude>
+            <!--
+                In case of an ANT based release the typedefs are included as a
+                subdirectory. We need to exclude this directory from the compiler checks
+                as the typedefs build will handle all content in that directory
+            -->
+            <exclude>royale-typedefs/**</exclude>
+            <!-- This file is used to get reproducible builds.  See royale-maven-plugin/pom.xml
+                 for more info.
+             -->
+            <exclude>**/src/main/sisu/javax.inject.Named</exclude>
+          </excludes>
+        </configuration>
+      </plugin>
+
+      <plugin>
+        <groupId>net.sourceforge.jburg</groupId>
+        <artifactId>jburg-maven-plugin</artifactId>
+        <dependencies>
+          <dependency>
+            <groupId>org.apache.royale.compiler</groupId>
+            <artifactId>compiler-jburg-types</artifactId>
+            <version>${compiler-jburg-types.version}</version>
+          </dependency>
+        </dependencies>
+      </plugin>
+
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-release-plugin</artifactId>
+        <configuration>
+          <arguments combine.self="override">-P${release-profiles}</arguments>
+        </configuration>
+      </plugin>
+
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <source>${java.version}</source>
+          <target>${java.version}</target>
+        </configuration>
+      </plugin>
+
+      <plugin>
+        <groupId>org.jacoco</groupId>
+        <artifactId>jacoco-maven-plugin</artifactId>
+        <executions>
+          <!--
+              Prepares the property pointing to the JaCoCo runtime agent which
+              is passed as VM argument when Maven the Surefire plugin is executed.
+          -->
+          <execution>
+            <id>pre-unit-test</id>
+            <goals>
+              <goal>prepare-agent</goal>
+            </goals>
+            <configuration>
+              <!-- Sets the path to the file which contains the execution data. -->
+              <destFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</destFile>
+              <!--
+                  Sets the name of the property containing the settings
+                  for JaCoCo runtime agent.
+              -->
+              <propertyName>surefireArgLine</propertyName>
+            </configuration>
+          </execution>
+          <!--
+              Prepares the property pointing to the JaCoCo runtime agent which
+              is passed as VM argument when Maven the Failsafe plugin is executed.
+          -->
+          <execution>
+            <id>pre-integration-test</id>
+            <phase>pre-integration-test</phase>
+            <goals>
+              <goal>prepare-agent</goal>
+            </goals>
+            <configuration>
+              <!-- Sets the path to the file which contains the execution data. -->
+              <destFile>${project.build.directory}/coverage-reports/jacoco-it.exec</destFile>
+              <!--
+                  Sets the name of the property containing the settings
+                  for JaCoCo runtime agent.
+              -->
+              <propertyName>failsafeArgLine</propertyName>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+
+      <!-- Make the surefire execute all unit-tests -->
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <!-- the @-sign implies late-evaluation of the property -->
+          <argLine>@{surefireArgLine}</argLine>
+          <systemPropertyVariables>
+            <buildType>Maven</buildType>
+            <flexVersion>${flex.version}</flexVersion>
+            <flashVersion>${flash.version}</flashVersion>
+            <airVersion>${air.version}</airVersion>
+            <mavenLocalRepoDir>${settings.localRepository}</mavenLocalRepoDir>
+            <optionWithSwfEnabled>${option.withSwf.enabled}</optionWithSwfEnabled>
+          </systemPropertyVariables>
+          <!--
+              Currently some tests need this to be disabled,
+              but actually this is a bug. For now I'll disable
+              them to avoid problems during the maven migration.
+              After this is finished, we should definitely fix
+              the tests so assertions can be enabled.
+          -->
+          <enableAssertions>false</enableAssertions>
+        </configuration>
+      </plugin>
+
+      <!-- Make the failsafe execute all integration-tests -->
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-failsafe-plugin</artifactId>
+        <executions>
+          <execution>
+            <goals>
+              <goal>integration-test</goal>
+              <goal>verify</goal>
+            </goals>
+          </execution>
+        </executions>
+        <configuration>
+          <!-- the @-sign implies late-evaluation of the property -->
+          <argLine>@{failsafeArgLine}</argLine>
+          <systemPropertyVariables>
+            <buildType>Maven</buildType>
+            <flexVersion>${flex.version}</flexVersion>
+            <flashVersion>${flash.version}</flashVersion>
+            <airVersion>${air.version}</airVersion>
+            <mavenLocalRepoDir>${settings.localRepository}</mavenLocalRepoDir>
+            <FLASHPLAYER_DEBUGGER>${env.FLASHPLAYER_DEBUGGER}</FLASHPLAYER_DEBUGGER>
+          </systemPropertyVariables>
+        </configuration>
+      </plugin>
+
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>analyze</id>
+            <goals>
+              <goal>analyze-only</goal>
+            </goals>
+            <configuration>
+              <failOnWarning>false</failOnWarning>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+
+      <!-- Plugin to detect problems with JDK incompatibilities -->
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>animal-sniffer-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>check-jdk-1.8</id>
+            <phase>test</phase>
+            <goals>
+              <goal>check</goal>
+            </goals>
+            <configuration>
+              <signature>
+                <groupId>org.codehaus.mojo.signature</groupId>
+                <artifactId>java18</artifactId>
+                <version>1.0</version>
+              </signature>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.royale.compiler</groupId>
+          <artifactId>compiler-build-tools</artifactId>
+          <version>${compiler-build-tools.version}</version>
+        </plugin>
+
+        <plugin>
+          <groupId>com.googlecode.maven-download-plugin</groupId>
+          <artifactId>download-maven-plugin</artifactId>
+          <version>1.5.0</version>
+        </plugin>
+
+        <plugin>
+          <groupId>org.apache.rat</groupId>
+          <artifactId>apache-rat-plugin</artifactId>
+          <version>0.13</version>
+        </plugin>
+
+        <plugin>
+          <groupId>org.codehaus.mojo</groupId>
+          <artifactId>exec-maven-plugin</artifactId>
+          <version>1.6.0</version>
+        </plugin>
+
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-resources-plugin</artifactId>
+          <version>3.1.0</version>
+        </plugin>
+
+        <plugin>
+          <groupId>net.sourceforge.jburg</groupId>
+          <artifactId>jburg-maven-plugin</artifactId>
+          <version>1.10.4</version>
+        </plugin>
+
+        <plugin>
+          <groupId>de.jflex</groupId>
+          <artifactId>maven-jflex-plugin</artifactId>
+          <version>1.4.3</version>
+        </plugin>
+
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-antlr-plugin</artifactId>
+          <version>2.0-beta-1</version>
+        </plugin>
+
+        <plugin>
+          <groupId>org.antlr</groupId>
+          <artifactId>antlr3-maven-plugin</artifactId>
+          <version>3.5.2</version>
+        </plugin>
+
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-compiler-plugin</artifactId>
+          <version>3.8.1</version>
+        </plugin>
+
+        <plugin>
+          <groupId>org.codehaus.gmaven</groupId>
+          <artifactId>groovy-maven-plugin</artifactId>
+          <version>2.1.1</version>
+        </plugin>
+
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-dependency-plugin</artifactId>
+          <version>3.1.1</version>
+        </plugin>
+
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-deploy-plugin</artifactId>
+          <version>2.8.2</version>
+          <!-- If deploying fails due to repo or network problems, retry the given number of times (1-10) -->
+          <configuration>
+            <retryFailedDeploymentCount>6</retryFailedDeploymentCount>
+          </configuration>
+        </plugin>
+
+        <plugin>
+          <groupId>org.jacoco</groupId>
+          <artifactId>jacoco-maven-plugin</artifactId>
+          <version>0.8.5</version>
+        </plugin>
+
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-jar-plugin</artifactId>
+          <configuration>
+            <archive>
+              <manifest>
+                <!-- <addClasspath>true</addClasspath> -->
+                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
+                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+              </manifest>
+            </archive>
+          </configuration>
+        </plugin>
+
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-archiver-plugin</artifactId>
+          <version>3.0.1</version>
+        </plugin>
+
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-surefire-plugin</artifactId>
+          <version>2.22.1</version>
+        </plugin>
+
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-failsafe-plugin</artifactId>
+          <version>2.22.1</version>
+        </plugin>
+
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-source-plugin</artifactId>
+          <version>3.2.1</version>
+        </plugin>
+
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-assembly-plugin</artifactId>
+          <version>3.2.0</version>
+        </plugin>
+
+        <plugin>
+          <groupId>org.codehaus.mojo</groupId>
+          <artifactId>animal-sniffer-maven-plugin</artifactId>
+          <version>1.18</version>
+        </plugin>
+
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-javadoc-plugin</artifactId>
+          <version>3.2.0</version>
+          <configuration>
+            <tags>
+              <tag>
+                <name>goal</name>
+                <placement>a</placement>
+                <head>Goal:</head>
+              </tag>
+              <tag>
+                <name>phase</name>
+                <placement>a</placement>
+                <head>Phase:</head>
+              </tag>
+              <tag>
+                <name>threadSafe</name>
+                <placement>a</placement>
+                <head>Thread Safe:</head>
+              </tag>
+              <tag>
+                <name>requiresDependencyResolution</name>
+                <placement>a</placement>
+                <head>Requires Dependency Resolution:</head>
+              </tag>
+              <tag>
+                <name>requiresProject</name>
+                <placement>a</placement>
+                <head>Requires Project:</head>
+              </tag>
+            </tags>
+            <!-- TODO: This should only be a measure of last resort -->
+            <failOnError>false</failOnError>
+          </configuration>
+        </plugin>
+
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-scm-plugin</artifactId>
+          <version>1.10.0</version>
+        </plugin>
+
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-site-plugin</artifactId>
+          <version>3.8.2</version>
+        </plugin>
+
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-scm-publish-plugin</artifactId>
+          <version>3.0.0</version>
+        </plugin>
+
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-release-plugin</artifactId>
+          <version>3.0.0-M1</version>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+  </build>
+
+  <profiles>
+    <profile>
+      <id>option-with-swf</id>
+      <properties>
+        <option.withSwf.enabled>true</option.withSwf.enabled>
+      </properties>
+    </profile>
+
+    <!-- Profile for linux (Self-Enabling) -->
+    <profile>
+      <id>_os-unix</id>
+      <activation>
+        <os>
+          <family>unix</family>
+        </os>
+      </activation>
+      <properties>
+        <os.type>linux</os.type>
+      </properties>
+    </profile>
+
+    <!-- Profile for mac (Self-Enabling) -->
+    <profile>
+      <id>_os-mac</id>
+      <activation>
+        <os>
+          <family>mac</family>
+        </os>
+      </activation>
+      <properties>
+        <os.type>mac</os.type>
+      </properties>
+    </profile>
+
+    <!-- profile for windows (Self-Enabling) -->
+    <profile>
+      <id>_os-windows</id>
+      <activation>
+        <os>
+          <family>windows</family>
+        </os>
+      </activation>
+      <properties>
+        <os.type>win</os.type>
+      </properties>
+    </profile>
+
+    <profile>
+      <!-- This profile is used to test against staged release artifacts.
+           Be sure to clear out artifacts in the local repository before
+           and after using -->
+      <id>staged-releases</id>
+      <pluginRepositories>
+        <pluginRepository>
+          <id>staged-releases</id>
+          <url>https://repository.apache.org/content/repositories/orgapacheroyale-${maven.folder.number}</url>
+        </pluginRepository>
+      </pluginRepositories>
+    </profile>
+
+    <!--
+      This profile enables the changes required to do releases on the Royale CI server.
+      It should not be used otherwise.
+    -->
+    <profile>
+      <id>royale-release</id>
+      <properties>
+        <!-- Ensure the royale-release plugin is enabled when running release:perform -->
+        <release-profiles>apache-release,royale-release,option-with-swf</release-profiles>
+      </properties>
+
+      <!-- Redirect the deployment to a local directory -->
+      <!-- Note: using the 'altReleaseDeploymentRepository' and alike were ignored in the release:perform phase -->
+      <distributionManagement>
+        <repository>
+          <id>apache.releases.https</id>
+          <name>Apache Release Distribution Repository</name>
+          <!--
+            'maven.multiModuleProjectDirectory' is a property introduced with maven 3.3.1 ...
+            don't worry if your IDE is complaining.
+            Also this will be set to the 'target/checkout' directory the output will be in
+            'target/local-release-dir'.
+          -->
+          <url>file://${maven.multiModuleProjectDirectory}/../local-release-dir</url>
+        </repository>
+      </distributionManagement>
+
+      <build>
+        <plugins>
+          <!-- Generate the effective poms for this build -->
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-help-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>generate-effective-pom</id>
+                <phase>compile</phase>
+                <goals>
+                  <goal>effective-pom</goal>
+                </goals>
+                <configuration>
+                  <output>${project.build.directory}/effective.pom</output>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+        <pluginManagement>
+          <plugins>
+            <!-- We require the release manager to manually login an sign using his credentials -->
+            <plugin>
+              <groupId>org.apache.maven.plugins</groupId>
+              <artifactId>maven-gpg-plugin</artifactId>
+              <configuration>
+                <skip>true</skip>
+              </configuration>
+            </plugin>
+            <!-- We require the release manager to login and push the changes using his credentials -->
+            <plugin>
+              <groupId>org.apache.maven.plugins</groupId>
+              <artifactId>maven-release-plugin</artifactId>
+              <configuration>
+                <pushChanges>false</pushChanges>
+                <providerImplementations>
+                  <git>jgit</git>
+                </providerImplementations>
+              </configuration>
+              <dependencies>
+                <dependency>
+                  <groupId>org.apache.maven.scm</groupId>
+                  <artifactId>maven-scm-provider-jgit</artifactId>
+                  <version>1.11.3-SNAPSHOT</version>
+                </dependency>
+              </dependencies>
+            </plugin>
+          </plugins>
+        </pluginManagement>
+      </build>
+    </profile>
+
+    <!-- Make the release-plugin use the new reproducible build plugin extension -->
+    <profile>
+      <id>apache-release</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>net.nicoulaj.maven.plugins</groupId>
+            <artifactId>checksum-maven-plugin</artifactId>
+            <version>1.8</version>
+            <executions>
+              <execution>
+                <goals>
+                  <goal>files</goal>
+                </goals>
+              </execution>
+            </executions>
+            <configuration>
+              <algorithms>
+                <algorithm>SHA-512</algorithm>
+              </algorithms>
+              <fileSets>
+                <fileSet>
+                  <directory>${project.build.directory}</directory>
+                  <includes>
+                    <include>royale-compiler-parent-${project.version}-source-release.zip</include>
+                  </includes>
+                </fileSet>
+              </fileSets>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+
+    <!--
+      This profile is intended to help when having problems with Maven.
+      When enabled, it automatically generates an "effective.pom" in the target directory.
+      This version is the fully expanded version where all inherited configuration is in
+      place and all variables are resolved and profile configuration is included.
+    -->
+    <profile>
+      <id>debug-pom</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-help-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>generate-effective-pom</id>
+                <phase>compile</phase>
+                <goals>
+                  <goal>effective-pom</goal>
+                </goals>
+                <configuration>
+                  <output>${project.build.directory}/effective.pom</output>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
+</project>
diff --git a/royale-ant-tasks/pom.xml b/royale-ant-tasks/pom.xml
index ec7c532..6a4d17d 100644
--- a/royale-ant-tasks/pom.xml
+++ b/royale-ant-tasks/pom.xml
@@ -1,58 +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.
-
---><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.royale.compiler</groupId>
-    <artifactId>royale-compiler-parent</artifactId>
-    <version>0.9.9-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>royale-ant-tasks</artifactId>
-  <version>0.9.9-SNAPSHOT</version>
-
-  <name>Apache Royale: Royale Ant Tasks</name>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-jar-plugin</artifactId>
-        <configuration>
-          <archive>
-            <manifestEntries>
-              <!-- These paths are all defined the way the layout will be in the distribution -->
-              <Class-Path>jsc.jar ../../compiler/lib/compiler.jar ../../lib/compiler.jar</Class-Path>
-            </manifestEntries>
-          </archive>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.ant</groupId>
-      <artifactId>ant</artifactId>
-      <version>1.7.0</version>
-    </dependency>
-  </dependencies>
-
-<properties /></project>
+<?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.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.royale.compiler</groupId>
+    <artifactId>royale-compiler-parent</artifactId>
+    <version>0.9.8-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>royale-ant-tasks</artifactId>
+  <version>0.9.8-SNAPSHOT</version>
+
+  <name>Apache Royale: Royale Ant Tasks</name>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <configuration>
+          <archive>
+            <manifestEntries>
+              <!-- These paths are all defined the way the layout will be in the distribution -->
+              <Class-Path>jsc.jar ../../compiler/lib/compiler.jar ../../lib/compiler.jar</Class-Path>
+            </manifestEntries>
+          </archive>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.ant</groupId>
+      <artifactId>ant</artifactId>
+      <version>1.7.0</version>
+    </dependency>
+  </dependencies>
+
+<properties /></project>
diff --git a/royale-maven-plugin/pom.xml b/royale-maven-plugin/pom.xml
index b446991..8b56c31 100644
--- a/royale-maven-plugin/pom.xml
+++ b/royale-maven-plugin/pom.xml
@@ -1,134 +1,134 @@
-<?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.
-
---><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.royale.compiler</groupId>
-    <artifactId>royale-compiler-parent</artifactId>
-    <version>0.9.9-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>royale-maven-plugin</artifactId>
-  <version>0.9.9-SNAPSHOT</version>
-  <packaging>maven-plugin</packaging>
-
-  <name>Apache Royale: Royale Maven Plugin</name>
-
-  <properties>
-    <maven.version>3.3.1</maven.version>
-  </properties>
-
-  <dependencies>
-    <dependency>
-      <groupId>javax.inject</groupId>
-      <artifactId>javax.inject</artifactId>
-      <version>1</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-plugin-api</artifactId>
-      <version>${maven.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven.plugin-tools</groupId>
-      <artifactId>maven-plugin-annotations</artifactId>
-      <version>3.4</version>
-      <scope>provided</scope>
-    </dependency>
-
-    <!-- Apache Velocity templating engine for generating config files -->
-    <dependency>
-      <groupId>org.apache.velocity</groupId>
-      <artifactId>velocity</artifactId>
-      <version>1.7</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-      <version>2.2.1</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-core</artifactId>
-      <version>${maven.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven.shared</groupId>
-      <artifactId>file-management</artifactId>
-      <version>3.0.0</version>
-    </dependency>
-    <dependency>
-      <groupId>commons-io</groupId>
-      <artifactId>commons-io</artifactId>
-      <version>2.4</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-lang3</artifactId>
-      <version>3.4</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.flex</groupId>
-      <artifactId>flex-tool-api</artifactId>
-      <version>1.0.0</version>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-plugin-plugin</artifactId>
-        <version>3.6.0</version>
-        <configuration>
-          <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
-        </configuration>
-        <executions>
-          <execution>
-            <id>mojo-descriptor</id>
-            <goals>
-              <goal>descriptor</goal>
-            </goals>
-          </execution>
-          <execution>
-            <id>help-goal</id>
-            <goals>
-              <goal>helpmojo</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.sonatype.plugins</groupId>
-        <artifactId>sisu-maven-plugin</artifactId>
-        <version>1.4</version>
-        <executions>
-          <execution>
-            <id>generate-index</id>
-            <goals>
-              <goal>main-index</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-</project>
+<?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.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.royale.compiler</groupId>
+    <artifactId>royale-compiler-parent</artifactId>
+    <version>0.9.8-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>royale-maven-plugin</artifactId>
+  <version>0.9.8-SNAPSHOT</version>
+  <packaging>maven-plugin</packaging>
+
+  <name>Apache Royale: Royale Maven Plugin</name>
+
+  <properties>
+    <maven.version>3.3.1</maven.version>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>javax.inject</groupId>
+      <artifactId>javax.inject</artifactId>
+      <version>1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-plugin-api</artifactId>
+      <version>${maven.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
+      <version>3.4</version>
+      <scope>provided</scope>
+    </dependency>
+
+    <!-- Apache Velocity templating engine for generating config files -->
+    <dependency>
+      <groupId>org.apache.velocity</groupId>
+      <artifactId>velocity</artifactId>
+      <version>1.7</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-project</artifactId>
+      <version>2.2.1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-core</artifactId>
+      <version>${maven.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.shared</groupId>
+      <artifactId>file-management</artifactId>
+      <version>3.0.0</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
+      <version>2.4</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-lang3</artifactId>
+      <version>3.4</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.flex</groupId>
+      <artifactId>flex-tool-api</artifactId>
+      <version>1.0.0</version>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-plugin-plugin</artifactId>
+        <version>3.6.0</version>
+        <configuration>
+          <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
+        </configuration>
+        <executions>
+          <execution>
+            <id>mojo-descriptor</id>
+            <goals>
+              <goal>descriptor</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>help-goal</id>
+            <goals>
+              <goal>helpmojo</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.sonatype.plugins</groupId>
+        <artifactId>sisu-maven-plugin</artifactId>
+        <version>1.4</version>
+        <executions>
+          <execution>
+            <id>generate-index</id>
+            <goals>
+              <goal>main-index</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/royaleunit-ant-tasks/pom.xml b/royaleunit-ant-tasks/pom.xml
index 1537bf8..102298e 100644
--- a/royaleunit-ant-tasks/pom.xml
+++ b/royaleunit-ant-tasks/pom.xml
@@ -1,83 +1,83 @@
-<?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.
-
---><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.royale.compiler</groupId>
-    <artifactId>royale-compiler-parent</artifactId>
-    <version>0.9.9-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>royaleunit-ant-tasks</artifactId>
-  <version>0.9.9-SNAPSHOT</version>
-
-  <name>Apache Royale: RoyaleUnit Ant Tasks</name>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-jar-plugin</artifactId>
-        <configuration>
-          <archive>
-            <manifestEntries>
-              <!-- These paths are all defined the way the layout will be in the distribution -->
-              <Class-Path>dom4j.jar java-websocket.jar slf4j-api.jar</Class-Path>
-            </manifestEntries>
-          </archive>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.ant</groupId>
-      <artifactId>ant</artifactId>
-      <version>1.7.0</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.ant</groupId>
-      <artifactId>ant-launcher</artifactId>
-      <version>1.7.0</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.ant</groupId>
-      <artifactId>ant-testutil</artifactId>
-      <version>1.7.0</version>
-    </dependency>
-    <dependency>
-      <groupId>dom4j</groupId>
-      <artifactId>dom4j</artifactId>
-      <version>1.6.1</version>
-    </dependency>
-    <dependency>
-      <groupId>org.java-websocket</groupId>
-      <artifactId>Java-WebSocket</artifactId>
-      <version>1.4.0</version>
-    </dependency>
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-simple</artifactId>
-      <version>1.7.25</version>
-    </dependency>
-  </dependencies>
-
-<properties /></project>
+<?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.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.royale.compiler</groupId>
+    <artifactId>royale-compiler-parent</artifactId>
+    <version>0.9.8-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>royaleunit-ant-tasks</artifactId>
+  <version>0.9.8-SNAPSHOT</version>
+
+  <name>Apache Royale: RoyaleUnit Ant Tasks</name>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <configuration>
+          <archive>
+            <manifestEntries>
+              <!-- These paths are all defined the way the layout will be in the distribution -->
+              <Class-Path>dom4j.jar java-websocket.jar slf4j-api.jar</Class-Path>
+            </manifestEntries>
+          </archive>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.ant</groupId>
+      <artifactId>ant</artifactId>
+      <version>1.7.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.ant</groupId>
+      <artifactId>ant-launcher</artifactId>
+      <version>1.7.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.ant</groupId>
+      <artifactId>ant-testutil</artifactId>
+      <version>1.7.0</version>
+    </dependency>
+    <dependency>
+      <groupId>dom4j</groupId>
+      <artifactId>dom4j</artifactId>
+      <version>1.6.1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.java-websocket</groupId>
+      <artifactId>Java-WebSocket</artifactId>
+      <version>1.4.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <version>1.7.25</version>
+    </dependency>
+  </dependencies>
+
+<properties /></project>
diff --git a/swfutils/pom.xml b/swfutils/pom.xml
index dac34bb..7e3b4d7 100644
--- a/swfutils/pom.xml
+++ b/swfutils/pom.xml
@@ -1,34 +1,34 @@
-<?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.
-
---><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.royale.compiler</groupId>
-    <artifactId>royale-compiler-parent</artifactId>
-    <version>0.9.9-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>swfutils</artifactId>
-  <version>0.9.9-SNAPSHOT</version>
-
-  <name>Apache Royale: Compiler: SWFUtils</name>
-  <description>The Apache Royale Compiler SWF Utility classes</description>
-
-<properties /></project>
+<?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.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.royale.compiler</groupId>
+    <artifactId>royale-compiler-parent</artifactId>
+    <version>0.9.8-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>swfutils</artifactId>
+  <version>0.9.8-SNAPSHOT</version>
+
+  <name>Apache Royale: Compiler: SWFUtils</name>
+  <description>The Apache Royale Compiler SWF Utility classes</description>
+
+<properties /></project>
