diff --git a/compiler-common/pom.xml b/compiler-common/pom.xml
index dc7cc9e..1bf0f02 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.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>
+<?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 77fdbbc..f815008 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.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>
+<?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-playerglobalc/pom.xml b/compiler-playerglobalc/pom.xml
index d390a8b..2e909d6 100644
--- a/compiler-playerglobalc/pom.xml
+++ b/compiler-playerglobalc/pom.xml
@@ -16,9 +16,7 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 
---><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">
+--><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>
diff --git a/compiler-test-utils/pom.xml b/compiler-test-utils/pom.xml
index abf04f4..919bc92 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.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>
+<?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 1fbaab1..ff129a4 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.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>
+<?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 b3ae60b..243cd1a 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.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>
+<?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 a9b69f9..22c6af8 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.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>
+<?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 c1c641d..f4360a9 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.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>
+<?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>release/0.9.8</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-07-25T04:32:37Z</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 6a4d17d..fb0ad3d 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.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>
+<?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 8b56c31..060e32a 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.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>
+<?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 102298e..1c6cd78 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.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>
+<?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 7e3b4d7..8bacfb9 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.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>
+<?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>
