Re-tag releases/2.5@11495 as 2.5.0 GA

git-svn-id: https://google-web-toolkit.googlecode.com/svn/tags/2.5.0@11500 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/build-tools/ant-gwt/build.xml b/build-tools/ant-gwt/build.xml
deleted file mode 100644
index bec9154..0000000
--- a/build-tools/ant-gwt/build.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<project name="ant-gwt" default="build" basedir=".">
-  <property name="gwt.root" location="../.." />
-  <property name="project.tail" value="build-tools/ant-gwt" />
-  <import file="${gwt.root}/common.ant.xml" />
-
-  <property name="gwt.junit.testcase.antgwt.includes" value="**/*Test.class" />
-  <property name="gwt.junit.testcase.antgwt.excludes" value="" />
-
-  <target name="compile" description="Compiles this project">
-    <mkdir dir="${javac.out}" />
-    <gwt.javac>
-      <classpath>
-        <pathelement location="${gwt.tools.lib}/apache/ant-1.6.5.jar" />
-      </classpath>
-    </gwt.javac>
-  </target>
-
-  <target name="compile.tests" depends="build, compile.emma.if.enabled" description="Compiles the test code for this project">
-    <mkdir dir="${javac.junit.out}" />
-    <gwt.javac srcdir="test" destdir="${javac.junit.out}">
-      <classpath>
-        <pathelement location="${javac.out}" />
-        <pathelement location="${gwt.tools.lib}/junit/junit-4.8.2.jar" />
-      </classpath>
-    </gwt.javac>
-  </target>
-
-  <target name="build" depends="compile" description="Packages this project into a jar">
-    <mkdir dir="${gwt.build.lib}" />
-    <!-- we can't use the gwt.jar macro, as it needs the gwt-ant.jar being packaged here -->
-    <jar destfile="${gwt.build.lib}/${ant.project.name}.jar" duplicate="fail" filesonly="true" 
-         index="true" update="true">
-      <fileset dir="${javac.out}" />
-      <fileset dir="src" />
-    </jar>
-  </target>
-
-  <target name="test" depends="build, compile.tests" description="Run unit tests for this project.">
-    <fileset id="tests.antgwt" dir="${javac.junit.out}" includes="${gwt.junit.testcase.antgwt.includes}" excludes="${gwt.junit.testcase.antgwt.excludes}" />
-    <gwt.junit test.name="ant-gwt" test.out="${junit.out}"
-        test.cases="tests.antgwt" />
-  </target>
-
-  <target name="checkstyle" description="Static analysis of source">
-    <gwt.checkstyle>
-      <fileset dir="src" />
-    </gwt.checkstyle>
-  </target>
-
-  <target name="clean" description="Cleans this project's intermediate and output files">
-    <delete dir="${project.build}" />
-    <delete file="${project.lib}" />
-  </target>
-
-</project>
diff --git a/build-tools/build.xml b/build-tools/build.xml
deleted file mode 100644
index beef5b9..0000000
--- a/build-tools/build.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<project name="buildtools" default="build" basedir=".">
-  <property name="gwt.root" location=".." />
-  <property name="project.tail" value="build-tools" />
-  <import file="${gwt.root}/common.ant.xml" />
-
-  <!-- "build" is the default when subprojects are directly targetted -->
-  <property name="target" value="build" />
-
-  <target name="ant-gwt" description="Builds GWT specific Ant extensions">
-    <gwt.ant dir="ant-gwt" />
-  </target>
-
-  <target name="doctool" description="Build the doctool">
-    <gwt.ant dir="doctool" />
-  </target>
-
-  <target name="-do" depends="ant-gwt, doctool" description="Run all subprojects"/>
-  
-  <target name="build" description="Builds GWT">
-    <antcall target="-do">
-      <param name="target" value="build" />
-    </antcall>
-  </target>
-
-  <target name="checkstyle" depends="build" description="Static analysis of GWT source">
-    <antcall target="-do">
-      <param name="target" value="checkstyle" />
-    </antcall>
-  </target>
-
-  <target name="test" depends="build" description="Test GWT">
-    <antcall target="-do">
-      <param name="target" value="test" />
-    </antcall>
-  </target>
-</project>
diff --git a/build-tools/doctool/build.xml b/build-tools/doctool/build.xml
deleted file mode 100644
index bc9cbbd..0000000
--- a/build-tools/doctool/build.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<project name="doctool" default="build" basedir=".">
-  <property name="gwt.root" location="../.." />
-  <property name="project.tail" value="build-tools/doctool" />
-  <import file="${gwt.root}/common.ant.xml" />
-
-  <property.ensure name="java.tools.path" location="${java.home}/../lib/tools.jar" unless="build.host.ismac" message="Cannot find ${java.home}/../lib/tools.jar; please use a JDK when building doc rather than a JRE." />
-
-  <target name="compile" description="Compiles this project">
-    <mkdir dir="${javac.out}" />
-    <gwt.javac>
-      <classpath>
-        <pathelement location="${java.tools.path}" />
-      </classpath>
-    </gwt.javac>
-  </target>
-
-  <target name="build" depends="compile" description="Packages this project into a jar">
-    <mkdir dir="${gwt.build.lib}" />
-    <gwt.jar>
-      <fileset dir="src" />
-      <fileset dir="${javac.out}" />
-    </gwt.jar>
-  </target>
-
-  <target name="checkstyle" description="Static analysis of source">
-    <gwt.checkstyle>
-      <fileset dir="src" />
-    </gwt.checkstyle>
-  </target>
-
-  <target name="clean" description="Cleans this project's intermediate and output files">
-    <delete dir="${project.build}" />
-    <delete file="${project.lib}" />
-  </target>
-
-</project>
diff --git a/build.xml b/build.xml
index 37d6f9c..57903e6 100755
--- a/build.xml
+++ b/build.xml
@@ -107,7 +107,7 @@
   </target>
 
   <target name="buildtools" description="[subdir] Build (or runs ${target} if set) the build tools">
-    <gwt.ant dir="build-tools" />
+    <gwt.ant dir="build_tools" />
   </target>
 
   <target name="build" description="[action] Builds GWT, including samples, but without distro packaging">
@@ -128,6 +128,8 @@
     <call-subproject subproject="user" subtarget="checkstyle" />
     <call-subproject subproject="requestfactory" subtarget="checkstyle" />
     <call-subproject subproject="servlet" subtarget="checkstyle" />
+    <!-- servlet needed for tools/benchmark-viewer -->
+    <call-subproject subproject="servlet" subtarget="build" /> 
     <call-subproject subproject="tools" subtarget="checkstyle" />
     <call-subproject subproject="samples" subtarget="checkstyle" />
   </target>
@@ -158,7 +160,7 @@
   <path id="emma.classpath.src">
     <pathelement location="${gwt.root}/user/src" />
     <pathelement location="${gwt.root}/dev/**/src/com/google" />
-    <pathelement location="${gwt.root}/build-tools/**/src/com/google" />
+    <pathelement location="${gwt.root}/build_tools/**/src/com/google" />
     <pathelement location="${gwt.root}/tools/**/src/com/google" />
   </path>
 
diff --git a/build_tools/ant_gwt/build.xml b/build_tools/ant_gwt/build.xml
new file mode 100644
index 0000000..cf6d29a
--- /dev/null
+++ b/build_tools/ant_gwt/build.xml
@@ -0,0 +1,55 @@
+<project name="ant-gwt" default="build" basedir=".">
+  <property name="gwt.root" location="../.." />
+  <property name="project.tail" value="build_tools/ant_gwt" />
+  <import file="${gwt.root}/common.ant.xml" />
+
+  <property name="gwt.junit.testcase.antgwt.includes" value="**/*Test.class" />
+  <property name="gwt.junit.testcase.antgwt.excludes" value="" />
+
+  <target name="compile" description="Compiles this project">
+    <mkdir dir="${javac.out}" />
+    <gwt.javac>
+      <classpath>
+        <pathelement location="${gwt.tools.lib}/apache/ant-1.6.5.jar" />
+      </classpath>
+    </gwt.javac>
+  </target>
+
+  <target name="compile.tests" depends="build, compile.emma.if.enabled" description="Compiles the test code for this project">
+    <mkdir dir="${javac.junit.out}" />
+    <gwt.javac srcdir="test" destdir="${javac.junit.out}" includeantruntime="true">
+      <classpath>
+        <pathelement location="${javac.out}" />
+        <pathelement location="${gwt.tools.lib}/junit/junit-4.8.2.jar" />
+      </classpath>
+    </gwt.javac>
+  </target>
+
+  <target name="build" depends="compile" description="Packages this project into a jar">
+    <mkdir dir="${gwt.build.lib}" />
+    <!-- we can't use the gwt.jar macro, as it needs the gwt-ant.jar being packaged here -->
+    <jar destfile="${gwt.build.lib}/${ant.project.name}.jar" duplicate="fail" filesonly="true" 
+         index="true" update="true">
+      <fileset dir="${javac.out}" />
+      <fileset dir="src" />
+    </jar>
+  </target>
+
+  <target name="test" depends="build, compile.tests" description="Run unit tests for this project.">
+    <fileset id="tests.antgwt" dir="${javac.junit.out}" includes="${gwt.junit.testcase.antgwt.includes}" excludes="${gwt.junit.testcase.antgwt.excludes}" />
+    <gwt.junit test.name="ant-gwt" test.out="${junit.out}"
+        test.cases="tests.antgwt" />
+  </target>
+
+  <target name="checkstyle" description="Static analysis of source">
+    <gwt.checkstyle>
+      <fileset dir="src" />
+    </gwt.checkstyle>
+  </target>
+
+  <target name="clean" description="Cleans this project's intermediate and output files">
+    <delete dir="${project.build}" />
+    <delete file="${project.lib}" />
+  </target>
+
+</project>
diff --git a/build-tools/ant-gwt/src/com/google/gwt/ant/taskdefs/CommandRunner.java b/build_tools/ant_gwt/src/com/google/gwt/ant/taskdefs/CommandRunner.java
similarity index 100%
rename from build-tools/ant-gwt/src/com/google/gwt/ant/taskdefs/CommandRunner.java
rename to build_tools/ant_gwt/src/com/google/gwt/ant/taskdefs/CommandRunner.java
diff --git a/build-tools/ant-gwt/src/com/google/gwt/ant/taskdefs/LatestTimeJar.java b/build_tools/ant_gwt/src/com/google/gwt/ant/taskdefs/LatestTimeJar.java
similarity index 100%
rename from build-tools/ant-gwt/src/com/google/gwt/ant/taskdefs/LatestTimeJar.java
rename to build_tools/ant_gwt/src/com/google/gwt/ant/taskdefs/LatestTimeJar.java
diff --git a/build-tools/ant-gwt/src/com/google/gwt/ant/taskdefs/SvnInfo.java b/build_tools/ant_gwt/src/com/google/gwt/ant/taskdefs/SvnInfo.java
similarity index 100%
rename from build-tools/ant-gwt/src/com/google/gwt/ant/taskdefs/SvnInfo.java
rename to build_tools/ant_gwt/src/com/google/gwt/ant/taskdefs/SvnInfo.java
diff --git a/build-tools/ant-gwt/src/com/google/gwt/ant/taskdefs/TarCat.java b/build_tools/ant_gwt/src/com/google/gwt/ant/taskdefs/TarCat.java
similarity index 100%
rename from build-tools/ant-gwt/src/com/google/gwt/ant/taskdefs/TarCat.java
rename to build_tools/ant_gwt/src/com/google/gwt/ant/taskdefs/TarCat.java
diff --git a/build-tools/ant-gwt/src/com/google/gwt/ant/taskdefs/Timer.java b/build_tools/ant_gwt/src/com/google/gwt/ant/taskdefs/Timer.java
similarity index 100%
rename from build-tools/ant-gwt/src/com/google/gwt/ant/taskdefs/Timer.java
rename to build_tools/ant_gwt/src/com/google/gwt/ant/taskdefs/Timer.java
diff --git a/build-tools/ant-gwt/test/com/google/gwt/ant/taskdefs/CommandRunnerTest.java b/build_tools/ant_gwt/test/com/google/gwt/ant/taskdefs/CommandRunnerTest.java
similarity index 100%
rename from build-tools/ant-gwt/test/com/google/gwt/ant/taskdefs/CommandRunnerTest.java
rename to build_tools/ant_gwt/test/com/google/gwt/ant/taskdefs/CommandRunnerTest.java
diff --git a/build-tools/ant-gwt/test/com/google/gwt/ant/taskdefs/SvnInfoTest.java b/build_tools/ant_gwt/test/com/google/gwt/ant/taskdefs/SvnInfoTest.java
similarity index 100%
rename from build-tools/ant-gwt/test/com/google/gwt/ant/taskdefs/SvnInfoTest.java
rename to build_tools/ant_gwt/test/com/google/gwt/ant/taskdefs/SvnInfoTest.java
diff --git a/build_tools/build.xml b/build_tools/build.xml
new file mode 100644
index 0000000..a1f6576
--- /dev/null
+++ b/build_tools/build.xml
@@ -0,0 +1,36 @@
+<project name="buildtools" default="build" basedir=".">
+  <property name="gwt.root" location=".." />
+  <property name="project.tail" value="build_tools" />
+  <import file="${gwt.root}/common.ant.xml" />
+
+  <!-- "build" is the default when subprojects are directly targetted -->
+  <property name="target" value="build" />
+
+  <target name="ant_gwt" description="Builds GWT specific Ant extensions">
+    <gwt.ant dir="ant_gwt" />
+  </target>
+
+  <target name="doctool" description="Build the doctool">
+    <gwt.ant dir="doctool" />
+  </target>
+
+  <target name="-do" depends="ant_gwt, doctool" description="Run all subprojects"/>
+  
+  <target name="build" description="Builds GWT">
+    <antcall target="-do">
+      <param name="target" value="build" />
+    </antcall>
+  </target>
+
+  <target name="checkstyle" depends="build" description="Static analysis of GWT source">
+    <antcall target="-do">
+      <param name="target" value="checkstyle" />
+    </antcall>
+  </target>
+
+  <target name="test" depends="build" description="Test GWT">
+    <antcall target="-do">
+      <param name="target" value="test" />
+    </antcall>
+  </target>
+</project>
diff --git a/build_tools/doctool/build.xml b/build_tools/doctool/build.xml
new file mode 100644
index 0000000..c8d5d79
--- /dev/null
+++ b/build_tools/doctool/build.xml
@@ -0,0 +1,36 @@
+<project name="doctool" default="build" basedir=".">
+  <property name="gwt.root" location="../.." />
+  <property name="project.tail" value="build_tools/doctool" />
+  <import file="${gwt.root}/common.ant.xml" />
+
+  <property.ensure name="java.tools.path" location="${java.home}/../lib/tools.jar" unless="build.host.ismac" message="Cannot find ${java.home}/../lib/tools.jar; please use a JDK when building doc rather than a JRE." />
+
+  <target name="compile" description="Compiles this project">
+    <mkdir dir="${javac.out}" />
+    <gwt.javac>
+      <classpath>
+        <pathelement location="${java.tools.path}" />
+      </classpath>
+    </gwt.javac>
+  </target>
+
+  <target name="build" depends="compile" description="Packages this project into a jar">
+    <mkdir dir="${gwt.build.lib}" />
+    <gwt.jar>
+      <fileset dir="src" />
+      <fileset dir="${javac.out}" />
+    </gwt.jar>
+  </target>
+
+  <target name="checkstyle" description="Static analysis of source">
+    <gwt.checkstyle>
+      <fileset dir="src" />
+    </gwt.checkstyle>
+  </target>
+
+  <target name="clean" description="Cleans this project's intermediate and output files">
+    <delete dir="${project.build}" />
+    <delete file="${project.lib}" />
+  </target>
+
+</project>
diff --git a/build-tools/doctool/src/booklet.xsd b/build_tools/doctool/src/booklet.xsd
similarity index 100%
rename from build-tools/doctool/src/booklet.xsd
rename to build_tools/doctool/src/booklet.xsd
diff --git a/build-tools/doctool/src/com/google/doctool/Booklet.java b/build_tools/doctool/src/com/google/doctool/Booklet.java
similarity index 100%
rename from build-tools/doctool/src/com/google/doctool/Booklet.java
rename to build_tools/doctool/src/com/google/doctool/Booklet.java
diff --git a/build-tools/doctool/src/com/google/doctool/DocTool.java b/build_tools/doctool/src/com/google/doctool/DocTool.java
similarity index 100%
rename from build-tools/doctool/src/com/google/doctool/DocTool.java
rename to build_tools/doctool/src/com/google/doctool/DocTool.java
diff --git a/build-tools/doctool/src/com/google/doctool/DocToolFactory.java b/build_tools/doctool/src/com/google/doctool/DocToolFactory.java
similarity index 100%
rename from build-tools/doctool/src/com/google/doctool/DocToolFactory.java
rename to build_tools/doctool/src/com/google/doctool/DocToolFactory.java
diff --git a/build-tools/doctool/src/com/google/doctool/JreDocTool.java b/build_tools/doctool/src/com/google/doctool/JreDocTool.java
similarity index 100%
rename from build-tools/doctool/src/com/google/doctool/JreDocTool.java
rename to build_tools/doctool/src/com/google/doctool/JreDocTool.java
diff --git a/build-tools/doctool/src/com/google/doctool/JreDocToolFactory.java b/build_tools/doctool/src/com/google/doctool/JreDocToolFactory.java
similarity index 100%
rename from build-tools/doctool/src/com/google/doctool/JreDocToolFactory.java
rename to build_tools/doctool/src/com/google/doctool/JreDocToolFactory.java
diff --git a/build-tools/doctool/src/com/google/doctool/LinkResolver.java b/build_tools/doctool/src/com/google/doctool/LinkResolver.java
similarity index 100%
rename from build-tools/doctool/src/com/google/doctool/LinkResolver.java
rename to build_tools/doctool/src/com/google/doctool/LinkResolver.java
diff --git a/build-tools/doctool/src/com/google/doctool/ResourceIncluder.java b/build_tools/doctool/src/com/google/doctool/ResourceIncluder.java
similarity index 100%
rename from build-tools/doctool/src/com/google/doctool/ResourceIncluder.java
rename to build_tools/doctool/src/com/google/doctool/ResourceIncluder.java
diff --git a/build-tools/doctool/src/com/google/doctool/SplitterJoiner.java b/build_tools/doctool/src/com/google/doctool/SplitterJoiner.java
similarity index 100%
rename from build-tools/doctool/src/com/google/doctool/SplitterJoiner.java
rename to build_tools/doctool/src/com/google/doctool/SplitterJoiner.java
diff --git a/build-tools/doctool/src/com/google/doctool/custom/ExampleTaglet.java b/build_tools/doctool/src/com/google/doctool/custom/ExampleTaglet.java
similarity index 100%
rename from build-tools/doctool/src/com/google/doctool/custom/ExampleTaglet.java
rename to build_tools/doctool/src/com/google/doctool/custom/ExampleTaglet.java
diff --git a/build-tools/doctool/src/com/google/doctool/custom/EztDoclet.java b/build_tools/doctool/src/com/google/doctool/custom/EztDoclet.java
similarity index 100%
rename from build-tools/doctool/src/com/google/doctool/custom/EztDoclet.java
rename to build_tools/doctool/src/com/google/doctool/custom/EztDoclet.java
diff --git a/build-tools/doctool/src/com/google/doctool/custom/FindPackages.java b/build_tools/doctool/src/com/google/doctool/custom/FindPackages.java
similarity index 100%
rename from build-tools/doctool/src/com/google/doctool/custom/FindPackages.java
rename to build_tools/doctool/src/com/google/doctool/custom/FindPackages.java
diff --git a/build-tools/doctool/src/com/google/doctool/custom/GWTJavaDoclet.java b/build_tools/doctool/src/com/google/doctool/custom/GWTJavaDoclet.java
similarity index 100%
rename from build-tools/doctool/src/com/google/doctool/custom/GWTJavaDoclet.java
rename to build_tools/doctool/src/com/google/doctool/custom/GWTJavaDoclet.java
diff --git a/build-tools/doctool/src/com/google/doctool/custom/IncludeTaglet.java b/build_tools/doctool/src/com/google/doctool/custom/IncludeTaglet.java
similarity index 100%
rename from build-tools/doctool/src/com/google/doctool/custom/IncludeTaglet.java
rename to build_tools/doctool/src/com/google/doctool/custom/IncludeTaglet.java
diff --git a/build-tools/doctool/src/com/google/doctool/custom/TipTaglet.java b/build_tools/doctool/src/com/google/doctool/custom/TipTaglet.java
similarity index 100%
rename from build-tools/doctool/src/com/google/doctool/custom/TipTaglet.java
rename to build_tools/doctool/src/com/google/doctool/custom/TipTaglet.java
diff --git a/build-tools/doctool/src/doc-topics.xslt b/build_tools/doctool/src/doc-topics.xslt
similarity index 100%
rename from build-tools/doctool/src/doc-topics.xslt
rename to build_tools/doctool/src/doc-topics.xslt
diff --git a/build-tools/doctool/src/doc.css b/build_tools/doctool/src/doc.css
similarity index 100%
rename from build-tools/doctool/src/doc.css
rename to build_tools/doctool/src/doc.css
diff --git a/build-tools/doctool/src/java-topics.xslt b/build_tools/doctool/src/java-topics.xslt
similarity index 100%
rename from build-tools/doctool/src/java-topics.xslt
rename to build_tools/doctool/src/java-topics.xslt
diff --git a/build-tools/doctool/src/javascript-topics.xslt b/build_tools/doctool/src/javascript-topics.xslt
similarity index 100%
rename from build-tools/doctool/src/javascript-topics.xslt
rename to build_tools/doctool/src/javascript-topics.xslt
diff --git a/build-tools/doctool/src/topics-hhc.xslt b/build_tools/doctool/src/topics-hhc.xslt
similarity index 100%
rename from build-tools/doctool/src/topics-hhc.xslt
rename to build_tools/doctool/src/topics-hhc.xslt
diff --git a/build-tools/doctool/src/topics-hhk.xslt b/build_tools/doctool/src/topics-hhk.xslt
similarity index 100%
rename from build-tools/doctool/src/topics-hhk.xslt
rename to build_tools/doctool/src/topics-hhk.xslt
diff --git a/build-tools/doctool/src/topics-hhp.xslt b/build_tools/doctool/src/topics-hhp.xslt
similarity index 100%
rename from build-tools/doctool/src/topics-hhp.xslt
rename to build_tools/doctool/src/topics-hhp.xslt
diff --git a/build-tools/doctool/src/topics-htmls.xslt b/build_tools/doctool/src/topics-htmls.xslt
similarity index 100%
rename from build-tools/doctool/src/topics-htmls.xslt
rename to build_tools/doctool/src/topics-htmls.xslt
diff --git a/build-tools/doctool/src/topics-index.xslt b/build_tools/doctool/src/topics-index.xslt
similarity index 100%
rename from build-tools/doctool/src/topics-index.xslt
rename to build_tools/doctool/src/topics-index.xslt
diff --git a/build-tools/doctool/src/topics-toc.xslt b/build_tools/doctool/src/topics-toc.xslt
similarity index 100%
rename from build-tools/doctool/src/topics-toc.xslt
rename to build_tools/doctool/src/topics-toc.xslt
diff --git a/build-tools/doctool/src/topics.xsd b/build_tools/doctool/src/topics.xsd
similarity index 100%
rename from build-tools/doctool/src/topics.xsd
rename to build_tools/doctool/src/topics.xsd
diff --git a/build-tools/drtool/BuildGlobalTOC.py b/build_tools/drtool/BuildGlobalTOC.py
old mode 100644
new mode 100755
similarity index 100%
rename from build-tools/drtool/BuildGlobalTOC.py
rename to build_tools/drtool/BuildGlobalTOC.py
diff --git a/build-tools/drtool/TOCNode.py b/build_tools/drtool/TOCNode.py
old mode 100644
new mode 100755
similarity index 100%
rename from build-tools/drtool/TOCNode.py
rename to build_tools/drtool/TOCNode.py
diff --git a/build-tools/drtool/drtool.py b/build_tools/drtool/drtool.py
similarity index 100%
rename from build-tools/drtool/drtool.py
rename to build_tools/drtool/drtool.py
diff --git a/dev/build.xml b/dev/build.xml
index 0ea5528..6b10f1c 100755
--- a/dev/build.xml
+++ b/dev/build.xml
@@ -34,7 +34,6 @@
       excludes="**/super/**">
       <classpath>
         <pathelement location="${javac.out}" />
-        <pathelement location="${gwt.tools.lib}/tomcat/servlet-api-2.5.jar" />
         <pathelement location="${gwt.tools.lib}/junit/junit-4.8.2.jar" />
         <pathelement location="${gwt.tools.lib}/jfreechart/jfreechart-1.0.3.jar" />
         <pathelement location="${gwt.tools.lib}/selenium/selenium-java-client-driver.jar" />
@@ -61,35 +60,15 @@
           <include name="guava/guava-10.0.1/guava-10.0.1-rebased.jar" />
           <include name="jscomp/r1649/compiler-rebased.jar" />
           <include name="jetty/jetty-6.1.11.jar" />
-          <include name="icu4j/4.4.2/icu4j.jar" />
+          <include name="icu4j/50.1.1/icu4j.jar" />
           <include name="protobuf/protobuf-2.2.0/protobuf-java-rebased-2.2.0.jar" />
-          <include name="tomcat/ant-launcher-1.6.5.jar" />
-          <include name="tomcat/catalina-1.0.jar" />
-          <include name="tomcat/catalina-optional-1.0.jar" />
-          <include name="tomcat/commons-beanutils-1.6.jar" />
-          <include name="tomcat/commons-collections-3.1.jar" />
-          <include name="tomcat/commons-digester-1.5.jar" />
+          <!-- dependencies needed for JSP support in DevMode: BEGIN -->
           <include name="tomcat/commons-el-1.0.jar" />
-          <include name="tomcat/commons-logging-1.0.jar" />
-          <include name="tomcat/commons-modeler-1.1.jar" />
-          <include name="tomcat/jakarta-regexp-1.3.jar" />
           <include name="tomcat/jasper-compiler-1.0.jar" />
           <include name="tomcat/jasper-runtime-1.0.jar" />
           <include name="tomcat/jsp-api-2.0.jar" />
-          <include name="tomcat/mx4j-jmx-1.1.jar" />
-          <include name="tomcat/naming-common-1.0.jar" />
-          <include name="tomcat/naming-factory-1.0.jar" />
-          <include name="tomcat/naming-java-1.0.jar" />
-          <include name="tomcat/naming-resources-1.0.jar" />
-          <include name="tomcat/servlet-api-2.5.jar" />
-          <include name="tomcat/servlet-api-2.4.jar" />
-          <include name="tomcat/servlets-common-1.0.jar" />
-          <include name="tomcat/servlets-default-1.0.jar" />
-          <include name="tomcat/servlets-invoker-1.0.jar" />
-          <include name="tomcat/tomcat-coyote-1.0.jar" />
-          <include name="tomcat/tomcat-http11-1.0.jar" />
-          <include name="tomcat/tomcat-jk2-2.1.jar" />
-          <include name="tomcat/tomcat-util-5.1.jar" />
+          <!-- dependencies needed for JSP support in DevMode: END -->
+          <include name="apache/commons/commons-collections-3.2.1.jar" />
           <!-- htmlunit dependencies not already included: BEGIN -->
           <include name="apache/http/httpclient-4.1.2.jar" />
           <include name="apache/http/httpcore-4.1.2.jar" />
@@ -98,6 +77,7 @@
           <include name="apache/commons/commons-codec-1.3.jar" />
           <include name="apache/commons/commons-io-1.4.jar" />
           <include name="apache/commons/commons-lang-2.6.jar" />
+          <include name="apache/commons/commons-logging-1.1.1.jar" />
           <include name="cssparser/cssparser-0.9.5.jar" />
           <include name="htmlunit/htmlunit-2.9/htmlunit-v2.9.jar" />
           <include name="htmlunit/htmlunit-2.9/htmlunit-core-js-v2.9.jar" />
@@ -129,35 +109,15 @@
           <zipfileset src="${gwt.tools.lib}/guava/guava-10.0.1/guava-10.0.1-rebased.jar" />
           <zipfileset src="${gwt.tools.lib}/jscomp/r1649/compiler-rebased.jar" />
           <zipfileset src="${gwt.tools.lib}/jetty/jetty-6.1.11.jar" />
-          <zipfileset src="${gwt.tools.lib}/icu4j/4.4.2/icu4j.jar" />
+          <zipfileset src="${gwt.tools.lib}/icu4j/50.1.1/icu4j.jar" />
           <zipfileset src="${gwt.tools.lib}/protobuf/protobuf-2.2.0/protobuf-java-rebased-2.2.0.jar" />
-          <zipfileset src="${gwt.tools.lib}/tomcat/ant-launcher-1.6.5.jar" />
-          <zipfileset src="${gwt.tools.lib}/tomcat/catalina-1.0.jar" />
-          <zipfileset src="${gwt.tools.lib}/tomcat/catalina-optional-1.0.jar" />
-          <zipfileset src="${gwt.tools.lib}/tomcat/commons-beanutils-1.6.jar" />
-          <zipfileset src="${gwt.tools.lib}/tomcat/commons-collections-3.1.jar" />
-          <zipfileset src="${gwt.tools.lib}/tomcat/commons-digester-1.5.jar" />
+          <!-- dependencies needed for JSP support in DevMode: BEGIN -->
           <zipfileset src="${gwt.tools.lib}/tomcat/commons-el-1.0.jar" />
-          <zipfileset src="${gwt.tools.lib}/tomcat/commons-logging-1.0.jar" />
-          <zipfileset src="${gwt.tools.lib}/tomcat/commons-modeler-1.1.jar" />
-          <zipfileset src="${gwt.tools.lib}/tomcat/jakarta-regexp-1.3.jar" />
           <zipfileset src="${gwt.tools.lib}/tomcat/jasper-compiler-1.0.jar" />
           <zipfileset src="${gwt.tools.lib}/tomcat/jasper-runtime-1.0.jar" />
           <zipfileset src="${gwt.tools.lib}/tomcat/jsp-api-2.0.jar" />
-          <zipfileset src="${gwt.tools.lib}/tomcat/mx4j-jmx-1.1.jar" />
-          <zipfileset src="${gwt.tools.lib}/tomcat/naming-common-1.0.jar" />
-          <zipfileset src="${gwt.tools.lib}/tomcat/naming-factory-1.0.jar" />
-          <zipfileset src="${gwt.tools.lib}/tomcat/naming-java-1.0.jar" />
-          <zipfileset src="${gwt.tools.lib}/tomcat/naming-resources-1.0.jar" />
-          <zipfileset src="${gwt.tools.lib}/tomcat/servlet-api-2.5.jar" />
-          <zipfileset src="${gwt.tools.lib}/tomcat/servlet-api-2.4.jar" />
-          <zipfileset src="${gwt.tools.lib}/tomcat/servlets-common-1.0.jar" />
-          <zipfileset src="${gwt.tools.lib}/tomcat/servlets-default-1.0.jar" />
-          <zipfileset src="${gwt.tools.lib}/tomcat/servlets-invoker-1.0.jar" />
-          <zipfileset src="${gwt.tools.lib}/tomcat/tomcat-coyote-1.0.jar" />
-          <zipfileset src="${gwt.tools.lib}/tomcat/tomcat-http11-1.0.jar" />
-          <zipfileset src="${gwt.tools.lib}/tomcat/tomcat-jk2-2.1.jar" />
-          <zipfileset src="${gwt.tools.lib}/tomcat/tomcat-util-5.1.jar" />
+          <!-- dependencies needed for JSP support in DevMode: END -->
+          <zipfileset src="${gwt.tools.lib}/apache/commons/commons-collections-3.2.1.jar" />
           <!-- htmlunit dependencies not already included: BEGIN -->
           <zipfileset src="${gwt.tools.lib}/apache/http/httpclient-4.1.2.jar" />
           <zipfileset src="${gwt.tools.lib}/apache/http/httpcore-4.1.2.jar" />
@@ -166,6 +126,7 @@
           <zipfileset src="${gwt.tools.lib}/apache/commons/commons-codec-1.3.jar" />
           <zipfileset src="${gwt.tools.lib}/apache/commons/commons-io-1.4.jar" />
           <zipfileset src="${gwt.tools.lib}/apache/commons/commons-lang-2.6.jar" />
+          <zipfileset src="${gwt.tools.lib}/apache/commons/commons-logging-1.1.1.jar" />
           <zipfileset src="${gwt.tools.lib}/cssparser/cssparser-0.9.5.jar" />
           <zipfileset src="${gwt.tools.lib}/htmlunit/htmlunit-2.9/htmlunit-2.9.jar" />
           <zipfileset src="${gwt.tools.lib}/htmlunit/htmlunit-2.9/htmlunit-core-js-2.9.jar" />
@@ -220,7 +181,7 @@
       <classpath>
           <pathelement location="${gwt.tools.lib}/apache/ant-1.6.5.jar" />
           <pathelement location="${gwt.tools.lib}/eclipse/jdt-3.4.2_r894.jar" />
-          <pathelement location="${gwt.tools.lib}/tomcat/commons-collections-3.1.jar" />
+          <pathelement location="${gwt.tools.lib}/apache/commons/commons-collections-3.2.1.jar" />
           <pathelement location="${gwt.tools.lib}/guava/guava-10.0.1/guava-10.0.1-rebased.jar" />
           <pathelement location="${gwt.tools.lib}/jscomp/r1649/compiler-rebased.jar" />
       </classpath>
diff --git a/dev/codeserver/build.xml b/dev/codeserver/build.xml
index f2c1e8d..52af07f 100755
--- a/dev/codeserver/build.xml
+++ b/dev/codeserver/build.xml
@@ -22,8 +22,8 @@
         <include name="**/*.java"/>
       </fileset>
     </copy>
-    <replace dir="${src}" token="com.google.gwt.thirdparty.org.mortbay.jetty"
-             value="org.mortbay.jetty"/>
+    <replace dir="${src}" token="com.google.gwt.thirdparty.org.mortbay."
+             value="org.mortbay."/>
   </target>
 
   <target name="compile" depends="preprocess">
@@ -41,6 +41,7 @@
       <fileset dir="${javac.out}"/>
       <fileset dir="java">
         <include name="**/*.html"/>
+        <include name="**/*.ico"/>
         <include name="**/*.js"/>
       </fileset>
 
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/CodeServer.java b/dev/codeserver/java/com/google/gwt/dev/codeserver/CodeServer.java
index 6419d86..1d826e6 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/CodeServer.java
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/CodeServer.java
@@ -23,7 +23,6 @@
 
 import java.io.File;
 import java.io.IOException;
-import java.net.InetAddress;
 
 /**
  * <p>This class contains the {@link #main main method} that starts the code server for
@@ -84,8 +83,8 @@
       AppSpace appSpace = AppSpace.create(new File(workDir, moduleName));
 
       Recompiler recompiler = new Recompiler(appSpace, moduleName,
-        options.getSourcePath(), logger);
-      modules.addModuleState(new ModuleState(recompiler, logger));
+          options.getSourcePath(), options.getPreferredHost() + ":" + options.getPort(), logger);
+      modules.addModuleState(new ModuleState(recompiler, logger, options.getNoPrecompile()));
     }
 
     SourceHandler sourceHandler = new SourceHandler(modules, logger);
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/ModuleState.java b/dev/codeserver/java/com/google/gwt/dev/codeserver/ModuleState.java
index 2d46607..32a907e 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/ModuleState.java
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/ModuleState.java
@@ -42,16 +42,22 @@
   private final Recompiler recompiler;
   private final TreeLogger logger;
 
-  ModuleState(Recompiler recompiler, TreeLogger logger)
+  ModuleState(Recompiler recompiler, TreeLogger logger, boolean noPrecompile)
       throws UnableToCompleteException {
     this.recompiler = recompiler;
     this.logger = logger;
 
-    Map<String, String> defaultProps = new HashMap<String, String>();
-    defaultProps.put("user.agent", "safari");
-    defaultProps.put("locale", "en");
-    defaultProps.put("compiler.useSourceMaps", "true");
-    current.set(recompiler.compile(defaultProps));
+    CompileDir compileDir;
+    if (noPrecompile) {
+      compileDir = recompiler.noCompile();
+    } else {
+      Map<String, String> defaultProps = new HashMap<String, String>();
+      defaultProps.put("user.agent", "safari");
+      defaultProps.put("locale", "en");
+      defaultProps.put("compiler.useSourceMaps", "true");
+      compileDir = recompiler.compile(defaultProps);
+    }
+    current.set(compileDir);
   }
 
   /**
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/Options.java b/dev/codeserver/java/com/google/gwt/dev/codeserver/Options.java
index 2924e44..758f645 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/Options.java
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/Options.java
@@ -20,6 +20,7 @@
 import com.google.gwt.util.tools.ArgHandler;
 import com.google.gwt.util.tools.ArgHandlerDir;
 import com.google.gwt.util.tools.ArgHandlerExtra;
+import com.google.gwt.util.tools.ArgHandlerFlag;
 import com.google.gwt.util.tools.ArgHandlerInt;
 import com.google.gwt.util.tools.ArgHandlerString;
 
@@ -35,6 +36,7 @@
  * <p>These flags are EXPERIMENTAL and subject to change.</p>
  */
 public class Options {
+  private boolean noPrecompile = false;
   private File workDir;
   private List<String> moduleNames = new ArrayList<String>();
   private final List<File> sourcePath = new ArrayList<File>();
@@ -66,6 +68,13 @@
   }
 
   /**
+   * Whether the codeServer should start without precompiling modules.
+   */
+  boolean getNoPrecompile() {
+    return noPrecompile;
+  }
+
+  /**
    * The IP address where the code server should listen.
    */
   String getBindAddress() {
@@ -93,6 +102,7 @@
   private class ArgProcessor extends ArgProcessorBase {
 
     public ArgProcessor() {
+      registerHandler(new NoPrecompileFlag());
       registerHandler(new BindAddressFlag());
       registerHandler(new PortFlag());
       registerHandler(new WorkDirFlag());
@@ -107,6 +117,25 @@
 
   }
 
+  public class NoPrecompileFlag extends ArgHandlerFlag {
+
+    @Override
+    public String getTag() {
+      return "-noprecompile";
+    }
+
+    @Override
+    public String getPurpose() {
+      return "Disables pre-compilation of modules.";
+    }
+
+    @Override
+    public boolean setFlag() {
+      noPrecompile = true;
+      return true;
+    }
+  }
+
   private class BindAddressFlag extends ArgHandlerString {
 
     @Override
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/PageUtil.java b/dev/codeserver/java/com/google/gwt/dev/codeserver/PageUtil.java
index 3076afa..8b653d6 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/PageUtil.java
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/PageUtil.java
@@ -20,8 +20,11 @@
 import com.google.gwt.dev.json.JsonObject;
 
 import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -125,7 +128,7 @@
   /**
    * Copies in to out and closes in when done.
    */
-  private static void copyStream(InputStream in, OutputStream out) throws IOException {
+  static void copyStream(InputStream in, OutputStream out) throws IOException {
     try {
       byte[] buffer = new byte[8 * 1024];
       while (true) {
@@ -139,4 +142,27 @@
       in.close();
     }
   }
+
+  /**
+   * Reads a resource into a String.
+   */
+  static String loadResource(Class<?> base, String path) throws IOException {
+    InputStream resourceInputStream = base.getResourceAsStream(path);
+    if (resourceInputStream == null) {
+      throw new IOException("Resource " + path + " not found.");
+    }
+    ByteArrayOutputStream resourceBaos = new ByteArrayOutputStream();
+    copyStream(resourceInputStream, resourceBaos);
+    return resourceBaos.toString("UTF-8");
+  }
+
+  /**
+   * Writes a String to a file.
+   */
+  static void writeFile(String path, String content) throws IOException {
+    InputStream in = new ByteArrayInputStream(content.getBytes("UTF-8"));
+    OutputStream out = new FileOutputStream(path);
+    PageUtil.copyStream(in, out);
+  }
+
 }
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/Recompiler.java b/dev/codeserver/java/com/google/gwt/dev/codeserver/Recompiler.java
index 73cd65c..f6c8b4a 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/Recompiler.java
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/Recompiler.java
@@ -38,6 +38,7 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicReference;
@@ -50,6 +51,7 @@
   private final String originalModuleName;
   private final List<File> sourcePath;
   private final TreeLogger logger;
+  private String serverPrefix;
   private int compilesDone = 0;
 
   // after renaming
@@ -60,11 +62,12 @@
       new AtomicReference<ResourceLoader>();
 
   Recompiler(AppSpace appSpace, String moduleName, List<File> sourcePath,
-      TreeLogger logger) {
+             String serverPrefix, TreeLogger logger) {
     this.appSpace = appSpace;
     this.originalModuleName = moduleName;
     this.sourcePath = sourcePath;
     this.logger = logger;
+    this.serverPrefix = serverPrefix;
   }
 
   synchronized CompileDir compile(Map<String, String> bindingProperties)
@@ -98,6 +101,39 @@
     return compileDir;
   }
 
+  synchronized CompileDir noCompile() throws UnableToCompleteException {
+    long startTime = System.currentTimeMillis();
+    CompileDir compileDir = makeCompileDir(++compilesDone);
+    TreeLogger compileLogger = makeCompileLogger(compileDir);
+
+    ModuleDef module = loadModule(compileLogger, new HashMap<String, String>());
+    String newModuleName = module.getName();  // includes any rename.
+    moduleName.set(newModuleName);
+
+    lastBuild.set(compileDir);
+
+    try {
+      // Prepare directory.
+      File outputDir = new File(
+          compileDir.getWarDir().getCanonicalPath() + "/" + getModuleName());
+      if (!outputDir.exists()) {
+        outputDir.mkdir();
+      }
+
+      // Creates a "module_name.nocache.js" that just forces a recompile.
+      String moduleScript = PageUtil.loadResource(Recompiler.class, "nomodule.nocache.js");
+      moduleScript = moduleScript.replace("__MODULE_NAME__", getModuleName());
+      PageUtil.writeFile(outputDir.getCanonicalPath() + "/" + getModuleName() + ".nocache.js",
+          moduleScript);
+
+    } catch (IOException e) {
+      compileLogger.log(TreeLogger.Type.ERROR, "Error creating uncompiled module.", e);
+    }
+    long elapsedTime = System.currentTimeMillis() - startTime;
+    compileLogger.log(TreeLogger.Type.INFO, "Module setup completed in " + elapsedTime + " ms");
+    return compileDir;
+  }
+
   /**
    * Returns the log from the last compile. (It may be a failed build.)
    */
@@ -137,7 +173,7 @@
     ResourceLoader resources = ResourceLoaders.forClassLoader(Thread.currentThread());
     resources = ResourceLoaders.forPathAndFallback(sourcePath, resources);
     this.resourceLoader.set(resources);
-    
+
     ModuleDef moduleDef =
         ModuleDefLoader.loadFromResources(logger, originalModuleName, resources, true);
 
@@ -175,6 +211,10 @@
     // override computeScriptBase.js to enable the "Compile" button
     overrideConfig(moduleDef, "computeScriptBaseJs",
         "com/google/gwt/dev/codeserver/computeScriptBase.js");
+    // Fix bug with SDM and Chrome 24+ where //@ sourceURL directives cause X-SourceMap header to be ignored
+    // Frustratingly, Chrome won't canonicalize a relative URL
+    overrideConfig(moduleDef, "includeSourceMapUrl", "http://" + serverPrefix +
+        WebServer.sourceMapLocationForModule(moduleDef.getName()));
 
     // If present, set some config properties back to defaults.
     // (Needed for Google's server-side linker.)
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/WebServer.java b/dev/codeserver/java/com/google/gwt/dev/codeserver/WebServer.java
index 7250bcd..b3e5653 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/WebServer.java
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/WebServer.java
@@ -20,23 +20,31 @@
 import com.google.gwt.core.ext.UnableToCompleteException;
 import com.google.gwt.dev.json.JsonArray;
 import com.google.gwt.dev.json.JsonObject;
+import com.google.gwt.thirdparty.org.mortbay.io.Buffer;
 import com.google.gwt.thirdparty.org.mortbay.jetty.HttpConnection;
+import com.google.gwt.thirdparty.org.mortbay.jetty.MimeTypes;
 import com.google.gwt.thirdparty.org.mortbay.jetty.Request;
 import com.google.gwt.thirdparty.org.mortbay.jetty.Server;
 import com.google.gwt.thirdparty.org.mortbay.jetty.handler.AbstractHandler;
 import com.google.gwt.thirdparty.org.mortbay.jetty.nio.SelectChannelConnector;
+import com.google.gwt.thirdparty.org.mortbay.jetty.servlet.FilterHolder;
+import com.google.gwt.thirdparty.org.mortbay.jetty.servlet.ServletHandler;
+import com.google.gwt.thirdparty.org.mortbay.jetty.servlet.ServletHolder;
+import com.google.gwt.thirdparty.org.mortbay.servlet.GzipFilter;
 
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileReader;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.PrintWriter;
-import java.net.URLConnection;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
@@ -74,6 +82,8 @@
   private static final Pattern SAFE_CALLBACK =
       Pattern.compile("([a-zA-Z_][a-zA-Z0-9_]*\\.)*[a-zA-Z_][a-zA-Z0-9_]*");
 
+  private static final MimeTypes MIME_TYPES = new MimeTypes();
+
   private final SourceHandler handler;
 
   private final Modules modules;
@@ -102,13 +112,18 @@
 
     Server server = new Server();
     server.addConnector(connector);
-    server.addHandler(new AbstractHandler() {
+
+    ServletHandler servletHandler = new ServletHandler();
+    servletHandler.addServletWithMapping(new ServletHolder(new HttpServlet() {
       @Override
-      public void handle(String target, HttpServletRequest request,
-          HttpServletResponse response, int port) throws IOException {
-        handleRequest(target, request, response);
+      protected void doGet(HttpServletRequest request, HttpServletResponse response)
+          throws ServletException, IOException {
+        handleRequest(request.getPathInfo(), request, response);
       }
-    });
+    }), "/*");
+    servletHandler.addFilterWithMapping(new FilterHolder(GzipFilter.class),
+        "/*", AbstractHandler.DEFAULT);
+    server.addHandler(servletHandler);
     try {
       server.start();
     } catch (Exception e) {
@@ -196,6 +211,13 @@
     }
 
     if (target.equals("/favicon.ico")) {
+      InputStream faviconStream = getClass().getResourceAsStream("favicon.ico");
+      if (faviconStream != null) {
+        setHandled(request);
+        // IE8 will not load the favicon in an img tag with the default MIME type,
+        // so use "image/x-icon" instead.
+        PageUtil.sendStream("image/x-icon", faviconStream, response);
+      }
       return;
     }
 
@@ -248,15 +270,14 @@
         logger.log(TreeLogger.WARN, "client doesn't accept gzip; bailing");
         return;
       }
-      response.addHeader("Content-Encoding", "gzip");
+      response.setHeader("Content-Encoding", "gzip");
     }
 
-    String mimeType = guessMimeType(target);
     if (target.endsWith(".cache.js")) {
-      response.addHeader("X-SourceMap", SourceHandler.SOURCEMAP_PATH + moduleName +
-          "/gwtSourceMap.json");
+      response.setHeader("X-SourceMap", sourceMapLocationForModule(moduleName));
     }
-    response.addHeader("Access-Control-Allow-Origin", "*");
+    response.setHeader("Access-Control-Allow-Origin", "*");
+    String mimeType = guessMimeType(target);
     PageUtil.sendFile(mimeType, file, response);
   }
 
@@ -355,8 +376,10 @@
     }
   }
 
-  private static String guessMimeType(String filename) {
-    return URLConnection.guessContentTypeFromName(filename);
+  /* visible for testing */
+  static String guessMimeType(String filename) {
+    Buffer mimeType = MIME_TYPES.getMimeByExtension(filename);
+    return mimeType != null ? mimeType.toString() : "";
   }
 
   /**
@@ -374,6 +397,11 @@
     return result;
   }
 
+  public static String sourceMapLocationForModule(String moduleName) {
+     return SourceHandler.SOURCEMAP_PATH + moduleName +
+         "/gwtSourceMap.json";
+  }
+
   private static void setHandled(HttpServletRequest request) {
     Request baseRequest = (request instanceof Request) ? (Request) request :
         HttpConnection.getCurrentConnection().getRequest();
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/dev_mode_on.js b/dev/codeserver/java/com/google/gwt/dev/codeserver/dev_mode_on.js
index 26a2981..a562f9c 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/dev_mode_on.js
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/dev_mode_on.js
@@ -60,13 +60,18 @@
     if (!params) {
       return null;
     }
-    delete window.__gwt_bookmarklet_params;
+    try {
+      delete window.__gwt_bookmarklet_params;
+    } catch (e) {
+      // Delete window.x throws and exception in IE8.
+      window['__gwt_bookmarklet_params'] = null;
+    }
     return params;
   }
 
   function makeOverlay() {
     var overlay = document.createElement('div');
-    overlay.style.zIndex = 1000;
+    overlay.style.zIndex = 1000000;
     overlay.style.position = 'absolute';
     overlay.style.top = 0;
     overlay.style.left = 0;
@@ -79,7 +84,7 @@
 
   function makeDialog() {
     var dialog = document.createElement('div');
-    dialog.style.zIndex = 1001;
+    dialog.style.zIndex = 1000001;
     dialog.style.position = 'fixed';
     dialog.style.top = '20pt';
     dialog.style.left = '20pt';
@@ -100,7 +105,7 @@
     result.style.borderBottom = '1px solid black';
     result.style.padding = '3pt';
     result.setAttribute('href', 'javascript:' + encodeURIComponent(javascript));
-    result.textContent = name;
+    setTextContent(result, name);
     result.title = 'Tip: drag this button to the bookmark bar';
     return result;
   }
@@ -124,8 +129,7 @@
    *     a recompile will succeed.
    */
   function getCannotCompileError(module_name) {
-    var modules_on_codeserver = window.__gwt_codeserver_config.moduleNames;
-    if (modules_on_codeserver.indexOf(module_name) < 0) {
+    if (!isModuleOnCodeServer(module_name)) {
       return 'The code server isn\'t configured to compile this module';
     }
 
@@ -149,6 +153,22 @@
   }
 
   /**
+   * Determines if the code server is configured to run the given module.
+   * @param module_name {string}
+   * @return {boolean} true if the code server supports the given module.
+   */
+  function isModuleOnCodeServer(module_name) {
+    var modules_on_codeserver = window.__gwt_codeserver_config.moduleNames;
+    // Support browsers without indexOf() (e.g. IE8).
+    for (var i = 0; i < modules_on_codeserver.length; i++) {
+      if (modules_on_codeserver[i] == module_name) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  /**
    * Displays the "Choose module to compile" dialog.
    * @param codeserver_url {string} The URL of the code server that will
    *    compile the chosen module.
@@ -158,7 +178,7 @@
     function makeHeader() {
       var message = document.createElement('div');
       message.style.fontSize = '24pt';
-      message.textContent = 'Choose a module to recompile:';
+      setTextContent(message, 'Choose a module to recompile:');
       return message;
     }
 
@@ -245,7 +265,7 @@
 
     var message = document.createElement('div');
     message.style.fontSize = '24pt';
-    message.textContent = text;
+    setTextContent(message, text);
 
     dialog.appendChild(message);
 
@@ -266,14 +286,14 @@
       var error = document.createElement('a');
       error.setAttribute('href', log_url);
       error.setAttribute('target', 'gwt_dev_mode_log');
-      error.innerText = errorText;
+      setTextContent(error, errorText);
       error.style.color = 'red';
       error.style.textDecoration = 'underline';
       message.appendChild(error);
 
       var button = document.createElement('button');
       button.style.fontSize = '16pt';
-      button.textContent = 'Try Again';
+      setTextContent(button, 'Try Again');
       button.onclick = function() {
         body.removeChild(dialog);
         body.removeChild(overlay);
@@ -286,6 +306,20 @@
   }
 
   /**
+   * Updates the contents of the given element with the provided text.
+   * @param {Node} element The element to update.
+   * @param {String} text The text to display.
+   */
+  function setTextContent(element, text) {
+    if (typeof element.textContent === 'string') {
+      element.textContent = text;
+    } else {
+      // Use innerText when textContent is not supported (e.g. IE8).
+      element.innerText = text;
+    }
+  }
+
+  /**
    * Makes a JSONP call. Assumes that the callback parameter is named
    * "callback". Handles multiple callbacks in flight at once.
    * @param {string} url_prefix A URL prefix that ends with '?' or '&'.
@@ -375,6 +409,7 @@
     }
 
     function onCompileFinished(json) {
+      globals.compiling = false;
       if (json.status != 'ok') {
         var log_url = codeserver_url + 'log/' + module_name;
         dialog.showError(json.status, log_url, onClickTryAgain);
@@ -385,6 +420,7 @@
 
     var url_prefix = codeserver_url + 'recompile/' + module_name + '?' +
     getBindingParameters(module_name, get_prop_map);
+    globals.compiling = true;
     callJsonp(url_prefix, onCompileFinished);
   }
 
@@ -394,6 +430,12 @@
    * @param params {map} Parameters passed in by the bookmarklet.
    */
   function runBookmarklet(params) {
+    if (!!globals.compiling) {
+      // A module is already being compiled.
+      // We ignore the bookmarklet: the page will reload once the compilation
+      // ends.
+      return;
+    }
     if (!params || !params.server_url) {
       window.alert('Need to reinstall the bookmarklets.');
       return;
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/directorylist.html b/dev/codeserver/java/com/google/gwt/dev/codeserver/directorylist.html
index b7427a1..afe183b 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/directorylist.html
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/directorylist.html
@@ -18,8 +18,8 @@
   <script>
     function updatePage(config) {
       var title = config.moduleName + " Source (GWT Code Server)";
-      document.getElementsByTagName("title")[0].textContent = title;
-      document.getElementById("title").textContent = title;
+      document.title = title;
+      setTextContent(document.getElementById("title"), title);
 
       document.getElementById("logLink").setAttribute("href", "../log/" + config.moduleName);
       updateFileList(config, document.getElementById("files"));
@@ -31,17 +31,37 @@
 
         var anchor = document.createElement("a");
         anchor.setAttribute("href", dir.link);
-        anchor.textContent = dir.name;
+        setTextContent(anchor, dir.name);
 
         var listItem = document.createElement("li");
         listItem.appendChild(anchor);
         resultElement.appendChild(listItem);
       }
     }
+
+    function setTextContent(element, text) {
+      if (typeof element.textContent === 'string') {
+        element.textContent = text;
+      } else {
+        // Use innerText when textContent is not supported (e.g. IE8).
+        element.innerText = text;
+      }
+    }
+
+    function onPageLoad() {
+      updatePage(config);
+    }
+
+    if (window.addEventListener) {
+      window.addEventListener("load", onPageLoad, false);
+    }
+    else if (window.attachEvent) {
+      window.attachEvent("onload", onPageLoad);
+    }
   </script>
 
 </head>
-<body onload="updatePage(config)">
+<body>
 <h1 id="title">Loading...</h1>
 
 <p><a id="logLink">Messages</a> from the last time this module was compiled.</p>
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/favicon.ico b/dev/codeserver/java/com/google/gwt/dev/codeserver/favicon.ico
new file mode 100644
index 0000000..d7ccc73
--- /dev/null
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/favicon.ico
Binary files differ
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/filelist.html b/dev/codeserver/java/com/google/gwt/dev/codeserver/filelist.html
index 511f39b..82c3b8e 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/filelist.html
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/filelist.html
@@ -18,8 +18,8 @@
   <script>
     function updatePage(config) {
       var title = config.moduleName + " Source (GWT Code Server)";
-      document.getElementsByTagName("title")[0].textContent = title;
-      document.getElementById("title").textContent = title;
+      document.title = title;
+      setTextContent(document.getElementById("title"), title);
 
       document.getElementById("logLink")
               .setAttribute("href", "/log/" + config.moduleName);
@@ -36,17 +36,37 @@
 
         var anchor = document.createElement("a");
         anchor.setAttribute("href", file.link);
-        anchor.textContent = file.name;
+        setTextContent(anchor, file.name);
 
         var listItem = document.createElement("li");
         listItem.appendChild(anchor);
         resultElement.appendChild(listItem);
       }
     }
+
+    function setTextContent(element, text) {
+      if (typeof element.textContent === 'string') {
+        element.textContent = text;
+      } else {
+        // Use innerText when textContent is not supported (e.g. IE8).
+        element.innerText = text;
+      }
+    }
+
+    function onPageLoad() {
+      updatePage(config);
+    }
+
+    if (window.addEventListener) {
+      window.addEventListener("load", onPageLoad, false);
+    }
+    else if (window.attachEvent) {
+      window.attachEvent("onload", onPageLoad);
+    }
   </script>
 
 </head>
-<body onload="updatePage(config)">
+<body>
 <h1 id="title">Loading...</h1>
 
 <p><a id="logLink">Messages</a> from the last time this module was compiled.</p>
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/frontpage.html b/dev/codeserver/java/com/google/gwt/dev/codeserver/frontpage.html
index 6a27050..c855615 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/frontpage.html
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/frontpage.html
@@ -35,8 +35,8 @@
     var moduleName = moduleNames[i];
 
     var anchor = document.createElement("a");
-    anchor.setAttribute("href", moduleName + "/");
-    anchor.textContent = moduleName;
+    anchor.setAttribute("href", "/" + moduleName + "/");
+    setTextContent(anchor, moduleName);
 
     var item = document.createElement("li");
     item.appendChild(anchor);
@@ -80,11 +80,31 @@
 
 function makeBookmarklet(name, javascript) {
   var result = document.createElement("a");
-  result.setAttribute("class", "bookmarklet");
+  result.setAttribute(document.all ? "className" : "class", "bookmarklet");
   result.setAttribute("href", "javascript:" + encodeURIComponent(javascript));
-  result.textContent = name;
+  setTextContent(result, name);
   return result;
 }
+
+function setTextContent(element, text) {
+  if (typeof element.textContent === 'string') {
+    element.textContent = text;
+  } else {
+    // Use innerText when textContent is not supported (e.g. IE8).
+    element.innerText = text;
+  }
+}
+
+function onPageLoad() {
+  updatePage(config);
+}
+
+if (window.addEventListener) {
+  window.addEventListener("load", onPageLoad, false);
+}
+else if (window.attachEvent) {
+  window.attachEvent("onload", onPageLoad);
+}
   </script>
 
   <style>
@@ -119,7 +139,7 @@
     }
   </style>
 </head>
-<body onload="updatePage(config)">
+<body>
 
 <h1>GWT Code Server</h1>
 
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/modulepage.html b/dev/codeserver/java/com/google/gwt/dev/codeserver/modulepage.html
index 239d44e..29a8647 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/modulepage.html
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/modulepage.html
@@ -18,8 +18,8 @@
   <script>
     function updatePage(config) {
       var title = config.moduleName + " (GWT Code Server)";
-      document.getElementsByTagName("title")[0].textContent = title;
-      document.getElementById("title").textContent = title;
+      document.title = title;
+      setTextContent(document.getElementById("title"), title);
 
       document.getElementById("logLink")
               .setAttribute("href", "../log/" + config.moduleName);
@@ -34,17 +34,37 @@
 
         var anchor = document.createElement("a");
         anchor.setAttribute("href", file.link);
-        anchor.textContent = file.name;
+        setTextContent(anchor, file.name);
 
         var listItem = document.createElement("li");
         listItem.appendChild(anchor);
         resultElement.appendChild(listItem);
       }
     }
+
+    function setTextContent(element, text) {
+      if (typeof element.textContent === 'string') {
+        element.textContent = text;
+      } else {
+        // Use innerText when textContent is not supported (e.g. IE8).
+        element.innerText = text;
+      }
+    }
+
+    function onPageLoad() {
+      updatePage(config);
+    }
+
+    if (window.addEventListener) {
+      window.addEventListener("load", onPageLoad, false);
+    }
+    else if (window.attachEvent) {
+      window.attachEvent("onload", onPageLoad);
+    }
   </script>
 
 </head>
-<body onload="updatePage(config)">
+<body>
 <h1 id="title">Loading...</h1>
 
 <p><a id="logLink">Messages</a> from the last time this module was compiled.</p>
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/nomodule.nocache.js b/dev/codeserver/java/com/google/gwt/dev/codeserver/nomodule.nocache.js
new file mode 100644
index 0000000..0b5e8e0
--- /dev/null
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/nomodule.nocache.js
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Licensed 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.
+ */
+
+/**
+ * @fileoverview Stub for non-compiled modules.
+ *
+ * This script forces the proper reload + compilation in Super Dev Mode.
+ */
+
+(function() {
+  var moduleName = '__MODULE_NAME__';  // Replaced by actual module name.
+
+  // Active Super Dev Mode is assumed.
+  var key = '__gwtDevModeHook:' + moduleName;
+  if (!window.sessionStorage[key]) {
+    alert('Unable to load Super Dev Mode version of ' + moduleName + '.');
+    return;
+  }
+  var scriptLocation = window.sessionStorage[key];
+
+  // Get the Super Dev Mode Server URL: use the HTML a.href parsing.
+  var a = document.createElement('a');
+  a.href = scriptLocation;
+  var devServerUrl = a.protocol + '//' + a.host;
+
+  // Load the bookmarklet.
+  window.__gwt_bookmarklet_params = {
+    'server_url' : devServerUrl + '/',
+    'module_name': moduleName
+  };
+  var script = document.createElement('script');
+  script.src = devServerUrl + '/dev_mode_on.js';
+  document.getElementsByTagName('head')[0].appendChild(script);
+})();
diff --git a/dev/core/src/com/google/gwt/core/ext/linker/impl/installLocationIframe.js b/dev/core/src/com/google/gwt/core/ext/linker/impl/installLocationIframe.js
index 8c4896c..35c17a1 100644
--- a/dev/core/src/com/google/gwt/core/ext/linker/impl/installLocationIframe.js
+++ b/dev/core/src/com/google/gwt/core/ext/linker/impl/installLocationIframe.js
@@ -47,6 +47,7 @@
   // of the frame. However, we don't want to do this when runAsync calls
   // installCode, so we do it here when we create the iframe.
   frameDoc.open();
-  frameDoc.write('<html><head></head><body></body></html>');
+  var doctype = (document.compatMode == 'CSS1Compat') ? '<!doctype html>' : '';
+  frameDoc.write(doctype + '<html><head></head><body></body></html>');
   frameDoc.close();
 }
diff --git a/dev/core/src/com/google/gwt/core/ext/linker/impl/properties.js b/dev/core/src/com/google/gwt/core/ext/linker/impl/properties.js
index 297dccb..55db43a 100644
--- a/dev/core/src/com/google/gwt/core/ext/linker/impl/properties.js
+++ b/dev/core/src/com/google/gwt/core/ext/linker/impl/properties.js
@@ -52,7 +52,9 @@
   __MODULE_FUNC__.__getPropMap = function() {
     var result = {};
     for (var key in values) {
-      result[key] = computePropValue(key);
+      if (values.hasOwnProperty(key)) {
+        result[key] = computePropValue(key);
+      }
     }
     return result;
   };
diff --git a/dev/core/src/com/google/gwt/core/linker/CrossSiteIframeLinker.java b/dev/core/src/com/google/gwt/core/linker/CrossSiteIframeLinker.java
index 556a6d7..8e59403 100644
--- a/dev/core/src/com/google/gwt/core/linker/CrossSiteIframeLinker.java
+++ b/dev/core/src/com/google/gwt/core/linker/CrossSiteIframeLinker.java
@@ -406,7 +406,20 @@
         + "__gwtModuleFunction.__computePropValue);");
     out.newlineOpt();
     out.print("$sendStats('moduleStartup', 'end');");
-    out.print("\n//@ sourceURL=0.js\n");
+    String includeSourceMapUrl = getStringConfigurationProperty(context, "includeSourceMapUrl", "false");
+    if (!"false".equalsIgnoreCase(includeSourceMapUrl)) {
+      String sourceMapUrl = SymbolMapsLinker.SourceMapArtifact.sourceMapFilenameForFragment(0);
+      if (!"true".equalsIgnoreCase(includeSourceMapUrl)) {
+        sourceMapUrl = includeSourceMapUrl;
+      }
+      // The sourceURL magic comment can cause browsers to ignore the X-SourceMap header
+      // This magic comment ensures that they can still locate them in that case
+      out.print("\n//@ sourceMappingURL=" + sourceMapUrl + " ");
+    }
+    // Magic comment serves several purposes:
+    // 1. renames strongName to a stable name in browser debugger
+    // 2. provides name to scripts installed via eval()
+    out.print("\n//@ sourceURL=0.js \n");
     return out.toString();
   }
 
diff --git a/dev/core/src/com/google/gwt/core/linker/DevModeRedirectHook.js b/dev/core/src/com/google/gwt/core/linker/DevModeRedirectHook.js
index 816e1b1..a5026f2 100644
--- a/dev/core/src/com/google/gwt/core/linker/DevModeRedirectHook.js
+++ b/dev/core/src/com/google/gwt/core/linker/DevModeRedirectHook.js
@@ -42,7 +42,7 @@
 
   // The new script tag must come before the previous one so that
   // computeScriptBase will see it.
-  head.insertBefore(script, head.firstElementChild);
+  head.insertBefore(script, head.firstElementChild || head.children[0]);
 
   return false; // Skip the regular bootstrap.
 }
diff --git a/dev/core/src/com/google/gwt/core/linker/SymbolMapsLinker.java b/dev/core/src/com/google/gwt/core/linker/SymbolMapsLinker.java
index 91a1d43..e4c8eaf 100644
--- a/dev/core/src/com/google/gwt/core/linker/SymbolMapsLinker.java
+++ b/dev/core/src/com/google/gwt/core/linker/SymbolMapsLinker.java
@@ -170,7 +170,7 @@
     private byte[] js;
 
     public SourceMapArtifact(int permutationId, int fragment, byte[] js) {
-      super(SymbolMapsLinker.class, permutationId + "/sourceMap" + fragment + ".json", js);
+      super(SymbolMapsLinker.class, permutationId + '/' + sourceMapFilenameForFragment(fragment), js);
       this.permutationId = permutationId;
       this.fragment = fragment;
       this.js = js;
@@ -183,6 +183,10 @@
     public int getPermutationId() {
       return permutationId;
     }
+
+    public static String sourceMapFilenameForFragment(int fragment) {
+             return "sourceMap" + fragment + ".json";
+    }
   }
 
   /**
diff --git a/dev/core/src/com/google/gwt/dev/CompileModule.java b/dev/core/src/com/google/gwt/dev/CompileModule.java
index f9df91a..8ba6fb5 100644
--- a/dev/core/src/com/google/gwt/dev/CompileModule.java
+++ b/dev/core/src/com/google/gwt/dev/CompileModule.java
@@ -30,8 +30,6 @@
 import com.google.gwt.dev.util.arg.ArgHandlerModuleName;
 import com.google.gwt.dev.util.arg.ArgHandlerOutDir;
 import com.google.gwt.dev.util.arg.ArgHandlerStrict;
-import com.google.gwt.dev.util.arg.OptionOutDir;
-import com.google.gwt.dev.util.arg.OptionStrict;
 import com.google.gwt.dev.util.log.speedtracer.CompilerEventType;
 import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger;
 import com.google.gwt.thirdparty.guava.common.collect.Sets;
@@ -100,9 +98,6 @@
     }
   }
 
-  interface CompileModuleOptions extends CompileTaskOptions, OptionOutDir, OptionStrict {
-  }
-
   static class CompileModuleOptionsImpl extends CompileTaskOptionsImpl implements
       CompileModuleOptions {
 
diff --git a/dev/core/src/com/google/gwt/dev/CompileModuleOptions.java b/dev/core/src/com/google/gwt/dev/CompileModuleOptions.java
new file mode 100644
index 0000000..b3f6ee4
--- /dev/null
+++ b/dev/core/src/com/google/gwt/dev/CompileModuleOptions.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2012 Google Inc.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.dev;
+
+import com.google.gwt.dev.util.arg.OptionOutDir;
+import com.google.gwt.dev.util.arg.OptionStrict;
+
+/**
+ * The complete set of options for {@link CompileModule}.
+ */
+public interface CompileModuleOptions extends CompileTaskOptions, OptionOutDir, OptionStrict {
+}
diff --git a/dev/core/src/com/google/gwt/dev/CompileTaskRunner.java b/dev/core/src/com/google/gwt/dev/CompileTaskRunner.java
index 7c65f6e..914713d 100644
--- a/dev/core/src/com/google/gwt/dev/CompileTaskRunner.java
+++ b/dev/core/src/com/google/gwt/dev/CompileTaskRunner.java
@@ -63,7 +63,7 @@
         }
       });
 
-      compilerThread.setName("GWTCompiler Thread");
+      compilerThread.setName("GWT Compiler Thread");
       compilerThread.start();
       // TODO(jat): create an app frame for loggerWindow
       
diff --git a/dev/core/src/com/google/gwt/dev/GWTCompiler.java b/dev/core/src/com/google/gwt/dev/GWTCompiler.java
deleted file mode 100644
index ef2e4ea..0000000
--- a/dev/core/src/com/google/gwt/dev/GWTCompiler.java
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.dev;
-
-import com.google.gwt.core.ext.TreeLogger;
-import com.google.gwt.core.ext.UnableToCompleteException;
-import com.google.gwt.core.ext.linker.ArtifactSet;
-import com.google.gwt.dev.CompileTaskRunner.CompileTask;
-import com.google.gwt.dev.cfg.ModuleDef;
-import com.google.gwt.dev.cfg.ModuleDefLoader;
-import com.google.gwt.dev.jjs.JJSOptions;
-import com.google.gwt.dev.jjs.PermutationResult;
-import com.google.gwt.dev.shell.CheckForUpdates;
-import com.google.gwt.dev.shell.CheckForUpdates.UpdateResult;
-import com.google.gwt.dev.util.FileBackedObject;
-import com.google.gwt.dev.util.Util;
-import com.google.gwt.dev.util.arg.ArgHandlerLocalWorkers;
-import com.google.gwt.dev.util.arg.ArgHandlerOutDir;
-import com.google.gwt.dev.util.arg.ArgHandlerWorkDirOptional;
-import com.google.gwt.dev.util.log.speedtracer.CompilerEventType;
-import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger;
-import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger.Event;
-import com.google.gwt.util.tools.ToolBase;
-import com.google.gwt.util.tools.Utility;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.List;
-import java.util.concurrent.FutureTask;
-
-/**
- * The main executable entry point for the GWT Java to JavaScript compiler.
- * 
- * @deprecated Use {@link Compiler} instead
- */
-@Deprecated
-public class GWTCompiler {
-
-  static final class ArgProcessor extends PrecompileTaskArgProcessor {
-    public ArgProcessor(LegacyCompilerOptions options) {
-      super(options);
-
-      registerHandler(new ArgHandlerOutDir(options));
-
-      // Override the ArgHandlerWorkDirRequired in the super class.
-      registerHandler(new ArgHandlerWorkDirOptional(options));
-
-      registerHandler(new ArgHandlerLocalWorkers(options));
-    }
-
-    @Override
-    protected String getName() {
-      return GWTCompiler.class.getName();
-    }
-  }
-
-  /**
-   * Simple implementation of {@link LegacyCompilerOptions}.
-   */
-  public static class GWTCompilerOptionsImpl extends PrecompileTaskOptionsImpl
-      implements LegacyCompilerOptions {
-
-    private int localWorkers;
-    private File outDir;
-
-    public GWTCompilerOptionsImpl() {
-    }
-
-    public GWTCompilerOptionsImpl(LegacyCompilerOptions other) {
-      copyFrom(other);
-    }
-
-    public void copyFrom(LegacyCompilerOptions other) {
-      super.copyFrom(other);
-      setLocalWorkers(other.getLocalWorkers());
-      setOutDir(other.getOutDir());
-    }
-
-    @Override
-    public int getLocalWorkers() {
-      return localWorkers;
-    }
-
-    @Override
-    public File getOutDir() {
-      return outDir;
-    }
-
-    @Override
-    public void setLocalWorkers(int localWorkers) {
-      this.localWorkers = localWorkers;
-    }
-
-    @Override
-    public void setOutDir(File outDir) {
-      this.outDir = outDir;
-    }
-  }
-
-  public static void main(String[] args) {
-    ToolBase.legacyWarn(GWTCompiler.class, Compiler.class);
-    SpeedTracerLogger.init();
-    Event compileEvent = SpeedTracerLogger.start(CompilerEventType.COMPILE);
-
-    /*
-     * NOTE: main always exits with a call to System.exit to terminate any
-     * non-daemon threads that were started in Generators. Typically, this is to
-     * shutdown AWT related threads, since the contract for their termination is
-     * still implementation-dependent.
-     */
-    final LegacyCompilerOptions options = new GWTCompilerOptionsImpl();
-    boolean success = false;
-    if (new ArgProcessor(options).processArgs(args)) {
-      CompileTask task = new CompileTask() {
-        @Override
-        public boolean run(TreeLogger logger) throws UnableToCompleteException {
-          FutureTask<UpdateResult> updater = null;
-          if (!options.isUpdateCheckDisabled()) {
-            updater = CheckForUpdates.checkForUpdatesInBackgroundThread(logger,
-                CheckForUpdates.ONE_DAY);
-          }
-          boolean success = new GWTCompiler(options).run(logger);
-          if (success) {
-            CheckForUpdates.logUpdateAvailable(logger, updater);
-          }
-          return success;
-        }
-      };
-      if (CompileTaskRunner.runWithAppropriateLogger(options, task)) {
-        // Exit w/ success code.
-        success = true;
-      }
-    }
-
-    compileEvent.end();
-    // Exit w/ non-success code.
-    System.exit(success ? 0 : 1);
-  }
-
-  private final GWTCompilerOptionsImpl options;
-
-  public GWTCompiler(LegacyCompilerOptions options) {
-    this.options = new GWTCompilerOptionsImpl(options);
-  }
-
-  /**
-   * Compiles the set of modules specified in the options.
-   */
-  public boolean run(TreeLogger logger) throws UnableToCompleteException {
-    ModuleDef[] modules = new ModuleDef[options.getModuleNames().size()];
-    int i = 0;
-    for (String moduleName : options.getModuleNames()) {
-      modules[i++] = ModuleDefLoader.loadFromClassPath(logger, moduleName, true);
-    }
-    return run(logger, modules);
-  }
-
-  /**
-   * Compiles a specific set of modules.
-   */
-  public boolean run(TreeLogger logger, ModuleDef... modules)
-      throws UnableToCompleteException {
-    Event compileEvent = SpeedTracerLogger.start(CompilerEventType.COMPILE);
-    boolean tempWorkDir = false;
-    try {
-      if (options.getWorkDir() == null) {
-        options.setWorkDir(Utility.makeTemporaryDirectory(null, "gwtc"));
-        tempWorkDir = true;
-      }
-
-      for (ModuleDef module : modules) {
-        String moduleName = module.getName();
-
-        if (options.isValidateOnly()) {
-          if (!Precompile.validate(logger, options, module, options.getGenDir())) {
-            return false;
-          }
-        } else {
-          long compileStart = System.currentTimeMillis();
-          logger = logger.branch(TreeLogger.INFO, "Compiling module "
-              + moduleName);
-
-          // Optimize early since permutation compiles will run in process.
-          options.setOptimizePrecompile(true);
-          Precompilation precompilation = Precompile.precompile(logger,
-              options, module, options.getGenDir());
-
-          if (precompilation == null) {
-            return false;
-          }
-          Permutation[] allPerms = precompilation.getPermutations();
-          List<FileBackedObject<PermutationResult>> resultFiles = CompilePerms.makeResultFiles(
-              options.getCompilerWorkDir(moduleName), allPerms);
-          CompilePerms.compile(logger, precompilation, allPerms,
-              options.getLocalWorkers(), resultFiles);
-
-          ArtifactSet generatedArtifacts = precompilation.getGeneratedArtifacts();
-          JJSOptions precompileOptions = precompilation.getUnifiedAst().getOptions();
-
-          precompilation = null; // No longer needed, so save the memory
-
-          Link.legacyLink(logger.branch(TreeLogger.TRACE, "Linking into "
-              + options.getOutDir().getPath()), module, generatedArtifacts,
-              allPerms, resultFiles, options.getOutDir(), precompileOptions);
-
-          long compileDone = System.currentTimeMillis();
-          long delta = compileDone - compileStart;
-          if (logger.isLoggable(TreeLogger.INFO)) {
-            logger.log(TreeLogger.INFO, "Compilation succeeded -- "
-                + String.format("%.3f", delta / 1000d) + "s");
-          }
-        }
-      }
-    } catch (IOException e) {
-      logger.log(TreeLogger.ERROR, "Unable to create compiler work directory",
-          e);
-      return false;
-    } finally {
-      compileEvent.end();
-      if (tempWorkDir) {
-        Util.recursiveDelete(options.getWorkDir(), false);
-      }
-    }
-    return true;
-  }
-}
diff --git a/dev/core/src/com/google/gwt/dev/GWTShell.java b/dev/core/src/com/google/gwt/dev/GWTShell.java
deleted file mode 100644
index 77339ff..0000000
--- a/dev/core/src/com/google/gwt/dev/GWTShell.java
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.dev;
-
-import com.google.gwt.core.ext.TreeLogger;
-import com.google.gwt.core.ext.UnableToCompleteException;
-import com.google.gwt.core.ext.linker.ArtifactSet;
-import com.google.gwt.core.ext.linker.EmittedArtifact.Visibility;
-import com.google.gwt.core.ext.linker.impl.StandardLinkerContext;
-import com.google.gwt.dev.cfg.ModuleDef;
-import com.google.gwt.dev.shell.WorkDirs;
-import com.google.gwt.dev.shell.tomcat.EmbeddedTomcatServer;
-import com.google.gwt.dev.util.OutputFileSetOnDirectory;
-import com.google.gwt.dev.util.arg.ArgHandlerDisableUpdateCheck;
-import com.google.gwt.dev.util.arg.ArgHandlerOutDir;
-import com.google.gwt.util.tools.ArgHandlerExtra;
-
-import java.io.File;
-import java.util.Locale;
-import java.util.Set;
-
-/**
- * The main executable class for the hosted mode shell.
- */
-@Deprecated
-public class GWTShell extends DevModeBase {
-
-  /**
-   * Handles the list of startup urls that can be passed at the end of the
-   * command line.
-   */
-  protected static class ArgHandlerStartupURLsExtra extends ArgHandlerExtra {
-
-    private final OptionStartupURLs options;
-
-    public ArgHandlerStartupURLsExtra(OptionStartupURLs options) {
-      this.options = options;
-    }
-
-    @Override
-    public boolean addExtraArg(String arg) {
-      options.addStartupURL(arg);
-      return true;
-    }
-
-    @Override
-    public String getPurpose() {
-      return "Automatically launches the specified URL";
-    }
-
-    @Override
-    public String[] getTagArgs() {
-      return new String[] {"url"};
-    }
-  }
-
-  /**
-   * The GWTShell argument processor.
-   */
-  protected static class ArgProcessor extends DevModeBase.ArgProcessor {
-    public ArgProcessor(ShellOptionsImpl options, boolean forceServer,
-        boolean noURLs) {
-      super(options, forceServer);
-      if (!noURLs) {
-        registerHandler(new ArgHandlerStartupURLsExtra(options));
-      }
-      registerHandler(new ArgHandlerOutDir(options));
-      registerHandler(new ArgHandlerDisableUpdateCheck(options));
-    }
-
-    @Override
-    protected String getName() {
-      return GWTShell.class.getName();
-    }
-  }
-
-  /**
-   * Concrete class to implement all shell options.
-   */
-  protected static class ShellOptionsImpl extends HostedModeBaseOptionsImpl
-      implements WorkDirs, LegacyCompilerOptions {
-    private int localWorkers;
-    private File outDir;
-
-    public File getCompilerOutputDir(ModuleDef moduleDef) {
-      return new File(getOutDir(), moduleDef.getName());
-    }
-
-    public int getLocalWorkers() {
-      return localWorkers;
-    }
-
-    public File getOutDir() {
-      return outDir;
-    }
-
-    public File getShellPublicGenDir(ModuleDef moduleDef) {
-      File moduleWorkDir = new File(getWorkDir(), moduleDef.getName());
-      return new File(moduleWorkDir, "public");
-    }
-
-    @Override
-    public File getWorkDir() {
-      return new File(getOutDir(), ".gwt-tmp");
-    }
-
-    public void setLocalWorkers(int localWorkers) {
-      this.localWorkers = localWorkers;
-    }
-
-    public void setOutDir(File outDir) {
-      this.outDir = outDir;
-    }
-  }
-
-  public static String checkHost(String hostUnderConsideration,
-      Set<String> hosts) {
-    hostUnderConsideration = hostUnderConsideration.toLowerCase(Locale.ENGLISH);
-    for (String rule : hosts) {
-      // match on lowercased regex
-      if (hostUnderConsideration.matches(".*" + rule + ".*")) {
-        return rule;
-      }
-    }
-    return null;
-  }
-
-  public static String computeHostRegex(String url) {
-    // the entire URL up to the first slash not prefixed by a slash or colon.
-    String raw = url.split("(?<![:/])/")[0];
-    // escape the dots and put a begin line specifier on the result
-    return "^" + raw.replaceAll("[.]", "[.]");
-  }
-
-  public static String formatRules(Set<String> invalidHttpHosts) {
-    StringBuffer out = new StringBuffer();
-    for (String rule : invalidHttpHosts) {
-      out.append(rule);
-      out.append(" ");
-    }
-    return out.toString();
-  }
-
-  public static void main(String[] args) {
-    /*
-     * NOTE: main always exits with a call to System.exit to terminate any
-     * non-daemon threads that were started in Generators. Typically, this is to
-     * shutdown AWT related threads, since the contract for their termination is
-     * still implementation-dependent.
-     */
-    GWTShell gwtShell = new GWTShell();
-    ArgProcessor argProcessor = new ArgProcessor(gwtShell.options, false, false);
-    if (argProcessor.processArgs(args)) {
-      gwtShell.run();
-      // Exit w/ success code.
-      System.exit(0);
-    }
-    // Exit w/ non-success code.
-    System.exit(-1);
-  }
-
-  /**
-   * Hiding super field because it's actually the same object, just with a
-   * stronger type.
-   */
-  @SuppressWarnings("hiding")
-  protected final ShellOptionsImpl options = (ShellOptionsImpl) super.options;
-
-  protected File outDir;
-
-  @SuppressWarnings("unused")
-  public void restartServer(TreeLogger logger) throws UnableToCompleteException {
-    // Unimplemented.
-  }
-
-  @Override
-  protected HostedModeBaseOptions createOptions() {
-    return new ShellOptionsImpl();
-  }
-
-  @Override
-  protected void doShutDownServer() {
-    // Stop the HTTP server.
-    //
-    EmbeddedTomcatServer.stop();
-  }
-
-  @Override
-  protected boolean doStartup() {
-    File persistentCacheDir = new File(options.getWorkDir(), "gwt-unitCache");
-    return super.doStartup(persistentCacheDir);
-  }
-
-  @Override
-  protected int doStartUpServer() {
-    // TODO(jat): find a safe way to get an icon for Tomcat
-    TreeLogger logger = ui.getWebServerLogger("Tomcat", null);
-    // TODO(bruce): make tomcat work in terms of the modular launcher
-    String whyFailed = EmbeddedTomcatServer.start(isHeadless() ? getTopLogger()
-        : logger, getPort(), options, shouldAutoGenerateResources());
-
-    if (whyFailed != null) {
-      getTopLogger().log(TreeLogger.ERROR, "Starting Tomcat: " + whyFailed);
-      return -1;
-    }
-    return EmbeddedTomcatServer.getPort();
-  }
-
-  @Override
-  protected synchronized void produceOutput(TreeLogger logger,
-      StandardLinkerContext linkerStack, ArtifactSet artifacts,
-      ModuleDef module, boolean isRelink) throws UnableToCompleteException {
-    /*
-     * Legacy: in GWTShell we only copy generated artifacts into the public gen
-     * folder. Public files and "autogen" files have special handling (that
-     * needs to die).
-     */
-    if (isRelink) {
-      File outputDir = options.getShellPublicGenDir(module);
-      outputDir.mkdirs();
-      OutputFileSetOnDirectory outFileSet = new OutputFileSetOnDirectory(
-          outputDir, "");
-      linkerStack.produceOutput(logger, artifacts, Visibility.Public,
-          outFileSet);
-      outFileSet.close();
-    }
-  }
-
-  protected boolean shouldAutoGenerateResources() {
-    return true;
-  }
-
-  @Override
-  protected void warnAboutNoStartupUrls() {
-    getTopLogger().log(TreeLogger.WARN,
-        "No startup URLs were supplied -- add them to the end of the GWTShell"
-        + " command line");
-  }
-}
diff --git a/dev/core/src/com/google/gwt/dev/cfg/ModuleDef.java b/dev/core/src/com/google/gwt/dev/cfg/ModuleDef.java
index 8d972e9..378ab1a 100644
--- a/dev/core/src/com/google/gwt/dev/cfg/ModuleDef.java
+++ b/dev/core/src/com/google/gwt/dev/cfg/ModuleDef.java
@@ -466,9 +466,9 @@
   }
 
   /**
-   * For convenience in hosted mode, servlets can be automatically loaded and
-   * delegated to via {@link com.google.gwt.dev.shell.GWTShellServlet}. If a
-   * servlet is already mapped to the specified path, it is replaced.
+   * For convenience in unit tests, servlets can be automatically loaded and
+   * mapped in the embedded web server. If a servlet is already mapped to the
+   * specified path, it is replaced.
    * 
    * @param path the url path at which the servlet resides
    * @param servletClassName the name of the servlet to publish
diff --git a/dev/core/src/com/google/gwt/dev/etc/tomcat/conf/web.xml b/dev/core/src/com/google/gwt/dev/etc/tomcat/conf/web.xml
deleted file mode 100644
index fee85f3..0000000
--- a/dev/core/src/com/google/gwt/dev/etc/tomcat/conf/web.xml
+++ /dev/null
@@ -1,566 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- A tweaked version of the default Tomcat web.xml to remove everything except the stuff we want to use -->
-<web-app version="2.4">
-
-    <session-config>
-        <session-timeout>30</session-timeout>
-    </session-config>
-
-    <mime-mapping>
-        <extension>abs</extension>
-        <mime-type>audio/x-mpeg</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>ai</extension>
-        <mime-type>application/postscript</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>aif</extension>
-        <mime-type>audio/x-aiff</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>aifc</extension>
-        <mime-type>audio/x-aiff</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>aiff</extension>
-        <mime-type>audio/x-aiff</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>aim</extension>
-        <mime-type>application/x-aim</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>art</extension>
-        <mime-type>image/x-jg</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>asf</extension>
-        <mime-type>video/x-ms-asf</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>asx</extension>
-        <mime-type>video/x-ms-asf</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>au</extension>
-        <mime-type>audio/basic</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>avi</extension>
-        <mime-type>video/x-msvideo</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>avx</extension>
-        <mime-type>video/x-rad-screenplay</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>bcpio</extension>
-        <mime-type>application/x-bcpio</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>bin</extension>
-        <mime-type>application/octet-stream</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>bmp</extension>
-        <mime-type>image/bmp</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>body</extension>
-        <mime-type>text/html</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>cdf</extension>
-        <mime-type>application/x-cdf</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>cer</extension>
-        <mime-type>application/x-x509-ca-cert</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>class</extension>
-        <mime-type>application/java</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>cpio</extension>
-        <mime-type>application/x-cpio</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>csh</extension>
-        <mime-type>application/x-csh</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>css</extension>
-        <mime-type>text/css</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>dib</extension>
-        <mime-type>image/bmp</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>doc</extension>
-        <mime-type>application/msword</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>dtd</extension>
-        <mime-type>text/plain</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>dv</extension>
-        <mime-type>video/x-dv</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>dvi</extension>
-        <mime-type>application/x-dvi</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>eps</extension>
-        <mime-type>application/postscript</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>etx</extension>
-        <mime-type>text/x-setext</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>exe</extension>
-        <mime-type>application/octet-stream</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>gif</extension>
-        <mime-type>image/gif</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>gtar</extension>
-        <mime-type>application/x-gtar</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>gz</extension>
-        <mime-type>application/x-gzip</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>hdf</extension>
-        <mime-type>application/x-hdf</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>hqx</extension>
-        <mime-type>application/mac-binhex40</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>htc</extension>
-        <mime-type>text/x-component</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>htm</extension>
-        <mime-type>text/html</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>html</extension>
-        <mime-type>text/html</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>hqx</extension>
-        <mime-type>application/mac-binhex40</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>ief</extension>
-        <mime-type>image/ief</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>jad</extension>
-        <mime-type>text/vnd.sun.j2me.app-descriptor</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>jar</extension>
-        <mime-type>application/java-archive</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>java</extension>
-        <mime-type>text/plain</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>jnlp</extension>
-        <mime-type>application/x-java-jnlp-file</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>jpe</extension>
-        <mime-type>image/jpeg</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>jpeg</extension>
-        <mime-type>image/jpeg</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>jpg</extension>
-        <mime-type>image/jpeg</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>js</extension>
-        <mime-type>text/javascript</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>jsf</extension>
-        <mime-type>text/plain</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>jspf</extension>
-        <mime-type>text/plain</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>kar</extension>
-        <mime-type>audio/x-midi</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>latex</extension>
-        <mime-type>application/x-latex</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>m3u</extension>
-        <mime-type>audio/x-mpegurl</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>mac</extension>
-        <mime-type>image/x-macpaint</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>man</extension>
-        <mime-type>application/x-troff-man</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>me</extension>
-        <mime-type>application/x-troff-me</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>mid</extension>
-        <mime-type>audio/x-midi</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>midi</extension>
-        <mime-type>audio/x-midi</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>mif</extension>
-        <mime-type>application/x-mif</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>mov</extension>
-        <mime-type>video/quicktime</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>movie</extension>
-        <mime-type>video/x-sgi-movie</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>mp1</extension>
-        <mime-type>audio/x-mpeg</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>mp2</extension>
-        <mime-type>audio/x-mpeg</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>mp3</extension>
-        <mime-type>audio/x-mpeg</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>mpa</extension>
-        <mime-type>audio/x-mpeg</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>mpe</extension>
-        <mime-type>video/mpeg</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>mpeg</extension>
-        <mime-type>video/mpeg</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>mpega</extension>
-        <mime-type>audio/x-mpeg</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>mpg</extension>
-        <mime-type>video/mpeg</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>mpv2</extension>
-        <mime-type>video/mpeg2</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>ms</extension>
-        <mime-type>application/x-wais-source</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>nc</extension>
-        <mime-type>application/x-netcdf</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>oda</extension>
-        <mime-type>application/oda</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>pbm</extension>
-        <mime-type>image/x-portable-bitmap</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>pct</extension>
-        <mime-type>image/pict</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>pdf</extension>
-        <mime-type>application/pdf</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>pgm</extension>
-        <mime-type>image/x-portable-graymap</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>pic</extension>
-        <mime-type>image/pict</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>pict</extension>
-        <mime-type>image/pict</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>pls</extension>
-        <mime-type>audio/x-scpls</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>png</extension>
-        <mime-type>image/png</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>pnm</extension>
-        <mime-type>image/x-portable-anymap</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>pnt</extension>
-        <mime-type>image/x-macpaint</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>ppm</extension>
-        <mime-type>image/x-portable-pixmap</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>ppt</extension>
-        <mime-type>application/powerpoint</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>ps</extension>
-        <mime-type>application/postscript</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>psd</extension>
-        <mime-type>image/x-photoshop</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>qt</extension>
-        <mime-type>video/quicktime</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>qti</extension>
-        <mime-type>image/x-quicktime</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>qtif</extension>
-        <mime-type>image/x-quicktime</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>ras</extension>
-        <mime-type>image/x-cmu-raster</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>rgb</extension>
-        <mime-type>image/x-rgb</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>rm</extension>
-        <mime-type>application/vnd.rn-realmedia</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>roff</extension>
-        <mime-type>application/x-troff</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>rtf</extension>
-        <mime-type>application/rtf</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>rtx</extension>
-        <mime-type>text/richtext</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>sh</extension>
-        <mime-type>application/x-sh</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>shar</extension>
-        <mime-type>application/x-shar</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>smf</extension>
-        <mime-type>audio/x-midi</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>sit</extension>
-        <mime-type>application/x-stuffit</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>snd</extension>
-        <mime-type>audio/basic</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>src</extension>
-        <mime-type>application/x-wais-source</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>sv4cpio</extension>
-        <mime-type>application/x-sv4cpio</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>sv4crc</extension>
-        <mime-type>application/x-sv4crc</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>swf</extension>
-        <mime-type>application/x-shockwave-flash</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>t</extension>
-        <mime-type>application/x-troff</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>tar</extension>
-        <mime-type>application/x-tar</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>tcl</extension>
-        <mime-type>application/x-tcl</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>tex</extension>
-        <mime-type>application/x-tex</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>texi</extension>
-        <mime-type>application/x-texinfo</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>texinfo</extension>
-        <mime-type>application/x-texinfo</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>tif</extension>
-        <mime-type>image/tiff</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>tiff</extension>
-        <mime-type>image/tiff</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>tr</extension>
-        <mime-type>application/x-troff</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>tsv</extension>
-        <mime-type>text/tab-separated-values</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>txt</extension>
-        <mime-type>text/plain</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>ulw</extension>
-        <mime-type>audio/basic</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>ustar</extension>
-        <mime-type>application/x-ustar</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>xbm</extension>
-        <mime-type>image/x-xbitmap</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>xht</extension>
-        <mime-type>application/xhtml+xml</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>xhtml</extension>
-        <mime-type>application/xhtml+xml</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>xml</extension>
-        <mime-type>text/xml</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>xpm</extension>
-        <mime-type>image/x-xpixmap</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>xsl</extension>
-        <mime-type>text/xml</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>xwd</extension>
-        <mime-type>image/x-xwindowdump</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>wav</extension>
-        <mime-type>audio/x-wav</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>svg</extension>
-        <mime-type>image/svg+xml</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>svgz</extension>
-        <mime-type>image/svg+xml</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>vsd</extension>
-        <mime-type>application/x-visio</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <!-- Wireless Bitmap -->
-        <extension>wbmp</extension>
-        <mime-type>image/vnd.wap.wbmp</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <!-- WML Source -->
-        <extension>wml</extension>
-        <mime-type>text/vnd.wap.wml</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <!-- Compiled WML -->
-        <extension>wmlc</extension>
-        <mime-type>application/vnd.wap.wmlc</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <!-- WML Script Source -->
-        <extension>wmls</extension>
-        <mime-type>text/vnd.wap.wmlscript</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <!-- Compiled WML Script -->
-        <extension>wmlscriptc</extension>
-        <mime-type>application/vnd.wap.wmlscriptc</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>wrl</extension>
-        <mime-type>x-world/x-vrml</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>Z</extension>
-        <mime-type>application/x-compress</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>z</extension>
-        <mime-type>application/x-compress</mime-type>
-    </mime-mapping>
-    <mime-mapping>
-        <extension>zip</extension>
-        <mime-type>application/zip</mime-type>
-    </mime-mapping>
-</web-app>
diff --git a/dev/core/src/com/google/gwt/dev/etc/tomcat/webapps/ROOT/WEB-INF/web.xml b/dev/core/src/com/google/gwt/dev/etc/tomcat/webapps/ROOT/WEB-INF/web.xml
deleted file mode 100644
index e600b2f..0000000
--- a/dev/core/src/com/google/gwt/dev/etc/tomcat/webapps/ROOT/WEB-INF/web.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<web-app>
-
-	<servlet>
-		<servlet-name>shell</servlet-name>
-		<servlet-class>com.google.gwt.dev.shell.GWTShellServlet</servlet-class>
-	</servlet>
-	
-	<servlet-mapping>
-		<servlet-name>shell</servlet-name>
-		<url-pattern>/*</url-pattern>
-	</servlet-mapping>
-
-</web-app>
diff --git a/dev/core/src/com/google/gwt/dev/javac/CompilationUnit.java b/dev/core/src/com/google/gwt/dev/javac/CompilationUnit.java
index 3db7676..53e30a8 100644
--- a/dev/core/src/com/google/gwt/dev/javac/CompilationUnit.java
+++ b/dev/core/src/com/google/gwt/dev/javac/CompilationUnit.java
@@ -60,16 +60,42 @@
        */
       List<String> classNames = new ArrayList<String>();
 
+      int expectCode;
+      int sawCode;
+
       public List<String> getInnerClassNames() {
         return classNames;
       }
 
+      /**
+       * Return whether or not the class file visited was well-formed.
+       * Currently, this only checks that all non-abstract, non-native methods
+       * have a Code attribute.
+       */
+      public boolean isWellFormed() {
+        return expectCode == sawCode;
+      }
+
       @Override
       public void visitInnerClass(String name, String outerName, String innerName, int access) {
         if ((access & Opcodes.ACC_SYNTHETIC) == 0) {
           classNames.add(name);
         }
       }
+
+      @Override
+      public AnonymousClassVisitor visitMethod(int access, String name, String desc, String signature,
+          String[] exceptions) {
+        if ((access & (Opcodes.ACC_ABSTRACT | Opcodes.ACC_NATIVE)) == 0) {
+          ++expectCode;
+        }
+        return this;
+      }
+
+      @Override
+      public void visitCode() {
+        ++sawCode;
+      }
     }
 
     private final List<String> classesToScan;
@@ -101,6 +127,18 @@
           continue;
         }
 
+        AnonymousClassVisitor cv = new AnonymousClassVisitor();
+        new ClassReader(classBytes).accept(cv, 0);
+        if (!cv.isWellFormed()) {
+          /*
+           * Weird case #2: As of OpenJDK 7, javac in the above case now does
+           * generate a class file, but an incomplete one that fails to load
+           * with a ClassFormatError "Absent Code attribute in method that
+           * is not native or abstract in class file" error.
+           */
+          continue;
+        }
+
         /*
          * Add the class to the list only if it can be loaded to get around the
          * javac weirdness issue where javac refers a class but does not
@@ -109,8 +147,6 @@
         if (isClassnameGenerated(lookupName) && !allGeneratedClasses.contains(lookupName)) {
           allGeneratedClasses.add(lookupName);
         }
-        AnonymousClassVisitor cv = new AnonymousClassVisitor();
-        new ClassReader(classBytes).accept(cv, 0);
         List<String> innerClasses = cv.getInnerClassNames();
         for (String innerClass : innerClasses) {
           // The innerClass has to be an inner class of the lookupName
diff --git a/dev/core/src/com/google/gwt/dev/jjs/AstConstructor.java b/dev/core/src/com/google/gwt/dev/jjs/AstConstructor.java
index 8826981..73333a6 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/AstConstructor.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/AstConstructor.java
@@ -66,8 +66,8 @@
 
     JProgram jprogram = new JProgram();
     JsProgram jsProgram = new JsProgram();
-    UnifyAst unifyAst = new UnifyAst(jprogram, jsProgram, options, rpo);
-    unifyAst.buildEverything(logger);
+    UnifyAst unifyAst = new UnifyAst(logger, jprogram, jsProgram, options, rpo);
+    unifyAst.buildEverything();
 
     // Compute all super type/sub type info
     jprogram.typeOracle.computeBeforeAST();
diff --git a/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java b/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
index 042e145..e1a6180 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
@@ -485,21 +485,32 @@
       PermutationResult toReturn =
           new PermutationResultImpl(js, permutation, makeSymbolMap(symbolTable, jsProgram), ranges);
       CompilationMetricsArtifact compilationMetrics = null;
+
       // TODO: enable this when ClosureCompiler is enabled
-      if (!options.isClosureCompilerEnabled() && options.isCompilerMetricsEnabled()) {
-        compilationMetrics = new CompilationMetricsArtifact(permutation.getId());
-        compilationMetrics.setCompileElapsedMilliseconds(System.currentTimeMillis()
-            - startTimeMilliseconds);
-        compilationMetrics.setElapsedMilliseconds(System.currentTimeMillis()
-            - ManagementFactory.getRuntimeMXBean().getStartTime());
-        compilationMetrics.setJsSize(sizeBreakdowns);
-        compilationMetrics.setPermutationDescription(permutation.prettyPrint());
-        toReturn.addArtifacts(Lists.create(unifiedAst.getModuleMetrics(), unifiedAst
-            .getPrecompilationMetrics(), compilationMetrics));
+      if (options.isCompilerMetricsEnabled()) {
+        if (options.isClosureCompilerEnabled()) {
+          logger.log(TreeLogger.WARN, "Incompatible options: -XenableClosureCompiler and "
+              + "-XcompilerMetric; ignoring -XcompilerMetric.");
+        } else {
+          compilationMetrics = new CompilationMetricsArtifact(permutation.getId());
+          compilationMetrics.setCompileElapsedMilliseconds(System.currentTimeMillis()
+              - startTimeMilliseconds);
+          compilationMetrics.setElapsedMilliseconds(System.currentTimeMillis()
+              - ManagementFactory.getRuntimeMXBean().getStartTime());
+          compilationMetrics.setJsSize(sizeBreakdowns);
+          compilationMetrics.setPermutationDescription(permutation.prettyPrint());
+          toReturn.addArtifacts(Lists.create(unifiedAst.getModuleMetrics(), unifiedAst
+              .getPrecompilationMetrics(), compilationMetrics));
+        }
       }
 
       // TODO: enable this when ClosureCompiler is enabled
-      if (!options.isClosureCompilerEnabled()) {
+      if (options.isClosureCompilerEnabled()) {
+        if (options.isSoycEnabled()) {
+          logger.log(TreeLogger.WARN, "Incompatible options: -XenableClosureCompiler and "
+              + "-compileReport; ignoring -compileReport.");
+        }
+      } else {
         toReturn.addArtifacts(makeSoycArtifacts(logger, permutationId, jprogram, js, sizeBreakdowns,
             options.isSoycExtra() ? sourceInfoMaps : null, dependencies, jjsmap, obfuscateMap,
             unifiedAst.getModuleMetrics(), unifiedAst.getPrecompilationMetrics(), compilationMetrics,
@@ -507,10 +518,15 @@
       }
 
       // TODO: enable this when ClosureCompiler is enabled
-      if (!options.isClosureCompilerEnabled() && isSourceMapsEnabled) {
-        logger.log(TreeLogger.INFO, "Source Maps Enabled");
-        toReturn.addArtifacts(SourceMapRecorder.makeSourceMapArtifacts(sourceInfoMaps,
-            permutationId));
+      if (isSourceMapsEnabled) {
+        if (options.isClosureCompilerEnabled()) {
+          logger.log(TreeLogger.WARN, "Incompatible options: -XenableClosureCompiler and "
+              + "compiler.useSourceMaps=true; ignoring compiler.useSourceMaps=true.");
+        } else {
+          logger.log(TreeLogger.INFO, "Source Maps Enabled");
+          toReturn.addArtifacts(SourceMapRecorder.makeSourceMapArtifacts(sourceInfoMaps,
+              permutationId));
+        }
       }
 
       logTrackingStats(logger);
@@ -617,11 +633,11 @@
 
     try {
       // (2) Assemble the Java AST.
-      UnifyAst unifyAst = new UnifyAst(jprogram, jsProgram, options, rpo);
+      UnifyAst unifyAst = new UnifyAst(logger, jprogram, jsProgram, options, rpo);
       unifyAst.addRootTypes(allRootTypes);
       // TODO: move this into UnifyAst?
       findEntryPoints(logger, rpo, declEntryPts, jprogram);
-      unifyAst.exec(logger);
+      unifyAst.exec();
 
       List<String> finalTypeOracleTypes = Lists.create();
       if (precompilationMetrics != null) {
diff --git a/dev/core/src/com/google/gwt/dev/jjs/ast/JConstructor.java b/dev/core/src/com/google/gwt/dev/jjs/ast/JConstructor.java
index 6864453..1986666 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/ast/JConstructor.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/ast/JConstructor.java
@@ -74,6 +74,11 @@
     return getEnclosingType().getNonNull();
   }
 
+  @Override
+  public boolean isConstructor() {
+    return true;
+  }
+
   /**
    * Returns <code>true</code> if this constructor does no real work.
    * 
diff --git a/dev/core/src/com/google/gwt/dev/jjs/ast/JDeclaredType.java b/dev/core/src/com/google/gwt/dev/jjs/ast/JDeclaredType.java
index 7b127d2..1b9dc03 100755
--- a/dev/core/src/com/google/gwt/dev/jjs/ast/JDeclaredType.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/ast/JDeclaredType.java
@@ -27,7 +27,22 @@
 import java.util.List;
 
 /**
- * Base class for any reference type.
+ * Base class for any declared type.
+ *
+ * Declared types have fields and methods. Two of the methods are treated specially: the class
+ * initializer method (named <code>$clinit</code>) and the instance initializer method
+ * (named <code>$init</code>).
+ *
+ * The class initializer method is responsible for initializing all class variables as well as
+ * those of the superclasses (by calling the superclass class initializer method).
+ *
+ * The instance initializer is responsible for initializing all instance variables as well as those
+ * of the superclasses (by calling the superclass instance initializer method).
+ *
+ * Optimizations may eliminate class initializers (<code>$clinit</code>) if no static variables need
+ * initialization, and use the private variable <code>clinitTarget</code>to keep track which
+ * initializer in the superclass chain needs to be called.
+ *
  */
 public abstract class JDeclaredType extends JReferenceType {
 
@@ -48,8 +63,8 @@
   protected transient List<JMethod> methods = Lists.create();
 
   /**
-   * Tracks the target static initialization for this class. Default to self
-   * until removed or set to be a superclass.
+   * Tracks the target static initialization for this class. Default to self (if it has a non
+   * empty initializer) or point to a superclass or be null.
    */
   private JDeclaredType clinitTarget = this;
 
@@ -74,6 +89,26 @@
    */
   private List<JInterfaceType> superInterfaces = Lists.create();
 
+  /**
+   * Determines whether a subclass of this type is in the collection <code>types</code>.
+   *
+   * @param types a collections of types.
+   * @return the first subtype found in the collection  if the collection <code>types</code>
+   *             contains a subtype of this type; null otherwise.
+   */
+  public JDeclaredType findSubtype(Iterable<JDeclaredType> types) {
+    for (JDeclaredType type : types) {
+      JDeclaredType tp = type;
+      while (tp != null) {
+        if (this == tp) {
+          return type;
+        }
+        tp = tp.getSuperClass();
+      }
+    }
+    return null;
+  }
+
   public JDeclaredType(SourceInfo info, String name) {
     super(info, name);
   }
@@ -100,8 +135,12 @@
   /**
    * Adds a method to this type.
    */
-  public void addMethod(JMethod method) {
+  public final void addMethod(JMethod method) {
     assert method.getEnclosingType() == this;
+    assert !method.getName().equals("$clinit") || getMethods().size() == 0 : "Attempted adding "
+        + "$clinit method with index != 0";
+    assert !method.getName().equals("$init") || getMethods().size() == 1 : "Attempted adding $init "
+        + "method with index != 1";
     methods = Lists.add(methods, method);
   }
 
@@ -140,10 +179,40 @@
   }
 
   /**
+   * Returns the instance initializer ($init) method.
+   * Can only be called after making sure the class has an instance initializer method.
+   *
+   * @return The instance initializer method.
+   */
+  public final JMethod getInitMethod() {
+    assert getMethods().size() > 1;
+    JMethod init = this.getMethods().get(1);
+
+    assert init != null;
+    assert init.getName().equals("$init");
+    return init;
+  }
+
+  /**
+   * Returns the class initializer method.
+   * Can only be called after making sure the class has a class initializer method.
+   *
+   * @return The class initializer method.
+   */
+   public final JMethod getClinitMethod() {
+     assert getMethods().size() != 0;
+     JMethod clinit = this.getMethods().get(0);
+
+     assert clinit != null;
+     assert clinit.getName().equals("$clinit");
+     return clinit;
+  }
+
+  /**
    * Returns the class that must be initialized to use this class. May be a
    * superclass, or <code>null</code> if this class has no static initializer.
    */
-  public JDeclaredType getClinitTarget() {
+  public final JDeclaredType getClinitTarget() {
     return clinitTarget;
   }
 
@@ -186,7 +255,7 @@
    * Returns this type's declared methods; does not include methods defined in a
    * super type unless they are overridden by this type.
    */
-  public List<JMethod> getMethods() {
+  public final List<JMethod> getMethods() {
     return methods;
   }
 
@@ -218,7 +287,7 @@
    * Removes the field at the specified index.
    */
   public void removeField(int i) {
-    assert !isExternal() : "External types can not be modiified.";
+    assert !isExternal() : "External types can not be modified.";
     fields = Lists.remove(fields, i);
   }
 
@@ -226,11 +295,23 @@
    * Removes the method at the specified index.
    */
   public void removeMethod(int i) {
-    assert !isExternal() : "External types can not be modiified.";
+    assert !isExternal() : "External types can not be modified.";
     methods = Lists.remove(methods, i);
   }
 
   /**
+   * Resets the clinitTarget to the current class. Used by optimizations that move initializers from
+   * superclasses down.
+   *
+   * Prerequisite: the $clinit method must exist and be non empty.
+   */
+  public void resetClinitTarget() {
+    assert !((JMethodBody) getClinitMethod().getBody()).getStatements().isEmpty() : "Attempted to "
+        + "reset the clinitTarget to an empty $clinit";
+    this.clinitTarget = this;
+  }
+
+  /**
    * Resolves external references during AST stitching.
    */
   public void resolve(List<JInterfaceType> resolvedInterfaces, List<JNode> resolvedRescues) {
diff --git a/dev/core/src/com/google/gwt/dev/jjs/ast/JInstanceOf.java b/dev/core/src/com/google/gwt/dev/jjs/ast/JInstanceOf.java
index 675fcf0..53c46e3 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/ast/JInstanceOf.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/ast/JInstanceOf.java
@@ -45,7 +45,7 @@
 
   @Override
   public boolean hasSideEffects() {
-    return false;
+    return expr.hasSideEffects();
   }
 
   /**
diff --git a/dev/core/src/com/google/gwt/dev/jjs/ast/JMethod.java b/dev/core/src/com/google/gwt/dev/jjs/ast/JMethod.java
index 1f23013..dede802 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/ast/JMethod.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/ast/JMethod.java
@@ -249,7 +249,11 @@
         sb.append(type.getJsniSignatureName());
       }
       sb.append(')');
-      sb.append(getOriginalReturnType().getJsniSignatureName());
+      if (!isConstructor()) {
+        sb.append(getOriginalReturnType().getJsniSignatureName());
+      } else {
+        sb.append(" <init>");
+      }
       signature = sb.toString();
     }
     return signature;
@@ -267,6 +271,10 @@
     return isAbstract;
   }
 
+  public boolean isConstructor() {
+    return false;
+  }
+
   public boolean isDefault() {
     return access == AccessModifier.DEFAULT.ordinal();
   }
diff --git a/dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java b/dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java
index ad4542f..bcc1331 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java
@@ -231,7 +231,7 @@
 
   public static boolean isClinit(JMethod method) {
     JDeclaredType enclosingType = method.getEnclosingType();
-    if ((enclosingType != null) && (method == enclosingType.getMethods().get(0))) {
+    if ((enclosingType != null) && (method == enclosingType.getClinitMethod())) {
       assert (method.getName().equals("$clinit"));
       return true;
     } else {
diff --git a/dev/core/src/com/google/gwt/dev/jjs/ast/JTypeOracle.java b/dev/core/src/com/google/gwt/dev/jjs/ast/JTypeOracle.java
index 8850cb6..5963dd1 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/ast/JTypeOracle.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/ast/JTypeOracle.java
@@ -729,7 +729,7 @@
     // Track that we've been seen.
     alreadySeen.add(type);
 
-    JMethod method = type.getMethods().get(0);
+    JMethod method = type.getClinitMethod();
     assert (JProgram.isClinit(method));
     CheckClinitVisitor v = new CheckClinitVisitor();
     v.accept(method);
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/CodeSplitter2.java b/dev/core/src/com/google/gwt/dev/jjs/impl/CodeSplitter2.java
index 347088d..2c871f4 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/CodeSplitter2.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/CodeSplitter2.java
@@ -589,8 +589,19 @@
     return union;
   }
 
-  private static <T> void updateReverseMap(int entry, Map<T, Integer> map, Set<?> liveWithoutEntry,
-      Iterable<T> all) {
+  /**
+   * Performs set difference of <code>all - liveWithoutEntry</code> and confirms the result is in
+   * <code>liveFromSplitPoint</code>. Resulting program statements are recorded in a map
+   * that for each statement indicates it's fragment destination.
+   * @param splitPoint splitPoint number
+   * @param map map of statement to splitpoint number
+   * @param liveWithoutEntry everything live except that reachable from split point
+   * @param all everything reachable in the entire program
+   * @param liveFromSplitPoint everything live from the split point, including leftovers
+   * @param <T> the type of node (field, method, etc) in the map
+   */
+  private static <T> void updateReverseMap(int splitPoint, Map<T, Integer> map, Set<?> liveWithoutEntry,
+                                           Iterable<T> all, Set<?> liveFromSplitPoint) {
     for (T each : all) {
       if (!liveWithoutEntry.contains(each)) {
         /*
@@ -600,7 +611,11 @@
          * been reached. Thus, it can be downloaded along with either i's or j's
          * code.
          */
-        map.put(each, entry);
+        if (!liveFromSplitPoint.contains(each)) {
+          // complement says it should be live, but it is not actually live within the splitpoint
+        } else {
+          map.put(each, splitPoint);
+        }
       }
     }
   }
@@ -642,7 +657,7 @@
 
   /**
    * Maps a split-point number to a fragment number.
-   * 
+   *
    * splitPointToFragmmentMap[x] = y implies split point #x is in fragment #y.
    * 
    * TODO(acleung): We could use some better abstraction for this. I feel this
@@ -716,6 +731,27 @@
   }
 
   /**
+   * Compute everything reachable from the set of input split points.
+   * @param liveAfterInitialSequence everything live in initial fragment
+   * @param splitPoints list of split points to start from
+   * @return
+   */
+  private ControlFlowAnalyzer computeAllLiveFromSplitPoints(
+      ControlFlowAnalyzer liveAfterInitialSequence, List<Integer> splitPoints) {
+     ControlFlowAnalyzer cfa = new ControlFlowAnalyzer(liveAfterInitialSequence);
+     for (JRunAsync otherRunAsync : jprogram.getRunAsyncs()) {
+       if (isInitial(otherRunAsync.getSplitPoint())) {
+         continue;
+       }
+       if (!splitPoints.contains(otherRunAsync.getSplitPoint())) {
+         continue;
+       }
+       cfa.traverseFromRunAsync(otherRunAsync);
+     }
+     return cfa;
+   }
+
+  /**
    * Compute a CFA that covers the entire live code of the program.
    */
   private ControlFlowAnalyzer computeCompleteCfa() {
@@ -773,7 +809,21 @@
     // Step #7: Replaces the splitpoint number with the new fragment number.
     replaceFragmentId();
   }
-  
+
+  /**
+   * Given the set of code initially live, and a set of splitpoints grouped into fragments:
+   * The core algorithm to compute exclusive merged fragments is as follows:
+   * For each fragment (grouping of merged splitpoint numbers)
+   * 1) compute the set of live statements of every splitpoint EXCEPT those in the fragment
+   * 2) compute the set of live statements reachable from those in the fragment
+   * 3) calculate a set difference of everything live minus the results of step 1
+   * 4) filter results by checking for membership in the results of step 2
+   * 5) assign resulting live code to this fragment (recorded in a map)
+   *
+   * The results of these steps are then used to extract individual JavaScript chunks
+   * into blocks corresponding to fragments which are ultimately written to disk.
+   * @param initiallyLive the CFA of code live from the entry point (initial fragments)
+   */
   private void extractStatements(ControlFlowAnalyzer initiallyLive) {
     Map<Integer, List<JsStatement>> fragmentStats = new LinkedHashMap<Integer, List<JsStatement>>();
     
@@ -848,14 +898,20 @@
       }
 
       ControlFlowAnalyzer allButOne = computeAllButNCfas(liveAfterInitialSequence, splitPoints);
+      ControlFlowAnalyzer allFromSplitPoints = computeAllLiveFromSplitPoints(liveAfterInitialSequence, splitPoints);
+
       Set<JNode> allLiveNodes =
           union(allButOne.getLiveFieldsAndMethods(), allButOne.getFieldsWritten());
-      updateReverseMap(i, fragmentMap.fields, allLiveNodes, allFields);
-      updateReverseMap(i, fragmentMap.methods, allButOne.getLiveFieldsAndMethods(), allMethods);
+      Set<JNode> allLiveFromSplitPoints = union(allFromSplitPoints.getLiveFieldsAndMethods(),
+          allFromSplitPoints.getFieldsWritten());
+      updateReverseMap(i, fragmentMap.fields, allLiveNodes, allFields, allLiveFromSplitPoints);
+      updateReverseMap(i, fragmentMap.methods, allButOne.getLiveFieldsAndMethods(), allMethods,
+          allFromSplitPoints.getLiveFieldsAndMethods());
       updateReverseMap(i, fragmentMap.strings, allButOne.getLiveStrings(), everything
-          .getLiveStrings());
+          .getLiveStrings(), allFromSplitPoints.getLiveStrings());
       updateReverseMap(i, fragmentMap.types, declaredTypesIn(allButOne.getInstantiatedTypes()),
-          declaredTypesIn(everything.getInstantiatedTypes()));
+          declaredTypesIn(everything.getInstantiatedTypes()),
+          declaredTypesIn(allFromSplitPoints.getInstantiatedTypes()));
 
       // This mean split point [i] has been merged with another split point, ignore it.
       if (splitPointToFragmentMap[i] != i) {
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java b/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java
index f9b3aaa..93485dd 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java
@@ -226,7 +226,7 @@
 
       // Rescue my clinit (it won't ever be explicitly referenced)
       if (type.hasClinit()) {
-        rescue(type.getMethods().get(0));
+        rescue(type.getClinitMethod());
       }
 
       // JLS 12.4.1: don't rescue my super interfaces just because I'm rescued.
@@ -304,7 +304,7 @@
 
       // Rescue my clinit (it won't ever be explicitly referenced)
       if (type.hasClinit()) {
-        rescue(type.getMethods().get(0));
+        rescue(type.getClinitMethod());
       }
 
       // JLS 12.4.1: don't rescue my super interfaces just because I'm rescued.
@@ -671,7 +671,7 @@
             JField field = (JField) var;
             accept(field.getInitializer());
             referencedTypes.add(field.getEnclosingType());
-            liveFieldsAndMethods.add(field.getEnclosingType().getMethods().get(0));
+            liveFieldsAndMethods.add(field.getEnclosingType().getClinitMethod());
           } else if (argsToRescueIfParameterRead != null && var instanceof JParameter) {
             List<JExpression> list = argsToRescueIfParameterRead.remove(var);
             if (list != null) {
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/DeadCodeElimination.java b/dev/core/src/com/google/gwt/dev/jjs/impl/DeadCodeElimination.java
index 7013f53..0907c57 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/DeadCodeElimination.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/DeadCodeElimination.java
@@ -37,6 +37,7 @@
 import com.google.gwt.dev.jjs.ast.JFieldRef;
 import com.google.gwt.dev.jjs.ast.JForStatement;
 import com.google.gwt.dev.jjs.ast.JIfStatement;
+import com.google.gwt.dev.jjs.ast.JInstanceOf;
 import com.google.gwt.dev.jjs.ast.JIntLiteral;
 import com.google.gwt.dev.jjs.ast.JLiteral;
 import com.google.gwt.dev.jjs.ast.JLocalRef;
@@ -144,10 +145,10 @@
       }
       switch (op) {
         case AND:
-          maybeReplaceMe(x, simplifier.shortCircuitAnd(x, null, lhs, rhs), ctx);
+          maybeReplaceMe(x, Simplifier.and(x), ctx);
           break;
         case OR:
-          maybeReplaceMe(x, simplifier.shortCircuitOr(x, null, lhs, rhs), ctx);
+          maybeReplaceMe(x, Simplifier.or(x), ctx);
           break;
         case BIT_XOR:
           simplifyXor(lhs, rhs, ctx);
@@ -264,13 +265,12 @@
 
     @Override
     public void endVisit(JCastOperation x, Context ctx) {
-      maybeReplaceMe(x, simplifier.cast(x, x.getSourceInfo(), x.getCastType(), x.getExpr()), ctx);
+      maybeReplaceMe(x, Simplifier.cast(x), ctx);
     }
 
     @Override
     public void endVisit(JConditional x, Context ctx) {
-      maybeReplaceMe(x, simplifier.conditional(x, x.getSourceInfo(), x.getType(), x.getIfTest(), x
-          .getThenExpr(), x.getElseExpr()), ctx);
+      maybeReplaceMe(x, Simplifier.conditional(x), ctx);
     }
 
     @Override
@@ -365,8 +365,19 @@
      */
     @Override
     public void endVisit(JIfStatement x, Context ctx) {
-      maybeReplaceMe(x, simplifier.ifStatement(x, x.getSourceInfo(), x.getIfExpr(),
-          x.getThenStmt(), x.getElseStmt(), currentMethod), ctx);
+      maybeReplaceMe(x, Simplifier.ifStatement(x, currentMethod), ctx);
+    }
+
+    /**
+     * Simplify JInstanceOf expression whose output is ignored.
+     */
+    @Override
+    public void endVisit(JInstanceOf x, Context ctx) {
+
+      if (ignoringExpressionOutput.contains(x)) {
+        ctx.replaceMe(x.getExpr());
+        ignoringExpressionOutput.remove(x);
+      }
     }
 
     @Override
@@ -439,6 +450,7 @@
         }
       }
 
+      HashSet<JDeclaredType> clinitsCalled = new HashSet<JDeclaredType>();
       for (int i = 0; i < numRemovableExpressions(x); ++i) {
         JExpression expr = x.exprs.get(i);
         if (!expr.hasSideEffects()) {
@@ -456,6 +468,22 @@
           madeChanges();
           continue;
         }
+
+        // Remove redundant clinits
+        if (expr instanceof JMethodCall && JProgram.isClinit(((JMethodCall) expr).getTarget())) {
+          JDeclaredType enclosingType = ((JMethodCall) expr).getTarget().getEnclosingType();
+          // If a clinit of enclosingType or a subclass of enclosingType has already been
+          // called as part of this JMultiExpression then this clinit call is noop at runtime
+          // and can be statically removed.
+          if (enclosingType.findSubtype(clinitsCalled) != null) {
+            x.exprs.remove(i);
+            --i;
+            madeChanges();
+            continue;
+          } else {
+            clinitsCalled.add(enclosingType);
+          }
+        }
       }
 
       if (x.exprs.size() == 1) {
@@ -522,7 +550,7 @@
         }
       }
       if (x.getOp() == JUnaryOperator.NOT) {
-        maybeReplaceMe(x, simplifier.not(x, x.getSourceInfo(), x.getArg()), ctx);
+        maybeReplaceMe(x, Simplifier.not(x), ctx);
         return;
       } else if (x.getOp() == JUnaryOperator.NEG) {
         maybeReplaceMe(x, simplifyNegate(x, x.getArg()), ctx);
@@ -703,7 +731,7 @@
     }
 
     private JMethodCall createClinitCall(SourceInfo sourceInfo, JDeclaredType targetType) {
-      JMethod clinit = targetType.getClinitTarget().getMethods().get(0);
+      JMethod clinit = targetType.getClinitTarget().getClinitMethod();
       assert (JProgram.isClinit(clinit));
       return new JMethodCall(sourceInfo, null, clinit);
     }
@@ -1173,8 +1201,8 @@
 
     private boolean isTypeIntegral(JType type) {
       return ((type == program.getTypePrimitiveInt()) || (type == program.getTypePrimitiveLong())
-          || (type == program.getTypePrimitiveChar()) || (type == program.getTypePrimitiveByte()) || (type == program
-          .getTypePrimitiveShort()));
+          || (type == program.getTypePrimitiveChar()) || (type == program.getTypePrimitiveByte())
+          || (type == program.getTypePrimitiveShort()));
     }
 
     private boolean isTypeLong(JExpression exp) {
@@ -1326,11 +1354,11 @@
 
     private boolean simplifyAdd(JExpression lhs, JExpression rhs, Context ctx, JType type) {
       if (isLiteralZero(rhs)) {
-        ctx.replaceMe(simplifier.cast(type, lhs));
+        ctx.replaceMe(Simplifier.cast(type, lhs));
         return true;
       }
       if (isLiteralZero(lhs)) {
-        ctx.replaceMe(simplifier.cast(type, rhs));
+        ctx.replaceMe(Simplifier.cast(type, rhs));
         return true;
       }
 
@@ -1371,11 +1399,11 @@
 
     private boolean simplifyDiv(JExpression lhs, JExpression rhs, Context ctx, JType type) {
       if (isLiteralOne(rhs)) {
-        ctx.replaceMe(simplifier.cast(type, lhs));
+        ctx.replaceMe(Simplifier.cast(type, lhs));
         return true;
       }
       if (isLiteralNegativeOne(rhs)) {
-        ctx.replaceMe(simplifyNegate(simplifier.cast(type, lhs)));
+        ctx.replaceMe(simplifyNegate(Simplifier.cast(type, lhs)));
         return true;
       }
 
@@ -1395,27 +1423,27 @@
 
     private boolean simplifyMul(JExpression lhs, JExpression rhs, Context ctx, JType type) {
       if (isLiteralOne(rhs)) {
-        ctx.replaceMe(simplifier.cast(type, lhs));
+        ctx.replaceMe(Simplifier.cast(type, lhs));
         return true;
       }
       if (isLiteralOne(lhs)) {
-        ctx.replaceMe(simplifier.cast(type, rhs));
+        ctx.replaceMe(Simplifier.cast(type, rhs));
         return true;
       }
       if (isLiteralNegativeOne(rhs)) {
-        ctx.replaceMe(simplifyNegate(simplifier.cast(type, lhs)));
+        ctx.replaceMe(simplifyNegate(Simplifier.cast(type, lhs)));
         return true;
       }
       if (isLiteralNegativeOne(lhs)) {
-        ctx.replaceMe(simplifyNegate(simplifier.cast(type, rhs)));
+        ctx.replaceMe(simplifyNegate(Simplifier.cast(type, rhs)));
         return true;
       }
       if (isLiteralZero(rhs) && !lhs.hasSideEffects()) {
-        ctx.replaceMe(simplifier.cast(type, rhs));
+        ctx.replaceMe(Simplifier.cast(type, rhs));
         return true;
       }
       if (isLiteralZero(lhs) && !rhs.hasSideEffects()) {
-        ctx.replaceMe(simplifier.cast(type, lhs));
+        ctx.replaceMe(Simplifier.cast(type, lhs));
         return true;
       }
       return false;
@@ -1451,11 +1479,11 @@
 
     private boolean simplifySub(JExpression lhs, JExpression rhs, Context ctx, JType type) {
       if (isLiteralZero(rhs)) {
-        ctx.replaceMe(simplifier.cast(type, lhs));
+        ctx.replaceMe(Simplifier.cast(type, lhs));
         return true;
       }
       if (isLiteralZero(lhs) && !isTypeFloatOrDouble(type)) {
-        ctx.replaceMe(simplifyNegate(simplifier.cast(type, rhs)));
+        ctx.replaceMe(simplifyNegate(Simplifier.cast(type, rhs)));
         return true;
       }
       return false;
@@ -1541,7 +1569,7 @@
            * Upcast the initializer so that the semantics of any arithmetic on
            * this value is not changed.
            */
-          // TODO(spoon): use simplifier.cast to shorten this
+          // TODO(spoon): use Simplifier.cast to shorten this
           if ((x.getType() instanceof JPrimitiveType) && (lit instanceof JValueLiteral)) {
             JPrimitiveType xTypePrim = (JPrimitiveType) x.getType();
             lit = xTypePrim.coerceLiteral((JValueLiteral) lit);
@@ -1763,13 +1791,11 @@
   }
 
   private final JProgram program;
-  private final Simplifier simplifier;
 
   private final Map<JType, Class<?>> typeClassMap = new IdentityHashMap<JType, Class<?>>();
 
   public DeadCodeElimination(JProgram program) {
     this.program = program;
-    simplifier = new Simplifier(program);
     typeClassMap.put(program.getTypeJavaLangObject(), Object.class);
     typeClassMap.put(program.getTypeJavaLangString(), String.class);
     typeClassMap.put(program.getTypePrimitiveBoolean(), boolean.class);
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/EnumOrdinalizer.java b/dev/core/src/com/google/gwt/dev/jjs/impl/EnumOrdinalizer.java
index 959abc1..d7ea10c 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/EnumOrdinalizer.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/EnumOrdinalizer.java
@@ -667,10 +667,9 @@
 
       if (canBeOrdinal(x)) {
         /*
-         * Cleanup clinit method for ordinalizable enums. Note, method 0 is
-         * always the clinit.
+         * Cleanup clinit method for ordinalizable enums.
          */
-        updateClinit(x.getMethods().get(0));
+        updateClinit(x.getClinitMethod());
 
         /*
          * Remove any static impl mappings for any methods in an ordinal enum
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java b/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java
index 1616123..6b86885 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java
@@ -439,6 +439,7 @@
         JsParameter jsParam = jsCatch.getParameter();
         names.put(arg.getTarget(), jsParam.getName());
         catchMap.put(catchBlock, jsCatch);
+        catchParamIdentifiers.add(jsParam.getName());
 
         push(jsCatch.getScope());
         accept(catchBlock);
@@ -1146,7 +1147,9 @@
       for (int i = 0; i < locals.size(); ++i) {
         JsName name = names.get(x.getLocals().get(i));
         String ident = name.getIdent();
-        if (!alreadySeen.contains(ident)) {
+        if (!alreadySeen.contains(ident)
+            // Catch block params don't need var declarations
+            && !catchParamIdentifiers.contains(name)) {
           alreadySeen.add(ident);
           vars.add(new JsVar(x.getSourceInfo(), name));
         }
@@ -1187,7 +1190,7 @@
           return;
         } else if (type != clinitTarget) {
           // replace the method with its retargeted clinit
-          method = clinitTarget.getMethods().get(0);
+          method = clinitTarget.getClinitMethod();
         }
       }
 
@@ -1774,7 +1777,7 @@
        * refs to super classes are preserved.
        */
       JMethodBody clinitBody =
-          (JMethodBody) program.getTypeClassLiteralHolder().getMethods().get(0).getBody();
+          (JMethodBody) program.getTypeClassLiteralHolder().getClinitMethod().getBody();
       for (JStatement stmt : clinitBody.getStatements()) {
         if (stmt instanceof JDeclarationStatement) {
           generateClassLiteral((JDeclarationStatement) stmt, vars);
@@ -2157,7 +2160,7 @@
         return null;
       }
 
-      JMethod clinitMethod = targetType.getMethods().get(0);
+      JMethod clinitMethod = targetType.getClinitMethod();
       SourceInfo sourceInfo = x.getSourceInfo();
       JsInvocation jsInvocation = new JsInvocation(sourceInfo);
       jsInvocation.setQualifier(names.get(clinitMethod).makeRef(sourceInfo));
@@ -2180,7 +2183,7 @@
         return null;
       }
 
-      JMethod clinitMethod = enclosingType.getClinitTarget().getMethods().get(0);
+      JMethod clinitMethod = enclosingType.getClinitTarget().getClinitMethod();
       SourceInfo sourceInfo = x.getSourceInfo();
       JsInvocation jsInvocation = new JsInvocation(sourceInfo);
       jsInvocation.setQualifier(names.get(clinitMethod).makeRef(sourceInfo));
@@ -2337,6 +2340,8 @@
 
   private final Map<JBlock, JsCatch> catchMap = new IdentityHashMap<JBlock, JsCatch>();
 
+  private final Set<JsName> catchParamIdentifiers = new HashSet<JsName>();
+
   private final Map<JClassType, JsScope> classScopes = new IdentityHashMap<JClassType, JsScope>();
 
   /**
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/GwtAstBuilder.java b/dev/core/src/com/google/gwt/dev/jjs/impl/GwtAstBuilder.java
index 30102bc..9423eeb 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/GwtAstBuilder.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/GwtAstBuilder.java
@@ -686,8 +686,7 @@
          * explicit this constructor call, in which case the callee will.
          */
         if (!hasExplicitThis) {
-          // $init is always in position 1 (clinit is in 0)
-          JMethod initMethod = curClass.type.getMethods().get(1);
+          JMethod initMethod = curClass.type.getInitMethod();
           JMethodCall initCall = new JMethodCall(info, makeThisRef(info), initMethod);
           block.addStmt(initCall.makeStatement());
         }
@@ -1743,11 +1742,11 @@
       JDeclaredType type = curClass.type;
       /*
        * Make clinits chain to super class (JDT doesn't write code to do this).
-       * Call super class $clinit; $clinit is always in position 0.
+       * Call super class $clinit;
        */
       if (type.getSuperClass() != null) {
-        JMethod myClinit = type.getMethods().get(0);
-        JMethod superClinit = type.getSuperClass().getMethods().get(0);
+        JMethod myClinit = type.getClinitMethod();
+        JMethod superClinit = type.getSuperClass().getClinitMethod();
         JMethodCall superClinitCall = new JMethodCall(myClinit.getSourceInfo(), null, superClinit);
         JMethodBody body = (JMethodBody) myClinit.getBody();
         body.getBlock().addStmt(0, superClinitCall.makeStatement());
@@ -2051,7 +2050,7 @@
       JNewArray newExpr = JNewArray.createInitializers(info, enumArrayType, initializers);
       JFieldRef valuesRef = new JFieldRef(info, null, valuesField, type);
       JDeclarationStatement declStmt = new JDeclarationStatement(info, valuesRef, newExpr);
-      JBlock clinitBlock = ((JMethodBody) type.getMethods().get(0).getBody()).getBlock();
+      JBlock clinitBlock = ((JMethodBody) type.getClinitMethod().getBody()).getBlock();
 
       /*
        * HACKY: the $VALUES array must be initialized immediately after all of
@@ -2374,16 +2373,25 @@
       }
     }
 
+    // Only called on nested instances constructors (explicitConstructorCalls) that are of the
+    // form: outer.super(...) or super(...)
+    //
+    // Will set outer (in the first case) or the implicit enclosing object reference to
+    // be the first parameter of super(...)
     private void processSuperCallThisArgs(ReferenceBinding superClass, JMethodCall call,
         JExpression qualifier, Expression qualification) {
+      // Explicit super calls can only happend inside constructors
+      assert curMethod.scope.isInsideConstructor();
       if (superClass.syntheticEnclosingInstanceTypes() != null) {
-        for (ReferenceBinding targetType : superClass.syntheticEnclosingInstanceTypes()) {
-          if (qualification != null && superClass.enclosingType() == targetType) {
-            assert qualification.resolvedType.erasure().isCompatibleWith(targetType);
-            call.addArg(qualifier);
-          } else {
-            call.addArg(makeThisReference(call.getSourceInfo(), targetType, false, curMethod.scope));
-          }
+        // there can only be ONE immediate enclosing instance.
+        assert superClass.syntheticEnclosingInstanceTypes().length == 1;
+        ReferenceBinding targetType = superClass.syntheticEnclosingInstanceTypes()[0];
+        if (qualification != null) {
+          // Outer object is the qualifier.
+          call.addArg(qualifier);
+        } else {
+          // Get implicit outer object.
+          call.addArg(makeThisReference(call.getSourceInfo(), targetType, false, curMethod.scope));
         }
       }
     }
@@ -2433,9 +2441,9 @@
     private void pushInitializerMethodInfo(FieldDeclaration x, MethodScope scope) {
       JMethod initMeth;
       if (x.isStatic()) {
-        initMeth = curClass.type.getMethods().get(0);
+        initMeth = curClass.type.getClinitMethod();
       } else {
-        initMeth = curClass.type.getMethods().get(1);
+        initMeth = curClass.type.getInitMethod();
       }
       pushMethodInfo(new MethodInfo(initMeth, (JMethodBody) initMeth.getBody(), scope));
     }
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/ImplementClassLiteralsAsFields.java b/dev/core/src/com/google/gwt/dev/jjs/impl/ImplementClassLiteralsAsFields.java
index d13c0fc..868cd93 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/ImplementClassLiteralsAsFields.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/ImplementClassLiteralsAsFields.java
@@ -113,7 +113,7 @@
     this.program = program;
     this.typeClassLiteralHolder = program.getTypeClassLiteralHolder();
     this.classLiteralHolderClinitBody =
-        (JMethodBody) typeClassLiteralHolder.getMethods().get(0).getBody();
+        (JMethodBody) typeClassLiteralHolder.getClinitMethod().getBody();
     assert program.getDeclaredTypes().contains(typeClassLiteralHolder);
   }
 
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/LongCastNormalizer.java b/dev/core/src/com/google/gwt/dev/jjs/impl/LongCastNormalizer.java
index 52df25c..be68c72 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/LongCastNormalizer.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/LongCastNormalizer.java
@@ -193,7 +193,7 @@
       if (targetType != longType && arg.getType() != longType) {
         return arg;
       }
-      return simplifier.cast(targetType, arg);
+      return Simplifier.cast(targetType, arg);
     }
   }
 
@@ -202,11 +202,9 @@
   }
 
   private final JProgram program;
-  private final Simplifier simplifier;
 
   private LongCastNormalizer(JProgram program) {
     this.program = program;
-    simplifier = new Simplifier(program);
   }
 
   private void execImpl() {
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/MethodInliner.java b/dev/core/src/com/google/gwt/dev/jjs/impl/MethodInliner.java
index 92eb2bb..beaf790 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/MethodInliner.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/MethodInliner.java
@@ -110,7 +110,7 @@
         List<JStatement> stmts = body.getStatements();
 
         if (method.getEnclosingType() != null
-            && method.getEnclosingType().getMethods().get(0) == method && !stmts.isEmpty()) {
+            && method.getEnclosingType().getClinitMethod() == method && !stmts.isEmpty()) {
           // clinit() calls cannot be inlined unless they are empty
           possibleToInline = false;
         } else if (!body.getLocals().isEmpty()) {
@@ -177,7 +177,7 @@
         return null;
       }
 
-      JMethod clinit = targetType.getMethods().get(0);
+      JMethod clinit = targetType.getClinitMethod();
 
       // If the clinit is a non-native, empty body we can optimize it out here
       if (!clinit.isNative() && (((JMethodBody) clinit.getBody())).getStatements().size() == 0) {
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/SameParameterValueOptimizer.java b/dev/core/src/com/google/gwt/dev/jjs/impl/SameParameterValueOptimizer.java
index 408afaf..5c53646 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/SameParameterValueOptimizer.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/SameParameterValueOptimizer.java
@@ -202,11 +202,9 @@
    * TODO: support polymorphic calls properly.
    */
   private final Set<JMethod> rescuedMethods = new HashSet<JMethod>();
-  private final Simplifier simplifier;
 
   private SameParameterValueOptimizer(JProgram program) {
     this.program = program;
-    simplifier = new Simplifier(program);
   }
 
   private OptimizerStats execImpl(JNode node) {
@@ -221,7 +219,7 @@
       JValueLiteral valueLiteral = parameterValues.get(parameter);
       if (valueLiteral != null) {
         SubstituteParameterVisitor substituteParameterVisitor =
-            new SubstituteParameterVisitor(parameter, simplifier.cast(parameter.getType(),
+            new SubstituteParameterVisitor(parameter, Simplifier.cast(parameter.getType(),
                 valueLiteral));
         substituteParameterVisitor.accept(parameter.getEnclosingMethod());
         stats.recordModified(substituteParameterVisitor.getNumMods());
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/Simplifier.java b/dev/core/src/com/google/gwt/dev/jjs/impl/Simplifier.java
index 66a66bf..65bebe3 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/Simplifier.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/Simplifier.java
@@ -29,7 +29,6 @@
 import com.google.gwt.dev.jjs.ast.JNode;
 import com.google.gwt.dev.jjs.ast.JPrefixOperation;
 import com.google.gwt.dev.jjs.ast.JPrimitiveType;
-import com.google.gwt.dev.jjs.ast.JProgram;
 import com.google.gwt.dev.jjs.ast.JReturnStatement;
 import com.google.gwt.dev.jjs.ast.JStatement;
 import com.google.gwt.dev.jjs.ast.JType;
@@ -61,7 +60,7 @@
    * Negate the supplied expression if negating it makes the expression shorter.
    * Otherwise, return null.
    */
-  static JExpression maybeUnflipBoolean(JExpression expr) {
+  private static JExpression maybeUnflipBoolean(JExpression expr) {
     if (expr instanceof JUnaryOperation) {
       JUnaryOperation unop = (JUnaryOperation) expr;
       if (unop.getOp() == JUnaryOperator.NOT) {
@@ -79,14 +78,57 @@
     return list.get(list.size() - 1);
   }
 
-  private final JProgram program;
-
-  public Simplifier(JProgram program) {
-    this.program = program;
+  /**
+   * This class provides only static methods. No instances will ever be created.
+   */
+  private Simplifier() {
   }
 
-  public JExpression cast(JExpression original, SourceInfo info, JType type, JExpression exp) {
+  /**
+   * Simplify cast operations. Used when creating a cast in DeadCodeElimination. For simplifying
+   * casts that are actually in the AST, cast(JCastOperation) is used instead.
+   *
+   * <pre>
+   * (int) 1 -> 1
+   * (A) (a,b) -> (a, (A) b)
+   * </pre>
+   *
+   * @param type the Type to cast the expression <code>exp</code> to.
+   * @param exp the current JExpression under the cast as it is being simplified.
+   * @return the simplified expression.
+   */
+  public static JExpression cast(JType type, JExpression exp) {
+    return castImpl(null, exp.getSourceInfo(), type, exp);
+  }
+
+  /**
+   * Simplify cast operations.
+   *
+   * <pre>
+   * (int) 1 -> 1
+   * (A) (a,b) -> (a, (A) b)
+   * </pre>
+   *
+   * @param exp a JCastOperation to be simplified.
+   * @return the simplified expression if a simplification was possible; <code>exp</code> otherwise.
+   */
+  public static JExpression cast(JCastOperation exp) {
+    return castImpl(exp, exp.getSourceInfo(), exp.getCastType(), exp.getExpr());
+  }
+
+  private static JExpression castImpl(JExpression original, SourceInfo info, JType type,
+      JExpression exp) {
     info = getBestSourceInfo(original, info, exp);
+    if (exp instanceof JMultiExpression) {
+      // (T)(a,b,c) -> a,b,(T) c
+      JMultiExpression expMulti = (JMultiExpression) exp;
+      JMultiExpression newMulti = new JMultiExpression(info);
+      newMulti.exprs.addAll(allButLast(expMulti.exprs));
+      newMulti.exprs.add(castImpl(null, info, type, last(expMulti.exprs)));
+      // TODO(rluble): immediately simplify the resulting multi.
+      // TODO(rluble): refactor common outward JMultiExpression movement.
+      return newMulti;
+    }
     if (type == exp.getType()) {
       return exp;
     }
@@ -105,10 +147,10 @@
      * implicit anyway. Cannot coerce char since that would change the semantics
      * of concat.
      */
-    if (type == program.getTypePrimitiveInt()) {
+    if (type == JPrimitiveType.INT) {
       JType expType = exp.getType();
-      if ((expType == program.getTypePrimitiveShort())
-          || (expType == program.getTypePrimitiveByte())) {
+      if ((expType == JPrimitiveType.SHORT)
+          || (expType == JPrimitiveType.BYTE)) {
         return exp;
       }
     }
@@ -120,11 +162,29 @@
     return new JCastOperation(info, type, exp);
   }
 
-  public JExpression cast(JType type, JExpression exp) {
-    return cast(null, exp.getSourceInfo(), type, exp);
+  /**
+   * Simplify conditional expressions.
+   *
+   * <pre>
+   * (a,b,c)?d:e -> a,b,(c?d:e)
+   * true ? then : else -> then
+   * false ? then : else -> else
+   * cond ? true : else) -> cond || else
+   * cond ? false : else -> !cond && else
+   * cond ? then : true -> !cond || then
+   * cond ? then : false -> cond && then
+   * !cond ? then : else -> cond ? else : then
+   * </pre>
+   *
+   * @param exp a JCondintional to be simplified.
+   * @return the simplified expression if a simplification was possible; <code>exp</code> otherwise.
+   */
+  public static JExpression conditional(JConditional exp) {
+    return conditionalImpl(exp, exp.getSourceInfo(), exp.getType(), exp.getIfTest(),
+        exp.getThenExpr(), exp.getElseExpr());
   }
 
-  public JExpression conditional(JConditional original, SourceInfo info, JType type,
+  private static JExpression conditionalImpl(JConditional original, SourceInfo info, JType type,
       JExpression condExpr, JExpression thenExpr, JExpression elseExpr) {
     info = getBestSourceInfo(original, info, condExpr);
     if (condExpr instanceof JMultiExpression) {
@@ -133,7 +193,8 @@
       JMultiExpression condMulti = (JMultiExpression) condExpr;
       JMultiExpression newMulti = new JMultiExpression(info);
       newMulti.exprs.addAll(allButLast(condMulti.exprs));
-      newMulti.exprs.add(conditional(null, info, type, last(condMulti.exprs), thenExpr, elseExpr));
+      newMulti.exprs.add(conditionalImpl(null, info, type, last(condMulti.exprs), thenExpr,
+          elseExpr));
       // TODO(spoon): immediately simplify the resulting multi
       return newMulti;
     }
@@ -148,20 +209,20 @@
     } else if (thenExpr instanceof JBooleanLiteral) {
       if (((JBooleanLiteral) thenExpr).getValue()) {
         // e.g. (cond ? true : else) -> cond || else
-        return shortCircuitOr(null, info, condExpr, elseExpr);
+        return orImpl(null, info, condExpr, elseExpr);
       } else {
         // e.g. (cond ? false : else) -> !cond && else
-        JExpression notCondExpr = not(null, condExpr.getSourceInfo(), condExpr);
-        return shortCircuitAnd(null, info, notCondExpr, elseExpr);
+        JExpression notCondExpr = notImpl(null, condExpr.getSourceInfo(), condExpr);
+        return andImpl(null, info, notCondExpr, elseExpr);
       }
     } else if (elseExpr instanceof JBooleanLiteral) {
       if (((JBooleanLiteral) elseExpr).getValue()) {
         // e.g. (cond ? then : true) -> !cond || then
-        JExpression notCondExpr = not(null, condExpr.getSourceInfo(), condExpr);
-        return shortCircuitOr(null, info, notCondExpr, thenExpr);
+        JExpression notCondExpr = notImpl(null, condExpr.getSourceInfo(), condExpr);
+        return orImpl(null, info, notCondExpr, thenExpr);
       } else {
         // e.g. (cond ? then : false) -> cond && then
-        return shortCircuitAnd(null, info, condExpr, thenExpr);
+        return andImpl(null, info, condExpr, thenExpr);
       }
     } else {
       // e.g. (!cond ? then : else) -> (cond ? else : then)
@@ -178,8 +239,31 @@
     return new JConditional(info, type, condExpr, thenExpr, elseExpr);
   }
 
-  public JStatement ifStatement(JIfStatement original, SourceInfo info, JExpression condExpr,
-      JStatement thenStmt, JStatement elseStmt, JMethod currentMethod) {
+  /**
+   * Simplifies an ifthenelse statement.
+   *
+   * <pre>
+   * if(a,b,c) d [else e] -> {a; b; if(c) d [else e]; }
+   * if(true) a [else b] -> a
+   * if(false) a else b -> b
+   * if(notImpl(c)) a else b -> if(c) b else a
+   * if(true) ; else b -> true
+   * if(false) a [else ;] -> false
+   * if(c) ; [else ;] -> c
+   *</pre>
+   *
+   * @param stmt the statement to simplify.
+   * @param currentMethod the method where the statement resides
+   * @return the simplified statement if a simplification could be done and <code>stmt</code>
+   *         otherwise.
+   */
+  public static JStatement ifStatement(JIfStatement stmt,  JMethod currentMethod) {
+    return ifStatementImpl(stmt, stmt.getSourceInfo(), stmt.getIfExpr(),
+        stmt.getThenStmt(), stmt.getElseStmt(), currentMethod);
+  }
+
+  private static JStatement ifStatementImpl(JIfStatement original, SourceInfo info,
+      JExpression condExpr, JStatement thenStmt,JStatement elseStmt, JMethod currentMethod) {
     info = getBestSourceInfo(original, info, condExpr);
     if (condExpr instanceof JMultiExpression) {
       // if(a,b,c) d else e -> {a; b; if(c) d else e; }
@@ -188,7 +272,7 @@
       for (JExpression expr : allButLast(condMulti.exprs)) {
         newBlock.addStmt(expr.makeStatement());
       }
-      newBlock.addStmt(ifStatement(null, info, last(condMulti.exprs), thenStmt, elseStmt,
+      newBlock.addStmt(ifStatementImpl(null, info, last(condMulti.exprs), thenStmt, elseStmt,
           currentMethod));
       // TODO(spoon): immediately simplify the resulting block
       return newBlock;
@@ -221,7 +305,7 @@
         // TODO: this goes away when we normalize the Java AST properly.
         thenStmt = ensureBlock(thenStmt);
         elseStmt = ensureBlock(elseStmt);
-        return ifStatement(null, info, unflipped, elseStmt, thenStmt, currentMethod);
+        return ifStatementImpl(null, info, unflipped, elseStmt, thenStmt, currentMethod);
       }
     }
 
@@ -238,14 +322,27 @@
     return new JIfStatement(info, condExpr, thenStmt, elseStmt);
   }
 
-  public JExpression not(JPrefixOperation original, SourceInfo info, JExpression arg) {
+  /**
+   * Simplifies an negation expression.
+   *
+   * if(a,b,c) d else e -> {a; b; if(c) d else e; }
+   *
+   * @param expr the expression to simplify.
+   * @return the simplified expression if a simplification could be done and <code>expr</code>
+   *         otherwise.
+   */
+  public static JExpression not(JPrefixOperation expr) {
+    return notImpl(expr, expr.getSourceInfo(), expr.getArg());
+  }
+
+  private static JExpression notImpl(JPrefixOperation original, SourceInfo info, JExpression arg) {
     info = getBestSourceInfo(original, info, arg);
     if (arg instanceof JMultiExpression) {
       // !(a,b,c) -> (a,b,!c)
       JMultiExpression argMulti = (JMultiExpression) arg;
       JMultiExpression newMulti = new JMultiExpression(info);
       newMulti.exprs.addAll(allButLast(argMulti.exprs));
-      newMulti.exprs.add(not(null, info, last(argMulti.exprs)));
+      newMulti.exprs.add(notImpl(null, info, last(argMulti.exprs)));
       // TODO(spoon): immediately simplify the newMulti
       return newMulti;
     }
@@ -300,18 +397,39 @@
 
   /**
    * Simplify short circuit AND expressions.
-   * 
+   *
    * <pre>
-   * if (true && isWhatever()) -> if (isWhatever())
-   * if (false && isWhatever()) -> if (false)
-   * 
-   * if (isWhatever() && true) -> if (isWhatever())
-   * if (isWhatever() && false) -> if (false), unless side effects
+   * true && isWhatever() -> isWhatever()
+   * false && isWhatever() -> false
+   *
+   * isWhatever() && true -> isWhatever()
+   * isWhatever() && false -> false, unless side effects
+   *
+   * (a, b) && c -> (a, b && c)
    * </pre>
+   *
+   * @param exp an AND JBinaryExpression to be simplified.
+   * @return the simplified expression if a simplification was possible; <code>exp</code> otherwise.
+   *
    */
-  public JExpression shortCircuitAnd(JBinaryOperation original, SourceInfo info, JExpression lhs,
+  public static JExpression and(JBinaryOperation exp) {
+    assert exp.getOp() == JBinaryOperator.AND : "Simplifier.and was called with " + exp;
+    return andImpl(exp, null, exp.getLhs(), exp.getRhs());
+  }
+
+  private static JExpression andImpl(JBinaryOperation original, SourceInfo info, JExpression lhs,
       JExpression rhs) {
     info = getBestSourceInfo(original, info, lhs);
+    if (lhs instanceof JMultiExpression) {
+      // (a,b,c)&&d -> a,b,(c&&d)
+      JMultiExpression lhsMulti = (JMultiExpression) lhs;
+      JMultiExpression newMulti = new JMultiExpression(info);
+      newMulti.exprs.addAll(allButLast(lhsMulti.exprs));
+      newMulti.exprs.add(andImpl(null, info, last(lhsMulti.exprs), rhs));
+      // TODO(rluble): immediately simplify the resulting multi.
+      // TODO(rluble): refactor common outward JMultiExpression movement.
+      return newMulti;
+    }
     if (lhs instanceof JBooleanLiteral) {
       JBooleanLiteral booleanLiteral = (JBooleanLiteral) lhs;
       if (booleanLiteral.getValue()) {
@@ -337,18 +455,39 @@
 
   /**
    * Simplify short circuit OR expressions.
-   * 
+   *
    * <pre>
-   * if (true || isWhatever()) -> if (true)
-   * if (false || isWhatever()) -> if (isWhatever())
-   * 
-   * if (isWhatever() || false) -> if (isWhatever())
-   * if (isWhatever() || true) -> if (true), unless side effects
+   * true || isWhatever() -> true
+   * false || isWhatever() -> isWhatever()
+   *
+   * isWhatever() || false isWhatever()
+   * isWhatever() || true -> true, unless side effects
+   *
+   * (a, b) || c -> (a, b || c)
    * </pre>
+   *
+   * @param exp an OR JBinaryExpression to be simplified.
+   * @return the simplified expression if a simplification was possible; <code>exp</code> otherwise.
+   *
    */
-  public JExpression shortCircuitOr(JBinaryOperation original, SourceInfo info, JExpression lhs,
+  public static JExpression or(JBinaryOperation exp) {
+    assert exp.getOp() == JBinaryOperator.OR : "Simplifier.and was called with " + exp;
+    return orImpl(exp, null, exp.getLhs(), exp.getRhs());
+  }
+
+  private static JExpression orImpl(JBinaryOperation original, SourceInfo info, JExpression lhs,
       JExpression rhs) {
     info = getBestSourceInfo(original, info, lhs);
+    if (lhs instanceof JMultiExpression) {
+      // (a,b,c)|| d -> a,b,(c||d)
+      JMultiExpression lhsMulti = (JMultiExpression) lhs;
+      JMultiExpression newMulti = new JMultiExpression(info);
+      newMulti.exprs.addAll(allButLast(lhsMulti.exprs));
+      newMulti.exprs.add(orImpl(null, info, last(lhsMulti.exprs), rhs));
+      // TODO(rluble): immediately simplify the resulting multi.
+      // TODO(rluble): refactor common outward JMultiExpression movement.
+      return newMulti;
+    }
     if (lhs instanceof JBooleanLiteral) {
       JBooleanLiteral booleanLiteral = (JBooleanLiteral) lhs;
       if (booleanLiteral.getValue()) {
@@ -356,7 +495,6 @@
       } else {
         return rhs;
       }
-
     } else if (rhs instanceof JBooleanLiteral) {
       JBooleanLiteral booleanLiteral = (JBooleanLiteral) rhs;
       if (!booleanLiteral.getValue()) {
@@ -372,7 +510,7 @@
     return new JBinaryOperation(info, rhs.getType(), JBinaryOperator.OR, lhs, rhs);
   }
 
-  private JStatement ensureBlock(JStatement stmt) {
+  private static JStatement ensureBlock(JStatement stmt) {
     if (stmt == null) {
       return null;
     }
@@ -384,7 +522,7 @@
     return stmt;
   }
 
-  private JExpression extractExpression(JStatement stmt) {
+  private static JExpression extractExpression(JStatement stmt) {
     if (stmt instanceof JExpressionStatement) {
       JExpressionStatement statement = (JExpressionStatement) stmt;
       return statement.getExpr();
@@ -393,7 +531,7 @@
     return null;
   }
 
-  private JStatement extractSingleStatement(JStatement stmt) {
+  private static JStatement extractSingleStatement(JStatement stmt) {
     if (stmt instanceof JBlock) {
       JBlock block = (JBlock) stmt;
       if (block.getStatements().size() == 1) {
@@ -404,7 +542,15 @@
     return stmt;
   }
 
-  private SourceInfo getBestSourceInfo(JNode original, SourceInfo info, JNode defaultNode) {
+  /**
+   * Determine the best SourceInfo to use in a particular transformation.
+   *
+   * @param original the original node that is being transformed. Can be <code>null</code>.
+   * @param info an explicit SourceInfo that might be used, Can be <code>null</code>.
+   * @param defaultNode a node from where to obtain the SourceInfo.
+   * @return a SourceInfo chosen according to the following priority info>original>default.
+   */
+  private static SourceInfo getBestSourceInfo(JNode original, SourceInfo info, JNode defaultNode) {
     if (info == null) {
       if (original == null) {
         info = defaultNode.getSourceInfo();
@@ -415,7 +561,7 @@
     return info;
   }
 
-  private JStatement rewriteIfIntoBoolean(SourceInfo sourceInfo, JExpression condExpr,
+  private static JStatement rewriteIfIntoBoolean(SourceInfo sourceInfo, JExpression condExpr,
       JStatement thenStmt, JStatement elseStmt, JMethod currentMethod) {
     thenStmt = extractSingleStatement(thenStmt);
     elseStmt = extractSingleStatement(elseStmt);
@@ -466,7 +612,7 @@
         }
 
         JBinaryOperation binaryOperation =
-            new JBinaryOperation(sourceInfo, program.getTypeVoid(), binaryOperator, condExpr,
+            new JBinaryOperation(sourceInfo, JPrimitiveType.VOID, binaryOperator, condExpr,
                 thenExpression);
 
         return binaryOperation.makeStatement();
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/TypeTightener.java b/dev/core/src/com/google/gwt/dev/jjs/impl/TypeTightener.java
index d93006c..70ec21c 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/TypeTightener.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/TypeTightener.java
@@ -870,10 +870,13 @@
       if (!tightener.didChange()) {
         break;
       }
+    }
 
+    if (stats.didChange()) {
       FixDanglingRefsVisitor fixer = new FixDanglingRefsVisitor();
       fixer.accept(program);
     }
+
     return stats;
   }
 }
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/UnifyAst.java b/dev/core/src/com/google/gwt/dev/jjs/impl/UnifyAst.java
index b6967c4..5aa134c 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/UnifyAst.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/UnifyAst.java
@@ -498,7 +498,7 @@
    */
   private final Set<JNode> liveFieldsAndMethods = new IdentityHashSet<JNode>();
 
-  private TreeLogger logger;
+  private final TreeLogger logger;
   private Set<JMethod> magicMethodCalls = new IdentityHashSet<JMethod>();
   private final Map<String, JMethod> methodMap = new HashMap<String, JMethod>();
   private final JJSOptions options;
@@ -515,8 +515,9 @@
   private final Map<String, List<JMethod>> virtualMethodsPending =
       new java.util.HashMap<String, List<JMethod>>();
 
-  public UnifyAst(JProgram program, JsProgram jsProgram, JJSOptions options,
+  public UnifyAst(TreeLogger logger, JProgram program, JsProgram jsProgram, JJSOptions options,
       RebindPermutationOracle rpo) {
+    this.logger = logger;
     this.program = program;
     this.jsProgram = jsProgram;
     this.options = options;
@@ -538,8 +539,7 @@
    * Special AST construction, useful for tests. Everything is resolved,
    * translated, and unified.
    */
-  public void buildEverything(TreeLogger logger) throws UnableToCompleteException {
-    this.logger = logger;
+  public void buildEverything() throws UnableToCompleteException {
     for (String internalName : classFileMap.keySet()) {
       String typeName = InternalName.toBinaryName(internalName);
       searchForTypeByBinary(typeName);
@@ -568,9 +568,7 @@
    * entry points. This reduces memory and improves compile speed. Any
    * unreachable elements are pruned.
    */
-  public void exec(TreeLogger logger) throws UnableToCompleteException {
-    this.logger = logger;
-
+  public void exec() throws UnableToCompleteException {
     // Trace execution from entry points.
     for (JMethod entryMethod : program.getEntryMethods()) {
       flowInto(entryMethod);
@@ -641,7 +639,7 @@
       }
 
       // Special clinit handling.
-      JMethod clinit = type.getMethods().get(0);
+      JMethod clinit = type.getClinitMethod();
       if (!liveFieldsAndMethods.contains(clinit)) {
         clinit.setBody(new JMethodBody(SourceOrigin.UNKNOWN));
       }
@@ -994,7 +992,7 @@
       assert errorsFound;
       return;
     }
-    JMethod clinit = type.getMethods().get(0);
+    JMethod clinit = type.getClinitMethod();
     if (!liveFieldsAndMethods.contains(clinit)) {
       flowInto(clinit);
       if (type.getSuperClass() != null) {
diff --git a/dev/core/src/com/google/gwt/dev/shell/GWTShellServlet.java b/dev/core/src/com/google/gwt/dev/shell/GWTShellServlet.java
deleted file mode 100644
index 9e7ead7..0000000
--- a/dev/core/src/com/google/gwt/dev/shell/GWTShellServlet.java
+++ /dev/null
@@ -1,991 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.dev.shell;
-
-import com.google.gwt.core.ext.TreeLogger;
-import com.google.gwt.core.ext.UnableToCompleteException;
-import com.google.gwt.core.ext.linker.ArtifactSet;
-import com.google.gwt.core.ext.linker.impl.HostedModeLinker;
-import com.google.gwt.core.ext.linker.impl.StandardLinkerContext;
-import com.google.gwt.dev.cfg.ModuleDef;
-import com.google.gwt.dev.cfg.ModuleDefLoader;
-import com.google.gwt.dev.jjs.JJSOptionsImpl;
-import com.google.gwt.dev.resource.Resource;
-import com.google.gwt.dev.shell.log.ServletContextTreeLogger;
-import com.google.gwt.dev.util.HttpHeaders;
-import com.google.gwt.dev.util.Util;
-import com.google.gwt.thirdparty.guava.common.collect.MapMaker;
-import com.google.gwt.util.tools.Utility;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.PrintWriter;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Built-in servlet for convenient access to the public path of a specified
- * module.
- */
-public class GWTShellServlet extends HttpServlet {
-
-  private static class RequestParts {
-    public final String moduleName;
-
-    public final String partialPath;
-
-    public RequestParts(HttpServletRequest request)
-        throws UnableToCompleteException {
-      String pathInfo = request.getPathInfo();
-      if (pathInfo != null) {
-        int slash = pathInfo.indexOf('/', 1);
-        if (slash != -1) {
-          moduleName = pathInfo.substring(1, slash);
-          partialPath = pathInfo.substring(slash + 1);
-          return;
-        } else {
-          moduleName = pathInfo.substring(1);
-          partialPath = null;
-          return;
-        }
-      }
-      throw new UnableToCompleteException();
-    }
-  }
-
-  /**
-   * This the default cache time in seconds for files that aren't either
-   * *.cache.*, *.nocache.*.
-   */
-  private static final int DEFAULT_CACHE_SECONDS = 5;
-
-  private static final String XHTML_MIME_TYPE = "application/xhtml+xml";
-
-  /**
-   * Must keep only weak references to ModuleDefs else we permanently pin them.
-   */
-  private final Map<String, ModuleDef> loadedModulesByName = new MapMaker().weakValues().makeMap();
-
-  /**
-   * The lifetime of the module pins the lifetime of the associated servlet;
-   * this is because the loaded servlet has a weak backRef to its live module
-   * through its context. When the module dies, the servlet needs to die also.
-   */
-  private final Map<ModuleDef, Map<String, HttpServlet>> loadedServletsByModuleAndClassName =
-      new MapMaker().weakKeys().makeMap();
-
-  private final Map<String, String> mimeTypes = new HashMap<String, String>();
-
-  /**
-   * Only for backwards compatibility. Shouldn't we remove this now?
-   */
-  private final Map<String, ModuleDef> modulesByServletPath = new MapMaker().weakValues().makeMap();
-
-  private int nextRequestId;
-
-  private final Object requestIdLock = new Object();
-
-  private TreeLogger topLogger;
-
-  private WorkDirs workDirs;
-
-  public GWTShellServlet() {
-    initMimeTypes();
-  }
-
-  @Override
-  protected void doGet(HttpServletRequest request, HttpServletResponse response)
-      throws ServletException, IOException {
-    processFileRequest(request, response);
-  }
-
-  @Override
-  protected void doPost(HttpServletRequest request, HttpServletResponse response)
-      throws ServletException, IOException {
-    processFileRequest(request, response);
-  }
-
-  protected void processFileRequest(HttpServletRequest request,
-      HttpServletResponse response) throws IOException {
-
-    String pathInfo = request.getPathInfo();
-    if (pathInfo.length() == 0 || pathInfo.equals("/")) {
-      response.setContentType("text/html");
-      PrintWriter writer = response.getWriter();
-      writer.println("<html><body><basefont face='arial'>");
-      writer.println("To launch an application, specify a URL of the form <code>/<i>module</i>/<i>file.html</i></code>");
-      writer.println("</body></html>");
-      return;
-    }
-
-    TreeLogger logger = getLogger();
-
-    // Parse the request assuming it is module/resource.
-    //
-    RequestParts parts;
-    try {
-      parts = new RequestParts(request);
-    } catch (UnableToCompleteException e) {
-      sendErrorResponse(response, HttpServletResponse.SC_NOT_FOUND,
-          "Don't know what to do with this URL: '" + pathInfo + "'");
-      return;
-    }
-
-    String partialPath = parts.partialPath;
-    String moduleName = parts.moduleName;
-
-    // If the module is renamed, substitute the renamed module name
-    ModuleDef moduleDef = loadedModulesByName.get(moduleName);
-    if (moduleDef != null) {
-      moduleName = moduleDef.getName();
-    }
-
-    if (partialPath == null) {
-      // Redir back to the same URL but ending with a slash.
-      //
-      response.sendRedirect(moduleName + "/");
-      return;
-    } else if (partialPath.length() > 0) {
-      // Both the module name and a resource.
-      //
-      doGetPublicFile(request, response, logger, partialPath, moduleName);
-      return;
-    } else {
-      // Was just the module name, ending with a slash.
-      //
-      doGetModule(request, response, logger, parts);
-      return;
-    }
-  }
-
-  @Override
-  protected void service(HttpServletRequest request,
-      HttpServletResponse response) throws ServletException, IOException {
-
-    TreeLogger logger = getLogger();
-    int id = allocateRequestId();
-    if (logger.isLoggable(TreeLogger.TRACE)) {
-      StringBuffer url = request.getRequestURL();
-
-      // Branch the logger in case we decide to log more below.
-      logger = logger.branch(TreeLogger.TRACE, "Request " + id + ": " + url,
-          null);
-    }
-
-    String servletClassName = null;
-    ModuleDef moduleDef = null;
-
-    try {
-      // Attempt to split the URL into module/path, which we'll use to see
-      // if we can map the request to a module's servlet.
-      RequestParts parts = new RequestParts(request);
-
-      if ("favicon.ico".equalsIgnoreCase(parts.moduleName)) {
-        sendErrorResponse(response, HttpServletResponse.SC_NOT_FOUND,
-            "Icon not available");
-        return;
-      }
-
-      // See if the request references a module we know.
-      moduleDef = getModuleDef(logger, parts.moduleName);
-      if (moduleDef != null) {
-        // Okay, we know this module. Do we know this servlet path?
-        // It is right to prepend the slash because (1) ModuleDefSchema requires
-        // every servlet path to begin with a slash and (2) RequestParts always
-        // rips off the leading slash.
-        String servletPath = "/" + parts.partialPath;
-        servletClassName = moduleDef.findServletForPath(servletPath);
-
-        // Fall-through below, where we check servletClassName.
-      } else {
-        // Fall-through below, where we check servletClassName.
-      }
-    } catch (UnableToCompleteException e) {
-      // Do nothing, since it was speculative anyway.
-    }
-
-    // BEGIN BACKWARD COMPATIBILITY
-    if (servletClassName == null) {
-      // Try to map a bare path that isn't preceded by the module name.
-      // This is no longer the recommended practice, so we warn.
-      String path = request.getPathInfo();
-      moduleDef = modulesByServletPath.get(path);
-      if (moduleDef != null) {
-        // See if there is a servlet we can delegate to for the given url.
-        servletClassName = moduleDef.findServletForPath(path);
-
-        if (servletClassName != null) {
-          TreeLogger branch = logger.branch(TreeLogger.WARN,
-              "Use of deprecated hosted mode servlet path mapping", null);
-          branch.log(
-              TreeLogger.WARN,
-              "The client code is invoking the servlet with a URL that is not module-relative: "
-                  + path, null);
-          branch.log(
-              TreeLogger.WARN,
-              "Prepend GWT.getModuleBaseURL() to the URL in client code to create a module-relative URL: /"
-                  + moduleDef.getName() + path, null);
-          branch.log(
-              TreeLogger.WARN,
-              "Using module-relative URLs ensures correct URL-independent behavior in external servlet containers",
-              null);
-        }
-
-        // Fall-through below, where we check servletClassName.
-      } else {
-        // Fall-through below, where we check servletClassName.
-      }
-    }
-    // END BACKWARD COMPATIBILITY
-
-    // Load/get the servlet if we found one.
-    if (servletClassName != null) {
-      HttpServlet delegatee = tryGetOrLoadServlet(logger, moduleDef,
-          servletClassName);
-      if (delegatee == null) {
-        logger.log(TreeLogger.ERROR, "Unable to dispatch request", null);
-        sendErrorResponse(response,
-            HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
-            "Unable to find/load mapped servlet class '" + servletClassName
-                + "'");
-        return;
-      }
-
-      // Delegate everything to the downstream servlet and we're done.
-      delegatee.service(request, response);
-    } else {
-      // Use normal default processing on this request, since we couldn't
-      // recognize it as anything special.
-      super.service(request, response);
-    }
-  }
-
-  private int allocateRequestId() {
-    synchronized (requestIdLock) {
-      return nextRequestId++;
-    }
-  }
-
-  /**
-   * Handle auto-generated resources.
-   * 
-   * @return <code>true</code> if a resource was generated
-   */
-  private boolean autoGenerateResources(HttpServletRequest request,
-      HttpServletResponse response, TreeLogger logger, String partialPath,
-      String moduleName) throws IOException {
-
-    if (partialPath.equals(moduleName + ".nocache.js")) {
-      if (request.getParameter("compiled") == null) {
-        // Generate the .js file.
-        try {
-          String js = genSelectionScript(logger, moduleName);
-          setResponseCacheHeaders(response, 0); // do not cache selection script
-          response.setStatus(HttpServletResponse.SC_OK);
-          response.setContentType("text/javascript");
-          response.getWriter().println(js);
-          return true;
-        } catch (UnableToCompleteException e) {
-          // The error will have already been logged. Continue, since this could
-          // actually be a request for a static file that happens to have an
-          // unfortunately confusing name.
-        }
-      }
-    } else if (partialPath.equals("hosted.html")) {
-      String html = HostedModeLinker.getHostedHtml();
-      setResponseCacheHeaders(response, DEFAULT_CACHE_SECONDS);
-      response.setStatus(HttpServletResponse.SC_OK);
-      response.setContentType("text/html");
-      response.getWriter().println(html);
-      return true;
-    }
-
-    return false;
-  }
-
-  private void doGetModule(HttpServletRequest request,
-      HttpServletResponse response, TreeLogger logger, RequestParts parts)
-      throws IOException {
-
-    // Generate a generic empty host page.
-    //
-    String msg = "The development shell servlet received a request to generate a host page for module '"
-        + parts.moduleName + "' ";
-
-    logger = logger.branch(TreeLogger.TRACE, msg, null);
-
-    try {
-      // Try to load the module just to make sure it'll work.
-      getModuleDef(logger, parts.moduleName);
-    } catch (UnableToCompleteException e) {
-      sendErrorResponse(response, HttpServletResponse.SC_NOT_FOUND,
-          "Unable to find/load module '" + Util.escapeXml(parts.moduleName)
-              + "' (see server log for details)");
-      return;
-    }
-
-    response.setContentType("text/html");
-    PrintWriter writer = response.getWriter();
-    writer.println("<html><head>");
-    writer.print("<script language='javascript' src='");
-    writer.print(parts.moduleName);
-    writer.println(".nocache.js'></script>");
-
-    // Create a property for each query param.
-    Map<String, String[]> params = getParameterMap(request);
-    for (Map.Entry<String, String[]> entry : params.entrySet()) {
-      String[] values = entry.getValue();
-      if (values.length > 0) {
-        writer.print("<meta name='gwt:property' content='");
-        writer.print(entry.getKey());
-        writer.print("=");
-        writer.print(values[values.length - 1]);
-        writer.println("'>");
-      }
-    }
-
-    writer.println("</head><body>");
-    writer.println("<iframe src=\"javascript:''\" id='__gwt_historyFrame' "
-        + "style='position:absolute;width:0;height:0;border:0'></iframe>");
-    writer.println("<noscript>");
-    writer.println("  <div style=\"width: 22em; position: absolute; left: 50%; margin-left: -11em; color: red; background-color: white; border: 1px solid red; padding: 4px; font-family: sans-serif\">");
-    writer.println("    Your web browser must have JavaScript enabled");
-    writer.println("    in order for this application to display correctly.");
-    writer.println("  </div>");
-    writer.println("</noscript>");
-    writer.println("</body></html>");
-
-    // Done.
-  }
-
-  /**
-   * Fetch a file and return it as the HTTP response, setting the cache-related
-   * headers according to the name of the file (see
-   * {@link #getCacheTime(String)}). This function honors If-Modified-Since to
-   * minimize the impact of limiting caching of files for development.
-   * 
-   * @param request the HTTP request
-   * @param response the HTTP response
-   * @param logger a TreeLogger to use for debug output
-   * @param partialPath the path within the module
-   * @param moduleName the name of the module
-   * @throws IOException
-   */
-  @SuppressWarnings("deprecation")
-  private void doGetPublicFile(HttpServletRequest request,
-      HttpServletResponse response, TreeLogger logger, String partialPath,
-      String moduleName) throws IOException {
-
-    // Create a logger branch for this request.
-    logger = logger.branch(TreeLogger.TRACE,
-        "The development shell servlet received a request for '"
-        + partialPath + "' in module '" + moduleName + ".gwt.xml' ", null);
-
-    // Handle auto-generation of resources.
-    if (shouldAutoGenerateResources()) {
-      if (autoGenerateResources(request, response, logger, partialPath,
-          moduleName)) {
-        return;
-      }
-    }
-
-    URL foundResource = null;
-    try {
-      // Look for the requested file on the public path.
-      //
-      ModuleDef moduleDef = getModuleDef(logger, moduleName);
-      if (shouldAutoGenerateResources()) {
-        Resource publicResource = moduleDef.findPublicFile(partialPath);
-        if (publicResource != null) {
-          foundResource = publicResource.getURL();
-        }
-
-        if (foundResource == null) {
-          // Look for public generated files
-          File shellDir = getShellWorkDirs().getShellPublicGenDir(moduleDef);
-          File requestedFile = new File(shellDir, partialPath);
-          if (requestedFile.exists()) {
-            try {
-              foundResource = requestedFile.toURI().toURL();
-            } catch (MalformedURLException e) {
-              // ignore since it was speculative anyway
-            }
-          }
-        }
-      }
-
-      /*
-       * If the user is coming from compiled web-mode, check the linker output
-       * directory for the real bootstrap file.
-       */
-      if (foundResource == null) {
-        File moduleDir = getShellWorkDirs().getCompilerOutputDir(moduleDef);
-        File requestedFile = new File(moduleDir, partialPath);
-        if (requestedFile.exists()) {
-          try {
-            foundResource = requestedFile.toURI().toURL();
-          } catch (MalformedURLException e) {
-            // ignore since it was speculative anyway
-          }
-        }
-      }
-
-      if (foundResource == null) {
-        String msg;
-        if ("gwt.js".equals(partialPath)) {
-          msg = "Loading the old 'gwt.js' bootstrap script is no longer supported; please load '"
-              + moduleName + ".nocache.js' directly";
-        } else {
-          msg = "Resource not found: " + partialPath + "; "
-              + "(could a file be missing from the public path or a <servlet> "
-              + "tag misconfigured in module " + moduleName + ".gwt.xml ?)";
-        }
-        logger.log(TreeLogger.WARN, msg, null);
-        throw new UnableToCompleteException();
-      }
-    } catch (UnableToCompleteException e) {
-      sendErrorResponse(response, HttpServletResponse.SC_NOT_FOUND,
-          "Cannot find resource '" + partialPath
-              + "' in the public path of module '" + moduleName + "'");
-      return;
-    }
-
-    // Get the MIME type.
-    String path = foundResource.toExternalForm();
-    String mimeType = null;
-    try {
-      mimeType = getServletContext().getMimeType(path);
-    } catch (UnsupportedOperationException e) {
-      // Certain minimalist servlet containers throw this.
-      // Fall through to guess the type.
-    }
-
-    if (mimeType == null) {
-      mimeType = guessMimeType(path);
-      if (logger.isLoggable(TreeLogger.TRACE)) {
-        logger.log(TreeLogger.TRACE, "Guessed MIME type '" + mimeType + "'", null);
-      }
-    }
-
-    maybeIssueXhtmlWarning(logger, mimeType, partialPath);
-
-    long cacheSeconds = getCacheTime(path);
-
-    InputStream is = null;
-    try {
-      // Check for up-to-datedness.
-      URLConnection conn = foundResource.openConnection();
-      long lastModified = conn.getLastModified();
-      if (isNotModified(request, lastModified)) {
-        response.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
-        setResponseCacheHeaders(response, cacheSeconds);
-        return;
-      }
-
-      // Set up headers to really send it.
-      response.setStatus(HttpServletResponse.SC_OK);
-      long now = new Date().getTime();
-      response.setHeader(HttpHeaders.DATE,
-          HttpHeaders.toInternetDateFormat(now));
-      response.setContentType(mimeType);
-      String lastModifiedStr = HttpHeaders.toInternetDateFormat(lastModified);
-      response.setHeader(HttpHeaders.LAST_MODIFIED, lastModifiedStr);
-
-      // Expiration header. Either immediately stale (requiring an
-      // "If-Modified-Since") or infinitely cacheable (not requiring even a
-      // freshness check).
-      setResponseCacheHeaders(response, cacheSeconds);
-
-      // Content length.
-      int contentLength = conn.getContentLength();
-      if (contentLength >= 0) {
-        response.setHeader(HttpHeaders.CONTENT_LENGTH,
-            Integer.toString(contentLength));
-      }
-
-      // Send the bytes.
-      is = conn.getInputStream();
-      streamOut(is, response.getOutputStream(), 1024 * 8);
-    } finally {
-      Utility.close(is);
-    }
-  }
-
-  /**
-   * Generates a module.js file on the fly. Note that the nocache file that is
-   * generated that can only be used for hosted mode. It cannot produce a web
-   * mode version, since this servlet doesn't know strong names, since by
-   * definition of "hosted mode" JavaScript hasn't been compiled at this point.
-   */
-  private String genSelectionScript(TreeLogger logger, String moduleName)
-      throws UnableToCompleteException {
-    if (logger.isLoggable(TreeLogger.TRACE)) {
-      logger.log(TreeLogger.TRACE,
-          "Generating a script selection script for module " + moduleName);
-    }
-    ModuleDef module = getModuleDef(logger, moduleName);
-    StandardLinkerContext context = new StandardLinkerContext(logger, module,
-        new JJSOptionsImpl());
-    ArtifactSet artifacts = context.getArtifactsForPublicResources(logger,
-        module);
-    HostedModeLinker linker = new HostedModeLinker();
-    return linker.generateSelectionScript(logger, context, artifacts);
-  }
-
-  /**
-   * Get the length of time a given file should be cacheable. If the path
-   * contains *.nocache.*, it is never cacheable; if it contains *.cache.*, it
-   * is infinitely cacheable; anything else gets a default time.
-   * 
-   * @return cache time in seconds, or 0 if the file is not cacheable at all
-   */
-  private long getCacheTime(String path) {
-    int lastDot = path.lastIndexOf('.');
-    if (lastDot >= 0) {
-      String prefix = path.substring(0, lastDot);
-      if (prefix.endsWith(".cache")) {
-        // RFC2616 says to never give a cache time of more than a year
-        // http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21
-        return HttpHeaders.SEC_YR;
-      } else if (prefix.endsWith(".nocache")) {
-        return 0;
-      }
-    }
-    return DEFAULT_CACHE_SECONDS;
-  }
-
-  private synchronized TreeLogger getLogger() {
-    if (topLogger == null) {
-      ServletContext servletContext = getServletContext();
-      final String attr = "com.google.gwt.dev.shell.logger";
-      topLogger = (TreeLogger) servletContext.getAttribute(attr);
-      if (topLogger == null) {
-        // No shell available, so wrap the regular servlet context logger.
-        //
-        topLogger = new ServletContextTreeLogger(servletContext);
-      }
-    }
-    return topLogger;
-  }
-
-  /**
-   * We don't actually log this on purpose since the client does anyway.
-   */
-  private ModuleDef getModuleDef(TreeLogger logger, String moduleName)
-      throws UnableToCompleteException {
-    synchronized (loadedModulesByName) {
-      ModuleDef moduleDef = loadedModulesByName.get(moduleName);
-      if (moduleDef == null) {
-        moduleDef = ModuleDefLoader.loadFromClassPath(logger, moduleName, false);
-        loadedModulesByName.put(moduleName, moduleDef);
-        loadedModulesByName.put(moduleDef.getName(), moduleDef);
-
-        // BEGIN BACKWARD COMPATIBILITY
-        // The following map of servlet path to module is included only
-        // for backward-compatibility. We are going to remove this functionality
-        // when we go out of beta. The new behavior is that the client should
-        // specify the module name as part of the URL and construct it using
-        // getModuleBaseURL().
-        String[] servletPaths = moduleDef.getServletPaths();
-        for (int i = 0; i < servletPaths.length; i++) {
-          modulesByServletPath.put(servletPaths[i], moduleDef);
-        }
-        // END BACKWARD COMPATIBILITY
-      }
-      return moduleDef;
-    }
-  }
-
-  @SuppressWarnings("unchecked")
-  private Map<String, String[]> getParameterMap(HttpServletRequest request) {
-    return request.getParameterMap();
-  }
-
-  private synchronized WorkDirs getShellWorkDirs() {
-    if (workDirs == null) {
-      ServletContext servletContext = getServletContext();
-      final String attr = "com.google.gwt.dev.shell.workdirs";
-      workDirs = (WorkDirs) servletContext.getAttribute(attr);
-      assert (workDirs != null);
-    }
-    return workDirs;
-  }
-
-  private String guessMimeType(String fullPath) {
-    int dot = fullPath.lastIndexOf('.');
-    if (dot != -1) {
-      String ext = fullPath.substring(dot + 1);
-      String mimeType = mimeTypes.get(ext);
-      if (mimeType != null) {
-        return mimeType;
-      }
-
-      // Otherwise, fall through.
-      //
-    }
-
-    // Last resort.
-    //
-    return "application/octet-stream";
-  }
-
-  private void initMimeTypes() {
-    mimeTypes.put("abs", "audio/x-mpeg");
-    mimeTypes.put("ai", "application/postscript");
-    mimeTypes.put("aif", "audio/x-aiff");
-    mimeTypes.put("aifc", "audio/x-aiff");
-    mimeTypes.put("aiff", "audio/x-aiff");
-    mimeTypes.put("aim", "application/x-aim");
-    mimeTypes.put("art", "image/x-jg");
-    mimeTypes.put("asf", "video/x-ms-asf");
-    mimeTypes.put("asx", "video/x-ms-asf");
-    mimeTypes.put("au", "audio/basic");
-    mimeTypes.put("avi", "video/x-msvideo");
-    mimeTypes.put("avx", "video/x-rad-screenplay");
-    mimeTypes.put("bcpio", "application/x-bcpio");
-    mimeTypes.put("bin", "application/octet-stream");
-    mimeTypes.put("bmp", "image/bmp");
-    mimeTypes.put("body", "text/html");
-    mimeTypes.put("cdf", "application/x-cdf");
-    mimeTypes.put("cer", "application/x-x509-ca-cert");
-    mimeTypes.put("class", "application/java");
-    mimeTypes.put("cpio", "application/x-cpio");
-    mimeTypes.put("csh", "application/x-csh");
-    mimeTypes.put("css", "text/css");
-    mimeTypes.put("dib", "image/bmp");
-    mimeTypes.put("doc", "application/msword");
-    mimeTypes.put("dtd", "text/plain");
-    mimeTypes.put("dv", "video/x-dv");
-    mimeTypes.put("dvi", "application/x-dvi");
-    mimeTypes.put("eps", "application/postscript");
-    mimeTypes.put("etx", "text/x-setext");
-    mimeTypes.put("exe", "application/octet-stream");
-    mimeTypes.put("gif", "image/gif");
-    mimeTypes.put("gtar", "application/x-gtar");
-    mimeTypes.put("gz", "application/x-gzip");
-    mimeTypes.put("hdf", "application/x-hdf");
-    mimeTypes.put("hqx", "application/mac-binhex40");
-    mimeTypes.put("htc", "text/x-component");
-    mimeTypes.put("htm", "text/html");
-    mimeTypes.put("html", "text/html");
-    mimeTypes.put("hqx", "application/mac-binhex40");
-    mimeTypes.put("ief", "image/ief");
-    mimeTypes.put("jad", "text/vnd.sun.j2me.app-descriptor");
-    mimeTypes.put("jar", "application/java-archive");
-    mimeTypes.put("java", "text/plain");
-    mimeTypes.put("jnlp", "application/x-java-jnlp-file");
-    mimeTypes.put("jpe", "image/jpeg");
-    mimeTypes.put("jpeg", "image/jpeg");
-    mimeTypes.put("jpg", "image/jpeg");
-    mimeTypes.put("js", "text/javascript");
-    mimeTypes.put("jsf", "text/plain");
-    mimeTypes.put("jspf", "text/plain");
-    mimeTypes.put("kar", "audio/x-midi");
-    mimeTypes.put("latex", "application/x-latex");
-    mimeTypes.put("m3u", "audio/x-mpegurl");
-    mimeTypes.put("mac", "image/x-macpaint");
-    mimeTypes.put("man", "application/x-troff-man");
-    mimeTypes.put("me", "application/x-troff-me");
-    mimeTypes.put("mid", "audio/x-midi");
-    mimeTypes.put("midi", "audio/x-midi");
-    mimeTypes.put("mif", "application/x-mif");
-    mimeTypes.put("mov", "video/quicktime");
-    mimeTypes.put("movie", "video/x-sgi-movie");
-    mimeTypes.put("mp1", "audio/x-mpeg");
-    mimeTypes.put("mp2", "audio/x-mpeg");
-    mimeTypes.put("mp3", "audio/x-mpeg");
-    mimeTypes.put("mpa", "audio/x-mpeg");
-    mimeTypes.put("mpe", "video/mpeg");
-    mimeTypes.put("mpeg", "video/mpeg");
-    mimeTypes.put("mpega", "audio/x-mpeg");
-    mimeTypes.put("mpg", "video/mpeg");
-    mimeTypes.put("mpv2", "video/mpeg2");
-    mimeTypes.put("ms", "application/x-wais-source");
-    mimeTypes.put("nc", "application/x-netcdf");
-    mimeTypes.put("oda", "application/oda");
-    mimeTypes.put("pbm", "image/x-portable-bitmap");
-    mimeTypes.put("pct", "image/pict");
-    mimeTypes.put("pdf", "application/pdf");
-    mimeTypes.put("pgm", "image/x-portable-graymap");
-    mimeTypes.put("pic", "image/pict");
-    mimeTypes.put("pict", "image/pict");
-    mimeTypes.put("pls", "audio/x-scpls");
-    mimeTypes.put("png", "image/png");
-    mimeTypes.put("pnm", "image/x-portable-anymap");
-    mimeTypes.put("pnt", "image/x-macpaint");
-    mimeTypes.put("ppm", "image/x-portable-pixmap");
-    mimeTypes.put("ppt", "application/powerpoint");
-    mimeTypes.put("ps", "application/postscript");
-    mimeTypes.put("psd", "image/x-photoshop");
-    mimeTypes.put("qt", "video/quicktime");
-    mimeTypes.put("qti", "image/x-quicktime");
-    mimeTypes.put("qtif", "image/x-quicktime");
-    mimeTypes.put("ras", "image/x-cmu-raster");
-    mimeTypes.put("rgb", "image/x-rgb");
-    mimeTypes.put("rm", "application/vnd.rn-realmedia");
-    mimeTypes.put("roff", "application/x-troff");
-    mimeTypes.put("rtf", "application/rtf");
-    mimeTypes.put("rtx", "text/richtext");
-    mimeTypes.put("sh", "application/x-sh");
-    mimeTypes.put("shar", "application/x-shar");
-    mimeTypes.put("smf", "audio/x-midi");
-    mimeTypes.put("sit", "application/x-stuffit");
-    mimeTypes.put("snd", "audio/basic");
-    mimeTypes.put("src", "application/x-wais-source");
-    mimeTypes.put("sv4cpio", "application/x-sv4cpio");
-    mimeTypes.put("sv4crc", "application/x-sv4crc");
-    mimeTypes.put("swf", "application/x-shockwave-flash");
-    mimeTypes.put("t", "application/x-troff");
-    mimeTypes.put("tar", "application/x-tar");
-    mimeTypes.put("tcl", "application/x-tcl");
-    mimeTypes.put("tex", "application/x-tex");
-    mimeTypes.put("texi", "application/x-texinfo");
-    mimeTypes.put("texinfo", "application/x-texinfo");
-    mimeTypes.put("tif", "image/tiff");
-    mimeTypes.put("tiff", "image/tiff");
-    mimeTypes.put("tr", "application/x-troff");
-    mimeTypes.put("tsv", "text/tab-separated-values");
-    mimeTypes.put("txt", "text/plain");
-    mimeTypes.put("ulw", "audio/basic");
-    mimeTypes.put("ustar", "application/x-ustar");
-    mimeTypes.put("xbm", "image/x-xbitmap");
-    mimeTypes.put("xht", "application/xhtml+xml");
-    mimeTypes.put("xhtml", "application/xhtml+xml");
-    mimeTypes.put("xml", "text/xml");
-    mimeTypes.put("xpm", "image/x-xpixmap");
-    mimeTypes.put("xsl", "text/xml");
-    mimeTypes.put("xwd", "image/x-xwindowdump");
-    mimeTypes.put("wav", "audio/x-wav");
-    mimeTypes.put("svg", "image/svg+xml");
-    mimeTypes.put("svgz", "image/svg+xml");
-    mimeTypes.put("vsd", "application/x-visio");
-    mimeTypes.put("wbmp", "image/vnd.wap.wbmp");
-    mimeTypes.put("wml", "text/vnd.wap.wml");
-    mimeTypes.put("wmlc", "application/vnd.wap.wmlc");
-    mimeTypes.put("wmls", "text/vnd.wap.wmlscript");
-    mimeTypes.put("wmlscriptc", "application/vnd.wap.wmlscriptc");
-    mimeTypes.put("wrl", "x-world/x-vrml");
-    mimeTypes.put("Z", "application/x-compress");
-    mimeTypes.put("z", "application/x-compress");
-    mimeTypes.put("zip", "application/zip");
-  }
-
-  /**
-   * Checks to see whether or not a client's file is out of date relative to the
-   * original.
-   */
-  private boolean isNotModified(HttpServletRequest request, long ageOfServerCopy) {
-    // The age of the server copy *must* have the milliseconds truncated.
-    // Since milliseconds isn't part of the GMT format, failure to truncate
-    // will leave the file in a state where it appears constantly out of date
-    // and yet it can never get in sync because the Last-Modified date keeps
-    // truncating off the milliseconds part on its way out.
-    // 
-    ageOfServerCopy -= (ageOfServerCopy % 1000);
-
-    long ageOfClientCopy = 0;
-    String ifModifiedSince = request.getHeader("If-Modified-Since");
-    if (ifModifiedSince != null) {
-      // Rip off any additional stuff at the end, such as "; length="
-      // (IE does add this).
-      //
-      int lastSemi = ifModifiedSince.lastIndexOf(';');
-      if (lastSemi != -1) {
-        ifModifiedSince = ifModifiedSince.substring(0, lastSemi);
-      }
-      ageOfClientCopy = HttpHeaders.fromInternetDateFormat(ifModifiedSince);
-    }
-
-    if (ageOfClientCopy >= ageOfServerCopy) {
-      // The client already has a good copy.
-      //
-      return true;
-    } else {
-      // The client needs a fresh copy of the requested file.
-      //
-      return false;
-    }
-  }
-
-  private void maybeIssueXhtmlWarning(TreeLogger logger, String mimeType,
-      String path) {
-    if (!XHTML_MIME_TYPE.equals(mimeType)) {
-      return;
-    }
-
-    String msg = "File was returned with content-type of \"" + mimeType
-        + "\". GWT requires browser features that are not available to "
-        + "documents with this content-type.";
-
-    int ix = path.lastIndexOf('.');
-    if (ix >= 0 && ix < path.length()) {
-      String base = path.substring(0, ix);
-      msg += " Consider renaming \"" + path + "\" to \"" + base + ".html\".";
-    }
-
-    logger.log(TreeLogger.WARN, msg, null);
-  }
-
-  private void sendErrorResponse(HttpServletResponse response, int statusCode,
-      String msg) throws IOException {
-    response.setContentType("text/html");
-    response.getWriter().println(msg);
-    response.setStatus(statusCode);
-  }
-
-  /**
-   * Sets the Cache-control and Expires headers in the response based on the
-   * supplied cache time.
-   * 
-   * Expires is used in addition to Cache-control for older clients or proxies
-   * which may not properly understand Cache-control.
-   * 
-   * @param response the HttpServletResponse to update
-   * @param cacheTime non-negative number of seconds to cache the response; 0
-   *          means specifically do not allow caching at all.
-   * @throws IllegalArgumentException if cacheTime is negative
-   */
-  private void setResponseCacheHeaders(HttpServletResponse response,
-      long cacheTime) {
-    long expires;
-    if (cacheTime < 0) {
-      throw new IllegalArgumentException("cacheTime of " + cacheTime
-          + " is negative");
-    }
-    if (cacheTime > 0) {
-      // Expire the specified seconds in the future.
-      expires = new Date().getTime() + cacheTime * HttpHeaders.MS_SEC;
-    } else {
-      // Prevent caching by using a time in the past for cache expiration.
-      // Use January 2, 1970 00:00:00, to account for timezone changes
-      // in case a browser tries to convert to a local timezone first
-      // 0=Jan 1, so add 1 day's worth of milliseconds to get Jan 2
-      expires = HttpHeaders.SEC_DAY * HttpHeaders.MS_SEC;
-    }
-    response.setHeader(HttpHeaders.CACHE_CONTROL,
-        HttpHeaders.CACHE_CONTROL_MAXAGE + cacheTime);
-    String expiresString = HttpHeaders.toInternetDateFormat(expires);
-    response.setHeader(HttpHeaders.EXPIRES, expiresString);
-  }
-
-  private boolean shouldAutoGenerateResources() {
-    ServletContext servletContext = getServletContext();
-    final String attr = "com.google.gwt.dev.shell.shouldAutoGenerateResources";
-    Boolean attrValue = (Boolean) servletContext.getAttribute(attr);
-    if (attrValue == null) {
-      return true;
-    }
-    return attrValue;
-  }
-
-  private void streamOut(InputStream in, OutputStream out, int bufferSize)
-      throws IOException {
-    assert (bufferSize >= 0);
-
-    byte[] buffer = new byte[bufferSize];
-    int bytesRead = 0;
-    while (true) {
-      bytesRead = in.read(buffer);
-      if (bytesRead >= 0) {
-        // Copy the bytes out.
-        out.write(buffer, 0, bytesRead);
-      } else {
-        // End of input stream.
-        out.flush();
-        return;
-      }
-    }
-  }
-
-  private HttpServlet tryGetOrLoadServlet(TreeLogger logger,
-      ModuleDef moduleDef, String className) {
-
-    // Maps className to live servlet for this module.
-    Map<String, HttpServlet> moduleServlets;
-    synchronized (loadedServletsByModuleAndClassName) {
-      moduleServlets = loadedServletsByModuleAndClassName.get(moduleDef);
-      if (moduleServlets == null) {
-        moduleServlets = new HashMap<String, HttpServlet>();
-        loadedServletsByModuleAndClassName.put(moduleDef, moduleServlets);
-      }
-    }
-
-    synchronized (moduleServlets) {
-      HttpServlet servlet = moduleServlets.get(className);
-      if (servlet != null) {
-        // Found it.
-        //
-        return servlet;
-      }
-
-      // Try to load and instantiate it.
-      //
-      Throwable caught = null;
-      try {
-        Class<?> servletClass = Class.forName(className);
-        Object newInstance = servletClass.newInstance();
-        if (!(newInstance instanceof HttpServlet)) {
-          logger.log(TreeLogger.ERROR,
-              "Not compatible with HttpServlet: " + className
-                  + " (does your service extend RemoteServiceServlet?)", null);
-          return null;
-        }
-
-        // Success. Hang onto the instance so we can reuse it.
-        //
-        servlet = (HttpServlet) newInstance;
-
-        // We create proxies for ServletContext and ServletConfig to enable
-        // RemoteServiceServlets to load public and generated resources via
-        // ServletContext.getResourceAsStream()
-        //
-        ServletContext context = new HostedModeServletContextProxy(
-            getServletContext(), moduleDef, getShellWorkDirs());
-        ServletConfig config = new HostedModeServletConfigProxy(
-            getServletConfig(), context);
-
-        servlet.init(config);
-
-        moduleServlets.put(className, servlet);
-        return servlet;
-      } catch (ClassNotFoundException e) {
-        caught = e;
-      } catch (InstantiationException e) {
-        caught = e;
-      } catch (IllegalAccessException e) {
-        caught = e;
-      } catch (ServletException e) {
-        caught = e;
-      }
-      String msg = "Unable to instantiate '" + className + "'";
-      logger.log(TreeLogger.ERROR, msg, caught);
-      return null;
-    }
-  }
-}
diff --git a/dev/core/src/com/google/gwt/dev/shell/HostedModeServletContextProxy.java b/dev/core/src/com/google/gwt/dev/shell/HostedModeServletContextProxy.java
deleted file mode 100644
index d6b321e..0000000
--- a/dev/core/src/com/google/gwt/dev/shell/HostedModeServletContextProxy.java
+++ /dev/null
@@ -1,338 +0,0 @@
-/*
- * Copyright 2007 Google Inc.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.dev.shell;
-
-import com.google.gwt.dev.cfg.ModuleDef;
-import com.google.gwt.dev.resource.Resource;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.ref.WeakReference;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Enumeration;
-import java.util.Set;
-
-import javax.servlet.RequestDispatcher;
-import javax.servlet.Servlet;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-
-/**
- * ServletContext proxy that implements the getResource and getResourceAsStream
- * members so that they can work with the {@link GWTShellServlet}.
- */
-class HostedModeServletContextProxy implements ServletContext {
-  private final ServletContext context;
-  /**
-   * Avoid pinning my moduleDef.
-   */
-  private final WeakReference<ModuleDef> moduleDefRef;
-  private final WorkDirs workDirs;
-
-  HostedModeServletContextProxy(ServletContext context, ModuleDef moduleDef,
-      WorkDirs workDirs) {
-    this.context = context;
-    this.moduleDefRef = new WeakReference<ModuleDef>(moduleDef);
-    this.workDirs = workDirs;
-  }
-
-  /**
-   * @param arg0
-   * @return
-   * @see javax.servlet.ServletContext#getAttribute(java.lang.String)
-   */
-  public Object getAttribute(String arg0) {
-    return context.getAttribute(arg0);
-  }
-
-  /**
-   * @return
-   * @see javax.servlet.ServletContext#getAttributeNames()
-   */
-  @SuppressWarnings("unchecked")
-  public Enumeration<String> getAttributeNames() {
-    return context.getAttributeNames();
-  }
-
-  /**
-   * @param arg0
-   * @return
-   * @see javax.servlet.ServletContext#getContext(java.lang.String)
-   */
-  public ServletContext getContext(String arg0) {
-    return context.getContext(arg0);
-  }
-
-  public String getContextPath() {
-    return context.getContextPath();
-  }
-
-  /**
-   * @param arg0
-   * @return
-   * @see javax.servlet.ServletContext#getInitParameter(java.lang.String)
-   */
-  public String getInitParameter(String arg0) {
-    return context.getInitParameter(arg0);
-  }
-
-  /**
-   * @return
-   * @see javax.servlet.ServletContext#getInitParameterNames()
-   */
-  public Enumeration<?> getInitParameterNames() {
-    return context.getInitParameterNames();
-  }
-
-  /**
-   * @return
-   * @see javax.servlet.ServletContext#getMajorVersion()
-   */
-  public int getMajorVersion() {
-    return context.getMajorVersion();
-  }
-
-  /**
-   * @param arg0
-   * @return
-   * @see javax.servlet.ServletContext#getMimeType(java.lang.String)
-   */
-  public String getMimeType(String arg0) {
-    return context.getMimeType(arg0);
-  }
-
-  /**
-   * @return
-   * @see javax.servlet.ServletContext#getMinorVersion()
-   */
-  public int getMinorVersion() {
-    return context.getMinorVersion();
-  }
-
-  /**
-   * @param arg0
-   * @return
-   * @see javax.servlet.ServletContext#getNamedDispatcher(java.lang.String)
-   */
-  public RequestDispatcher getNamedDispatcher(String arg0) {
-    return context.getNamedDispatcher(arg0);
-  }
-
-  /**
-   * @param arg0
-   * @return
-   * @see javax.servlet.ServletContext#getRealPath(java.lang.String)
-   */
-  public String getRealPath(String arg0) {
-    return context.getRealPath(arg0);
-  }
-
-  /**
-   * @param arg0
-   * @return
-   * @see javax.servlet.ServletContext#getRequestDispatcher(java.lang.String)
-   */
-  public RequestDispatcher getRequestDispatcher(String arg0) {
-    return context.getRequestDispatcher(arg0);
-  }
-
-  /**
-   * @param arg0
-   * @return
-   * @throws MalformedURLException
-   * @see javax.servlet.ServletContext#getResource(java.lang.String)
-   */
-  @SuppressWarnings("deprecation")
-  public URL getResource(String path) throws MalformedURLException {
-    ModuleDef moduleDef = moduleDefRef.get();
-    assert (moduleDef != null) : "GWTShellServlet should have guaranteed that a"
-        + " live servlet will never process a request for a dead module; if you"
-        + " are using this servlet outside the context of processing a call,"
-        + " then don't do that";
-
-    String moduleContext = "/" + moduleDef.getName() + "/";
-    if (!path.startsWith(moduleContext)) {
-      // Check for a renamed module
-      moduleContext = "/" + moduleDef.getCanonicalName() + "/";
-      if (!path.startsWith(moduleContext)) {
-        // This path is in a different context; just return null
-        return null;
-      }
-    }
-
-    String partialPath = path.substring(moduleContext.length());
-
-    // Try to get the resource from the application's public path
-    Resource publicResource = moduleDef.findPublicFile(partialPath);
-    if (publicResource != null) {
-      return publicResource.getURL();
-    }
-
-    // Otherwise try the path in the shell's public generated directory
-    File shellDir = workDirs.getShellPublicGenDir(moduleDef);
-    File requestedFile = new File(shellDir, partialPath);
-    if (requestedFile.exists()) {
-      return requestedFile.toURI().toURL();
-    }
-
-    /*
-     * If the user is coming from compiled web-mode, check the linker output
-     * directory for the file. We'll default to using the output directory of
-     * the first linker defined in the <set-linker> tab.
-     */
-    File linkDir = workDirs.getCompilerOutputDir(moduleDef);
-    requestedFile = new File(linkDir, partialPath);
-    if (requestedFile.exists()) {
-      try {
-        return requestedFile.toURI().toURL();
-      } catch (MalformedURLException e) {
-        // ignore since it was speculative anyway
-      }
-    }
-
-    return null;
-  }
-
-  /**
-   * @param arg0
-   * @return
-   * @see javax.servlet.ServletContext#getResourceAsStream(java.lang.String)
-   */
-  public InputStream getResourceAsStream(String arg0) {
-    URL url;
-    try {
-      url = getResource(arg0);
-      if (url != null) {
-        return url.openStream();
-      }
-    } catch (MalformedURLException e) {
-      // Ignore the exception; return null
-    } catch (IOException e) {
-      // Ignore the exception; return null
-    }
-
-    return null;
-  }
-
-  /**
-   * 
-   * @param path
-   * @return
-   * @see javax.servlet.ServletContext#getResourcePaths(java.lang.String)
-   */
-  @SuppressWarnings("unchecked")
-  public Set<String> getResourcePaths(String path) {
-    return context.getResourcePaths(path);
-  }
-
-  /**
-   * @return
-   * @see javax.servlet.ServletContext#getServerInfo()
-   */
-  public String getServerInfo() {
-    return context.getServerInfo();
-  }
-
-  /**
-   * @param arg0
-   * @return
-   * @throws ServletException
-   * @deprecated
-   * @see javax.servlet.ServletContext#getServlet(java.lang.String)
-   */
-  @Deprecated
-  public Servlet getServlet(String arg0) throws ServletException {
-    return context.getServlet(arg0);
-  }
-
-  /**
-   * @return
-   * @see javax.servlet.ServletContext#getServletContextName()
-   */
-  public String getServletContextName() {
-    return context.getServletContextName();
-  }
-
-  /**
-   * @return
-   * @deprecated
-   * @see javax.servlet.ServletContext#getServletNames()
-   */
-  @Deprecated
-  @SuppressWarnings("unchecked")
-  public Enumeration<String> getServletNames() {
-    return context.getServletNames();
-  }
-
-  /**
-   * @return
-   * @deprecated
-   * @see javax.servlet.ServletContext#getServlets()
-   */
-  @Deprecated
-  @SuppressWarnings("unchecked")
-  public Enumeration<Servlet> getServlets() {
-    return context.getServlets();
-  }
-
-  /**
-   * @param arg0
-   * @param arg1
-   * @deprecated
-   * @see javax.servlet.ServletContext#log(java.lang.Exception,
-   *      java.lang.String)
-   */
-  @Deprecated
-  public void log(Exception arg0, String arg1) {
-    context.log(arg0, arg1);
-  }
-
-  /**
-   * @param arg0
-   * @see javax.servlet.ServletContext#log(java.lang.String)
-   */
-  public void log(String arg0) {
-    context.log(arg0);
-  }
-
-  /**
-   * @param arg0
-   * @param arg1
-   * @see javax.servlet.ServletContext#log(java.lang.String,java.lang.Throwable)
-   */
-  public void log(String arg0, Throwable arg1) {
-    context.log(arg0, arg1);
-  }
-
-  /**
-   * @param arg0
-   * @see javax.servlet.ServletContext#removeAttribute(java.lang.String)
-   */
-  public void removeAttribute(String arg0) {
-    context.removeAttribute(arg0);
-  }
-
-  /**
-   * @param arg0
-   * @param arg1
-   * @see javax.servlet.ServletContext#setAttribute(java.lang.String,java.lang.Object)
-   */
-  public void setAttribute(String arg0, Object arg1) {
-    context.setAttribute(arg0, arg1);
-  }
-}
diff --git a/dev/core/src/com/google/gwt/dev/shell/ModuleSpace.java b/dev/core/src/com/google/gwt/dev/shell/ModuleSpace.java
index b724854..15e1354 100644
--- a/dev/core/src/com/google/gwt/dev/shell/ModuleSpace.java
+++ b/dev/core/src/com/google/gwt/dev/shell/ModuleSpace.java
@@ -621,7 +621,7 @@
     String details = "<p>Exception while loading module <b>"
         + Util.escapeXml(entryPointTypeName) + "</b>."
         + " See Development Mode for details.</p>"
-        + "<div style='overflow:visisble;white-space:pre;'>" + stackTrace
+        + "<div style='overflow:visible;white-space:pre;'>" + stackTrace
         + "</div>";
 
     invokeNativeVoid("__gwt_displayGlassMessage", null,
diff --git a/dev/core/src/com/google/gwt/dev/shell/log/SwingLoggerPanel.java b/dev/core/src/com/google/gwt/dev/shell/log/SwingLoggerPanel.java
index 01c886a..9bac9bd 100644
--- a/dev/core/src/com/google/gwt/dev/shell/log/SwingLoggerPanel.java
+++ b/dev/core/src/com/google/gwt/dev/shell/log/SwingLoggerPanel.java
@@ -50,6 +50,7 @@
 import javax.swing.AbstractAction;
 import javax.swing.BorderFactory;
 import javax.swing.JButton;
+import javax.swing.JCheckBox;
 import javax.swing.JComboBox;
 import javax.swing.JComponent;
 import javax.swing.JEditorPane;
@@ -65,10 +66,12 @@
 import javax.swing.PopupFactory;
 import javax.swing.UIManager;
 import javax.swing.event.HyperlinkEvent;
+import javax.swing.event.HyperlinkEvent.EventType;
 import javax.swing.event.HyperlinkListener;
+import javax.swing.event.TreeModelEvent;
+import javax.swing.event.TreeModelListener;
 import javax.swing.event.TreeSelectionEvent;
 import javax.swing.event.TreeSelectionListener;
-import javax.swing.event.HyperlinkEvent.EventType;
 import javax.swing.text.html.HTMLDocument;
 import javax.swing.tree.DefaultMutableTreeNode;
 import javax.swing.tree.DefaultTreeCellRenderer;
@@ -211,9 +214,6 @@
       searchField.requestFocusInWindow();
     }
 
-    /**
-     * 
-     */
     private void updateSearchResult() {
       int n = matches.size();
       if (n == 0) {
@@ -260,7 +260,7 @@
 
   String regexFilter;
 
-  final JTree tree;
+  private final JTree tree;
 
   DefaultTreeModel treeModel;
 
@@ -286,6 +286,8 @@
   
   private JScrollPane treeView;
 
+  private JCheckBox autoScroll;
+
   /**
    * Create a Swing-based logger panel, with a tree section and a detail
    * section.
@@ -317,6 +319,9 @@
       }
     });
     logButtons.add(collapseButton);
+    autoScroll = new JCheckBox("Auto-scroll", true);
+    autoScroll.setMnemonic(KeyEvent.VK_U);
+    logButtons.add(autoScroll);
     topPanel.add(logButtons, BorderLayout.CENTER);
     // TODO(jat): temporarily avoid showing parts that aren't implemented.
     if (false) {
@@ -369,6 +374,16 @@
     add(topPanel, BorderLayout.NORTH);
     root = new DefaultMutableTreeNode();
     treeModel = new DefaultTreeModel(root);
+    treeModel.addTreeModelListener(new TreeModelListener() {
+      @Override public void treeNodesInserted(TreeModelEvent e) {
+        for (Object treeNode : e.getChildren()) {
+          onTreeNodeAdded((DefaultMutableTreeNode) treeNode);
+        }
+      }
+      @Override public void treeStructureChanged(TreeModelEvent e) { }
+      @Override public void treeNodesRemoved(TreeModelEvent e) { }
+      @Override public void treeNodesChanged(TreeModelEvent e) { }
+    });
     tree = new JTree(treeModel);
     tree.setRootVisible(false);
     tree.setEditable(false);
@@ -516,13 +531,6 @@
     }
   }
 
-  /**
-   * @param node
-   */
-  public void notifyChange(DefaultMutableTreeNode node) {
-    treeModel.nodeChanged(node);
-  }
-
   @Override
   public void removeAll() {
     tree.removeAll();
@@ -716,4 +724,18 @@
       buf.append('\n');
     }
   }
+
+  private void onTreeNodeAdded(DefaultMutableTreeNode treeNode) {
+    TreePath path = new TreePath(treeNode.getPath());
+    if (autoScroll.isSelected()) {
+      tree.scrollPathToVisible(path); // internally will also call makeVisible
+    } else {
+      Object userObject = treeNode.getUserObject();
+      if (userObject instanceof LogEvent) {
+        if (((LogEvent) userObject).type.needsAttention()) {
+          tree.makeVisible(path);
+        }
+      }
+    }
+  }
 }
diff --git a/dev/core/src/com/google/gwt/dev/shell/log/SwingTreeLogger.java b/dev/core/src/com/google/gwt/dev/shell/log/SwingTreeLogger.java
index ac5d464..67d4804 100644
--- a/dev/core/src/com/google/gwt/dev/shell/log/SwingTreeLogger.java
+++ b/dev/core/src/com/google/gwt/dev/shell/log/SwingTreeLogger.java
@@ -30,7 +30,6 @@
 import javax.swing.Icon;
 import javax.swing.JLabel;
 import javax.swing.tree.DefaultMutableTreeNode;
-import javax.swing.tree.TreePath;
 
 /**
  * Tree logger built on an Swing tree item.
@@ -355,9 +354,6 @@
         }
         int insertIndex = findInsertionPoint(parentNode, idx);
         panel.treeModel.insertNodeInto(node, parentNode, insertIndex);
-        if (logEvent.type.needsAttention()) {
-          panel.tree.makeVisible(new TreePath(node.getPath()));
-        }
         if (parentNode == panel.treeModel.getRoot()
             && parentNode.getChildCount() == 1) {
           panel.treeModel.reload();
diff --git a/dev/core/src/com/google/gwt/dev/shell/tomcat/CatalinaLoggerAdapter.java b/dev/core/src/com/google/gwt/dev/shell/tomcat/CatalinaLoggerAdapter.java
deleted file mode 100644
index 9cf2d95..0000000
--- a/dev/core/src/com/google/gwt/dev/shell/tomcat/CatalinaLoggerAdapter.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright 2006 Google Inc.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.dev.shell.tomcat;
-
-import com.google.gwt.core.ext.TreeLogger;
-
-import org.apache.catalina.logger.LoggerBase;
-
-class CatalinaLoggerAdapter extends LoggerBase {
-
-  private final TreeLogger logger;
-
-  public CatalinaLoggerAdapter(TreeLogger logger) {
-    this.logger = logger;
-  }
-
-  @Override
-  public void log(Exception exception, String msg) {
-    logger.log(TreeLogger.WARN, msg, exception);
-  }
-
-  @Override
-  public void log(String msg) {
-    logger.log(TreeLogger.INFO, msg, null);
-  }
-
-  @Override
-  public void log(String message, int verbosity) {
-    TreeLogger.Type type = mapVerbosityToLogType(verbosity);
-    logger.log(type, message, null);
-  }
-
-  @Override
-  public void log(String msg, Throwable throwable) {
-    logger.log(TreeLogger.WARN, msg, throwable);
-  }
-
-  @Override
-  public void log(String message, Throwable throwable, int verbosity) {
-    TreeLogger.Type type = mapVerbosityToLogType(verbosity);
-    logger.log(type, message, throwable);
-  }
-
-  private TreeLogger.Type mapVerbosityToLogType(int verbosity) {
-    switch (verbosity) {
-      case LoggerBase.FATAL:
-      case LoggerBase.ERROR:
-      case LoggerBase.WARNING:
-        return TreeLogger.WARN;
-
-      case LoggerBase.INFORMATION:
-        return TreeLogger.DEBUG;
-      case LoggerBase.DEBUG:
-        return TreeLogger.SPAM;
-
-      default:
-        // really, this was an unexpected type
-        return TreeLogger.WARN;
-    }
-  }
-
-}
\ No newline at end of file
diff --git a/dev/core/src/com/google/gwt/dev/shell/tomcat/CommonsLoggerAdapter.java b/dev/core/src/com/google/gwt/dev/shell/tomcat/CommonsLoggerAdapter.java
deleted file mode 100644
index d071d2a..0000000
--- a/dev/core/src/com/google/gwt/dev/shell/tomcat/CommonsLoggerAdapter.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright 2006 Google Inc.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.dev.shell.tomcat;
-
-import com.google.gwt.core.ext.TreeLogger;
-
-/**
- * Maps Tomcat's commons logger onto the GWT shell's tree logger.
- */
-public class CommonsLoggerAdapter implements org.apache.commons.logging.Log {
-
-  private TreeLogger log;
-
-  /**
-   * @param name unused
-   */
-  public CommonsLoggerAdapter(String name) {
-    // NOTE: this is ugly, but I don't know of any other way to get a
-    // non-static log to which we can delegate.
-    //
-    log = EmbeddedTomcatServer.sTomcat.getLogger();
-  }
-
-  public void debug(Object message) {
-    doLog(TreeLogger.SPAM, message, null);
-  }
-
-  public void debug(Object message, Throwable t) {
-    doLog(TreeLogger.SPAM, message, t);
-  }
-
-  public void error(Object message) {
-    doLog(TreeLogger.WARN, message, null);
-  }
-
-  public void error(Object message, Throwable t) {
-    doLog(TreeLogger.WARN, message, t);
-  }
-
-  public void fatal(Object message) {
-    doLog(TreeLogger.WARN, message, null);
-  }
-
-  public void fatal(Object message, Throwable t) {
-    doLog(TreeLogger.WARN, message, t);
-  }
-
-  public void info(Object message) {
-    // Intentionally low-level to us.
-    doLog(TreeLogger.TRACE, message, null);
-  }
-
-  public void info(Object message, Throwable t) {
-    // Intentionally low-level to us.
-    doLog(TreeLogger.TRACE, message, t);
-  }
-
-  public boolean isDebugEnabled() {
-    return log.isLoggable(TreeLogger.SPAM);
-  }
-
-  public boolean isErrorEnabled() {
-    return log.isLoggable(TreeLogger.WARN);
-  }
-
-  public boolean isFatalEnabled() {
-    return log.isLoggable(TreeLogger.WARN);
-  }
-
-  public boolean isInfoEnabled() {
-    // Intentionally low-level to us.
-    return log.isLoggable(TreeLogger.TRACE);
-  }
-
-  public boolean isTraceEnabled() {
-    // Intentionally low-level to us.
-    return log.isLoggable(TreeLogger.SPAM);
-  }
-
-  public boolean isWarnEnabled() {
-    return log.isLoggable(TreeLogger.WARN);
-  }
-
-  public void trace(Object message) {
-    // Intentionally low-level to us.
-    doLog(TreeLogger.DEBUG, message, null);
-  }
-
-  public void trace(Object message, Throwable t) {
-    // Intentionally low-level to us.
-    doLog(TreeLogger.DEBUG, message, t);
-  }
-
-  public void warn(Object message) {
-    doLog(TreeLogger.WARN, message, null);
-  }
-
-  public void warn(Object message, Throwable t) {
-    doLog(TreeLogger.WARN, message, t);
-  }
-
-  private void doLog(TreeLogger.Type type, Object message, Throwable t) {
-    String msg = message.toString();
-    log.log(type, msg, t);
-  }
-}
\ No newline at end of file
diff --git a/dev/core/src/com/google/gwt/dev/shell/tomcat/EmbeddedTomcatServer.java b/dev/core/src/com/google/gwt/dev/shell/tomcat/EmbeddedTomcatServer.java
deleted file mode 100644
index e7d27ac..0000000
--- a/dev/core/src/com/google/gwt/dev/shell/tomcat/EmbeddedTomcatServer.java
+++ /dev/null
@@ -1,436 +0,0 @@
-/*
- * Copyright 2006 Google Inc.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.dev.shell.tomcat;
-
-import com.google.gwt.core.ext.TreeLogger;
-import com.google.gwt.dev.resource.Resource;
-import com.google.gwt.dev.resource.impl.ClassPathEntry;
-import com.google.gwt.dev.resource.impl.PathPrefix;
-import com.google.gwt.dev.resource.impl.PathPrefixSet;
-import com.google.gwt.dev.resource.impl.ResourceOracleImpl;
-import com.google.gwt.dev.shell.WorkDirs;
-import com.google.gwt.dev.util.Util;
-
-import org.apache.catalina.Connector;
-import org.apache.catalina.ContainerEvent;
-import org.apache.catalina.ContainerListener;
-import org.apache.catalina.Engine;
-import org.apache.catalina.LifecycleException;
-import org.apache.catalina.Logger;
-import org.apache.catalina.core.StandardContext;
-import org.apache.catalina.core.StandardHost;
-import org.apache.catalina.startup.Embedded;
-import org.apache.catalina.startup.HostConfig;
-import org.apache.coyote.tomcat5.CoyoteConnector;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.lang.reflect.Field;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.util.Collections;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Map.Entry;
-
-/**
- * Wraps an instance of the Tomcat web server used in hosted mode.
- */
-public class EmbeddedTomcatServer {
-
-  static EmbeddedTomcatServer sTomcat;
-
-  public static int getPort() {
-    return sTomcat.port;
-  }
-
-  public static String start(TreeLogger topLogger, int port, WorkDirs workDirs) {
-    return start(topLogger, port, workDirs, true);
-  }
-
-  public static synchronized String start(TreeLogger topLogger, int port,
-      WorkDirs workDirs, boolean shouldAutoGenerateResources) {
-    if (sTomcat != null) {
-      throw new IllegalStateException("Embedded Tomcat is already running");
-    }
-
-    try {
-      new EmbeddedTomcatServer(topLogger, port, workDirs,
-          shouldAutoGenerateResources);
-      return null;
-    } catch (LifecycleException e) {
-      String msg = e.getMessage();
-      if (msg != null && msg.indexOf("already in use") != -1) {
-        msg = "Port "
-            + port
-            + " is already is use; you probably still have another session active";
-      } else {
-        msg = "Unable to start the embedded Tomcat server; double-check that your configuration is valid";
-      }
-      return msg;
-    }
-  }
-
-  // Stop the embedded Tomcat server.
-  //
-  public static synchronized void stop() {
-    if (sTomcat != null) {
-      try {
-        sTomcat.catEmbedded.stop();
-      } catch (LifecycleException e) {
-        // There's nothing we can really do about this and the logger is
-        // gone in many scenarios, so we just ignore it.
-        //
-      } finally {
-        sTomcat = null;
-      }
-    }
-  }
-
-  /**
-   * Returns what local port the Tomcat connector is running on.
-   * 
-   * When starting Tomcat with port 0 (i.e. choose an open port), there is just
-   * no way to figure out what port it actually chose. So we're using pure
-   * hackery to steal the port via reflection. The only works because we bundle
-   * Tomcat with GWT and know exactly what version it is.
-   */
-  private static int computeLocalPort(Connector connector) {
-    Throwable caught = null;
-    try {
-      Field phField = CoyoteConnector.class.getDeclaredField("protocolHandler");
-      phField.setAccessible(true);
-      Object protocolHandler = phField.get(connector);
-
-      Field epField = protocolHandler.getClass().getDeclaredField("ep");
-      epField.setAccessible(true);
-      Object endPoint = epField.get(protocolHandler);
-
-      Field ssField = endPoint.getClass().getDeclaredField("serverSocket");
-      ssField.setAccessible(true);
-      ServerSocket serverSocket = (ServerSocket) ssField.get(endPoint);
-
-      return serverSocket.getLocalPort();
-    } catch (SecurityException e) {
-      caught = e;
-    } catch (NoSuchFieldException e) {
-      caught = e;
-    } catch (IllegalArgumentException e) {
-      caught = e;
-    } catch (IllegalAccessException e) {
-      caught = e;
-    }
-    throw new RuntimeException(
-        "Failed to retrieve the startup port from Embedded Tomcat", caught);
-  }
-
-  private Embedded catEmbedded;
-
-  private Engine catEngine;
-
-  private StandardHost catHost = null;
-
-  private int port;
-
-  private final TreeLogger startupBranchLogger;
-
-  private EmbeddedTomcatServer(final TreeLogger topLogger, int listeningPort,
-      final WorkDirs workDirs, final boolean shouldAutoGenerateResources)
-      throws LifecycleException {
-    if (topLogger == null) {
-      throw new NullPointerException("No logger specified");
-    }
-
-    final TreeLogger logger = topLogger.branch(TreeLogger.INFO,
-        "Starting HTTP on port " + listeningPort, null);
-
-    startupBranchLogger = logger;
-
-    // Make myself the one static instance.
-    // NOTE: there is only one small implementation reason that this has
-    // to be a singleton, which is that the commons logger LogFactory insists
-    // on creating your logger class which must have a constructor with
-    // exactly one String argument, and since we want LoggerAdapter to delegate
-    // to the logger instance available through instance host, there is no
-    // way I can think of to delegate without accessing a static field.
-    // An inner class is almost right, except there's no outer instance.
-    //
-    sTomcat = this;
-
-    // Assume the working directory is simply the user's current directory.
-    //
-    File topWorkDir = new File(System.getProperty("user.dir"));
-
-    // Tell Tomcat its base directory so that it won't complain.
-    //
-    String catBase = System.getProperty("catalina.base");
-    if (catBase == null) {
-      // we (briefly) supported catalina.base.create, so let's not cut support
-      // until the deprecated sunset
-      catBase = System.getProperty("catalina.base.create");
-      if (catBase != null) {
-        logger.log(TreeLogger.WARN, "catalina.base.create is deprecated.  " +
-            "Use catalina.base, and it will be created if necessary.");
-        topWorkDir = new File(catBase);
-      }
-      catBase = generateDefaultCatalinaBase(logger, topWorkDir);
-      System.setProperty("catalina.base", catBase);
-    }
-
-    // Some debug messages for ourselves.
-    //
-    if (logger.isLoggable(TreeLogger.DEBUG)) {
-      logger.log(TreeLogger.DEBUG, "catalina.base = " + catBase, null);
-    }
-
-    // Set up the logger that will be returned by the Commons logging factory.
-    //
-    String adapterClassName = CommonsLoggerAdapter.class.getName();
-    System.setProperty("org.apache.commons.logging.Log", adapterClassName);
-
-    // And set up an adapter that will work with the Catalina logger family.
-    //
-    Logger catalinaLogger = new CatalinaLoggerAdapter(topLogger);
-
-    // Create an embedded server.
-    //
-    catEmbedded = new Embedded();
-    catEmbedded.setDebug(0);
-    catEmbedded.setLogger(catalinaLogger);
-
-    // The embedded engine is called "gwt".
-    //
-    catEngine = catEmbedded.createEngine();
-    catEngine.setName("gwt");
-    catEngine.setDefaultHost("localhost");
-    catEngine.setParentClassLoader(this.getClass().getClassLoader());
-
-    // It answers localhost requests.
-    //
-    // String appBase = fCatalinaBaseDir.getAbsolutePath();
-    String appBase = catBase + "/webapps";
-    catHost = (StandardHost) catEmbedded.createHost("localhost", appBase);
-
-    // Hook up a host config to search for and pull in webapps.
-    //
-    HostConfig hostConfig = new HostConfig();
-    catHost.addLifecycleListener(hostConfig);
-
-    // Hook pre-install events so that we can add attributes to allow loaded
-    // instances to find their development instance host.
-    //
-    catHost.addContainerListener(new ContainerListener() {
-      public void containerEvent(ContainerEvent event) {
-        if (StandardHost.PRE_INSTALL_EVENT.equals(event.getType())) {
-          StandardContext webapp = (StandardContext) event.getData();
-          publishShellLoggerAttribute(logger, topLogger, webapp);
-          publishShellWorkDirsAttribute(logger, workDirs, webapp);
-          publishShouldAutoGenerateResourcesAttribute(logger,
-              shouldAutoGenerateResources, webapp);
-        }
-      }
-    });
-
-    // Tell the engine about the host.
-    //
-    catEngine.addChild(catHost);
-    catEngine.setDefaultHost(catHost.getName());
-
-    // Tell the embedded manager about the engine.
-    //
-    catEmbedded.addEngine(catEngine);
-    InetAddress nullAddr = null;
-    Connector connector = catEmbedded.createConnector(nullAddr, listeningPort,
-        false);
-    catEmbedded.addConnector(connector);
-
-    // start up!
-    catEmbedded.start();
-    port = computeLocalPort(connector);
-
-    if (port != listeningPort) {
-      if (logger.isLoggable(TreeLogger.INFO)) {
-        logger.log(TreeLogger.INFO, "HTTP listening on port " + port, null);
-      }
-    }
-  }
-
-  public TreeLogger getLogger() {
-    return startupBranchLogger;
-  }
-
-  /*
-   * Assumes that the leaf is a file (not a directory).
-   */
-  private void copyFileNoOverwrite(TreeLogger logger, String srcResName,
-      Resource srcRes, File catBase) {
-
-    File dest = new File(catBase, srcResName);
-    try {
-      // Only copy if src is newer than desc.
-      long srcLastModified = srcRes.getLastModified();
-      long dstLastModified = dest.lastModified();
-
-      if (srcLastModified < dstLastModified) {
-        // Don't copy over it.
-        if (logger.isLoggable(TreeLogger.SPAM)) {
-          logger.log(TreeLogger.SPAM, "Source is older than existing: "
-              + dest.getAbsolutePath(), null);
-        }
-        return;
-      } else if (srcLastModified == dstLastModified) {
-        // Exact same time; quietly don't overwrite.
-        return;
-      } else if (dest.exists()) {
-        // Warn about the overwrite
-        logger.log(TreeLogger.WARN, "Overwriting existing file '"
-            + dest.getAbsolutePath() + "' with '" + srcRes.getLocation()
-            + "', which has a newer timestamp");
-      }
-
-      // Make dest directories as required.
-      File destParent = dest.getParentFile();
-      if (destParent != null) {
-        // No need to check mkdirs result because IOException later anyway.
-        destParent.mkdirs();
-      }
-
-      Util.copy(srcRes.openContents(), new FileOutputStream(dest));
-      dest.setLastModified(srcLastModified);
-
-      if (logger.isLoggable(TreeLogger.TRACE)) {
-        logger.log(TreeLogger.TRACE, "Wrote: " + dest.getAbsolutePath(), null);
-      }
-    } catch (IOException e) {
-      logger.log(TreeLogger.WARN, "Failed to write: " + dest.getAbsolutePath(),
-          e);
-    } 
-  }
-
-  /**
-   * Extracts a valid catalina base instance from the classpath. Does not
-   * overwrite any existing files.
-   */
-  private String generateDefaultCatalinaBase(TreeLogger logger, File workDir) {
-    logger = logger.branch(
-        TreeLogger.TRACE,
-        "Property 'catalina.base' not specified; checking for a standard catalina base image instead",
-        null);
-
-    // Recursively copies out files and directories
-    String tomcatEtcDir = "com/google/gwt/dev/etc/tomcat/";
-    Map<String, Resource> resourceMap = null;
-    Throwable caught = null;
-    try {
-      resourceMap = getResourcesFor(logger, tomcatEtcDir);
-    } catch (URISyntaxException e) {
-      caught = e;
-    } catch (IOException e) {
-      caught = e;
-    }
-
-    File catBase = new File(workDir, "tomcat");
-    if (resourceMap == null || resourceMap.isEmpty()) {
-      logger.log(TreeLogger.WARN, "Could not find " + tomcatEtcDir, caught);
-    } else {
-      for (Entry<String, Resource> entry : resourceMap.entrySet()) {
-        copyFileNoOverwrite(logger, entry.getKey(), entry.getValue(), catBase);
-      }
-    }
-
-    return catBase.getAbsolutePath();
-  }
-
-  /**
-   * Hacky, but fast.
-   */
-  private Map<String, Resource> getResourcesFor(TreeLogger logger,
-      String tomcatEtcDir) throws URISyntaxException, IOException {
-    ClassLoader contextClassLoader = this.getClass().getClassLoader();
-    URL url = contextClassLoader.getResource(tomcatEtcDir);
-    if (url == null) {
-      return null;
-    }
-    String prefix = "";
-    String urlString = url.toString();
-    if (urlString.startsWith("jar:")) {
-      assert urlString.toLowerCase(Locale.ENGLISH).contains(".jar!/"
-          + tomcatEtcDir);
-      urlString = urlString.substring(4, urlString.indexOf('!'));
-      url = new URL(urlString);
-      prefix = tomcatEtcDir;
-    } else if (urlString.startsWith("zip:")) {
-      assert urlString.toLowerCase(Locale.ENGLISH).contains(".zip!/"
-          + tomcatEtcDir);
-      urlString = urlString.substring(4, urlString.indexOf('!'));
-      url = new URL(urlString);
-      prefix = tomcatEtcDir;
-    }
-    ClassPathEntry entry = ResourceOracleImpl.createEntryForUrl(logger, url);
-    assert (entry != null);
-    ResourceOracleImpl resourceOracle = new ResourceOracleImpl(
-        Collections.singletonList(entry));
-    PathPrefixSet pathPrefixSet = new PathPrefixSet();
-    PathPrefix pathPrefix = new PathPrefix(prefix, null, true);
-    pathPrefixSet.add(pathPrefix);
-    resourceOracle.setPathPrefixes(pathPrefixSet);
-    ResourceOracleImpl.refresh(logger, resourceOracle);
-    Map<String, Resource> resourceMap = resourceOracle.getResourceMap();
-    return resourceMap;
-  }
-
-  private void publishAttributeToWebApp(TreeLogger logger,
-      StandardContext webapp, String attrName, Object attrValue) {
-    if (logger.isLoggable(TreeLogger.TRACE)) {
-      logger.log(TreeLogger.TRACE, "Adding attribute  '" + attrName
-          + "' to web app '" + webapp.getName() + "'", null);
-    }
-    webapp.getServletContext().setAttribute(attrName, attrValue);
-  }
-
-  /**
-   * Publish the shell's tree logger as an attribute. This attribute is used to
-   * find the logger out of the thin air within the shell servlet.
-   */
-  private void publishShellLoggerAttribute(TreeLogger logger,
-      TreeLogger loggerToPublish, StandardContext webapp) {
-    final String attr = "com.google.gwt.dev.shell.logger";
-    publishAttributeToWebApp(logger, webapp, attr, loggerToPublish);
-  }
-
-  /**
-   * Publish the shell's work dir as an attribute. This attribute is used to
-   * find it out of the thin air within the shell servlet.
-   */
-  private void publishShellWorkDirsAttribute(TreeLogger logger,
-      WorkDirs workDirs, StandardContext webapp) {
-    final String attr = "com.google.gwt.dev.shell.workdirs";
-    publishAttributeToWebApp(logger, webapp, attr, workDirs);
-  }
-
-  /**
-   * Publish to the web app whether it should automatically generate resources.
-   */
-  private void publishShouldAutoGenerateResourcesAttribute(TreeLogger logger,
-      boolean shouldAutoGenerateResources, StandardContext webapp) {
-    publishAttributeToWebApp(logger, webapp,
-        "com.google.gwt.dev.shell.shouldAutoGenerateResources",
-        shouldAutoGenerateResources);
-  }
-}
diff --git a/dev/core/src/com/google/gwt/soyc/GlobalInformation.java b/dev/core/src/com/google/gwt/soyc/GlobalInformation.java
index 4112404..a6eac5d 100644
--- a/dev/core/src/com/google/gwt/soyc/GlobalInformation.java
+++ b/dev/core/src/com/google/gwt/soyc/GlobalInformation.java
@@ -36,12 +36,12 @@
   private SizeBreakdown initialCodeBreakdown = new SizeBreakdown(
       "Initially downloaded code", "initial");
   private SizeBreakdown leftoversBreakdown = new SizeBreakdown(
-      "Leftovers code, code not in any other split point", "leftovers");
-  private int numSplitPoints = 0;
+      "Leftovers code, code not in any other fragment", "leftovers");
   private Map<String, TreeSet<String>> packageToClasses = new TreeMap<String, TreeSet<String>>();
   private final String permutationId;
-  private ArrayList<Integer> splitPointInitialLoadSequence = new ArrayList<Integer>();
-  private HashMap<Integer, String> splitPointToLocation = new HashMap<Integer, String>();
+  private ArrayList<Integer> initialFragmentLoadSequence = new ArrayList<Integer>();
+  private HashMap<Integer, List<String>> fragmentDescriptors =
+      new HashMap<Integer, List<String>>();
   private SizeBreakdown totalCodeBreakdown = new SizeBreakdown("Total program",
       "total");
 
@@ -53,10 +53,10 @@
     List<SizeBreakdown> breakdowns = new ArrayList<SizeBreakdown>();
     breakdowns.add(totalCodeBreakdown);
     breakdowns.add(initialCodeBreakdown);
-    if (numSplitPoints > 0) {
+    if (getNumFragments() > 0) {
       breakdowns.add(leftoversBreakdown);
-      for (int sp = 1; sp <= numSplitPoints; sp++) {
-        breakdowns.add(splitPointCodeBreakdown(sp));
+      for (int fragment = 1; fragment <= getNumFragments(); fragment++) {
+        breakdowns.add(fragmentCodeBreakdown(fragment));
       }
     }
     return breakdowns.toArray(EMPTY_SIZE_BREAKDOWN);
@@ -99,7 +99,7 @@
   }
 
   /**
-   * Gets the initial code breakdown.
+   * Gets the initial fragment size breakdown.
    * 
    * @return initialCodeBreakdown
    */
@@ -108,7 +108,7 @@
   }
 
   /**
-   * Gets the leftovers code breakdown.
+   * Gets the leftovers fragment size breakdown.
    * 
    * @return leftoversCodeBreakdown
    */
@@ -117,12 +117,12 @@
   }
 
   /**
-   * Gets the number of split points.
+   * Gets the number of fragments..
    * 
-   * @return numSplitPoints
+   * @return the number of fragments.
    */
-  public final int getNumSplitPoints() {
-    return numSplitPoints;
+  public final int getNumFragments() {
+    return fragmentDescriptors.size();
   }
 
   /**
@@ -141,19 +141,37 @@
   /**
    * Gets the initial load sequence.
    * 
-   * @return splitPointInitialLoadSequence
+   * @return initialFragmentLoadSequence
    */
-  public final ArrayList<Integer> getSplitPointInitialLoadSequence() {
-    return splitPointInitialLoadSequence;
+  public final ArrayList<Integer> getInitialFragmentLoadSequence() {
+    return initialFragmentLoadSequence;
   }
 
   /**
-   * Gets the mapping from split points to locations where they were set.
-   * 
-   * @return splitPointToLocation
+   * Adds a descriptor (a split point) to a fragment.
+   *
+   * @param fragment the fragment number.
+   * @param desc a string describing a split point for fragment <code>fragment</code>
+   *
    */
-  public final HashMap<Integer, String> getSplitPointToLocation() {
-    return splitPointToLocation;
+  public final void addFragmentDescriptor(int fragment, String desc) {
+    List<String> descriptions = fragmentDescriptors.get(fragment);
+    if (descriptions == null) {
+      descriptions = new ArrayList<String>();
+      fragmentDescriptors.put(fragment, descriptions);
+    }
+    descriptions.add(desc);
+  }
+
+  /**
+   * Gets the the descriptors associated with a
+   * fragment.
+   *
+   * @param fragment the fragment number
+   * @return a list of descriptors (each representing a single split point.
+   */
+  public final List<String> getFragmentDescriptors(int fragment) {
+    return fragmentDescriptors.get(fragment);
   }
 
   /**
@@ -166,25 +184,18 @@
   }
 
   /**
-   * Increments the split point count.
-   */
-  public final void incrementSplitPoints() {
-    numSplitPoints++;
-  }
-
-  /**
-   * Gets an exclusive code breakdown for a split point.
+   * Gets an exclusive code breakdown for a fragment.
    * 
-   * @param sp split point
-   * @return exlusive code breakdown for sp
+   * @param fragment the fragment id
+   * @return exlusive code breakdown for fragment
    */
-  public SizeBreakdown splitPointCodeBreakdown(int sp) {
-    assert sp >= 1 && sp <= numSplitPoints;
-    if (!exclusiveCodeBreakdowns.containsKey(sp)) {
-      exclusiveCodeBreakdowns.put(sp, new SizeBreakdown("split point " + sp
-          + ": " + splitPointToLocation.get(sp), "sp" + sp));
+  public SizeBreakdown fragmentCodeBreakdown(int fragment) {
+    assert fragment >= 1 && fragment <= getNumFragments();
+    if (!exclusiveCodeBreakdowns.containsKey(fragment)) {
+      exclusiveCodeBreakdowns.put(fragment, new SizeBreakdown("split point " + fragment
+          + ": " + fragmentDescriptors.get(fragment), "fragment" + fragment));
     }
-    return exclusiveCodeBreakdowns.get(sp);
+    return exclusiveCodeBreakdowns.get(fragment);
   }
 
   /**
diff --git a/dev/core/src/com/google/gwt/soyc/MakeTopLevelHtmlForPerm.java b/dev/core/src/com/google/gwt/soyc/MakeTopLevelHtmlForPerm.java
index f3a70ef..4809e79 100644
--- a/dev/core/src/com/google/gwt/soyc/MakeTopLevelHtmlForPerm.java
+++ b/dev/core/src/com/google/gwt/soyc/MakeTopLevelHtmlForPerm.java
@@ -20,6 +20,7 @@
 import com.google.gwt.core.ext.linker.ModuleMetricsArtifact;
 import com.google.gwt.core.ext.linker.PrecompilationMetricsArtifact;
 import com.google.gwt.core.ext.soyc.impl.SizeMapRecorder;
+import com.google.gwt.dev.util.Strings;
 import com.google.gwt.dev.util.Util;
 import com.google.gwt.dev.util.collect.Lists;
 import com.google.gwt.dev.util.collect.Sets;
@@ -260,9 +261,16 @@
 
       // array of split point descriptions
       outFile.println("  var spl = [");
-      for (int sp = 1; sp <= globalInformation.getNumSplitPoints(); sp++) {
-        outFile.println("        '"
-            + globalInformation.getSplitPointToLocation().get(sp) + "',");
+      for (int fragment = 1; fragment <= globalInformation.getNumFragments(); fragment++) {
+        final List<String> fragmentDescriptors = globalInformation.getFragmentDescriptors(fragment);
+        String[] escapedFragmentDescriptors =
+            new String[fragmentDescriptors.size()];
+        for (int i = 0; i < fragmentDescriptors.size(); i++) {
+          escapedFragmentDescriptors[i] =
+              escapeJSString(fragmentDescriptors.get(i));
+        }
+        outFile.println("        '" + Strings.join(escapedFragmentDescriptors, ",")
+            + "',");
       }
       outFile.println("  ];");
       
@@ -364,7 +372,7 @@
       outFile.println("    document.write(\"<li><a href='\" + d1 + \"#\" + className + \"'>"
           + "See why it's live</a></li>\");");
       outFile.println("    for (var sp = 1; sp <= "
-          + globalInformation.getNumSplitPoints() + "; sp++) {");
+          + globalInformation.getNumFragments() + "; sp++) {");
       outFile.println("      var d2 = 'methodDependencies-sp' + sp + '-" + getPermutationId() + ".html';");
       outFile.println("      document.write(\"<li><a href='\" + d2 + \"#\" + className +\"'>"
           + " See why it's not exclusive to s.p. #\" + sp + \" (\" + spl[sp - 1] + \")"
@@ -619,7 +627,14 @@
     return breakdown.getId() + "_" + permutationId + "_Classes.html";
   }
 
+  private String escapeJSString(String str) {
+    // TODO(rluble): make into a Util routine.
+    return str.replaceAll("/", "\\/");
+  }
+
   private static String escapeXml(String unescaped) {
+    // TODO(rluble): see why SizeMapRecorder.escapeXML is different from Util.escapeXML. If two
+    // different versions are needed at all move SizeMapRecorder.escapeXML to Util.
     return SizeMapRecorder.escapeXml(unescaped);
   }
 
@@ -1265,34 +1280,39 @@
     percentFormatter.setMinimumFractionDigits(1);
     percentFormatter.setMaximumFractionDigits(1);
 
-    if (globalInformation.getSplitPointToLocation().size() >= 1) {
+    if (globalInformation.getNumFragments() >= 1) {
 
-      int numSplitPoints = globalInformation.getSplitPointToLocation().size();
+      int numFragments = globalInformation.getNumFragments();
       int maxSize = globalInformation.getTotalCodeBreakdown().sizeAllCode;
 
-      for (int i = FRAGMENT_NUMBER_TOTAL_PROGRAM; i <= numSplitPoints + 1; i++) {
+      for (int fragment = FRAGMENT_NUMBER_TOTAL_PROGRAM; fragment <= numFragments + 1; fragment++) {
         SizeBreakdown breakdown;
-        if (i == FRAGMENT_NUMBER_TOTAL_PROGRAM) {
+        if (fragment == FRAGMENT_NUMBER_TOTAL_PROGRAM
+            || fragment == numFragments + 1 // leftovers
+            || fragment == FRAGMENT_NUMBER_INITIAL_DOWNLOAD) {
           continue;
-        } else if (i == numSplitPoints + 1) { // leftovers
-          continue;
-        } else if (i == FRAGMENT_NUMBER_INITIAL_DOWNLOAD) {
-          continue;
-        } else {
-          breakdown = globalInformation.splitPointCodeBreakdown(i);
         }
 
+        breakdown = globalInformation.fragmentCodeBreakdown(fragment);
+
         String drillDownFileName = shellFileName(breakdown, getPermutationId());
-        String splitPointDescription = globalInformation.getSplitPointToLocation().get(
-            i);
+        final List<String> fragmentDescriptors = globalInformation.getFragmentDescriptors(fragment);
+        String[] escapedFragmentDescriptors =
+            new String[fragmentDescriptors.size()];
+        for (int i = 0; i < fragmentDescriptors.size(); i++) {
+          escapedFragmentDescriptors[i] =
+              escapeXml(fragmentDescriptors.get(i));
+        }
+
+        String fragmentDescription = Strings.join(escapedFragmentDescriptors, "<BR>");
 
         int size = breakdown.sizeAllCode;
         float perc = (float) size / (float) maxSize;
 
         outFile.println("<tr>");
-        outFile.println("<td>" + i + "</td>");
-        outFile.println("<td><a href=\"" + drillDownFileName + "\">"
-            + splitPointDescription + "</a></td>");
+        outFile.println("<td>" + fragment + "</td>");
+        outFile.print("<td><a href=\"" + drillDownFileName + "\">" + fragmentDescription
+            + "</a></td>");
         outFile.println("<td class=\"soyc-bargraph-col\">");
         outFile.println("<div class=\"soyc-bar-graph goog-inline-block\">");
         // CHECKSTYLE_OFF
@@ -1412,7 +1432,7 @@
    * @returns true of the split point is initial, false otherwise
    */
   private boolean isInitialSplitPoint(int splitPoint) {
-    return globalInformation.getSplitPointInitialLoadSequence().contains(
+    return globalInformation.getInitialFragmentLoadSequence().contains(
         splitPoint);
   }
 
@@ -1824,8 +1844,8 @@
    */
   private Iterable<Integer> splitPointsWithClass(String className) {
     List<Integer> sps = new ArrayList<Integer>();
-    for (int sp = 1; sp <= globalInformation.getNumSplitPoints(); sp++) {
-      Map<String, Integer> classToSize = globalInformation.splitPointCodeBreakdown(sp).classToSize;
+    for (int sp = 1; sp <= globalInformation.getNumFragments(); sp++) {
+      Map<String, Integer> classToSize = globalInformation.fragmentCodeBreakdown(sp).classToSize;
       if (classToSize.containsKey(className)) {
         sps.add(sp);
       }
diff --git a/dev/core/src/com/google/gwt/soyc/SoycDashboard.java b/dev/core/src/com/google/gwt/soyc/SoycDashboard.java
index e2b3409..03d01c4 100644
--- a/dev/core/src/com/google/gwt/soyc/SoycDashboard.java
+++ b/dev/core/src/com/google/gwt/soyc/SoycDashboard.java
@@ -331,7 +331,7 @@
       makeTopLevelHtmlForPerm.makeDependenciesHtml();
     }
 
-    if (globalInformation.getNumSplitPoints() > 0) {
+    if (globalInformation.getNumFragments() > 0) {
       makeTopLevelHtmlForPerm.makeSplitStatusPages();
       makeTopLevelHtmlForPerm.makeLeftoverStatusPages();
     }
@@ -395,11 +395,11 @@
     if (fragment == 0) {
       breakdowns.add(globalInformation.getInitialCodeBreakdown());
     }
-    if (fragment == (globalInformation.getNumSplitPoints() + 1)) {
+    if (fragment == (globalInformation.getNumFragments() + 1)) {
       breakdowns.add(globalInformation.getLeftoversBreakdown());
     }
-    if (fragment >= 1 && fragment <= globalInformation.getNumSplitPoints()) {
-      breakdowns.add(globalInformation.splitPointCodeBreakdown(fragment));
+    if (fragment >= 1 && fragment <= globalInformation.getNumFragments()) {
+      breakdowns.add(globalInformation.fragmentCodeBreakdown(fragment));
     }
     return breakdowns;
   }
@@ -411,7 +411,7 @@
     }
 
     if (breakdown == globalInformation.getTotalCodeBreakdown()) {
-      if (globalInformation.getNumSplitPoints() > 0) {
+      if (globalInformation.getNumFragments() > 0) {
         return makeTopLevelHtmlForPerm.new DependencyLinkerForTotalBreakdown();
       } else {
         return makeTopLevelHtmlForPerm.new DependencyLinkerForInitialCode();
@@ -419,7 +419,7 @@
     } else if (breakdown == globalInformation.getInitialCodeBreakdown()) {
       return makeTopLevelHtmlForPerm.new DependencyLinkerForInitialCode();
     } else if (breakdown == globalInformation.getLeftoversBreakdown()) {
-      assert globalInformation.getNumSplitPoints() > 0;
+      assert globalInformation.getNumFragments() > 0;
       return makeTopLevelHtmlForPerm.new DependencyLinkerForLeftoversFragment();
     } else {
       return new NullDependencyLinker();
@@ -607,13 +607,17 @@
           inInitialLoadSequence = true;
         } else if (inInitialLoadSequence
             && strippedName.compareTo("splitpointref") == 0) {
-          globalInformation.getSplitPointInitialLoadSequence().add(
+          globalInformation.getInitialFragmentLoadSequence().add(
               parseSplitPointReference(attributes));
         }
       }
 
-      /*
-       * parses the split points
+      /**
+       * Parses a split point entry from a splitpoints XML soyc file.
+       * A split point node as in \<splitpoint id=N location=DESC/\>
+       *
+       * @param attributes the attributes of the splitpoint node (provided by the SAX parsing
+       *                   infrastructure)
        */
       private void parseSplitPoint(final Attributes attributes) {
         if (attributes.getValue("id") != null) {
@@ -624,9 +628,8 @@
             curSplitPointLocation = curSplitPointLocation.replaceAll("\\(L.*",
                 "");
 
-            globalInformation.getSplitPointToLocation().put(
+            globalInformation.addFragmentDescriptor(
                 Integer.parseInt(curSplitPoint), curSplitPointLocation);
-            globalInformation.incrementSplitPoints();
           }
         }
       }
diff --git a/dev/core/src/org/apache/COPYING b/dev/core/src/org/apache/COPYING
deleted file mode 100644
index d9a10c0..0000000
--- a/dev/core/src/org/apache/COPYING
+++ /dev/null
@@ -1,176 +0,0 @@
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
diff --git a/dev/core/src/org/apache/catalina/loader/WebappClassLoader.java b/dev/core/src/org/apache/catalina/loader/WebappClassLoader.java
deleted file mode 100644
index f941fad..0000000
--- a/dev/core/src/org/apache/catalina/loader/WebappClassLoader.java
+++ /dev/null
@@ -1,2169 +0,0 @@
-/*
- * Copyright 1999,2004 The Apache Software Foundation.
- * 
- * Licensed 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.
- */
-// Modified by Google.
-
-package org.apache.catalina.loader;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.FilePermission;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.security.AccessControlException;
-import java.security.AccessController;
-import java.security.CodeSource;
-import java.security.Permission;
-import java.security.PermissionCollection;
-import java.security.Policy;
-import java.security.PrivilegedAction;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Vector;
-import java.util.jar.Attributes;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
-import java.util.jar.Manifest;
-import java.util.jar.Attributes.Name;
-
-import javax.naming.NameClassPair;
-import javax.naming.NamingEnumeration;
-import javax.naming.NamingException;
-import javax.naming.directory.DirContext;
-
-import org.apache.catalina.Lifecycle;
-import org.apache.catalina.LifecycleException;
-import org.apache.catalina.LifecycleListener;
-import org.apache.catalina.util.StringManager;
-import org.apache.naming.JndiPermission;
-import org.apache.naming.resources.Resource;
-import org.apache.naming.resources.ResourceAttributes;
-import org.apache.tomcat.util.compat.JdkCompat;
-
-/**
- * Specialized web application class loader.
- * <p>
- * This class loader is a full reimplementation of the 
- * <code>URLClassLoader</code> from the JDK. It is desinged to be fully
- * compatible with a normal <code>URLClassLoader</code>, although its internal
- * behavior may be completely different.
- * <p>
- * <strong>IMPLEMENTATION NOTE</strong> - This class loader faithfully follows 
- * the delegation model recommended in the specification. The system class 
- * loader will be queried first, then the local repositories, and only then 
- * delegation to the parent class loader will occur. This allows the web 
- * application to override any shared class except the classes from J2SE.
- * Special handling is provided from the JAXP XML parser interfaces, the JNDI
- * interfaces, and the classes from the servlet API, which are never loaded 
- * from the webapp repository.
- * <p>
- * <strong>IMPLEMENTATION NOTE</strong> - Due to limitations in Jasper 
- * compilation technology, any repository which contains classes from 
- * the servlet API will be ignored by the class loader.
- * <p>
- * <strong>IMPLEMENTATION NOTE</strong> - The class loader generates source
- * URLs which include the full JAR URL when a class is loaded from a JAR file,
- * which allows setting security permission at the class level, even when a
- * class is contained inside a JAR.
- * <p>
- * <strong>IMPLEMENTATION NOTE</strong> - Local repositories are searched in
- * the order they are added via the initial constructor and/or any subsequent
- * calls to <code>addRepository()</code> or <code>addJar()</code>.
- * <p>
- * <strong>IMPLEMENTATION NOTE</strong> - No check for sealing violations or
- * security is made unless a security manager is present.
- *
- * @author Remy Maucherat
- * @author Craig R. McClanahan
- * @version $Revision: 1.34 $ $Date: 2004/05/26 15:47:40 $
- */
-public class WebappClassLoader
-    extends URLClassLoader
-    implements Reloader, Lifecycle
- {
-
-    private static org.apache.commons.logging.Log log=
-        org.apache.commons.logging.LogFactory.getLog( WebappClassLoader.class );
-
-    protected class PrivilegedFindResource
-        implements PrivilegedAction {
-
-        private File file;
-        private String path;
-
-        PrivilegedFindResource(File file, String path) {
-            this.file = file;
-            this.path = path;
-        }
-
-        public Object run() {
-            return findResourceInternal(file, path);
-        }
-
-    }
-
-
-    // ------------------------------------------------------- Static Variables
-
-
-    /**
-     * The set of trigger classes that will cause a proposed repository not
-     * to be added if this class is visible to the class loader that loaded
-     * this factory class.  Typically, trigger classes will be listed for
-     * components that have been integrated into the JDK for later versions,
-     * but where the corresponding JAR files are required to run on
-     * earlier versions.
-     */
-    private static final String[] triggers = {
-        "javax.servlet.Servlet"                     // Servlet API
-    };
-
-    /** 
-     * Jdk Compatibility Support.
-     */
-    private static JdkCompat jdkCompat = JdkCompat.getJdkCompat();
-
-    /**
-     * Set of package names which are not allowed to be loaded from a webapp
-     * class loader without delegating first.
-     */
-    private static final String[] packageTriggers = {
-        "javax",                                     // Java extensions
-        "org.xml.sax",                               // SAX 1 & 2
-        "org.w3c.dom",                               // DOM 1 & 2
-        "org.apache.xerces",                         // Xerces 1 & 2
-        "org.apache.xalan"                           // Xalan
-    };
-
-
-    /**
-     * The string manager for this package.
-     */
-    protected static final StringManager sm =
-        StringManager.getManager(Constants.Package);
-
-
-    // ----------------------------------------------------------- Constructors
-
-
-    /**
-     * Construct a new ClassLoader with no defined repositories and no
-     * parent ClassLoader.
-     */
-    public WebappClassLoader() {
-
-        super(new URL[0]);
-        this.parent = getParent();
-        system = getSystemClassLoader();
-        securityManager = System.getSecurityManager();
-
-        if (securityManager != null) {
-            refreshPolicy();
-        }
-
-    }
-
-
-    /**
-     * Construct a new ClassLoader with no defined repositories and no
-     * parent ClassLoader.
-     */
-    public WebappClassLoader(ClassLoader parent) {
-
-        super(new URL[0], parent);
-                
-        this.parent = getParent();
-        
-        system = getSystemClassLoader();
-        securityManager = System.getSecurityManager();
-
-        if (securityManager != null) {
-            refreshPolicy();
-        }
-    }
-
-
-    // ----------------------------------------------------- Instance Variables
-
-
-    /**
-     * Associated directory context giving access to the resources in this
-     * webapp.
-     */
-    protected DirContext resources = null;
-
-
-    /**
-     * The cache of ResourceEntry for classes and resources we have loaded,
-     * keyed by resource name.
-     */
-    protected HashMap resourceEntries = new HashMap();
-
-
-    /**
-     * The list of not found resources.
-     */
-    protected HashMap notFoundResources = new HashMap();
-
-
-    /**
-     * The debugging detail level of this component.
-     */
-    protected int debug = 0;
-
-
-    /**
-     * Should this class loader delegate to the parent class loader
-     * <strong>before</strong> searching its own repositories (i.e. the
-     * usual Java2 delegation model)?  If set to <code>false</code>,
-     * this class loader will search its own repositories first, and
-     * delegate to the parent only if the class or resource is not
-     * found locally.
-     */
-    protected boolean delegate = false;
-
-
-    /**
-     * Last time a JAR was accessed.
-     */
-    protected long lastJarAccessed = 0L;
-
-
-    /**
-     * The list of local repositories, in the order they should be searched
-     * for locally loaded classes or resources.
-     */
-    protected String[] repositories = new String[0];
-
-
-     /**
-      * Repositories URLs, used to cache the result of getURLs.
-      */
-     protected URL[] repositoryURLs = null;
-
-
-    /**
-     * Repositories translated as path in the work directory (for Jasper
-     * originally), but which is used to generate fake URLs should getURLs be
-     * called.
-     */
-    protected File[] files = new File[0];
-
-
-    /**
-     * The list of JARs, in the order they should be searched
-     * for locally loaded classes or resources.
-     */
-    protected JarFile[] jarFiles = new JarFile[0];
-
-
-    /**
-     * The list of JARs, in the order they should be searched
-     * for locally loaded classes or resources.
-     */
-    protected File[] jarRealFiles = new File[0];
-
-
-    /**
-     * The path which will be monitored for added Jar files.
-     */
-    protected String jarPath = null;
-
-
-    /**
-     * The list of JARs, in the order they should be searched
-     * for locally loaded classes or resources.
-     */
-    protected String[] jarNames = new String[0];
-
-
-    /**
-     * The list of JARs last modified dates, in the order they should be
-     * searched for locally loaded classes or resources.
-     */
-    protected long[] lastModifiedDates = new long[0];
-
-
-    /**
-     * The list of resources which should be checked when checking for
-     * modifications.
-     */
-    protected String[] paths = new String[0];
-
-
-    /**
-     * A list of read File and Jndi Permission's required if this loader
-     * is for a web application context.
-     */
-    private ArrayList permissionList = new ArrayList();
-
-
-    /**
-     * Path where resources loaded from JARs will be extracted.
-     */
-    private File loaderDir = null;
-
-
-    /**
-     * The PermissionCollection for each CodeSource for a web
-     * application context.
-     */
-    private HashMap loaderPC = new HashMap();
-
-
-    /**
-     * Instance of the SecurityManager installed.
-     */
-    private SecurityManager securityManager = null;
-
-
-    /**
-     * The parent class loader.
-     */
-    private ClassLoader parent = null;
-
-
-    /**
-     * The system class loader.
-     */
-    private ClassLoader system = null;
-
-
-    /**
-     * Has this component been started?
-     */
-    protected boolean started = false;
-
-
-    /**
-     * Has external repositories.
-     */
-    protected boolean hasExternalRepositories = false;
-
-
-    /**
-     * All permission.
-     */
-    private Permission allPermission = new java.security.AllPermission();
-
-
-    // ------------------------------------------------------------- Properties
-
-
-    /**
-     * Get associated resources.
-     */
-    public DirContext getResources() {
-
-        return this.resources;
-
-    }
-
-
-    /**
-     * Set associated resources.
-     */
-    public void setResources(DirContext resources) {
-
-        this.resources = resources;
-
-    }
-
-
-    /**
-     * Return the debugging detail level for this component.
-     */
-    public int getDebug() {
-
-        return (this.debug);
-
-    }
-
-
-    /**
-     * Set the debugging detail level for this component.
-     *
-     * @param debug The new debugging detail level
-     */
-    public void setDebug(int debug) {
-
-        this.debug = debug;
-
-    }
-
-
-    /**
-     * Return the "delegate first" flag for this class loader.
-     */
-    public boolean getDelegate() {
-
-        return (this.delegate);
-
-    }
-
-
-    /**
-     * Set the "delegate first" flag for this class loader.
-     *
-     * @param delegate The new "delegate first" flag
-     */
-    public void setDelegate(boolean delegate) {
-
-        this.delegate = delegate;
-
-    }
-
-
-    /**
-     * If there is a Java SecurityManager create a read FilePermission
-     * or JndiPermission for the file directory path.
-     *
-     * @param path file directory path
-     */
-    public void addPermission(String path) {
-        if (path == null) {
-            return;
-        }
-
-        if (securityManager != null) {
-            Permission permission = null;
-            if( path.startsWith("jndi:") || path.startsWith("jar:jndi:") ) {
-                if (!path.endsWith("/")) {
-                    path = path + "/";
-                }
-                permission = new JndiPermission(path + "*");
-                addPermission(permission);
-            } else {
-                if (!path.endsWith(File.separator)) {
-                    permission = new FilePermission(path, "read");
-                    addPermission(permission);
-                    path = path + File.separator;
-                }
-                permission = new FilePermission(path + "-", "read");
-                addPermission(permission);
-            }
-        }
-    }
-
-
-    /**
-     * If there is a Java SecurityManager create a read FilePermission
-     * or JndiPermission for URL.
-     *
-     * @param url URL for a file or directory on local system
-     */
-    public void addPermission(URL url) {
-        if (url != null) {
-            addPermission(url.toString());
-        }
-    }
-
-
-    /**
-     * If there is a Java SecurityManager create a Permission.
-     *
-     * @param url URL for a file or directory on local system
-     */
-    public void addPermission(Permission permission) {
-        if ((securityManager != null) && (permission != null)) {
-            permissionList.add(permission);
-        }
-    }
-
-
-    /**
-     * Return the JAR path.
-     */
-    public String getJarPath() {
-
-        return this.jarPath;
-
-    }
-
-
-    /**
-     * Change the Jar path.
-     */
-    public void setJarPath(String jarPath) {
-
-        this.jarPath = jarPath;
-
-    }
-
-
-    /**
-     * Change the work directory.
-     */
-    public void setWorkDir(File workDir) {
-        this.loaderDir = new File(workDir, "loader");
-    }
-
-
-    // ------------------------------------------------------- Reloader Methods
-
-
-    /**
-     * Add a new repository to the set of places this ClassLoader can look for
-     * classes to be loaded.
-     *
-     * @param repository Name of a source of classes to be loaded, such as a
-     *  directory pathname, a JAR file pathname, or a ZIP file pathname
-     *
-     * @exception IllegalArgumentException if the specified repository is
-     *  invalid or does not exist
-     */
-    public void addRepository(String repository) {
-
-        // Ignore any of the standard repositories, as they are set up using
-        // either addJar or addRepository
-        if (repository.startsWith("/WEB-INF/lib")
-            || repository.startsWith("/WEB-INF/classes"))
-            return;
-
-        // Add this repository to our underlying class loader
-        try {
-            URL url = new URL(repository);
-            super.addURL(url);
-            hasExternalRepositories = true;
-            repositoryURLs = null;
-        } catch (MalformedURLException e) {
-            IllegalArgumentException iae = new IllegalArgumentException
-                ("Invalid repository: " + repository); 
-            jdkCompat.chainException(iae, e);
-            throw iae;
-        }
-
-    }
-
-
-    /**
-     * Add a new repository to the set of places this ClassLoader can look for
-     * classes to be loaded.
-     *
-     * @param repository Name of a source of classes to be loaded, such as a
-     *  directory pathname, a JAR file pathname, or a ZIP file pathname
-     *
-     * @exception IllegalArgumentException if the specified repository is
-     *  invalid or does not exist
-     */
-    synchronized void addRepository(String repository, File file) {
-
-        // Note : There should be only one (of course), but I think we should
-        // keep this a bit generic
-
-        if (repository == null)
-            return;
-
-        if (log.isDebugEnabled())
-            log.debug("addRepository(" + repository + ")");
-
-        int i;
-
-        // Add this repository to our internal list
-        String[] result = new String[repositories.length + 1];
-        for (i = 0; i < repositories.length; i++) {
-            result[i] = repositories[i];
-        }
-        result[repositories.length] = repository;
-        repositories = result;
-
-        // Add the file to the list
-        File[] result2 = new File[files.length + 1];
-        for (i = 0; i < files.length; i++) {
-            result2[i] = files[i];
-        }
-        result2[files.length] = file;
-        files = result2;
-
-    }
-
-
-    synchronized void addJar(String jar, JarFile jarFile, File file)
-        throws IOException {
-
-        if (jar == null)
-            return;
-        if (jarFile == null)
-            return;
-        if (file == null)
-            return;
-
-        if (log.isDebugEnabled())
-            log.debug("addJar(" + jar + ")");
-
-        int i;
-
-        if ((jarPath != null) && (jar.startsWith(jarPath))) {
-
-            String jarName = jar.substring(jarPath.length());
-            while (jarName.startsWith("/"))
-                jarName = jarName.substring(1);
-
-            String[] result = new String[jarNames.length + 1];
-            for (i = 0; i < jarNames.length; i++) {
-                result[i] = jarNames[i];
-            }
-            result[jarNames.length] = jarName;
-            jarNames = result;
-
-        }
-
-        try {
-
-            // Register the JAR for tracking
-
-            long lastModified =
-                ((ResourceAttributes) resources.getAttributes(jar))
-                .getLastModified();
-
-            String[] result = new String[paths.length + 1];
-            for (i = 0; i < paths.length; i++) {
-                result[i] = paths[i];
-            }
-            result[paths.length] = jar;
-            paths = result;
-
-            long[] result3 = new long[lastModifiedDates.length + 1];
-            for (i = 0; i < lastModifiedDates.length; i++) {
-                result3[i] = lastModifiedDates[i];
-            }
-            result3[lastModifiedDates.length] = lastModified;
-            lastModifiedDates = result3;
-
-        } catch (NamingException e) {
-            // Ignore
-        }
-
-        // If the JAR currently contains invalid classes, don't actually use it
-        // for classloading
-        if (!validateJarFile(file))
-            return;
-
-        JarFile[] result2 = new JarFile[jarFiles.length + 1];
-        for (i = 0; i < jarFiles.length; i++) {
-            result2[i] = jarFiles[i];
-        }
-        result2[jarFiles.length] = jarFile;
-        jarFiles = result2;
-
-        // Add the file to the list
-        File[] result4 = new File[jarRealFiles.length + 1];
-        for (i = 0; i < jarRealFiles.length; i++) {
-            result4[i] = jarRealFiles[i];
-        }
-        result4[jarRealFiles.length] = file;
-        jarRealFiles = result4;
-    }
-
-
-    /**
-     * Return a String array of the current repositories for this class
-     * loader.  If there are no repositories, a zero-length array is
-     * returned.For security reason, returns a clone of the Array (since 
-     * String are immutable).
-     */
-    public String[] findRepositories() {
-
-        return ((String[])repositories.clone());
-
-    }
-
-
-    /**
-     * Have one or more classes or resources been modified so that a reload
-     * is appropriate?
-     */
-    public boolean modified() {
-
-        if (log.isDebugEnabled())
-            log.debug("modified()");
-
-        // Checking for modified loaded resources
-        int length = paths.length;
-
-        // A rare race condition can occur in the updates of the two arrays
-        // It's totally ok if the latest class added is not checked (it will
-        // be checked the next time
-        int length2 = lastModifiedDates.length;
-        if (length > length2)
-            length = length2;
-
-        for (int i = 0; i < length; i++) {
-            try {
-                long lastModified =
-                    ((ResourceAttributes) resources.getAttributes(paths[i]))
-                    .getLastModified();
-                if (lastModified != lastModifiedDates[i]) {
-                    if( log.isDebugEnabled() ) 
-                        log.debug("  Resource '" + paths[i]
-                                  + "' was modified; Date is now: "
-                                  + new java.util.Date(lastModified) + " Was: "
-                                  + new java.util.Date(lastModifiedDates[i]));
-                    return (true);
-                }
-            } catch (NamingException e) {
-                log.error("    Resource '" + paths[i] + "' is missing");
-                return (true);
-            }
-        }
-
-        length = jarNames.length;
-
-        // Check if JARs have been added or removed
-        if (getJarPath() != null) {
-
-            try {
-                NamingEnumeration enum_ = resources.listBindings(getJarPath());
-                int i = 0;
-                while (enum_.hasMoreElements() && (i < length)) {
-                    NameClassPair ncPair = (NameClassPair) enum_.nextElement();
-                    String name = ncPair.getName();
-                    // Ignore non JARs present in the lib folder
-                    if (!name.endsWith(".jar"))
-                        continue;
-                    if (!name.equals(jarNames[i])) {
-                        // Missing JAR
-                        log.info("    Additional JARs have been added : '" 
-                                 + name + "'");
-                        return (true);
-                    }
-                    i++;
-                }
-                if (enum_.hasMoreElements()) {
-                    while (enum_.hasMoreElements()) {
-                        NameClassPair ncPair = 
-                            (NameClassPair) enum_.nextElement();
-                        String name = ncPair.getName();
-                        // Additional non-JAR files are allowed
-                        if (name.endsWith(".jar")) {
-                            // There was more JARs
-                            log.info("    Additional JARs have been added");
-                            return (true);
-                        }
-                    }
-                } else if (i < jarNames.length) {
-                    // There was less JARs
-                    log.info("    Additional JARs have been added");
-                    return (true);
-                }
-            } catch (NamingException e) {
-                if (log.isDebugEnabled())
-                    log.debug("    Failed tracking modifications of '"
-                        + getJarPath() + "'");
-            } catch (ClassCastException e) {
-                log.error("    Failed tracking modifications of '"
-                          + getJarPath() + "' : " + e.getMessage());
-            }
-
-        }
-
-        // No classes have been modified
-        return (false);
-
-    }
-
-
-    /**
-     * Render a String representation of this object.
-     */
-    public String toString() {
-
-        StringBuffer sb = new StringBuffer("WebappClassLoader\r\n");
-        sb.append("  delegate: ");
-        sb.append(delegate);
-        sb.append("\r\n");
-        sb.append("  repositories:\r\n");
-        if (repositories != null) {
-            for (int i = 0; i < repositories.length; i++) {
-                sb.append("    ");
-                sb.append(repositories[i]);
-                sb.append("\r\n");
-            }
-        }
-        if (this.parent != null) {
-            sb.append("----------> Parent Classloader:\r\n");
-            sb.append(this.parent.toString());
-            sb.append("\r\n");
-        }
-        return (sb.toString());
-
-    }
-
-
-    // ---------------------------------------------------- ClassLoader Methods
-
-
-     /**
-      * Add the specified URL to the classloader.
-      */
-     protected void addURL(URL url) {
-         super.addURL(url);
-         hasExternalRepositories = true;
-         repositoryURLs = null;
-     }
-
-
-    /**
-     * Find the specified class in our local repositories, if possible.  If
-     * not found, throw <code>ClassNotFoundException</code>.
-     *
-     * @param name Name of the class to be loaded
-     *
-     * @exception ClassNotFoundException if the class was not found
-     */
-    public Class findClass(String name) throws ClassNotFoundException {
-
-        if (log.isDebugEnabled())
-            log.debug("    findClass(" + name + ")");
-
-        // (1) Permission to define this class when using a SecurityManager
-        if (securityManager != null) {
-            int i = name.lastIndexOf('.');
-            if (i >= 0) {
-                try {
-                    if (log.isTraceEnabled())
-                        log.trace("      securityManager.checkPackageDefinition");
-                    securityManager.checkPackageDefinition(name.substring(0,i));
-                } catch (Exception se) {
-                    if (log.isTraceEnabled())
-                        log.trace("      -->Exception-->ClassNotFoundException", se);
-                    throw new ClassNotFoundException(name, se);
-                }
-            }
-        }
-
-        // Ask our superclass to locate this class, if possible
-        // (throws ClassNotFoundException if it is not found)
-        Class clazz = null;
-        try {
-            if (log.isTraceEnabled())
-                log.trace("      findClassInternal(" + name + ")");
-            try {
-                clazz = findClassInternal(name);
-            } catch(ClassNotFoundException cnfe) {
-                if (!hasExternalRepositories) {
-                    throw cnfe;
-                }
-            } catch(AccessControlException ace) {
-                throw new ClassNotFoundException(name, ace);
-            } catch (RuntimeException e) {
-                if (log.isTraceEnabled())
-                    log.trace("      -->RuntimeException Rethrown", e);
-                throw e;
-            }
-            if ((clazz == null) && hasExternalRepositories) {
-                try {
-                    clazz = super.findClass(name);
-                } catch(AccessControlException ace) {
-                    throw new ClassNotFoundException(name, ace);
-                } catch (RuntimeException e) {
-                    if (log.isTraceEnabled())
-                        log.trace("      -->RuntimeException Rethrown", e);
-                    throw e;
-                }
-            }
-            if (clazz == null) {
-                if (log.isDebugEnabled())
-                    log.debug("    --> Returning ClassNotFoundException");
-                throw new ClassNotFoundException(name);
-            }
-        } catch (ClassNotFoundException e) {
-            if (log.isTraceEnabled())
-                log.trace("    --> Passing on ClassNotFoundException");
-            throw e;
-        }
-
-        // Return the class we have located
-        if (log.isTraceEnabled())
-            log.debug("      Returning class " + clazz);
-        if ((log.isTraceEnabled()) && (clazz != null))
-            log.debug("      Loaded by " + clazz.getClassLoader());
-        return (clazz);
-
-    }
-
-
-    /**
-     * Find the specified resource in our local repository, and return a
-     * <code>URL</code> refering to it, or <code>null</code> if this resource
-     * cannot be found.
-     *
-     * @param name Name of the resource to be found
-     */
-    public URL findResource(final String name) {
-
-        if (log.isDebugEnabled())
-            log.debug("    findResource(" + name + ")");
-
-        URL url = null;
-
-        ResourceEntry entry = (ResourceEntry) resourceEntries.get(name);
-        if (entry == null) {
-            entry = findResourceInternal(name, name);
-        }
-        if (entry != null) {
-            url = entry.source;
-        }
-
-        if ((url == null) && hasExternalRepositories)
-            url = super.findResource(name);
-
-        if (log.isDebugEnabled()) {
-            if (url != null)
-                log.debug("    --> Returning '" + url.toString() + "'");
-            else
-                log.debug("    --> Resource not found, returning null");
-        }
-        return (url);
-
-    }
-
-
-    /**
-     * Return an enumeration of <code>URLs</code> representing all of the
-     * resources with the given name.  If no resources with this name are
-     * found, return an empty enumeration.
-     *
-     * @param name Name of the resources to be found
-     *
-     * @exception IOException if an input/output error occurs
-     */
-    public Enumeration findResources(String name) throws IOException {
-
-        if (log.isDebugEnabled())
-            log.debug("    findResources(" + name + ")");
-
-        Vector result = new Vector();
-
-        int jarFilesLength = jarFiles.length;
-        int repositoriesLength = repositories.length;
-
-        int i;
-
-        // Looking at the repositories
-        for (i = 0; i < repositoriesLength; i++) {
-            try {
-                String fullPath = repositories[i] + name;
-                resources.lookup(fullPath);
-                // Note : Not getting an exception here means the resource was
-                // found
-                try {
-                    result.addElement(getURI(new File(files[i], name)));
-                } catch (MalformedURLException e) {
-                    // Ignore
-                }
-            } catch (NamingException e) {
-            }
-        }
-
-        // Looking at the JAR files
-        synchronized (jarFiles) {
-            openJARs();
-            for (i = 0; i < jarFilesLength; i++) {
-                JarEntry jarEntry = jarFiles[i].getJarEntry(name);
-                if (jarEntry != null) {
-                    try {
-                        String jarFakeUrl = getURI(jarRealFiles[i]).toString();
-                        jarFakeUrl = "jar:" + jarFakeUrl + "!/" + name;
-                        result.addElement(new URL(jarFakeUrl));
-                    } catch (MalformedURLException e) {
-                        // Ignore
-                    }
-                }
-            }
-        }
-
-        // Adding the results of a call to the superclass
-        if (hasExternalRepositories) {
-
-            Enumeration otherResourcePaths = super.findResources(name);
-
-            while (otherResourcePaths.hasMoreElements()) {
-                result.addElement(otherResourcePaths.nextElement());
-            }
-
-        }
-
-        return result.elements();
-
-    }
-
-
-    /**
-     * Find the resource with the given name.  A resource is some data
-     * (images, audio, text, etc.) that can be accessed by class code in a
-     * way that is independent of the location of the code.  The name of a
-     * resource is a "/"-separated path name that identifies the resource.
-     * If the resource cannot be found, return <code>null</code>.
-     * <p>
-     * This method searches according to the following algorithm, returning
-     * as soon as it finds the appropriate URL.  If the resource cannot be
-     * found, returns <code>null</code>.
-     * <ul>
-     * <li>If the <code>delegate</code> property is set to <code>true</code>,
-     *     call the <code>getResource()</code> method of the parent class
-     *     loader, if any.</li>
-     * <li>Call <code>findResource()</code> to find this resource in our
-     *     locally defined repositories.</li>
-     * <li>Call the <code>getResource()</code> method of the parent class
-     *     loader, if any.</li>
-     * </ul>
-     *
-     * @param name Name of the resource to return a URL for
-     */
-    public URL getResource(String name) {
-
-        if (log.isDebugEnabled())
-            log.debug("getResource(" + name + ")");
-        URL url = null;
-
-        // (1) Delegate to parent if requested
-        if (delegate) {
-            if (log.isDebugEnabled())
-                log.debug("  Delegating to parent classloader " + parent);
-            ClassLoader loader = parent;
-            if (loader == null)
-                loader = system;
-            url = loader.getResource(name);
-            if (url != null) {
-                if (log.isDebugEnabled())
-                    log.debug("  --> Returning '" + url.toString() + "'");
-                return (url);
-            }
-        }
-
-        // (2) Search local repositories
-        url = findResource(name);
-        if (url != null) {
-            // Locating the repository for special handling in the case 
-            // of a JAR
-            ResourceEntry entry = (ResourceEntry) resourceEntries.get(name);
-            try {
-                String repository = entry.codeBase.toString();
-                if ((repository.endsWith(".jar")) 
-                    && (!(name.endsWith(".class")))) {
-                    // Copy binary content to the work directory if not present
-                    File resourceFile = new File(loaderDir, name);
-                    url = resourceFile.toURL();
-                }
-            } catch (Exception e) {
-                // Ignore
-            }
-            if (log.isDebugEnabled())
-                log.debug("  --> Returning '" + url.toString() + "'");
-            return (url);
-        }
-
-        // (3) Delegate to parent unconditionally if not already attempted
-        if( !delegate ) {
-            ClassLoader loader = parent;
-            if (loader == null)
-                loader = system;
-            url = loader.getResource(name);
-            if (url != null) {
-                if (log.isDebugEnabled())
-                    log.debug("  --> Returning '" + url.toString() + "'");
-                return (url);
-            }
-        }
-
-        // (4) Resource was not found
-        if (log.isDebugEnabled())
-            log.debug("  --> Resource not found, returning null");
-        return (null);
-
-    }
-
-
-    /**
-     * Find the resource with the given name, and return an input stream
-     * that can be used for reading it.  The search order is as described
-     * for <code>getResource()</code>, after checking to see if the resource
-     * data has been previously cached.  If the resource cannot be found,
-     * return <code>null</code>.
-     *
-     * @param name Name of the resource to return an input stream for
-     */
-    public InputStream getResourceAsStream(String name) {
-
-        if (log.isDebugEnabled())
-            log.debug("getResourceAsStream(" + name + ")");
-        InputStream stream = null;
-
-        // (0) Check for a cached copy of this resource
-        stream = findLoadedResource(name);
-        if (stream != null) {
-            if (log.isDebugEnabled())
-                log.debug("  --> Returning stream from cache");
-            return (stream);
-        }
-
-        // (1) Delegate to parent if requested
-        if (delegate) {
-            if (log.isDebugEnabled())
-                log.debug("  Delegating to parent classloader " + parent);
-            ClassLoader loader = parent;
-            if (loader == null)
-                loader = system;
-            stream = loader.getResourceAsStream(name);
-            if (stream != null) {
-                // FIXME - cache???
-                if (log.isDebugEnabled())
-                    log.debug("  --> Returning stream from parent");
-                return (stream);
-            }
-        }
-
-        // (2) Search local repositories
-        if (log.isDebugEnabled())
-            log.debug("  Searching local repositories");
-        URL url = findResource(name);
-        if (url != null) {
-            // FIXME - cache???
-            if (log.isDebugEnabled())
-                log.debug("  --> Returning stream from local");
-            stream = findLoadedResource(name);
-            try {
-                if (hasExternalRepositories && (stream == null))
-                    stream = url.openStream();
-            } catch (IOException e) {
-                ; // Ignore
-            }
-            if (stream != null)
-                return (stream);
-        }
-
-        // (3) Delegate to parent unconditionally
-        if (!delegate) {
-            if (log.isDebugEnabled())
-                log.debug("  Delegating to parent classloader unconditionally " + parent);
-            ClassLoader loader = parent;
-            if (loader == null)
-                loader = system;
-            stream = loader.getResourceAsStream(name);
-            if (stream != null) {
-                // FIXME - cache???
-                if (log.isDebugEnabled())
-                    log.debug("  --> Returning stream from parent");
-                return (stream);
-            }
-        }
-
-        // (4) Resource was not found
-        if (log.isDebugEnabled())
-            log.debug("  --> Resource not found, returning null");
-        return (null);
-
-    }
-
-
-    /**
-     * Load the class with the specified name.  This method searches for
-     * classes in the same manner as <code>loadClass(String, boolean)</code>
-     * with <code>false</code> as the second argument.
-     *
-     * @param name Name of the class to be loaded
-     *
-     * @exception ClassNotFoundException if the class was not found
-     */
-    public Class loadClass(String name) throws ClassNotFoundException {
-
-        return (loadClass(name, false));
-
-    }
-
-
-    /**
-     * Load the class with the specified name, searching using the following
-     * algorithm until it finds and returns the class.  If the class cannot
-     * be found, returns <code>ClassNotFoundException</code>.
-     * <ul>
-     * <li>Call <code>findLoadedClass(String)</code> to check if the
-     *     class has already been loaded.  If it has, the same
-     *     <code>Class</code> object is returned.</li>
-     * <li>If the <code>delegate</code> property is set to <code>true</code>,
-     *     call the <code>loadClass()</code> method of the parent class
-     *     loader, if any.</li>
-     * <li>Call <code>findClass()</code> to find this class in our locally
-     *     defined repositories.</li>
-     * <li>Call the <code>loadClass()</code> method of our parent
-     *     class loader, if any.</li>
-     * </ul>
-     * If the class was found using the above steps, and the
-     * <code>resolve</code> flag is <code>true</code>, this method will then
-     * call <code>resolveClass(Class)</code> on the resulting Class object.
-     *
-     * @param name Name of the class to be loaded
-     * @param resolve If <code>true</code> then resolve the class
-     *
-     * @exception ClassNotFoundException if the class was not found
-     */
-    public Class loadClass(String name, boolean resolve)
-        throws ClassNotFoundException {
-
-        if (log.isDebugEnabled())
-            log.debug("loadClass(" + name + ", " + resolve + ")");
-        Class clazz = null;
-
-        // Don't load classes if class loader is stopped
-        if (!started) {
-            log.info(sm.getString("webappClassLoader.stopped"));
-            throw new ThreadDeath();
-        }
-
-        // (0) Check our previously loaded local class cache
-        clazz = findLoadedClass0(name);
-        if (clazz != null) {
-            if (log.isDebugEnabled())
-                log.debug("  Returning class from cache");
-            if (resolve)
-                resolveClass(clazz);
-            return (clazz);
-        }
-
-        // (0.1) Check our previously loaded class cache
-        clazz = findLoadedClass(name);
-        if (clazz != null) {
-            if (log.isDebugEnabled())
-                log.debug("  Returning class from cache");
-            if (resolve)
-                resolveClass(clazz);
-            return (clazz);
-        }
-
-        // (0.2) Try loading the class with the system class loader, to prevent
-        //       the webapp from overriding J2SE classes
-        // GOOGLE: use the bootstrap loader, not the system loader; it breaks
-        //       embedding.
-        try {
-            // clazz = system.loadClass(name);
-             clazz = Class.forName(name, false, null);
-             if (clazz != null) {
-                 if (resolve)
-                     resolveClass(clazz);
-                 return (clazz);
-             }
-        } catch (ClassNotFoundException e) {
-            // Ignore
-        }
-
-        // (0.5) Permission to access this class when using a SecurityManager
-        if (securityManager != null) {
-            int i = name.lastIndexOf('.');
-            if (i >= 0) {
-                try {
-                    securityManager.checkPackageAccess(name.substring(0,i));
-                } catch (SecurityException se) {
-                    String error = "Security Violation, attempt to use " +
-                        "Restricted Class: " + name;
-                    log.info(error, se);
-                    throw new ClassNotFoundException(error, se);
-                }
-            }
-        }
-
-        boolean delegateLoad = delegate || filter(name);
-
-        // (1) Delegate to our parent if requested
-        if (delegateLoad) {
-            if (log.isDebugEnabled())
-                log.debug("  Delegating to parent classloader1 " + parent);
-            ClassLoader loader = parent;
-            if (loader == null)
-                loader = system;
-            try {
-                clazz = loader.loadClass(name);
-                if (clazz != null) {
-                    if (log.isDebugEnabled())
-                        log.debug("  Loading class from parent");
-                    if (resolve)
-                        resolveClass(clazz);
-                    return (clazz);
-                }
-            } catch (ClassNotFoundException e) {
-                ;
-            }
-        }
-
-        // (2) Search local repositories
-        if (log.isDebugEnabled())
-            log.debug("  Searching local repositories");
-        try {
-            clazz = findClass(name);
-            if (clazz != null) {
-                if (log.isDebugEnabled())
-                    log.debug("  Loading class from local repository");
-                if (resolve)
-                    resolveClass(clazz);
-                return (clazz);
-            }
-        } catch (ClassNotFoundException e) {
-            ;
-        }
-
-        // (3) Delegate to parent unconditionally
-        if (!delegateLoad) {
-            if (log.isDebugEnabled())
-                log.debug("  Delegating to parent classloader at end: " + parent);
-            ClassLoader loader = parent;
-            if (loader == null)
-                loader = system;
-            try {
-                clazz = loader.loadClass(name);
-                if (clazz != null) {
-                    if (log.isDebugEnabled())
-                        log.debug("  Loading class from parent");
-                    if (resolve)
-                        resolveClass(clazz);
-                    return (clazz);
-                }
-            } catch (ClassNotFoundException e) {
-                ;
-            }
-        }
-
-        throw new ClassNotFoundException(name);
-    }
-
-
-    /**
-     * Get the Permissions for a CodeSource.  If this instance
-     * of WebappClassLoader is for a web application context,
-     * add read FilePermission or JndiPermissions for the base
-     * directory (if unpacked),
-     * the context URL, and jar file resources.
-     *
-     * @param codeSource where the code was loaded from
-     * @return PermissionCollection for CodeSource
-     */
-    protected PermissionCollection getPermissions(CodeSource codeSource) {
-
-        String codeUrl = codeSource.getLocation().toString();
-        PermissionCollection pc;
-        if ((pc = (PermissionCollection)loaderPC.get(codeUrl)) == null) {
-            pc = super.getPermissions(codeSource);
-            if (pc != null) {
-                Iterator perms = permissionList.iterator();
-                while (perms.hasNext()) {
-                    Permission p = (Permission)perms.next();
-                    pc.add(p);
-                }
-                loaderPC.put(codeUrl,pc);
-            }
-        }
-        return (pc);
-
-    }
-
-
-    /**
-     * Returns the search path of URLs for loading classes and resources.
-     * This includes the original list of URLs specified to the constructor,
-     * along with any URLs subsequently appended by the addURL() method.
-     * @return the search path of URLs for loading classes and resources.
-     */
-    public URL[] getURLs() {
-
-        if (repositoryURLs != null) {
-            return repositoryURLs;
-        }
-
-        URL[] external = super.getURLs();
-
-        int filesLength = files.length;
-        int jarFilesLength = jarRealFiles.length;
-        int length = filesLength + jarFilesLength + external.length;
-        int i;
-
-        try {
-
-            URL[] urls = new URL[length];
-            for (i = 0; i < length; i++) {
-                if (i < filesLength) {
-                    urls[i] = getURL(files[i]);
-                } else if (i < filesLength + jarFilesLength) {
-                    urls[i] = getURL(jarRealFiles[i - filesLength]);
-                } else {
-                    urls[i] = external[i - filesLength - jarFilesLength];
-                }
-            }
-
-            repositoryURLs = urls;
-
-        } catch (MalformedURLException e) {
-            repositoryURLs = new URL[0];
-        }
-
-        return repositoryURLs;
-
-    }
-
-
-    // ------------------------------------------------------ Lifecycle Methods
-
-
-    /**
-     * Add a lifecycle event listener to this component.
-     *
-     * @param listener The listener to add
-     */
-    public void addLifecycleListener(LifecycleListener listener) {
-    }
-
-
-    /**
-     * Get the lifecycle listeners associated with this lifecycle. If this 
-     * Lifecycle has no listeners registered, a zero-length array is returned.
-     */
-    public LifecycleListener[] findLifecycleListeners() {
-        return new LifecycleListener[0];
-    }
-
-
-    /**
-     * Remove a lifecycle event listener from this component.
-     *
-     * @param listener The listener to remove
-     */
-    public void removeLifecycleListener(LifecycleListener listener) {
-    }
-
-
-    /**
-     * Start the class loader.
-     *
-     * @exception LifecycleException if a lifecycle error occurs
-     */
-    public void start() throws LifecycleException {
-
-        started = true;
-
-    }
-
-
-    /**
-     * Stop the class loader.
-     *
-     * @exception LifecycleException if a lifecycle error occurs
-     */
-    public void stop() throws LifecycleException {
-
-        started = false;
-
-        int length = files.length;
-        for (int i = 0; i < length; i++) {
-            files[i] = null;
-        }
-
-        length = jarFiles.length;
-        for (int i = 0; i < length; i++) {
-            try {
-                if (jarFiles[i] != null) {
-                    jarFiles[i].close();
-                }
-            } catch (IOException e) {
-                // Ignore
-            }
-            jarFiles[i] = null;
-        }
-
-        notFoundResources.clear();
-        resourceEntries.clear();
-        resources = null;
-        repositories = null;
-        repositoryURLs = null;
-        files = null;
-        jarFiles = null;
-        jarRealFiles = null;
-        jarPath = null;
-        jarNames = null;
-        lastModifiedDates = null;
-        paths = null;
-        hasExternalRepositories = false;
-        parent = null;
-
-        permissionList.clear();
-        loaderPC.clear();
-
-        if (loaderDir != null) {
-            deleteDir(loaderDir);
-        }
-
-        org.apache.commons.logging.LogFactory.release(this);
-
-    }
-
-
-    /**
-     * Used to periodically signal to the classloader to release 
-     * JAR resources.
-     */
-    public void closeJARs(boolean force) {
-        if (jarFiles.length > 0) {
-            try {
-                synchronized (jarFiles) {
-                    if (force || (System.currentTimeMillis() 
-                                  > (lastJarAccessed + 90000))) {
-                        for (int i = 0; i < jarFiles.length; i++) {
-                            if (jarFiles[i] != null) {
-                                jarFiles[i].close();
-                                jarFiles[i] = null;
-                            }
-                        }
-                    }
-                }
-            } catch (IOException e) {
-                log("Failed to close JAR", e);
-            }
-        }
-    }
-
-
-    // ------------------------------------------------------ Protected Methods
-
-
-    /**
-     * Used to periodically signal to the classloader to release JAR resources.
-     */
-    protected void openJARs() {
-        if (started && (jarFiles.length > 0)) {
-            lastJarAccessed = System.currentTimeMillis();
-            if (jarFiles[0] == null) {
-                try {
-                    for (int i = 0; i < jarFiles.length; i++) {
-                        jarFiles[i] = new JarFile(jarRealFiles[i]);
-                    }
-                } catch (IOException e) {
-                    log("Failed to open JAR", e);
-                }
-            }
-        }
-    }
-
-
-    /**
-     * Find specified class in local repositories.
-     *
-     * @return the loaded class, or null if the class isn't found
-     */
-    protected Class findClassInternal(String name)
-        throws ClassNotFoundException {
-
-        if (!validate(name))
-            throw new ClassNotFoundException(name);
-
-        String tempPath = name.replace('.', '/');
-        String classPath = tempPath + ".class";
-
-        ResourceEntry entry = null;
-
-        entry = findResourceInternal(name, classPath);
-
-        if ((entry == null) || (entry.binaryContent == null))
-            throw new ClassNotFoundException(name);
-
-        Class clazz = entry.loadedClass;
-        if (clazz != null)
-            return clazz;
-
-        // Looking up the package
-        String packageName = null;
-        int pos = name.lastIndexOf('.');
-        if (pos != -1)
-            packageName = name.substring(0, pos);
-
-        Package pkg = null;
-
-        if (packageName != null) {
-
-            pkg = getPackage(packageName);
-
-            // Define the package (if null)
-            if (pkg == null) {
-                if (entry.manifest == null) {
-                    definePackage(packageName, null, null, null, null, null,
-                                  null, null);
-                } else {
-                    definePackage(packageName, entry.manifest, entry.codeBase);
-                }
-            }
-
-        }
-
-        // Create the code source object
-        CodeSource codeSource =
-            new CodeSource(entry.codeBase, entry.certificates);
-
-        if (securityManager != null) {
-
-            // Checking sealing
-            if (pkg != null) {
-                boolean sealCheck = true;
-                if (pkg.isSealed()) {
-                    sealCheck = pkg.isSealed(entry.codeBase);
-                } else {
-                    sealCheck = (entry.manifest == null)
-                        || !isPackageSealed(packageName, entry.manifest);
-                }
-                if (!sealCheck)
-                    throw new SecurityException
-                        ("Sealing violation loading " + name + " : Package "
-                         + packageName + " is sealed.");
-            }
-
-        }
-
-        if (entry.loadedClass == null) {
-            synchronized (this) {
-                if (entry.loadedClass == null) {
-                    clazz = defineClass(name, entry.binaryContent, 0,
-                                        entry.binaryContent.length, 
-                                        codeSource);
-                    entry.loadedClass = clazz;
-                    entry.binaryContent = null;
-                    entry.source = null;
-                    entry.codeBase = null;
-                    entry.manifest = null;
-                    entry.certificates = null;
-                } else {
-                    clazz = entry.loadedClass;
-                }
-            }
-        } else {
-            clazz = entry.loadedClass;
-        }
-
-        return clazz;
-
-    }
-
-    /**
-     * Find specified resource in local repositories. This block
-     * will execute under an AccessControl.doPrivilege block.
-     *
-     * @return the loaded resource, or null if the resource isn't found
-     */
-    private ResourceEntry findResourceInternal(File file, String path){
-        ResourceEntry entry = new ResourceEntry();
-        try {
-            entry.source = getURI(new File(file, path));
-            entry.codeBase = getURL(new File(file, path));
-        } catch (MalformedURLException e) {
-            return null;
-        }   
-        return entry;
-    }
-    
-
-    /**
-     * Find specified resource in local repositories.
-     *
-     * @return the loaded resource, or null if the resource isn't found
-     */
-    protected ResourceEntry findResourceInternal(String name, String path) {
-
-        if (!started) {
-            log.info(sm.getString("webappClassLoader.stopped"));
-            return null;
-        }
-
-        if ((name == null) || (path == null))
-            return null;
-
-        ResourceEntry entry = (ResourceEntry) resourceEntries.get(name);
-        if (entry != null)
-            return entry;
-
-        int contentLength = -1;
-        InputStream binaryStream = null;
-
-        int jarFilesLength = jarFiles.length;
-        int repositoriesLength = repositories.length;
-
-        int i;
-
-        Resource resource = null;
-
-        for (i = 0; (entry == null) && (i < repositoriesLength); i++) {
-            try {
-
-                String fullPath = repositories[i] + path;
-
-                Object lookupResult = resources.lookup(fullPath);
-                if (lookupResult instanceof Resource) {
-                    resource = (Resource) lookupResult;
-                }
-
-                // Note : Not getting an exception here means the resource was
-                // found
-                 if (securityManager != null) {
-                    PrivilegedAction dp =
-                        new PrivilegedFindResource(files[i], path);
-                    entry = (ResourceEntry)AccessController.doPrivileged(dp);
-                 } else {
-                    entry = findResourceInternal(files[i], path);
-                 }
-
-                ResourceAttributes attributes =
-                    (ResourceAttributes) resources.getAttributes(fullPath);
-                contentLength = (int) attributes.getContentLength();
-                entry.lastModified = attributes.getLastModified();
-
-                if (resource != null) {
-
-                    try {
-                        binaryStream = resource.streamContent();
-                    } catch (IOException e) {
-                        return null;
-                    }
-
-                    // Register the full path for modification checking
-                    // Note: Only syncing on a 'constant' object is needed
-                    synchronized (allPermission) {
-
-                        int j;
-
-                        long[] result2 = 
-                            new long[lastModifiedDates.length + 1];
-                        for (j = 0; j < lastModifiedDates.length; j++) {
-                            result2[j] = lastModifiedDates[j];
-                        }
-                        result2[lastModifiedDates.length] = entry.lastModified;
-                        lastModifiedDates = result2;
-
-                        String[] result = new String[paths.length + 1];
-                        for (j = 0; j < paths.length; j++) {
-                            result[j] = paths[j];
-                        }
-                        result[paths.length] = fullPath;
-                        paths = result;
-
-                    }
-
-                }
-
-            } catch (NamingException e) {
-            }
-        }
-
-        if ((entry == null) && (notFoundResources.containsKey(name)))
-            return null;
-
-        JarEntry jarEntry = null;
-
-        synchronized (jarFiles) {
-
-            openJARs();
-            for (i = 0; (entry == null) && (i < jarFilesLength); i++) {
-
-                jarEntry = jarFiles[i].getJarEntry(path);
-
-                if (jarEntry != null) {
-
-                    entry = new ResourceEntry();
-                    try {
-                        entry.codeBase = getURL(jarRealFiles[i]);
-                        String jarFakeUrl = getURI(jarRealFiles[i]).toString();
-                        jarFakeUrl = "jar:" + jarFakeUrl + "!/" + path;
-                        entry.source = new URL(jarFakeUrl);
-                        entry.lastModified = jarRealFiles[i].lastModified();
-                    } catch (MalformedURLException e) {
-                        return null;
-                    }
-                    contentLength = (int) jarEntry.getSize();
-                    try {
-                        entry.manifest = jarFiles[i].getManifest();
-                        binaryStream = jarFiles[i].getInputStream(jarEntry);
-                    } catch (IOException e) {
-                        return null;
-                    }
-
-                    // Extract resources contained in JAR to the workdir
-                    if (!(path.endsWith(".class"))) {
-                        byte[] buf = new byte[1024];
-                        File resourceFile = new File
-                            (loaderDir, jarEntry.getName());
-                        if (!resourceFile.exists()) {
-                            Enumeration entries = jarFiles[i].entries();
-                            while (entries.hasMoreElements()) {
-                                JarEntry jarEntry2 = 
-                                    (JarEntry) entries.nextElement();
-                                if (!(jarEntry2.isDirectory()) 
-                                    && (!jarEntry2.getName().endsWith
-                                        (".class"))) {
-                                    resourceFile = new File
-                                        (loaderDir, jarEntry2.getName());
-                                    // No need to check mkdirs result because an
-                                    // IOException will occur anyway
-                                    resourceFile.getParentFile().mkdirs();
-                                    FileOutputStream os = null;
-                                    InputStream is = null;
-                                    try {
-                                        is = jarFiles[i].getInputStream
-                                            (jarEntry2);
-                                        os = new FileOutputStream
-                                            (resourceFile);
-                                        while (true) {
-                                            int n = is.read(buf);
-                                            if (n <= 0) {
-                                                break;
-                                            }
-                                            os.write(buf, 0, n);
-                                        }
-                                    } catch (IOException e) {
-                                        // Ignore
-                                    } finally {
-                                        try {
-                                            if (is != null) {
-                                                is.close();
-                                            }
-                                        } catch (IOException e) {
-                                        }
-                                        try {
-                                            if (os != null) {
-                                                os.close();
-                                            }
-                                        } catch (IOException e) {
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
-
-                }
-
-            }
-
-            if (entry == null) {
-                synchronized (notFoundResources) {
-                    notFoundResources.put(name, name);
-                }
-                return null;
-            }
-
-            if (binaryStream != null) {
-
-                byte[] binaryContent = new byte[contentLength];
-
-                try {
-                    int pos = 0;
-
-                    while (true) {
-                        int n = binaryStream.read(binaryContent, pos,
-                                                  binaryContent.length - pos);
-                        if (n <= 0)
-                            break;
-                        pos += n;
-                    }
-                    binaryStream.close();
-                } catch (IOException e) {
-                    e.printStackTrace();
-                    return null;
-                } catch (Exception e) {
-                    e.printStackTrace();
-                    return null;
-                }
-
-                entry.binaryContent = binaryContent;
-
-                // The certificates are only available after the JarEntry 
-                // associated input stream has been fully read
-                if (jarEntry != null) {
-                    entry.certificates = jarEntry.getCertificates();
-                }
-
-            }
-
-        }
-
-        // Add the entry in the local resource repository
-        synchronized (resourceEntries) {
-            // Ensures that all the threads which may be in a race to load
-            // a particular class all end up with the same ResourceEntry
-            // instance
-            ResourceEntry entry2 = (ResourceEntry) resourceEntries.get(name);
-            if (entry2 == null) {
-                resourceEntries.put(name, entry);
-            } else {
-                entry = entry2;
-            }
-        }
-
-        return entry;
-
-    }
-
-
-    /**
-     * Returns true if the specified package name is sealed according to the
-     * given manifest.
-     */
-    protected boolean isPackageSealed(String name, Manifest man) {
-
-        String path = name + "/";
-        Attributes attr = man.getAttributes(path);
-        String sealed = null;
-        if (attr != null) {
-            sealed = attr.getValue(Name.SEALED);
-        }
-        if (sealed == null) {
-            if ((attr = man.getMainAttributes()) != null) {
-                sealed = attr.getValue(Name.SEALED);
-            }
-        }
-        return "true".equalsIgnoreCase(sealed);
-
-    }
-
-
-    /**
-     * Finds the resource with the given name if it has previously been
-     * loaded and cached by this class loader, and return an input stream
-     * to the resource data.  If this resource has not been cached, return
-     * <code>null</code>.
-     *
-     * @param name Name of the resource to return
-     */
-    protected InputStream findLoadedResource(String name) {
-
-        ResourceEntry entry = (ResourceEntry) resourceEntries.get(name);
-        if (entry != null) {
-            if (entry.binaryContent != null)
-                return new ByteArrayInputStream(entry.binaryContent);
-        }
-        return (null);
-
-    }
-
-
-    /**
-     * Finds the class with the given name if it has previously been
-     * loaded and cached by this class loader, and return the Class object.
-     * If this class has not been cached, return <code>null</code>.
-     *
-     * @param name Name of the resource to return
-     */
-    protected Class findLoadedClass0(String name) {
-
-        ResourceEntry entry = (ResourceEntry) resourceEntries.get(name);
-        if (entry != null) {
-            return entry.loadedClass;
-        }
-        return (null);  // FIXME - findLoadedResource()
-
-    }
-
-
-    /**
-     * Refresh the system policy file, to pick up eventual changes.
-     */
-    protected void refreshPolicy() {
-
-        try {
-            // The policy file may have been modified to adjust 
-            // permissions, so we're reloading it when loading or 
-            // reloading a Context
-            Policy policy = Policy.getPolicy();
-            policy.refresh();
-        } catch (AccessControlException e) {
-            // Some policy files may restrict this, even for the core,
-            // so this exception is ignored
-        }
-
-    }
-
-
-    /**
-     * Filter classes.
-     * 
-     * @param name class name
-     * @return true if the class should be filtered
-     */
-    protected boolean filter(String name) {
-
-        if (name == null)
-            return false;
-
-        // Looking up the package
-        String packageName = null;
-        int pos = name.lastIndexOf('.');
-        if (pos != -1)
-            packageName = name.substring(0, pos);
-        else
-            return false;
-
-        for (int i = 0; i < packageTriggers.length; i++) {
-            if (packageName.startsWith(packageTriggers[i]))
-                return true;
-        }
-
-        return false;
-
-    }
-
-
-    /**
-     * Validate a classname. As per SRV.9.7.2, we must restict loading of 
-     * classes from J2SE (java.*) and classes of the servlet API 
-     * (javax.servlet.*). That should enhance robustness and prevent a number
-     * of user error (where an older version of servlet.jar would be present
-     * in /WEB-INF/lib).
-     * 
-     * @param name class name
-     * @return true if the name is valid
-     */
-    protected boolean validate(String name) {
-
-        if (name == null)
-            return false;
-        if (name.startsWith("java."))
-            return false;
-
-        return true;
-
-    }
-
-
-    /**
-     * Check the specified JAR file, and return <code>true</code> if it does
-     * not contain any of the trigger classes.
-     *
-     * @param jarfile The JAR file to be checked
-     *
-     * @exception IOException if an input/output error occurs
-     */
-    private boolean validateJarFile(File jarfile)
-        throws IOException {
-
-        if (triggers == null)
-            return (true);
-        JarFile jarFile = new JarFile(jarfile);
-        for (int i = 0; i < triggers.length; i++) {
-            Class clazz = null;
-            try {
-                if (parent != null) {
-                    clazz = parent.loadClass(triggers[i]);
-                } else {
-                    clazz = Class.forName(triggers[i]);
-                }
-            } catch (Throwable t) {
-                clazz = null;
-            }
-            if (clazz == null)
-                continue;
-            String name = triggers[i].replace('.', '/') + ".class";
-            if (log.isDebugEnabled())
-                log.debug(" Checking for " + name);
-            JarEntry jarEntry = jarFile.getJarEntry(name);
-            if (jarEntry != null) {
-                log.info("validateJarFile(" + jarfile + 
-                    ") - jar not loaded. See Servlet Spec 2.3, "
-                    + "section 9.7.2. Offending class: " + name);
-                jarFile.close();
-                return (false);
-            }
-        }
-        jarFile.close();
-        return (true);
-
-    }
-
-
-    /**
-     * Get URL.
-     */
-    protected URL getURL(File file)
-        throws MalformedURLException {
-
-        File realFile = file;
-        try {
-            realFile = realFile.getCanonicalFile();
-        } catch (IOException e) {
-            // Ignore
-        }
-        return realFile.toURL();
-
-    }
-
-
-    /**
-     * Get URL.
-     */
-    protected URL getURI(File file)
-        throws MalformedURLException {
-
-        return jdkCompat.getURI(file);
-
-    }
-
-
-    /**
-     * Delete the specified directory, including all of its contents and
-     * subdirectories recursively.
-     *
-     * @param dir File object representing the directory to be deleted
-     */
-    protected static void deleteDir(File dir) {
-
-        String files[] = dir.list();
-        if (files == null) {
-            files = new String[0];
-        }
-        for (int i = 0; i < files.length; i++) {
-            File file = new File(dir, files[i]);
-            if (file.isDirectory()) {
-                deleteDir(file);
-            } else {
-                file.delete();
-            }
-        }
-        dir.delete();
-
-    }
-
-
-    /**
-     * Log a debugging output message.
-     *
-     * @param message Message to be logged
-     */
-    private void log(String message) {
-
-        System.out.println("WebappClassLoader: " + message);
-
-    }
-
-
-    /**
-     * Log a debugging output message with an exception.
-     *
-     * @param message Message to be logged
-     * @param throwable Exception to be logged
-     */
-    private void log(String message, Throwable throwable) {
-
-        System.out.println("WebappClassLoader: " + message);
-        throwable.printStackTrace(System.out);
-
-    }
-
-}
diff --git a/dev/core/test/com/google/gwt/core/ext/util/UtilSuite.java b/dev/core/test/com/google/gwt/core/ext/util/UtilSuite.java
index 291dc81..93c0bb7 100644
--- a/dev/core/test/com/google/gwt/core/ext/util/UtilSuite.java
+++ b/dev/core/test/com/google/gwt/core/ext/util/UtilSuite.java
@@ -18,7 +18,7 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-public class UtilSuite extends TestSuite {
+public class UtilSuite {
   public static Test suite() {
     TestSuite suite = new TestSuite("Test suite for Util");
     suite.addTestSuite(UtilTest.class);
diff --git a/dev/core/test/com/google/gwt/dev/GWTCompilerTest.java b/dev/core/test/com/google/gwt/dev/GWTCompilerTest.java
deleted file mode 100644
index 8955714..0000000
--- a/dev/core/test/com/google/gwt/dev/GWTCompilerTest.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright 2009 Google Inc.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.dev;
-
-import com.google.gwt.core.ext.TreeLogger;
-import com.google.gwt.dev.GWTCompiler.GWTCompilerOptionsImpl;
-import com.google.gwt.dev.jjs.JsOutputOption;
-
-import java.io.File;
-
-/**
- * Test for deprecated {@link GWTShell}.
- */
-@SuppressWarnings("deprecation")
-public class GWTCompilerTest extends ArgProcessorTestBase {
-
-  private final GWTCompiler.ArgProcessor argProcessor;
-  private final GWTCompilerOptionsImpl options = new GWTCompilerOptionsImpl();
-
-  public GWTCompilerTest() {
-    argProcessor = new GWTCompiler.ArgProcessor(options);
-  }
-
-  public void testAllValidArgs() {
-    assertProcessSuccess(argProcessor, "-logLevel", "DEBUG", "-style",
-        "PRETTY", "-ea", "-XdisableAggressiveOptimization", "-out", "myWww",
-        "-gen", "myGen", "c.g.g.h.H", "my.Module");
-
-    assertEquals(new File("myGen").getAbsoluteFile(),
-        options.getGenDir().getAbsoluteFile());
-    assertEquals(new File("myWww"), options.getOutDir());
-
-    assertEquals(TreeLogger.DEBUG, options.getLogLevel());
-    assertEquals(JsOutputOption.PRETTY, options.getOutput());
-    assertTrue(options.isEnableAssertions());
-    assertFalse(options.isAggressivelyOptimize());
-
-    assertEquals(2, options.getModuleNames().size());
-    assertEquals("c.g.g.h.H", options.getModuleNames().get(0));
-    assertEquals("my.Module", options.getModuleNames().get(1));
-  }
-
-  public void testDefaultArgs() {
-    assertProcessSuccess(argProcessor, "c.g.g.h.H");
-
-    assertEquals(null, options.getGenDir());
-    assertEquals(new File("").getAbsoluteFile(),
-        options.getOutDir().getAbsoluteFile());
-
-    assertEquals(TreeLogger.INFO, options.getLogLevel());
-    assertEquals(JsOutputOption.OBFUSCATED, options.getOutput());
-    assertFalse(options.isEnableAssertions());
-    assertTrue(options.isAggressivelyOptimize());
-
-    assertEquals(1, options.getModuleNames().size());
-    assertEquals("c.g.g.h.H", options.getModuleNames().get(0));
-  }
-
-  public void testForbiddenArgs() {
-    assertProcessFailure(argProcessor, "-localWorkers", "2");
-    assertProcessFailure(argProcessor, "-extra", "extra");
-    assertProcessFailure(argProcessor, "-war", "war");
-    assertProcessFailure(argProcessor, "-work", "work");
-  }
-}
diff --git a/dev/core/test/com/google/gwt/dev/GWTShellTest.java b/dev/core/test/com/google/gwt/dev/GWTShellTest.java
deleted file mode 100644
index 557189e..0000000
--- a/dev/core/test/com/google/gwt/dev/GWTShellTest.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright 2009 Google Inc.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.dev;
-
-import com.google.gwt.core.ext.TreeLogger;
-import com.google.gwt.dev.GWTShell.ShellOptionsImpl;
-import com.google.gwt.dev.HostedModeTest.MySCL;
-import com.google.gwt.dev.jjs.JsOutputOption;
-import com.google.gwt.dev.shell.BrowserWidgetHostChecker;
-
-import java.io.File;
-
-/**
- * Test for deprecated {@link GWTShell}.
- */
-@SuppressWarnings("deprecation")
-public class GWTShellTest extends ArgProcessorTestBase {
-
-  private final GWTShell.ArgProcessor argProcessor;
-  private final ShellOptionsImpl options = new ShellOptionsImpl();
-
-  public GWTShellTest() {
-    argProcessor = new GWTShell.ArgProcessor(options, false, false);
-  }
-
-  public void testAllValidArgs() {
-    assertProcessSuccess(argProcessor, "-port", "8080", "-whitelist", "white",
-        "-blacklist", "black", "-logLevel", "DEBUG", "-noserver", "-out",
-        "myWww", "-gen", "myGen", "http://www.google.com/", "foo");
-
-    assertNotNull(BrowserWidgetHostChecker.matchWhitelisted("white"));
-    assertNotNull(BrowserWidgetHostChecker.matchBlacklisted("black"));
-    assertFalse(BrowserWidgetHostChecker.isAlwaysWhitelisted("http://127.0.0.1.40"));
-    assertFalse(BrowserWidgetHostChecker.isAlwaysWhitelisted("http://127.0.0.1.40:88"));
-    assertFalse(BrowserWidgetHostChecker.isAlwaysWhitelisted("http://127.0.0.1.40:88/"));
-    assertFalse(BrowserWidgetHostChecker.isAlwaysWhitelisted("http://127.0.0.1.40:88/foo"));
-    assertFalse(BrowserWidgetHostChecker.isAlwaysWhitelisted("http://localhost.evildomain.org"));
-    assertFalse(BrowserWidgetHostChecker.isAlwaysWhitelisted("http://localhost.evildomain.org:88"));
-    assertFalse(BrowserWidgetHostChecker.isAlwaysWhitelisted("http://localhost.evildomain.org:88/"));
-    assertFalse(BrowserWidgetHostChecker.isAlwaysWhitelisted("http://localhost.evildomain.org:88/foo"));
-    assertFalse(BrowserWidgetHostChecker.isAlwaysWhitelisted("http://localhost.evildomain.org/"));
-    assertFalse(BrowserWidgetHostChecker.isAlwaysWhitelisted("http://localhost.evildomain.org/foo"));
-    assertFalse(BrowserWidgetHostChecker.isAlwaysWhitelisted("http://www.evildomain.org/foo?http://localhost"));
-    assertTrue(BrowserWidgetHostChecker.isAlwaysWhitelisted("http://127.0.0.1"));
-    assertTrue(BrowserWidgetHostChecker.isAlwaysWhitelisted("http://127.0.0.1:88"));
-    assertTrue(BrowserWidgetHostChecker.isAlwaysWhitelisted("http://127.0.0.1:88/"));
-    assertTrue(BrowserWidgetHostChecker.isAlwaysWhitelisted("http://127.0.0.1:88/foo"));
-
-    assertEquals(new File("myGen").getAbsoluteFile(),
-        options.getGenDir().getAbsoluteFile());
-    assertEquals(new File("myWww"), options.getOutDir());
-
-    assertEquals(TreeLogger.DEBUG, options.getLogLevel());
-
-    assertEquals(8080, options.getPort());
-    assertTrue(options.isNoServer());
-    assertEquals(2, options.getStartupURLs().size());
-    assertEquals("http://www.google.com/", options.getStartupURLs().get(0));
-    assertEquals("foo", options.getStartupURLs().get(1));
-  }
-
-  public void testDefaultArgs() {
-    assertProcessSuccess(argProcessor);
-
-    assertEquals(null, options.getGenDir());
-    assertEquals(new File("").getAbsoluteFile(),
-        options.getOutDir().getAbsoluteFile());
-
-    assertEquals(TreeLogger.INFO, options.getLogLevel());
-    assertEquals(JsOutputOption.OBFUSCATED, options.getOutput());
-    assertFalse(options.isEnableAssertions());
-    assertTrue(options.isAggressivelyOptimize());
-
-    assertEquals(8888, options.getPort());
-    assertFalse(options.isNoServer());
-    assertEquals(0, options.getStartupURLs().size());
-  }
-
-  public void testForbiddenArgs() {
-    assertProcessFailure(argProcessor, "-localWorkers", "2");
-    assertProcessFailure(argProcessor, "-extra", "extra");
-    assertProcessFailure(argProcessor, "-war", "war");
-    assertProcessFailure(argProcessor, "-work", "work");
-    assertProcessFailure(argProcessor, "-server", MySCL.class.getName());
-  }
-}
diff --git a/dev/core/test/com/google/gwt/dev/javac/GeneratedClassnameFinderTest.java b/dev/core/test/com/google/gwt/dev/javac/GeneratedClassnameFinderTest.java
index 0f428e2..8a988ca 100644
--- a/dev/core/test/com/google/gwt/dev/javac/GeneratedClassnameFinderTest.java
+++ b/dev/core/test/com/google/gwt/dev/javac/GeneratedClassnameFinderTest.java
@@ -89,6 +89,10 @@
         + "$MainClass$NestedClass").getClassNames().size());
   }
 
+  public void testAbstractNative() {
+    assertEquals(2, new AbstractNativeTester().getGeneratedClasses().size());
+  }
+
   public void testAnonymous() {
     assertEquals(1, new AnonymousTester().getGeneratedClasses().size());
   }
@@ -124,6 +128,28 @@
     assertEquals(1, new TopLevelTester().getGeneratedClasses().size());
   }
 
+
+}
+
+/**
+ * For testing a class containing anonymous inner classes with abstract and
+ * native methods.
+ */
+class AbstractNativeTester {
+  void foo() {
+    abstract class Fooer {
+      abstract void foo();
+    }
+    Fooer a = new Fooer() {
+      native void foo();
+    };
+    a.foo();
+  }
+
+  List<String> getGeneratedClasses() {
+    return (new GeneratedClassnameFinder(GeneratedClassnameFinderTest.logger,
+        this.getClass().getName().replace('.', '/'))).getClassNames();
+  }
 }
 
 /**
diff --git a/dev/core/test/com/google/gwt/dev/javac/typemodel/TypeOracleSuite.java b/dev/core/test/com/google/gwt/dev/javac/typemodel/TypeOracleSuite.java
index 96b730a..cdd2f1b 100644
--- a/dev/core/test/com/google/gwt/dev/javac/typemodel/TypeOracleSuite.java
+++ b/dev/core/test/com/google/gwt/dev/javac/typemodel/TypeOracleSuite.java
@@ -18,7 +18,7 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-public class TypeOracleSuite extends TestSuite {
+public class TypeOracleSuite {
   public static Test suite() {
     TestSuite suite = new TestSuite("Test suite for TypeOracle");
     suite.addTestSuite(AnnotationsTest.class);
diff --git a/dev/core/test/com/google/gwt/dev/jjs/impl/DeadCodeEliminationTest.java b/dev/core/test/com/google/gwt/dev/jjs/impl/DeadCodeEliminationTest.java
index 0913202..878780a 100644
--- a/dev/core/test/com/google/gwt/dev/jjs/impl/DeadCodeEliminationTest.java
+++ b/dev/core/test/com/google/gwt/dev/jjs/impl/DeadCodeEliminationTest.java
@@ -37,6 +37,8 @@
     addSnippetClassDecl("static volatile double d;");
     addSnippetClassDecl("static volatile String s;");
     addSnippetClassDecl("static volatile Object o;");
+
+    runMethodInliner = false;
   }
 
   public void testConditionalOptimizations() throws Exception {
@@ -99,6 +101,27 @@
         "EntryPoint.b && (EntryPoint.i = 1);");
   }
 
+  /**
+   * BUG: JInstance was marked as not having side effects whereas it all depends on the
+   * whether the expression on the left has side effects.
+   *
+   * Reproduces Issue:7818.
+   */
+  public void testInstanceOfOptimization() throws Exception {
+    runMethodInliner = true;
+    addSnippetClassDecl(
+        "static class A  { "
+            + "static int f1;"
+            + "static A createA() { A.f1 = 1; return new A(); } "
+            + "static boolean instanceofMulti() { return (createA() instanceof A); } "
+            + "static boolean inlineable() { instanceofMulti(); return true;}"
+            + "}");
+
+    optimizeExpressions(false, "void", "A.inlineable()")
+        .into("A.f1 = 1; new A();");
+  }
+
+
   public void testDoOptimization() throws Exception {
     optimize("void", "do {} while (b);").intoString(
         "do {", 
@@ -114,8 +137,32 @@
         "} while (false);");
   }
 
+  public void testMultiExpressionOptimization() throws Exception {
+    runMethodInliner = true;
+    addSnippetClassDecl(
+        "static class A  { ",
+        "  static int f;",
+        "  static { if (4-f ==0) f=4; }",
+        "  static boolean t() { return true; }",
+        "  static boolean f() { return false; }",
+        "  static boolean notInlineable() { if (4-f == 0) return true;return false;}",
+        "}");
+
+    addSnippetClassDecl(
+        "static class B  { ",
+        "  static boolean inlineableOr() { return A.t() || A.notInlineable(); }",
+        "  static boolean inlineableAnd() { return A.t() && A.notInlineable(); }",
+        "}");
+
+    optimize("void", "B.inlineableAnd();")
+        .intoString("EntryPoint$A.$clinit();\nEntryPoint$A.notInlineable();");
+    optimize("void", "B.inlineableOr();")
+        .intoString("EntryPoint$A.$clinit();");
+  }
+
   public void testOptimizeStringCalls() throws Exception {
-    // Note: we're limited here by the methods declared in the mock String in JJSTestBase#addBuiltinClasses
+    // Note: we're limited here by the methods declared in the mock String in
+    // JJSTestBase#addBuiltinClasses
 
     // String.length
     optimize("int", "return \"abc\".length();").intoString("return 3;");
@@ -145,10 +192,42 @@
     optimize("double", "return 0.0 - d;").intoString("return 0.0 - EntryPoint.d;");
   }
 
+  public void testMultiExpression_RedundantClinitRemoval() throws Exception {
+    addSnippetClassDecl(
+        "static class A  { "
+            + "static int f1;"
+            + "static int f2;"
+            + "static { f1 = 1; }"
+            + "static void m1() { } "
+            + "}" +
+        "static class B extends A  { "
+            + "static int f3;"
+            + "static int f4;"
+            + "static { f3 = 1; }"
+            + "static void m2() { } "
+            + "}");
+
+    optimizeExpressions(true, "void", "A.m1()", "A.m1()").intoString("EntryPoint$A.$clinit();\n"
+        + "EntryPoint$A.m1();\n"
+        + "EntryPoint$A.m1();");
+    optimizeExpressions(true, "void", "B.m2()", "A.m1()").intoString("EntryPoint$B.$clinit();\n"
+        + "EntryPoint$B.m2();\n"
+        + "EntryPoint$A.m1();");
+    optimizeExpressions(true, "void", "A.m1()", "B.m2()").intoString("EntryPoint$A.$clinit();\n"
+        + "EntryPoint$A.m1();\n"
+        + "EntryPoint$B.$clinit();\n"
+        + "EntryPoint$B.m2();");
+  }
+
+  private boolean runMethodInliner;
+
   @Override
   protected boolean optimizeMethod(JProgram program, JMethod method) {
-    // This is necessary for String calls optimizations
-    MethodCallTightener.exec(program);
+
+    if (runMethodInliner) {
+      MethodInliner.exec(program);
+    }
+
     OptimizerStats result = DeadCodeElimination.exec(program, method);
     if (result.didChange()) {
       // Make sure we converge in one pass.
diff --git a/dev/core/test/com/google/gwt/dev/jjs/impl/OptimizerTestBase.java b/dev/core/test/com/google/gwt/dev/jjs/impl/OptimizerTestBase.java
index 98a4d13..0d47a3f 100644
--- a/dev/core/test/com/google/gwt/dev/jjs/impl/OptimizerTestBase.java
+++ b/dev/core/test/com/google/gwt/dev/jjs/impl/OptimizerTestBase.java
@@ -16,10 +16,24 @@
 package com.google.gwt.dev.jjs.impl;
 
 import com.google.gwt.core.ext.UnableToCompleteException;
+import com.google.gwt.dev.jjs.SourceInfo;
+import com.google.gwt.dev.jjs.ast.Context;
+import com.google.gwt.dev.jjs.ast.JBinaryOperation;
+import com.google.gwt.dev.jjs.ast.JBinaryOperator;
 import com.google.gwt.dev.jjs.ast.JDeclaredType;
+import com.google.gwt.dev.jjs.ast.JExpression;
+import com.google.gwt.dev.jjs.ast.JExpressionStatement;
 import com.google.gwt.dev.jjs.ast.JField;
+import com.google.gwt.dev.jjs.ast.JFieldRef;
+import com.google.gwt.dev.jjs.ast.JLocal;
+import com.google.gwt.dev.jjs.ast.JLocalRef;
 import com.google.gwt.dev.jjs.ast.JMethod;
+import com.google.gwt.dev.jjs.ast.JMethodBody;
+import com.google.gwt.dev.jjs.ast.JMethodCall;
 import com.google.gwt.dev.jjs.ast.JProgram;
+import com.google.gwt.dev.jjs.ast.JReturnStatement;
+import com.google.gwt.dev.jjs.ast.JStatement;
+import com.google.gwt.dev.jjs.ast.js.JMultiExpression;
 import com.google.gwt.dev.util.Preconditions;
 import com.google.gwt.dev.util.Strings;
 
@@ -94,11 +108,155 @@
     }
   }
 
+  /**
+   * Makes implicit <code>$clinit()</code> calls explicit to mimic the effect of other
+   * optimizations. Otherwise can not test optimizations that involve <code>$clinit</code> calls
+   * as they don't appear when compiling small snippets.
+   *
+   * @param method method to transform to make <code>$clinit</code> calls explicit.
+   */
+  private void insertImplicitClinitCalls(final JMethod method) {
+    // Mimic the method inliner which inserts clinits calls prior to method or field dereference.
+    // The actual clinit() calls might be inserted as a result of optimizations: e,g,
+    // DeadCodeElimination inserts clinit calls when it removes (some) field accesses or method
+    // calls.
+    final JMethodBody body = (JMethodBody) method.getBody();
+
+    new TempLocalVisitor() {
+
+      private JMethodCall createClinitCall(SourceInfo sourceInfo, JDeclaredType targetType) {
+        JMethod clinit = targetType.getClinitTarget().getClinitMethod();
+        assert (JProgram.isClinit(clinit));
+        return new JMethodCall(sourceInfo, null, clinit);
+      }
+
+      private JMultiExpression createMultiExpressionForInstanceAndClinit(JExpression x) {
+        JMultiExpression multi = new JMultiExpression(x.getSourceInfo());
+
+        JMethodCall clinit = null;
+        if (x instanceof JMethodCall) {
+          JExpression instance = ((JMethodCall) x).getInstance();
+
+          // Any instance expression goes first (this can happen even with statics).
+          if (instance != null) {
+
+            multi.exprs.add(instance);
+            JLocal var = createTempLocal(instance.getSourceInfo(), instance.getType());
+
+            JLocalRef localRef = new JLocalRef(var.getSourceInfo(), var);
+            instance = new JBinaryOperation(instance.getSourceInfo(), localRef.getType(),
+                JBinaryOperator.ASG, localRef, instance);
+          }
+          clinit = createClinitCall(x.getSourceInfo(),
+              ((JMethodCall) x).getTarget().getEnclosingType());
+        } else if (x instanceof JFieldRef) {
+          clinit = createClinitCall(x.getSourceInfo(), ((JFieldRef) x).getEnclosingType());
+        }
+        // If we need a clinit call, add it first
+        if (clinit != null) {
+          multi.exprs.add(clinit);
+        }
+        multi.exprs.add(x);
+        return multi;
+      }
+
+      @Override
+      public void endVisit(JMethodCall x, Context ctx) {
+        ctx.replaceMe(createMultiExpressionForInstanceAndClinit(x));
+      }
+
+      @Override
+      public void endVisit(JFieldRef x, Context ctx) {
+        ctx.replaceMe(createMultiExpressionForInstanceAndClinit(x));
+      }
+
+    }.accept(method);
+  }
+
   protected final Result optimize(final String returnType, 
       final String... codeSnippet) throws UnableToCompleteException {
     return optimizeMethod(MAIN_METHOD_NAME, returnType, codeSnippet);
   }
 
+  /**
+   * Test the effect of an optimization on a JMultiExpression.
+   * JMultiExpression can not be constructed from source code at the moment as it is not a valid
+   * java source construct.
+   *
+   * @param addClinitCalls whether to insert the implicit clinit calls. This is necessary because
+   *                       clinit() methods are synthetic can not be inserted explicitly as source
+   *                       code calls.
+   * @param returnType the return type of the JMultiExpression. Must be <code>void</code> or
+   *                   compatible with the last expression.
+   * @param expressionSnippets source code of the expressions.
+   * @return the optimization result.
+   * @throws UnableToCompleteException
+   */
+  protected final Result optimizeExpressions(boolean addClinitCalls, final String returnType,
+                                  final String... expressionSnippets)
+      throws UnableToCompleteException {
+
+    // TODO(rluble): Not very elegant to require that the snippets be statements instead of
+    // expressions.
+
+    assert expressionSnippets.length > 0;
+
+    // Compile as statements
+    if (!returnType.equals("void")) {
+      expressionSnippets[expressionSnippets.length - 1] =
+          "return " + expressionSnippets[expressionSnippets.length - 1];
+    }
+    String snippet = Strings.join(expressionSnippets, ";\n") + ";\n";
+    final JProgram program = compileSnippet(returnType, snippet);
+    JMethod method = findMethod(program, MAIN_METHOD_NAME);
+    JMethodBody body = (JMethodBody) method.getBody();
+    JMultiExpression multi = new JMultiExpression(body.getSourceInfo());
+
+    // Transform statement sequence into a JMultiExpression
+    for (JStatement stmt : body.getStatements()) {
+
+      if (stmt instanceof JExpressionStatement) {
+        JExpressionStatement exprStmt = (JExpressionStatement) stmt;
+        JExpression expr = exprStmt.getExpr();
+        multi.exprs.add(expr);
+      } else if (stmt instanceof JReturnStatement) {
+        JReturnStatement returnStatement = (JReturnStatement) stmt;
+        JExpression expr = returnStatement.getExpr();
+        if (expr != null) {
+            multi.exprs.add(expr);
+        }
+      } else {
+        assert false : "Not a valid multiexpression";
+      }
+    }
+
+    // Take care of the return type
+    JStatement multiStm;
+    if (!returnType.equals("void")) {
+      multiStm = new JReturnStatement(multi.getSourceInfo(), multi);
+    } else {
+      multiStm = multi.makeStatement();
+    }
+
+    // Replace the method body
+    JMethodBody newBody = new JMethodBody(method.getBody().getSourceInfo());
+    newBody.getBlock().addStmt(multiStm);
+    method.setBody(newBody);
+    newBody.setMethod(method);
+    if (addClinitCalls) {
+      insertImplicitClinitCalls(method);
+    }
+
+
+    // Finally optimize.
+    boolean madeChanges = optimizeMethod(program, method);
+    if (madeChanges && runDeadCodeElimination) {
+      DeadCodeElimination.exec(program);
+    }
+
+    return new Result(program, returnType, MAIN_METHOD_NAME, snippet, madeChanges);
+  }
+
   protected final Result optimizeMethod(final String methodName,
       final String mainMethodReturnType, final String... mainMethodSnippet)
       throws UnableToCompleteException {
diff --git a/dev/core/test/com/google/gwt/dev/jjs/impl/gflow/DataflowOptimizerTest.java b/dev/core/test/com/google/gwt/dev/jjs/impl/gflow/DataflowOptimizerTest.java
index 9ee6e0d..85e3530 100644
--- a/dev/core/test/com/google/gwt/dev/jjs/impl/gflow/DataflowOptimizerTest.java
+++ b/dev/core/test/com/google/gwt/dev/jjs/impl/gflow/DataflowOptimizerTest.java
@@ -350,9 +350,8 @@
    * despite there being side-effects of the multi-expression.  So, we want to test that inlining
    * proceeds, but not further constant transformation.
    * 
-   * TODO: This test may need to evolve over time, as the specifics of the optimizers change.  One
-   * obvious todo is to allow some form of constant transformation to occur with inlined 
-   * multi-expressions (see comment below).
+   * TODO(rluble): This test may need to evolve over time, as the specifics of the
+   * optimizers change.
    */
   public void testInlinedConstantExpressionWithSideEffects() throws Exception {
     
@@ -374,10 +373,9 @@
               "  fail();",
               "}",
               "return x;")
-        // TODO: Allow the second line below to be transformed to just: "EntryPoint.x = n;"
-        .intoString("Integer n = new Integer(1);",
-                    "((EntryPoint.x = n, true)) || EntryPoint.fail();",
-                    "return EntryPoint.x.intValue();");
+        .into("Integer n = new Integer(1);",
+               "x = n;",
+               "return x;");
     
   }
   
@@ -387,14 +385,21 @@
   @Override
   protected boolean optimizeMethod(JProgram program, JMethod method) {
     boolean didChange = false;
+    boolean optimizeChange = false;
 
-    if (runDCE) {
-      didChange = DeadCodeElimination.exec(program).didChange() || didChange;
-    }
+    // Run optimizations in a loop to make the tests more robusts to unrelated
+    // changes.
+    do {
+      optimizeChange = false;
+      if (runDCE) {
+        optimizeChange = DeadCodeElimination.exec(program).didChange() || optimizeChange;
+      }
 
-    if (runMethodInliner) {
-      didChange = MethodInliner.exec(program).didChange() || didChange;
-    }
+      if (runMethodInliner) {
+        optimizeChange = MethodInliner.exec(program).didChange() || optimizeChange;
+      }
+      didChange = didChange || optimizeChange;
+    } while (optimizeChange);
 
     didChange = DataflowOptimizer.exec(program, method).didChange() || didChange;
     return didChange;
diff --git a/dev/core/test/org/apache/commons/collections/collection/AbstractTestCollection.java b/dev/core/test/org/apache/commons/collections/collection/AbstractTestCollection.java
index 2071e3d..a3591db 100644
--- a/dev/core/test/org/apache/commons/collections/collection/AbstractTestCollection.java
+++ b/dev/core/test/org/apache/commons/collections/collection/AbstractTestCollection.java
@@ -16,6 +16,8 @@
  */
 package org.apache.commons.collections.collection;
 
+import org.apache.commons.collections.AbstractTestObject;
+
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.ObjectInputStream;
@@ -34,8 +36,6 @@
 import java.util.Map;
 import java.util.NoSuchElementException;
 
-import org.apache.commons.collections.AbstractTestObject;
-
 /**
  * Abstract test class for {@link java.util.Collection} methods and contracts.
  * <p>
@@ -121,6 +121,7 @@
  * @author Neil O'Toole
  * @author Stephen Colebourne
  */
+@SuppressWarnings({"unchecked", "rawtypes"})
 public abstract class AbstractTestCollection extends AbstractTestObject {
 
     //
diff --git a/dev/core/test/org/apache/commons/collections/iterators/AbstractTestIterator.java b/dev/core/test/org/apache/commons/collections/iterators/AbstractTestIterator.java
index d2e6870..a9ce434 100644
--- a/dev/core/test/org/apache/commons/collections/iterators/AbstractTestIterator.java
+++ b/dev/core/test/org/apache/commons/collections/iterators/AbstractTestIterator.java
@@ -16,11 +16,11 @@
  */
 package org.apache.commons.collections.iterators;
 
+import org.apache.commons.collections.AbstractTestObject;
+
 import java.util.Iterator;
 import java.util.NoSuchElementException;
 
-import org.apache.commons.collections.AbstractTestObject;
-
 /**
  * Abstract class for testing the Iterator interface.
  * <p>
@@ -35,6 +35,7 @@
  * @author Morgan Delagrange
  * @author Stephen Colebourne
  */
+@SuppressWarnings({"unchecked", "rawtypes"})
 public abstract class AbstractTestIterator extends AbstractTestObject {
 
     /**
diff --git a/dev/core/test/org/apache/commons/collections/iterators/AbstractTestMapIterator.java b/dev/core/test/org/apache/commons/collections/iterators/AbstractTestMapIterator.java
index 5bd5191..b5e7e01 100644
--- a/dev/core/test/org/apache/commons/collections/iterators/AbstractTestMapIterator.java
+++ b/dev/core/test/org/apache/commons/collections/iterators/AbstractTestMapIterator.java
@@ -16,14 +16,14 @@
  */
 package org.apache.commons.collections.iterators;
 
+import org.apache.commons.collections.MapIterator;
+
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.NoSuchElementException;
 import java.util.Set;
 
-import org.apache.commons.collections.MapIterator;
-
 /**
  * Abstract class for testing the MapIterator interface.
  * <p>
@@ -37,6 +37,7 @@
  * 
  * @author Stephen Colebourne
  */
+@SuppressWarnings({"unchecked", "rawtypes"})
 public abstract class AbstractTestMapIterator extends AbstractTestIterator {
 
     /**
diff --git a/dev/core/test/org/apache/commons/collections/map/AbstractTestIterableMap.java b/dev/core/test/org/apache/commons/collections/map/AbstractTestIterableMap.java
index 46b0436..a9d1250 100644
--- a/dev/core/test/org/apache/commons/collections/map/AbstractTestIterableMap.java
+++ b/dev/core/test/org/apache/commons/collections/map/AbstractTestIterableMap.java
@@ -16,15 +16,15 @@
  */
 package org.apache.commons.collections.map;
 
+import org.apache.commons.collections.BulkTest;
+import org.apache.commons.collections.IterableMap;
+import org.apache.commons.collections.MapIterator;
+import org.apache.commons.collections.iterators.AbstractTestMapIterator;
+
 import java.util.ConcurrentModificationException;
 import java.util.Iterator;
 import java.util.Map;
 
-import org.apache.commons.collections.IterableMap;
-import org.apache.commons.collections.BulkTest;
-import org.apache.commons.collections.MapIterator;
-import org.apache.commons.collections.iterators.AbstractTestMapIterator;
-
 /**
  * Abstract test class for {@link IterableMap} methods and contracts.
  *
@@ -32,6 +32,7 @@
  * 
  * @author Stephen Colebourne
  */
+@SuppressWarnings({"unchecked", "rawtypes"})
 public abstract class AbstractTestIterableMap extends AbstractTestMap {
 
     /**
diff --git a/dev/core/test/org/apache/commons/collections/map/AbstractTestMap.java b/dev/core/test/org/apache/commons/collections/map/AbstractTestMap.java
index 433a665..3d4668f 100644
--- a/dev/core/test/org/apache/commons/collections/map/AbstractTestMap.java
+++ b/dev/core/test/org/apache/commons/collections/map/AbstractTestMap.java
@@ -16,6 +16,11 @@
  */
 package org.apache.commons.collections.map;
 
+import org.apache.commons.collections.AbstractTestObject;
+import org.apache.commons.collections.BulkTest;
+import org.apache.commons.collections.collection.AbstractTestCollection;
+import org.apache.commons.collections.set.AbstractTestSet;
+
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -25,11 +30,6 @@
 import java.util.Map;
 import java.util.Set;
 
-import org.apache.commons.collections.AbstractTestObject;
-import org.apache.commons.collections.BulkTest;
-import org.apache.commons.collections.collection.AbstractTestCollection;
-import org.apache.commons.collections.set.AbstractTestSet;
-
 /**
  * Abstract test class for {@link java.util.Map} methods and contracts.
  * <p>
@@ -119,6 +119,7 @@
  * @author Stephen Colebourne
  * @version $Revision: 646780 $ $Date: 2008-04-10 13:48:07 +0100 (Thu, 10 Apr 2008) $
  */
+@SuppressWarnings({"unchecked", "rawtypes"})
 public abstract class AbstractTestMap extends AbstractTestObject {
 
     /**
diff --git a/dev/core/test/org/apache/commons/collections/map/TestIdentityMap.java b/dev/core/test/org/apache/commons/collections/map/TestIdentityMap.java
index 13e042a..532ac95 100644
--- a/dev/core/test/org/apache/commons/collections/map/TestIdentityMap.java
+++ b/dev/core/test/org/apache/commons/collections/map/TestIdentityMap.java
@@ -16,11 +16,6 @@
  */
 package org.apache.commons.collections.map;
 
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.Iterator;
-import java.util.Map;
-
 import junit.framework.Test;
 import junit.framework.TestSuite;
 import junit.textui.TestRunner;
@@ -28,6 +23,11 @@
 import org.apache.commons.collections.AbstractTestObject;
 import org.apache.commons.collections.IterableMap;
 
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.Iterator;
+import java.util.Map;
+
 /**
  * JUnit tests.
  * 
@@ -35,6 +35,7 @@
  * 
  * @author Stephen Colebourne
  */
+@SuppressWarnings({"unchecked", "rawtypes"})
 public class TestIdentityMap extends AbstractTestObject {
     
     private static final Integer I1A = new Integer(1);
diff --git a/dev/core/test/org/apache/commons/collections/set/AbstractTestSet.java b/dev/core/test/org/apache/commons/collections/set/AbstractTestSet.java
index 398fa78..dc3a3d4 100644
--- a/dev/core/test/org/apache/commons/collections/set/AbstractTestSet.java
+++ b/dev/core/test/org/apache/commons/collections/set/AbstractTestSet.java
@@ -16,14 +16,14 @@
  */
 package org.apache.commons.collections.set;
 
+import org.apache.commons.collections.collection.AbstractTestCollection;
+
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Set;
 
-import org.apache.commons.collections.collection.AbstractTestCollection;
-
 /**
  * Abstract test class for {@link Set} methods and contracts.
  * <p>
@@ -43,6 +43,7 @@
  * 
  * @author Paul Jack
  */
+@SuppressWarnings({"unchecked", "rawtypes"})
 public abstract class AbstractTestSet extends AbstractTestCollection {
 
     /**
diff --git a/eclipse/build-tools/ant-gwt/.project b/eclipse/build-tools/ant-gwt/.project
deleted file mode 100644
index 1366e70..0000000
--- a/eclipse/build-tools/ant-gwt/.project
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>ant-gwt</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>com.atlassw.tools.eclipse.checkstyle.CheckstyleBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>com.atlassw.tools.eclipse.checkstyle.CheckstyleNature</nature>
-	</natures>
-	<linkedResources>
-		<link>
-			<name>core</name>
-			<type>2</type>
-			<location>GWT_ROOT/build-tools/ant-gwt</location>
-		</link>
-	</linkedResources>
-</projectDescription>
diff --git a/eclipse/build-tools/customchecks/.project b/eclipse/build-tools/customchecks/.project
deleted file mode 100644
index 2895078..0000000
--- a/eclipse/build-tools/customchecks/.project
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>customchecks</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>com.atlassw.tools.eclipse.checkstyle.CheckstyleBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>com.atlassw.tools.eclipse.checkstyle.CheckstyleNature</nature>
-	</natures>
-	<linkedResources>
-		<link>
-			<name>core</name>
-			<type>2</type>
-			<location>GWT_ROOT/build-tools/customchecks</location>
-		</link>
-	</linkedResources>
-</projectDescription>
diff --git a/eclipse/build-tools/doctool/.project b/eclipse/build-tools/doctool/.project
deleted file mode 100644
index f998847..0000000
--- a/eclipse/build-tools/doctool/.project
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>DocTool</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>com.atlassw.tools.eclipse.checkstyle.CheckstyleBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>com.atlassw.tools.eclipse.checkstyle.CheckstyleNature</nature>
-	</natures>
-	<linkedResources>
-		<link>
-			<name>core</name>
-			<type>2</type>
-			<locationURI>GWT_ROOT/build-tools/doctool</locationURI>
-		</link>
-	</linkedResources>
-</projectDescription>
diff --git a/eclipse/build-tools/ant-gwt/.checkstyle b/eclipse/build_tools/ant_gwt/.checkstyle
similarity index 100%
rename from eclipse/build-tools/ant-gwt/.checkstyle
rename to eclipse/build_tools/ant_gwt/.checkstyle
diff --git a/eclipse/build-tools/ant-gwt/.classpath b/eclipse/build_tools/ant_gwt/.classpath
similarity index 100%
rename from eclipse/build-tools/ant-gwt/.classpath
rename to eclipse/build_tools/ant_gwt/.classpath
diff --git a/eclipse/build_tools/ant_gwt/.project b/eclipse/build_tools/ant_gwt/.project
new file mode 100644
index 0000000..5e11ce7
--- /dev/null
+++ b/eclipse/build_tools/ant_gwt/.project
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>ant-gwt</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.atlassw.tools.eclipse.checkstyle.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>com.atlassw.tools.eclipse.checkstyle.CheckstyleNature</nature>
+	</natures>
+	<linkedResources>
+		<link>
+			<name>core</name>
+			<type>2</type>
+			<location>GWT_ROOT/build_tools/ant_gwt</location>
+		</link>
+	</linkedResources>
+</projectDescription>
diff --git a/eclipse/build-tools/customchecks/.checkstyle b/eclipse/build_tools/customchecks/.checkstyle
similarity index 100%
rename from eclipse/build-tools/customchecks/.checkstyle
rename to eclipse/build_tools/customchecks/.checkstyle
diff --git a/eclipse/build-tools/customchecks/.classpath b/eclipse/build_tools/customchecks/.classpath
similarity index 100%
rename from eclipse/build-tools/customchecks/.classpath
rename to eclipse/build_tools/customchecks/.classpath
diff --git a/eclipse/build_tools/customchecks/.project b/eclipse/build_tools/customchecks/.project
new file mode 100644
index 0000000..be5e338
--- /dev/null
+++ b/eclipse/build_tools/customchecks/.project
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>customchecks</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.atlassw.tools.eclipse.checkstyle.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>com.atlassw.tools.eclipse.checkstyle.CheckstyleNature</nature>
+	</natures>
+	<linkedResources>
+		<link>
+			<name>core</name>
+			<type>2</type>
+			<location>GWT_ROOT/build_tools/customchecks</location>
+		</link>
+	</linkedResources>
+</projectDescription>
diff --git a/eclipse/build-tools/doctool/.checkstyle b/eclipse/build_tools/doctool/.checkstyle
similarity index 100%
rename from eclipse/build-tools/doctool/.checkstyle
rename to eclipse/build_tools/doctool/.checkstyle
diff --git a/eclipse/build-tools/doctool/.classpath b/eclipse/build_tools/doctool/.classpath
similarity index 100%
rename from eclipse/build-tools/doctool/.classpath
rename to eclipse/build_tools/doctool/.classpath
diff --git a/eclipse/build_tools/doctool/.project b/eclipse/build_tools/doctool/.project
new file mode 100644
index 0000000..249e503
--- /dev/null
+++ b/eclipse/build_tools/doctool/.project
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>DocTool</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.atlassw.tools.eclipse.checkstyle.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>com.atlassw.tools.eclipse.checkstyle.CheckstyleNature</nature>
+	</natures>
+	<linkedResources>
+		<link>
+			<name>core</name>
+			<type>2</type>
+			<locationURI>GWT_ROOT/build_tools/doctool</locationURI>
+		</link>
+	</linkedResources>
+</projectDescription>
diff --git a/eclipse/dev/.classpath b/eclipse/dev/.classpath
index fa17a0d..4b1f5b4 100644
--- a/eclipse/dev/.classpath
+++ b/eclipse/dev/.classpath
@@ -12,35 +12,16 @@
 	<classpathentry kind="var" path="GWT_TOOLS/lib/tomcat/ant-launcher-1.6.5.jar"/>
 	<classpathentry kind="var" path="GWT_TOOLS/lib/tomcat/catalina-1.0.jar"/>
 	<classpathentry kind="var" path="GWT_TOOLS/lib/tomcat/catalina-optional-1.0.jar"/>
-	<classpathentry kind="var" path="GWT_TOOLS/lib/tomcat/commons-beanutils-1.6.jar"/>
-	<classpathentry kind="var" path="GWT_TOOLS/lib/tomcat/commons-collections-3.1.jar" sourcepath="/GWT_TOOLS/lib/tomcat/commons-collections-3.1-src.zip"/>
-	<classpathentry kind="var" path="GWT_TOOLS/lib/tomcat/commons-digester-1.5.jar"/>
 	<classpathentry kind="var" path="GWT_TOOLS/lib/tomcat/commons-el-1.0.jar"/>
-	<classpathentry kind="var" path="GWT_TOOLS/lib/tomcat/commons-logging-1.0.jar"/>
-	<classpathentry kind="var" path="GWT_TOOLS/lib/tomcat/commons-modeler-1.1.jar"/>
-	<classpathentry kind="var" path="GWT_TOOLS/lib/tomcat/jakarta-regexp-1.3.jar"/>
 	<classpathentry kind="var" path="GWT_TOOLS/lib/tomcat/jasper-compiler-1.0.jar"/>
 	<classpathentry kind="var" path="GWT_TOOLS/lib/tomcat/jasper-runtime-1.0.jar"/>
 	<classpathentry kind="var" path="GWT_TOOLS/lib/tomcat/jsp-api-2.0.jar"/>
-	<classpathentry kind="var" path="GWT_TOOLS/lib/tomcat/mx4j-jmx-1.1.jar"/>
-	<classpathentry kind="var" path="GWT_TOOLS/lib/tomcat/naming-common-1.0.jar"/>
-	<classpathentry kind="var" path="GWT_TOOLS/lib/tomcat/naming-factory-1.0.jar"/>
-	<classpathentry kind="var" path="GWT_TOOLS/lib/tomcat/naming-java-1.0.jar"/>
-	<classpathentry kind="var" path="GWT_TOOLS/lib/tomcat/naming-resources-1.0.jar"/>
-	<classpathentry kind="var" path="GWT_TOOLS/lib/tomcat/servlet-api-2.5.jar"/>
-	<classpathentry kind="var" path="GWT_TOOLS/lib/tomcat/servlet-api-2.4.jar"/>
-	<classpathentry kind="var" path="GWT_TOOLS/lib/tomcat/servlets-common-1.0.jar"/>
-	<classpathentry kind="var" path="GWT_TOOLS/lib/tomcat/servlets-default-1.0.jar"/>
-	<classpathentry kind="var" path="GWT_TOOLS/lib/tomcat/servlets-invoker-1.0.jar"/>
-	<classpathentry kind="var" path="GWT_TOOLS/lib/tomcat/tomcat-coyote-1.0.jar"/>
-	<classpathentry kind="var" path="GWT_TOOLS/lib/tomcat/tomcat-http11-1.0.jar" sourcepath="/GWT_TOOLS/lib/tomcat/tomcat-http11-1.0.jar"/>
-	<classpathentry kind="var" path="GWT_TOOLS/lib/tomcat/tomcat-jk2-2.1.jar"/>
-	<classpathentry kind="var" path="GWT_TOOLS/lib/tomcat/tomcat-util-5.1.jar"/>
 	<classpathentry kind="var" path="GWT_TOOLS/lib/htmlunit/htmlunit-2.9/htmlunit-core-js-2.9.jar" sourcepath="/GWT_TOOLS/lib/htmlunit/htmlunit-2.9/htmlunit-core-js-2.9-sources.jar"/>
 	<classpathentry kind="var" path="GWT_TOOLS/lib/htmlunit/htmlunit-2.9/htmlunit-2.9.jar" sourcepath="/GWT_TOOLS/lib/htmlunit/htmlunit-2.9/htmlunit-2.9-sources.jar"/>
 	<classpathentry kind="var" path="GWT_TOOLS/lib/protobuf/protobuf-2.2.0/protobuf-java-rebased-2.2.0.jar"/>
 	<classpathentry kind="var" path="GWT_TOOLS/lib/guava/guava-10.0.1/guava-10.0.1-rebased.jar"/>
 	<classpathentry kind="var" path="GWT_TOOLS/lib/jscomp/sourcemap-rebased.jar"/>
 	<classpathentry kind="var" path="GWT_TOOLS/lib/jscomp/r1649/compiler-rebased.jar"/>
+	<classpathentry kind="var" path="GWT_TOOLS/lib/apache/commons/commons-collections-3.2.1.jar"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/eclipse/external/cldr-tools/.classpath b/eclipse/external/cldr-tools/.classpath
index 60d2da3..a360353 100644
--- a/eclipse/external/cldr-tools/.classpath
+++ b/eclipse/external/cldr-tools/.classpath
@@ -5,7 +5,7 @@
 	<classpathentry kind="var" path="GWT_TOOLS/lib/cup/java-cup-11a.jar"/>
 	<classpathentry kind="var" path="GWT_TOOLS/lib/xalan/xalan-2.7.1-nocup.jar"/>
 	<classpathentry kind="var" path="GWT_TOOLS/lib/apache/ant-1.7.1.jar"/>
-	<classpathentry kind="var" path="GWT_TOOLS/lib/icu4j/4.4.2/icu4j.jar" sourcepath="/GWT_TOOLS/lib/icu4j/4.4.2/icu4jsrc.jar"/>
-	<classpathentry kind="var" path="GWT_TOOLS/lib/icu4j/4.4.2/utilities.jar" sourcepath="/GWT_TOOLS/lib/icu4j/4.4.2/icu4jsrc.jar"/>
+	<classpathentry kind="var" path="GWT_TOOLS/lib/icu4j/50.1.1/icu4j.jar" sourcepath="/GWT_TOOLS/lib/icu4j/50.1.1/icu4j-src.jar"/>
+	<classpathentry kind="var" path="GWT_TOOLS/lib/icu4j/50.1.1/utilities.jar" sourcepath="/GWT_TOOLS/lib/icu4j/50.1.1/utilities-src.jar"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/eclipse/tools/cldr-import/.classpath b/eclipse/tools/cldr-import/.classpath
index 14514f2..acb1c55 100644
--- a/eclipse/tools/cldr-import/.classpath
+++ b/eclipse/tools/cldr-import/.classpath
@@ -9,7 +9,7 @@
 	<classpathentry combineaccessrules="false" kind="src" path="/cldr-tools"/>
 	<classpathentry combineaccessrules="false" kind="src" path="/gwt-dev"/>
         <classpathentry kind="var" path="GWT_TOOLS/lib/cldr/21/cldr.jar" />
-        <classpathentry kind="var" path="GWT_TOOLS/lib/cldr/21/icu4j.jar" />
-        <classpathentry kind="var" path="GWT_TOOLS/lib/cldr/21/utilities.jar" />
+        <classpathentry kind="var" path="GWT_TOOLS/lib/icu4j/50.1.1/icu4j.jar" />
+        <classpathentry kind="var" path="GWT_TOOLS/lib/icu4j/50.1.1/utilities.jar" />
 	<classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/eclipse/user/.classpath b/eclipse/user/.classpath
index fbbbd48..42172aa 100644
--- a/eclipse/user/.classpath
+++ b/eclipse/user/.classpath
@@ -46,7 +46,7 @@
 	<classpathentry kind="var" path="GWT_TOOLS/lib/slf4j/slf4j-log4j12/slf4j-log4j12-1.6.1.jar"/>
 	<classpathentry kind="var" path="GWT_TOOLS/lib/guava/guava-10.0.1/guava-10.0.1-rebased.jar"/>
 	<classpathentry kind="var" path="GWT_TOOLS/lib/streamhtmlparser/streamhtmlparser-jsilver-r10/streamhtmlparser-jsilver-r10-1.5-rebased.jar"/>
-	<classpathentry kind="var" path="GWT_TOOLS/lib/icu4j/4.4.2/icu4j.jar"/>
+	<classpathentry kind="var" path="GWT_TOOLS/lib/icu4j/50.1.1/icu4j.jar"/>
 	<classpathentry kind="var" path="GWT_TOOLS/lib/javax/activation/activation-1.1.jar"/>
 	<classpathentry kind="var" path="GWT_TOOLS/lib/javax/xml/bind/jaxb-api-2.1.jar"/>
 	<classpathentry kind="var" path="GWT_TOOLS/lib/hibernate/validator/tck/jsr303-tck-1.0.3.GA-sources.jar"/>
diff --git a/elemental/src/elemental/js/json/JsJsonString.java b/elemental/src/elemental/js/json/JsJsonString.java
index 3ed35bb..2db459b 100644
--- a/elemental/src/elemental/js/json/JsJsonString.java
+++ b/elemental/src/elemental/js/json/JsJsonString.java
@@ -37,7 +37,7 @@
    * MAGIC: String cast to object interface.
    */
   private static native JsJsonString createProd(String string) /*-{
-    return @elemental.js.json.JsJsonValue::box(Lelemental/json/JsonValue;)(value);
+    return @elemental.js.json.JsJsonValue::box(Lelemental/json/JsonValue;)(string);
   }-*/;
 
   protected JsJsonString() {
diff --git a/plugins/Makefile b/plugins/Makefile
deleted file mode 100644
index 28babe1..0000000
--- a/plugins/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-# Placeholder Makefile, to be replaced with ant build file
-
-xpcom::
-	cd xpcom; make
diff --git a/plugins/MissingBrowserPlugin.html b/plugins/MissingBrowserPlugin.html
deleted file mode 100644
index 1ae3dba..0000000
--- a/plugins/MissingBrowserPlugin.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head>
-<title>Missing GWT Browser Plugin</title>
-</head>
-<body>
-<h1>No GWT Browser Plugin Detected</h1>
-GWT Development Mode needs a browser plugin to operate.  Please <a
-  href="http://gwt-dev-plugin-missing.appspot.com/">install</a> the
-appropriate one for your browser.
-</body>
-</html>
diff --git a/plugins/MissingPlugin/assets/Download.psd b/plugins/MissingPlugin/assets/Download.psd
deleted file mode 100644
index da7ca6f..0000000
--- a/plugins/MissingPlugin/assets/Download.psd
+++ /dev/null
Binary files differ
diff --git a/plugins/MissingPlugin/assets/download.png b/plugins/MissingPlugin/assets/download.png
deleted file mode 100644
index 31c080d..0000000
--- a/plugins/MissingPlugin/assets/download.png
+++ /dev/null
Binary files differ
diff --git a/plugins/MissingPlugin/build.xml b/plugins/MissingPlugin/build.xml
deleted file mode 100644
index c3dcf01..0000000
--- a/plugins/MissingPlugin/build.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<!--                                                                        -->
-<!-- Copyright 2009 Google Inc.                                             -->
-<!-- Licensed under the Apache License, Version 2.0 (the "License"); you    -->
-<!-- may not use this file except in compliance with the License. You may   -->
-<!-- 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. License for the specific language governing permissions and   -->
-<!-- limitations under the License.                                         -->
-<project name="MissingPlugin" default="build" basedir=".">
-  <property name="gwt.root" location="../.." />
-  <property name="project.tail" value="plugins/MissingPlugin" />
-  <import file="${gwt.root}/common.ant.xml" />
-
-  <property.ensure name="gwt.user.jar" location="${gwt.build.lib}/gwt-user.jar" />
-  <property.ensure name="gwt.dev.jar" location="${gwt.build.lib}/gwt-dev.jar" />
-
-  <path id="project.class.path">
-    <pathelement location="war/WEB-INF/classes"/>
-    <pathelement location="${gwt.user.jar}" />
-    <pathelement location="${gwt.dev.jar}" />
-  </path>
-
-  <target name="javac" description="Compile java source">
-    <mkdir dir="war/WEB-INF/classes"/>
-    <javac srcdir="src" includes="**" encoding="utf-8"
-        destdir="war/WEB-INF/classes"
-        source="1.5" target="1.5" nowarn="true"
-        debug="true" debuglevel="lines,vars,source">
-      <classpath refid="project.class.path"/>
-    </javac>
-    <copy todir="war/WEB-INF/classes">
-      <fileset dir="src" excludes="**/*.java"/>
-    </copy>
-  </target>
-
-  <target name="gwtc" depends="javac" description="GWT compile to JavaScript">
-    <gwt.javac destdir="war/WEB-INF/classes">
-      <classpath>
-        <path refid="project.class.path"/>
-      </classpath>
-    </gwt.javac>
-    <java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler">
-      <classpath>
-        <pathelement location="src"/>
-        <path refid="project.class.path"/>
-      </classpath>
-      <!-- add jvmarg -Xss16M or similar if you see a StackOverflowError -->
-      <jvmarg value="-Xmx256M"/>
-      <!-- Additional arguments like -style PRETTY or -logLevel DEBUG -->
-      <arg value="com.google.gwt.missingplugin.MissingPlugin"/>
-    </java>
-  </target>
-
-  <target name="devmode" depends="javac" description="Run development mode">
-    <java failonerror="true" fork="true" classname="com.google.gwt.dev.DevMode">
-      <classpath>
-        <pathelement location="src"/>
-        <path refid="project.class.path"/>
-      </classpath>
-      <jvmarg value="-Xmx256M"/>
-      <arg value="-startupUrl"/>
-      <arg value="MissingPlugin.html"/>
-      <!-- Additional arguments like -style PRETTY or -logLevel DEBUG -->
-      <arg value="com.google.gwt.missingplugin.MissingPlugin"/>
-    </java>
-  </target>
-
-  <target name="build" depends="gwtc" description="Build this project" />
-
-  <target name="war" depends="build" description="Create a war file">
-    <zip destfile="MissingPlugin.war" basedir="war"/>
-  </target>
-
-  <target name="clean" description="Cleans this project">
-    <delete dir="war/WEB-INF/classes" failonerror="false" />
-    <delete dir="war/missingplugin" failonerror="false" />
-  </target>
-
-</project>
diff --git a/plugins/MissingPlugin/src/com/google/gwt/missingplugin/MissingPlugin.gwt.xml b/plugins/MissingPlugin/src/com/google/gwt/missingplugin/MissingPlugin.gwt.xml
deleted file mode 100644
index 7f3bf7f..0000000
--- a/plugins/MissingPlugin/src/com/google/gwt/missingplugin/MissingPlugin.gwt.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<!--                                                                        -->
-<!-- Copyright 2009 Google Inc.                                             -->
-<!-- Licensed under the Apache License, Version 2.0 (the "License"); you    -->
-<!-- may not use this file except in compliance with the License. You may   -->
-<!-- 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. License for the specific language governing permissions and   -->
-<!-- limitations under the License.                                         -->
-<module rename-to='missingplugin'>
-  <inherits name='com.google.gwt.user.User'/>
-  <entry-point class='com.google.gwt.missingplugin.client.MissingPlugin'/>
-  <source path='client'/>
-</module>
diff --git a/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/AllDownloadsPane.java b/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/AllDownloadsPane.java
deleted file mode 100644
index b992d77..0000000
--- a/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/AllDownloadsPane.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright 2009 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.missingplugin.client;
-
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.core.client.JsArray;
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.resources.client.CssResource;
-import com.google.gwt.uibinder.client.UiBinder;
-import com.google.gwt.uibinder.client.UiField;
-import com.google.gwt.uibinder.client.UiHandler;
-import com.google.gwt.user.client.ui.Anchor;
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.VerticalPanel;
-import com.google.gwt.user.client.ui.Widget;
-
-/**
- * Shows a download box for each supported download.
- */
-public class AllDownloadsPane extends Composite {
-
-  private static final DownloadListPaneBinder uiBinder = GWT.create(DownloadListPaneBinder.class);
-
-  interface DownloadListPaneBinder extends UiBinder<Widget, AllDownloadsPane> {
-  }
-
-  interface MyStyle extends CssResource {
-    String platforms();
-  }
-  
-  @UiField
-  MyStyle style;
-  
-  @UiField
-  VerticalPanel downloadBoxes;
-
-  @UiField(provided = true)
-  Anchor inferredDownloadLink = new Anchor("");
-
-  private final MissingPluginPane.Controller controller;
-
-  public AllDownloadsPane(MissingPluginPane.Controller controller, DownloadInfo linkInfo) {
-    this.controller = controller;
-    initWidget(uiBinder.createAndBindUi(this));
-
-    JsArray<DownloadEntry> links = linkInfo.getAllDownloads();
-    for (int i = 0, n = links.length(); i < n; ++i) {
-      DownloadEntry link = links.get(i);
-      if (link.isSupported()) {
-        String linkContentHtml = link.getLinkContentHtml();
-        String href = link.getHref();
-        String platforms = link.getPlatforms();
-        if (platforms != null) {
-          linkContentHtml += "<br><span class=\"" + style.platforms() + "\">"
-              + platforms + "</span>";
-        }
-        DownloadBox box = new DownloadBox(linkContentHtml, href, true);
-        downloadBoxes.add(box);
-        downloadBoxes.setCellWidth(box, "100%");
-      }
-    }
-  }
-
-  @UiHandler("inferredDownloadLink")
-  void onInferredDownloadLinkClicked(ClickEvent e) {
-    controller.onInferredDownloadClicked();
-  }
-}
diff --git a/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/AllDownloadsPane.ui.xml b/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/AllDownloadsPane.ui.xml
deleted file mode 100644
index 59e91d0..0000000
--- a/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/AllDownloadsPane.ui.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<!--                                                                        -->
-<!-- Copyright 2009 Google Inc.                                             -->
-<!-- Licensed under the Apache License, Version 2.0 (the "License"); you    -->
-<!-- may not use this file except in compliance with the License. You may   -->
-<!-- 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. License for the specific language governing permissions and   -->
-<!-- limitations under the License.                                         -->
-<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui">
-  <ui:style type='com.google.gwt.missingplugin.client.AllDownloadsPane.MyStyle'>
-    .pane {
-    }
-
-    .actionTable {
-      margin: 10px 0 0 30px;
-      font-size: 100%;
-    }
-
-    .downloadBoxes {
-    }
-
-    .inferredDownloadLink {
-      margin-top: 2px;
-      margin-right: 8px;
-      text-align: right;
-      font-size: 80%;
-      display: block;
-      color: black;
-    }
-    
-    .platforms {
-      font-size: 80%;
-      font-style: italic;
-    }
-  </ui:style>
-  <g:HTMLPanel styleName="{style.pane}">
-
-    <table class="{style.actionTable}" cellspacing="0" cellpadding="0">
-      <tr>
-        <td>
-          <g:VerticalPanel ui:field="downloadBoxes" styleName="{style.downloadBoxes}" width="100%"/>
-        </td>
-      </tr>
-      <tr>
-      <td>
-        <g:Anchor ui:field="inferredDownloadLink" styleName="{style.inferredDownloadLink}">suggested download only</g:Anchor>
-      </td>
-      </tr>
-    </table>
-
-  </g:HTMLPanel>
-</ui:UiBinder>
diff --git a/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/DownloadBox.java b/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/DownloadBox.java
deleted file mode 100644
index 2235d96..0000000
--- a/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/DownloadBox.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright 2009 Google Inc.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */package com.google.gwt.missingplugin.client;
-
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.dom.client.AnchorElement;
-import com.google.gwt.uibinder.client.UiBinder;
-import com.google.gwt.uibinder.client.UiField;
-import com.google.gwt.uibinder.client.UiTemplate;
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.HTMLPanel;
-
-/**
- * The pretty box used to display a hyperlink for one download (or a link to
- * help for unsupported platforms).
- */
-public class DownloadBox extends Composite {
-
-  private static DownloadBoxUiBinder downloadBoxUiBinder = GWT.create(DownloadBoxUiBinder.class);
-  private static UnsupportedBoxUiBinder unsupportedBoxUiBinder = GWT.create(UnsupportedBoxUiBinder.class);
-
-  interface DownloadBoxUiBinder extends UiBinder<HTMLPanel, DownloadBox> {
-  }
-
-  @UiTemplate("UnsupportedBox.ui.xml")
-  interface UnsupportedBoxUiBinder extends UiBinder<HTMLPanel, DownloadBox> {
-  }
-
-  @UiField
-  AnchorElement downloadLink, downloadLinkIcon;
-
-  public DownloadBox(String linkContentHtml, String url, boolean supported) {
-    if (supported) {
-      initWidget(downloadBoxUiBinder.createAndBindUi(this));
-    } else {
-      initWidget(unsupportedBoxUiBinder.createAndBindUi(this));
-    }
-    downloadLink.setInnerHTML(linkContentHtml);
-    downloadLink.setHref(url);
-    downloadLinkIcon.setHref(url);
-  }
-}
diff --git a/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/DownloadBox.ui.xml b/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/DownloadBox.ui.xml
deleted file mode 100644
index 36e7b39..0000000
--- a/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/DownloadBox.ui.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<!--                                                                        -->
-<!-- Copyright 2009 Google Inc.                                             -->
-<!-- Licensed under the Apache License, Version 2.0 (the "License"); you    -->
-<!-- may not use this file except in compliance with the License. You may   -->
-<!-- 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. License for the specific language governing permissions and   -->
-<!-- limitations under the License.                                         -->
-<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui">
-
-  <ui:image field='downloadIcon' src='download.gif' />
-
-  <ui:style>
-    .downloadBox {
-    	margin-top: 8px;
-      padding: 6px;
-      font-size: 100%;
-      font-weight: bold;
-      background-color: rgb(120, 158, 250);
-      border: 2px solid #5e7aab;
-      \-moz-border-radius: 5px;
-      \-moz-box-shadow: rgba(0, 0, 0, 0.199219) 3px 3px 3px;
-      \-webkit-border-radius: 5px;
-      \-webkit-box-shadow: rgba(0, 0, 0, 0.199219) 3px 3px 3px;
-    }
-    
-    @sprite .downloadIcon {
-      gwt-image: 'downloadIcon';
-      display: block;
-    }
-
-    .downloadLink {
-      white-space: nowrap;
-      display: block;
-      color: white;
-      margin-left: 8px;
-      margin-right: 8px;
-      text-align: right;
-      font-size: 11px;
-    }
-  </ui:style>
-
-  <g:HTMLPanel>
-    <table class="{style.downloadBox}" width="100%">
-      <tr>
-        <td>
-          <a ui:field="downloadLink" style="text-decoration: none" class="{style.downloadLink}"/>
-        </td>
-        <td width="1%">
-          <a ui:field="downloadLinkIcon" class="{style.downloadIcon}"/>
-        </td>
-      </tr>
-    </table>
-  </g:HTMLPanel>
-</ui:UiBinder>
diff --git a/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/DownloadEntry.java b/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/DownloadEntry.java
deleted file mode 100644
index 1915735..0000000
--- a/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/DownloadEntry.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2009 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.missingplugin.client;
-
-import com.google.gwt.core.client.JavaScriptObject;
-
-/**
- * Overlay type representing one recognized potential download target.
- */
-public final class DownloadEntry extends JavaScriptObject {
-
-  protected DownloadEntry() { }
-
-  public native String getHref()/*-{
-    return this.url;
-  }-*/;
-
-  public native String getLinkContentHtml()/*-{
-    return this.caption;
-  }-*/;
-
-  public native String getPlatforms()/*-{
-    return this.platforms;
-  }-*/;
-
-  public native boolean isSupported() /*-{
-    return this.supported;
-  }-*/;
-
-}
diff --git a/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/DownloadInfo.java b/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/DownloadInfo.java
deleted file mode 100644
index f32238e..0000000
--- a/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/DownloadInfo.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright 2009 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.missingplugin.client;
-
-import com.google.gwt.core.client.JavaScriptObject;
-import com.google.gwt.core.client.JsArray;
-
-/**
- * Overlay type representing the set of recognized platforms.
- */
-public final class DownloadInfo extends JavaScriptObject {
-
-  protected DownloadInfo() {
-  }
-
-  public native JsArray<DownloadEntry> getAllDownloads() /*-{
-    var a = [];
-    for (var k in this.allDownloads) {
-      a[a.length] = this.allDownloads[k];
-    }
-    return a;
-  }-*/;
-
-  /**
-   * @return the {@link DownloadEntry} that was inferred, or <code>null</code>
-   *         if inference failed
-   */
-  public native DownloadEntry getInferredDownload() /*-{
-    var d = this.allDownloads[this.inferredDownloadId];
-    if (d) return d;
-    return this.allDownloads["unknown"];
-  }-*/;
-
-  public native String getTroubleshootingUrl() /*-{
-    return this.troubleshootingUrl;
-  }-*/;
-
-}
diff --git a/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/InferredDownloadPane.java b/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/InferredDownloadPane.java
deleted file mode 100644
index 43fb4a7..0000000
--- a/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/InferredDownloadPane.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright 2009 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.missingplugin.client;
-
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.uibinder.client.UiBinder;
-import com.google.gwt.uibinder.client.UiField;
-import com.google.gwt.uibinder.client.UiHandler;
-import com.google.gwt.user.client.ui.Anchor;
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.Widget;
-
-/**
- * A subview that shows only the download that is recommended.
- */
-public class InferredDownloadPane extends Composite {
-
-  private static InferredDownloadPaneUiBinder uiBinder = GWT.create(InferredDownloadPaneUiBinder.class);
-
-  @UiField(provided = true)
-  Anchor allDownloadsLink;
-
-  @UiField(provided = true)
-  DownloadBox downloadBox;
-
-  private final MissingPluginPane.Controller controller;
-
-  interface InferredDownloadPaneUiBinder extends UiBinder<Widget, InferredDownloadPane> {
-  }
-
-  public InferredDownloadPane(MissingPluginPane.Controller controller, DownloadInfo linkInfo) {
-    this.controller = controller;
-    this.allDownloadsLink = new Anchor("");
-    DownloadEntry inferredDownload = linkInfo.getInferredDownload();
-    if (inferredDownload != null) {
-      String linkContentHtml = inferredDownload.getLinkContentHtml();
-      String href = inferredDownload.getHref();
-      boolean supported = inferredDownload.isSupported();
-      this.downloadBox = new DownloadBox(linkContentHtml, href, supported);
-    } else {
-      // Unsupported/unknown browser
-      this.downloadBox = new DownloadBox("Unsupported or unrecognized browser", "", false);
-    }
-
-    initWidget(uiBinder.createAndBindUi(this));
-  }
-
-  @UiHandler("allDownloadsLink")
-  void onOtherLinkClicked(ClickEvent e) {
-    controller.onAllDownloadsClicked();
-  }
-}
diff --git a/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/InferredDownloadPane.ui.xml b/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/InferredDownloadPane.ui.xml
deleted file mode 100644
index d602ab1..0000000
--- a/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/InferredDownloadPane.ui.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<!--                                                                        -->
-<!-- Copyright 2009 Google Inc.                                             -->
-<!-- Licensed under the Apache License, Version 2.0 (the "License"); you    -->
-<!-- may not use this file except in compliance with the License. You may   -->
-<!-- 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. License for the specific language governing permissions and   -->
-<!-- limitations under the License.                                         -->
-<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui"
-  xmlns:m="urn:import:com.google.gwt.missingplugin.client">
-
-
-  <ui:style>
-    .actionTable {
-      margin: 10px 0 0 30px;
-      font-size: 100%;
-    }
-
-    .allDownloadsLink {
-      margin-top: 2px;
-      margin-right: 8px;
-      text-align: right; 
-      font-size: 80%; 
-      display: block; 
-      color: black;
-    }
-
-  </ui:style>
-  <g:HTMLPanel>
-    <table class="{style.actionTable}" cellspacing="0" cellpadding="0">
-      <tr>
-        <td>
-         <m:DownloadBox ui:field="downloadBox"/>
-        </td>
-      </tr>
-      <tr>
-      <td>
-        <g:Anchor ui:field="allDownloadsLink" styleName="{style.allDownloadsLink}">plugins for other systems</g:Anchor>
-      </td>
-      </tr>
-    </table>
-  </g:HTMLPanel>
-</ui:UiBinder>
-
- 
\ No newline at end of file
diff --git a/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/MissingPlugin.java b/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/MissingPlugin.java
deleted file mode 100644
index c7433ee..0000000
--- a/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/MissingPlugin.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2009 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.missingplugin.client;
-
-import com.google.gwt.core.client.EntryPoint;
-import com.google.gwt.user.client.ui.RootPanel;
-
-/**
- * The entry point that launches the download UI.
- */
-public class MissingPlugin implements EntryPoint {
-
-  public void onModuleLoad() {
-    DownloadInfo linkInfo = getAmbientLinkInfo();
-    MissingPluginPane pane = new MissingPluginPane(linkInfo);
-    RootPanel.get().add(pane);
-  }
-
-  private DownloadInfo getAmbientLinkInfo() {
-    DownloadInfo r = getAmbientLinkInfo0();
-    assert r != null : "expecting $wnd.downloadInfo";
-    return r;
-  }
-  
-  private native DownloadInfo getAmbientLinkInfo0() /*-{
-    return $wnd.downloadInfo;
-  }-*/;
-
-}
diff --git a/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/MissingPluginPane.java b/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/MissingPluginPane.java
deleted file mode 100644
index e094195..0000000
--- a/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/MissingPluginPane.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright 2009 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.missingplugin.client;
-
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.dom.client.AnchorElement;
-import com.google.gwt.uibinder.client.UiBinder;
-import com.google.gwt.uibinder.client.UiField;
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.HTMLPanel;
-
-/**
- * The main UI. Also manages subviews.
- */
-public class MissingPluginPane extends Composite {
-
-  /**
-   * Abstract the relationships between the subviews and this one.
-   */
-  public class Controller {
-    void onAllDownloadsClicked() {
-      allDownloadsPane.setVisible(true);
-      inferredDownloadPane.setVisible(false);
-    }
-
-    void onInferredDownloadClicked() {
-      allDownloadsPane.setVisible(false);
-      inferredDownloadPane.setVisible(true);
-    }
-  }
-
-  interface MissingPluginPaneUiBinder extends UiBinder<HTMLPanel, MissingPluginPane> {
-  }
-
-  @UiField(provided = true)
-  AllDownloadsPane allDownloadsPane;
-
-  @UiField(provided = true)
-  InferredDownloadPane inferredDownloadPane;
-
-  @UiField
-  AnchorElement troubleshootingLink;
-
-  private final Controller controller = new Controller();
-
-  private final MissingPluginPaneUiBinder uiBinder = GWT.create(MissingPluginPaneUiBinder.class);
-
-  public MissingPluginPane(DownloadInfo linkInfo) {
-    inferredDownloadPane = new InferredDownloadPane(controller, linkInfo);
-    allDownloadsPane = new AllDownloadsPane(controller, linkInfo);
-
-    initWidget(uiBinder.createAndBindUi(this));
-    troubleshootingLink.setHref(linkInfo.getTroubleshootingUrl());
-  }
-
-}
diff --git a/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/MissingPluginPane.ui.xml b/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/MissingPluginPane.ui.xml
deleted file mode 100644
index e8a4ecb..0000000
--- a/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/MissingPluginPane.ui.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<!--                                                                        -->
-<!-- Copyright 2009 Google Inc.                                             -->
-<!-- Licensed under the Apache License, Version 2.0 (the "License"); you    -->
-<!-- may not use this file except in compliance with the License. You may   -->
-<!-- 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. License for the specific language governing permissions and   -->
-<!-- limitations under the License.                                         -->
-<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui"
-  xmlns:m="urn:import:com.google.gwt.missingplugin.client">
-
-  <ui:style>
-    .pane {
-      background-image: initial;
-      background-attachment: initial;
-      background-origin: initial;
-      background-clip: initial;
-      background-color: #ffff88;
-      padding-top: 5px;
-      padding-right: 10px;
-      padding-bottom: 20px;
-      padding-left: 10px;
-      z-index: 10000;
-      font-size: 9pt;
-      font-family: Verdana;
-      border-bottom-width: 2px;
-      border-bottom-style: solid;
-      border-bottom-color: rgb(221, 221, 153);
-      background-position: initial initial;
-      background-repeat: initial initial;
-    }
-    
-    .title {
-      font-size: 11pt;
-      font-family: Verdana;
-      padding-top: 10px;
-      font-weight: bold;
-    }
-    
-    .text {
-      font-size: 9pt;
-      font-family: Verdana;
-      padding-top: 10px;
-    }
-  </ui:style>
-
-  <g:HTMLPanel styleName='{style.pane}'>
-    <div class="{style.title}">Development Mode requires the Google Web Toolkit Developer Plugin</div>
-
-    <div class="{style.text}">By downloading, you agree to the <a href="http://code.google.com/webtoolkit/terms.html">Terms &amp; Conditions</a> and <a href="http://code.google.com/webtoolkit/privacy.html">Privacy Policy</a>.</div>
-
-    <m:InferredDownloadPane ui:field="inferredDownloadPane" visible="true" />
-    <m:AllDownloadsPane ui:field="allDownloadsPane" visible="false" />
-
-    <div class="{style.text}">
-      For help or troubleshooting, ask questions in the <a ui:field="troubleshootingLink" style="color:#000;">discussion group</a>.
-    </div>
-  </g:HTMLPanel>
-
-</ui:UiBinder> 
diff --git a/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/UnsupportedBox.ui.xml b/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/UnsupportedBox.ui.xml
deleted file mode 100644
index bdfeac3..0000000
--- a/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/UnsupportedBox.ui.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<!--                                                                        -->
-<!-- Copyright 2009 Google Inc.                                             -->
-<!-- Licensed under the Apache License, Version 2.0 (the "License"); you    -->
-<!-- may not use this file except in compliance with the License. You may   -->
-<!-- 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. License for the specific language governing permissions and   -->
-<!-- limitations under the License.                                         -->
-<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui">
-
-  <ui:image field='unsupportedIcon' src='unsupported.gif' />
-
-  <ui:style>
-    .downloadBox {
-    	margin-top: 8px;
-      padding: 6px;
-      font-size: 100%;
-      font-weight: bold;
-      background-color: rgb(120, 158, 250);
-      border: 2px solid #5e7aab;
-      \-moz-border-radius: 5px;
-      \-moz-box-shadow: rgba(0, 0, 0, 0.199219) 3px 3px 3px;
-      \-webkit-border-radius: 5px;
-      \-webkit-box-shadow: rgba(0, 0, 0, 0.199219) 3px 3px 3px;
-    }
-    
-    @sprite .downloadIcon {
-      gwt-image: 'unsupportedIcon';
-      display: block;
-    }
-
-    .downloadLink {
-      white-space: nowrap;
-      display: block;
-      color: white;
-      margin-left: 8px;
-      margin-right: 8px;
-      text-align: left;
-      font-size: 11px;
-    }
-  </ui:style>
-
-  <g:HTMLPanel>
-    <table class="{style.downloadBox}" width="100%">
-      <tr>
-        <td>
-          <a ui:field="downloadLink" style="text-decoration: none" class="{style.downloadLink}"/>
-        </td>
-        <td width="1%">
-          <a ui:field="downloadLinkIcon" class="{style.downloadIcon}" />
-        </td>
-      </tr>
-    </table>
-  </g:HTMLPanel>
-</ui:UiBinder>
diff --git a/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/download.gif b/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/download.gif
deleted file mode 100644
index da0d53e..0000000
--- a/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/download.gif
+++ /dev/null
Binary files differ
diff --git a/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/unsupported.gif b/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/unsupported.gif
deleted file mode 100644
index 304788d..0000000
--- a/plugins/MissingPlugin/src/com/google/gwt/missingplugin/client/unsupported.gif
+++ /dev/null
Binary files differ
diff --git a/plugins/MissingPlugin/war/MissingPlugin.html b/plugins/MissingPlugin/war/MissingPlugin.html
deleted file mode 100644
index 321c5b8..0000000
--- a/plugins/MissingPlugin/war/MissingPlugin.html
+++ /dev/null
@@ -1,199 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<!-- The HTML 4.01 Transitional DOCTYPE declaration-->
-<!-- above set at the top of the file will set     -->
-<!-- the browser's rendering engine into           -->
-<!-- "Quirks Mode". Replacing this declaration     -->
-<!-- with a "Standards Mode" doctype is supported, -->
-<!-- but may lead to some differences in layout.   -->
-
-<html>
-  <head>
-    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
-    <title>Google Web Toolkit Developer Plugin Not Installed</title>
-    <style>
-      body {
-        margin: 0;
-        padding: 0;
-      }
-    </style>
-
-    <script>
-      var troubleshootingUrl = "http://groups.google.com/group/google-web-toolkit";
-
-      // The missing plugin module expects downloadInfo.inferredDownloadId to contain the key to use
-      // in allDownloads field.
-      var downloadInfo = {
-        "inferredDownloadId" : null,
-        "troubleshootingUrl" : troubleshootingUrl,
-        "allDownloads" : {
-          "unknown" :
-          {
-            "caption" : "Regrettably, this browser is currently unsupported :-(",
-            "url" : troubleshootingUrl,
-            "supported" : false
-          },
-
-          "firefox-old" :
-          {
-            "caption" : "Sorry, the GWT Developer Plugin only supports Firefox 3.0 - 15.0 at present",
-            "url" : "http://www.getfirefox.com",
-            "supported" : false
-          },
-
-          "opera" :
-          {
-            "caption" : "Sorry, there is currently no GWT Developer Plugin for Opera",
-            // TODO(you): If you are reading this, maybe you would be interested in contributing an Opera version?
-            "url" : "http://code.google.com/webtoolkit/makinggwtbetter.html#contributingcode",
-            "supported" : false
-          },
-
-          "safari-iphone" :
-          {
-            "caption" : "Sorry, there is currently no GWT Developer Plugin for mobile Safari",
-            "url" : troubleshootingUrl,
-            "supported" : false
-          },
-
-          "webkit-android" :
-          {
-            "caption" : "Sorry, there is currently no GWT Developer Plugin for mobile WebKit",
-            "url" : troubleshootingUrl,
-            "supported" : false
-          },
-
-          "chrome" :
-          {
-            "caption" : "Download the GWT Developer Plugin<br>For Chrome",
-            "url" : "https://chrome.google.com/webstore/detail/gwt-developer-plugin/jpjpnpmbddbjkfaccnmhnkdgjideieim",
-            "platforms" : "Win x86, Linux x86/x86_64, Mac x86",
-            "supported" : true
-          },
-
-          "safari-win" :
-          {
-            "caption" : "Sorry, there is currently no GWT Developer Plugin for Safari on Windows",
-            "url" : troubleshootingUrl,
-            "supported" : false
-          },
-
-          "firefox" :
-          {
-            "caption" : "Download the GWT Developer Plugin<br>For Firefox",
-            "url" : "https://dl-ssl.google.com/gwt/plugins/firefox/gwt-dev-plugin.xpi",
-            "platforms" : "Win x86, Linux x86/x86_64, Mac x86/PPC(3.x only)/x86_64",
-            "supported" : true
-          },
-
-          "ie" :
-          {
-            "caption" : "Download the GWT Developer Plugin<br>For Internet Explorer",
-            "url" : "https://dl-ssl.google.com/tag/s/appguid%3D%7B9a5e649a-ec63-4c7d-99bf-75adb345e7e5%7D%26lang%3Den%26appname%3DGWT%2520Developer%2520Plugin%2520for%2520IE%2520%2528x86%2529%26needsadmin%3Dfalse/gwt/plugins/ie/GwtDevPluginSetup.exe",
-            "platforms" : "Win x86",
-            "supported" : true
-          },
-
-          "ie-x64" :
-          {
-            "caption" : "Download the GWT Developer Plugin<br>For Internet Explorer (64-bit)",
-            "url" : "https://dl-ssl.google.com/tag/s/appguid%3D%7B53dae7d2-8c28-440f-920b-b2d665ce73b2%7D%26lang%3Den%26appname%3DGWT%2520Developer%2520Plugin%2520for%2520IE%2520%2528x64%2529%26needsadmin%3Dfalse/gwt/plugins/ie/GwtDevPluginSetup.exe",
-            "platforms" : "Win x64",
-            "supported" : true
-          },
-
-          "safari-mac" :
-          {
-            "caption" : "Download the GWT Developer Plugin<br>For Safari",
-            "url" : "https://dl-ssl.google.com/gwt/plugins/safari/gwt-dev-plugin.dmg",
-            "platforms" : "Mac x86/x86_64/PPC",
-            "supported" : true
-          },
-
-          "safari-mac-late" :
-          {
-            "caption" : "Sorry, there is currently no GWT Developer Plugin for Safari 5.1<br>"
-              + "or later, due to major changes in the Safari plugin API. <br><br>"
-              + "In the meantime, <a href='http://www.omnigroup.com/products/omniweb/'>OmniWeb 5.11</a> is similar to Safari 5.0 and <br>"
-              + "known to work.",
-            "url" : troubleshootingUrl,
-            "supported" : false
-          }
-        }
-      };
-
-      function leadingDigits(s) {
-         var suffix = s.search(/[^\d]/g);
-         if (suffix != -1) {
-           s = s.substring(0, suffix);
-         }
-         return s;
-      }
-
-      function isSafariLate(ua) {
-        // Distinguish Safari from something "like Safari", e.g. OmniWeb
-        // "Version/" comes after "like"
-        var versionAndBeyond = ua.substring(ua.indexOf("version/"));
-        if (versionAndBeyond.indexOf("safari/") == -1) {
-          return false;
-        }
-
-        var componentsAfterVersion =
-          ua.substring(ua.indexOf("version/") + "version/".length).split(" ");
-        var version = componentsAfterVersion[0].split(".");
-
-        var major = Number(version[0]);
-        // Sometimes minor has a suffix like "dp1"
-        var minor = Number(leadingDigits(version[1]));
-
-        return major > 5 || major == 5 && minor > 0;
-      }
-
-      var ua = navigator.userAgent.toLowerCase();
-      var id = 'unknown';
-      if (ua.indexOf("webkit") != -1) {
-        if ( (ua.indexOf("iphone") != -1) || (ua.indexOf("ipod") != -1) ) {
-          id = 'safari-iphone';
-        } else if (ua.indexOf("android") != -1) {
-          id = 'webkit-android';
-        } else if (ua.indexOf("chrome") != -1) {
-            id = 'chrome';
-        } else if (ua.indexOf("macintosh") != -1) {
-          if (isSafariLate(ua)) {
-            id = 'safari-mac-late';
-          } else {
-            id = 'safari-mac';
-          }
-        } else if (ua.indexOf("windows") != -1) {
-          id = 'safari-win';
-        }
-      } else if (ua.indexOf("msie") != -1) {
-        id = (ua.indexOf("win64") == -1) ? 'ie' : 'ie-x64';
-      } else if (ua.indexOf("opera") != -1) {
-        id = 'opera';
-      } else if (ua.indexOf("gecko") != -1) {
-        // Note: Gecko version != Firefox version before 5.0.
-        // See: https://developer.mozilla.org/en-US/docs/Gecko_user_agent_string_reference
-        var gecko_versions = ["1.9", "2.0", "5.0", "6.0", "7.0", "8.0", "9.0", "10.0", "11.0", "12.0", "13.0", "14.0", "15.0", "16.0"];
-        id = 'firefox-old';
-        for (var i = 0; i < gecko_versions.length; i++) {
-          if (ua.indexOf("rv:" + gecko_versions[i]) != -1) {
-            id = 'firefox';
-            break;
-          }
-        }
-      }
-      downloadInfo.inferredDownloadId = id;
-    </script>
-
-    <script type="text/javascript" language="javascript" src="missingplugin/missingplugin.nocache.js"></script>
-  </head>
-
-  <noscript>
-    <div style="width: 22em; position: absolute; left: 50%; margin-left: -11em; color: red; background-color: white; border: 1px solid red; padding: 4px; font-family: sans-serif">
-      The Google Web Toolkit Developer Plugin does not appear to be installed.
-      Also, you also don't seem to have a browser that is willing to run JavaScript.
-      Please enable JavaScript or switch to a browser that supports JavaScript and try again.
-    </div>
-  </noscript>
-  </body>
-</html>
diff --git a/plugins/MissingPlugin/war/WEB-INF/appengine-web.xml b/plugins/MissingPlugin/war/WEB-INF/appengine-web.xml
deleted file mode 100644
index afac8c3..0000000
--- a/plugins/MissingPlugin/war/WEB-INF/appengine-web.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
-	<application>gwt-dev-plugin-missing</application>
-	<version>4</version>
-	<!-- TODO(???) please update threadsafe to true if code is threadsafe -->
-	<threadsafe>false</threadsafe>
-	
-	<!-- Configure java.util.logging -->
-	<system-properties>
-		<property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
-	</system-properties>
-	
-</appengine-web-app>
-
diff --git a/plugins/MissingPlugin/war/WEB-INF/logging.properties b/plugins/MissingPlugin/war/WEB-INF/logging.properties
deleted file mode 100644
index ccb3a6f..0000000
--- a/plugins/MissingPlugin/war/WEB-INF/logging.properties
+++ /dev/null
@@ -1,24 +0,0 @@
-# Logging configuration file for Google App Engine tools.
-
-# Specify the handlers to create in the root logger
-# (all loggers are children of the root logger)
-# The following creates the console handler
-handlers = java.util.logging.ConsoleHandler
-
-# Set the default logging level for the root logger
-.level = WARNING
-
-# Set the default logging level for the datanucleus loggers
-DataNucleus.JDO.level=WARNING
-DataNucleus.Persistence.level=WARNING
-DataNucleus.Cache.level=WARNING
-DataNucleus.MetaData.level=WARNING
-DataNucleus.General.level=WARNING
-DataNucleus.Utility.level=WARNING
-DataNucleus.Transaction.level=WARNING
-DataNucleus.Datastore.level=WARNING
-DataNucleus.ClassLoading.level=WARNING
-DataNucleus.Plugin.level=WARNING
-DataNucleus.ValueGeneration.level=WARNING
-DataNucleus.Enhancer.level=WARNING
-DataNucleus.SchemaTool.level=WARNING
diff --git a/plugins/MissingPlugin/war/WEB-INF/web.xml b/plugins/MissingPlugin/war/WEB-INF/web.xml
deleted file mode 100644
index 658aca0..0000000
--- a/plugins/MissingPlugin/war/WEB-INF/web.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE web-app
-    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
-    "http://java.sun.com/dtd/web-app_2_3.dtd">
-
-<web-app>
-  
-  <!-- Default page to serve -->
-  <welcome-file-list>
-    <welcome-file>MissingPlugin.html</welcome-file>
-  </welcome-file-list>
-
-</web-app>
diff --git a/plugins/Protocol.txt b/plugins/Protocol.txt
deleted file mode 100644
index 4d980fc..0000000
--- a/plugins/Protocol.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-Startup protocol changes for version 2:
-
-C->S	S->C
-====	====
-{later:
-GetRealPlugin(String pluginType, String platformId)
-
-	FatalError(String message)
-
-	RealPlugin(byte[] plugin)
-}
-
-
-CheckVersions(int minProtoVersion, int maxProtoVersion,
-    String hostedHtmlVersion)
-
-	FatalError(String message)
-
-	ProtocolVersion(int protoVersion)
-
-
-{may be ommitted if no other supported transports:
-ChooseTransport(String[] supportedTransports)
-
-	FatalError(String msg)
-
-	SwitchTransport(String transport, String transportArgs)
-
-	  [If transport is not empty, all further communication should be
-           switched to the selected transport.  transportArgs varies by the
-           transport.]
-}
-
-
-LoadModule(String url, String sessionKey, String userAgent, String moduleName)
-
-  [sessionKey is some arbitrary string to identify one group of modules as
-   being part of the same session of one application.]
-
-... as before
-
-
-
-The v1 protocol LoadModule message is still accepted, though with reduced
-functionality in the OOPHM UI.  After the module is loaded, v1 and v2 are
-exactly the same, which makes supporting both versions easier.
diff --git a/plugins/README.txt b/plugins/README.txt
deleted file mode 100644
index 447c0fc..0000000
--- a/plugins/README.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-This directory contains the source for the OOPHM plugin which resides in
-the browser to allow hosted mode debugging.
-
-Subdirectories:
- - common
-   Code that is shared between all platforms, and mostly deals with the wire
-   protocol and related tables.
-
- - ie
-   Plugin for 32-bit Internet Explorer
-
- - npapi
-   Obsolete NPAPI plugin for Firefox
-
- - webkit
-   plugin for WebKit-based browsers that support its extension mechanism
-   (ie, no Safari/Windows support)
-
- - xpcom
-   XPCOM-based Firefox plugin
-
-To build, see instructions in each directory.
diff --git a/plugins/common/AllowedConnections.cpp b/plugins/common/AllowedConnections.cpp
deleted file mode 100644
index ffe6441..0000000
--- a/plugins/common/AllowedConnections.cpp
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include "Debug.h"
-#include <string>
-#include <cstring>
-#include <vector>
-
-#include "AllowedConnections.h"
-
-
-// TODO(jat): do we need to protect against parallel access to static state?
-//    current browsers only use one thread, but Chrome is multithreaded, though
-//    it isn't clear if plugins see parallel execution.  For now, we will
-//    assume the caller takes responsibility for making sure there are no
-//    concurrent calls into AllowedConnections.
-std::vector<AllowedConnections::Rule> AllowedConnections::rules;
-
-/**
- * Get the host portion of the URL, not including the port.
- *
- * @return the host portion of the URL, or the unmodified URL if it does not appear
- *     to be valid
- */
-std::string AllowedConnections::getHostFromUrl(const std::string& url) {
-  int protoEnd = url.find("://");
-  if (protoEnd == std::string::npos) {
-    Debug::log(Debug::Debugging) << "getHostFromUrl(" << url
-        << ") - no :// in URL" << Debug::flush;
-    return url;
-  }
-  protoEnd += 3; // skip over "://"
-  int hostEnd = url.find('/', protoEnd);
-  if (hostEnd == std::string::npos) {
-    hostEnd = url.length();
-  }
-  //skip over user:passwd@ if it exists
-  int userPassword = url.find( '@', protoEnd );
-  if (userPassword == std::string::npos || userPassword > hostEnd)
-  {
-    userPassword = protoEnd;
-  }
-
-  int colon = url.find(':', userPassword);
-  if (colon == std::string::npos || colon > hostEnd) {
-    colon = hostEnd;
-  }
-  std::string host = url.substr(userPassword, colon - userPassword);
-  return host;
-}
-
-std::string AllowedConnections::getCodeServerFromUrl(const std::string& url) {
-  int queryStart = url.find("?");
-  if (queryStart == std::string::npos) {
-    Debug::log(Debug::Debugging) << "getCodeServerFromUrl(" << url
-        << ") - no ? in URL" << Debug::flush;
-    return "";
-  }
-  ++queryStart; //skip the ?
-
-  int paramStart = url.find("gwt.codesvr=", queryStart);
-  if (paramStart == std::string::npos) {
-    Debug::log(Debug::Debugging) << "getCodeServerFromUrl(" << url
-        << ") - missing gwt.codesvr in URL" << Debug::flush;
-    return "";
-  }
-  paramStart += 12;
-
-  int colon = url.find(':', paramStart);
-  // After navigation, the URL parameter could be encoded.
-  // ex: gwt.codesvr=127.0.0.1:9997 -> gwt.codesvr=127.0.0.1%3A9997.
-  int colonEncoded = url.find("%3A", paramStart);
-  if (colonEncoded != std::string::npos
-      && (colon == std::string::npos || colonEncoded < colon)) {
-    colon = colonEncoded;
-  }
-
-  int variableEnd = url.find('&', paramStart);
-  if ( variableEnd == std::string::npos || colon < variableEnd) {
-    variableEnd = colon; //could be std::string::npos!
-  }
-  Debug::log(Debug::Spam) << "getCodeServerFromUrl(" << url
-      << ") - gwt.codesvr=" <<
-      url.substr(paramStart, variableEnd-paramStart) << " in URL"
-      << Debug::flush;
-
-  return url.substr(paramStart, variableEnd-paramStart);
-}
-
-bool AllowedConnections::matchesRule(const std::string& webHost,
-                                     const std::string& codeServer,
-                                     bool* allowed) {
-  std::string host = webHost;
-  std::string server = codeServer;
-
-  //Remap variants of localhost
-  if (host.find("localhost.") == 0 || host == "127.0.0.1") {
-    host = "localhost";
-  }
-
-  if (server.find("localhost.") == 0 || server == "127.0.0.1" )
-  {
-    server = "localhost";
-  }
-
-  // always allow localhost
-  // TODO(jat): try and get IP addresses of local interfaces?
-  if (host == "localhost" && server == "localhost") {
-    *allowed = true;
-    return true;
-  }
-
-  Debug::log(Debug::Spam) << "Checking webHost(" << webHost
-      << "), codeServer(" << codeServer << ") " << Debug::flush;
-  for (std::vector<AllowedConnections::Rule>::const_iterator it = rules.begin();
-       it != rules.end(); ++it) {
-    Debug::log(Debug::Spam) << "  comparing to webHost=(" << it->getWebHost()
-        << ") codeServer=(" << it->getCodeServer() << ")" << Debug::flush;
-    // TODO(jat): add support for regexes
-  if (webHost == it->getWebHost() && codeServer == it->getCodeServer()) {
-      *allowed = !it->isExcluded();
-      Debug::log(Debug::Spam) << "    found! allowed=" << *allowed
-          << Debug::flush;
-      return true;
-    }
-  }
-  Debug::log(Debug::Info)
-      << "GWT Development Mode connection requested by unknown web server "
-      << webHost << ", code server " << codeServer << Debug::flush;
-  return false;
-}
-
-void AllowedConnections::addRule(const std::string& webHost, 
-                                 const std::string& codeServer, 
-                                 bool exclude) {
-  Debug::log(Debug::Spam) << "AllowedConnections::addRule(webHost=" << webHost
-      << ", codeServer=" << codeServer << ", excl=" << exclude << ")"
-      << Debug::flush;
-  rules.push_back(AllowedConnections::Rule(webHost, codeServer, exclude));
-}
-
-void AllowedConnections::clearRules() {
-  rules.clear();
-}
-
-void AllowedConnections::initFromAccessList(const std::string& accessList) {
-  Debug::log(Debug::Spam) << "initFromAccessList() accessList="
-      << accessList << Debug::flush;
-  clearRules();
-  int n = accessList.length();
-  for (int i = 0; i < n; ) {
-    bool exclude = false;
-    if (accessList[i] == '!') {
-      exclude = true;
-      ++i;
-    }
-    int comma = i - 1; // for pre-increment below
-    while (++comma < n && accessList[comma] != ','); // empty
-    std::string option = accessList.substr(i, comma - i);
-    i = comma + 1;
-
-    //parse the [/codeserver] optional element
-    int slash = option.find( '/');
-    if( slash == std::string::npos ) {
-      addRule(option, "localhost", exclude);
-    } else {
-      addRule(option.substr(0, slash), option.substr(slash+1), exclude);
-    }
-  }
-}
diff --git a/plugins/common/AllowedConnections.h b/plugins/common/AllowedConnections.h
deleted file mode 100644
index 0856aee..0000000
--- a/plugins/common/AllowedConnections.h
+++ /dev/null
@@ -1,125 +0,0 @@
-#ifndef _H_AllowedConnections
-#define _H_AllowedConnections
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include <string>
-#include <vector>
-#include <utility>
-
-/**
- * Manages rules to control access to other sites from the plugin.  This is
- * important since arbitrary web pages could try and use the plugin to connect
- * to hosts the browser's machine has access to, such as doing port scanning
- * behind a firewall.
- */
-class AllowedConnections {
-public:
-  /**
-   * Add a rule to match new requests against.
-   *
-   * @param pattern pattern to match
-   * @param exclude true if matches should be excluded instead of included
-   */
-  static void addRule(const std::string& webHost,
-      const std::string& codeServer,
-      bool exclude = false);
-
-  /**
-   * Clear all rules.
-   */
-  static void clearRules();
-
-  /**
-   * Get the host portion of the URL, not including the port.
-   *
-   * @return the host portion of the URL, or the unmodified URL if it does not
-   *     appear to be valid
-   */
-  static std::string getHostFromUrl(const std::string& url);
-
-  /**
-   * Get the code server  value from the URL, not including the port
-   *
-   * @return the first found server in the URL, or the unmodified URL if it
-   *     does not appear to be valid
-   */
-  static std::string getCodeServerFromUrl(const std::string& url);
-
-  /**
-   * Clear any existing rules and reinitialize from the supplied access list.
-   *
-   * This access list is of the form:
-   *    [!]pattern,[!]pattern...
-   * where the optional exclamation indicates the following pattern is to be
-   * excluded, and an arbitrary number of patterns may be supplied with the
-   * first match being used.  Each pattern currently is only an exact literal
-   * match against the host name, but will be extended to support simple
-   * wildcard patterns.
-   */
-  static void initFromAccessList(const std::string& accessList);
-
-  /**
-   * Returns true if the server for the requested URL matched any rule in
-   * our access list, and sets a flag based on whether that rule permits or
-   * denies the request.  A host name of localhost or 127.0.0.1 is always
-   * allowed.
-   *
-   * @param hostname host name of webserver or codeserver
-   * @param allowed pointer to return value indiciating that this URL should
-   *     be allowed to initiate GWT development mode connections
-   * @return true if url matched a rule
-   */
-  static bool matchesRule(const std::string& webHost, 
-      const std::string& codeServer,
-      bool* allowed);
-
-private:
-  AllowedConnections() {
-  }
-
-  /**
-   * Internal class used for representing a rule.
-   */
-  class Rule {
-  public:
-    Rule(const std::string& webHost,
-        const std::string& codeServer,
-        bool exclude)
-        : webhost(webHost), codesvr(codeServer), excluded(exclude) {}
-
-    const std::string& getWebHost() const {
-      return webhost;
-    }
-
-    const std::string& getCodeServer() const {
-      return codesvr;
-    }
-
-    bool isExcluded() const {
-      return excluded;
-    }
-
-  private:
-    std::string webhost;
-    std::string codesvr;
-    bool        excluded;
-  };
-
-  static std::vector<Rule> rules;
-};
-
-#endif
diff --git a/plugins/common/BrowserChannel.h b/plugins/common/BrowserChannel.h
deleted file mode 100644
index ac91af5..0000000
--- a/plugins/common/BrowserChannel.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * DO NOT EDIT
- * Generated by com.google.gwt.util.tools.OophmHeaderFileGenerator
- * TODO(jat): update generator to handle modifications
- */
-
-/* from BrowserChannel.BROWSERCHANNEL_PROTOCOL_VERSION */
-#define BROWSERCHANNEL_PROTOCOL_VERSION 2
-
-/* from com.google.gwt.dev.shell.BrowserChannel.SpecialDispatchId */
-#define SPECIAL_HAS_METHOD 0
-#define SPECIAL_HAS_PROPERTY 1
-#define SPECIAL_GET_PROPERTY 2
-#define SPECIAL_SET_PROPERTY 3
-
-/* from com.google.gwt.dev.shell.BrowserChannel.MessageType */
-#define MESSAGE_TYPE_INVOKE 0
-#define MESSAGE_TYPE_RETURN 1
-#define MESSAGE_TYPE_OLD_LOAD_MODULE 2
-#define MESSAGE_TYPE_QUIT 3
-#define MESSAGE_TYPE_LOADJSNI 4
-#define MESSAGE_TYPE_INVOKESPECIAL 5
-#define MESSAGE_TYPE_FREEVALUE 6
-#define MESSAGE_TYPE_FATAL_ERROR 7
-#define MESSAGE_TYPE_CHECK_VERSIONS 8
-#define MESSAGE_TYPE_PROTOCOL_VERSION 9
-#define MESSAGE_TYPE_CHOOSE_TRANSPORT 10
-#define MESSAGE_TYPE_SWITCH_TRANSPORT 11
-#define MESSAGE_TYPE_LOAD_MODULE 12
-
-/* from com.google.gwt.dev.shell.BrowserChannel.Value.ValueType */
-#define VALUE_TYPE_NULL 0
-#define VALUE_TYPE_BOOLEAN 1
-#define VALUE_TYPE_BYTE 2
-#define VALUE_TYPE_CHAR 3
-#define VALUE_TYPE_SHORT 4
-#define VALUE_TYPE_INT 5
-#define VALUE_TYPE_LONG 6
-#define VALUE_TYPE_FLOAT 7
-#define VALUE_TYPE_DOUBLE 8
-#define VALUE_TYPE_STRING 9
-#define VALUE_TYPE_JAVA_OBJECT 10
-#define VALUE_TYPE_JS_OBJECT 11
-#define VALUE_TYPE_UNDEFINED 12
diff --git a/plugins/common/ByteOrder.h b/plugins/common/ByteOrder.h
deleted file mode 100644
index 7e6bd86..0000000
--- a/plugins/common/ByteOrder.h
+++ /dev/null
@@ -1,141 +0,0 @@
-#ifndef __H_ByteOrder
-#define __H_ByteOrder
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include "Platform.h"
-#include <cstring>
-
-class ByteOrder {
-private:
-  enum FloatByteOrder {
-    FLOAT_BIG_ENDIAN,
-    FLOAT_LITTLE_ENDIAN,
-    // TODO(jat): do we need to consider anything other than straight
-    // big-endian or little-endian?  PDP-11 (irrelevant), ARM (probably
-    // relevant for mobile devices), MIPS (probably not relevant, but maybe)
-    // and others have some intermediate endianess.  Also, FP-endianess is not
-    // necessarily the same as that for integers.
-  };
-#ifdef PLATFORM_FLOAT_ENDIANESS
-  static const FloatByteOrder floatByteOrder = PLATFORM_FLOAT_ENDIANESS;
-#else
-  FloatByteOrder floatByteOrder;
-#endif
-
-  typedef union {
-    float v;
-    char b[sizeof(float)];
-  } FloatUnion;
-
-  typedef union {
-    double v;
-    char b[sizeof(double)];
-  } DoubleUnion;
-
-  /**
-   * Copy src to dest, reversing the order of the bytes.
-   * Assumes src and dest do not overlap.
-   */
-  void memcpyrev(char* dest, const char* src, size_t n) {
-    src += n;
-    while (n-- > 0) {
-      *dest++ = *--src;
-    }
-  }
-public:
-  ByteOrder() {
-#ifndef PLATFORM_FLOAT_ENDIANESS
-    DoubleUnion u;
-    memset(u.b, 0, sizeof(u.b));
-    u.b[0] = (char) 0x80;
-    u.b[7] = (char) 0x02;
-    // TODO(jat): add more tests here if we support other endianess
-    floatByteOrder = u.v > 0 ? FLOAT_LITTLE_ENDIAN : FLOAT_BIG_ENDIAN;
-    if (Debug::level(Debug::Debugging)) {
-      std::string str = "Unknown";
-      switch (floatByteOrder) {
-         case FLOAT_LITTLE_ENDIAN:
-           str = "little-endian";
-           break;
-         case FLOAT_BIG_ENDIAN:
-           str = "big-endian";
-           break;
-      }
-      Debug::log(Debug::Debugging) << "Dynamically detected float byte order: "
-          << str << Debug::flush;
-    }
-#endif
-  }
-
-  void bytesFromDouble(double v, char* bytes) {
-    DoubleUnion u;
-    u.v = v;
-    switch (floatByteOrder) {
-      case FLOAT_LITTLE_ENDIAN:
-        memcpyrev(bytes, u.b, sizeof(u.b));
-        break;
-      case FLOAT_BIG_ENDIAN:
-        memcpy(bytes, u.b, sizeof(u.b));
-        break;
-    }
-  }
-
-  void bytesFromFloat(float v, char* bytes) {
-    FloatUnion u;
-    u.v = v;
-    switch (floatByteOrder) {
-      case FLOAT_LITTLE_ENDIAN:
-        memcpyrev(bytes, u.b, sizeof(u.b));
-        break;
-      case FLOAT_BIG_ENDIAN:
-        memcpy(bytes, u.b, sizeof(u.b));
-        break;
-    }
-  }
-
-  double doubleFromBytes(const char* bytes) {
-    DoubleUnion u;
-    switch (floatByteOrder) {
-      case FLOAT_LITTLE_ENDIAN:
-        memcpyrev(u.b, bytes, sizeof(u.b));
-        break;
-      case FLOAT_BIG_ENDIAN:
-        // TODO(jat): find a way to avoid the extra copy while keeping the
-        // compiler happy.
-        memcpy(u.b, bytes, sizeof(u.b));
-        break;
-    }
-    return u.v;
-  }
-
-  float floatFromBytes(const char* bytes) {
-    FloatUnion u;
-    switch (floatByteOrder) {
-      case FLOAT_LITTLE_ENDIAN:
-        memcpyrev(u.b, bytes, sizeof(u.b));
-        break;
-      case FLOAT_BIG_ENDIAN:
-        // TODO(jat): find a way to avoid the extra copy while keeping the
-        // compiler happy.
-        memcpy(u.b, bytes, sizeof(u.b));
-        break;
-    }
-    return u.v;
-  }
-};
-
-#endif
diff --git a/plugins/common/CheckVersionsMessage.cpp b/plugins/common/CheckVersionsMessage.cpp
deleted file mode 100644
index 911cf38..0000000
--- a/plugins/common/CheckVersionsMessage.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include "CheckVersionsMessage.h"
-#include "HostChannel.h"
-#include "scoped_ptr/scoped_ptr.h"
-
-CheckVersionsMessage::~CheckVersionsMessage() {
-}
-
-char CheckVersionsMessage::getType() const {
-  return TYPE;
-}
-
-/**
- * Receive a CheckVersions message from the channel (note that the message
- * type has already been read).  Caller is responsible for destroying
- * returned message.  Returns null on error.
- */
-CheckVersionsMessage* CheckVersionsMessage::receive(HostChannel& channel) {
-  int minVersion;
-  if (!channel.readInt(minVersion)) {
-    // TODO(jat): error handling
-    printf("Failed to read minimum version\n");
-    return 0;
-  }
-  int maxVersion;
-  if (!channel.readInt(maxVersion)) {
-    // TODO(jat): error handling
-    printf("Failed to read maximum version\n");
-    return 0;
-  }
-  std::string hostedHtmlVersion;
-  if (!channel.readString(hostedHtmlVersion)) {
-    // TODO(jat): error handling
-    printf("Failed to read hosted.html version\n");
-    return 0;
-  }
-  return new CheckVersionsMessage(minVersion, maxVersion, hostedHtmlVersion);
-}
-
-/**
- * Send a fatal error message on the channel.
- */
-bool CheckVersionsMessage::send(HostChannel& channel, int minVersion,
-    int maxVersion, const std::string& hostedHtmlVersion) {
-  if (!channel.sendByte(TYPE)) return false;
-  if (!channel.sendInt(minVersion)) return false;
-  if (!channel.sendInt(maxVersion)) return false;
-  if (!channel.sendString(hostedHtmlVersion)) return false;
-  return true;
-}
diff --git a/plugins/common/CheckVersionsMessage.h b/plugins/common/CheckVersionsMessage.h
deleted file mode 100644
index 10634ae..0000000
--- a/plugins/common/CheckVersionsMessage.h
+++ /dev/null
@@ -1,56 +0,0 @@
-#ifndef __CHECKVERSIONSMESSAGE_H
-#define __CHECKVERSIONSMESSAGE_H
-/*
- * Copyright 2009 Google Inc.
- *
- * Licensed 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.
- */
-
-#include <string>
-#include "Message.h"
-#include "BrowserChannel.h"
-#include "Value.h"
-
-class HostChannel;
-
-/**
- * Class representing a CheckVersions message sent to the server.
- *
- * This message tells the server the range or protocol versions this plugin
- * understands as well as the hosted.html version (so stale copies of it can
- * be detected).
- */
-class CheckVersionsMessage : public Message {
-public:
-  static const char TYPE = MESSAGE_TYPE_CHECK_VERSIONS;
-private:
-  int minVersion;
-  int maxVersion;
-  const std::string& hostedHtmlVersion;
-
-protected:
-  CheckVersionsMessage(int minVersion, int maxVersion,
-      const std::string& hostedHtmlVersion) : minVersion(minVersion),
-      maxVersion(maxVersion), hostedHtmlVersion(hostedHtmlVersion) {}
-
-public:
-  ~CheckVersionsMessage();
-  virtual char getType() const;
-
-  const std::string& getHostedHtmlVersion() const { return hostedHtmlVersion; }
-
-  static CheckVersionsMessage* receive(HostChannel& channel);
-  static bool send(HostChannel& channel, int minVersion, int maxVersion,
-      const std::string& hostedHtmlVersion);
-};
-#endif
diff --git a/plugins/common/ChooseTransportMessage.cpp b/plugins/common/ChooseTransportMessage.cpp
deleted file mode 100644
index 08c315f..0000000
--- a/plugins/common/ChooseTransportMessage.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include <cstdarg>
-#include <vector>
-#include "ChooseTransportMessage.h"
-#include "HostChannel.h"
-#include "scoped_ptr/scoped_ptr.h"
-
-ChooseTransportMessage::~ChooseTransportMessage() {
-}
-
-char ChooseTransportMessage::getType() const {
-  return TYPE;
-}
-
-/**
- * Receive an ChooseTransport message from the channel (note that the message
- * type has already been read).  Caller is responsible for destroying
- * returned message.  Returns null on error.
- */
-ChooseTransportMessage* ChooseTransportMessage::receive(HostChannel& channel) {
-  int length;
-  if (!channel.readInt(length)) {
-    // TODO(jat): error handling
-    printf("Failed to read transport\n");
-    return 0;
-  }
-  std::vector<std::string> transports;
-  for (int i = 0; i < length; ++i) {
-    std::string transport;
-    if (!channel.readString(transport)) {
-      // TODO(jat): error handling
-      printf("Failed to read transport\n");
-      return 0;
-    }
-    transports.push_back(transport);
-  }
-  return new ChooseTransportMessage(transports);
-}
-
-/**
- * Send this ChooseTransport message on the channel.
- */
-bool ChooseTransportMessage::send(HostChannel& channel,
-    const std::vector<std::string>& transports) {
-  if (!channel.sendByte(TYPE)) return false;
-  int n = transports.size();
-  if (!channel.sendInt(n)) return false;
-  for (int i = 0; i < n; ++i) {
-    if (!channel.sendString(transports[i])) return false;
-  }
-  return true;
-}
diff --git a/plugins/common/ChooseTransportMessage.h b/plugins/common/ChooseTransportMessage.h
deleted file mode 100644
index 512185e..0000000
--- a/plugins/common/ChooseTransportMessage.h
+++ /dev/null
@@ -1,55 +0,0 @@
-#ifndef __CHOOSETRANSPORTMESSAGE_H
-#define __CHOOSETRANSPORTMESSAGE_H
-/*
- * Copyright 2009 Google Inc.
- *
- * Licensed 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.
- */
-
-#include <string>
-#include <vector>
-#include "Message.h"
-#include "BrowserChannel.h"
-#include "Value.h"
-
-class HostChannel;
-
-/**
- * Class representing a ChooseTransport message to send to the server.
- *
- * This message type is a request for the server to choose an alternate
- * transport from a provide list, such as a shared memory transport.  The
- * set of transport names is open-ended and thus requires mutual agreement
- * on the names between the client and server.
- */
-class ChooseTransportMessage : public Message {
-public:
-  static const char TYPE = MESSAGE_TYPE_CHOOSE_TRANSPORT;
-private:
-  std::vector<std::string> transports;
-
-protected:
-  ChooseTransportMessage(const std::vector<std::string>& transports)
-      : transports(transports) {}
-
-public:
-  ~ChooseTransportMessage();
-  virtual char getType() const;
-
-  const std::vector<std::string>& getTransports() const { return transports; }
-
-  static ChooseTransportMessage* receive(HostChannel& channel);
-  static bool send(HostChannel& channel,
-      const std::vector<std::string>& transport);
-};
-#endif
diff --git a/plugins/common/Debug.cpp b/plugins/common/Debug.cpp
deleted file mode 100644
index 586c1b6..0000000
--- a/plugins/common/Debug.cpp
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#include <cstdio>
-
-#ifdef _WINDOWS
-#include <windows.h>
-#endif
-
-#include "Debug.h"
-
-#ifdef GWT_DEBUGDISABLE
-// Dummy implementations for when debugging has been disabled
-Debug::DebugStream& Debug::flush(Debug::DebugStream& dbg) {
-  return dbg;
-}
-
-void Debug::logFinish() {}
-
-void Debug::logString(const char* str) {}
-
-#else
-// Warning: this function is inlined in the manipulator output operator in DebugStream.
-// It only remains here because some compiler/linker combinations such as MSVC will
-// give unresolved symbol errors if it isn't -- GCC, for example, will completely remove
-// all traces of this method.
-Debug::DebugStream& Debug::flush(Debug::DebugStream& dbg) {
-  Debug::logFinish();
-  return dbg;
-}
-
-// These methods are implemented in an Objective-C++ file on OSX
-#if !defined(__APPLE_CC__) || defined(__mac)
-
-#ifdef _WINDOWS
-#define DEBUG_BUF_SIZE 2048
-
-static char buf[DEBUG_BUF_SIZE + 3]; // room for CR NL Null
-static char *bufPtr = buf;
-#endif
-
-void Debug::logFinish() {
-#ifdef _WINDOWS
-  logString("\r\n");
-  ::OutputDebugStringA(buf);
-  bufPtr = buf;
-#else
-  putchar('\n');
-#endif
-}
-
-// logStart may be called multiple times per logFinish
-void Debug::logStart(LogLevel level) {
-}
-
-void Debug::logString(const char* str) {
-#ifdef _WINDOWS
-  size_t len = strlen(str);
-  size_t buflen = DEBUG_BUF_SIZE - (bufPtr - buf);
-  if (len >= buflen) {
-    len = buflen - 1;
-  }
-  strncpy_s(bufPtr, buflen, str, len);
-  bufPtr += len;
-#else
-  fputs(str, stdout);
-#endif
-}
-#endif
-#endif
-
diff --git a/plugins/common/Debug.h b/plugins/common/Debug.h
deleted file mode 100644
index c44e824..0000000
--- a/plugins/common/Debug.h
+++ /dev/null
@@ -1,214 +0,0 @@
-#ifndef _H_Debug
-#define _H_Debug
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-#ifndef _WINDOWS
-// TODO(jat): remove, for snprintf prototypes which should go away
-#include <stdio.h>
-#endif
-
-#include <ostream>
-#include <string>
-
-#include "Platform.h"
-
-// Get a default debug config if none supplied.
-#ifndef GWT_DEBUGLEVEL
-#include "DebugLevel.h"
-#endif
-
-/**
- * Debugging class to get debugging output to a platform-specific location, with multiple
- * levels supported.
- * 
- * To use:
- *   #define GWT_DEBUGLEVEL level  // where level is in LogLevel
- *   #include "Debug.h"
- *   Debug::log(Debug::Warning) << ...
- * 
- * Zero overhead if GWT_DEBUGDISABLE is defined, other than the effort spent on side
- * effects for stream object construction.  If that is expensive, use something like
- * Debug::level(Debug::Warning) to conditionalize expensive logging computations.
- */
-class Debug {
-public:
-  enum LogLevel {
-    None,
-    Error,
-    Warning,
-    Info,
-    Debugging,
-    Spam
-  };
-
-private:
-  static const LogLevel minLogLevel = GWT_DEBUGLEVEL;
-
-public:
-  /**
-   * Return true if the requested level would be logged.  Use to protect
-   * expensive computations for logging.
-   */
-  static bool level(LogLevel testLevel) {
-#ifdef GWT_DEBUGDISABLE
-    return false;
-#else
-    return testLevel <= minLogLevel;
-#endif
-  }
-
-private:
-  // complete the current log message
-  static void logFinish();
-  
-  // begin a new log message
-  static void logStart(LogLevel level);
-  
-  // add a string to the current log message
-  static void logString(const char* str);
-  static void logString(const std::string& str) {
-    logString(str.c_str());
-  }
-  
-public:
-  // Note that flush is special-cased in the manipulator output operator,
-  // and its implementation is inlined there.  If its implementation is
-  // modified, the implementation of the manipulator output operator will
-  // need to be modified as well.
-  class DebugStream;
-  static DebugStream& flush(DebugStream& dbg);
-
-  class DebugStream {
-
-    const bool shouldLog;
-
-    // TODO(jat): better implementations of output operators
-  public:
-    DebugStream(LogLevel level) : shouldLog(Debug::level(level)) {
-      if (shouldLog) {
-        Debug::logStart(level);
-      }
-    }
-
-    bool isActive() const {
-      return shouldLog;
-    }
-
-    DebugStream& operator<<(long v) {
-      if (shouldLog) {
-        char buf[20];
-        snprintf(buf, sizeof(buf), "%ld", v);
-        Debug::logString(buf);
-      }
-      return *this;
-    }
-
-    DebugStream& operator<<(unsigned long v) {
-      if (shouldLog) {
-        char buf[20];
-        snprintf(buf, sizeof(buf), "%lu", v);
-        Debug::logString(buf);
-      }
-      return *this;
-    }
-
-    DebugStream& operator<<(long long v) {
-      if (shouldLog) {
-        char buf[40];
-        snprintf(buf, sizeof(buf), "%lld", v);
-        Debug::logString(buf);
-      }
-      return *this;
-    }
-
-    DebugStream& operator<<(unsigned long long v) {
-      if (shouldLog) {
-        char buf[40];
-        snprintf(buf, sizeof(buf), "%llu", v);
-        Debug::logString(buf);
-      }
-      return *this;
-    }
-
-    DebugStream& operator<<(int v) {
-      if (shouldLog) {
-        char buf[20];
-        snprintf(buf, sizeof(buf), "%d", v);
-        Debug::logString(buf);
-      }
-      return *this;
-    }
-
-    DebugStream& operator<<(unsigned int v) {
-      if (shouldLog) {
-        char buf[20];
-        snprintf(buf, sizeof(buf), "%u", v);
-        Debug::logString(buf);
-      }
-      return *this;
-    }
-
-    DebugStream& operator<<(double v) {
-      if (shouldLog) {
-        char buf[20];
-        snprintf(buf, sizeof(buf), "%g", v);
-        Debug::logString(buf);
-      }
-      return *this;
-    }
-
-    DebugStream& operator<<(const std::string& str) {
-      if (shouldLog) {
-        Debug::logString(str);
-      }
-      return *this;
-    }
-
-    DebugStream& operator<<(const char* str) {
-      if (shouldLog) {
-        Debug::logString(str);
-      }
-      return *this;
-    }
-
-    DebugStream& operator<<(const void* v) {
-      if (shouldLog) {
-        char buf[20];
-        snprintf(buf, sizeof(buf), "%p", v);
-        Debug::logString(buf);
-      }
-      return *this;
-    }
-
-    DebugStream& operator<<(DebugStream& (*manip)(DebugStream&)) {
-      if (shouldLog) {
-        // Special-case flush for efficiency.
-        if (manip == Debug::flush) {
-          Debug::logFinish();
-        } else {
-          return manip(*this);
-        }
-      }
-      return *this;
-    }
-  };
-
-  static DebugStream log(LogLevel testLevel) {
-    return DebugStream(testLevel);
-  }
-};
-
-#endif
diff --git a/plugins/common/DebugLevel.h b/plugins/common/DebugLevel.h
deleted file mode 100644
index b6f6a27..0000000
--- a/plugins/common/DebugLevel.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef _H_DebugLevel
-#define _H_DebugLevel
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-// Defines the default debug level if not defined -- see Debug.h
-// Can also define GWT_DEBUGDISABLE to remove all traces of the debug code.
-//#define GWT_DEBUGLEVEL Debugging
-#define GWT_DEBUGLEVEL Info
-//#define GWT_DEBUGDISABLE
-
-#endif
diff --git a/plugins/common/FatalErrorMessage.cpp b/plugins/common/FatalErrorMessage.cpp
deleted file mode 100644
index 0b4b2d0..0000000
--- a/plugins/common/FatalErrorMessage.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include "FatalErrorMessage.h"
-#include "HostChannel.h"
-#include "scoped_ptr/scoped_ptr.h"
-
-FatalErrorMessage::~FatalErrorMessage() {
-}
-
-char FatalErrorMessage::getType() const {
-  return TYPE;
-}
-
-/**
- * Receive an FatalError message from the channel (note that the message
- * type has already been read).  Caller is responsible for destroying
- * returned message.  Returns null on error.
- */
-FatalErrorMessage* FatalErrorMessage::receive(HostChannel& channel) {
-  std::string error;
-  if (!channel.readString(error)) {
-    // TODO(jat): error handling
-    printf("Failed to read error message\n");
-    return 0;
-  }
-  return new FatalErrorMessage(error);
-}
-
-/**
- * Send a fatal error message on the channel.
- */
-bool FatalErrorMessage::send(HostChannel& channel, const std::string& error) {
-  if (!channel.sendByte(TYPE)) return false;
-  if (!channel.sendString(error)) return false;
-  return true;
-}
diff --git a/plugins/common/FatalErrorMessage.h b/plugins/common/FatalErrorMessage.h
deleted file mode 100644
index a80b9d1..0000000
--- a/plugins/common/FatalErrorMessage.h
+++ /dev/null
@@ -1,54 +0,0 @@
-#ifndef __FATALERRORMESSAGE_H
-#define __FATALERRORMESSAGE_H
-/*
- * Copyright 2009 Google Inc.
- *
- * Licensed 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.
- */
-
-#include <string>
-#include "Message.h"
-#include "BrowserChannel.h"
-#include "Value.h"
-
-class HostChannel;
-
-/**
- * Class representing an FatalError message received from the server.
- *
- * This message indicates that a fatal error occurred during the processing
- * of the previous message from the client and the connection should be
- * aborted.
- */
-class FatalErrorMessage : public Message {
-public:
-  static const char TYPE = MESSAGE_TYPE_FATAL_ERROR;
-private:
-  std::string error;
-
-protected:
-  /**
-   * @param error error message
-   */
-  FatalErrorMessage(const std::string& error) : error(error) {}
-
-public:
-  ~FatalErrorMessage();
-  virtual char getType() const;
-
-  const std::string& getError() const { return error; }
-
-  static FatalErrorMessage* receive(HostChannel& channel);
-  static bool send(HostChannel& channel, const std::string& error);
-};
-#endif
diff --git a/plugins/common/FreeValueMessage.cpp b/plugins/common/FreeValueMessage.cpp
deleted file mode 100644
index b7f0bab..0000000
--- a/plugins/common/FreeValueMessage.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#include "FreeValueMessage.h"
-#include "HostChannel.h"
-#include "scoped_ptr/scoped_ptr.h"
-
-FreeValueMessage::~FreeValueMessage() {
-  delete[] ids;
-}
-
-FreeValueMessage* FreeValueMessage::receive(HostChannel& channel) {
-  int idCount;
-  if (!channel.readInt(idCount)) {
-    // TODO(jat): error handling
-    return 0;
-  }
-  // TODO: validate idCount
-  scoped_array<int> ids(new int[idCount]);
-
-  for (int i = 0; i < idCount; ++i) {
-    if (!channel.readInt(ids[i])) return 0;
-  }
-  return new FreeValueMessage(idCount, ids.release());
-}
-
-bool FreeValueMessage::send(HostChannel& channel, int idCount, const int* ids) {
-  if (!channel.sendByte(TYPE)) return false;
-  if (!channel.sendInt(idCount)) return false;
-  for (int i = 0; i < idCount; ++i) {
-    if (!channel.sendInt(ids[i])) return false;
-  }
-  return true;
-}
diff --git a/plugins/common/FreeValueMessage.h b/plugins/common/FreeValueMessage.h
deleted file mode 100644
index 3158f40..0000000
--- a/plugins/common/FreeValueMessage.h
+++ /dev/null
@@ -1,60 +0,0 @@
-#ifndef __H_FreeValueMessage
-#define __H_FreeValueMessage
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include <string>
-#include "Message.h"
-#include "BrowserChannel.h"
-#include "HostChannel.h"
-
-/**
- * Class representing an FreeValue message sent or received from the server.
- *
- * This message gives a list of object IDs which are no longer needed by the
- * sending side.  Note that there is no reply to this message, and it can
- * only be sent when the other side is expecting to receive a return value or
- * another invoke.  Special care must be taken to ensure that any freed values
- * referenced by the succeeding invoke/return are resurrected instead of freed.
- */
-class FreeValueMessage : public Message {
-public:
-  static const char TYPE = MESSAGE_TYPE_FREEVALUE;
-private:
-  int idCount;
-  const int* ids;
-
-  FreeValueMessage(int idCount, const int* ids) : idCount(idCount), ids(ids) {}
-
-public:
-  ~FreeValueMessage();
-
-  virtual char getType() const {
-    return TYPE;
-  }
-
-  int getIdCount() const {
-    return idCount;
-  }
-
-  const int* const getIds() const {
-    return ids;
-  }
-
-  static FreeValueMessage* receive(HostChannel& channel);
-  static bool send(HostChannel& channel, int idCount, const int* ids);
-};
-#endif
diff --git a/plugins/common/HashMap.h b/plugins/common/HashMap.h
deleted file mode 100644
index ebf634a..0000000
--- a/plugins/common/HashMap.h
+++ /dev/null
@@ -1,58 +0,0 @@
-#ifndef _H_HashMap
-#define _H_HashMap
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-// Portability wrapper for hash maps, since they aren't part of the standard C++ library
-
-#ifdef __GNUC__
-#ifdef CXX_TR1
-// future support
-#include <unordered_map>
-#define hash_map std::tr1::unordered_map
-
-namespace HashFunctions = std;
-#else
-#include <ext/hash_map>
-using __gnu_cxx::hash_map;
-
-// TODO(jat): surely this exists somewhere already?
-// TODO(jat): portability issues
-namespace __gnu_cxx {
-  using std::size_t;
-
-  template<> struct hash<std::string> {
-    size_t operator()(const std::string& str) const {
-      return hash<const char*>()(str.c_str());
-    }
-  };
-};
-namespace HashFunctions = __gnu_cxx;
-#endif
-#elif sun
-// TODO(jat): find a hash_map implementation for Solaris
-#include <map>
-namespace HashFunctions = std;
-#define hash_map map
-using std::map;
-#else
-// Try something reasonably standard, which works in Windows
-#include <hash_map>
-using stdext::hash_map;
-namespace HashFunctions = stdext;
-#endif
-
-#endif
diff --git a/plugins/common/HostChannel.cpp b/plugins/common/HostChannel.cpp
deleted file mode 100644
index 2cabb01..0000000
--- a/plugins/common/HostChannel.cpp
+++ /dev/null
@@ -1,445 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include <cstdio>
-#include <cstdlib>
-#include <cstring>
-#include <cerrno>
-
-#include "Debug.h"
-
-#ifdef _WINDOWS
-#include <winsock2.h>
-#include <ws2tcpip.h>
-#else
-#include <netdb.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <unistd.h>
-#include <sys/time.h>
-#endif
-#include <time.h>
-
-#include "Platform.h"
-#include "ByteOrder.h"
-
-#include "CheckVersionsMessage.h"
-#include "ProtocolVersionMessage.h"
-#include "ChooseTransportMessage.h"
-#include "SwitchTransportMessage.h"
-#include "FatalErrorMessage.h"
-#include "FreeValueMessage.h"
-#include "HostChannel.h"
-#include "LoadJsniMessage.h"
-#include "InvokeMessage.h"
-#include "InvokeSpecialMessage.h"
-#include "QuitMessage.h"
-#include "ReturnMessage.h"
-#include "Value.h"
-#include "scoped_ptr/scoped_ptr.h"
-
-using namespace std;
-
-ByteOrder HostChannel::byteOrder;
-
-bool HostChannel::connectToHost(const char* host, unsigned port) {
-  if (!port) {
-    port = 9997;
-  }
-  Debug::log(Debug::Info)
-      << "Initiating GWT Development Mode connection to host " << host
-      << ", port " << port << Debug::flush;
-  return sock.connect(host, port);
-}
-
-bool HostChannel::init(SessionHandler* handler, int minProtoVers,
-    int maxProtoVers, const std::string& hostedHtmlVers) {
-  this->handler = handler;
-  Debug::log(Debug::Debugging)
-      << "  negotiating versions - we support protocol " << minProtoVers
-      << " through " << maxProtoVers << ", hostedHtmlVersion=" << hostedHtmlVers
-      << Debug::flush;
-  // TODO(jat): support transport selection
-  CheckVersionsMessage::send(*this, minProtoVers, maxProtoVers, hostedHtmlVers);
-  flush();
-  char type;
-  if (!readByte(type)) {
-    handler->fatalError(*this, "Failed to receive message type");
-    Debug::log(Debug::Error) << "Failed to receive message type" << Debug::flush;
-    disconnectFromHost();
-    return false;
-  }
-
-  switch (type) {
-    case MESSAGE_TYPE_PROTOCOL_VERSION:
-    {
-      scoped_ptr<ProtocolVersionMessage> imsg(ProtocolVersionMessage
-          ::receive(*this));
-      if (!imsg.get()) {
-        Debug::log(Debug::Error) << "Failed to receive protocol version message"
-            << Debug::flush;
-        return false;
-      }
-      // TODO(jat): save selected protocol version when we support a range
-      break;
-    }
-    case MESSAGE_TYPE_FATAL_ERROR:
-    {
-      scoped_ptr<FatalErrorMessage> imsg(FatalErrorMessage::receive(*this));
-      if (!imsg.get()) {
-        Debug::log(Debug::Error) << "Failed to receive fatal error message"
-            << Debug::flush;
-        return false;
-      }
-      handler->fatalError(*this, imsg.get()->getError());
-      return false;
-    }
-    default:
-      return false;
-  }
-  return true;
-}
-
-bool HostChannel::disconnectFromHost() {
-  Debug::log(Debug::Debugging) << "Disconnecting channel" << Debug::flush;
-  if (!isConnected()) {
-    Debug::log(Debug::Error) << "Disconnecting already disconnected channel" << Debug::flush;
-    return false;
-  }
-  QuitMessage::send(*this);
-  flush();
-  sock.disconnect();
-  return true;
-}
-
-bool HostChannel::readInt(int32_t& data) {
-  int32_t d;
-  if (!readBytes(&d, sizeof(d))) return false;
-  data = ntohl(d);
-  return true;
-}
-
-bool HostChannel::sendInt(int32_t data) {
-  uint32_t d = htonl(data);
-  return sendBytes(&d, sizeof(d));
-}
-
-bool HostChannel::readShort(short& data) {
-  int16_t d;
-  if (!readBytes(&d, sizeof(d))) return false;
-  data = ntohs(d);
-  return true;
-}
-
-bool HostChannel::sendShort(const short data) {
-  uint16_t d = htons(data);
-  return sendBytes(&d, sizeof(d));
-}
-
-bool HostChannel::readLong(int64_t& data) {
-  // network is big-endian
-  int32_t d[2];
-  if (!readInt(d[0])) return false;
-  if (!readInt(d[1])) return false;
-  data = (static_cast<int64_t>(d[0]) << 32) | ntohl(d[1]);
-  return true;
-}
-
-bool HostChannel::sendLong(const int64_t data) {
-  if (!sendInt(static_cast<int32_t>(data >> 32))) {
-    return false;
-  }
-  return sendInt(static_cast<int32_t>(data));
-}
-
-bool HostChannel::readFloat(float& data) {
-  char bytes[sizeof(data)];
-  if (!readBytes(bytes, sizeof(bytes))) {
-    return false;
-  }
-  data = byteOrder.floatFromBytes(bytes);
-  return true;
-}
-
-bool HostChannel::sendFloat(const float data) {
-  char bytes[sizeof(data)];
-  byteOrder.bytesFromFloat(data, bytes);
-  return sendBytes(bytes, sizeof(bytes));
-}
-
-bool HostChannel::readDouble(double& data) {
-  char bytes[sizeof(data)];
-  if (!readBytes(bytes, sizeof(bytes))) {
-    return false;
-  }
-  data = byteOrder.doubleFromBytes(bytes);
-  return true;
-}
-
-bool HostChannel::sendDouble(const double data) {
-  char bytes[sizeof(data)];
-  byteOrder.bytesFromDouble(data, bytes);
-  return sendBytes(bytes, sizeof(bytes));
-}
-
-bool HostChannel::readStringLength(uint32_t& data) {
-  int32_t val;
-  if (!readInt(val)) return false;
-  // TODO: assert positive?
-  data = val;
-  return true;
-}
-
-bool HostChannel::readStringBytes(char* data, const uint32_t len) {
-  return readBytes(data, len);
-}
-
-bool HostChannel::readString(std::string& strRef) {
-  uint32_t len;
-  if (!readStringLength(len)) {
-    Debug::log(Debug::Error) << "readString: failed to read length"
-        << Debug::flush;
-    return false;
-  }
-  // Allocating variable-length arrays on the stack is a GCC feature,
-  // and is vulnerable to stack overflow attacks, so we allocate on the heap.
-  scoped_array<char> buf(new char[len]);
-  if (!readStringBytes(buf.get(), len)) {
-    Debug::log(Debug::Error) << "readString: failed to read " << len
-        << " bytes" << Debug::flush;
-    return false;
-  }
-  strRef.assign(buf.get(), len);
-  return true;
-}
-
-static inline double operator-(const struct timeval& end,
-    const struct timeval& begin) {
-  double us = end.tv_sec * 1000000.0 + end.tv_usec - begin.tv_sec * 1000000.0
-      - begin.tv_usec;
-  return us;
-}
-
-ReturnMessage* HostChannel::reactToMessages(SessionHandler* handler, bool expectReturn) {
-  char type;
-  while (true) {
-    flush();
-    Debug::log(Debug::Debugging) << "Waiting for response, flushed output" << Debug::flush;
-    if (!readByte(type)) {
-      if (isConnected()) {
-        Debug::log(Debug::Debugging) << "Failed to receive message type"
-            << Debug::flush;
-      }
-      return 0;
-    }
-    switch (type) {
-      case MESSAGE_TYPE_INVOKE:
-        {
-          scoped_ptr<InvokeMessage> imsg(InvokeMessage::receive(*this));
-          if (!imsg.get()) {
-            Debug::log(Debug::Error) << "Failed to receive invoke message" << Debug::flush;
-            return 0;
-          }
-          gwt::Value returnValue;
-          bool exception = handler->invoke(*this, imsg->getThis(), imsg->getMethodName(),
-              imsg->getNumArgs(), imsg->getArgs(), &returnValue);
-          handler->sendFreeValues(*this);
-          ReturnMessage::send(*this, exception, returnValue);
-        }
-        break;
-      case MESSAGE_TYPE_INVOKESPECIAL:
-        {
-          // scottb: I think this is never used; I think server never sends invokeSpecial
-          scoped_ptr<InvokeSpecialMessage> imsg(InvokeSpecialMessage::receive(*this));
-          if (!imsg.get()) {
-            Debug::log(Debug::Error) << "Failed to receive invoke special message" << Debug::flush;
-            return 0;
-          }
-          gwt::Value returnValue;
-          bool exception = handler->invokeSpecial(*this, imsg->getDispatchId(),
-              imsg->getNumArgs(), imsg->getArgs(), &returnValue);
-          handler->sendFreeValues(*this);
-          ReturnMessage::send(*this, exception, returnValue);
-        }
-        break;
-      case MESSAGE_TYPE_FREEVALUE:
-        {
-          scoped_ptr<FreeValueMessage> freeMsg(FreeValueMessage::receive(*this));
-          if (!freeMsg.get()) {
-            Debug::log(Debug::Error) << "Failed to receive free value message" << Debug::flush;
-            return 0;
-          }
-          handler->freeValue(*this, freeMsg->getIdCount(), freeMsg->getIds());
-        }
-        // do not send a response
-        break;
-      case MESSAGE_TYPE_LOADJSNI:
-        {
-          scoped_ptr<LoadJsniMessage> loadMsg(LoadJsniMessage::receive(*this));
-          if (!loadMsg.get()) {
-            Debug::log(Debug::Error) << "Failed to receive load JSNI message" << Debug::flush;
-            return 0;
-          }
-          handler->loadJsni(*this, loadMsg->getJs());
-        }
-        // do not send a response
-        break;
-      case MESSAGE_TYPE_RETURN:
-        if (!expectReturn) {
-          Debug::log(Debug::Error) << "Received unexpected RETURN" << Debug::flush;
-        }
-        return ReturnMessage::receive(*this);
-      case MESSAGE_TYPE_QUIT:
-        if (expectReturn) {
-          Debug::log(Debug::Error) << "Received QUIT while waiting for return" << Debug::flush;
-        }
-    	  disconnectFromHost();
-        return 0;
-      default:
-        // TODO(jat): error handling
-        Debug::log(Debug::Error) << "Unexpected message type " << type
-            << ", expectReturn=" << expectReturn << Debug::flush;
-        disconnectFromHost();
-        return 0;
-    }
-  }
-}
-
-bool HostChannel::readValue(gwt::Value& valueRef) {
-  char typeBuf;
-  if (!readByte(typeBuf)) return false;
-  gwt::Value::ValueType type = gwt::Value::ValueType(typeBuf);
-  switch (type) {
-    case gwt::Value::NULL_TYPE:
-      valueRef.setNull();
-      return true;
-    case gwt::Value::UNDEFINED:
-      valueRef.setUndefined();
-      return true;
-    case gwt::Value::BOOLEAN:
-      {
-        char val;
-        if (!readByte(val)) return false;
-        valueRef.setBoolean(val != 0);
-      }
-      return true;
-    case gwt::Value::BYTE:
-      {
-        char val;
-        if (!readByte(val)) return false;
-        valueRef.setByte(val);
-      }
-      return true;
-    case gwt::Value::CHAR:
-      {
-        short val;
-        if (!readShort(val)) return false;
-        valueRef.setChar(val);
-      }
-      return true;
-    case gwt::Value::SHORT:
-      {
-        short val;
-        if (!readShort(val)) return false;
-        valueRef.setShort(val);
-      }
-      return true;
-    case gwt::Value::STRING:
-      {
-        std::string val;
-        if (!readString(val)) return false;
-        valueRef.setString(val);
-      }
-      return true;
-    case gwt::Value::INT:
-      {
-        int val;
-        if (!readInt(val)) return false;
-        valueRef.setInt(val);
-      }
-      return true;
-    case gwt::Value::LONG:
-      {
-        int64_t val;
-        if (!readLong(val)) return false;
-        valueRef.setLong(val);
-      }
-      return true;
-    case gwt::Value::DOUBLE:
-      {
-        double val;
-        if (!readDouble(val)) return false;
-        valueRef.setDouble(val);
-      }
-      return true;
-    case gwt::Value::JAVA_OBJECT:
-      {
-        int objId;
-        if (!readInt(objId)) return false;
-        valueRef.setJavaObject(objId);
-      }
-      return true;
-    case gwt::Value::JS_OBJECT:
-      {
-        int val;
-        if (!readInt(val)) return false;
-        valueRef.setJsObjectId(val);
-      }
-      return true;
-    default:
-      Debug::log(Debug::Error) << "Unhandled value type sent from server: " << type << Debug::flush;
-      break;
-  }
-  return false;
-}
-
-bool HostChannel::sendValue(const gwt::Value& value) {
-  gwt::Value::ValueType type = value.getType();
-  if (!sendByte(type)) return false;
-  switch (type) {
-    case gwt::Value::NULL_TYPE:
-    case gwt::Value::UNDEFINED:
-      // Null and Undefined only have the tag byte, no data
-      return true;
-    case gwt::Value::BOOLEAN:
-      return sendByte(value.getBoolean() ? 1 : 0);
-    case gwt::Value::BYTE:
-      return sendByte(value.getByte());
-    case gwt::Value::CHAR:
-      return sendShort(short(value.getChar()));
-    case gwt::Value::SHORT:
-      return sendShort(value.getShort());
-    case gwt::Value::INT:
-      return sendInt(value.getInt());
-    case gwt::Value::LONG:
-      return sendLong(value.getLong());
-    case gwt::Value::STRING:
-      return sendString(value.getString());
-    case gwt::Value::DOUBLE:
-      return sendDouble(value.getDouble());
-    case gwt::Value::FLOAT:
-      return sendFloat(value.getFloat());
-    case gwt::Value::JS_OBJECT:
-      return sendInt(value.getJsObjectId());
-    case gwt::Value::JAVA_OBJECT:
-      return sendInt(value.getJavaObjectId());
-    default:
-      Debug::log(Debug::Error) << "Unhandled value type sent to server: " << type << Debug::flush;
-      break;
-  }
-  return false;
-}
diff --git a/plugins/common/HostChannel.h b/plugins/common/HostChannel.h
deleted file mode 100644
index e8a53ec..0000000
--- a/plugins/common/HostChannel.h
+++ /dev/null
@@ -1,159 +0,0 @@
-#ifndef __H_HostChannel
-#define __H_HostChannel
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include "Debug.h"
-
-// Sun's cstdio doesn't define a bunch of stuff
-#include <stdio.h>
-#include <string>
-
-#include "ByteOrder.h"
-#include "Socket.h"
-#include "Platform.h"
-#include "Message.h"
-#include "ReturnMessage.h"
-#include "Value.h"
-#include "SessionHandler.h"
-
-class HostChannel {
-  Socket sock;
-  static ByteOrder byteOrder;
-  SessionHandler* handler;
-
-public:
-  ~HostChannel() {
-    if (isConnected()) {
-      disconnectFromHost();
-    }
-    Debug::log(Debug::Debugging) << "HostChannel destroyed" << Debug::flush;
-  }
-
-  // Connects to the OOPHM server (socket operations only).
-  bool connectToHost(const char* host, unsigned port);
-
-  // Negotiates protocol version and transport selection.
-  bool init(SessionHandler* handler, int minVersion, int maxVersion,
-      const std::string& hostedHtmlVersion);
-
-  bool disconnectFromHost();
-
-  bool isConnected() const {
-    return sock.isConnected();
-  }
-
-  bool readBytes(void* data, size_t dataLen) {
-    char* ptr = static_cast<char*>(data);
-    while(dataLen > 0) {
-      if (!readByte(*ptr++)) {
-        return false;
-      }
-      --dataLen;
-    }
-    return true;
-  }
-
-  bool sendBytes(const void* data, size_t dataLen) {
-    const char* ptr = static_cast<const char*>(data);
-    while(dataLen > 0) {
-      if (!sendByte(*ptr++)) {
-        return false;
-      }
-      --dataLen;
-    }
-    return true;
-  }
-
-  // TODO: don't pass out-params by reference as it makes the call site misleading
-  bool readInt(int32_t& data);
-  bool sendInt(const int32_t data);
-
-  bool readShort(short& data);
-  bool sendShort(const short data);
-
-  bool readLong(int64_t& data);
-  bool sendLong(const int64_t data);
-
-  bool readFloat(float& data);
-  bool sendFloat(const float data);
-
-  bool readDouble(double& doubleRef);
-  bool sendDouble(const double data);
-
-  bool readByte(char& data) {
-    if (!isConnected()) {
-      handler->disconnectDetected();
-      return false;
-    }
-    int c = sock.readByte();
-    if (c < 0) {
-      handler->disconnectDetected();
-      return false;
-    }
-    data = static_cast<char>(c);
-    return true;
-  }
-
-  bool sendByte(const char data) {
-    if (!isConnected()) {
-      handler->disconnectDetected();
-      return false;
-    }
-    if (!sock.writeByte(data)) {
-      handler->disconnectDetected();
-      return false;
-    }
-    return true;
-  }
-
-  bool readStringLength(uint32_t& data);
-  bool readStringBytes(char* data, const uint32_t len);
-  bool readString(std::string& strRef);
-  bool sendString(const char* data, const uint32_t len) {
-    return sendInt(len) && sendBytes(data, len);
-  }
-
-  bool sendString(const std::string& str) {
-    return sendString(str.c_str(), static_cast<uint32_t>(str.length()));
-  }
-
-  bool readValue(gwt::Value& valueRef);
-  bool sendValue(const gwt::Value& value);
-
-  ReturnMessage* reactToMessages(SessionHandler* handler, bool expectReturn);
-
-  bool reactToMessages(SessionHandler* handler) {
-    return !reactToMessages(handler, false);
-  }
-
-  bool flush() {
-    if (!sock.isConnected()) {
-      handler->disconnectDetected();
-      return false;
-    }
-    if (!sock.flush()) {
-      handler->disconnectDetected();
-      return false;
-    }
-    return true;
-  }
-
-  ReturnMessage* reactToMessagesWhileWaitingForReturn(SessionHandler* handler) {
-    return reactToMessages(handler, true);
-  }
-};
-#endif
diff --git a/plugins/common/InvokeMessage.cpp b/plugins/common/InvokeMessage.cpp
deleted file mode 100644
index 9207f81..0000000
--- a/plugins/common/InvokeMessage.cpp
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#include "InvokeMessage.h"
-#include "HostChannel.h"
-#include "scoped_ptr/scoped_ptr.h"
-
-InvokeMessage::~InvokeMessage() {
-  delete[] args;
-}
-
-char InvokeMessage::getType() const {
-  return TYPE;
-}
-
-/**
- * Receive an Invoke message from the channel (note that the message
- * type has already been read).  Caller is responsible for destroying
- * returned message.  Returns null on error.
- */
-InvokeMessage* InvokeMessage::receive(HostChannel& channel) {
-  std::string methodName;
-  if (!channel.readString(methodName)) {
-    // TODO(jat): error handling
-    printf("Failed to read method name\n");
-    return 0;
-  }
-  gwt::Value thisRef;
-  if (!channel.readValue(thisRef)) {
-    // TODO(jat): error handling
-    printf("Failed to read thisRef\n");
-    return 0;
-  }
-  int numArgs;
-  if (!channel.readInt(numArgs)) {
-    // TODO(jat): error handling
-    printf("Failed to read #args\n");
-    return 0;
-  }
-  scoped_array<gwt::Value> args(new gwt::Value[numArgs]);
-  for (int i = 0; i < numArgs; ++i) {
-    if (!channel.readValue(args[i])) {
-      // TODO(jat): error handling
-      printf("Failed to read arg[%d]\n", i);
-      return 0;
-    }
-  }
-  return new InvokeMessage(thisRef, methodName, numArgs, args.release());
-}
-
-/**
- * Request the server invoke a method on an object and return the result.
- * 
- * Note that the method to be invoked is sent as an integer (a dispatch id) to the server.
- */
-bool InvokeMessage::send(HostChannel& channel, const gwt::Value& thisRef, int methodDispatchId,
-    int numArgs, const gwt::Value* args) {
-  if (!channel.sendByte(TYPE)) return false;
-  if (!channel.sendInt(methodDispatchId)) return false;
-  if (!channel.sendValue(thisRef)) return false;
-  if (!channel.sendInt(numArgs)) return false;
-  for (int i = 0; i < numArgs; ++i) {
-    if (!channel.sendValue(args[i])) return false;
-  }
-  return true;
-}
diff --git a/plugins/common/InvokeMessage.h b/plugins/common/InvokeMessage.h
deleted file mode 100644
index 0296d75..0000000
--- a/plugins/common/InvokeMessage.h
+++ /dev/null
@@ -1,67 +0,0 @@
-#ifndef __INVOKEMESSAGE_H
-#define __INVOKEMESSAGE_H
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include <string>
-#include "Message.h"
-#include "BrowserChannel.h"
-#include "Value.h"
-
-class HostChannel;
-
-/**
- * Class representing an InvokeMessage received from the server, and a way
- * to send an invoke message to the server.
- *
- * Note that the wire protocol is different in the two directions, as the
- * server sends a string for the method name and the client send an integer
- * dispatchID.
- */
-class InvokeMessage : public Message {
-public:
-  static const char TYPE = MESSAGE_TYPE_INVOKE;
-  static const int TOSTRING_DISP_ID = 0;
-private:
-  gwt::Value thisRef;
-  std::string methodName;
-  int methodDispatchId;
-  int numArgs;
-  const gwt::Value* args;
-
-protected:
-  /**
-   * @param args array of arguments -- InvokeMessage takes ownership and will
-   *     destroy when it is destroyed.
-   */
-  InvokeMessage(const gwt::Value& thisRef, const std::string& methodName,
-      int numArgs, const gwt::Value* args) : thisRef(thisRef), methodName(methodName),
-      numArgs(numArgs), args(args) {}
-
-public:
-  ~InvokeMessage();
-  virtual char getType() const;
-
-  gwt::Value getThis() const { return thisRef; }
-  const std::string& getMethodName() const { return methodName; }
-  int getNumArgs() const { return numArgs; }
-  const gwt::Value* const getArgs() const { return args; }
-
-  static InvokeMessage* receive(HostChannel& channel);
-  static bool send(HostChannel& channel, const gwt::Value& thisRef, int methodDispatchId,
-      int numArgs, const gwt::Value* args);
-};
-#endif
diff --git a/plugins/common/InvokeSpecialMessage.cpp b/plugins/common/InvokeSpecialMessage.cpp
deleted file mode 100644
index 0a9f418..0000000
--- a/plugins/common/InvokeSpecialMessage.cpp
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#include "InvokeSpecialMessage.h"
-#include "HostChannel.h"
-#include "SessionHandler.h"
-#include "scoped_ptr/scoped_ptr.h"
-
-InvokeSpecialMessage::~InvokeSpecialMessage() {
-  delete[] args;
-}
-
-char InvokeSpecialMessage::getType() const {
-  return TYPE;
-}
-
-/**
- * Receive an InvokeSpecial message from the channel (note that the message
- * type has already been read).  Caller is responsible for destroying
- * returned message.  Returns null on error.
- */
-InvokeSpecialMessage* InvokeSpecialMessage::receive(HostChannel& channel) {
-  char dispatchId;
-  if (!channel.readByte(dispatchId)) {
-    // TODO(jat): error handling
-    printf("Failed to read method name\n");
-    return 0;
-  }
-  int numArgs;
-  if (!channel.readInt(numArgs)) {
-    // TODO(jat): error handling
-    printf("Failed to read #args\n");
-    return 0;
-  }
-  scoped_array<gwt::Value> args(new gwt::Value[numArgs]);
-  for (int i = 0; i < numArgs; ++i) {
-    if (!channel.readValue(args[i])) {
-      // TODO(jat): error handling
-      printf("Failed to read arg[%d]\n", i);
-      return 0;
-    }
-  }
-  
-  SessionHandler::SpecialMethodId id =
-    static_cast<SessionHandler::SpecialMethodId>(dispatchId);
-  return new InvokeSpecialMessage(id, numArgs, args.release());
-}
-
-/**
- * Request the server perform a special method and return the result.
- */
-bool InvokeSpecialMessage::send(HostChannel& channel, int dispatchId,
-    int numArgs, const gwt::Value* args) {
-  if (!channel.sendByte(TYPE)) return false;
-  if (!channel.sendByte(dispatchId)) return false;
-  if (!channel.sendInt(numArgs)) return false;
-  for (int i = 0; i < numArgs; ++i) {
-    if (!channel.sendValue(args[i])) return false;
-  }
-  return true;
-}
diff --git a/plugins/common/InvokeSpecialMessage.h b/plugins/common/InvokeSpecialMessage.h
deleted file mode 100644
index 84c90ff..0000000
--- a/plugins/common/InvokeSpecialMessage.h
+++ /dev/null
@@ -1,59 +0,0 @@
-#ifndef __INVOKESPECIALMESSAGE_H
-#define __INVOKESPECIALMESSAGE_H
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include <string>
-#include "Message.h"
-#include "BrowserChannel.h"
-#include "SessionHandler.h"
-#include "Value.h"
-
-class HostChannel;
-
-/**
- * Class representing an InvokeSpecial message received from the server, and a
- * way to send an invoke message to the server.
- */
-class InvokeSpecialMessage : public Message {
-public:
-  static const char TYPE = MESSAGE_TYPE_INVOKESPECIAL;
-private:
-  SessionHandler::SpecialMethodId dispatchId;
-  int numArgs;
-  const gwt::Value* args;
-
-protected:
-  /**
-   * @param args array of arguments -- InvokeMessage takes ownership and will
-   *     destroy when it is destroyed.
-   */
-  InvokeSpecialMessage(SessionHandler::SpecialMethodId dispatchId, int numArgs,
-      const gwt::Value* args) : dispatchId(dispatchId), numArgs(numArgs), args(args) {}
-
-public:
-  ~InvokeSpecialMessage();
-  virtual char getType() const;
-
-  SessionHandler::SpecialMethodId getDispatchId() const { return dispatchId; }
-  int getNumArgs() const { return numArgs; }
-  const gwt::Value* const getArgs() const { return args; }
-
-  static InvokeSpecialMessage* receive(HostChannel& channel);
-  static bool send(HostChannel& channel, int dispatchId, int numArgs,
-      const gwt::Value* args);
-};
-#endif
diff --git a/plugins/common/LoadJsniMessage.cpp b/plugins/common/LoadJsniMessage.cpp
deleted file mode 100644
index db8b943..0000000
--- a/plugins/common/LoadJsniMessage.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#include "LoadJsniMessage.h"
-
-LoadJsniMessage* LoadJsniMessage::receive(HostChannel& channel) {
-  std::string js;
-  if (!channel.readString(js)) {
-    // TODO(jat): error handling
-    return 0;
-  }
-  return new LoadJsniMessage(js);
-}
diff --git a/plugins/common/LoadJsniMessage.h b/plugins/common/LoadJsniMessage.h
deleted file mode 100644
index 5b1f8d9..0000000
--- a/plugins/common/LoadJsniMessage.h
+++ /dev/null
@@ -1,43 +0,0 @@
-#ifndef __H_LoadJsniMessage
-#define __H_LoadJsniMessage
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#include <string>
-#include "Message.h"
-#include "BrowserChannel.h"
-#include "HostChannel.h"
-
-class LoadJsniMessage : public Message {
-public:  
-  static const char TYPE = MESSAGE_TYPE_LOADJSNI;
-private:
-  const std::string js;
-  
-  LoadJsniMessage(const std::string& js) : js(js) {}
-  
-public:  
-  virtual char getType() const {
-    return TYPE;
-  }
-  
-  std::string getJs() const {
-    return js;
-  }
-
-  static LoadJsniMessage* receive(HostChannel& channel);
-};
-#endif
diff --git a/plugins/common/LoadModuleMessage.cpp b/plugins/common/LoadModuleMessage.cpp
deleted file mode 100644
index 525383b..0000000
--- a/plugins/common/LoadModuleMessage.cpp
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include "Debug.h"
-
-#include <cstring>
-#include <string>
-
-#include "LoadModuleMessage.h"
-#include "scoped_ptr/scoped_ptr.h"
-
-char LoadModuleMessage::getType() const {
-  return LoadModuleMessage::TYPE;
-}
-
-bool LoadModuleMessage::send(HostChannel& channel, const std::string& url,
-    const std::string& tabKey, const std::string& sessionKey,
-    const std::string& moduleName, const std::string& userAgent,
-    SessionHandler* handler) {
-  Debug::log(Debug::Debugging) << "LoadModule(url=\"" << url << "\", tabKey=\""
-      << "\", sessionKey=\"" << sessionKey << "\", module=\"" << moduleName
-      << "\")" << Debug::flush;
-  if (!channel.sendByte(TYPE) || !channel.sendString(url)
-      || !channel.sendString(tabKey)
-      || !channel.sendString(sessionKey)
-      || !channel.sendString(moduleName)
-      || !channel.sendString(userAgent)) {
-    return false;
-  }
-  scoped_ptr<ReturnMessage> ret(channel.reactToMessagesWhileWaitingForReturn(
-      handler));
-  if (!ret.get()) {
-    return false;
-  }
-  return !ret.get()->isException();
-}
diff --git a/plugins/common/LoadModuleMessage.h b/plugins/common/LoadModuleMessage.h
deleted file mode 100644
index 4a331cb..0000000
--- a/plugins/common/LoadModuleMessage.h
+++ /dev/null
@@ -1,62 +0,0 @@
-#ifndef __LOADMODULEMESSAGE_H
-#define __LOADMODULEMESSAGE_H
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include <string>
-
-#include "Message.h"
-#include "BrowserChannel.h"
-#include "HostChannel.h"
-#include "SessionHandler.h"
-
-class HostChannel;
-
-/**
- * Class representing a LoadModule message sent to the server.
- *
- * This message requests that the server load the requested module.  A return
- * message is not sent until the module is unloaded or fails to load.
- */
-
-class LoadModuleMessage : public Message {
-  static const char TYPE = MESSAGE_TYPE_LOAD_MODULE;
-
-public:
-  LoadModuleMessage(const std::string& url, const std::string& tabKey,
-      const std::string& sessionKey, const std::string& moduleName,
-      const std::string& userAgent) : url(url), tabKey(tabKey),
-      sessionKey(sessionKey), moduleName(moduleName), userAgent(userAgent) { }
-
-  const std::string& getUrl() const { return url; }
-  const std::string& getTabKey() const { return tabKey; }
-  const std::string& getSessionKey() const { return sessionKey; }
-  const std::string& getModuleName() const { return moduleName; }
-  const std::string& getUserAgent() const { return userAgent; }
-  virtual char getType() const;
-
-  static bool send(HostChannel& channel, const std::string& url,
-      const std::string& tabKey, const std::string& sessionKey,
-      const std::string& moduleName, const std::string& userAgent,
-      SessionHandler* handler);
-private:
-  std::string url;
-  std::string tabKey;
-  std::string sessionKey;
-  std::string moduleName;
-  std::string userAgent;
-};
-#endif
diff --git a/plugins/common/Makefile b/plugins/common/Makefile
deleted file mode 100644
index 4003274..0000000
--- a/plugins/common/Makefile
+++ /dev/null
@@ -1,124 +0,0 @@
-# Copyright 2009 Google Inc.
-# 
-# Licensed 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.
-
-include ../config.mk
-
-HDRS= HostChannel.h InvokeMessage.h LoadModuleMessage.h Message.h \
-      ReturnMessage.h Value.h BrowserChannel.h Debug.h DebugLevel.h \
-      SessionHandler.h ServerMethods.h Socket.h AllowedConnections.h \
-      LoadJsniMessage.h InvokeSpecialMessage.h FreeValueMessage.h \
-      ByteOrder.h FatalErrorMessage.h CheckVersionsMessage.h \
-      ChooseTransportMessage.h SwitchTransportMessage.h \
-      ProtocolVersionMessage.h
-
-SRCS=	HostChannel.cpp LoadModuleMessage.cpp InvokeMessage.cpp \
-	ReturnMessage.cpp ServerMethods.cpp Debug.cpp Socket.cpp \
-	AllowedConnections.cpp LoadJsniMessage.cpp InvokeSpecialMessage.cpp \
-	FreeValueMessage.cpp FatalErrorMessage.cpp CheckVersionsMessage.cpp \
-      ChooseTransportMessage.cpp SwitchTransportMessage.cpp \
-      ProtocolVersionMessage.cpp
-
-LIBCOMMON= libcommon$(FLAG32BIT).a
-OBJDIR= obj$(FLAG32BIT)
-OBJS= $(patsubst %.cpp,$(OBJDIR)/%.o,$(SRCS))
-
-all:: $(OBJDIR) $(LIBCOMMON)
-
-$(OBJDIR):
-	-mkdir $@
-
-$(LIBCOMMON): $(OBJS)
-	$(AR) $(ARFLAGS) $@ $(OBJS)
-
-$(OBJDIR)/%.o: %.cpp
-	$(CXX) $(BASECFLAGS) $(ALLARCHCFLAGS) -c $< -o $@
-
-$(OBJDIR)/%.o: DebugLevel.h
-
-.PHONY: clean depend testdebug
-
-testdebug:
-	(cd testing; CXX=$(CXX) CXXFLAGS="$(CFLAGS) -m32" ./testdebug)
-	(cd testing; CXX=$(CXX) CXXFLAGS="$(CFLAGS) -m64" ./testdebug)
-
-clean:
-	rm -rf obj32 obj64 libcommon32.a libcommon64.a
-
-depend:
-	g++ -MM $(CFLAGS) $(SRCS) >>Makefile
-#	makedepend -- $(CFLAGS) -- $(SRCS)
-
-# DO NOT DELETE
-HostChannel.o: HostChannel.cpp Debug.h Platform.h DebugLevel.h \
-  ByteOrder.h CheckVersionsMessage.h Message.h BrowserChannel.h Value.h \
-  ProtocolVersionMessage.h ChooseTransportMessage.h \
-  SwitchTransportMessage.h FreeValueMessage.h HostChannel.h Socket.h \
-  AllowedConnections.h ReturnMessage.h SessionHandler.h LoadJsniMessage.h \
-  InvokeMessage.h InvokeSpecialMessage.h QuitMessage.h \
-  scoped_ptr/scoped_ptr.h
-LoadModuleMessage.o: LoadModuleMessage.cpp Debug.h Platform.h \
-  DebugLevel.h LoadModuleMessage.h Message.h BrowserChannel.h \
-  HostChannel.h ByteOrder.h Socket.h AllowedConnections.h ReturnMessage.h \
-  Value.h SessionHandler.h scoped_ptr/scoped_ptr.h
-InvokeMessage.o: InvokeMessage.cpp InvokeMessage.h Message.h \
-  BrowserChannel.h Value.h Debug.h Platform.h DebugLevel.h HostChannel.h \
-  ByteOrder.h Socket.h AllowedConnections.h ReturnMessage.h \
-  SessionHandler.h scoped_ptr/scoped_ptr.h
-ReturnMessage.o: ReturnMessage.cpp ReturnMessage.h Message.h \
-  BrowserChannel.h Value.h Debug.h Platform.h DebugLevel.h HostChannel.h \
-  ByteOrder.h Socket.h AllowedConnections.h SessionHandler.h
-ServerMethods.o: ServerMethods.cpp Debug.h Platform.h DebugLevel.h \
-  FreeValueMessage.h Message.h BrowserChannel.h HostChannel.h ByteOrder.h \
-  Socket.h AllowedConnections.h ReturnMessage.h Value.h SessionHandler.h \
-  InvokeMessage.h InvokeSpecialMessage.h ServerMethods.h \
-  scoped_ptr/scoped_ptr.h
-Debug.o: Debug.cpp Debug.h Platform.h DebugLevel.h
-Socket.o: Socket.cpp Platform.h Socket.h Debug.h DebugLevel.h
-AllowedConnections.o: AllowedConnections.cpp Debug.h Platform.h \
-  DebugLevel.h AllowedConnections.h
-LoadJsniMessage.o: LoadJsniMessage.cpp LoadJsniMessage.h Message.h \
-  BrowserChannel.h HostChannel.h Debug.h Platform.h DebugLevel.h \
-  ByteOrder.h Socket.h AllowedConnections.h ReturnMessage.h Value.h \
-  SessionHandler.h
-InvokeSpecialMessage.o: InvokeSpecialMessage.cpp InvokeSpecialMessage.h \
-  Message.h BrowserChannel.h SessionHandler.h Value.h Debug.h Platform.h \
-  DebugLevel.h HostChannel.h ByteOrder.h Socket.h AllowedConnections.h \
-  ReturnMessage.h scoped_ptr/scoped_ptr.h
-FreeValueMessage.o: FreeValueMessage.cpp FreeValueMessage.h Message.h \
-  BrowserChannel.h HostChannel.h Debug.h Platform.h DebugLevel.h \
-  ByteOrder.h Socket.h AllowedConnections.h ReturnMessage.h Value.h \
-  SessionHandler.h scoped_ptr/scoped_ptr.h
-FatalErrorMessage.o: FatalErrorMessage.cpp FatalErrorMessage.h Message.h \
-  BrowserChannel.h Value.h Debug.h Platform.h DebugLevel.h HostChannel.h \
-  ByteOrder.h Socket.h AllowedConnections.h ReturnMessage.h \
-  SessionHandler.h scoped_ptr/scoped_ptr.h
-CheckVersionsMessage.o: CheckVersionsMessage.cpp CheckVersionsMessage.h \
-  Message.h BrowserChannel.h Value.h Debug.h Platform.h DebugLevel.h \
-  HostChannel.h ByteOrder.h Socket.h AllowedConnections.h ReturnMessage.h \
-  SessionHandler.h scoped_ptr/scoped_ptr.h
-ChooseTransportMessage.o: ChooseTransportMessage.cpp \
-  ChooseTransportMessage.h Message.h BrowserChannel.h Value.h Debug.h \
-  Platform.h DebugLevel.h HostChannel.h ByteOrder.h Socket.h \
-  AllowedConnections.h ReturnMessage.h SessionHandler.h \
-  scoped_ptr/scoped_ptr.h
-SwitchTransportMessage.o: SwitchTransportMessage.cpp \
-  SwitchTransportMessage.h Message.h BrowserChannel.h Value.h Debug.h \
-  Platform.h DebugLevel.h HostChannel.h ByteOrder.h Socket.h \
-  AllowedConnections.h ReturnMessage.h SessionHandler.h \
-  scoped_ptr/scoped_ptr.h
-ProtocolVersionMessage.o: ProtocolVersionMessage.cpp \
-  ProtocolVersionMessage.h Message.h BrowserChannel.h Value.h Debug.h \
-  Platform.h DebugLevel.h HostChannel.h ByteOrder.h Socket.h \
-  AllowedConnections.h ReturnMessage.h SessionHandler.h \
-  scoped_ptr/scoped_ptr.h
diff --git a/plugins/common/Makefile.sun b/plugins/common/Makefile.sun
deleted file mode 100644
index 2043187..0000000
--- a/plugins/common/Makefile.sun
+++ /dev/null
@@ -1,115 +0,0 @@
-# Set to classpath value to get GWT classes from
-#GWTDEV=../build/staging/gwt-linux-0.0.0/gwt-dev-linux.jar
-GWTDEV=../eclipse/dev/linux/bin
-
-INC=-I..
-#CFLAGS=-fast -g0 -Kpic $(INC) -Bdynamic -noex
-# SunC appears to miscompile Socket::writeByte by not incrementing the
-# buffer pointer, so no optimization for now
-#CFLAGS=-g -Kpic $(INC) -Bdynamic -noex
-CFLAGS=-g0 -Kpic -noex -xO1 -xlibmil -xlibmopt -features=tmplife -xbuiltin=%all -mt $(INC)
-CXXFLAGS=$(CFLAGS)
-CXX=CC
-
-HDRS= HostChannel.h InvokeMessage.h LoadModuleMessage.h Message.h \
-      ReturnMessage.h Value.h BrowserChannel.h Debug.h DebugLevel.h \
-      SessionHandler.h ServerMethods.h Socket.h AllowedConnections.h \
-      LoadJsniMessage.h InvokeSpecialMessage.h FreeValueMessage.h
-
-OBJS=	HostChannel.o LoadModuleMessage.o InvokeMessage.o \
-	ReturnMessage.o ServerMethods.o Debug.o Socket.o \
-	AllowedConnections.o LoadJsniMessage.o InvokeSpecialMessage.o \
-	FreeValueMessage.o
-
-SRCS=	HostChannel.cpp LoadModuleMessage.cpp InvokeMessage.cpp \
-	ReturnMessage.cpp ServerMethods.cpp Debug.cpp Socket.cpp \
-	AllowedConnections.cpp LoadJsniMessage.cpp InvokeSpecialMessage.cpp \
-	FreeValueMessage.cpp
-
-OBJ32= $(patsubst %.cpp,obj32/%.o,$(SRCS))
-OBJ64= $(patsubst %.cpp,obj64/%.o,$(SRCS))
-
-all:: libcommon32.a libcommon64.a
-
-libcommon32.a: $(OBJ32) obj32.dir
-	ar -rv $@ $(OBJ32)
-
-libcommon64.a: $(OBJ64) obj64.dir
-	ar -rv $@ $(OBJ64)
-
-obj32.dir:
-	-mkdir obj32
-	touch obj32.dir
-
-obj64.dir:
-	-mkdir obj64
-	touch obj64.dir
-
-obj32/%.o: %.cpp obj32.dir
-	$(CXX) $(CXXFLAGS) -m32 -c $< -o $@
-
-obj64/%.o: %.cpp obj64.dir
-	$(CXX) $(CXXFLAGS) -m64 -c $< -o $@
-
-.PHONY: all clean depend
-
-clean:
-	-rm $(OBJ32) $(OBJ64) libcommon32.a libcommon64.a
-
-depend:
-	$(CXX) -xMMF $(CFLAGS) $(SRCS) >>Makefile.sun
-#	makedepend -- $(CFLAGS) -- $(SRCS)
-
-# DO NOT DELETE
-obj32/HostChannel.o obj64/HostChannel.o: Makefile.sun \
-  HostChannel.cpp HostChannel.h Platform.h Message.h \
-  ReturnMessage.h BrowserChannel.h Value.h SessionHandler.h \
-  InvokeMessage.h QuitMessage.h scoped_ptr/scoped_ptr.h
-obj32/LoadModuleMessage.o obj64/LoadModuleMessage.o: Makefile.sun \
-  LoadModuleMessage.cpp LoadModuleMessage.h Message.h \
-  BrowserChannel.h HostChannel.h Platform.h ReturnMessage.h Value.h \
-  SessionHandler.h scoped_ptr/scoped_ptr.h
-obj32/InvokeMessage.o obj64/InvokeMessage.o: Makefile.sun \
-  InvokeMessage.cpp InvokeMessage.h Message.h \
-  BrowserChannel.h Value.h HostChannel.h Platform.h ReturnMessage.h \
-  SessionHandler.h
-obj32/ReturnMessage.o obj64/ReturnMessage.o: Makefile.sun \
-  ReturnMessage.cpp ReturnMessage.h Message.h \
-  BrowserChannel.h Value.h HostChannel.h Platform.h SessionHandler.h
-obj32/ServerMethods.o obj64/ServerMethods.o: Makefile.sun \
-  ServerMethods.cpp ServerMethods.h Value.h \
-  BrowserChannel.h HostChannel.h Platform.h Message.h ReturnMessage.h \
-  SessionHandler.h InvokeMessage.h scoped_ptr/scoped_ptr.h
-obj32/HostChannel.o obj64/HostChannel.o: Makefile.sun \
-  HostChannel.cpp HostChannel.h Platform.h Message.h \
-  ReturnMessage.h BrowserChannel.h Value.h SessionHandler.h \
-  InvokeMessage.h QuitMessage.h scoped_ptr/scoped_ptr.h
-obj32/LoadModuleMessage.o obj64/LoadModuleMessage.o: Makefile.sun \
-  LoadModuleMessage.cpp LoadModuleMessage.h Message.h \
-  BrowserChannel.h HostChannel.h Platform.h ReturnMessage.h Value.h \
-  SessionHandler.h scoped_ptr/scoped_ptr.h
-obj32/InvokeMessage.o obj64/InvokeMessage.o: Makefile.sun \
-  InvokeMessage.cpp InvokeMessage.h Message.h \
-  BrowserChannel.h Value.h HostChannel.h Platform.h ReturnMessage.h \
-  SessionHandler.h
-obj32/InvokeSpecialMessage.o obj64/InvokeSpecialMessage.o: Makefile.sun \
-  InvokeSpecialMessage.cpp InvokeSpecialMessage.h Message.h \
-  BrowserChannel.h Value.h HostChannel.h Platform.h ReturnMessage.h \
-  SessionHandler.h
-obj32/FreeValueMesssage.o obj64/FreeValueMesssage.o: Makefile.sun \
-  FreeValueMesssage.cpp FreeValueMesssage.h Message.h \
-  BrowserChannel.h Value.h HostChannel.h Platform.h ReturnMessage.h \
-  SessionHandler.h
-obj32/ReturnMessage.o obj64/ReturnMessage.o: Makefile.sun \
-  ReturnMessage.cpp ReturnMessage.h Message.h \
-  BrowserChannel.h Value.h HostChannel.h Platform.h SessionHandler.h
-obj32/ServerMethods.o obj64/ServerMethods.o: Makefile.sun \
-  ServerMethods.cpp ServerMethods.h Value.h \
-  BrowserChannel.h HostChannel.h Platform.h Message.h ReturnMessage.h \
-  SessionHandler.h InvokeMessage.h scoped_ptr/scoped_ptr.h
-obj32/Debug.o obj64/Debug.o: Makefile.sun \
-  Debug.cpp Debug.h DebugLevel.h
-obj32/Socket.o obj64/Socket.o: Makefile.sun \
-  Socket.cpp Socket.h Debug.h DebugLevel.h
-obj32/AllowedConnections.o obj64/AllowedConnections.o: Makefile.sun \
-  AllowedConnections.cpp AllowedConnections.h Debug.h DebugLevel.h
diff --git a/plugins/common/Message.h b/plugins/common/Message.h
deleted file mode 100644
index a244e0b..0000000
--- a/plugins/common/Message.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef __MESSAGE_H
-#define __MESSAGE_H
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-class Message {
-public:
-  virtual char getType() const = 0;
-  virtual bool isAsynchronous() const {
-    return false;
-  }
-  virtual ~Message() {}
-};
-
-#endif
diff --git a/plugins/common/Platform.h b/plugins/common/Platform.h
deleted file mode 100644
index bbc0334..0000000
--- a/plugins/common/Platform.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#ifndef _H_Platform
-#define _H_Platform
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-// Platform-specific hacks to enable more shared code elsewhere
-#ifdef _WINDOWS
-typedef __int32 int32_t;
-typedef unsigned __int32 uint32_t; 
-typedef __int16 int16_t;
-typedef unsigned __int16 uint16_t;
-typedef __int64 int64_t;
-typedef unsigned __int64 uint64_t;
-typedef long ssize_t;
-
-#define snprintf sprintf_s
-#define SOCKETTYPE SOCKET
-// Bogus conversion from size_t -> unsigned int warnings.
-#pragma warning(disable:4267)
-#else
-#define SOCKETTYPE int
-#endif
-
-// Set the float byte-order if we know it -- see ByteOrder.h FloatByteOrder
-#if defined(i386) || defined(i586) || defined(i686) || defined(_x86)
-#define PLATFORM_FLOAT_ENDIANESS FLOAT_LITTLE_ENDIAN
-#endif
-
-#if defined(__sparc)
-#define PLATFORM_FLOAT_ENDIANESS FLOAT_BIG_ENDIAN
-#endif
-
-#endif
diff --git a/plugins/common/ProtocolVersionMessage.cpp b/plugins/common/ProtocolVersionMessage.cpp
deleted file mode 100644
index e2db3f9..0000000
--- a/plugins/common/ProtocolVersionMessage.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include "ProtocolVersionMessage.h"
-#include "HostChannel.h"
-#include "scoped_ptr/scoped_ptr.h"
-
-ProtocolVersionMessage::~ProtocolVersionMessage() {
-}
-
-char ProtocolVersionMessage::getType() const {
-  return TYPE;
-}
-
-/**
- * Receive a ProtocolVersion message from the server.
- */
-ProtocolVersionMessage* ProtocolVersionMessage::receive(HostChannel& channel) {
-  int version;
-  if (!channel.readInt(version)) {
-    // TODO(jat): error handling
-    printf("Failed to read version\n");
-    return 0;
-  }
-  return new ProtocolVersionMessage(version);
-}
-
-/**
- * Send a ProtocolVersion message on the channel.
- */
-bool ProtocolVersionMessage::send(HostChannel& channel, int version) {
-  if (!channel.sendByte(TYPE)) return false;
-  if (!channel.sendInt(version)) return false;
-  return true;
-}
diff --git a/plugins/common/ProtocolVersionMessage.h b/plugins/common/ProtocolVersionMessage.h
deleted file mode 100644
index db6f770..0000000
--- a/plugins/common/ProtocolVersionMessage.h
+++ /dev/null
@@ -1,54 +0,0 @@
-#ifndef __PROTOCOLVERSIONMESSAGE_H
-#define __PROTOCOLVERSIONMESSAGE_H
-/*
- * Copyright 2009 Google Inc.
- *
- * Licensed 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.
- */
-
-#include <string>
-#include "Message.h"
-#include "BrowserChannel.h"
-#include "Value.h"
-
-class HostChannel;
-
-/**
- * Class representing a ProtocolVersion message received from the server, and a
- * way to send one.
- *
- * This message indicates which version of the protocol the server has chosen
- * for the remainder of the communication.
- */
-class ProtocolVersionMessage : public Message {
-public:
-  static const char TYPE = MESSAGE_TYPE_PROTOCOL_VERSION;
-private:
-  int version;
-
-protected:
-  /**
-   * @param version selected protocol version
-   */
-  ProtocolVersionMessage(int version) : version(version) {}
-
-public:
-  ~ProtocolVersionMessage();
-  virtual char getType() const;
-
-  int getVersion() const { return version; }
-
-  static ProtocolVersionMessage* receive(HostChannel& channel);
-  static bool send(HostChannel& channel, int version);
-};
-#endif
diff --git a/plugins/common/QuitMessage.h b/plugins/common/QuitMessage.h
deleted file mode 100644
index f8f9b80..0000000
--- a/plugins/common/QuitMessage.h
+++ /dev/null
@@ -1,42 +0,0 @@
-#ifndef __H_QuitMessage
-#define __H_QuitMessage
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include <string>
-#include "Message.h"
-#include "BrowserChannel.h"
-
-/**
- * This class represents a Quit message sent to the server, indicating the
- * channel should be closed down.
- */
-class QuitMessage : public Message {
-public:
-  static const char TYPE = MESSAGE_TYPE_QUIT;
-private:
-  QuitMessage() {}
-
-public:
-  virtual char getType() const {
-    return TYPE;
-  }
-
-  static bool send(HostChannel& channel) {
-    return channel.sendByte(TYPE);
-  }
-};
-#endif
diff --git a/plugins/common/ReturnMessage.cpp b/plugins/common/ReturnMessage.cpp
deleted file mode 100644
index 159d009..0000000
--- a/plugins/common/ReturnMessage.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#include "ReturnMessage.h"
-#include "HostChannel.h"
-
-char ReturnMessage::getType() const {
-  return TYPE;
-}
-  
-ReturnMessage* ReturnMessage::receive(HostChannel& channel) {
-  char isException;
-  if (!channel.readByte(isException)) {
-    // TODO(jat): error handling
-    return 0;
-  }
-  gwt::Value retval;
-  if (!channel.readValue(retval)) {
-    // TODO(jat): error handling
-    return 0;
-  }
-  return new ReturnMessage(isException != 0, retval);
-}
-
-bool ReturnMessage::send(HostChannel& channel, bool isException, const gwt::Value& retval) {
-  if (!channel.sendByte(TYPE)) return false;
-  if (!channel.sendByte(isException ? 1 : 0)) return false;
-  return channel.sendValue(retval);
-}
diff --git a/plugins/common/ReturnMessage.h b/plugins/common/ReturnMessage.h
deleted file mode 100644
index 29141ec..0000000
--- a/plugins/common/ReturnMessage.h
+++ /dev/null
@@ -1,50 +0,0 @@
-#ifndef __RETURNMESSAGE_H
-#define __RETURNMESSAGE_H
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include <string>
-#include "Message.h"
-#include "BrowserChannel.h"
-#include "Value.h"
-
-class HostChannel;
-
-/**
- * Class representing a Return message received from the server, and a way
- * to send one.
- *
- * This message gives the return value of a previous Invoke or LoadModule
- * message (for the latter, only the exception state is important).
- */
-class ReturnMessage : public Message {
-  static const char TYPE = MESSAGE_TYPE_RETURN;
-private:
-  bool bisException;
-  gwt::Value retval;
-
-public:
-  ReturnMessage(bool isException, const gwt::Value& retValue) : bisException(isException),
-      retval(retValue) {}
-
-  bool isException() const { return bisException; }
-  const gwt::Value& getReturnValue() const { return retval; }
-  virtual char getType() const;
-
-  static ReturnMessage* receive(HostChannel& channel);
-  static bool send(HostChannel& channel, bool isException, const gwt::Value& retValue);
-};
-#endif
diff --git a/plugins/common/ServerMethods.cpp b/plugins/common/ServerMethods.cpp
deleted file mode 100644
index 672b44a..0000000
--- a/plugins/common/ServerMethods.cpp
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include <string>
-
-#include "Debug.h"
-#include "FreeValueMessage.h"
-#include "HostChannel.h"
-#include "InvokeMessage.h"
-#include "InvokeSpecialMessage.h"
-#include "ReturnMessage.h"
-#include "ServerMethods.h"
-#include "scoped_ptr/scoped_ptr.h"
-
-using std::string;
-
-gwt::Value ServerMethods::getProperty(HostChannel& channel, SessionHandler* handler, int objectRef,
-    int dispatchId) {
-  if (!channel.isConnected()) {
-    Debug::log(Debug::Debugging) << "Ignoring getProperty after disconnect"
-        << Debug::flush;
-    return gwt::Value();
-  }
-  gwt::Value args[2];
-  args[0].setInt(objectRef);
-  args[1].setInt(dispatchId);
-  if (!InvokeSpecialMessage::send(channel, SPECIAL_GET_PROPERTY, 2, args)) {
-    Debug::log(Debug::Error) << "  failed to send invoke of GetProperty(disp=" << dispatchId
-        << ", obj=" << objectRef << ")" << Debug::flush;
-    return gwt::Value();
-  }
-  scoped_ptr<ReturnMessage> retMsg(channel.reactToMessagesWhileWaitingForReturn(handler));
-  if (!retMsg.get()) {
-    Debug::log(Debug::Error) << "getProperty: get return value failed for GetProperty(disp="
-        << dispatchId << ", obj=" << objectRef << ")" << Debug::flush;
-    return gwt::Value();
-  }
-  return retMsg->getReturnValue();
-}
-
-int ServerMethods::hasMethod(HostChannel& channel, SessionHandler* handler, int classId,
-    const std::string& name) {
-  if (name != "toString" && name.find("::") == string::npos) {
-    // only JSNI-style names and toString are valid
-    return -1;
-  }
-  if (!channel.isConnected()) {
-    Debug::log(Debug::Debugging) << "Ignoring hasMethod after disconnect"
-        << Debug::flush;
-    return -2;
-  }
-  gwt::Value arg;
-  arg.setString(name);
-  if (!InvokeSpecialMessage::send(channel, SPECIAL_HAS_METHOD, 1, &arg)) {
-    Debug::log(Debug::Error) << "hasMethod: invoke(hasMethod) failed" << Debug::flush;
-    return -2;
-  }
-  scoped_ptr<ReturnMessage> retMsg(channel.reactToMessagesWhileWaitingForReturn(handler));
-  if (!retMsg.get()) {
-    Debug::log(Debug::Error) << "hasMethod: get return value failed" << Debug::flush;
-    return -2;
-  }
-  gwt::Value retval = retMsg->getReturnValue();
-  // TODO(jat): better error handling?
-  return retval.isInt() ? retval.getInt() : -2;
-}
-
-int ServerMethods::hasProperty(HostChannel& channel, SessionHandler* handler, int classId,
-    const std::string& name) {
-  if (name != "toString" && name.find("::") == string::npos) {
-    // only JSNI-style names and toString are valid
-    return -1;
-  }
-  if (!channel.isConnected()) {
-    Debug::log(Debug::Debugging) << "Ignoring hasProperty after disconnect"
-        << Debug::flush;
-    return -2;
-  }
-  gwt::Value arg;
-  arg.setString(name);
-  if (!InvokeSpecialMessage::send(channel, SPECIAL_HAS_PROPERTY, 1, &arg)) {
-    Debug::log(Debug::Error) << "hasProperty: invoke(hasProperty) failed" << Debug::flush;
-    return -2;
-  }
-  scoped_ptr<ReturnMessage> retMsg(channel.reactToMessagesWhileWaitingForReturn(handler));
-  if (!retMsg.get()) {
-    Debug::log(Debug::Error) << "hasProperty: get return value failed" << Debug::flush;
-    return -2;
-  }
-  gwt::Value retval = retMsg->getReturnValue();
-  // TODO(jat): better error handling?
-  return retval.isInt() ? retval.getInt() : -2;
-}
-
-bool ServerMethods::setProperty(HostChannel& channel, SessionHandler* handler, int objectRef,
-    int dispatchId, const gwt::Value& value) {
-  if (!channel.isConnected()) {
-    Debug::log(Debug::Debugging) << "Ignoring setProperty after disconnect"
-        << Debug::flush;
-    return false;
-  }
-  // TODO(jat): error handling?
-  gwt::Value args[3];
-  args[0].setInt(objectRef);
-  args[1].setInt(dispatchId);
-  args[2] = value;
-  if (!InvokeSpecialMessage::send(channel, SPECIAL_SET_PROPERTY, 3, args)) {
-    Debug::log(Debug::Error) << "  failed to send invoke of SetProperty(disp=" << dispatchId
-        << ", obj=" << objectRef << ")" << Debug::flush;
-    return false;
-  }
-  scoped_ptr<ReturnMessage> retMsg(channel.reactToMessagesWhileWaitingForReturn(handler));
-  if (!retMsg.get()) {
-    Debug::log(Debug::Error) << "setProperty: get return value failed for SetProperty(disp="
-        << dispatchId << ", obj=" << objectRef << ")" << Debug::flush;
-    return false;
-  }
-  // TODO: use the returned exception?
-  return !retMsg.get()->isException();
-}
-
-bool ServerMethods::freeJava(HostChannel& channel, SessionHandler* handler, int idCount,
-      const int* ids) {
-  // If we are disconnected, assume the server will free all of these anyway.
-  // This deals with the problem of getting finalizers called after the channel is dropped.
-  if (!channel.isConnected()) {
-    Debug::log(Debug::Debugging) << "Ignoring freeJava after disconnect"
-        << Debug::flush;
-    return true;
-  }
-  if (!FreeValueMessage::send(channel, idCount, ids)) {
-    Debug::log(Debug::Error) << "  failed to send FreeValues message" << Debug::flush;
-    return false;
-  }
-  return true;
-}
diff --git a/plugins/common/ServerMethods.h b/plugins/common/ServerMethods.h
deleted file mode 100644
index 02bf921..0000000
--- a/plugins/common/ServerMethods.h
+++ /dev/null
@@ -1,78 +0,0 @@
-#ifndef _H_ServerMethods
-#define _H_ServerMethods
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#include "Value.h"
-
-class HostChannel;
-class SessionHandler;
-
-/**
- * Encapsulates the methods defined on the special server object.
- */
-class ServerMethods {
-public:
-  /**
-   * Get the value of a property on an object.
-   * 
-   * @param objectRef ID of object to fetch field on
-   * @param dispatchID dispatch ID of field
-   * @return the value of the property, undef if none (or on error)
-   */
-  static gwt::Value getProperty(HostChannel& channel, SessionHandler* handler, int objectRef,
-      int dispatchId);
-  
-  /**
-   * Lookup the named method on the specified class.
-   * 
-   * @return the dispatch ID (non-negative) of the method if present, or -1 if not.
-   * If an error is encountered, -2 is returned.
-   */
-  static int hasMethod(HostChannel& channel, SessionHandler* handler, int classId,
-      const std::string& name);
-  
-  /**
-   * Lookup the named property on the specified class.
-   * 
-   * @return the dispatch ID (non-negative) of the property if present, or -1 if not.
-   * If an error is encountered, -2 is returned.
-   */
-  static int hasProperty(HostChannel& channel, SessionHandler* handler, int classId,
-      const std::string& name);
-
-  /**
-   * Set the value of a property on an object.
-   * 
-   * @param objectRef ID of object to fetch field on
-   * @param dispatchID dispatch ID of field
-   * @param value value to store in the property
-   * @return false if an error occurred
-   */
-  static bool setProperty(HostChannel& channel, SessionHandler* handler, int objectRef,
-      int dispatchId, const gwt::Value& value);
-  
-  /**
-   * Tell the server that the client no longer has any references to the specified
-   * Java object.
-   * 
-   * @param objcetRef ID of object to free
-   * @return false if an error occurred
-   */ 
-  static bool freeJava(HostChannel& channel, SessionHandler* handler, int idCount, const int* ids);
-};
-
-#endif
diff --git a/plugins/common/SessionHandler.h b/plugins/common/SessionHandler.h
deleted file mode 100644
index 159f762..0000000
--- a/plugins/common/SessionHandler.h
+++ /dev/null
@@ -1,111 +0,0 @@
-#ifndef _H_SessionHandler
-#define _H_SessionHandler
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include "BrowserChannel.h"
-#include "Value.h"
-
-class HostChannel;
-
-/**
- * Interface for session-handling needs.
- *
- * Note that if this is being "added" onto a class which extends a C structure, the inheritance
- * chain leading to the plain C object must be first in the inheritance list.
- *
- * For example:
- *
- * extern "C" {
- *   typedef struct PlainCstruct {
- *      ... data only members here
- *   } PlainCstruct;
- * };
- *
- * class MyWrapper: public PlainCstruct, SessionHandler {
- *    ... virtual functions ok here
- * };
- */
-class SessionHandler {
-  friend class HostChannel;
-public:
-  enum SpecialMethodId {
-    HasMethod = SPECIAL_HAS_METHOD,
-    HasProperty = SPECIAL_HAS_PROPERTY,
-    GetProperty = SPECIAL_GET_PROPERTY,
-    SetProperty = SPECIAL_SET_PROPERTY
-  };
-protected:
-  SessionHandler(): alreadyDisconnected(false) {
-  }
-
-  /**
-   * Called by the server socket when it cannot read, write, or flush.
-   */
-  void disconnectDetected() {
-    if (!alreadyDisconnected) {
-      alreadyDisconnected = true;
-      disconnectDetectedImpl();
-    }
-  }
-
-  /**
-   * Implementors should invoke __gwt_disconnected() in the hosted.html window
-   * to "glass" the screen with a disconnect message.
-   */
-  virtual void disconnectDetectedImpl() = 0;
-
-  /**
-   * Report a fatal error -- the channel will be closed after this method
-   * returns.
-   */
-  virtual void fatalError(HostChannel& channel, const std::string& message) = 0;
-
-  virtual void freeValue(HostChannel& channel, int idCount, const int* ids) = 0;
-
-  virtual void loadJsni(HostChannel& channel, const std::string& js) = 0;
-
-  /**
-   * Does not own any of its args -- must copy them if it wants them and should not free the
-   * ones passed in.
-   *
-   * Returns true if an exception occurred.
-   */
-  virtual bool invoke(HostChannel& channel, const gwt::Value& thisObj,
-      const std::string& methodName, int numArgs, const gwt::Value* const args,
-      gwt::Value* returnValue) = 0;
-
-  /**
-   * Invoke a plugin-provided method with the given args.  As above, this method does not own
-   * any of its args.
-   *
-   * Returns true if an exception occurred.
-   */
-  virtual bool invokeSpecial(HostChannel& channel, SpecialMethodId method, int numArgs,
-      const gwt::Value* const args, gwt::Value* returnValue) = 0;
-
-  /**
-   * Send any queued up free values back to the server.
-   */
-  virtual void sendFreeValues(HostChannel& channel) = 0;
-
-  virtual ~SessionHandler() {}
-
-private:
-  bool alreadyDisconnected;
-};
-
-#endif
diff --git a/plugins/common/Socket.cpp b/plugins/common/Socket.cpp
deleted file mode 100644
index fd32461..0000000
--- a/plugins/common/Socket.cpp
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include "Platform.h"
-
-#include <cstdio>
-#include <cstdlib>
-#include <cstring>
-#include <cerrno>
-
-#include "Socket.h"
-
-void Socket::init() {
-#ifdef _WINDOWS
-  // version 2.2 supported on Win95OSR2/WinNT4 and up
-  WORD winsockVers = MAKEWORD(2, 2);
-  WSADATA wsaData;
-  int err = WSAStartup(winsockVers, &wsaData);
-  if (err) {
-    // TODO(jat): report error
-    Debug::log(Debug::Error) << "WSAStartup(vers=2.2): err=" << err << Debug::flush;
-  }
-#endif
-}
-
-bool Socket::connect(const char* host, int port) {
-  Debug::log(Debug::Debugging) << "Socket::connect(host=" << host << ",port=" << port << ")"
-      << Debug::flush;
-  if (isConnected()) {
-    Debug::log(Debug::Error) << "Socket::connect - already connected" << Debug::flush;
-    return false;
-  }
-
-  SOCKETTYPE fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
-  if (fd < 0) {
-    Debug::log(Debug::Error) << "Socket::connect - can't get socket" << Debug::flush;
-    return false;
-  }
-#ifdef SO_NOSIGPIPE
-  // On BSD, we need to suppress the SIGPIPE if the remote end disconnects.
-  int option_value = 1;
-  if (setsockopt(fd, SOL_SOCKET, SO_NOSIGPIPE, &option_value, sizeof(int))) {
-    Debug::log(Debug::Error) << "Socket::connect - can't set NOSIGPIPE option" << Debug::flush;
-    return false;
-  }
-#endif
-
-  struct sockaddr_in sockAddr;
-  memset(&sockAddr, 0, static_cast<int>(sizeof(sockAddr)));
-  // check for numeric IP4 addresses first
-  // TODO(jat): handle IPv6 addresses
-  unsigned long numericAddr = inet_addr(host);
-  if (numericAddr != 0xFFFFFFFF) {
-    sockAddr.sin_addr.s_addr = numericAddr;
-    sockAddr.sin_family = AF_INET;
-  } else {
-    struct hostent* hent = gethostbyname(host);
-    if (!hent || !hent->h_addr_list[0]) {
-      Debug::log(Debug::Error) << "Unable to get address for " << host << Debug::flush;
-      return false;
-    }
-    memcpy(&(sockAddr.sin_addr), hent->h_addr_list[0], hent->h_length);
-    sockAddr.sin_family = hent->h_addrtype;
-  }
-  sockAddr.sin_port = htons(port);
-
-  if (::connect(fd, (struct sockaddr*) &sockAddr, sizeof(sockAddr)) < 0) {
-#ifdef _WINDOWS
-    char buf[256];
-    DWORD dwLastError = ::GetLastError();
-    strerror_s(buf, sizeof(buf), dwLastError);
-    Debug::log(Debug::Error) << "Failed to connect to " << host << ":" << port << " -- error code "
-        << dwLastError << Debug::flush;
-    closesocket(fd);
-    ::SetLastError(dwLastError);
-#else
-    Debug::log(Debug::Error) << "Can't connect to " << host << ":" << port << " -- "
-        << strerror(errno) << Debug::flush;
-    close(fd);
-#endif
-    return false;
-  }
-  sock = fd;
-  connected = true;
-  readBufPtr = readValid = readBuf;
-  writeBufPtr = writeBuf;
-#ifdef _WINDOWS
-  Debug::log(Debug::Spam) << "  connected" << Debug::flush;
-#else
-  Debug::log(Debug::Spam) << "  connected, fd=" << fd << Debug::flush;
-#endif
-  return true;
-}
-
-bool Socket::disconnect(bool doFlush) {
-  if (connected) {
-    Debug::log(Debug::Debugging) << "Disconnecting socket" << Debug::flush;
-    if (doFlush) {
-      flush();
-    }
-    connected = false;
-#ifdef _WINDOWS
-    closesocket(sock);
-#else
-    shutdown(sock, SHUT_RDWR);
-    close(sock);
-#endif
-  }
-  return true;
-}
-
-bool Socket::emptyWriteBuf() {
-  size_t len = writeBufPtr - writeBuf;
-  Debug::log(Debug::Spam) << "Socket::emptyWriteBuf: len=" << len << Debug::flush;
-  ++numWrites;
-  totWriteBytes += len;
-  if (len > maxWriteBytes) {
-    maxWriteBytes = len;
-  }
-  for (char* ptr = writeBuf; len > 0; ) {
-    ssize_t n = send(sock, ptr, len, 0);
-    if (n <= 0) {
-      if (errno == EPIPE) {
-        Debug::log(Debug::Warning) << "Other end of socket disconnected" << Debug::flush;
-        disconnect(false);
-        return false;
-      }
-      Debug::log(Debug::Error) << "Error " << errno << " writing " << len << " bytes to socket"
-          << Debug::flush;
-      return false;
-    }
-    ptr += n;
-    len -= n;
-  }
-  writeBufPtr = writeBuf;
-  return true;
-}
-
-bool Socket::fillReadBuf() {
-  readBufPtr = readBuf;
-  errno = 0;
-  ssize_t n = recv(sock, readBuf, BUF_SIZE, 0);
-  if (n <= 0) {
-    // EOF results in no error
-    if (!errno || errno == EPIPE) {
-      Debug::log(Debug::Warning) << "Other end of socket disconnected" << Debug::flush;
-      disconnect(false);
-      return false;
-    }
-    Debug::log(Debug::Error) << "Error " << errno << " reading " << BUF_SIZE << " bytes from socket"
-        << Debug::flush;
-    return false;
-  }
-  ++numReads;
-  totReadBytes += n;
-  if (static_cast<size_t>(n) > maxReadBytes) {
-    maxReadBytes = n;
-  }
-  readValid = readBuf + n;
-  return true;
-}
diff --git a/plugins/common/Socket.h b/plugins/common/Socket.h
deleted file mode 100644
index 90298f6..0000000
--- a/plugins/common/Socket.h
+++ /dev/null
@@ -1,170 +0,0 @@
-#ifndef _H_Socket
-#define _H_Socket
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#include "Platform.h"
-#include "Debug.h"
-
-#include <string>
-
-#ifdef _WINDOWS
-#include <winsock2.h>
-#include <ws2tcpip.h>
-#else
-#include <netdb.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <unistd.h>
-#include <sys/time.h>
-#endif
-
-/**
- * Encapsulates platform dependencies regarding buffered sockets.
- */
-class Socket {
-private:
-  // Buffer size, chosen to fit in a single packet after TCP/IP overhead.
-  static const int BUF_SIZE = 1400;
-  
-  // Can't rely on a sentinel value for the socket descriptor
-  bool connected;
-  
-  SOCKETTYPE sock;
-  
-  // Read buffer
-  char* readBuf;
-  
-  // One bye past end of valid data in readBuf
-  char* readValid;
-  
-  // Current read pointer
-  char* readBufPtr;
-
-  // Write buffer
-  char* writeBuf;
-  
-  // Current write pointer
-  char* writeBufPtr;
-
-  // Stats
-  unsigned long numReads;
-  unsigned long long totReadBytes;
-  size_t maxReadBytes;
-
-  unsigned long numWrites;
-  unsigned long long totWriteBytes;
-  size_t maxWriteBytes;
-
-private:
-  void init();
-  bool fillReadBuf();
-  bool emptyWriteBuf();
-
-public:
-  Socket() : connected(false), readBuf(new char[BUF_SIZE]), writeBuf(new char[BUF_SIZE]) {
-    readBufPtr = readValid = readBuf;
-    writeBufPtr = writeBuf;
-    numReads = numWrites = 0;
-    maxReadBytes = maxWriteBytes = 0;
-    totReadBytes = totWriteBytes = 0;
-    init();
-  }
-  
-  ~Socket() {
-    disconnect();
-#ifdef _WINDOWS
-    if (0) WSACleanup();
-#endif
-    // TODO(jat): LEAK LEAK LEAK
-    // delete[] readBuf;
-    // delete[] writeBuf;
-    Debug::log(Debug::Debugging) << "Socket: #r=" << numReads << ", bytes/read="
-        << (numReads ? totReadBytes / numReads : 0) << ", maxr=" << maxReadBytes << "; #w="
-        << numWrites << ", bytes/write=" << (numWrites ? totWriteBytes / numWrites : 0) << ", maxw="
-        << maxWriteBytes << Debug::flush;
-  }
-
-  /**
-   * Connects this socket to a specified port on a host.
-   * 
-   * @param host host name or IP address to connect to
-   * @param port TCP port to connect to
-   * @return true if the connection succeeds
-   */ 
-  bool connect(const char* host, int port);
-  
-  /**
-   * Returns true if the socket is connected.
-   */
-  bool isConnected() const {
-    return connected;
-  }
-  
-  /**
-   * Disconnect this socket.
-   * 
-   * @param doFlush true (the default value) if the socket should be flushed.
-   * @return true if disconnect succeeds
-   */
-  bool disconnect(bool doFlush = true);
-  
-  /**
-   * Read a single byte from the socket.
-   *
-   * @return -1 on error, otherwise unsigned byte read.
-   */
-  int readByte() {
-    if (readBufPtr >= readValid) {
-      if (!fillReadBuf()) {
-        return -1;
-      }
-    }
-    return static_cast<unsigned char>(*readBufPtr++);
-  }
-  
-  /**
-   * Write a single byte to the socket.
-   * 
-   * @return true on success.
-   */
-  bool writeByte(char c) {
-    if (writeBufPtr >= writeBuf + BUF_SIZE) {
-      if (!emptyWriteBuf()) {
-        return false;
-      }
-    }
-    *writeBufPtr++ = c;
-    return true;
-  }
-  
-  /**
-   * Flush any pending writes on the socket.
-   *
-   * @return true on success
-   */
-  bool flush() {
-    if (writeBufPtr > writeBuf) {
-      if (!emptyWriteBuf()) {
-        return false;
-      }
-    }
-    return true;
-  }
-};
-
-#endif
diff --git a/plugins/common/SwitchTransportMessage.cpp b/plugins/common/SwitchTransportMessage.cpp
deleted file mode 100644
index ccb5520..0000000
--- a/plugins/common/SwitchTransportMessage.cpp
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include "SwitchTransportMessage.h"
-#include "HostChannel.h"
-#include "scoped_ptr/scoped_ptr.h"
-
-SwitchTransportMessage::~SwitchTransportMessage() {
-}
-
-char SwitchTransportMessage::getType() const {
-  return TYPE;
-}
-
-/**
- * Receive a SwitchTransport message from the server.
- */
-SwitchTransportMessage* SwitchTransportMessage::receive(HostChannel& channel) {
-  std::string transport;
-  if (!channel.readString(transport)) {
-    // TODO(jat): error handling
-    printf("Failed to read transport\n");
-    return 0;
-  }
-  return new SwitchTransportMessage(transport);
-}
-
-/**
- * Send a fatal error message on the channel.
- */
-bool SwitchTransportMessage::send(HostChannel& channel,
-    const std::string& transport) {
-  if (!channel.sendByte(TYPE)) return false;
-  if (!channel.sendString(transport)) return false;
-  return true;
-}
diff --git a/plugins/common/SwitchTransportMessage.h b/plugins/common/SwitchTransportMessage.h
deleted file mode 100644
index 0dad82a..0000000
--- a/plugins/common/SwitchTransportMessage.h
+++ /dev/null
@@ -1,53 +0,0 @@
-#ifndef __SWITCHTRANSPORTMESSAGE_H
-#define __SWITCHTRANSPORTMESSAGE_H
-/*
- * Copyright 2009 Google Inc.
- *
- * Licensed 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.
- */
-
-#include <string>
-#include "Message.h"
-#include "BrowserChannel.h"
-#include "Value.h"
-
-class HostChannel;
-
-/**
- * Class representing an SwitchTransport message received from the server, and a
- * way to send one.
- *
- * The SwitchTransport message is sent by the server in response to a
- * ChooseTransport message, and will select one of the available transports
- * advertised by the client.  The empty string represents the in-band channel,
- * and is always an acceptable response.
- */
-class SwitchTransportMessage : public Message {
-public:
-  static const char TYPE = MESSAGE_TYPE_SWITCH_TRANSPORT;
-private:
-  std::string transport;
-
-protected:
-  SwitchTransportMessage(const std::string& transport) : transport(transport) {}
-
-public:
-  ~SwitchTransportMessage();
-  virtual char getType() const;
-
-  const std::string& getTransport() const { return transport; }
-
-  static SwitchTransportMessage* receive(HostChannel& channel);
-  static bool send(HostChannel& channel, const std::string& transport);
-};
-#endif
diff --git a/plugins/common/Value.h b/plugins/common/Value.h
deleted file mode 100644
index ab50f5e..0000000
--- a/plugins/common/Value.h
+++ /dev/null
@@ -1,399 +0,0 @@
-#ifndef _H_Value
-#define _H_Value
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#ifndef _WINDOWS
-// TODO(jat): remove; for abort() which should probably go away
-#include <stdlib.h>
-#endif
-
-#include <string>
-
-#include "Debug.h"
-
-#include "BrowserChannel.h"
-
-namespace gwt {
-class Value {
-public:
-  enum ValueType {
-    NULL_TYPE = VALUE_TYPE_NULL,
-    BOOLEAN = VALUE_TYPE_BOOLEAN,
-    BYTE = VALUE_TYPE_BYTE,
-    CHAR = VALUE_TYPE_CHAR,
-    SHORT = VALUE_TYPE_SHORT,
-    INT = VALUE_TYPE_INT,
-    LONG = VALUE_TYPE_LONG,
-    FLOAT = VALUE_TYPE_FLOAT,
-    DOUBLE = VALUE_TYPE_DOUBLE,
-    STRING = VALUE_TYPE_STRING,
-    JAVA_OBJECT = VALUE_TYPE_JAVA_OBJECT,
-    JS_OBJECT = VALUE_TYPE_JS_OBJECT,
-    UNDEFINED = VALUE_TYPE_UNDEFINED
-  };
-
-private:
-  ValueType type;
-  union {
-    bool  boolValue;
-    unsigned char byteValue;
-    unsigned short charValue;
-    double doubleValue;
-    float floatValue;
-    int32_t intValue;
-    int64_t longValue;
-    short shortValue;
-    std::string* stringValue;
-  } value;
-
-public:
-  Value() {
-    type = UNDEFINED;
-  }
-
-  Value(const Value& other) {
-    copyValue(other);
-  }
-
-  Value& operator=(const Value& other) {
-    clearOldValue();
-    copyValue(other);
-    return *this;
-  }
-
-  ~Value() {
-    clearOldValue();
-  }
-
-  bool getBoolean() const {
-    assertType(BOOLEAN);
-    return value.boolValue;
-  }
-
-  unsigned char getByte() const {
-    assertType(BYTE);
-    return value.byteValue;
-  }
-
-  unsigned short getChar() const {
-    assertType(CHAR);
-    return value.charValue;
-  }
-
-  double getDouble() const {
-    assertType(DOUBLE);
-    return value.doubleValue;
-  }
-
-  float getFloat() const {
-    assertType(FLOAT);
-    return value.floatValue;
-  }
-
-  int getInt() const {
-    assertType(INT);
-    return value.intValue;
-  }
-
-  int getJavaObjectId() const {
-    assertType(JAVA_OBJECT);
-    return value.intValue;
-  }
-
-  int getJsObjectId() const {
-    assertType(JS_OBJECT);
-    return value.intValue;
-  }
-
-  int64_t getLong() const {
-    assertType(LONG);
-    return value.longValue;
-  }
-
-  short getShort() const {
-    assertType(SHORT);
-    return value.shortValue;
-  }
-
-  const std::string getString() const {
-    assertType(STRING);
-    return std::string(*value.stringValue);
-  }
-
-  ValueType getType() const {
-    return type;
-  }
-
-  bool isBoolean() const {
-    return type == BOOLEAN;
-  }
-
-  bool isByte() const {
-    return type == BYTE;
-  }
-
-  bool isChar() const {
-    return type == CHAR;
-  }
-
-  bool isDouble() const {
-    return type == DOUBLE;
-  }
-
-  bool isFloat() const {
-    return type == FLOAT;
-  }
-
-  bool isInt() const {
-    return type == INT;
-  }
-
-  bool isJavaObject() const {
-    return type == JAVA_OBJECT;
-  }
-
-  bool isJsObject() const {
-    return type == JS_OBJECT;
-  }
-
-  bool isLong() const {
-    return type == LONG;
-  }
-
-  bool isNull() const {
-    return type == NULL_TYPE;
-  }
-
-  bool isNumber() const {
-    switch (type) {
-      case BYTE:
-      case CHAR:
-      case DOUBLE:
-      case FLOAT:
-      case INT:
-      case LONG:
-      case SHORT:
-        return true;
-      default:
-        return false;
-    }
-  }
-
-  bool isPrimitive() const {
-    switch (type) {
-      case BOOLEAN:
-      case BYTE:
-      case CHAR:
-      case DOUBLE:
-      case FLOAT:
-      case INT:
-      case LONG:
-      case SHORT:
-        return true;
-      default:
-        return false;
-    }
-  }
-
-  bool isShort() const {
-    return type == SHORT;
-  }
-
-  bool isString() const {
-    return type == STRING;
-  }
-
-  bool isUndefined() const {
-    return type == UNDEFINED;
-  }
-
-  void setBoolean(bool val) {
-    clearOldValue();
-    type = BOOLEAN;
-    value.boolValue = val;
-  }
-
-  void setByte(unsigned char val) {
-    clearOldValue();
-    type = BYTE;
-    value.byteValue = val;
-  }
-
-  void setChar(unsigned short val) {
-    clearOldValue();
-    type = CHAR;
-    value.charValue = val;
-  }
-
-  void setDouble(double val) {
-    clearOldValue();
-    type = DOUBLE;
-    value.doubleValue = val;
-  }
-
-  void setDouble(const double* val) {
-    clearOldValue();
-    type = DOUBLE;
-    value.doubleValue = *val;
-  }
-
-  void setFloat(float val) {
-    clearOldValue();
-    type = FLOAT;
-    value.floatValue = val;
-  }
-
-  void setInt(int val) {
-    clearOldValue();
-    type = INT;
-    value.intValue = val;
-  }
-
-  void setJavaObject(int objectId) {
-    clearOldValue();
-    type = JAVA_OBJECT;
-    value.intValue = objectId;
-  }
-
-  void setJsObjectId(int val) {
-    clearOldValue();
-    type = JS_OBJECT;
-    value.intValue = val;
-  }
-
-  void setLong(int64_t val) {
-    clearOldValue();
-    type = LONG;
-    value.longValue = val;
-  }
-
-  void setNull() {
-    clearOldValue();
-    type = NULL_TYPE;
-  }
-
-  void setShort(short val) {
-    clearOldValue();
-    type = SHORT;
-    value.shortValue = val;
-  }
-
-  void setString(const char* chars, int len) {
-    setString(std::string(chars, len));
-  }
-
-  void setString(const std::string& val) {
-    clearOldValue();
-    type = STRING;
-    value.stringValue = new std::string(val);
-  }
-
-  void setUndefined() {
-    clearOldValue();
-    type = UNDEFINED;
-  }
-
-  std::string toString() const {
-    char buf[64];
-    switch (type) {
-      case NULL_TYPE:
-        return "null";
-      case BOOLEAN:
-        snprintf(buf, sizeof(buf), "boolean(%s)", getBoolean() ? "true"
-            : "false");
-        return std::string(buf);
-      case BYTE:
-        snprintf(buf, sizeof(buf), "byte(%d)", getByte());
-        return std::string(buf);
-      case CHAR:
-        snprintf(buf, sizeof(buf), "char(%d)", getChar());
-        return std::string(buf);
-      case SHORT:
-        snprintf(buf, sizeof(buf), "short(%d)", getShort());
-        return std::string(buf);
-      case INT:
-        snprintf(buf, sizeof(buf), "int(%d)", getInt());
-        return std::string(buf);
-      case LONG:
-        snprintf(buf, sizeof(buf), "long(%lld)",
-            static_cast<long long>(getLong()));
-        return std::string(buf);
-      case FLOAT:
-        snprintf(buf, sizeof(buf), "float(%g)", getFloat());
-        return std::string(buf);
-      case DOUBLE:
-        snprintf(buf, sizeof(buf), "double(%g)", getDouble());
-        return std::string(buf);
-      case STRING:
-        snprintf(buf, sizeof(buf), "string(%.20s)", getString().c_str());
-        return std::string(buf);
-      case JAVA_OBJECT:
-        snprintf(buf, sizeof(buf), "JavaObj(%d)", getJavaObjectId());
-        return std::string(buf);
-      case JS_OBJECT:
-        snprintf(buf, sizeof(buf), "JsObj(%d)", getJsObjectId());
-        return std::string(buf);
-      case UNDEFINED:
-        return "undefined";
-      default:
-        return "Unknown type";
-    }
-  }
-
-private:
-  void assertType(ValueType reqType) const {
-    if (type != reqType) {
-      Debug::log(Debug::Error) << "Value::assertType - expecting type "
-          << int(reqType) << ", was " << int(type) << Debug::flush;
-      // TODO(jat): is this portable?  Should we do something else here?
-      abort();
-    }
-  }
-
-  void clearOldValue() {
-    if (type == STRING) {
-      delete value.stringValue;
-      type = UNDEFINED;
-    }
-  }
-
-  // Precondition: existing value, if any, has been cleared
-  void copyValue(const Value& other) {
-    type = other.type;
-    value = other.value;
-    // handle deep copies of value types that need it
-    switch (type) {
-      case STRING:
-        value.stringValue = new std::string(*value.stringValue);
-        break;
-      default:
-        // no other values need deep copies
-        break;
-    }
-  }
-};
-
-inline Debug::DebugStream& operator<<(Debug::DebugStream& dbg, const Value& val) {
-  if (dbg.isActive()) {
-    dbg << val.toString();
-  }
-  return dbg;
-}
-
-} // namespace gwt
-
-#endif
diff --git a/plugins/common/scoped_ptr/README.google b/plugins/common/scoped_ptr/README.google
deleted file mode 100644
index d513e21..0000000
--- a/plugins/common/scoped_ptr/README.google
+++ /dev/null
@@ -1,27 +0,0 @@
-Description
-===========
-
-This is the scoped_ptr from Boost with some additions by Google.
-
-Homepage
-========
-
-http://www.boost.org/
-http://www.boost.org/libs/smart_ptr/scoped_ptr.htm
-
-License
-=======
-
-http://boost.org/LICENSE_1_0.txt
-
-Source files and modifications
-==============================
-
-scoped_ptr_malloc added in by Ray Sidney of Google.  When one of these goes
-out of scope, instead of doing a delete or delete[], it calls free().
-scoped_ptr_malloc<char> is likely to see much more use than any other
-specializations.
-
-release() added in by Spencer Kimball of Google. Use this to conditionally
-transfer ownership of a heap-allocated object to the caller, usually on
-method success.
diff --git a/plugins/common/scoped_ptr/scoped_ptr.h b/plugins/common/scoped_ptr/scoped_ptr.h
deleted file mode 100644
index 1ae1b96..0000000
--- a/plugins/common/scoped_ptr/scoped_ptr.h
+++ /dev/null
@@ -1,364 +0,0 @@
-#ifndef SCOPED_PTR_H
-#define SCOPED_PTR_H
-
-// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
-// Copyright (c) 2001, 2002 Peter Dimov
-// 
-// Permission is hereby granted, free of charge, to any person or organization
-// obtaining a copy of the software and accompanying documentation covered by
-// this license (the "Software") to use, reproduce, display, distribute,
-// execute, and transmit the Software, and to prepare derivative works of the
-// Software, and to permit third-parties to whom the Software is furnished to
-// do so, all subject to the following:
-//
-// The copyright notices in the Software and this entire statement, including
-// the above license grant, this restriction and the following disclaimer,
-// must be included in all copies of the Software, in whole or in part, and
-// all derivative works of the Software, unless such copies or derivative
-// works are solely in the form of machine-executable object code generated by
-// a source language processor.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-// DEALINGS IN THE SOFTWARE.
-//
-//  See http://www.boost.org/libs/smart_ptr/scoped_ptr.htm for documentation.
-//
-//
-//  scoped_ptr mimics a built-in pointer except that it guarantees deletion
-//  of the object pointed to, either on destruction of the scoped_ptr or via
-//  an explicit reset(). scoped_ptr is a simple solution for simple needs;
-//  use shared_ptr if your needs are more complex.
-//
-//  *** NOTE ***
-//  If your scoped_ptr is a class member of class FOO pointing to a 
-//  forward declared type BAR (as shown below), then at creation (and 
-//  destruction) of an object of type FOO, BAR must be complete.  You can do
-//  this by either:
-//   - Making all FOO constructors and destructors non-inlined to FOO's class
-//     definition, instead placing them in foo.cc below an include of bar.h
-//   - Including bar.h before any creation or destruction of any object of
-//     type FOO
-//  The former is probably the less error-prone method, as shown below.
-//
-//  Example:
-//
-//  -- foo.h --
-//  class BAR;
-//
-//  class FOO {
-//   public:
-//    FOO();   // Required for sources that instantiate class FOO to compile!
-//    ~FOO();  // Required for sources that instantiate class FOO to compile!
-//    
-//   private:
-//    scoped_ptr<BAR> bar_;
-//  };
-//
-//  -- foo.cc --
-//  #include "bar.h"
-//  #include "foo.h"
-//  FOO::FOO() {}  // Empty, but must be non-inlined to FOO's class definition.
-//  FOO::~FOO() {} // Empty, but must be non-inlined to FOO's class definition.
-//
-//  scoped_ptr_malloc added in by Ray Sidney of Google.  When one of
-//  these goes out of scope, instead of doing a delete or delete[], it
-//  calls free().  scoped_ptr_malloc<char> is likely to see much more
-//  use than any other specializations.
-//
-//  release() added in by Spencer Kimball of Google. Use this to conditionally
-//  transfer ownership of a heap-allocated object to the caller, usually on
-//  method success.
-
-#include <cstddef>            // for std::ptrdiff_t
-#include <assert.h>           // for assert
-#include <stdlib.h>           // for free() decl
-
-template <typename T>
-class scoped_ptr;
-
-template <typename T>
-class scoped_ptr {
- private:
-
-  T* ptr;
-
-  // scoped_ptr's must not be copied.  We make sure of that by making the
-  // copy constructor prototype private.  At the same time, there is no body
-  // for this constructor.  Thus, if anything that has access to private
-  // members of scoped_ptr ever (inadvertently) copies a scoped_ptr, the
-  // linker will complain about missing symbols.  This is a good thing!
-  scoped_ptr(scoped_ptr const &);
-  scoped_ptr & operator=(scoped_ptr const &);
-
- public:
-
-  typedef T element_type;
-
-  explicit scoped_ptr(T* p = 0): ptr(p) {}
-
-  ~scoped_ptr() {
-    typedef char type_must_be_complete[sizeof(T)];
-    delete ptr;
-  }
-
-  void reset(T* p = 0) {
-    typedef char type_must_be_complete[sizeof(T)];
-
-    if (ptr != p) {
-      delete ptr;
-      ptr = p;
-    }
-  }
-
-  T& operator*() const {
-    assert(ptr != 0);
-    return *ptr;
-  }
-
-  T* operator->() const  {
-    assert(ptr != 0);
-    return ptr;
-  }
-
-  bool operator==(T* p) const {
-    return ptr == p;
-  }
-
-  bool operator!=(T* p) const {
-    return ptr != p;
-  }
-
-  T* get() const  {
-    return ptr;
-  }
-
-  void swap(scoped_ptr & b) {
-    T* tmp = b.ptr;
-    b.ptr = ptr;
-    ptr = tmp;
-  }
-
-  T* release() {
-    T* tmp = ptr;
-    ptr = 0;
-    return tmp;
-  }
-
- private:
-
-  // no reason to use these: each scoped_ptr should have its own object
-  template <typename U> bool operator==(scoped_ptr<U> const& p) const;
-  template <typename U> bool operator!=(scoped_ptr<U> const& p) const;
-};
-
-template<typename T> inline
-void swap(scoped_ptr<T>& a, scoped_ptr<T>& b) {
-  a.swap(b);
-}
-
-template<typename T> inline
-bool operator==(T* p, const scoped_ptr<T>& b) {
-  return p == b.get();
-}
-
-template<typename T> inline
-bool operator!=(T* p, const scoped_ptr<T>& b) {
-  return p != b.get();
-}
-
-//  scoped_array extends scoped_ptr to arrays. Deletion of the array pointed to
-//  is guaranteed, either on destruction of the scoped_array or via an explicit
-//  reset(). Use shared_array or std::vector if your needs are more complex.
-
-template<typename T>
-class scoped_array {
- private:
-
-  T* ptr;
-
-  scoped_array(scoped_array const &);
-  scoped_array & operator=(scoped_array const &);
-
- public:
-
-  typedef T element_type;
-
-  explicit scoped_array(T* p = 0) : ptr(p) {}
-
-  ~scoped_array() {
-    typedef char type_must_be_complete[sizeof(T)];
-    delete[] ptr;
-  }
-
-  void reset(T* p = 0) {
-    typedef char type_must_be_complete[sizeof(T)];
-
-    if (ptr != p) {
-      delete [] ptr;
-      ptr = p;
-    }
-  }
-
-  T& operator[](std::ptrdiff_t i) const {
-    assert(ptr != 0);
-    assert(i >= 0);
-    return ptr[i];
-  }
-
-  bool operator==(T* p) const {
-    return ptr == p;
-  }
-
-  bool operator!=(T* p) const {
-    return ptr != p;
-  }
-
-  T* get() const {
-    return ptr;
-  }
-
-  void swap(scoped_array & b) {
-    T* tmp = b.ptr;
-    b.ptr = ptr;
-    ptr = tmp;
-  }
-
-  T* release() {
-    T* tmp = ptr;
-    ptr = 0;
-    return tmp;
-  }
-
- private:
-
-  // no reason to use these: each scoped_array should have its own object
-  template <typename U> bool operator==(scoped_array<U> const& p) const;
-  template <typename U> bool operator!=(scoped_array<U> const& p) const;
-};
-
-template<class T> inline
-void swap(scoped_array<T>& a, scoped_array<T>& b) {
-  a.swap(b);
-}
-
-template<typename T> inline
-bool operator==(T* p, const scoped_array<T>& b) {
-  return p == b.get();
-}
-
-template<typename T> inline
-bool operator!=(T* p, const scoped_array<T>& b) {
-  return p != b.get();
-}
-
-
-// This class wraps the c library function free() in a class that can be
-// passed as a template argument to scoped_ptr_malloc below.
-class ScopedPtrMallocFree {
- public:
-  inline void operator()(void* x) const {
-    free(x);
-  }
-};
-
-// scoped_ptr_malloc<> is similar to scoped_ptr<>, but it accepts a
-// second template argument, the functor used to free the object.
-
-template<typename T, typename FreeProc = ScopedPtrMallocFree>
-class scoped_ptr_malloc {
- private:
-
-  T* ptr;
-
-  scoped_ptr_malloc(scoped_ptr_malloc const &);
-  scoped_ptr_malloc & operator=(scoped_ptr_malloc const &);
-
- public:
-
-  typedef T element_type;
-
-  explicit scoped_ptr_malloc(T* p = 0): ptr(p) {}
-
-  ~scoped_ptr_malloc() {
-    typedef char type_must_be_complete[sizeof(T)];
-    free_((void*) ptr);
-  }
-
-  void reset(T* p = 0) {
-    typedef char type_must_be_complete[sizeof(T)];
-
-    if (ptr != p) {
-      free_((void*) ptr);
-      ptr = p;
-    }
-  }
-
-  T& operator*() const {
-    assert(ptr != 0);
-    return *ptr;
-  }
-
-  T* operator->() const {
-    assert(ptr != 0);
-    return ptr;
-  }
-
-  bool operator==(T* p) const {
-    return ptr == p;
-  }
-
-  bool operator!=(T* p) const {
-    return ptr != p;
-  }
-
-  T* get() const {
-    return ptr;
-  }
-
-  void swap(scoped_ptr_malloc & b) {
-    T* tmp = b.ptr;
-    b.ptr = ptr;
-    ptr = tmp;
-  }
-
-  T* release() {
-    T* tmp = ptr;
-    ptr = 0;
-    return tmp;
-  }
-
- private:
-
-  // no reason to use these: each scoped_ptr_malloc should have its own object
-  template <typename U, typename GP>
-  bool operator==(scoped_ptr_malloc<U, GP> const& p) const;
-  template <typename U, typename GP>
-  bool operator!=(scoped_ptr_malloc<U, GP> const& p) const;
-
-  static FreeProc const free_;
-};
-
-template<typename T, typename FP>
-FP const scoped_ptr_malloc<T,FP>::free_ = FP();
-
-template<typename T, typename FP> inline
-void swap(scoped_ptr_malloc<T,FP>& a, scoped_ptr_malloc<T,FP>& b) {
-  a.swap(b);
-}
-
-template<typename T, typename FP> inline
-bool operator==(T* p, const scoped_ptr_malloc<T,FP>& b) {
-  return p == b.get();
-}
-
-template<typename T, typename FP> inline
-bool operator!=(T* p, const scoped_ptr_malloc<T,FP>& b) {
-  return p != b.get();
-}
-
-#endif  // #ifndef SCOPED_PTR_H
diff --git a/plugins/common/testing/DebugTest.cpp b/plugins/common/testing/DebugTest.cpp
deleted file mode 100644
index add1357..0000000
--- a/plugins/common/testing/DebugTest.cpp
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-// This file exists to verify that the debugging code leaves nothing
-// behind when disabled or at an appropriate level.
-//
-// Compile with, for example, g++ -O3 -D* -S DebugTest.cpp and inspect the DebugTest.s file.
-//   where * is GWT_DEBUGDISABLE or GWT_DEBUGLEVEL=Spam (etc)
-//
-// testdebug is a shell script to automate this test
-
-// #define GWT_DEBUGDISABLE
-// #define GWT_DEBUGLEVEL Info
-
-#include "../Debug.h"
-
-void foo(int i) {
-  Debug::log(Debug::Error) << "Error GarbalDeGook" << i << Debug::flush;
-  Debug::log(Debug::Warning) << "Warning GarbalDeGook" << i << Debug::flush;
-  Debug::log(Debug::Info) << "Info GarbalDeGook" << i << Debug::flush;
-  Debug::log(Debug::Debugging) << "Debugging GarbalDeGook" << i << Debug::flush;
-  Debug::log(Debug::Spam) << "Spam GarbalDeGook" << i << Debug::flush;
-  if (Debug::level(Debug::Spam)) {
-    extern int ExpensiveCall();
-    Debug::log(Debug::Spam) << "Filtered spam GarbalDeGook" << ExpensiveCall() << Debug::flush;
-  }
-}
diff --git a/plugins/common/testing/testdebug b/plugins/common/testing/testdebug
deleted file mode 100755
index e2e8ea4..0000000
--- a/plugins/common/testing/testdebug
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/bin/sh
-# Copyright 2008 Google Inc.
-# 
-# Licensed 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.
-
-# this verifies that debug code is elided if it is not needed
-
-# The C++ compiler is specified in CXX, and its flags in CXXFLAGS
-# Defaults for GCC are used if not supplied.  Note that CXXFLAGS should
-# include optimizations intended to be used.  It is assumed that the
-# compiler uses -S to produce assembly output and -o - works to get that
-# output on stdout, and -Dsym=val is used to define preprocessor symbols.
-#
-# Note that debugging symbols should not be included as generally the
-# debugging info contains references to elided calls etc.
-if [ "x$CXX" == "x" ]
-then
-  CXX=g++
-fi
-
-if [ "x$CXXFLAGS" == "x" ]
-then
-  CXXFLAGS=-O3
-else
-  # remove -g if supplied
-  CXXFLAGS=`echo $CXXFLAGS | sed 's/-g\S*//'`
-fi
-
-CMD="$CXX $CXXFLAGS -S -o -"
-
-err=0
-$CMD -DGWT_DEBUGDISABLE DebugTest.cpp | egrep '(GarbalDeGook|ExpensiveCall)' >/dev/null
-if [ $? -eq 0 ]
-then
-  echo "Debug disabled leaves debug code around"
-  err=1
-fi
-$CMD -DGWT_DEBUGLEVEL=Error DebugTest.cpp | egrep '(Warning|ExpensiveCall)' >/dev/null
-if [ $? -eq 0 ]
-then
-  echo "Debug level Error leaves lower-level debug code around"
-  err=1
-fi
-$CMD -DGWT_DEBUGLEVEL=Spam DebugTest.cpp | grep 'ExpensiveCall' >/dev/null
-if [ $? -eq 1 ]
-then
-  echo "Debug level Spam does not include code that should be included"
-  err=1
-fi
-
-exit $err
diff --git a/plugins/config.mk b/plugins/config.mk
deleted file mode 100644
index db7ffff..0000000
--- a/plugins/config.mk
+++ /dev/null
@@ -1,113 +0,0 @@
-# Copyright 2009 Google Inc.
-# 
-# Licensed 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.
-
-# This Makefile fragment sets the following make variables according to the
-# current platform:
-#   ARCH - the Mozilla architecture name, such as x86, x86_64, ppc, etc
-#   FLAG32BIT - 32 or 64
-#   MARCH - the Mac architecture, such as i386 or ppc
-#   OS - linux, mac, or sun
-#   CFLAGS - appropriate C compiler flags for this platform
-#   CXXFLAGS - appropriate C++ compiler flags for this platform
-# Also, various stanard make variables are overridden if necessary, such as AR
-#
-# If ARCH is already set, that is used instead of uname -m to get the
-# architecture to build.  This can be used to build a 32-bit plugin on a 64-bit
-# platform, for example: make ARCH=x86
-
-ARCH ?= $(shell uname -m)
-
-# default is 32 bits
-FLAG32BIT=32
-
-# Figure out 64-bit platforms, canonicalize ARCH and MARCH
-ifeq ($(ARCH),x86_64)
-FLAG32BIT=64
-endif
-ifeq ($(ARCH),sparc)
-FLAG32BIT=64
-endif
-ifeq ($(ARCH),alpha)
-FLAG32BIT=64
-endif
-ifeq ($(ARCH),ia64)
-FLAG32BIT=64
-endif
-ifeq ($(ARCH),athlon)
-ARCH=x86
-endif
-ifeq ($(ARCH),i386)
-ARCH=x86
-endif
-ifeq ($(ARCH),i486)
-ARCH=x86
-endif
-ifeq ($(ARCH),i586)
-ARCH=x86
-endif
-ifeq ($(ARCH),i686)
-ARCH=x86
-endif
-ifeq ($(ARCH),i86pc)
-ARCH=x86
-endif
-ifeq ($(ARCH),Macintosh)
-ARCH=ppc
-endif
-
-MARCH=$(ARCH)
-ifeq ($(ARCH),x86)
-MARCH=i386
-endif
-
-# Default to Debug off
-DEBUG ?=
-ifeq ($(DEBUG),TRUE)
-DEBUGCFLAGS= -g
-else
-DEBUGCFLAGS=
-endif
-
-# Set OS as well as CFLAGS, CXX, and other common make variables
-ifeq ($(shell uname),Linux)
-OS=linux
-BASECFLAGS= $(DEBUGCFLAGS) -O2 -fPIC $(INC) -rdynamic
-ARCHCFLAGS= -m$(FLAG32BIT)
-ALLARCHCFLAGS= -m$(FLAG32BIT)
-#CXX=clang # for better build error messages
-endif
-ifeq ($(shell uname),Darwin)
-OS=mac
-BASECFLAGS= $(DEBUGCFLAGS) -O2 -fPIC $(INC) -D__mac -mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk
-ARCHCFLAGS=-arch $(MARCH)
-ALLARCHCFLAGS=-arch i386 -arch ppc -arch x86_64
-AR=libtool
-ARFLAGS=-static -o
-endif
-ifeq ($(shell uname),SunOS)
-OS=sun
-ifeq ($(DEBUG),TRUE)
-DEBUGCFLAGS= -g0
-endif
-#CFLAGS=-fast -g0 -Kpic $(INC) -Bdynamic -noex
-# SunC appears to miscompile Socket::writeByte by not incrementing the
-# buffer pointer, so no optimization for now
-#CFLAGS=-g -Kpic $(INC) -Bdynamic -noex
-BASECFLAGS= $(DEBUGCFLAGS) -Kpic -noex -xO1 -xlibmil -xlibmopt -features=tmplife -xbuiltin=%all -mt $(INC)
-ARCHCFLAGS=
-ALLARCHCFLAGS=
-CXX= CC
-endif
-CFLAGS=$(BASECFLAGS) $(ARCHCFLAGS)
-CXXFLAGS = $(CFLAGS) 
diff --git a/plugins/ie/README.txt b/plugins/ie/README.txt
deleted file mode 100644
index f4f030b..0000000
--- a/plugins/ie/README.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-GWT devmode plugin for IE
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-To build the plugin, you will need a windows system with Visual Studio 2008 or newer (WSDK 7.0+)
-
-To build:
-1) make sure devenv.exe is in the path
-2) make sure the binaries under $(projectroot)\third_party\java_src\gwt\svn\trunk\plugins\ie\prebuilt are writable.
-3) open a cmd.exe window, go to $(projectroot)\third_party\java_src\gwt\svn\trunk\plugins\ie
-4) run build.cmd
-
-To create msi installer:
-1) go to folder $(projectroot)\third_party\java_src\gwt\svn\trunk\plugins\ie\installer
-2) make sure the msi installers under $(projectroot)\third_party\java_src\gwt\svn\trunk\plugins\ie\prebuilt are writable.
-3) run build.cmd
-
-
diff --git a/plugins/ie/build.cmd b/plugins/ie/build.cmd
deleted file mode 100755
index e3841a4..0000000
--- a/plugins/ie/build.cmd
+++ /dev/null
@@ -1,18 +0,0 @@
-@echo off
-setlocal
-echo.
-::check if correct folder
-::check if devenv is in the path
-echo.
-echo building 32 bits
-echo ~~~~~~~~~~~~~~~~
-::pushd oophm\oophm
-devenv /rebuild "Release|Win32" %~dp0\oophm\oophm\oophm.vcproj /out build_win32.log
-echo.
-echo building 64 bits
-echo ~~~~~~~~~~~~~~~~
-devenv /rebuild "Release|x64" %~dp0\oophm\oophm\oophm.vcproj /out build_win64.log
-echo.
-echo Done.
-echo.
-endlocal
diff --git a/plugins/ie/installer/README.txt b/plugins/ie/installer/README.txt
deleted file mode 100644
index b783838..0000000
--- a/plugins/ie/installer/README.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-This directory contains the source code for the Windows installer. A new 
-installer should be built using the build script every time oophm.dll is 
-replaced.
-
-The build script will only work on a Windows system
-
-
-Workflow:
-~~~~~~~~~
-if you build new binaries, do the following:
-
-1) check out ..\prebuilt\*.msi for editing
-  
-2) run build <version>, as in: build 1.2.123
-   this will generated all the msis. make sure to look at ..\prebuilt\*.msi 
-   to see if they were updated.
-
-4) Test the installation. Yes, make sure it works on x86, x64, it cleans the 
-   registry and folder upon uninstall, etc.
-   
-	
diff --git a/plugins/ie/installer/build.cmd b/plugins/ie/installer/build.cmd
deleted file mode 100755
index 203dc90..0000000
--- a/plugins/ie/installer/build.cmd
+++ /dev/null
@@ -1,79 +0,0 @@
-@echo off
-setlocal
-if .%1==. goto :usage
-echo.
-echo.
-
-echo Checking if output files are writeable...
-SET WRITEABLE_FILE_ERROR=0
-CALL :CheckWritable "%~dp0..\prebuilt\gwt-dev-plugin-x86.msi"
-CALL :CheckWritable "%~dp0..\prebuilt\gwt-dev-plugin-x64.msi"
-CALL :CheckWritable "%~dp0oophm.wxs"
-IF "%WRITEABLE_FILE_ERROR%"=="1" GOTO :DONE
-
-SET BINARY_DIR=%~dp0..\prebuilt\Win32
-SET BINARY_FILE=oophm.dll
-
-IF NOT EXIST %BINARY_DIR%\%BINARY_FILE% (
-    echo.
-	echo ERROR - Could not find oophm binary under %BINARY_DIR%
-	echo         Verify that the build succeeded before trying to create the installer.
-	echo.
-	goto :eof
-)
-
-echo.
-echo 'heating' binary %BINARY_FILE% under %BINARY_DIR% ...
-echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-%~dp0wix\heat.exe file %BINARY_DIR%\%BINARY_FILE% -v -nologo -gg -g1 -dr INSTALLDIR -generate components -directoryid ff -cg oophmDll -out %~dp0oophm.wxs -var var.binDir
-%~dp0wix\sed.exe --in-place=xml "s/Source=\"\$(var\.binDir)\\Win32\\oophm.dll\"/Source=\"\$(var\.binDir)\\oophm.dll\"/g" %~dp0oophm.wxs
-%~dp0wix\sed.exe --in-place=xml "s/Directory Id=\"dir315E0C50682DFB472927FE1254A22F6A\" Name=\"Win32\"/Directory Id=\"dir315E0C50682DFB472927FE1254A22F6A\" Name=\"$(var.platform)\"/g" %~dp0oophm.wxs
-%~dp0wix\sed.exe --in-place=xml "s/<Component /<Component Win64=\"$(var.win64Flag)\" /g" %~dp0oophm.wxs
-%~dp0wix\sed.exe --in-place=xml "s/<Wix xmlns=\"http:\/\/schemas.microsoft.com\/wix\/2006\/wi\">/<Wix xmlns=\"http:\/\/schemas.microsoft.com\/wix\/2006\/wi\">\n\t<\?if $(var.platform)=x64 \?>\n\t<\?define win64Flag=\"yes\" \?>\n\t<\?else \?>\n\t<\?define win64Flag=\"no\" \?>\n\t<\?endif \?>/g" %~dp0oophm.wxs
-%~dp0wix\sed.exe --in-place=xml "s/Root=\"HKCR\"/Root=\"HKMU\"/g" %~dp0oophm.wxs
-
-echo.
-echo building 32 bit installer...
-echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-echo.
-%~dp0wix\candle -nologo -arch x86 -dversion=%1 -dplatform=Win32 -dbinDir=%~dp0\..\prebuilt\Win32\ -dbinary=oophm.dll %~dp0\installer.wxs.xml %~dp0\oophm.wxs
-%~dp0wix\light.exe -nologo oophm.wixobj installer.wxs.wixobj -o ..\prebuilt\gwt-dev-plugin-x86.msi -spdb
-
-echo.
-echo building 64 bit installer...
-echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-echo.
-%~dp0wix\candle -nologo -arch x64 -dversion=%1 -dplatform=x64 -dbinDir=%~dp0\..\prebuilt\x64\  -dbinary=oophm.dll %~dp0\installer.wxs.xml %~dp0\oophm.wxs
-%~dp0wix\light.exe -nologo oophm.wixobj installer.wxs.wixobj -o ..\prebuilt\gwt-dev-plugin-x64.msi -spdb
-
-echo.
-echo Done.
-echo.
-goto :eof
-
-:CheckWritable
-ECHO Checking if %1 is writable...
-SET RW=
-DIR /A:-R %1 1>NUL 2>NUL
-if %ERRORLEVEL% LEQ 0 GOTO :EOF
-ECHO.
-ECHO     ERROR: file %1 must be writeable before executing this script.
-ECHO            make sure you checked the file for editing.
-ECHO.
-SET WRITEABLE_FILE_ERROR=1
-ECHO %WRITEABLE_FILE_ERROR%
-GOTO :eof
-
-:usage
-echo.
-echo   usage: build ^<version^> 
-echo      where: ^<version^> has the syntax major.minor.build 
-echo.
-echo        example: build 1.1.3123
-
-:done
-echo.
-echo.
-
-endlocal
-
diff --git a/plugins/ie/installer/generate-wxsfile.cmd b/plugins/ie/installer/generate-wxsfile.cmd
deleted file mode 100755
index d2cf48c..0000000
--- a/plugins/ie/installer/generate-wxsfile.cmd
+++ /dev/null
@@ -1,30 +0,0 @@
-@echo OFF
-REM harvest COM settings from COM binary
-setlocal
-echo.
-if .%1==. goto :usage
-echo IMPORTANT: Make sure "%~dp0oophm.wsx" is checked out and writable!
-echo.
-echo 'heating' binary %~nx1 under %~dp1 ...
-echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-pushd %~dp1
-%~dp0wix\heat.exe file .\%~nx1 -v -nologo -gg -g1 -dr INSTALLDIR -generate components -directoryid ff -cg oophmDll -out %~dp0oophm.wxs -var var.binDir
-popd
-%~dp0wix\sed.exe --in-place=xml "s/Source=\"\$(var\.binDir)\\Win32\\oophm.dll\"/Source=\"\$(var\.binDir)\\oophm.dll\"/g" %~dp0oophm.wxs
-%~dp0wix\sed.exe --in-place=xml "s/Directory Id=\"dir315E0C50682DFB472927FE1254A22F6A\" Name=\"Win32\"/Directory Id=\"dir315E0C50682DFB472927FE1254A22F6A\" Name=\"$(var.platform)\"/g" %~dp0oophm.wxs
-%~dp0wix\sed.exe --in-place=xml "s/<Component /<Component Win64=\"$(var.win64Flag)\" /g" %~dp0oophm.wxs
-%~dp0wix\sed.exe --in-place=xml "s/<Wix xmlns=\"http:\/\/schemas.microsoft.com\/wix\/2006\/wi\">/<Wix xmlns=\"http:\/\/schemas.microsoft.com\/wix\/2006\/wi\">\n\t<\?if $(var.platform)=x64 \?>\n\t<\?define win64Flag=\"yes\" \?>\n\t<\?else \?>\n\t<\?define win64Flag=\"no\" \?>\n\t<\?endif \?>/g" %~dp0oophm.wxs
-%~dp0wix\sed.exe --in-place=xml "s/Root=\"HKCR\"/Root=\"HKMU\"/g" %~dp0oophm.wxs
-
-echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-echo Done.
-echo.
-goto :eof
-:usage
-echo.
-echo   usage: generate-wsxfile.cmd ^<binary-file-path^>
-echo.
-echo        example: generate-wsxfile.cmd ..\prebuilt\Win32\oophm.dll
-echo.
-endlocal
-
diff --git a/plugins/ie/installer/gwt.ico b/plugins/ie/installer/gwt.ico
deleted file mode 100644
index 79eb6b8..0000000
--- a/plugins/ie/installer/gwt.ico
+++ /dev/null
Binary files differ
diff --git a/plugins/ie/installer/installer.wxs.xml b/plugins/ie/installer/installer.wxs.xml
deleted file mode 100644
index c7c0c7b..0000000
--- a/plugins/ie/installer/installer.wxs.xml
+++ /dev/null
@@ -1,204 +0,0 @@
-<?xml version='1.0' encoding='windows-1252'?>
-<Wix
-  xmlns='http://schemas.microsoft.com/wix/2006/wi'>
-
-  <!-- Variables. -->
-  <?define appName = "Google Web Toolkit Developer Plugin for IE" ?>
-  <?define gwtRegKey = "SOFTWARE\Google\Google Web Toolkit\Installer" ?>
-  <?if $(var.platform)=x64 ?>
-      <?define upgradeCode = "53dae7d2-8c28-440f-920b-b2d665ce73b2" ?>
-      <?define win64Flag = "yes" ?>
-      <?define platformFriendlyName="x64" ?>
-  <?else ?>
-      <?define upgradeCode = "9a5e649a-ec63-4c7d-99bf-75adb345e7e5" ?>
-      <?define win64Flag = "no" ?>
-      <?define platformFriendlyName="x86" ?>
-  <?endif ?>
-  <?define updateRegKey = "SOFTWARE\Google\Update\Clients\{$(var.upgradeCode)}" ?>
-
-  <!--
-    The main product to install. We generate a new GUID (*) on each
-    compile to ensure that windows installer completely removes the old
-    version and reinstalls the new version without complaining.
-  -->
-
-  <Product
-    Name='$(var.appName) ($(var.platformFriendlyName))'
-    Id='*'
-    UpgradeCode='$(var.upgradeCode)'
-    Language='1033'
-    Codepage='1252'
-    Version='$(var.version)'
-    Manufacturer='Google'>
-
-    <?if $(var.platform)=x64 ?>
-    <Package
-          Id='*'
-          Keywords='Installer'
-          Description='$(var.appName) ($(var.platformFriendlyName))'
-          Manufacturer='Google'
-          InstallPrivileges='limited'
-          InstallerVersion='200'
-          Languages='1033'
-          Compressed='yes'
-          SummaryCodepage='1252'
-          Platform='x64'
-        />
-    <?else ?>
-    <Package
-          Id='*'
-          Keywords='Installer'
-          Description='$(var.appName) ($(var.platformFriendlyName))'
-          Manufacturer='Google'
-          InstallPrivileges='limited'
-          InstallerVersion='200'
-          Languages='1033'
-          Compressed='yes'
-          SummaryCodepage='1252'
-        />
-    <?endif ?>
-
-    <Media Id='1' Cabinet='product.cab' EmbedCab='yes' />
-
-    <Icon Id="gwt.ico" SourceFile=".\gwt.ico"/>
-
-    <!-- Properties -->
-    <Property Id='REBOOT'>ReallySuppress</Property>
-    <Property Id="ALLUSERS" Secure="yes"></Property>
-    <Property Id="ARPPRODUCTICON" Value="gwt.ico" />
-    <Property Id="ARPCOMMENTS" Value="Google Web Toolkit Developer Plugin for IE ($(var.platformFriendlyName))" />
-    <Property Id="ARPNOMODIFY" Value="1" />
-    <Property Id="ARPNOREPAIR" Value="1" />
-    <Property Id="ARPHELPLINK" Value="http://code.google.com/webtoolkit/" />
-    <Property Id="ARPURLINFOABOUT" Value="http://code.google.com/webtoolkit/" />
-
-    <Upgrade Id='$(var.upgradeCode)'>
-        <UpgradeVersion Property='UPGRADING'
-                  OnlyDetect='no'
-                  Minimum='0.0.0.0' IncludeMinimum='yes'
-                  Maximum='$(var.version)' IncludeMaximum='no' />
-        <UpgradeVersion Property='NEWERVERSIONDETECTED'
-                  OnlyDetect='yes'
-                  Minimum='$(var.version)' IncludeMinimum='yes' />
-    </Upgrade>
-
-    <InstallExecuteSequence>
-      <LaunchConditions After='AppSearch' />
-      <RemoveExistingProducts After='InstallValidate' />
-      <Custom Action="NewerVersionError" After="FindRelatedProducts">NEWERVERSIONDETECTED</Custom>
-    </InstallExecuteSequence>
-
-    <UI>
-        <Error Id="4000">A newer version of this product is already installed.</Error>
-    </UI>
-
-    <CustomAction Id="NewerVersionError" Error="4000"/>
-    
-    <!-- Define the install directory. -->
-    <?if $(var.platform)=x64 ?>
-    <Directory Id='TARGETDIR'    Name='SourceDir'>
-      <Directory Id='AppDataFolder' Name='AppData'>
-        <Directory Id='GoogleDir' Name='Google'>
-          <Component Id="RemoveGoogleDir" Guid="*" DiskId="1" Win64="$(var.win64Flag)">
-            <CreateFolder/>
-            <RemoveFolder Id="RemoveGoogleDirFolder" On="uninstall" />
-            <RegistryKey Root="HKMU" Key="$(var.gwtRegKey)" Action="createAndRemoveOnUninstall">
-              <RegistryValue Name="RemoveGoogleDirFolder" Value="" Type="string" KeyPath="yes"/>
-            </RegistryKey>
-          </Component>
-          <Directory Id='GoogleWebToolkitDir' Name='Google Web Toolkit'>
-            <Component Id="RemoveGoogleWebToolkitDir" Guid="*" DiskId="1" Win64="$(var.win64Flag)">
-              <CreateFolder/>
-              <RemoveFolder Id="RemoveGoogleWebToolkitDirFolder" On="uninstall" />
-              <RegistryKey Root="HKMU" Key="$(var.gwtRegKey)" Action="createAndRemoveOnUninstall">
-                <RegistryValue Name="RemoveGoogleWebToolkitDirFolder" Value="" Type="string" KeyPath="yes"/>
-              </RegistryKey>
-            </Component>
-            <Directory Id='DeveloperPluginDir' Name='Developer Plugin'>
-              <Component Id="RemoveDeveloperPluginDir" Guid="*" DiskId="1" Win64="$(var.win64Flag)">
-                <CreateFolder/>
-                <RemoveFolder Id="RemoveDeveloperPluginDirFolder" On="uninstall" />
-                <RegistryKey Root="HKMU" Key="$(var.gwtRegKey)" Action="createAndRemoveOnUninstall">
-                  <RegistryValue Name="RemoveDeveloperPluginDirFolder" Value="" Type="string" KeyPath="yes"/>
-                </RegistryKey>
-              </Component>
-              <Directory Id='INSTALLDIR' Name='IE'>
-                <Component Id="RemoveInstallDir" Guid="*" DiskId="1" Win64="$(var.win64Flag)">
-                  <CreateFolder/>
-                  <RemoveFolder Id="RemoveInstallerDirFolder" On="uninstall" />
-                  <RegistryKey Root="HKMU" Key="$(var.gwtRegKey)" Action="createAndRemoveOnUninstall">
-                    <RegistryValue Name="RemoveInstallerDirFolder" Value="" Type="string" KeyPath="yes"/>
-                  </RegistryKey>
-                </Component>
-              </Directory>
-            </Directory>
-          </Directory>
-        </Directory>
-      </Directory>
-    </Directory>
-    <?else?>
-    <Directory Id='TARGETDIR'    Name='SourceDir'>
-      <Directory Id='AppDataFolder' Name='AppData'>
-        <Directory Id='GoogleDir' Name='Google'>
-          <Component Id="RemoveGoogleDir" Guid="*" DiskId="1" Win64="$(var.win64Flag)">
-            <CreateFolder/>
-            <RemoveFolder Id="RemoveGoogleDirFolder" On="uninstall" />
-            <RegistryKey Root="HKMU" Key="$(var.gwtRegKey)" Action="createAndRemoveOnUninstall">
-              <RegistryValue Name="RemoveGoogleDirFolder" Value="" Type="string" KeyPath="yes"/>
-            </RegistryKey>
-          </Component>
-          <Directory Id='GoogleWebToolkitDir' Name='Google Web Toolkit'>
-            <Component Id="RemoveGoogleWebToolkitDir" Guid="*" DiskId="1" Win64="$(var.win64Flag)">
-              <CreateFolder/>
-              <RemoveFolder Id="RemoveGoogleWebToolkitDirFolder" On="uninstall" />
-              <RegistryKey Root="HKMU" Key="$(var.gwtRegKey)" Action="createAndRemoveOnUninstall">
-                <RegistryValue Name="RemoveGoogleWebToolkitDirFolder" Value="" Type="string" KeyPath="yes"/>
-              </RegistryKey>
-            </Component>
-            <Directory Id='DeveloperPluginDir' Name='Developer Plugin'>
-              <Component Id="RemoveDeveloperPluginDir" Guid="*" DiskId="1" Win64="$(var.win64Flag)">
-                <CreateFolder/>
-                <RemoveFolder Id="RemoveDeveloperPluginDirFolder" On="uninstall" />
-                <RegistryKey Root="HKMU" Key="$(var.gwtRegKey)" Action="createAndRemoveOnUninstall">
-                  <RegistryValue Name="RemoveDeveloperPluginDirFolder" Value="" Type="string" KeyPath="yes"/>
-                </RegistryKey>
-              </Component>
-              <Directory Id='INSTALLDIR' Name='IE'>
-                <Component Id="RemoveInstallDir" Guid="*" DiskId="1" Win64="$(var.win64Flag)">
-                  <CreateFolder/>
-                  <RemoveFolder Id="RemoveInstallerDirFolder" On="uninstall" />
-                  <RegistryKey Root="HKMU" Key="$(var.gwtRegKey)" Action="createAndRemoveOnUninstall">
-                    <RegistryValue Name="RemoveInstallerDirFolder" Value="" Type="string" KeyPath="yes"/>
-                  </RegistryKey>
-                </Component>
-              </Directory>
-            </Directory>
-          </Directory>
-        </Directory>
-      </Directory>
-    </Directory>
-    <?endif?>
-
-    <Component Id='registryValues' Directory='INSTALLDIR' Guid='*' >
-      <RegistryKey Root='HKCU' Action='createAndRemoveOnUninstall' Key='$(var.updateRegKey)'>
-        <RegistryValue Name='pv' Value='$(var.version)' Type='string' />
-        <RegistryValue Name='name' Value='$(var.appName) ($(var.platformFriendlyName))' Type='string' />
-        <RegistryValue Name='lang' Value='en' Type='string' />
-      </RegistryKey>
-    </Component>
-
-    <!-- Define the features to install. -->
-    <Feature Id='CompleteFeature' Display='expand' Level='1' Absent='disallow'>
-      <!--
-        Loaded from oophm.wxs.xml, which is generated by the build
-        script.
-        -->
-      <ComponentRef Id='RemoveGoogleDir' />
-      <ComponentRef Id='RemoveGoogleWebToolkitDir' />
-      <ComponentRef Id='RemoveDeveloperPluginDir' />
-      <ComponentRef Id='RemoveInstallDir' />
-      <ComponentGroupRef Id='oophmDll' />
-      <ComponentRef Id='registryValues' />
-    </Feature>
-  </Product>
-</Wix>
diff --git a/plugins/ie/installer/oophm.wxs b/plugins/ie/installer/oophm.wxs
deleted file mode 100644
index 4059a54..0000000
--- a/plugins/ie/installer/oophm.wxs
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
-	<?if $(var.platform)=x64 ?>
-	<?define win64Flag="yes" ?>
-	<?else ?>
-	<?define win64Flag="no" ?>
-	<?endif ?>
-    <Fragment>
-        <DirectoryRef Id="INSTALLDIR">
-            <Directory Id="dir315E0C50682DFB472927FE1254A22F6A" Name="$(var.platform)" />
-        </DirectoryRef>
-    </Fragment>
-    <Fragment>
-        <ComponentGroup Id="oophmDll">
-            <Component Win64="$(var.win64Flag)" Id="cmpC5076456A3EE2DC3FC2683246BE38AD6" Directory="dir315E0C50682DFB472927FE1254A22F6A" Guid="66F951FF-F3CE-4C41-92EC-886F3A985ADF">
-                <File Id="filEF78EFE99C26E3436EC9C8852A85BE88" KeyPath="yes" Source="$(var.binDir)\oophm.dll">
-                    <TypeLib Id="{9259F105-BE55-4BF6-B7CE-D0AA878C1BA6}" Description="oophm 1.0 Type Library" HelpDirectory="dir315E0C50682DFB472927FE1254A22F6A" Language="0" MajorVersion="1" MinorVersion="0">
-                        <AppId Description="oophm" Id="{F9365E53-5A14-47F3-BF1D-10CAAB815309}">
-                            <Class Id="{1D6156B6-002B-49E7-B5CA-C138FB843B4E}" Context="InprocServer32" Description="plugin Class" ThreadingModel="apartment" Version="1.0" Programmable="yes" Control="yes">
-                                <ProgId Id="oophm.plugin.1" Description="plugin Class">
-                                    <ProgId Id="oophm.plugin" Description="plugin Class" />
-                                </ProgId>
-                            </Class>
-                        </AppId>
-                        <Class Id="{1A2A78F4-B5A4-4208-B520-BDDA0A7EC5CB}" Context="InprocServer32" Description="ExceptionCatcher Class" ThreadingModel="apartment" Programmable="yes">
-                            <ProgId Id="oophm.ExceptionCatcher.1" Description="ExceptionCatcher Class">
-                                <ProgId Id="oophm.ExceptionCatcher" Description="ExceptionCatcher Class" />
-                            </ProgId>
-                        </Class>
-                        <Class Id="{644FD769-8B9D-4AC4-A79E-AAAF5CD751C1}" Context="InprocServer32" Description="JavaObject Class" ThreadingModel="apartment" Programmable="yes">
-                            <ProgId Id="oophm.JavaObject.1" Description="JavaObject Class">
-                                <ProgId Id="oophm.JavaObject" Description="JavaObject Class" />
-                            </ProgId>
-                        </Class>
-                        <Interface Id="{1C3FBB2D-58C2-426C-A461-E6002F9EE294}" Name="IExceptionCatcher" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
-                        <Interface Id="{58276E45-1F24-4B71-88AC-2A7D0C26CDFF}" Name="IJavaObject" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
-                        <Interface Id="{73607C2E-369B-4055-8020-D7643A59F521}" Name="Iplugin" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
-                        <Interface Id="{AB9B16A0-03E9-481E-ADF5-B00B860A8C3A}" Name="IpluginUI" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
-                    </TypeLib>
-                </File>
-                <RegistryValue Root="HKMU" Key="AppID\oophm.DLL" Name="AppID" Value="{F9365E53-5A14-47F3-BF1D-10CAAB815309}" Type="string" Action="write" />
-                <RegistryValue Root="HKMU" Key="CLSID\{1D6156B6-002B-49E7-B5CA-C138FB843B4E}\MiscStatus\1" Value="131473" Type="string" Action="write" />
-                <RegistryValue Root="HKMU" Key="CLSID\{1D6156B6-002B-49E7-B5CA-C138FB843B4E}\MiscStatus" Value="0" Type="string" Action="write" />
-                <RegistryValue Root="HKMU" Key="CLSID\{1D6156B6-002B-49E7-B5CA-C138FB843B4E}\ToolboxBitmap32" Value="[#filEF78EFE99C26E3436EC9C8852A85BE88], 102" Type="string" Action="write" />
-            </Component>
-        </ComponentGroup>
-    </Fragment>
-    <Fragment>
-        <DirectoryRef Id="dir315E0C50682DFB472927FE1254A22F6A" />
-    </Fragment>
-</Wix>
\ No newline at end of file
diff --git a/plugins/ie/installer/wix/README.txt b/plugins/ie/installer/wix/README.txt
deleted file mode 100644
index 846b7eb..0000000
--- a/plugins/ie/installer/wix/README.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-
-This folder contains WIX binaries used to build the installer. These files
-were copied as-is from the public website http://wix.codeplex.com/ and are 
-here for convenience and to make sure we have the right toolset version.
-
-for more information, license terms, please refer to:
-    http://wix.sourceforge.net/
-    http://wix.codeplex.com/
-    http://wix.codeplex.com/license
-    
diff --git a/plugins/ie/installer/wix/WixIIsExtension.dll b/plugins/ie/installer/wix/WixIIsExtension.dll
deleted file mode 100755
index 9c3e2a8..0000000
--- a/plugins/ie/installer/wix/WixIIsExtension.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/ie/installer/wix/WixUtilExtension.dll b/plugins/ie/installer/wix/WixUtilExtension.dll
deleted file mode 100755
index 36eac99..0000000
--- a/plugins/ie/installer/wix/WixUtilExtension.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/ie/installer/wix/WixVSExtension.dll b/plugins/ie/installer/wix/WixVSExtension.dll
deleted file mode 100755
index 2fa2a1b..0000000
--- a/plugins/ie/installer/wix/WixVSExtension.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/ie/installer/wix/candle.exe b/plugins/ie/installer/wix/candle.exe
deleted file mode 100755
index a5be152..0000000
--- a/plugins/ie/installer/wix/candle.exe
+++ /dev/null
Binary files differ
diff --git a/plugins/ie/installer/wix/candle.exe.config b/plugins/ie/installer/wix/candle.exe.config
deleted file mode 100644
index bed32a7..0000000
--- a/plugins/ie/installer/wix/candle.exe.config
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright (c) Microsoft Corporation.  All rights reserved.
--->
-<configuration>
-    <startup useLegacyV2RuntimeActivationPolicy="true">
-        <supportedRuntime version="v4.0" />
-        <supportedRuntime version="v2.0.50727" />
-    </startup>
-</configuration>
diff --git a/plugins/ie/installer/wix/darice.cub b/plugins/ie/installer/wix/darice.cub
deleted file mode 100644
index dab4567..0000000
--- a/plugins/ie/installer/wix/darice.cub
+++ /dev/null
Binary files differ
diff --git a/plugins/ie/installer/wix/heat.exe b/plugins/ie/installer/wix/heat.exe
deleted file mode 100755
index e5c9336..0000000
--- a/plugins/ie/installer/wix/heat.exe
+++ /dev/null
Binary files differ
diff --git a/plugins/ie/installer/wix/heat.exe.config b/plugins/ie/installer/wix/heat.exe.config
deleted file mode 100644
index 5d5aa30..0000000
--- a/plugins/ie/installer/wix/heat.exe.config
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright (c) Microsoft Corporation.  All rights reserved.
--->
-<configuration>
-    <appSettings>
-        <add key="extensions" value="WixIIsExtension;WixUtilExtension;WixVSExtension"/>
-    </appSettings>
-    <startup useLegacyV2RuntimeActivationPolicy="true">
-        <supportedRuntime version="v4.0" />
-        <supportedRuntime version="v2.0.50727" />
-    </startup>
-</configuration>
diff --git a/plugins/ie/installer/wix/libiconv2.dll b/plugins/ie/installer/wix/libiconv2.dll
deleted file mode 100755
index 544dd92..0000000
--- a/plugins/ie/installer/wix/libiconv2.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/ie/installer/wix/libintl3.dll b/plugins/ie/installer/wix/libintl3.dll
deleted file mode 100755
index ec11e6b..0000000
--- a/plugins/ie/installer/wix/libintl3.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/ie/installer/wix/light.exe b/plugins/ie/installer/wix/light.exe
deleted file mode 100755
index d36e01e..0000000
--- a/plugins/ie/installer/wix/light.exe
+++ /dev/null
Binary files differ
diff --git a/plugins/ie/installer/wix/light.exe.config b/plugins/ie/installer/wix/light.exe.config
deleted file mode 100644
index bed32a7..0000000
--- a/plugins/ie/installer/wix/light.exe.config
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright (c) Microsoft Corporation.  All rights reserved.
--->
-<configuration>
-    <startup useLegacyV2RuntimeActivationPolicy="true">
-        <supportedRuntime version="v4.0" />
-        <supportedRuntime version="v2.0.50727" />
-    </startup>
-</configuration>
diff --git a/plugins/ie/installer/wix/mspatchc.dll b/plugins/ie/installer/wix/mspatchc.dll
deleted file mode 100755
index 4720f1a..0000000
--- a/plugins/ie/installer/wix/mspatchc.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/ie/installer/wix/regex2.dll b/plugins/ie/installer/wix/regex2.dll
deleted file mode 100755
index f84a847..0000000
--- a/plugins/ie/installer/wix/regex2.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/ie/installer/wix/sed.exe b/plugins/ie/installer/wix/sed.exe
deleted file mode 100755
index 42c2677..0000000
--- a/plugins/ie/installer/wix/sed.exe
+++ /dev/null
Binary files differ
diff --git a/plugins/ie/installer/wix/wconsole.dll b/plugins/ie/installer/wix/wconsole.dll
deleted file mode 100755
index 916b492..0000000
--- a/plugins/ie/installer/wix/wconsole.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/ie/installer/wix/winterop.dll b/plugins/ie/installer/wix/winterop.dll
deleted file mode 100755
index 0385acd..0000000
--- a/plugins/ie/installer/wix/winterop.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/ie/installer/wix/wix.dll b/plugins/ie/installer/wix/wix.dll
deleted file mode 100755
index 5057e35..0000000
--- a/plugins/ie/installer/wix/wix.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/ie/oophm/oophm.sln b/plugins/ie/oophm/oophm.sln
deleted file mode 100644
index 7555624..0000000
--- a/plugins/ie/oophm/oophm.sln
+++ /dev/null
@@ -1,26 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "oophm", "oophm\oophm.vcxproj", "{EB69BDFE-9380-4C51-99E8-C3EB25AE36A2}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{EB69BDFE-9380-4C51-99E8-C3EB25AE36A2}.Debug|Win32.ActiveCfg = Debug|Win32
-		{EB69BDFE-9380-4C51-99E8-C3EB25AE36A2}.Debug|Win32.Build.0 = Debug|Win32
-		{EB69BDFE-9380-4C51-99E8-C3EB25AE36A2}.Debug|x64.ActiveCfg = Debug|x64
-		{EB69BDFE-9380-4C51-99E8-C3EB25AE36A2}.Debug|x64.Build.0 = Debug|x64
-		{EB69BDFE-9380-4C51-99E8-C3EB25AE36A2}.Release|Win32.ActiveCfg = Release|Win32
-		{EB69BDFE-9380-4C51-99E8-C3EB25AE36A2}.Release|Win32.Build.0 = Release|Win32
-		{EB69BDFE-9380-4C51-99E8-C3EB25AE36A2}.Release|x64.ActiveCfg = Release|x64
-		{EB69BDFE-9380-4C51-99E8-C3EB25AE36A2}.Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/plugins/ie/oophm/oophm/Constants.h b/plugins/ie/oophm/oophm/Constants.h
deleted file mode 100644
index 17c0b9d..0000000
--- a/plugins/ie/oophm/oophm/Constants.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#pragma once
-
-#include "stdafx.h"
-
-class Constants
-{
-public:
-    const static LPOLESTR __gwt_disconnected;
-    const static LPOLESTR valueOf;
-    const static LPOLESTR Error;
-    const static _bstr_t JavaScript;
-    const static LPOLESTR __gwt_makeResult;
-    const static LPOLESTR __gwt_makeTearOff;
-};
-
-__declspec(selectany) const LPOLESTR Constants::__gwt_disconnected = L"__gwt_disconnected";
-__declspec(selectany) const LPOLESTR Constants::valueOf = L"valueOf";
-__declspec(selectany) const LPOLESTR Constants::Error = L"Error";
-__declspec(selectany) const _bstr_t Constants::JavaScript = _bstr_t(L"JavaScript");
-__declspec(selectany) const LPOLESTR Constants::__gwt_makeResult = L"__gwt_makeResult";
-__declspec(selectany) const LPOLESTR Constants::__gwt_makeTearOff = L"__gwt_makeTearOff";
-
diff --git a/plugins/ie/oophm/oophm/ExceptionCatcher.cpp b/plugins/ie/oophm/oophm/ExceptionCatcher.cpp
deleted file mode 100644
index 44d9ff9..0000000
--- a/plugins/ie/oophm/oophm/ExceptionCatcher.cpp
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-// ExceptionCatcher.cpp : Implementation of CExceptionCatcher
-
-#include "stdafx.h"
-#include "Debug.h"
-#include "ExceptionCatcher.h"
-
-// CExceptionCatcher
-
-
-STDMETHODIMP CExceptionCatcher::getException(VARIANT* retVal)
-{
-  *retVal = caughtException.GetVARIANT();
-  return S_OK;
-}
-
-STDMETHODIMP CExceptionCatcher::hasSeenException(BOOL* retVal) {
-  *retVal = hasCaughtException;
-  return S_OK;
-}
-
-STDMETHODIMP CExceptionCatcher::CanHandleException(EXCEPINFO* exInfo, VARIANT* value) {
-  Debug::log(Debug::Debugging) << "Caught an exception from JS function" << Debug::flush;
-  if (hasCaughtException) {
-    Debug::log(Debug::Spam) << "Double-catching exception" << Debug::flush;
-    // We see this if a COM object that called a JavaObject doesn't recognize the
-    // throwing-exception return code; just keep the first exception that we've
-    // seen.
-    return S_OK;
-  }
-  caughtException = value;
-  hasCaughtException = true;
-  return S_OK;
-}
-
-STDMETHODIMP CExceptionCatcher::QueryService(const GUID& guidService, const IID& riid, void** ret) {
-  Debug::log(Debug::Spam) << "QueryService not supported by ExceptionCatcher" << Debug::flush;
-  return E_NOTIMPL;
-}
diff --git a/plugins/ie/oophm/oophm/ExceptionCatcher.h b/plugins/ie/oophm/oophm/ExceptionCatcher.h
deleted file mode 100644
index c1a091c..0000000
--- a/plugins/ie/oophm/oophm/ExceptionCatcher.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-// ExceptionCatcher.h : Declaration of the CExceptionCatcher
-
-#pragma once
-#include "resource.h"       // main symbols
-#include "comutil.h"
-#include "dispex.h"
-#include "oophm_i.h"
-
-
-#if defined(_WIN32_WCE) && !defined(_CE_DCOM) && !defined(_CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA)
-#error "Single-threaded COM objects are not properly supported on Windows CE platform, such as the Windows Mobile platforms that do not include full DCOM support. Define _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA to force ATL to support creating single-thread COM object's and allow use of it's single-threaded COM object implementations. The threading model in your rgs file was set to 'Free' as that is the only threading model supported in non DCOM Windows CE platforms."
-#endif
-
-
-
-// CExceptionCatcher
-
-class ATL_NO_VTABLE CExceptionCatcher :
-	public CComObjectRootEx<CComSingleThreadModel>,
-	public CComCoClass<CExceptionCatcher, &CLSID_ExceptionCatcher>,
-  public ICanHandleException,
-  public IServiceProvider,
-	public IDispatchImpl<IExceptionCatcher, &IID_IExceptionCatcher, &LIBID_oophmLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
-{
-public:
-	CExceptionCatcher()
-	{
-	}
-
-DECLARE_REGISTRY_RESOURCEID(IDR_EXCEPTIONCATCHER)
-
-
-BEGIN_COM_MAP(CExceptionCatcher)
-  COM_INTERFACE_ENTRY(ICanHandleException)
-  COM_INTERFACE_ENTRY(IServiceProvider)
-	COM_INTERFACE_ENTRY(IExceptionCatcher)
-	COM_INTERFACE_ENTRY(IDispatch)
-END_COM_MAP()
-
-
-
-	DECLARE_PROTECT_FINAL_CONSTRUCT()
-
-	HRESULT FinalConstruct()
-	{
-    hasCaughtException = false;
-		return S_OK;
-	}
-
-	void FinalRelease()
-	{
-	}
-
-public:
-  STDMETHOD(getException)(VARIANT* retVal);
-  STDMETHOD(hasSeenException)(BOOL* ret);
-  STDMETHOD(CanHandleException)(EXCEPINFO* exInfo, VARIANT* value);
-  STDMETHOD(QueryService)(const GUID& guidService, const IID& riid, void** ret);
-private:
-  _variant_t caughtException;
-  bool hasCaughtException;
-};
-
-OBJECT_ENTRY_AUTO(__uuidof(ExceptionCatcher), CExceptionCatcher)
diff --git a/plugins/ie/oophm/oophm/ExceptionCatcher.rgs b/plugins/ie/oophm/oophm/ExceptionCatcher.rgs
deleted file mode 100644
index ba8960b..0000000
--- a/plugins/ie/oophm/oophm/ExceptionCatcher.rgs
+++ /dev/null
@@ -1,26 +0,0 @@
-HKCR
-{
-	oophm.ExceptionCatcher.1 = s 'ExceptionCatcher Class'
-	{
-		CLSID = s '{1A2A78F4-B5A4-4208-B520-BDDA0A7EC5CB}'
-	}
-	oophm.ExceptionCatcher = s 'ExceptionCatcher Class'
-	{
-		CLSID = s '{1A2A78F4-B5A4-4208-B520-BDDA0A7EC5CB}'
-		CurVer = s 'oophm.ExceptionCatcher.1'
-	}
-	NoRemove CLSID
-	{
-		ForceRemove {1A2A78F4-B5A4-4208-B520-BDDA0A7EC5CB} = s 'ExceptionCatcher Class'
-		{
-			ProgID = s 'oophm.ExceptionCatcher.1'
-			VersionIndependentProgID = s 'oophm.ExceptionCatcher'
-			ForceRemove 'Programmable'
-			InprocServer32 = s '%MODULE%'
-			{
-				val ThreadingModel = s 'Apartment'
-			}
-			'TypeLib' = s '{9259F105-BE55-4BF6-B7CE-D0AA878C1BA6}'
-		}
-	}
-}
diff --git a/plugins/ie/oophm/oophm/IESessionHandler.cpp b/plugins/ie/oophm/oophm/IESessionHandler.cpp
deleted file mode 100644
index 6e2a653..0000000
--- a/plugins/ie/oophm/oophm/IESessionHandler.cpp
+++ /dev/null
@@ -1,469 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include "stdafx.h"
-#include "comutil.h"
-#include "dispex.h"
-#include "ExceptionCatcher.h"
-#include "IESessionHandler.h"
-#include "ServerMethods.h"
-#include "scoped_ptr/scoped_ptr.h"
-#include "IEUtils.h"
-#include "Constants.h"
-
-
-IESessionHandler::IESessionHandler(HostChannel* channel,
-                                   IHTMLWindow2* window) : SessionData(channel, window, this), jsObjectId(1)
-{
-  // window->put_defaultStatus(L"GWT Developer Plugin active");
-  IEUtils::resetResolver();
-}
-
-IESessionHandler::~IESessionHandler(void) {
-  Debug::log(Debug::Debugging) << "Destroying session handler" << Debug::flush;
-  Debug::log(Debug::Spam) << jsObjectsById.size() << " active JS object referances" << Debug::flush;
-  // Put any remaining JavaObject references into zombie-mode in case
-  // of lingering references
-  Debug::log(Debug::Spam) << javaObjectsById.size() << " active Java object references" << Debug::flush;
-
-  IEUtils::resetResolver();
-  std::map<int, IUnknown*>::iterator it = javaObjectsById.begin();
-  while (it != javaObjectsById.end()) {
-    ((CJavaObject*)it->second)->shutdown();
-    it++;
-  }
-  channel->disconnectFromHost();
-}
-
-void IESessionHandler::disconnectDetectedImpl() {
-  DISPID dispId;
-
-  HRESULT hr = IEUtils::resolveName(window, Constants::__gwt_disconnected, &dispId);
-  if(FAILED(hr)) {
-    Debug::log(Debug::Error) << "Unable to get dispId for __gwt_disconnected" << Debug::flush;
-    return;
-  }
-
-  DISPPARAMS dispParams = {NULL, NULL, 0, 0};
-  CComPtr<IDispatchEx> dispEx;
-  hr = IEUtils::Invoke(getWindow(), dispId, DISPATCH_METHOD, &dispParams, NULL, NULL, NULL);
-  if (FAILED(hr)) {
-    Debug::log(Debug::Error) << "Unable to invoke __gwt_disconnected" << Debug::flush;
-    SYSLOGERROR(L"failed to invoke __gwt_disconnected", L"hr=0x%08x", hr);
-  }
-}
-
-void IESessionHandler::fatalError(HostChannel& channel,
-    const std::string& message) {
-  SYSLOGERROR(L"IESessionHandler::fatalError()", L"%S", message.c_str());
-  Debug::log(Debug::Error) << "Fatal error: " << message << Debug::flush;
-}
-
-void IESessionHandler::freeJavaObject(unsigned int objId) {
-  // Remove the now-defunct object from the lookup table
-  javaObjectsById.erase(objId);
-
-  // and add it to the set of objects to free on the server
-  javaObjectsToFree.insert(objId);
-}
-
-void IESessionHandler::sendFreeValues(HostChannel& channel) {
-  int idCount = javaObjectsToFree.size();
-  if (idCount == 0) {
-    return;
-  }
-
-  Debug::log(Debug::Debugging) << "Freeing " << idCount << " Java objects on server" << Debug::flush;
-  scoped_array<int> ids(new int[idCount]);
-
-  std::set<int>::iterator it = javaObjectsToFree.begin();
-  for (int i = 0; it != javaObjectsToFree.end(); it++) {
-    ids[i++] = *it;
-  }
-
-  if (!ServerMethods::freeJava(channel, this, idCount, ids.get())) {
-    Debug::log(Debug::Error) << "Unable to free Java ids on server" << Debug::flush;
-  }
-
-  javaObjectsToFree.clear();
-}
-
-void IESessionHandler::freeValue(HostChannel& channel, int idCount, const int* ids) {
-  for (int i = 0; i < idCount; i++) {
-    int jsId = ids[i];
-    std::map<int, CComPtr<IUnknown>>::iterator it = jsObjectsById.find(jsId);
-    if (it == jsObjectsById.end()) {
-      Debug::log(Debug::Error) << "Trying to free unknown js id " << jsId << Debug::flush;
-      continue;
-    }
-    jsIdsByObject.erase(it->second);
-    jsObjectsById.erase(it);
-  }
-  Debug::log(Debug::Debugging) << "Freed " << idCount << " JS objects" << Debug::flush;
-}
-
-bool IESessionHandler::invoke(HostChannel& channel, const Value& thisObj,
-                               const std::string& methodName, int numArgs,
-                               const Value* const args, Value* returnValue)
-{
-  Debug::log(Debug::Debugging) << "Executing method " << methodName <<
-      " on object " << thisObj.toString() << Debug::flush;
-
-  DISPID methodDispId;
-  HRESULT hr = IEUtils::resolveName(window, methodName, &methodDispId);
-  if (FAILED(hr)) {
-    SYSLOGERROR(L"Failed to resolve name to DISPID",
-        L"IESessionHandler::invoke(thisObj=%S, methodName=%S)",
-        thisObj.toString().c_str(), methodName.c_str());
-    Debug::log(Debug::Error) << "Unable to find method " << methodName
-        << " on the window object" <<Debug::flush;
-    makeExceptionValue(*returnValue, "Unable to find named method on window");
-    return true;
-  }
-
-  // Get the JS Function object as an IDispatch
-  // TODO try PROPERTYGET|EXECUTE instead?
-  _variant_t functionObject;
-  DISPPARAMS disparamsNoArgs = {NULL, NULL, 0, 0};
-  hr = IEUtils::Invoke(window, methodDispId, DISPATCH_PROPERTYGET, &disparamsNoArgs,
-      functionObject.GetAddress(), NULL, NULL);
-  if (FAILED(hr)) {
-    Debug::log(Debug::Error) << "Unable to get method " << methodName
-        << Debug::flush;
-    makeExceptionValue(*returnValue, "Unable to get method from window");
-    return true;
-  } else if (functionObject.vt != VT_DISPATCH) {
-    Debug::log(Debug::Error) << "Did not get a VT_DISPATCH, got " <<
-        functionObject.vt << Debug::flush;
-    makeExceptionValue(*returnValue, "Did not get a VT_DISPATCH");
-    return true;
-  }
-
-  // See if it's an IDispatchEx
-  CComPtr<IDispatchEx> ex;
-  if (functionObject.pdispVal->QueryInterface(&ex)) {
-    // Probably not a function
-    Debug::log(Debug::Error) << "Failed to invoke " << methodName <<
-        " which is not an IDispatchEx" << Debug::flush;
-    makeExceptionValue(*returnValue, "Unable to invoke method");
-    return true;
-  }
-
-  // Convert the function arguments
-  // The parameters in the DISPARAMS are backwards
-  // Named parameters are first
-  int jsArgsLen = numArgs + 1;
-  scoped_array<_variant_t> jsargs(new _variant_t[jsArgsLen]);
-  DISPID thisId[] = {DISPID_THIS};
-  makeValueRef(jsargs[0], thisObj);
-  for (int i = 0; i < numArgs; i++) {
-    makeValueRef(jsargs[jsArgsLen - 1 - i], args[i]);
-  }
-  DISPPARAMS callDispParams = {jsargs.get(), thisId, numArgs + 1, 1};
-  EXCEPINFO excepInfo;
-  _variant_t retVal;
-  CComPtr<IExceptionCatcher> catcher;
-  CExceptionCatcher::CreateInstance(&catcher);
-
-  CComPtr<IServiceProvider> serviceProvider;
-  catcher->QueryInterface(&serviceProvider);
-  hr = ex->InvokeEx(DISPID_VALUE, LOCALE_SYSTEM_DEFAULT, DISPATCH_METHOD,
-    &callDispParams, retVal.GetAddress(), &excepInfo, serviceProvider);
-
-  // There are cases where an exception was thrown and we've caught it, but
-  // the return value from InvokeEx is still S_OK.  Thus, we check our
-  // ExceptionCatcher before using the res value to determine failure.
-  BOOL exceptionFlag = false;
-  catcher->hasSeenException(&exceptionFlag);
-  if (exceptionFlag) {
-    VARIANT exceptionVariant;
-    catcher->getException(&exceptionVariant);
-    _variant_t exception(exceptionVariant);
-
-    makeValue(*returnValue, exception);
-    exceptionFlag = true;
-
-  } else if (!SUCCEEDED(hr)) {
-    makeExceptionValue(*returnValue, "Unknown failure");
-    exceptionFlag = true;
-
-  } else {
-    // Success
-    makeValue(*returnValue, retVal);
-  }
-  return exceptionFlag != 0;
-}
-
-bool IESessionHandler::invokeSpecial(HostChannel& channel, SpecialMethodId method, int numArgs,
-                                     const Value* const args, Value* returnValue)
-{
-  Debug::log(Debug::Error) << "InvokeSpecial is currently unimplemented" << Debug::flush;
-  makeExceptionValue(*returnValue, "InvokeSpecial is currently unimplemented");
-  return true;
-}
-
-
-void IESessionHandler::loadJsni(HostChannel& channel, const std::string& js) {
-    Debug::log(Debug::Spam) << ">>> loadJsni\n" << js << "\n<<< loadJsni" << Debug::flush;
-
-    _variant_t retVal;
-    HRESULT hr = window->execScript(UTF8ToBSTR(js.length(), js.c_str()),
-        Constants::JavaScript, retVal.GetAddress());
-    if (FAILED(hr)) {
-        Debug::log(Debug::Error) << "Unable to evaluate JSNI code" << Debug::flush;
-    }
-}
-
-void IESessionHandler::makeException(_variant_t& in, const char* message) {
-  Debug::log(Debug::Debugging) << "Creating exception variant " <<
-      std::string(message) << Debug::flush;
-
-  SYSLOGERROR(L"IESessionHandler::makeException()", L"exception: %S", message);
-  DISPID dispId;
-  HRESULT hr = IEUtils::resolveName(window, Constants::Error, &dispId);
-  if (FAILED(hr)) {
-      SYSLOGERROR(L"failed to resolve Error object", L"hr=0x%08x", hr);
-      return;
-  }
-
-  DISPPARAMS emptyParams = {NULL, NULL, 0, 0};
-  _variant_t errorConstructor;
-  hr = IEUtils::Invoke(window, dispId, DISPATCH_PROPERTYGET, &emptyParams,
-      errorConstructor.GetAddress(), NULL, NULL);
-  if (FAILED(hr)) {
-    Debug::log(Debug::Error) << "Unable to get Error constructor" << Debug::flush;
-    in.SetString("Unable to get Error constructor");
-  }
-
-  CComPtr<IDispatchEx> ex;
-  hr = errorConstructor.pdispVal->QueryInterface(&ex);
-  if (FAILED(hr)) {
-    Debug::log(Debug::Error) << "Error constructor not IDispatchEx" << Debug::flush;
-    in.SetString("Error constructor not IDispatchEx");
-  }
-
-  _variant_t param = _variant_t(message);
-  DISPPARAMS dispParams = {&param, NULL, 1, 0};
-
-  hr = ex->InvokeEx(DISPID_VALUE, LOCALE_SYSTEM_DEFAULT, DISPATCH_CONSTRUCT,
-    &dispParams, in.GetAddress(), NULL, NULL);
-
-  if (FAILED(hr)) {
-    Debug::log(Debug::Error) << "Unable to invoke Error constructor" << Debug::flush;
-    in.SetString("Unable to invoke Error constructor");
-  }
-}
-
-void IESessionHandler::makeExceptionValue(Value& in, const char* message) {
-  Debug::log(Debug::Debugging) << "Creating exception value " << std::string(message) << Debug::flush;
-  _variant_t exception;
-  makeException(exception, message);
-  makeValue(in, exception);
-}
-
-void IESessionHandler::makeValue(Value& retVal, const _variant_t& value) {
-  CComPtr<IDispatch> dispObj;
-  CComPtr<IJavaObject> javaObject;
-
-  switch (value.vt) {
-    case VT_EMPTY:
-      retVal.setUndefined();
-      break;
-
-    case VT_NULL:
-      retVal.setNull();
-      break;
-
-    case VT_BOOL:
-      retVal.setBoolean(VARIANT_TRUE == value.boolVal);
-      break;
-
-    case VT_BSTR:
-      retVal.setString(BSTRToUTF8(value.bstrVal));
-      break;
-
-    case VT_I4:
-      retVal.setInt(value.lVal);
-      break;
-
-    case VT_I8:
-      retVal.setLong(value.llVal);
-      break;
-
-    case VT_R4:
-      retVal.setFloat(value.fltVal);
-      break;
-
-    case VT_R8:
-      retVal.setDouble(value.dblVal);
-      break;
-
-    case VT_DISPATCH:
-      dispObj = value.pdispVal;
-
-      if (!dispObj) {
-        // XXX Determine if this is normal operation
-        retVal.setUndefined();
-
-      } else if (!dispObj->QueryInterface(&javaObject)) {
-        // It's one of our Java Object proxies
-        // XXX This casting is a hack
-        retVal.setJavaObject(((CJavaObject*)javaObject.p)->getObjectId());
-
-      } else {
-        _variant_t stringValue;
-        DISPPARAMS emptyParams = {NULL, NULL, 0, 0};
-        DISPID valueOfDispId = -1;
-        // See if it's a wrapped String object by invoking valueOf()
-        HRESULT hr = dispObj->GetIDsOfNames(IID_NULL, (LPOLESTR*)&Constants::valueOf, 1,
-            LOCALE_SYSTEM_DEFAULT, &valueOfDispId);
-        if ((valueOfDispId != -1) &&
-            SUCCEEDED(dispObj->Invoke(valueOfDispId, IID_NULL, LOCALE_SYSTEM_DEFAULT,
-              DISPATCH_METHOD, &emptyParams, stringValue.GetAddress(),
-              NULL, NULL)) &&
-            stringValue.vt == VT_BSTR) {
-          retVal.setString(BSTRToUTF8(stringValue.bstrVal));
-
-        } else {
-          // It's a plain-old JavaScript Object
-
-          // We ask for the IUnknown interface since that's the only
-          // COM interface guaranteed to have object-identity semantics
-          CComPtr<IUnknown> asUnknown;
-          dispObj->QueryInterface(&asUnknown);
-
-          // See if we already know about this object
-          std::map<IUnknown*, int>::iterator it = jsIdsByObject.find(asUnknown);
-          if (it != jsIdsByObject.end()) {
-            retVal.setJsObjectId(it->second);
-
-          } else {
-            // Allocate a new id
-            int objId = ++jsObjectId;
-            jsObjectsById[objId] = asUnknown;
-            jsIdsByObject[asUnknown] = objId;
-            retVal.setJsObjectId(objId);
-          }
-        }
-      }
-      break;
-
-    default:
-      Debug::log(Debug::Error) << "Unhandled variant type " << value.vt << Debug::flush;
-      retVal.setString("Unhandled variant type");
-  }
-}
-
-void IESessionHandler::makeValueRef(_variant_t& retVal, const Value& value) {
-  switch (value.getType()) {
-    case Value::NULL_TYPE:
-      retVal.ChangeType(VT_NULL);
-      break;
-
-    case Value::BOOLEAN:
-      retVal = value.getBoolean();
-      break;
-
-    case Value::BYTE:
-      retVal = value.getByte();
-      break;
-
-    case Value::CHAR:
-      retVal = value.getChar();
-      break;
-
-    case Value::SHORT:
-      retVal = value.getShort();
-      break;
-
-    case Value::INT:
-      retVal = value.getInt();
-      break;
-
-    case Value::LONG:
-      retVal = value.getLong();
-      break;
-
-    case Value::FLOAT:
-      retVal = value.getFloat();
-      break;
-
-    case Value::DOUBLE:
-      retVal = value.getDouble();
-      break;
-
-    case Value::STRING:
-      // The copy-constructor does not correctly handle embedded nulls
-      retVal.bstrVal = UTF8ToBSTR(value.getString().length(),
-        value.getString().c_str()).Detach();
-      retVal.vt = VT_BSTR;
-      break;
-
-    case Value::JAVA_OBJECT:
-      {
-        int javaId = value.getJavaObjectId();
-
-        std::map<int, IUnknown*>::iterator i = javaObjectsById.find(javaId);
-        if (i == javaObjectsById.end()) {
-          CComPtr<IUnknown> target;
-
-          // Create a new instance of the Java object proxy type
-          CJavaObject::CreateInstance(&target);
-
-          // Because we used CreateInstance, we can cast it back to the concrete type
-          // which allows us to pass pointers around, since we're guaranteed that
-          // it is in the same process space
-          ((CJavaObject*)target.p)->initialize(javaId, this);
-          target->QueryInterface(&retVal.pdispVal);
-
-          // Don't artificially increase the lifetime of a Java object proxy by
-          // calling Detach; we want Release to be called.
-          javaObjectsById[javaId] = target;
-
-          // We may have previously released the proxy for the same object id,
-          // but have not yet sent a free message back to the server.
-          javaObjectsToFree.erase(javaId);
-
-        } else {
-          i->second->QueryInterface(&retVal.pdispVal);
-        }
-        retVal.vt = VT_DISPATCH;
-      }
-      break;
-
-    case Value::JS_OBJECT:
-      {
-        int jsId = value.getJsObjectId();
-
-        std::map<int, CComPtr<IUnknown>>::iterator i = jsObjectsById.find(jsId);
-        if (i == jsObjectsById.end()) {
-          Debug::log(Debug::Error) << "Missing jsObject with id " << jsId << Debug::flush;
-
-        } else {
-          i->second->QueryInterface(&retVal.pdispVal);
-          retVal.vt = VT_DISPATCH;
-        }
-      }
-      break;
-
-    case Value::UNDEFINED:
-      retVal.ChangeType(VT_EMPTY);
-      break;
-
-    default:
-      Debug::log(Debug::Error) << "Unknown Value type " << value.toString() << Debug::flush;
-  }
-}
diff --git a/plugins/ie/oophm/oophm/IESessionHandler.h b/plugins/ie/oophm/oophm/IESessionHandler.h
deleted file mode 100644
index 2675810..0000000
--- a/plugins/ie/oophm/oophm/IESessionHandler.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#pragma once
-#include <map>
-#include <set>
-#include "HostChannel.h"
-#include "JavaObject.h"
-#include "mshtml.h"
-#include "oophm_i.h"
-#include "SessionData.h"
-#include "SessionHandler.h"
-
-class IESessionHandler :
-  public SessionData,
-  public SessionHandler
-{
-public:
-  IESessionHandler(HostChannel* channel, IHTMLWindow2* window);
-  ~IESessionHandler(void);
-  virtual void freeJavaObject(unsigned int objId);
-  virtual void makeValue(Value& value, const _variant_t& in);
-  virtual void makeValueRef(_variant_t& value, const Value& in);
-
-protected:
-  virtual void disconnectDetectedImpl();
-  virtual void fatalError(HostChannel& channel, const std::string& messsage);
-  virtual void freeValue(HostChannel& channel, int idCount, const int* ids);
-  virtual void loadJsni(HostChannel& channel, const std::string& js);
-  virtual bool invoke(HostChannel& channel, const Value& thisObj, const std::string& methodName,
-      int numArgs, const Value* const args, Value* returnValue);
-  virtual bool invokeSpecial(HostChannel& channel, SpecialMethodId method, int numArgs,
-      const Value* const args, Value* returnValue);
-  virtual void sendFreeValues(HostChannel& channel);
-
-
-private:
-  int jsObjectId;
-
-  /*
-  * This must be IUnknown and not IDispatch because the IUnknown
-  * interface is the only COM interface guaranteed to be stable for
-  * any particular instance of an object.  It appears as though
-  * Event objects exhibit the multiple-interface behavior.
-  *
-  * Furthermore, this map is not a CComPtr map because we don't
-  * to artificially add to the retain count of the Java objects.
-  */
-  std::map<int, IUnknown*> javaObjectsById;
-  std::set<int> javaObjectsToFree;
-
-  // Same as above; only one map needs to increment reference count.
-  std::map<int, CComPtr<IUnknown>> jsObjectsById;
-  std::map<IUnknown*, int> jsIdsByObject;
-
-  /*
-   * Create a JavaScript Error object with the given message.
-   */
-  void makeException(_variant_t& value, const char* message);
-
-  /*
-   * Create a exception Value that contains the given message.
-   */
-  void makeExceptionValue(Value& value, const char* message);
-};
diff --git a/plugins/ie/oophm/oophm/IEUtils.h b/plugins/ie/oophm/oophm/IEUtils.h
deleted file mode 100644
index 8c5dd28..0000000
--- a/plugins/ie/oophm/oophm/IEUtils.h
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
-* Copyright 2008 Google Inc.
-*
-* Licensed 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.
-*/
-
-#pragma once
-#include "stdafx.h"
-#include "comutil.h"
-#include "dispex.h"
-#include "SessionData.h"
-
-#define SYSLOGERROR(MSG,FMT,...) \
-    LPCWSTR msgArr[3] = {NULL, NULL, NULL}; \
-    msgArr[0] = MSG; \
-    WCHAR buffer1[512]; \
-    swprintf(buffer1, sizeof(buffer1)/sizeof(WCHAR), FMT, __VA_ARGS__); \
-    msgArr[1] = buffer1; \
-    WCHAR buffer2[512]; \
-    swprintf(buffer2, sizeof(buffer2)/sizeof(WCHAR), L"function: %S, file: %S, line: %d", __FUNCTION__, __FILE__, __LINE__); \
-    msgArr[2] = buffer2; \
-    IEUtils::WriteToLog((LPCWSTR*)msgArr, 3);
-
-
-typedef HRESULT (*PFNRESOLVENAME)(IDispatch*, LPOLESTR, DISPID*);
-
-//
-// This class is a collection of helper methods specific to IE
-// It finds the appropriate implementation that resolves javascript
-// names regardless of the specific documentMode that browser is 
-// running. 
-//
-class IEUtils
-{
-    static HANDLE hEventLog;
-    static LPWSTR logSourceName;
-    static PFNRESOLVENAME pfnResolveName;
-
-    //
-    // finds which IDispatch interface is capable of
-    // of 'resolving' names.
-    //
-    static PFNRESOLVENAME getResolveNameFunction(IDispatch* obj)
-    {
-        _variant_t retVal;
-        std::string probeScript("function _FN3E9738B048214100A6D6B750F2230A34() { return null; }");
-        CComQIPtr<IHTMLWindow2> spWindow2(obj);
-        if (!spWindow2) {
-            return &IEUtils::internalResolveNameEx;
-        }
-        LPOLESTR functionName = L"_FN3E9738B048214100A6D6B750F2230A34";
-        HRESULT hr = spWindow2->execScript(UTF8ToBSTR(probeScript.length(), probeScript.c_str()),
-            UTF8ToBSTR(10, "JavaScript"), retVal.GetAddress());
-        if (SUCCEEDED(hr)) {
-            DISPID dispId;
-            hr = internalResolveName(spWindow2, functionName, &dispId);
-            if (SUCCEEDED(hr)) {
-                return &IEUtils::internalResolveName;
-            } else {
-                hr = internalResolveNameEx(spWindow2, functionName, &dispId);
-                if (SUCCEEDED(hr)) {
-                    return &IEUtils::internalResolveNameEx;
-                } else {
-                    SYSLOGERROR(L"Failed to find a IDispatch Implementation able to resolve names",
-                        L"hr=0x%08x", hr);
-                }
-            }
-        }
-        return &IEUtils::internalResolveNameEx;
-    }
-
-    //
-    // resolves 'name' using default IDispatch interface
-    //
-    static HRESULT internalResolveName(IDispatch* obj, LPOLESTR name, DISPID *dispID)
-    {
-        assert(obj != NULL);
-        return obj->GetIDsOfNames(IID_NULL, &name, 1, LOCALE_SYSTEM_DEFAULT, dispID);
-    }
-
-    //
-    // resolves 'name' using IDispatchEx interface
-    //
-    static HRESULT internalResolveNameEx(IDispatch* obj, LPOLESTR name, DISPID *dispID)
-    {
-        assert(obj != NULL);
-        CComQIPtr<IDispatchEx> spDispEx(obj);
-        if (!spDispEx) {
-            return E_FAIL;
-        }
-        return spDispEx->GetIDsOfNames(IID_NULL, &name, 1, LOCALE_SYSTEM_DEFAULT, dispID);
-    }
-
-public:
-
-    static void InitEventLog() {
-        if (NULL == hEventLog) {
-            hEventLog = OpenEventLog(NULL, IEUtils::logSourceName);
-        }
-    }
-
-    static void WriteToLog(LPCWSTR* rgMsg, INT size) {
-        if (NULL != hEventLog) {
-            ReportEvent(hEventLog, EVENTLOG_ERROR_TYPE, 0, 0, NULL, size, 0, rgMsg, NULL);
-        }
-    }
-
-    static void CloseEventLog()
-    {
-        if (NULL != hEventLog) {
-            ::CloseEventLog(hEventLog);
-        }
-    }
-
-    static WCHAR* GetSysErrorMessage(DWORD dwErrorCode)
-    {
-        WCHAR * pMsgBuf = NULL;
-        DWORD dwSize = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM |
-            FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS,
-            NULL, dwErrorCode, 0, (LPTSTR) &pMsgBuf, 0, NULL);
-        if (dwSize) {
-            return pMsgBuf;
-        }
-        return NULL;
-    }
-
-    static HRESULT resolveName(IDispatch* obj, LPOLESTR name, DISPID *dispID)
-    {
-        if (NULL == pfnResolveName) {
-            pfnResolveName = getResolveNameFunction(obj);
-        }
-        assert(NULL != pfnResolveName);
-        return pfnResolveName(obj, name, dispID);
-    }
-
-    static HRESULT resolveName(IDispatch* obj, std::string name, DISPID *dispID)
-    {
-        return resolveName(obj, UTF8ToBSTR(name.length(), name.c_str()), dispID);
-    }
-
-    static void resetResolver()
-    {
-        pfnResolveName = NULL;
-    }
-
-    static HRESULT Invoke(IUnknown* obj,
-        DISPID id,
-        WORD wFlags,
-        DISPPARAMS *pdp,
-        VARIANT *pvarRes,
-        EXCEPINFO *pei,
-        UINT *puArgErr)
-    {
-        HRESULT hr = S_OK;
-        CComQIPtr<IDispatchEx> spDispEx(obj);
-        if (!spDispEx) {
-            return E_FAIL;
-        }
-        hr = spDispEx->Invoke(id, IID_NULL, LOCALE_SYSTEM_DEFAULT, wFlags, pdp, pvarRes, pei, puArgErr);
-        return hr;
-    }
-};
-
-__declspec(selectany) HANDLE IEUtils::hEventLog;
-__declspec(selectany) LPWSTR IEUtils::logSourceName = L"GWT Developer Mode Plugin";
-__declspec(selectany) HRESULT (*IEUtils::pfnResolveName)(IDispatch* object, LPOLESTR name, DISPID *dispID);
-
-
diff --git a/plugins/ie/oophm/oophm/JavaObject.cpp b/plugins/ie/oophm/oophm/JavaObject.cpp
deleted file mode 100644
index fdf87ce..0000000
--- a/plugins/ie/oophm/oophm/JavaObject.cpp
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-// JavaObject.cpp : Implementation of CJavaObject
-
-#include "stdafx.h"
-#include "InvokeMessage.h"
-#include "JavaObject.h"
-#include "ReturnMessage.h"
-#include "ServerMethods.h"
-#include "scoped_ptr/scoped_ptr.h"
-#include "IEUtils.h"
-#include "Constants.h"
-//#include "activscp.h"
-
-static const DISPID DISPID_TOSTRING = 1;
-
-// CJavaObject
-STDMETHODIMP CJavaObject::GetDispID(BSTR name, DWORD options, DISPID* dispId){
-  std::string nameString = BSTRToUTF8(name);
-
-  // toString is the only non-numeric dispid we recognize
-  if (nameString == "toString") {
-    *dispId = DISPID_TOSTRING;
-    return S_OK;
-  }
-
-  char* lastChar;
-  int d = strtol(nameString.c_str(), &lastChar, 10);
-
-  if (*lastChar != '\0' || d < 0) {
-    Debug::log(Debug::Error) << "Unable to get dispatch id for " << nameString << Debug::flush;
-    // Set to unknown name in the case of an error
-    *dispId = DISPID_UNKNOWN;
-    return DISP_E_UNKNOWNNAME;
-  }
-  *dispId = d;
-  return S_OK;
-}
-
-STDMETHODIMP CJavaObject::DeleteMemberByName(BSTR,DWORD){
-  return S_FALSE;
-}
-
-STDMETHODIMP CJavaObject::DeleteMemberByDispID(DISPID){
-  return S_FALSE;
-}
-
-STDMETHODIMP CJavaObject::GetMemberProperties(DISPID dispId, DWORD options, DWORD* retVal){
-  Debug::log(Debug::Error) << "Hit unimplemented GetMemberProperties" << Debug::flush;
-  return DISP_E_UNKNOWNNAME;
-}
-
-STDMETHODIMP CJavaObject::GetMemberName(DISPID,BSTR *){
-  Debug::log(Debug::Error) << "Hit unimplemented GetMemberName" << Debug::flush;
-  return DISP_E_UNKNOWNNAME;
-}
-
-STDMETHODIMP CJavaObject::GetNextDispID(DWORD,DISPID,DISPID *){
-  Debug::log(Debug::Error) << "Hit unimplemented GetNextDispID" << Debug::flush;
-  return DISP_E_UNKNOWNNAME;
-}
-
-STDMETHODIMP CJavaObject::GetNameSpaceParent(IUnknown **unk){
-  sessionData->getWindow()->QueryInterface(unk);
-  return S_OK;
-}
-
-STDMETHODIMP CJavaObject::GetIDsOfNames(REFIID riid, LPOLESTR* rgszNames,
-                                        UINT cNames, LCID lcid, DISPID* rgdispid)
-{
-  USES_CONVERSION;
-  // Stack-allocated
-  return GetDispID(OLE2BSTR(*rgszNames), 0, rgdispid);
-}
-
-STDMETHODIMP CJavaObject::Invoke(DISPID dispidMember, REFIID riid,
-                                 LCID lcid, WORD wFlags, DISPPARAMS* pdispparams,
-                                 VARIANT* pvarResult, EXCEPINFO* pexcepinfo,
-                                 UINT* puArgErr)
-{
-  return InvokeEx(dispidMember, lcid, wFlags, pdispparams, pvarResult,
-    pexcepinfo, NULL);
-}
-
-STDMETHODIMP CJavaObject::InvokeEx(DISPID dispidMember, LCID lcid, WORD wFlags,
-                                   DISPPARAMS* pdispparams, VARIANT* pvarResult,
-                                   EXCEPINFO* pexcepinfo,
-                                   IServiceProvider* pspCaller)
-{
-  Debug::log(Debug::Debugging) << "Invoking " << dispidMember << " on Java object " << objId << Debug::flush;
-
-  if (!sessionData) {
-    // Prevent errors if the object is retained post-disconnect
-    Debug::log(Debug::Warning) << "JavaObject retained beyound session shutdown" << Debug::flush;
-    return DISP_E_MEMBERNOTFOUND;
-  }
-
-  HostChannel* channel = sessionData->getHostChannel();
-  Value thisRef = Value();
-  thisRef.setJavaObject(objId);
-
-  if ((wFlags & DISPATCH_PROPERTYGET) && dispidMember == DISPID_VALUE &&
-    pdispparams->cArgs - pdispparams->cNamedArgs == 0) {
-      // This is an expression like ('' + obj)
-      // raw toString();
-      wFlags = DISPATCH_METHOD;
-      dispidMember = DISPID_TOSTRING;
-  }
-
-  if (wFlags & DISPATCH_METHOD) {
-    Debug::log(Debug::Spam) << "Dispatching method " << dispidMember << " on " << objId << Debug::flush;
-
-    if (!(dispidMember == DISPID_VALUE || dispidMember == DISPID_TOSTRING)) {
-      Debug::log(Debug::Error) << "Cannot dispatch for non-default id: " << dispidMember << Debug::flush;
-      return E_FAIL;
-    }
-    scoped_array<Value> args;
-    Value javaDispatchId;
-    int numArgs;
-
-    if (dispidMember == DISPID_VALUE) {
-      numArgs = pdispparams->cArgs - pdispparams->cNamedArgs - 2;
-      if (numArgs < 0) {
-        // Indicates an error in JSNI rewriting or dispatch code
-        Debug::log(Debug::Error) << "Insufficient number of arguments" << Debug::flush;
-        return E_FAIL;
-      }
-      args.reset(new Value[numArgs]);
-      // The dispatch parameters are backwards
-      sessionData->makeValue(javaDispatchId, pdispparams->rgvarg[pdispparams->cArgs - 1]);
-      sessionData->makeValue(thisRef, pdispparams->rgvarg[pdispparams->cArgs - 2]);
-      for (int i = 0; i < numArgs; i++) {
-        int index = pdispparams->cArgs - 3 - i;
-        VARIANTARG element = pdispparams->rgvarg[index];
-        sessionData->makeValue(args[i], element);
-      }
-    } else if (dispidMember == DISPID_TOSTRING) {
-      // raw toString();
-      numArgs = 0;
-      javaDispatchId.setInt(0);
-    }
-
-    bool isException = false;
-    Value returnValue;
-    if (!InvokeMessage::send(*channel, thisRef, javaDispatchId.getInt(), numArgs, args.get())) {
-      Debug::log(Debug::Error) << "Unable to send method invocation" << Debug::flush;
-    } else {
-      scoped_ptr<ReturnMessage> m(channel->reactToMessagesWhileWaitingForReturn(
-      sessionData->getSessionHandler()));
-
-      if (!m.get()) {
-        Debug::log(Debug::Error) << "Did not receive ReturnMessage" << Debug::flush;
-      } else {
-        if (dispidMember == DISPID_TOSTRING) {
-          // raw toString();
-          if (pvarResult) {
-            // This will be NULL when the caller doesn't care about the return value
-            _variant_t returnVariant;
-            sessionData->makeValueRef(returnVariant, m->getReturnValue());
-            *pvarResult = returnVariant.Detach();
-          }
-          return m->isException() ? E_FAIL : S_OK;
-        }
-        isException = m->isException();
-        returnValue = m->getReturnValue();
-      }
-    }
-
-    DISPID dispId;
-
-    HRESULT hr = IEUtils::resolveName(sessionData->getWindow(), Constants::__gwt_makeResult, &dispId);
-    if (FAILED(hr)) {
-        Debug::log(Debug::Error) << "Unable to get dispId for __gwt_makeResult" << Debug::flush;
-        return E_FAIL;
-    }
-
-    // Call __gwt_makeResult(isException, returnValue)
-    scoped_array<_variant_t> varArgs(new _variant_t[2]);
-    // Args go backwards.
-    varArgs[1] = (isException ? 1 : 0);
-    sessionData->makeValueRef(varArgs[0], returnValue);
-    DISPPARAMS dispParams = {varArgs.get(), NULL, 2, 0};
-    CComPtr<IDispatchEx> dispEx;
-    sessionData->getWindow()->QueryInterface(&dispEx);
-    return dispEx->InvokeEx(dispId, LOCALE_SYSTEM_DEFAULT, DISPATCH_METHOD,
-      &dispParams, pvarResult, pexcepinfo, pspCaller);
-
-  } else if (wFlags & DISPATCH_PROPERTYGET) {
-    Debug::log(Debug::Spam) << "Getting property " << dispidMember << " on " << objId << Debug::flush;
-
-    if (dispidMember == DISPID_VALUE) {
-      this->QueryInterface(IID_IDispatch, (void**)&pvarResult->pdispVal);
-      pvarResult->vt = VT_DISPATCH;
-
-    } else if (dispidMember == DISPID_TOSTRING) {
-      // Asking for a tear-off of the .toString function
-      Debug::log(Debug::Spam) << "Making .toString tearoff" << Debug::flush;
-
-      // Get a reference to __gwt_makeTearOff
-      DISPID tearOffDispid;
-      HRESULT hr = IEUtils::resolveName(sessionData->getWindow(), Constants::__gwt_makeTearOff, &tearOffDispid);
-      if (FAILED(hr)) {
-        Debug::log(Debug::Error) << "Unable to find __gwt_makeTearOff" << Debug::flush;
-        return E_FAIL;
-      }
-
-      scoped_array<_variant_t> tearOffArgs(new _variant_t[3]);
-      // Parameters are backwards:
-      // __gwt_makeTearOff(proxy, dispId, argCount);
-      tearOffArgs[2] = this; // proxy
-      tearOffArgs[1] = 0; // dispId
-      tearOffArgs[0] = 0; // argCount
-      DISPPARAMS tearOffParams = {tearOffArgs.get(), NULL, 3, 0};
-
-      // Invoke __gwt_makeTearOff
-      hr = IEUtils::Invoke(sessionData->getWindow(), tearOffDispid,DISPATCH_METHOD,
-          &tearOffParams, pvarResult, NULL, 0);
-      if (FAILED(hr)) {
-        Debug::log(Debug::Error) << "Unable to invoke __gwt_makeTearOff" << Debug::flush;
-        return E_FAIL;
-      }
-
-    } else {
-      Value ret = ServerMethods::getProperty(*channel,
-        sessionData->getSessionHandler(), objId, dispidMember);
-
-      if (ret.isUndefined()) {
-        Debug::log(Debug::Error) << "Undefined get from Java object" << Debug::flush;
-        return E_FAIL;
-      }
-
-      _variant_t returnVariant;
-      sessionData->makeValueRef(returnVariant, ret);
-      *pvarResult = returnVariant.Detach();
-    }
-
-  } else if (wFlags & (DISPATCH_PROPERTYPUT | DISPATCH_PROPERTYPUTREF)) {
-    Debug::log(Debug::Spam) << "Setting property " << dispidMember << " on " << objId << Debug::flush;
-
-    Value value;
-    sessionData->makeValue(value, pdispparams->rgvarg[0]);
-
-    ServerMethods::setProperty(*channel, sessionData->getSessionHandler(),
-      objId, dispidMember, value);
-
-  } else {
-    Debug::log(Debug::Error) << "Unsupported invocation " << wFlags << Debug::flush;
-    return DISP_E_MEMBERNOTFOUND;
-  }
-
-  return S_OK;
-}
diff --git a/plugins/ie/oophm/oophm/JavaObject.h b/plugins/ie/oophm/oophm/JavaObject.h
deleted file mode 100644
index cf56fa2..0000000
--- a/plugins/ie/oophm/oophm/JavaObject.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-// JavaObject.h : Declaration of the CJavaObject
-
-#pragma once
-#include "resource.h"       // main symbols
-#include "SessionData.h"
-
-#include "oophm_i.h"
-
-
-#if defined(_WIN32_WCE) && !defined(_CE_DCOM) && !defined(_CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA)
-#error "Single-threaded COM objects are not properly supported on Windows CE platform, such as the Windows Mobile platforms that do not include full DCOM support. Define _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA to force ATL to support creating single-thread COM object's and allow use of it's single-threaded COM object implementations. The threading model in your rgs file was set to 'Free' as that is the only threading model supported in non DCOM Windows CE platforms."
-#endif
-
-
-
-// CJavaObject
-
-class ATL_NO_VTABLE CJavaObject :
-	public CComObjectRootEx<CComSingleThreadModel>,
-	public CComCoClass<CJavaObject, &CLSID_JavaObject>,
-	public IDispatchImpl<IJavaObject, &IID_IJavaObject, &LIBID_oophmLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
-{
-public:
-  // TODO How can the default constructor be gotten rid of?
-  CJavaObject() : objId(-1) {
-  }
-
-	STDMETHOD(GetIDsOfNames)(REFIID riid, LPOLESTR* rgszNames, UINT cNames,
-		LCID lcid, DISPID* rgdispid);
-
-	STDMETHOD(Invoke)(DISPID dispidMember, REFIID riid,
-		LCID lcid, WORD wFlags, DISPPARAMS* pdispparams, VARIANT* pvarResult,
-		EXCEPINFO* pexcepinfo, UINT* puArgErr);
-
-DECLARE_REGISTRY_RESOURCEID(IDR_JAVAOBJECT)
-
-
-BEGIN_COM_MAP(CJavaObject)
-	COM_INTERFACE_ENTRY(IJavaObject)
-  COM_INTERFACE_ENTRY(IDispatchEx)
-  COM_INTERFACE_ENTRY(IDispatch)
-END_COM_MAP()
-
-
-
-	DECLARE_PROTECT_FINAL_CONSTRUCT()
-
-	HRESULT FinalConstruct()
-	{
-		return S_OK;
-	}
-
-	void FinalRelease()
-	{
-    Debug::log(Debug::Debugging) << "JavaObject " << objId << " released" << Debug::flush;
-    if (sessionData) {
-      // After shutdown, the session data will have been torn down
-      sessionData->freeJavaObject(objId);
-    }
-	}
-
-  unsigned int getObjectId() const {
-    return objId;
-  }
-
-  STDMETHOD(GetDispID)(BSTR,DWORD,DISPID *);
-  STDMETHOD(InvokeEx)(DISPID,LCID,WORD,DISPPARAMS *,VARIANT *,EXCEPINFO *,IServiceProvider *);
-  STDMETHOD(DeleteMemberByName)(BSTR,DWORD);
-  STDMETHOD(DeleteMemberByDispID)(DISPID);
-  STDMETHOD(GetMemberProperties)(DISPID,DWORD,DWORD *);
-  STDMETHOD(GetMemberName)(DISPID,BSTR *);
-  STDMETHOD(GetNextDispID)(DWORD,DISPID,DISPID *);
-  STDMETHOD(GetNameSpaceParent)(IUnknown **);
-
-  void initialize(unsigned int objId, SessionDataRef sessionData) {
-    this->objId = objId;
-    this->sessionData = sessionData;
-  }
-
-  void shutdown() {
-    sessionData = NULL;
-  }
-
-private:
-  unsigned int objId;
-  SessionDataRef sessionData;
-};
-
-OBJECT_ENTRY_AUTO(__uuidof(JavaObject), CJavaObject)
diff --git a/plugins/ie/oophm/oophm/JavaObject.rgs b/plugins/ie/oophm/oophm/JavaObject.rgs
deleted file mode 100644
index f84f142..0000000
--- a/plugins/ie/oophm/oophm/JavaObject.rgs
+++ /dev/null
@@ -1,26 +0,0 @@
-HKCR
-{
-	oophm.JavaObject.1 = s 'JavaObject Class'
-	{
-		CLSID = s '{644FD769-8B9D-4AC4-A79E-AAAF5CD751C1}'
-	}
-	oophm.JavaObject = s 'JavaObject Class'
-	{
-		CLSID = s '{644FD769-8B9D-4AC4-A79E-AAAF5CD751C1}'
-		CurVer = s 'oophm.JavaObject.1'
-	}
-	NoRemove CLSID
-	{
-		ForceRemove {644FD769-8B9D-4AC4-A79E-AAAF5CD751C1} = s 'JavaObject Class'
-		{
-			ProgID = s 'oophm.JavaObject.1'
-			VersionIndependentProgID = s 'oophm.JavaObject'
-			ForceRemove 'Programmable'
-			InprocServer32 = s '%MODULE%'
-			{
-				val ThreadingModel = s 'Apartment'
-			}
-			'TypeLib' = s '{9259F105-BE55-4BF6-B7CE-D0AA878C1BA6}'
-		}
-	}
-}
diff --git a/plugins/ie/oophm/oophm/ReadMe.txt b/plugins/ie/oophm/oophm/ReadMe.txt
deleted file mode 100644
index 2e7a437..0000000
--- a/plugins/ie/oophm/oophm/ReadMe.txt
+++ /dev/null
@@ -1,56 +0,0 @@
-========================================================================
-    ACTIVE TEMPLATE LIBRARY : oophm Project Overview
-========================================================================
-
-AppWizard has created this oophm project for you to use as the starting point for
-writing your Dynamic Link Library (DLL).
-
-This file contains a summary of what you will find in each of the files that
-make up your project.
-
-oophm.vcproj
-    This is the main project file for VC++ projects generated using an Application Wizard.
-    It contains information about the version of Visual C++ that generated the file, and
-    information about the platforms, configurations, and project features selected with the
-    Application Wizard.
-
-oophm.idl
-    This file contains the IDL definitions of the type library, the interfaces
-    and co-classes defined in your project.
-    This file will be processed by the MIDL compiler to generate:
-        C++ interface definitions and GUID declarations (oophm.h)
-        GUID definitions                                (oophm_i.c)
-        A type library                                  (oophm.tlb)
-        Marshaling code                                 (oophm_p.c and dlldata.c)
-
-oophm.h
-    This file contains the C++ interface definitions and GUID declarations of the
-    items defined in oophm.idl. It will be regenerated by MIDL during compilation.
-
-oophm.cpp
-    This file contains the object map and the implementation of your DLL's exports.
-
-oophm.rc
-    This is a listing of all of the Microsoft Windows resources that the
-    program uses.
-
-oophm.def
-    This module-definition file provides the linker with information about the exports
-    required by your DLL. It contains exports for:
-        DllGetClassObject
-        DllCanUnloadNow
-        DllRegisterServer
-        DllUnregisterServer
-
-/////////////////////////////////////////////////////////////////////////////
-Other standard files:
-
-StdAfx.h, StdAfx.cpp
-    These files are used to build a precompiled header (PCH) file
-    named oophm.pch and a precompiled types file named StdAfx.obj.
-
-Resource.h
-    This is the standard header file that defines resource IDs.
-
-
-/////////////////////////////////////////////////////////////////////////////
diff --git a/plugins/ie/oophm/oophm/SessionData.h b/plugins/ie/oophm/oophm/SessionData.h
deleted file mode 100644
index ac8fe67..0000000
--- a/plugins/ie/oophm/oophm/SessionData.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#pragma once
-#include "stdafx.h"
-#include "comutil.h"
-#include "HostChannel.h"
-#include "Mshtml.h"
-#include "SessionHandler.h"
-#include "scoped_ptr/scoped_ptr.h"
-
-/*
-* Encapsules per-OOPHM-session data.
-*/
-class SessionData {
-public:
-  SessionData(HostChannel* channel,
-    IHTMLWindow2* window,
-    SessionHandler* sessionHandler) : channel(channel),
-    window(window),
-    sessionHandler(sessionHandler) {
-  }
-
-  virtual void freeJavaObject(unsigned int objId)=0;
-
-  HostChannel* getHostChannel() const {
-    return channel.get();
-  }
-
-  SessionHandler* getSessionHandler() const {
-    return sessionHandler;
-  }
-
-  IHTMLWindow2* getWindow() const {
-    return window;
-  }
-
-  /*
-  * Convert a value from the JavaScript into something that can be sent back
-  * to the OOPHM host.
-  */
-  virtual void makeValue(Value& value, const _variant_t& in)=0;
-
-  /*
-  * Convert a value from the OOPHM host into something that can be passed into
-  * the JavaScript execution environment.
-  */
-  virtual void makeValueRef(_variant_t& value, const Value& in)=0;
-
-protected:
-  /*
-  * The communication channel used for the OOPHM session.
-  */
-  scoped_ptr<HostChannel> const channel;
-
-  /*
-  * A reference to the SessionHandler being used in the OOPHM session.
-  */
-  SessionHandler* const sessionHandler;
-
-  CComPtr<IHTMLWindow2> const window;
-};
-typedef SessionData* SessionDataRef;
-
-// TODO move these to a utility header
-
-__inline static std::string BSTRToUTF8(BSTR bstr) {
-  // Need an explict length due to the possibility of embedded nulls
-  int length = SysStringLen(bstr);
-  int numChars = WideCharToMultiByte(CP_UTF8, 0, bstr, length, NULL, 0, NULL, NULL);
-  char* buffer = new char[numChars];
-  int res = WideCharToMultiByte(CP_UTF8, 0, bstr, length, buffer, numChars, NULL, NULL);
-  // TODO assert res == numChars?
-  std::string toReturn = std::string(buffer, res);
-  delete[] buffer;
-  return toReturn;
-}
-
-/*
- * Convert a utf8-encoded string into a BSTR.  The length is explicitly
- * specified because the incoming string may have embedded null charachers.
- */
-__inline static _bstr_t UTF8ToBSTR(int length, const char* utf8) {
-  // We explicitly use MultiByteToWideChar to handle embedded nulls
-  int numChars = MultiByteToWideChar(CP_UTF8, 0, utf8, length, NULL, 0);
-  OLECHAR* buffer = new OLECHAR[numChars];
-  int res = MultiByteToWideChar(CP_UTF8, 0, utf8, length, buffer, numChars);
-  // Manually allocate the BSTR to set the length; _bstr_t assumes C-strings
-  _bstr_t toReturn = _bstr_t(SysAllocStringLen(buffer, res), false);
-  delete[] buffer;
-  return toReturn;
-}
diff --git a/plugins/ie/oophm/oophm/dlldata.c b/plugins/ie/oophm/oophm/dlldata.c
deleted file mode 100644
index 7b86f60..0000000
--- a/plugins/ie/oophm/oophm/dlldata.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/*********************************************************
-   DllData file -- generated by MIDL compiler 
-
-        DO NOT ALTER THIS FILE
-
-   This file is regenerated by MIDL on every IDL file compile.
-
-   To completely reconstruct this file, delete it and rerun MIDL
-   on all the IDL files in this DLL, specifying this file for the
-   /dlldata command line option
-
-*********************************************************/
-
-#define PROXY_DELEGATION
-
-#include <rpcproxy.h>
-
-#ifdef __cplusplus
-extern "C"   {
-#endif
-
-EXTERN_PROXY_FILE( oophm )
-
-
-PROXYFILE_LIST_START
-/* Start of list */
-  REFERENCE_PROXY_FILE( oophm ),
-/* End of list */
-PROXYFILE_LIST_END
-
-
-DLLDATA_ROUTINES( aProxyFileList, GET_DLL_CLSID )
-
-#ifdef __cplusplus
-}  /*extern "C" */
-#endif
-
-/* end of generated dlldata file */
diff --git a/plugins/ie/oophm/oophm/dlldatax.c b/plugins/ie/oophm/oophm/dlldatax.c
deleted file mode 100644
index 8979369..0000000
--- a/plugins/ie/oophm/oophm/dlldatax.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-// wrapper for dlldata.c
-
-#ifdef _MERGE_PROXYSTUB // merge proxy stub DLL
-
-#define REGISTER_PROXY_DLL //DllRegisterServer, etc.
-
-#define _WIN32_WINNT 0x0500	//for WinNT 4.0 or Win95 with DCOM
-#define USE_STUBLESS_PROXY	//defined only with MIDL switch /Oicf
-
-#pragma comment(lib, "rpcns4.lib")
-#pragma comment(lib, "rpcrt4.lib")
-
-#define ENTRY_PREFIX	Prx
-
-#include "dlldata.c"
-#include "oophm_p.c"
-
-#endif //_MERGE_PROXYSTUB
diff --git a/plugins/ie/oophm/oophm/dlldatax.h b/plugins/ie/oophm/oophm/dlldatax.h
deleted file mode 100644
index 4ce5f66..0000000
--- a/plugins/ie/oophm/oophm/dlldatax.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#pragma once
-
-#ifdef _MERGE_PROXYSTUB
-
-extern "C" 
-{
-BOOL WINAPI PrxDllMain(HINSTANCE hInstance, DWORD dwReason, 
-	LPVOID lpReserved);
-STDAPI PrxDllCanUnloadNow(void);
-STDAPI PrxDllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv);
-STDAPI PrxDllRegisterServer(void);
-STDAPI PrxDllUnregisterServer(void);
-}
-
-#endif
diff --git a/plugins/ie/oophm/oophm/dllmain.cpp b/plugins/ie/oophm/oophm/dllmain.cpp
deleted file mode 100644
index eaa3ed9..0000000
--- a/plugins/ie/oophm/oophm/dllmain.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-// dllmain.cpp : Implementation of DllMain.
-#include "stdafx.h"
-#include "resource.h"
-#include "oophm_i.h"
-#include "dllmain.h"
-#include "dlldatax.h"
-#include "AllowDialog.h"
-
-CoophmModule _AtlModule;
-
-// DLL Entry Point
-extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
-{
-#ifdef _MERGE_PROXYSTUB
-        if (!PrxDllMain(hInstance, dwReason, lpReserved))
-                return FALSE;
-#endif
-        DisableThreadLibraryCalls(hInstance);
-
-        AllowDialog::setHInstance(hInstance);
-
-        return _AtlModule.DllMain(dwReason, lpReserved); 
-}
diff --git a/plugins/ie/oophm/oophm/dllmain.h b/plugins/ie/oophm/oophm/dllmain.h
deleted file mode 100644
index 6965209..0000000
--- a/plugins/ie/oophm/oophm/dllmain.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-// dllmain.h : Declaration of module class.
-
-class CoophmModule : public CAtlDllModuleT< CoophmModule >
-{
-public :
-	DECLARE_LIBID(LIBID_oophmLib)
-	DECLARE_REGISTRY_APPID_RESOURCEID(IDR_OOPHM, "{F9365E53-5A14-47F3-BF1D-10CAAB815309}")
-};
-
-extern class CoophmModule _AtlModule;
diff --git a/plugins/ie/oophm/oophm/oophm.aps b/plugins/ie/oophm/oophm/oophm.aps
deleted file mode 100644
index 27a7cf6..0000000
--- a/plugins/ie/oophm/oophm/oophm.aps
+++ /dev/null
Binary files differ
diff --git a/plugins/ie/oophm/oophm/oophm.cpp b/plugins/ie/oophm/oophm/oophm.cpp
deleted file mode 100644
index b94b12e..0000000
--- a/plugins/ie/oophm/oophm/oophm.cpp
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-// oophm.cpp : Implementation of DLL Exports.
-
-
-#include "stdafx.h"
-#include "resource.h"
-#include "oophm_i.h"
-#include "dllmain.h"
-#include "dlldatax.h"
-
-// Used to determine whether the DLL can be unloaded by OLE
-STDAPI DllCanUnloadNow(void)
-{
-#ifdef _MERGE_PROXYSTUB
-    HRESULT hr = PrxDllCanUnloadNow();
-    if (hr != S_OK)
-        return hr;
-#endif
-    return _AtlModule.DllCanUnloadNow();
-}
-
-
-// Returns a class factory to create an object of the requested type
-STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
-{
-#ifdef _MERGE_PROXYSTUB
-    if (PrxDllGetClassObject(rclsid, riid, ppv) == S_OK)
-        return S_OK;
-#endif
-    return _AtlModule.DllGetClassObject(rclsid, riid, ppv);
-}
-
-
-// DllRegisterServer - Adds entries to the system registry
-STDAPI DllRegisterServer(void)
-{
-    // registers object, typelib and all interfaces in typelib
-    HRESULT hr = _AtlModule.DllRegisterServer();
-#ifdef _MERGE_PROXYSTUB
-    if (FAILED(hr))
-        return hr;
-    hr = PrxDllRegisterServer();
-#endif
-    return hr;
-}
-
-
-// DllUnregisterServer - Removes entries from the system registry
-STDAPI DllUnregisterServer(void)
-{
-	HRESULT hr = _AtlModule.DllUnregisterServer();
-#ifdef _MERGE_PROXYSTUB
-    if (FAILED(hr))
-        return hr;
-    hr = PrxDllRegisterServer();
-    if (FAILED(hr))
-        return hr;
-    hr = PrxDllUnregisterServer();
-#endif
-    return hr;
-}
-
-// DllInstall - Adds/Removes entries to the system registry per user
-//              per machine.	
-STDAPI DllInstall(BOOL bInstall, LPCWSTR pszCmdLine)
-{
-    HRESULT hr = E_FAIL;
-#if 0
-    // TODO(jat): consider adding this back
-    static const wchar_t szUserSwitch[] = _T("user");
-
-    if (pszCmdLine != NULL)
-    {
-    	if (_wcsnicmp(pszCmdLine, szUserSwitch, _countof(szUserSwitch)) == 0)
-    	{
-    		AtlSetPerUserRegistration(true);
-    	}
-    }
-#endif
-
-    if (bInstall)
-    {	
-    	hr = DllRegisterServer();
-    	if (FAILED(hr))
-    	{	
-    		DllUnregisterServer();
-    	}
-    }
-    else
-    {
-    	hr = DllUnregisterServer();
-    }
-
-    return hr;
-}
-
-
diff --git a/plugins/ie/oophm/oophm/oophm.def b/plugins/ie/oophm/oophm/oophm.def
deleted file mode 100644
index bbb6f99..0000000
--- a/plugins/ie/oophm/oophm/oophm.def
+++ /dev/null
@@ -1,24 +0,0 @@
-; Copyright 2008 Google Inc.
-;
-; Licensed 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.
-
-; oophm.def : Declares the module parameters.
-
-LIBRARY      "oophm.DLL"
-
-EXPORTS
-	DllCanUnloadNow		PRIVATE
-	DllGetClassObject	PRIVATE
-	DllRegisterServer	PRIVATE
-	DllUnregisterServer	PRIVATE
-	DllInstall		PRIVATE
diff --git a/plugins/ie/oophm/oophm/oophm.idl b/plugins/ie/oophm/oophm/oophm.idl
deleted file mode 100644
index 662618b..0000000
--- a/plugins/ie/oophm/oophm/oophm.idl
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-// oophm.idl : IDL source for oophm
-//
-
-// This file will be processed by the MIDL tool to
-// produce the type library (oophm.tlb) and marshalling code.
-
-#include "olectl.h"
-import "oaidl.idl";
-import "ocidl.idl";
-import "dispex.idl";
-
-// This interface is something of a hack to work around the lack
-// of ICanHandleException being defined by default in the dispex headers
-[
-	object,
-	uuid(c5598e60-b307-11d1-b27d-006008c3fbfb),
-	pointer_default(unique)
-]
-interface ICanHandleException : IUnknown
-{
-	HRESULT CanHandleException([in] EXCEPINFO *pExcepInfo, [in] VARIANT *pvar);
-};
-
-[
-	object,
-	uuid(73607C2E-369B-4055-8020-D7643A59F521),
-	dual,
-	nonextensible,
-	helpstring("Iplugin Interface"),
-	pointer_default(unique)
-]
-interface Iplugin : IDispatch{
-	[id(1), helpstring("OOPHM connect")] HRESULT connect([in] BSTR url, [in] BSTR sessionKey, [in] BSTR hostedServer, [in] BSTR moduleName, [in] BSTR hostedHtmlVersion, [out,retval] VARIANT_BOOL* ret);
-	[id(2), helpstring("method testObject")] HRESULT testObject([out,retval] IDispatch** ret);
-	[id(3), helpstring("OOPHM init")] HRESULT init([in] IDispatch* jsniContext, [out,retval] VARIANT_BOOL* ret);
-};
-
-[
-	object, 
-	dual,
-	nonextensible,
-	uuid(AB9B16A0-03E9-481E-ADF5-B00B860A8C3A),
-	helpstring("IpluginUI Interface"),
-	pointer_default(unique)
-]
-interface IpluginUI : IDispatch
-{
-	// Example method that will be called by the HTML
-	HRESULT OnClick([in]IDispatch* pdispBody, [in]VARIANT varColor);
-};
-[
-	object,
-	uuid(58276E45-1F24-4B71-88AC-2A7D0C26CDFF),
-	dual,
-	nonextensible,
-	helpstring("IJavaObject Interface"),
-	pointer_default(unique)
-]
-interface IJavaObject : IDispatchEx{
-};
-[
-	object,
-	uuid(1C3FBB2D-58C2-426C-A461-E6002F9EE294),
-	dual,
-	nonextensible,
-	helpstring("IExceptionCatcher Interface"),
-	pointer_default(unique)
-]
-interface IExceptionCatcher : IDispatch{
-  [id(1), helpstring("method getException")] HRESULT getException([out,retval] VARIANT* retVal);
-  [id(2), helpstring("method hasSeenException")] HRESULT hasSeenException([out,retval] BOOL* retVal);
-};
-[
-	uuid(9259F105-BE55-4BF6-B7CE-D0AA878C1BA6),
-	version(1.0),
-	helpstring("oophm 1.0 Type Library")
-]
-library oophmLib
-{
-	importlib("stdole2.tlb");
-	[
-		uuid(1D6156B6-002B-49E7-B5CA-C138FB843B4E),
-		control,
-		helpstring("plugin Class")
-	]
-	coclass plugin
-	{
-		[default] interface Iplugin;
-		interface IpluginUI;
-	};
-	[
-		uuid(644FD769-8B9D-4AC4-A79E-AAAF5CD751C1),
-		helpstring("JavaObject Class")
-	]
-	coclass JavaObject
-	{
-		[default] interface IJavaObject;
-	};
-	[
-		uuid(1A2A78F4-B5A4-4208-B520-BDDA0A7EC5CB),
-		helpstring("ExceptionCatcher Class")
-	]
-	coclass ExceptionCatcher
-	{
-		[default] interface IExceptionCatcher;
-    interface ICanHandleException;
-	};
-};
diff --git a/plugins/ie/oophm/oophm/oophm.rc b/plugins/ie/oophm/oophm/oophm.rc
deleted file mode 100644
index 3665d98..0000000
--- a/plugins/ie/oophm/oophm/oophm.rc
+++ /dev/null
@@ -1,174 +0,0 @@
-// Microsoft Visual C++ generated resource script.
-//
-#include "resource.h"
-
-#define APSTUDIO_READONLY_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 2 resource.
-//
-#ifndef APSTUDIO_INVOKED
-#include "targetver.h"
-#endif
-#include "winres.h"
-
-/////////////////////////////////////////////////////////////////////////////
-#undef APSTUDIO_READONLY_SYMBOLS
-
-/////////////////////////////////////////////////////////////////////////////
-// English (U.S.) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-#ifdef _WIN32
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-#pragma code_page(1252)
-#endif //_WIN32
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-1 TEXTINCLUDE 
-BEGIN
-    "resource.h\0"
-END
-
-2 TEXTINCLUDE 
-BEGIN
-    "#ifndef APSTUDIO_INVOKED\r\n"
-    "#include ""targetver.h""\r\n"
-    "#endif\r\n"
-    "#include ""winres.h""\r\n"
-    "\0"
-END
-
-3 TEXTINCLUDE 
-BEGIN
-    "1 TYPELIB ""oophm.tlb""\r\n"
-    "\0"
-END
-
-#endif    // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Version
-//
-
-VS_VERSION_INFO VERSIONINFO
- FILEVERSION 1,2,9570,0
- PRODUCTVERSION 1,2,9570,0
- FILEFLAGSMASK 0x3fL
-#ifdef _DEBUG
- FILEFLAGS 0x1L
-#else
- FILEFLAGS 0x0L
-#endif
- FILEOS 0x4L
- FILETYPE 0x2L
- FILESUBTYPE 0x0L
-BEGIN
-    BLOCK "StringFileInfo"
-    BEGIN
-        BLOCK "040904e4"
-        BEGIN
-            VALUE "CompanyName", "Google Inc."
-            VALUE "FileDescription", "Google Web Toolkit Developer Plugin"
-            VALUE "FileVersion", "1.2.9570.0"
-            VALUE "InternalName", "oophm.dll"
-            VALUE "LegalCopyright", "Copyright 2008 Google Inc. Licensed under the Apache 2.0 license."
-            VALUE "OriginalFilename", "oophm.dll"
-            VALUE "ProductName", "Google Web Toolkit"
-            VALUE "ProductVersion", "1.2.9570.0"
-        END
-    END
-    BLOCK "VarFileInfo"
-    BEGIN
-        VALUE "Translation", 0x409, 1252
-    END
-END
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// REGISTRY
-//
-
-IDR_OOPHM               REGISTRY                "oophm.rgs"
-IDR_PLUGIN              REGISTRY                "plugin.rgs"
-IDR_JAVAOBJECT          REGISTRY                "JavaObject.rgs"
-IDR_EXCEPTIONCATCHER    REGISTRY                "ExceptionCatcher.rgs"
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
-IDD_ALLOW_DIALOG DIALOGEX 0, 0, 188, 73
-STYLE DS_SYSMODAL | DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | WS_CAPTION
-EXSTYLE WS_EX_TOPMOST
-CAPTION "GWT Plugin Security Alert"
-FONT 10, "Microsoft Sans Serif", 400, 0, 0x0
-BEGIN
-    CONTROL         "Remember this decision for this server",IDC_REMEMBER_CHECKBOX,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,30,31,129,10
-    LTEXT           "This web server is trying to initiate a GWT Development\r\nMode Connection -- should it be allowed?",IDC_STATIC,10,7,167,19
-    PUSHBUTTON      "Allow",IDC_ALLOW_BUTTON,37,50,50,14
-    DEFPUSHBUTTON   "Deny",IDCANCEL,100,50,50,14
-END
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// DESIGNINFO
-//
-
-#ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO 
-BEGIN
-    IDD_ALLOW_DIALOG, DIALOG
-    BEGIN
-        LEFTMARGIN, 7
-        RIGHTMARGIN, 181
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 66
-    END
-END
-#endif    // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// HTML
-//
-
-IDH_PLUGIN              HTML                    "pluginUI.htm"
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// String Table
-//
-
-STRINGTABLE 
-BEGIN
-    IDS_PROJNAME            "oophm"
-END
-
-#endif    // English (U.S.) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-1 TYPELIB "oophm.tlb"
-
-/////////////////////////////////////////////////////////////////////////////
-#endif    // not APSTUDIO_INVOKED
-
diff --git a/plugins/ie/oophm/oophm/oophm.rgs b/plugins/ie/oophm/oophm/oophm.rgs
deleted file mode 100644
index b106174..0000000
--- a/plugins/ie/oophm/oophm/oophm.rgs
+++ /dev/null
@@ -1,11 +0,0 @@
-HKCR
-{
-	NoRemove AppID
-	{
-		'%APPID%' = s 'oophm'
-		'oophm.DLL'
-		{
-			val AppID = s '%APPID%'
-		}
-	}
-}
diff --git a/plugins/ie/oophm/oophm/oophm.vcproj b/plugins/ie/oophm/oophm/oophm.vcproj
deleted file mode 100644
index 9014169..0000000
--- a/plugins/ie/oophm/oophm/oophm.vcproj
+++ /dev/null
@@ -1,860 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="oophm"
-	ProjectGUID="{EB69BDFE-9380-4C51-99E8-C3EB25AE36A2}"
-	RootNamespace="oophm"
-	Keyword="AtlProj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(ConfigurationName)32"
-			IntermediateDirectory="$(ConfigurationName)32"
-			ConfigurationType="2"
-			UseOfMFC="1"
-			UseOfATL="1"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="_DEBUG"
-				MkTypLibCompatible="false"
-				TargetEnvironment="1"
-				GenerateStublessProxies="true"
-				TypeLibraryName="$(IntDir)/oophm.tlb"
-				HeaderFileName="oophm_i.h"
-				DLLDataFileName=""
-				InterfaceIdentifierFileName="oophm_i.c"
-				ProxyFileName="oophm_p.c"
-				ValidateParameters="true"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)&quot;;../../../platform/Win;../../../common"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;GWT_DEBUGLEVEL=Spam"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1033"
-				AdditionalIncludeDirectories="$(IntDir)"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				RegisterOutput="true"
-				IgnoreImportLibrary="true"
-				AdditionalDependencies="comsuppw.lib ws2_32.lib"
-				OutputFile="..\..\prebuilt\$(PlatformName)\$(ProjectName).dll"
-				LinkIncremental="2"
-				ModuleDefinitionFile=".\oophm.def"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="2"
-			UseOfMFC="1"
-			UseOfATL="1"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="_DEBUG"
-				MkTypLibCompatible="false"
-				TargetEnvironment="3"
-				GenerateStublessProxies="true"
-				TypeLibraryName="$(IntDir)/oophm.tlb"
-				HeaderFileName="oophm_i.h"
-				DLLDataFileName=""
-				InterfaceIdentifierFileName="oophm_i.c"
-				ProxyFileName="oophm_p.c"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)&quot;;../../../platform/Win;../../../common"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;GWT_DEBUGLEVEL=Spam"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1033"
-				AdditionalIncludeDirectories="$(IntDir)"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				IgnoreImportLibrary="true"
-				AdditionalDependencies="comsuppw.lib ws2_32.lib"
-				OutputFile="..\..\prebuilt\$(PlatformName)\$(ProjectName).dll"
-				LinkIncremental="2"
-				ModuleDefinitionFile=".\oophm.def"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(ConfigurationName)32"
-			IntermediateDirectory="$(ConfigurationName)32"
-			ConfigurationType="2"
-			UseOfMFC="1"
-			UseOfATL="1"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="NDEBUG"
-				MkTypLibCompatible="false"
-				TargetEnvironment="1"
-				GenerateStublessProxies="true"
-				TypeLibraryName="$(IntDir)/oophm.tlb"
-				HeaderFileName="oophm_i.h"
-				DLLDataFileName=""
-				InterfaceIdentifierFileName="oophm_i.c"
-				ProxyFileName="oophm_p.c"
-				ValidateParameters="true"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="2"
-				EnableIntrinsicFunctions="true"
-				FavorSizeOrSpeed="1"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)&quot;;../../../platform/Win;../../../common"
-				PreprocessorDefinitions="_WINDOWS;GWT_DEBUGDISABLE"
-				RuntimeLibrary="0"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1033"
-				AdditionalIncludeDirectories="$(IntDir)"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				RegisterOutput="true"
-				IgnoreImportLibrary="true"
-				AdditionalDependencies="comsuppw.lib ws2_32.lib"
-				OutputFile="..\..\prebuilt\$(PlatformName)\$(ProjectName).dll"
-				LinkIncremental="1"
-				ModuleDefinitionFile=".\oophm.def"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(ConfigurationName)64"
-			IntermediateDirectory="$(ConfigurationName)64"
-			ConfigurationType="2"
-			UseOfMFC="1"
-			UseOfATL="1"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="NDEBUG"
-				MkTypLibCompatible="false"
-				TargetEnvironment="3"
-				GenerateStublessProxies="true"
-				TypeLibraryName="$(IntDir)/oophm.tlb"
-				HeaderFileName="oophm_i.h"
-				DLLDataFileName=""
-				InterfaceIdentifierFileName="oophm_i.c"
-				ProxyFileName="oophm_p.c"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="2"
-				EnableIntrinsicFunctions="true"
-				FavorSizeOrSpeed="1"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)&quot;;../../../platform/Win;../../../common"
-				PreprocessorDefinitions="_WINDOWS;GWT_DEBUGDISABLE"
-				RuntimeLibrary="0"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1033"
-				AdditionalIncludeDirectories="$(IntDir)"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				IgnoreImportLibrary="true"
-				AdditionalDependencies="comsuppw.lib ws2_32.lib"
-				OutputFile="..\..\prebuilt\$(PlatformName)\$(ProjectName).dll"
-				LinkIncremental="1"
-				ModuleDefinitionFile=".\oophm.def"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\..\platform\Win\AllowDialog.cpp"
-				>
-			</File>
-			<File
-				RelativePath=".\dlldatax.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						UsePrecompiledHeader="0"
-						CompileAsManaged="0"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						UsePrecompiledHeader="0"
-						CompileAsManaged="0"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						UsePrecompiledHeader="0"
-						CompileAsManaged="0"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						UsePrecompiledHeader="0"
-						CompileAsManaged="0"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath=".\dllmain.cpp"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						UsePrecompiledHeader="0"
-						CompileAsManaged="0"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						UsePrecompiledHeader="0"
-						CompileAsManaged="0"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						UsePrecompiledHeader="0"
-						CompileAsManaged="0"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						UsePrecompiledHeader="0"
-						CompileAsManaged="0"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath=".\ExceptionCatcher.cpp"
-				>
-			</File>
-			<File
-				RelativePath=".\IESessionHandler.cpp"
-				>
-			</File>
-			<File
-				RelativePath=".\JavaObject.cpp"
-				>
-			</File>
-			<File
-				RelativePath=".\oophm.cpp"
-				>
-			</File>
-			<File
-				RelativePath=".\oophm.def"
-				>
-			</File>
-			<File
-				RelativePath=".\oophm.idl"
-				>
-			</File>
-			<File
-				RelativePath=".\plugin.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\platform\Win\Preferences.cpp"
-				>
-			</File>
-			<File
-				RelativePath=".\stdafx.cpp"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\..\common\AllowedConnections.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\CheckVersionsMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\ChooseTransportMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\Debug.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\FatalErrorMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\FreeValueMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\HostChannel.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\InvokeMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\InvokeSpecialMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\LoadJsniMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\LoadModuleMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\ProtocolVersionMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\ReturnMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\ServerMethods.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\Socket.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\SwitchTransportMessage.cpp"
-					>
-				</File>
-			</Filter>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\..\..\platform\Win\AllowDialog.h"
-				>
-			</File>
-			<File
-				RelativePath=".\Constants.h"
-				>
-			</File>
-			<File
-				RelativePath=".\dlldatax.h"
-				>
-			</File>
-			<File
-				RelativePath=".\dllmain.h"
-				>
-			</File>
-			<File
-				RelativePath=".\ExceptionCatcher.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\common\FatalErrorMessage.h"
-				>
-			</File>
-			<File
-				RelativePath=".\IESessionHandler.h"
-				>
-			</File>
-			<File
-				RelativePath=".\IEUtils.h"
-				>
-			</File>
-			<File
-				RelativePath=".\JavaObject.h"
-				>
-			</File>
-			<File
-				RelativePath=".\plugin.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\platform\Win\Preferences.h"
-				>
-			</File>
-			<File
-				RelativePath=".\Resource.h"
-				>
-			</File>
-			<File
-				RelativePath=".\SessionData.h"
-				>
-			</File>
-			<File
-				RelativePath=".\stdafx.h"
-				>
-			</File>
-			<File
-				RelativePath=".\targetver.h"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\..\common\AllowedConnections.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\BrowserChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\CheckVersionsMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\ChooseTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\Debug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\DebugLevel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\FreeValueMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\HashMap.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\HostChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\InvokeMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\InvokeSpecialMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\LoadJsniMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\LoadModuleMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\Message.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\Platform.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\ProtocolVersionMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\QuitMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\ReturnMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\ServerMethods.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\SessionHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\Socket.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\SwitchTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\common\Value.h"
-					>
-				</File>
-			</Filter>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-			<File
-				RelativePath=".\ExceptionCatcher.rgs"
-				>
-			</File>
-			<File
-				RelativePath=".\JavaObject.rgs"
-				>
-			</File>
-			<File
-				RelativePath=".\oophm.rc"
-				>
-			</File>
-			<File
-				RelativePath=".\oophm.rgs"
-				>
-			</File>
-			<File
-				RelativePath=".\plugin.bmp"
-				>
-			</File>
-			<File
-				RelativePath=".\plugin.rgs"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Generated Files"
-			SourceControlFiles="false"
-			>
-			<File
-				RelativePath=".\oophm_i.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						UsePrecompiledHeader="0"
-						CompileAsManaged="0"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						UsePrecompiledHeader="0"
-						CompileAsManaged="0"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						UsePrecompiledHeader="0"
-						CompileAsManaged="0"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						UsePrecompiledHeader="0"
-						CompileAsManaged="0"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath=".\oophm_i.h"
-				>
-			</File>
-		</Filter>
-		<File
-			RelativePath=".\plugin.htm"
-			DeploymentContent="true"
-			>
-		</File>
-		<File
-			RelativePath=".\pluginUI.htm"
-			DeploymentContent="true"
-			>
-		</File>
-		<File
-			RelativePath=".\ReadMe.txt"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/plugins/ie/oophm/oophm/oophm.vcxproj b/plugins/ie/oophm/oophm/oophm.vcxproj
deleted file mode 100644
index f073a5d..0000000
--- a/plugins/ie/oophm/oophm/oophm.vcxproj
+++ /dev/null
@@ -1,397 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{EB69BDFE-9380-4C51-99E8-C3EB25AE36A2}</ProjectGuid>
-    <RootNamespace>oophm</RootNamespace>
-    <Keyword>AtlProj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>Static</UseOfMfc>
-    <UseOfAtl>Static</UseOfAtl>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>Static</UseOfMfc>
-    <UseOfAtl>Static</UseOfAtl>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>Static</UseOfMfc>
-    <UseOfAtl>Static</UseOfAtl>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>Static</UseOfMfc>
-    <UseOfAtl>Static</UseOfAtl>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)32\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)32\</IntDir>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</IgnoreImportLibrary>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)32\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)32\</IntDir>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)64\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)64\</IntDir>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</IgnoreImportLibrary>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MkTypLibCompatible>false</MkTypLibCompatible>
-      <TargetEnvironment>Win32</TargetEnvironment>
-      <GenerateStublessProxies>true</GenerateStublessProxies>
-      <TypeLibraryName>$(IntDir)oophm.tlb</TypeLibraryName>
-      <HeaderFileName>oophm_i.h</HeaderFileName>
-      <DllDataFileName>
-      </DllDataFileName>
-      <InterfaceIdentifierFileName>oophm_i.c</InterfaceIdentifierFileName>
-      <ProxyFileName>oophm_p.c</ProxyFileName>
-      <ValidateAllParameters>true</ValidateAllParameters>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir);../../../platform/Win;../../../common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;GWT_DEBUGLEVEL=Info;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-      <AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ResourceCompile>
-    <Link>
-      <RegisterOutput>true</RegisterOutput>
-      <AdditionalDependencies>comsuppw.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>..\..\prebuilt\$(Platform)\$(ProjectName).dll</OutputFile>
-      <ModuleDefinitionFile>.\oophm.def</ModuleDefinitionFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MkTypLibCompatible>false</MkTypLibCompatible>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <GenerateStublessProxies>true</GenerateStublessProxies>
-      <TypeLibraryName>$(IntDir)oophm.tlb</TypeLibraryName>
-      <HeaderFileName>oophm_i.h</HeaderFileName>
-      <DllDataFileName>
-      </DllDataFileName>
-      <InterfaceIdentifierFileName>oophm_i.c</InterfaceIdentifierFileName>
-      <ProxyFileName>oophm_p.c</ProxyFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir);../../../platform/Win;../../../common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;GWT_DEBUGLEVEL=Spam;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-      <AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>comsuppw.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>..\..\prebuilt\$(Platform)\$(ProjectName).dll</OutputFile>
-      <ModuleDefinitionFile>.\oophm.def</ModuleDefinitionFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MkTypLibCompatible>false</MkTypLibCompatible>
-      <TargetEnvironment>Win32</TargetEnvironment>
-      <GenerateStublessProxies>true</GenerateStublessProxies>
-      <TypeLibraryName>$(IntDir)oophm.tlb</TypeLibraryName>
-      <HeaderFileName>oophm_i.h</HeaderFileName>
-      <DllDataFileName>
-      </DllDataFileName>
-      <InterfaceIdentifierFileName>oophm_i.c</InterfaceIdentifierFileName>
-      <ProxyFileName>oophm_p.c</ProxyFileName>
-      <ValidateAllParameters>true</ValidateAllParameters>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
-      <AdditionalIncludeDirectories>$(ProjectDir);../../../platform/Win;../../../common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_WINDOWS;GWT_DEBUGDISABLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-      <AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ResourceCompile>
-    <Link>
-      <RegisterOutput>true</RegisterOutput>
-      <AdditionalDependencies>comsuppw.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>..\..\prebuilt\$(Platform)\$(ProjectName).dll</OutputFile>
-      <ModuleDefinitionFile>.\oophm.def</ModuleDefinitionFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MkTypLibCompatible>false</MkTypLibCompatible>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <GenerateStublessProxies>true</GenerateStublessProxies>
-      <TypeLibraryName>$(IntDir)oophm.tlb</TypeLibraryName>
-      <HeaderFileName>oophm_i.h</HeaderFileName>
-      <DllDataFileName>
-      </DllDataFileName>
-      <InterfaceIdentifierFileName>oophm_i.c</InterfaceIdentifierFileName>
-      <ProxyFileName>oophm_p.c</ProxyFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
-      <AdditionalIncludeDirectories>$(ProjectDir);../../../platform/Win;../../../common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_WINDOWS;GWT_DEBUGDISABLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-      <AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>comsuppw.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>..\..\prebuilt\$(Platform)\$(ProjectName).dll</OutputFile>
-      <ModuleDefinitionFile>.\oophm.def</ModuleDefinitionFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\..\platform\Win\AllowDialog.cpp" />
-    <ClCompile Include="dlldatax.c">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</CompileAsManaged>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-      </PrecompiledHeader>
-      <CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</CompileAsManaged>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-      <CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</CompileAsManaged>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-      </PrecompiledHeader>
-      <CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</CompileAsManaged>
-    </ClCompile>
-    <ClCompile Include="dllmain.cpp">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</CompileAsManaged>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-      </PrecompiledHeader>
-      <CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</CompileAsManaged>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-      <CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</CompileAsManaged>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-      </PrecompiledHeader>
-      <CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</CompileAsManaged>
-    </ClCompile>
-    <ClCompile Include="ExceptionCatcher.cpp" />
-    <ClCompile Include="IESessionHandler.cpp" />
-    <ClCompile Include="JavaObject.cpp" />
-    <ClCompile Include="oophm.cpp" />
-    <ClCompile Include="plugin.cpp" />
-    <ClCompile Include="..\..\..\platform\Win\Preferences.cpp" />
-    <ClCompile Include="stdafx.cpp" />
-    <ClCompile Include="..\..\..\common\AllowedConnections.cpp" />
-    <ClCompile Include="..\..\..\common\CheckVersionsMessage.cpp" />
-    <ClCompile Include="..\..\..\common\ChooseTransportMessage.cpp" />
-    <ClCompile Include="..\..\..\common\Debug.cpp" />
-    <ClCompile Include="..\..\..\common\FatalErrorMessage.cpp" />
-    <ClCompile Include="..\..\..\common\FreeValueMessage.cpp" />
-    <ClCompile Include="..\..\..\common\HostChannel.cpp" />
-    <ClCompile Include="..\..\..\common\InvokeMessage.cpp" />
-    <ClCompile Include="..\..\..\common\InvokeSpecialMessage.cpp" />
-    <ClCompile Include="..\..\..\common\LoadJsniMessage.cpp" />
-    <ClCompile Include="..\..\..\common\LoadModuleMessage.cpp" />
-    <ClCompile Include="..\..\..\common\ProtocolVersionMessage.cpp" />
-    <ClCompile Include="..\..\..\common\ReturnMessage.cpp" />
-    <ClCompile Include="..\..\..\common\ServerMethods.cpp" />
-    <ClCompile Include="..\..\..\common\Socket.cpp" />
-    <ClCompile Include="..\..\..\common\SwitchTransportMessage.cpp" />
-    <ClCompile Include="oophm_i.c">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</CompileAsManaged>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-      </PrecompiledHeader>
-      <CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</CompileAsManaged>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-      <CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</CompileAsManaged>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-      </PrecompiledHeader>
-      <CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</CompileAsManaged>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="oophm.def" />
-    <None Include="ExceptionCatcher.rgs" />
-    <None Include="JavaObject.rgs" />
-    <None Include="oophm.rgs" />
-    <None Include="plugin.bmp" />
-    <None Include="plugin.rgs" />
-    <None Include="plugin.htm">
-      <DeploymentContent>true</DeploymentContent>
-    </None>
-    <None Include="pluginUI.htm">
-      <DeploymentContent>true</DeploymentContent>
-    </None>
-    <None Include="ReadMe.txt" />
-  </ItemGroup>
-  <ItemGroup>
-    <Midl Include="oophm.idl" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\..\platform\Win\AllowDialog.h" />
-    <ClInclude Include="Constants.h" />
-    <ClInclude Include="dlldatax.h" />
-    <ClInclude Include="dllmain.h" />
-    <ClInclude Include="ExceptionCatcher.h" />
-    <ClInclude Include="..\..\..\common\FatalErrorMessage.h" />
-    <ClInclude Include="IESessionHandler.h" />
-    <ClInclude Include="IEUtils.h" />
-    <ClInclude Include="JavaObject.h" />
-    <ClInclude Include="plugin.h" />
-    <ClInclude Include="..\..\..\platform\Win\Preferences.h" />
-    <ClInclude Include="Resource.h" />
-    <ClInclude Include="SessionData.h" />
-    <ClInclude Include="stdafx.h" />
-    <ClInclude Include="targetver.h" />
-    <ClInclude Include="..\..\..\common\AllowedConnections.h" />
-    <ClInclude Include="..\..\..\common\BrowserChannel.h" />
-    <ClInclude Include="..\..\..\common\CheckVersionsMessage.h" />
-    <ClInclude Include="..\..\..\common\ChooseTransportMessage.h" />
-    <ClInclude Include="..\..\..\common\Debug.h" />
-    <ClInclude Include="..\..\..\common\DebugLevel.h" />
-    <ClInclude Include="..\..\..\common\FreeValueMessage.h" />
-    <ClInclude Include="..\..\..\common\HashMap.h" />
-    <ClInclude Include="..\..\..\common\HostChannel.h" />
-    <ClInclude Include="..\..\..\common\InvokeMessage.h" />
-    <ClInclude Include="..\..\..\common\InvokeSpecialMessage.h" />
-    <ClInclude Include="..\..\..\common\LoadJsniMessage.h" />
-    <ClInclude Include="..\..\..\common\LoadModuleMessage.h" />
-    <ClInclude Include="..\..\..\common\Message.h" />
-    <ClInclude Include="..\..\..\common\Platform.h" />
-    <ClInclude Include="..\..\..\common\ProtocolVersionMessage.h" />
-    <ClInclude Include="..\..\..\common\QuitMessage.h" />
-    <ClInclude Include="..\..\..\common\ReturnMessage.h" />
-    <ClInclude Include="..\..\..\common\ServerMethods.h" />
-    <ClInclude Include="..\..\..\common\SessionHandler.h" />
-    <ClInclude Include="..\..\..\common\Socket.h" />
-    <ClInclude Include="..\..\..\common\SwitchTransportMessage.h" />
-    <ClInclude Include="..\..\..\common\Value.h" />
-    <ClInclude Include="oophm_i.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="oophm.rc" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/plugins/ie/oophm/oophm/oophm.vcxproj.filters b/plugins/ie/oophm/oophm/oophm.vcxproj.filters
deleted file mode 100644
index eba06fa..0000000
--- a/plugins/ie/oophm/oophm/oophm.vcxproj.filters
+++ /dev/null
@@ -1,262 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Source Files\common">
-      <UniqueIdentifier>{7de3b311-d305-4b06-9891-48808617edcc}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Header Files\common">
-      <UniqueIdentifier>{bdeb57bf-5bd5-432d-8f9a-8160fc4e9e7f}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Resource Files">
-      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
-      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
-    </Filter>
-    <Filter Include="Generated Files">
-      <UniqueIdentifier>{619a202a-99fa-4836-9ee8-ef0dfa42d372}</UniqueIdentifier>
-      <SourceControlFiles>False</SourceControlFiles>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\..\platform\Win\AllowDialog.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="dlldatax.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="dllmain.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="ExceptionCatcher.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="IESessionHandler.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="JavaObject.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="oophm.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="plugin.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\platform\Win\Preferences.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="stdafx.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\common\AllowedConnections.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\common\CheckVersionsMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\common\ChooseTransportMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\common\Debug.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\common\FatalErrorMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\common\FreeValueMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\common\HostChannel.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\common\InvokeMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\common\InvokeSpecialMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\common\LoadJsniMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\common\LoadModuleMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\common\ProtocolVersionMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\common\ReturnMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\common\ServerMethods.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\common\Socket.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\common\SwitchTransportMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="oophm_i.c">
-      <Filter>Generated Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="oophm.def">
-      <Filter>Source Files</Filter>
-    </None>
-    <None Include="ExceptionCatcher.rgs">
-      <Filter>Resource Files</Filter>
-    </None>
-    <None Include="JavaObject.rgs">
-      <Filter>Resource Files</Filter>
-    </None>
-    <None Include="oophm.rgs">
-      <Filter>Resource Files</Filter>
-    </None>
-    <None Include="plugin.bmp">
-      <Filter>Resource Files</Filter>
-    </None>
-    <None Include="plugin.rgs">
-      <Filter>Resource Files</Filter>
-    </None>
-    <None Include="plugin.htm" />
-    <None Include="pluginUI.htm" />
-    <None Include="ReadMe.txt" />
-  </ItemGroup>
-  <ItemGroup>
-    <Midl Include="oophm.idl">
-      <Filter>Source Files</Filter>
-    </Midl>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\..\platform\Win\AllowDialog.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="Constants.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="dlldatax.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="dllmain.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="ExceptionCatcher.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\common\FatalErrorMessage.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="IESessionHandler.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="IEUtils.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="JavaObject.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="plugin.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\platform\Win\Preferences.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="Resource.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="SessionData.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="stdafx.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="targetver.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\common\AllowedConnections.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\common\BrowserChannel.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\common\CheckVersionsMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\common\ChooseTransportMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\common\Debug.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\common\DebugLevel.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\common\FreeValueMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\common\HashMap.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\common\HostChannel.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\common\InvokeMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\common\InvokeSpecialMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\common\LoadJsniMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\common\LoadModuleMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\common\Message.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\common\Platform.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\common\ProtocolVersionMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\common\QuitMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\common\ReturnMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\common\ServerMethods.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\common\SessionHandler.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\common\Socket.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\common\SwitchTransportMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\common\Value.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="oophm_i.h">
-      <Filter>Generated Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="oophm.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/plugins/ie/oophm/oophm/plugin.bmp b/plugins/ie/oophm/oophm/plugin.bmp
deleted file mode 100644
index 1229764..0000000
--- a/plugins/ie/oophm/oophm/plugin.bmp
+++ /dev/null
Binary files differ
diff --git a/plugins/ie/oophm/oophm/plugin.cpp b/plugins/ie/oophm/oophm/plugin.cpp
deleted file mode 100644
index 9bc4184..0000000
--- a/plugins/ie/oophm/oophm/plugin.cpp
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-// plugin.cpp : Implementation of Cplugin
-#include "stdafx.h"
-#include "comutil.h"
-#include "plugin.h"
-#include "BrowserChannel.h"
-#include "JavaObject.h"
-#include "HostChannel.h"
-#include "IESessionHandler.h"
-#include "LoadModuleMessage.h"
-#include "ServerMethods.h"
-#include "AllowedConnections.h"
-#include "Preferences.h"
-#include "AllowDialog.h"
-#include "IEUtils.h"
-
-// Cplugin
-
-STDMETHODIMP Cplugin::connect(BSTR burl, BSTR bsessionKey, BSTR bhostedServer,
-    BSTR bmoduleName, BSTR bhostedHtmlVersion, VARIANT_BOOL* ret)
-{
-  LPOLECLIENTSITE site;
-  IOleContainer* container = NULL;
-  IHTMLDocument2* doc = NULL;
-  IHTMLWindow2* window = NULL;
-
-  this->GetClientSite(&site);
-  site->GetContainer(&container);
-  container->QueryInterface(IID_IHTMLDocument2, (void**)&doc);
-  container->Release();
-
-  doc->get_parentWindow(&window);
-  doc->Release();
-
-  std::string url = BSTRToUTF8(burl);
-  Debug::log(Debug::Debugging) << "OOPHM connect(url=" << url << ")" << Debug::flush;
-  Preferences::loadAccessList();
-  bool allowed = false;
-  std::string webHost = AllowedConnections::getHostFromUrl(url);
-  std::string codeSvr = AllowedConnections::getCodeServerFromUrl(url);
-  if (!AllowedConnections::matchesRule(webHost, codeSvr, &allowed)) {
-    bool remember;
-    allowed = AllowDialog::askUserToAllow(&remember);
-    if (remember) {
-      Preferences::addNewRule(webHost + "/" + codeSvr, !allowed);
-    }
-  }
-  if (!allowed) {
-    *ret = false;
-    return S_OK;
-  }
-
-  std::string hostedServer = BSTRToUTF8(bhostedServer);
-  size_t index = hostedServer.find(':');
-  if (index == std::string::npos) {
-    *ret = false;
-    return S_OK;
-  }
-  std::string hostPart = hostedServer.substr(0, index);
-  std::string portPart = hostedServer.substr(index + 1);
-
-  HostChannel* channel = new HostChannel();
-
-  if (!channel->connectToHost(
-    hostPart.c_str(),
-    atoi(portPart.c_str()))) {
-      *ret = false;
-      DWORD  errCode = ::GetLastError();
-      PWCHAR errMsg = IEUtils::GetSysErrorMessage(errCode);
-      SYSLOGERROR(L"GWT Developer Mode plugin failed to connect to code server.",
-          L"URL: %S\nERRORMESSAGE: %sERRORCODE: %d (0x%08X)",
-          url.c_str(), errMsg, errCode, errCode);
-      ::LocalFree(errMsg);
-      return S_OK;
-  }
-
-  sessionHandler.reset(new IESessionHandler(channel, window));
-
-  std::string hostedHtmlVersion = BSTRToUTF8(bhostedHtmlVersion);
-
-  // TODO: add support for a range of protocol versions when we add them
-  if (!channel->init(sessionHandler.get(), BROWSERCHANNEL_PROTOCOL_VERSION,
-      BROWSERCHANNEL_PROTOCOL_VERSION, hostedHtmlVersion)) {
-    *ret = false;
-    return S_OK;
-  }
-
-  // Use the current thread ID as a proxy for tab ID.
-  DWORD threadId = GetCurrentThreadId();
-  char buf[20];
-  snprintf(buf, sizeof(buf), "%lu", threadId);
-  std::string tabKey = buf;
-
-  std::string sessionKey = BSTRToUTF8(bsessionKey);
-  std::string moduleName = BSTRToUTF8(bmoduleName);
-  IOmNavigator* navigator;
-  _bstr_t userAgent;
-
-  window->get_navigator(&navigator);
-  navigator->get_userAgent(userAgent.GetAddress());
-
-  LoadModuleMessage::send(*channel, url, tabKey, sessionKey, moduleName,
-      BSTRToUTF8(userAgent), sessionHandler.get());
-
-  navigator->Release();
-
-  *ret = true;
-  return S_OK;
-}
-
-STDMETHODIMP Cplugin::init(IDispatch* jsniContext, VARIANT_BOOL* ret) {
-  Debug::log(Debug::Debugging) << "OOPHM init called" << Debug::flush;
-  *ret = true;
-  return S_OK;
-}
-
-STDMETHODIMP Cplugin::testObject(IDispatch** ret)
-{
-  IJavaObject* toRet;
-  CJavaObject::CreateInstance(&toRet);
-  *ret = toRet;
-  // TODO: Add your implementation code here
-
-  return S_OK;
-}
diff --git a/plugins/ie/oophm/oophm/plugin.h b/plugins/ie/oophm/oophm/plugin.h
deleted file mode 100644
index d508558..0000000
--- a/plugins/ie/oophm/oophm/plugin.h
+++ /dev/null
@@ -1,227 +0,0 @@
-/*
-* Copyright 2008 Google Inc.
-*
-* Licensed 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.
-*/
-
-// plugin.h : Declaration of the Cplugin
-#pragma once
-#include "resource.h"       // main symbols
-#include <atlctl.h>
-#include "oophm_i.h"
-#include "Debug.h"
-#include "IESessionHandler.h"
-#include "IEUtils.h"
-
-#ifdef _WIN32_WCE
-#error "ATL does not support HTML controls for Windows CE."
-#endif
-class ATL_NO_VTABLE CpluginUI :
-    public IDispatchImpl<IpluginUI, &IID_IpluginUI, &LIBID_oophmLib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
-    public CComObjectRootEx<CComSingleThreadModel>
-{
-    BEGIN_COM_MAP(CpluginUI)
-        COM_INTERFACE_ENTRY(IpluginUI)
-        COM_INTERFACE_ENTRY(IDispatch)
-    END_COM_MAP()
-    // Iplugin
-public:
-    DECLARE_PROTECT_FINAL_CONSTRUCT()
-
-    HRESULT FinalConstruct()
-    {
-        return S_OK;
-    }
-
-    void FinalRelease()
-    {
-    }
-
-    // Example method called by the HTML to change the <BODY> background color
-    STDMETHOD(OnClick)(IDispatch* pdispBody, VARIANT varColor)
-    {
-        CComQIPtr<IHTMLBodyElement> spBody(pdispBody);
-        if (spBody != NULL)
-            spBody->put_bgColor(varColor);
-        return S_OK;
-    }
-};
-
-
-
-// Cplugin
-class ATL_NO_VTABLE Cplugin :
-    public CComObjectRootEx<CComSingleThreadModel>,
-    public IDispatchImpl<Iplugin, &IID_Iplugin, &LIBID_oophmLib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
-    public IPersistStreamInitImpl<Cplugin>,
-    public IOleControlImpl<Cplugin>,
-    public IOleObjectImpl<Cplugin>,
-    public IOleInPlaceActiveObjectImpl<Cplugin>,
-    public IViewObjectExImpl<Cplugin>,
-    public IOleInPlaceObjectWindowlessImpl<Cplugin>,
-    public ISupportErrorInfo,
-    public IPersistStorageImpl<Cplugin>,
-    public ISpecifyPropertyPagesImpl<Cplugin>,
-    public IQuickActivateImpl<Cplugin>,
-    public IObjectSafetyImpl<Cplugin, INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA>,
-#ifndef _WIN32_WCE
-    public IDataObjectImpl<Cplugin>,
-#endif
-    public IProvideClassInfo2Impl<&CLSID_plugin, NULL, &LIBID_oophmLib>,
-#ifdef _WIN32_WCE // IObjectSafety is required on Windows CE for the control to be loaded correctly
-    public IObjectSafetyImpl<Cplugin, INTERFACESAFE_FOR_UNTRUSTED_CALLER>,
-#endif
-    public CComCoClass<Cplugin, &CLSID_plugin>,
-    public CComControl<Cplugin>
-{
-public:
-
-
-    Cplugin()
-    {
-        m_bWindowOnly = TRUE;
-    }
-
-    DECLARE_OLEMISC_STATUS(OLEMISC_RECOMPOSEONRESIZE |
-    OLEMISC_CANTLINKINSIDE |
-        OLEMISC_INSIDEOUT |
-        OLEMISC_ACTIVATEWHENVISIBLE |
-        OLEMISC_SETCLIENTSITEFIRST
-        )
-
-        DECLARE_REGISTRY_RESOURCEID(IDR_PLUGIN)
-
-
-    BEGIN_COM_MAP(Cplugin)
-        COM_INTERFACE_ENTRY(Iplugin)
-        COM_INTERFACE_ENTRY(IDispatch)
-        COM_INTERFACE_ENTRY(IViewObjectEx)
-        COM_INTERFACE_ENTRY(IViewObject2)
-        COM_INTERFACE_ENTRY(IViewObject)
-        COM_INTERFACE_ENTRY(IOleInPlaceObjectWindowless)
-        COM_INTERFACE_ENTRY(IOleInPlaceObject)
-        COM_INTERFACE_ENTRY2(IOleWindow, IOleInPlaceObjectWindowless)
-        COM_INTERFACE_ENTRY(IOleInPlaceActiveObject)
-        COM_INTERFACE_ENTRY(IOleControl)
-        COM_INTERFACE_ENTRY(IOleObject)
-        COM_INTERFACE_ENTRY(IPersistStreamInit)
-        COM_INTERFACE_ENTRY2(IPersist, IPersistStreamInit)
-        COM_INTERFACE_ENTRY(ISupportErrorInfo)
-        COM_INTERFACE_ENTRY(ISpecifyPropertyPages)
-        COM_INTERFACE_ENTRY(IQuickActivate)
-        COM_INTERFACE_ENTRY(IPersistStorage)
-        COM_INTERFACE_ENTRY(IObjectSafety)
-#ifndef _WIN32_WCE
-        COM_INTERFACE_ENTRY(IDataObject)
-#endif
-        COM_INTERFACE_ENTRY(IProvideClassInfo)
-        COM_INTERFACE_ENTRY(IProvideClassInfo2)
-#ifdef _WIN32_WCE // IObjectSafety is required on Windows CE for the control to be loaded correctly
-        COM_INTERFACE_ENTRY_IID(IID_IObjectSafety, IObjectSafety)
-#endif
-    END_COM_MAP()
-
-    BEGIN_PROP_MAP(Cplugin)
-        PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4)
-        PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4)
-        // Example entries
-        // PROP_ENTRY_TYPE("Property Name", dispid, clsid, vtType)
-        // PROP_PAGE(CLSID_StockColorPage)
-    END_PROP_MAP()
-
-
-    BEGIN_MSG_MAP(Cplugin)
-        MESSAGE_HANDLER(WM_CREATE, OnCreate)
-        CHAIN_MSG_MAP(CComControl<Cplugin>)
-        DEFAULT_REFLECTION_HANDLER()
-    END_MSG_MAP()
-    // Handler prototypes:
-    //  LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
-    //  LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
-    //  LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
-
-    // ISupportsErrorInfo
-    STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid)
-    {
-        static const IID* arr[] =
-        {
-            &IID_Iplugin,
-        };
-
-        for (int i=0; i<sizeof(arr)/sizeof(arr[0]); i++)
-        {
-            if (InlineIsEqualGUID(*arr[i], riid))
-                return S_OK;
-        }
-        return S_FALSE;
-    }
-
-    // IViewObjectEx
-    DECLARE_VIEW_STATUS(VIEWSTATUS_SOLIDBKGND | VIEWSTATUS_OPAQUE)
-
-    // Iplugin
-
-    LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
-    {
-        CAxWindow wnd(m_hWnd);
-        wnd.ModifyStyle(0, WS_HSCROLL | WS_VSCROLL);
-        HRESULT hr = wnd.CreateControl(IDH_PLUGIN);
-        if (SUCCEEDED(hr))
-        {
-            CComObject<CpluginUI> *pObject = NULL;
-            hr = CComObject<CpluginUI>::CreateInstance(&pObject);
-            if (SUCCEEDED(hr) && pObject != NULL)
-                hr = wnd.SetExternalDispatch(static_cast<IpluginUI*>(pObject));
-        }
-        if (SUCCEEDED(hr))
-            hr = wnd.QueryControl(IID_IWebBrowser2, (void**)&m_spBrowser);
-        return SUCCEEDED(hr) ? 0 : -1;
-    }
-
-    STDMETHOD(TranslateAccelerator)(LPMSG pMsg)
-    {
-        CComPtr<IOleInPlaceActiveObject> spIOleInPlaceActiveObject;
-
-        HRESULT hr = m_spBrowser->QueryInterface(&spIOleInPlaceActiveObject);
-        if (SUCCEEDED(hr))
-            hr = spIOleInPlaceActiveObject->TranslateAccelerator(pMsg);
-        if (hr != S_OK)
-            hr = IOleInPlaceActiveObjectImpl<Cplugin>::TranslateAccelerator(pMsg);
-
-        return hr;
-    }
-    CComPtr<IWebBrowser2> m_spBrowser;
-
-    DECLARE_PROTECT_FINAL_CONSTRUCT()
-
-    HRESULT FinalConstruct()
-    {
-        IEUtils::InitEventLog();
-        return S_OK;
-    }
-
-    void FinalRelease()
-    {
-        IEUtils::CloseEventLog();
-        Debug::log(Debug::Debugging) << "OOPHM plugin FinalRelease" << Debug::flush;
-    }
-
-    STDMETHOD(connect)(BSTR url, BSTR sessionKey, BSTR hostedServer,
-        BSTR moduleName, BSTR hostedHtmlVersion, VARIANT_BOOL* ret);
-    STDMETHOD(init)(IDispatch* jsniContext, VARIANT_BOOL* ret);
-    STDMETHOD(testObject)(IDispatch** ret);
-private:
-    scoped_ptr<IESessionHandler> sessionHandler;
-};
-
-OBJECT_ENTRY_AUTO(__uuidof(plugin), Cplugin)
diff --git a/plugins/ie/oophm/oophm/plugin.htm b/plugins/ie/oophm/oophm/plugin.htm
deleted file mode 100644
index 1dac491..0000000
--- a/plugins/ie/oophm/oophm/plugin.htm
+++ /dev/null
@@ -1,82 +0,0 @@
-<HTML>  
-<HEAD>  
-<TITLE>GWT IE Plugin test page.</TITLE>  
-</HEAD>  
-<BODY>      
-<OBJECT ID="plugin" CLASSID="CLSID:1D6156B6-002B-49E7-B5CA-C138FB843B4E" border="2" width="150" height="150" standby="loading gwt plugin...">
-<div style="color:red; font-family:'Times New Roman'; font-size:20px;">
-<H1>Ooops!!! Failed to load gwt oophm plugin!</H1>
-<a><p>This is was you should have seen...<p>
-<img
-src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANQAAADUCAIAAABrvJpPAAAAAXNSR0IArs4c6QAAAARnQU1B
-AACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAx8SURBVHhe7Z1da1NLF8fzkSy0n8Vz
-ZfsRCuJTiQVBibS5sNRceNMj9UrbXgoiBlTQm5aqeBARxZtaMCSttr4heuA8/8xkv85uurXZ
-mVkz/3VRkpk1s95+nd2kyV61/yjMgKUM1CzZpVlm4D/CRwisZYDwWUs9DRM+MmAtA4TPWupp
-mPCRAWsZIHzWUk/DhI8MWMsA4bOWehomfGTAWgaK4atRmIGTZaAM0YTvZDnm6iMycFL4yqyn
-jscZ+PHjx/v37z98+LC/v/8pJQcHB3iGn7EcHh5+/vy52+0iG5rGMmkZdvKVWU8djzNA+Dwu
-ruuhET7XK+Sxf4TP4+K6Hhrhc71CHvtH+DwuruuhHQUfXvz2ej385Ktd10so179C+Pb29kDe
-hQsX0vzxrRa5VXbUcxM+Td7Zs2cvXrx47dq1mD/C52gJ5bqVg0+Td+7cucXFxZs3b66vr9+6
-dUvzR/jkVtlRz3PwgbOlpaXV1dU7d+602+1Hjx49efLk4cOHGCd8jpZQrluFJx9QywlPPrkl
-dtdzvtXibm2894zweV9idwMkfO7WxnvPCJ/3JXY3QMLnbm2894zweV9idwMkfO7WxnvPxMDX
-arXm5uZmxyuwCLveQ2ArQBnwLTaby8vLnU7n3/EKLMIurNsqj992ZcCHfzbjm0s/f/7EV5jG
-KbAIu7DuNwS2opMBHy62OPLGiV1sC3Zh3VZ5/LYrBr5fv37how3jF9glfBX9DhC+Y3gmfBWR
-h20lwZf+Crt+vDFTfDOFmQ1T9/iRZ1emarX8UsJH+GYBQfqOCvrx+nStNtV4mp142gBDtel1
-U/2YEbUwv47wEb7fgO/Tp0KKjmeR8FXHWeHOYi67eNcDn2jNyRpOvsnG9nHj243J+PKcU+/v
-MJDpRl9tei27G+zyBUdFUEqCD18wycntM4Dv8lZ+eOsyKDpzWw/3dWIlNZOdivT0VDwX7Un4
-KiJP0gsOQFASPkVRhGTmSX+DZCCDaDwVsUj4qoMu2lnSyWd+tUSdaoZMXt6MVfXZmDzv9Tb1
-sdjrGVPxTNoQT77qIBQD3/fv398Z8vdftdrE/IPU+IP5CcD419+DIf3UFCxSU7FiX98cwSDs
-8m++ivjzDT7g0icypsrEMybVmCJ8FUF21LaS4HtryMppnHz1dm68P1o7vaJG23Wcb4PHWi2e
-NaZMXajz5KuOSEnwvTGkD9Kpejs/PuBLD7frp1JKaipaktZTagra7G6Ej/DNAoLS8L3JIDbg
-L/rDL0NXhJwicqXPH+GrDrb8zmJOvm/fvr22IbDLFxwV8SgJvlc2hPBVRJ6kN5kBgQ32XhE+
-wjf79evXlzYEdnnZrYg/MZddQPCPDSF8FZEn6bJL+KqDwNbOYk6+L1++vLAhsMvLbkV0yoAP
-X17c2dnBB02ej1dgEXb51cmg4Ws2m7hb7+7uLs6hcQoswi6sV5T9wLeVcfKhSAsLCziBxnu3
-jFlYhN3AEakufDHwVZcC7mwrA4TPVuZpV8j3dlkoLzPAk8/LssoIivDJqJOXXhI+L8sqIyjC
-J6NOXnpJ+Lwsq4ygCJ+MOnnpJeHzsqwygiJ8MurkpZeEz8uyygiK8Mmok5deEj4vyyojKMIn
-o05eekn4vCyrjKAIn4w6eekl4fOyrDKCInwy6uSll4TPy7LKCIrwyaiTl14SPi/LKiMowiej
-Tl56Sfi8LKuMoMTA12q15ubmxvyl8ZGYg9twXgYO4/VSBnyLzeby8nKn00Hfb3ECt+E8Qhhv
-ZQVYkwEfblvR7XbRDMhKp/sTGoXbcJ53GzJ/G2TAh8sfDrwTQmBxOZznfdYEw4emy8c0pHd4
-mh2jC/8IEHPyET4Bf8T9pouS4DsoJRszmT5/U1eelVpWqRJPPvEn37GN6lWf+tpU42miua46
-iU+vH7u2UgXC5zt8irMCzBSSdvEjfLLhwxsW+8Nku4EeztNrRSqpqcHDNX0eam01NpDJxnZ6
-hyOm+suhmZotNhxvxY7R4uEz29ynRnTf8K2hOoMm9/1G45Ge6lUerVON7+PJo6cGDc4zy5It
-C1wgfF7Dp7gZCoBiIqemnqaRTQaGTO3lQT/WOOETD19viGxq+DIagwNKX1EnL29iMqemKepP
-RBIrDJnq5eeKjGc8IXyy4UO/3bhBfdGDIf3sVeP7ifkHWJbtZK+eFQh0h0y9S+2nPcnuWuAd
-O0b7Dd8wAI6Cz6AoxU05mAnfb76vnFEX8yYzDo+3w2XQtN5UUhMT9TZm2nWcdadXIp3cUwzH
-mwyZUkp6Py2mbs4JnnziTz6zzX1uRDetP1VvJ+NxH3s9qp6mO9mrgXiFQi96dvRUXy1txdg1
-7ynh8x8+VXMFUEr6qGHsCPgiIKMFaTAHrJpThO8kF9tkrZjLLjp+vxYrbFcu++Sz1eb+1SiE
-8BG+UXD0R3sQPtnwodP4S7EC5/lJZsGfZLbV5v6fUQjhE3/yjQIDO3sQPtnwocH4C7EC53nZ
-lXrZxfcOd3Z28KmU5wIFbsN5fnVSKnzNZnNpaWl3dxdHiDiB23AeIYzmnVmPdpHxJjMSvrCw
-gMNjJPevGPMmcBvOe8TMyEIRA9/IIuZGzmSA8DlTivAcIXzh1dyZiAmfM6UIzxHCF17NnYmY
-8DlTivAcIXzh1dyZiAmfM6UIzxHCF17NnYmY8DlTivAcIXzh1dyZiAmfM6UIzxHCF17NnYmY
-8DlTivAcIXzh1dyZiAmfM6UIzxHCF17NnYmY8DlTivAcIXzh1dyZiAmfM6UIzxHCF17NnYmY
-8DlTivAcIXzh1dyZiAmfM6UIzxEx8LVarbm5uTF/31ubg11YD4+NyiOWAd9is7m8vNzpdNCy
-e/wCu7AOHyqvRmAGZMCHO050u1308bHSqh52YZ13+hn5r4YM+HDtw4FnhTxtFNZ5j7Nw4bPb
-5p4Nc0dOHjYUc/IRvirKb3dPSfAdGLIxY7btm9mI1frTU1eemet+e4QnXxWYSoLvkyH9zvZT
-jaepcdXTPhoyp80tyo0QPsKXJ6WIrtQY4asCmdHtKebkw/sd+4as4eSbbGxnxlNjycO84nYD
-vaGn16KF6ulA8vspHXZrHh1yyU6S4FON6jOS7zc/6GMfNa5Ppoc1plcNyaMlqmM9WpbnDBE+
-wlcEX/4lR4QRdMvAp2hLrdkzBvpGCV/o8PUM0XRtpsc3NUxqLJnOKyqtM7czOtEuyVyyL+EL
-Gj70S041oR88LOxFnzS8T6bzirGOelAgE/MP0ubYrZnw5fErhO9dPFoCvkTZRDs1QvhCh++t
-If2W3xP1dna8XcdhdnoFg8l0XjHRSR5Fu6hW5Wp9IoQvdPhUF/uM5PvNR03rdU971fHefPim
-XT+lLrSDlvbq6UBNr0meRdYIH+Ergs/4g23AVBa+NzFyijoFXKIY4ZhmMmOL8AUNH5p1v7Yn
-bBUeOnx/1GF+NIsIH+EbDUl/sAvhCxo+NOt+aU/YKjx0+Oy0qFdWCR/hs4Yf4QsaPjQYf2FP
-YJ1fIBo5fzI+UoWvLe7s7ODTJc9tCOzCOr86GSh8zWZzaWlpd3cXJ9D4BXZhHT6MPPuBbyjj
-5EORFhYWcPZYuV0G7MJ64KBUEb4Y+KoInnvazQDhs5v/oK0TvqDLbzd4wmc3/0FbJ3xBl99u
-8ITPbv6Dtk74gi6/3eAJn938B22d8AVdfrvBEz67+Q/aOuELuvx2gyd8dvMftHXCF3T57QZP
-+OzmP2jrhC/o8tsNnvDZzX/Q1glf0OW3Gzzhs5v/oK0TvqDLbzd4wmc3/0FbJ3xBl99u8ITP
-bv6Dtk74gi6/3eAJn938B22d8AVdfrvBEz67+Q/aeg4+3BPH7PODEfS+Ozw8RL/3breLfOmb
-cJdJXLFS+fVlbFBHaAZy8IGz+fn5/yk5f/78pUuXrl+/vr6+jnHCJ7TE7rpdePJdvXq11Wqt
-rq7evXv38ePHPPncrZ9oz8y/+fSV98aNG/fu3dva2tLkoS88Tz7RhXbReQ1fp9P5+PEjCNMC
-2sDc/fv3Y/IIn4vFk+6Thg+QoYM8zrZYwCKOQPyMR/BqA/dl5AsO6RV3yH8Nn4YMeA0RfUdQ
-wudQ8aS7ouHDVTWHHTjTR11OCJ/0ijvkv4bP5Az3/gd2+JkTwudQ8aS7ouEzITtqhPBJr7hD
-/mv4gFR5Gdl/OAr7y3OQGSiTgTK/Q8P+vVbGBnWYgcIM/Dl8ZVZShxk4YQZKffrghDa4nBko
-zADhIxjWMkD4rKWehgkfGbCWAcJnLfU0TPjIgLUMED5rqadhwkcGrGXg/6d8mklbFhfvAAAA
-AElFTkSuQmCC" /></a>
-</div>
-</OBJECT>
-<script>  
-var plugin = document.getElementById("plugin");  
-var b = plugin.connect("this", "sucks");  
-var obj = plugin.testObject();  
-obj.doSomething(42);      
-</script>  
-</BODY>  
-</HTML> 
\ No newline at end of file
diff --git a/plugins/ie/oophm/oophm/plugin.rgs b/plugins/ie/oophm/oophm/plugin.rgs
deleted file mode 100644
index e6f868e..0000000
--- a/plugins/ie/oophm/oophm/plugin.rgs
+++ /dev/null
@@ -1,34 +0,0 @@
-HKCR
-{
-	oophm.plugin.1 = s 'plugin Class'
-	{
-		CLSID = s '{1D6156B6-002B-49E7-B5CA-C138FB843B4E}'
-	}
-	oophm.plugin = s 'plugin Class'
-	{
-		CLSID = s '{1D6156B6-002B-49E7-B5CA-C138FB843B4E}'
-		CurVer = s 'oophm.plugin.1'
-	}
-	NoRemove CLSID
-	{
-		ForceRemove {1D6156B6-002B-49E7-B5CA-C138FB843B4E} = s 'plugin Class'
-		{
-			ProgID = s 'oophm.plugin.1'
-			VersionIndependentProgID = s 'oophm.plugin'
-			ForceRemove 'Programmable'
-			InprocServer32 = s '%MODULE%'
-			{
-				val ThreadingModel = s 'Apartment'
-			}
-			val AppID = s '%APPID%'
-			ForceRemove 'Control'
-			ForceRemove 'ToolboxBitmap32' = s '%MODULE%, 102'
-			'MiscStatus' = s '0'
-			{
-			    '1' = s '%OLEMISC%'
-			}
-			'TypeLib' = s '{9259F105-BE55-4BF6-B7CE-D0AA878C1BA6}'
-			'Version' = s '1.0'
-		}
-	}
-}
diff --git a/plugins/ie/oophm/oophm/pluginUI.htm b/plugins/ie/oophm/oophm/pluginUI.htm
deleted file mode 100644
index 7a017d7..0000000
--- a/plugins/ie/oophm/oophm/pluginUI.htm
+++ /dev/null
@@ -1,11 +0,0 @@
-<HTML>
-<BODY id=theBody>
-<BUTTON onclick='window.external.OnClick(theBody, "red");'>Red</BUTTON>
-<BR>
-<BR>
-<BUTTON onclick='window.external.OnClick(theBody, "green");'>Green</BUTTON>
-<BR>
-<BR>
-<BUTTON onclick='window.external.OnClick(theBody, "blue");'>Blue</BUTTON>
-</BODY>
-</HTML>
diff --git a/plugins/ie/oophm/oophm/resource.h b/plugins/ie/oophm/oophm/resource.h
deleted file mode 100644
index e0ef5a4..0000000
--- a/plugins/ie/oophm/oophm/resource.h
+++ /dev/null
@@ -1,24 +0,0 @@
-//{{NO_DEPENDENCIES}}
-// Microsoft Visual C++ generated include file.
-// Used by oophm.rc
-//
-#define IDS_PROJNAME                    100
-#define IDR_OOPHM                       101
-#define IDR_PLUGIN                      103
-#define IDD_ALLOW_DIALOG                103
-#define IDH_PLUGIN                      103
-#define IDR_JAVAOBJECT                  105
-#define IDR_EXCEPTIONCATCHER            106
-#define IDC_REMEMBER_CHECKBOX           201
-#define IDC_ALLOW_BUTTON                202
-
-// Next default values for new objects
-// 
-#ifdef APSTUDIO_INVOKED
-#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE        202
-#define _APS_NEXT_COMMAND_VALUE         32768
-#define _APS_NEXT_CONTROL_VALUE         204
-#define _APS_NEXT_SYMED_VALUE           107
-#endif
-#endif
diff --git a/plugins/ie/oophm/oophm/stdafx.cpp b/plugins/ie/oophm/oophm/stdafx.cpp
deleted file mode 100644
index 39ac1a3..0000000
--- a/plugins/ie/oophm/oophm/stdafx.cpp
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-// stdafx.cpp : source file that includes just the standard includes
-// oophm.pch will be the pre-compiled header
-// stdafx.obj will contain the pre-compiled type information
-
-#include "stdafx.h"
diff --git a/plugins/ie/oophm/oophm/stdafx.h b/plugins/ie/oophm/oophm/stdafx.h
deleted file mode 100644
index b60571c..0000000
--- a/plugins/ie/oophm/oophm/stdafx.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-// stdafx.h : include file for standard system include files,
-// or project specific include files that are used frequently,
-// but are changed infrequently
-
-#pragma once
-
-#ifndef STRICT
-#define STRICT
-#endif
-
-#include "targetver.h"
-
-#define _ATL_APARTMENT_THREADED
-#define _ATL_NO_AUTOMATIC_NAMESPACE
-
-#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS	// some CString constructors will be explicit
-
-#include "resource.h"
-#include <atlbase.h>
-#include <atlcom.h>
-#include <atlctl.h>
-
-// We want to bake GUID defs into the app
-#include "initguid.h"
-
-using namespace ATL;
-
-#include <windows.h>
-#include <stdio.h>
-#include <winevt.h>
diff --git a/plugins/ie/oophm/oophm/targetver.h b/plugins/ie/oophm/oophm/targetver.h
deleted file mode 100644
index e33be6a..0000000
--- a/plugins/ie/oophm/oophm/targetver.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#pragma once
-
-// The following macros define the minimum required platform.  The minimum required platform
-// is the earliest version of Windows, Internet Explorer etc. that has the necessary features to run 
-// your application.  The macros work by enabling all features available on platform versions up to and 
-// including the version specified.
-
-// Modify the following defines if you have to target a platform prior to the ones specified below.
-// Refer to MSDN for the latest info on corresponding values for different platforms.
-#ifndef WINVER                          // Specifies that the minimum required platform is Windows Vista.
-#define WINVER 0x0501           // Change this to the appropriate value to target other versions of Windows.
-#endif
-
-#ifndef _WIN32_WINNT            // Specifies that the minimum required platform is Windows Vista.
-#define _WIN32_WINNT 0x0501     // Change this to the appropriate value to target other versions of Windows.
-#endif
-
-#ifndef _WIN32_WINDOWS          // Specifies that the minimum required platform is Windows 98.
-#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later.
-#endif
-
-#ifndef _WIN32_IE                       // Specifies that the minimum required platform is Internet Explorer 7.0.
-#define _WIN32_IE 0x0600        // Change this to the appropriate value to target other versions of IE.
-#endif
-
diff --git a/plugins/ie/prebuilt/Win32/oophm.dll b/plugins/ie/prebuilt/Win32/oophm.dll
deleted file mode 100755
index 38973b2..0000000
--- a/plugins/ie/prebuilt/Win32/oophm.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/ie/prebuilt/gwt-dev-plugin-x64.msi b/plugins/ie/prebuilt/gwt-dev-plugin-x64.msi
deleted file mode 100755
index 205ee1f..0000000
--- a/plugins/ie/prebuilt/gwt-dev-plugin-x64.msi
+++ /dev/null
Binary files differ
diff --git a/plugins/ie/prebuilt/gwt-dev-plugin-x86.msi b/plugins/ie/prebuilt/gwt-dev-plugin-x86.msi
deleted file mode 100755
index 3496298..0000000
--- a/plugins/ie/prebuilt/gwt-dev-plugin-x86.msi
+++ /dev/null
Binary files differ
diff --git a/plugins/ie/prebuilt/gwt-dev-plugin.msi b/plugins/ie/prebuilt/gwt-dev-plugin.msi
deleted file mode 100644
index b7e928a..0000000
--- a/plugins/ie/prebuilt/gwt-dev-plugin.msi
+++ /dev/null
Binary files differ
diff --git a/plugins/ie/prebuilt/x64/oophm.dll b/plugins/ie/prebuilt/x64/oophm.dll
deleted file mode 100755
index 2b7d6bb..0000000
--- a/plugins/ie/prebuilt/x64/oophm.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/npapi/DevModeOptions/build.xml b/plugins/npapi/DevModeOptions/build.xml
deleted file mode 100644
index d24a181..0000000
--- a/plugins/npapi/DevModeOptions/build.xml
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<project name="DevModeOptions" default="prebuilt" basedir=".">
-  <!-- Arguments to gwtc and devmode targets -->
-  <property name="gwt.args" value="-style PRETTY" />
-
-  <!-- Configure path to GWT SDK -->
-  <property name="gwt.sdk" location="../../../build/staging/gwt-0.0.0" />
-
-  <path id="project.class.path">
-    <pathelement location="war/WEB-INF/classes"/>
-    <pathelement location="${gwt.sdk}/gwt-user.jar"/>
-    <fileset dir="${gwt.sdk}" includes="gwt-dev*.jar"/>
-    <!-- Add any additional non-server libs (such as JUnit) -->
-    <fileset dir="war/WEB-INF/lib" includes="**/*.jar"/>
-  </path>
-
-  <target name="javac" description="Compile java source to bytecode">
-    <mkdir dir="war/WEB-INF/classes"/>
-    <javac srcdir="java" includes="**" encoding="utf-8"
-        destdir="war/WEB-INF/classes"
-        source="1.5" target="1.5" nowarn="true"
-        debug="true" debuglevel="lines,vars,source">
-      <classpath refid="project.class.path"/>
-    </javac>
-    <copy todir="war/WEB-INF/classes">
-      <fileset dir="java" excludes="**/*.java"/>
-    </copy>
-  </target>
-
-  <target name="gwtc" depends="javac" description="GWT compile to JavaScript (production mode)">
-    <java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler">
-      <classpath>
-        <pathelement location="java"/>
-        <path refid="project.class.path"/>
-      </classpath>
-      <!-- add jvmarg -Xss16M or similar if you see a StackOverflowError -->
-      <jvmarg value="-Xmx256M"/>
-      <arg line="-war"/>
-      <arg value="war"/>
-      <!-- Additional arguments like -style PRETTY or -logLevel DEBUG -->
-      <arg line="${gwt.args}"/>
-      <arg value="com.google.gwt.devmodeoptions.DevModeOptions"/>
-    </java>
-  </target>
-
-  <target name="devmode" depends="javac" description="Run development mode">
-    <java failonerror="true" fork="true" classname="com.google.gwt.dev.DevMode">
-      <classpath>
-        <pathelement location="java"/>
-        <path refid="project.class.path"/>
-      </classpath>
-      <jvmarg value="-Xmx256M"/>
-      <arg value="-startupUrl"/>
-      <arg value="DevModeOptions.html"/>
-      <arg line="-war"/>
-      <arg value="war"/>
-      <!-- Additional arguments like -style PRETTY or -logLevel DEBUG -->
-      <arg line="${gwt.args}"/>
-      <arg value="com.google.devmodeoptions"/>
-    </java>
-  </target>
-
-  <target name="build" depends="gwtc" description="Build this project">
-  </target>
-
-  <target name="war" depends="build" description="Create a war file">
-    <zip destfile="DevModeOptions.war" basedir="war"/>
-  </target>
-
-  <target name="clean" depends="clean-prebuilt" description="Cleans this project">
-    <delete dir="war/WEB-INF/classes" failonerror="false" />
-    <delete dir="war/DevModeOptions" failonerror="false" />
-  </target>
-
-  <target name="clean-prebuilt" description="Clean the prebuilt copy">
-    <delete file="../prebuilt/gwt-dev-plugin/DevModeOptions.html" />
-    <delete dir="../prebuilt/gwt-dev-plugin/DevModeOptions" />
-  </target>
-
-  <target name="prebuilt" depends="build,clean-prebuilt" description="Copy compiled files into
-    the prebuilt crx directory">
-    <copy todir="../prebuilt/gwt-dev-plugin/DevModeOptions">
-      <fileset dir="war/DevModeOptions" excludes="**/*.java"/>
-    </copy>
-    <copy todir="../prebuilt/gwt-dev-plugin/">
-      <fileset dir="war/">
-        <include name="DevModeOptions.html" />
-      </fileset>
-    </copy>
-  </target>
-</project>
diff --git a/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/DevModeOptions.google.xml b/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/DevModeOptions.google.xml
deleted file mode 100644
index 547834c..0000000
--- a/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/DevModeOptions.google.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!-- A fragment of DevModeOptions.gwt.xml used by the Google build.
-     This should be kept in sync with DevModeOptions.gwt.xml. -->
-<set-property name='user.agent' value='safari' />
-<add-linker name="direct_install" />
diff --git a/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/DevModeOptions.gwt.xml b/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/DevModeOptions.gwt.xml
deleted file mode 100644
index 6fa77fd..0000000
--- a/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/DevModeOptions.gwt.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 0.0.999//EN" "http://google-web-toolkit.googlecode.com/svn/tags/0.0.999/distro-source/core/src/gwt-module.dtd">
-<module rename-to='DevModeOptions'>
-  <!-- Inherit the core Web Toolkit stuff.                        -->
-  <inherits name='com.google.gwt.user.User' />
-
-  <!-- Specify the app entry point class.                         -->
-  <entry-point class='com.google.gwt.devmodeoptions.client.DevModeOptions'/>
-
-  <!-- Specify the paths for translatable code                    -->
-  <source path='client'/>
-
-<!-- The rest should be kept in sync with DevModeOptions.google.xml -->
-  <set-property name='user.agent' value='safari' />
-  <add-linker name="direct_install" />
-</module>
diff --git a/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/DevModeOptions.java b/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/DevModeOptions.java
deleted file mode 100644
index 681a173..0000000
--- a/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/DevModeOptions.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * Copyright 2010 Google Inc.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.devmodeoptions.client;
-
-import com.google.gwt.core.client.EntryPoint;
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.core.client.JavaScriptObject;
-import com.google.gwt.core.client.JsArray;
-import com.google.gwt.dom.client.StyleInjector;
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.event.dom.client.KeyCodes;
-import com.google.gwt.event.dom.client.KeyPressEvent;
-import com.google.gwt.event.dom.client.KeyPressHandler;
-import com.google.gwt.uibinder.client.UiBinder;
-import com.google.gwt.uibinder.client.UiField;
-import com.google.gwt.user.client.Window.Location;
-import com.google.gwt.user.client.ui.Button;
-import com.google.gwt.user.client.ui.FlexTable;
-import com.google.gwt.user.client.ui.Label;
-import com.google.gwt.user.client.ui.RadioButton;
-import com.google.gwt.user.client.ui.RootLayoutPanel;
-import com.google.gwt.user.client.ui.TextBox;
-import com.google.gwt.user.client.ui.Widget;
-
-/**
- * The options page for configuring the set of hosts permitted to use the GWT
- * Developer Plugin.
- */
-public class DevModeOptions implements EntryPoint {
-
-  interface Binder extends UiBinder<Widget, DevModeOptions> {
-  }
-
-  private static final DevModeOptionsResources bundle = GWT.create(DevModeOptionsResources.class);
-
-  @UiField
-  Button addBtn;
-
-  @UiField
-  Label errorMessage;
-
-  @UiField
-  TextBox hostname;
-
-  @UiField
-  TextBox codeserver;
-
-  JsArray<HostEntry> hosts;
-
-  @UiField
-  RadioButton includeNo;
-
-  @UiField
-  RadioButton includeYes;
-
-  @UiField
-  FlexTable savedHosts;
-
-  public void onModuleLoad() {
-    StyleInjector.inject(bundle.css().getText(), true);
-    RootLayoutPanel.get().add(
-        GWT.<Binder> create(Binder.class).createAndBindUi(this));
-
-    hosts = HostEntryStorage.get().getHostEntries();
-
-    addBtn.addClickHandler(new ClickHandler() {
-      public void onClick(ClickEvent event) {
-        addHost(HostEntry.create(hostname.getText() + "/"
-            + getCodeServer(codeserver),
-            includeYes.getValue()));
-      }
-    });
-
-    hostname.setFocus(true);
-    String host = Location.getParameter("host");
-    if (host != null) {
-      hostname.setText(host);
-    }
-
-    String code = Location.getParameter("codeserver");
-    if (code != null) {
-      codeserver.setText(code);
-    } else {
-      //default for users entering through options
-      codeserver.setText("localhost");
-    }
-
-    hostname.addKeyPressHandler(new KeyPressHandler() {
-      public void onKeyPress(KeyPressEvent event) {
-        if (event.getCharCode() == KeyCodes.KEY_ENTER) {
-        addHost(HostEntry.create(hostname.getText() + "/"
-            + getCodeServer(codeserver),
-            includeYes.getValue()));
-        }
-      }
-    });
-
-    codeserver.addKeyPressHandler(new KeyPressHandler() {
-      public void onKeyPress(KeyPressEvent event) {
-        if (event.getCharCode() == KeyCodes.KEY_ENTER) {
-        addHost(HostEntry.create(hostname.getText() + "/"
-            + getCodeServer(codeserver),
-            includeYes.getValue()));
-        }
-      }
-    });
-
-    savedHosts.setText(0, 0, "Web server");
-    savedHosts.setText(0, 1, "Code server");
-    savedHosts.setText(0, 2, "Include/Exclude");
-    savedHosts.setText(0, 3, "Remove");
-    savedHosts.getCellFormatter().addStyleName(0, 0,
-        bundle.css().savedHostsHeading());
-    savedHosts.getCellFormatter().addStyleName(0, 0, bundle.css().textCol());
-
-    savedHosts.getCellFormatter().addStyleName(0, 1,
-        bundle.css().savedHostsHeading());
-    savedHosts.getCellFormatter().addStyleName(0, 1, bundle.css().textCol());
-
-    savedHosts.getCellFormatter().addStyleName(0, 2,
-        bundle.css().savedHostsHeading());
-
-    savedHosts.getCellFormatter().addStyleName(0, 3,
-        bundle.css().savedHostsHeading());
-
-    for (int i = 0; i < hosts.length(); i++) {
-      displayHost(hosts.get(i));
-    }
-  }
-
-  private void addHost(final HostEntry newHost) {
-    if (newHost.getUrl().length() == 0) {
-      return;
-    }
-
-    boolean alreadyExists = false;
-    for (int i = 0; i < hosts.length() && !alreadyExists; i++) {
-      if (hosts.get(i).isEqual(newHost)) {
-        alreadyExists = true;
-      }
-    }
-
-    if (alreadyExists) {
-      error("Cannot add duplicate host entry for " + newHost.getUrl());
-      return;
-    } else {
-      hosts.push(newHost);
-      clearError();
-    }
-    HostEntryStorage.get().saveEntries(hosts);
-
-    displayHost(newHost);
-
-    codeserver.setText("");
-    hostname.setText("");
-    hostname.setFocus(true);
-  }
-
-  private void clearError() {
-    errorMessage.setText("");
-  }
-
-  private void displayHost(final HostEntry newHost) {
-    int numRows = savedHosts.getRowCount();
-    int col = 0;
-    
-    String[] names = newHost.getUrl().split("/");
-   
-    savedHosts.insertRow(numRows);
-    savedHosts.setText(numRows, col++, names[0]);
-    savedHosts.setText(numRows, col++, names.length > 1 ? names[1] 
-        : "localhost");
-    savedHosts.setText(numRows, col++, newHost.include() ? "Include"
-        : "Exclude");
-    if (newHost.include()) {
-      savedHosts.getCellFormatter().addStyleName(numRows, 0,
-          bundle.css().include());
-      savedHosts.getCellFormatter().addStyleName(numRows, 1,
-          bundle.css().include());
-      savedHosts.getCellFormatter().addStyleName(numRows, 2,
-          bundle.css().include());
-    } else {
-      savedHosts.getCellFormatter().addStyleName(numRows, 0,
-          bundle.css().exclude());
-      savedHosts.getCellFormatter().addStyleName(numRows, 1,
-          bundle.css().exclude());
-      savedHosts.getCellFormatter().addStyleName(numRows, 2,
-          bundle.css().exclude());
-    }
-
-    Button removeHostButton = new Button("x");
-    removeHostButton.addClickHandler(new ClickHandler() {
-      public void onClick(ClickEvent event) {
-        removeHost(newHost);
-      }
-    });
-    savedHosts.setWidget(numRows, col, removeHostButton);
-  }
-
-  private void error(String text) {
-    errorMessage.setText(text);
-  }
-
-  private void removeHost(HostEntry host) {
-    JsArray<HostEntry> newHosts = JavaScriptObject.createArray().cast();
-    for (int index = 0; index < hosts.length(); index++) {
-      if (hosts.get(index).isEqual(host)) {
-        savedHosts.removeRow(index + 1);
-      } else {
-        newHosts.push(hosts.get(index));
-      }
-    }
-
-    hosts = newHosts;
-    HostEntryStorage.get().saveEntries(hosts);
-  }
-
-  private String getCodeServer(TextBox box) {
-    return (box.getText().length() > 0) ? box.getText() : "localhost";
-  }
-
-}
diff --git a/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/DevModeOptions.ui.xml b/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/DevModeOptions.ui.xml
deleted file mode 100644
index 1833223..0000000
--- a/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/DevModeOptions.ui.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<!-- Copyright 2010 Google Inc.                                             -->
-<!-- Licensed under the Apache License, Version 2.0 (the "License"); you    -->
-<!-- may not use this file except in compliance with the License. You may   -->
-<!-- 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. License for the specific language governing permissions and   -->
-<!-- limitations under the License.                                         -->
-
-<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
-<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
-	xmlns:g="urn:import:com.google.gwt.user.client.ui">
-	<ui:with field='res'
-		type='com.google.gwt.devmodeoptions.client.DevModeOptionsResources' />
-	<g:HTMLPanel styleName="{res.css.mainPanel}">
-		<div>
-			<g:HorizontalPanel>
-				<g:Image resource='{res.gwt64}' styleName="{res.css.logo}" />
-				<g:HTML>
-					<h1> GWT Developer Plugin Options </h1>
-				</g:HTML>
-			</g:HorizontalPanel>
-
-			<g:Label styleName="{res.css.explanation}">
-				The GWT Developer Plugin will open a TCP/IP connection to an arbitrary
-				host/port at the request of a web page. To minimize security risks,
-				by default it will only connect to the local machine. To allow
-				cross-machine debugging, you can add exceptions here -- include the
-				exact host name of the web and code servers you will use for debugging, 
-				but do not include any you do not trust.</g:Label>
-
-			<g:Label ui:field="errorMessage" styleName="{res.css.errorMessage}"/>
-
-			<g:Grid>
-				<g:row>
-					<g:customCell>
-						<g:Label styleName="{res.css.important}">Web server</g:Label>
-					</g:customCell>
-					<g:customCell>
-						<g:Label styleName="{res.css.important}">Code server</g:Label>
-					</g:customCell>
-				</g:row>
-				<g:row>
-					<g:customCell>
-					<g:TextBox ui:field="hostname" styleName="{res.css.textBox}" />
-					</g:customCell>
-
-					<g:customCell>
-					<g:TextBox ui:field="codeserver" styleName="{res.css.textBox}" />
-					</g:customCell>
-
-					<g:customCell>
-					<g:Button styleName="{res.css.important}" ui:field="addBtn">Add</g:Button>
-					</g:customCell>
-
-					<g:customCell>
-					<g:RadioButton name="include" ui:field="includeYes"
-						checked="true">Include</g:RadioButton>
-					</g:customCell>
-					<g:customCell>
-					<g:RadioButton name="include" ui:field="includeNo">Exclude</g:RadioButton>
-					</g:customCell>
-				</g:row>
-			</g:Grid>
-
-			<g:FlexTable ui:field="savedHosts" styleName="{res.css.savedHosts}">
-			</g:FlexTable>
-		</div>
-	</g:HTMLPanel>
-
-</ui:UiBinder> 
diff --git a/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/DevModeOptionsResources.java b/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/DevModeOptionsResources.java
deleted file mode 100644
index 3f17ced..0000000
--- a/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/DevModeOptionsResources.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright 2010 Google Inc.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.devmodeoptions.client;
-
-import com.google.gwt.resources.client.ClientBundle;
-import com.google.gwt.resources.client.CssResource;
-import com.google.gwt.resources.client.ImageResource;
-
-public interface DevModeOptionsResources extends ClientBundle {
-  
-  public interface Css extends CssResource {  
-    String errorMessage();
-  
-    String exclude();
-    
-    String explanation();
-    
-    String header();
-    
-    String important();
-    
-    String include();
-    
-    String logo();
-    
-    String mainPanel();
-    
-    String savedHosts();
-    
-    String savedHostsHeading();
-    
-    String textBox();
-    
-    String textCol();
-  }
-  
-  @Source("com/google/gwt/devmodeoptions/client/resources/DevModeOptions.css")
-  Css css();
-
-  @Source("com/google/gwt/devmodeoptions/client/resources/gwt128.png")
-  ImageResource gwt128();
-
-  @Source("com/google/gwt/devmodeoptions/client/resources/gwt16.png")
-  ImageResource gwt16();
-
-  @Source("com/google/gwt/devmodeoptions/client/resources/gwt32.png")
-  ImageResource gwt32();
-
-  @Source("com/google/gwt/devmodeoptions/client/resources/gwt48.png")
-  ImageResource gwt48();
-
-  @Source("com/google/gwt/devmodeoptions/client/resources/gwt64.png")
-  ImageResource gwt64();
-  
-  @Source("com/google/gwt/devmodeoptions/client/resources/warning.png")
-  ImageResource warning();
-}
diff --git a/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/HostEntry.java b/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/HostEntry.java
deleted file mode 100644
index 672a783..0000000
--- a/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/HostEntry.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright 2010 Google Inc.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.devmodeoptions.client;
-
-import com.google.gwt.core.client.JavaScriptObject;
-
-
-public class HostEntry extends JavaScriptObject{  
-  
-  protected HostEntry() {}
-  
-  public static HostEntry create(String url, boolean include) {
-    HostEntry entry = JavaScriptObject.createObject().cast();
-    entry.setUrl(url);
-    entry.setInclude(include);
-    return entry;
-  }
-    
-  public final native String getUrl() /*-{
-    return this.url;
-  }-*/;
-  
-  public final native void setUrl(String url) /*-{
-    this.url = url;
-  }-*/;
-  
-  public final native void setInclude(boolean include) /*-{
-    this.include = include;
-  }-*/;
-  
-  public final native boolean include() /*-{
-    return this.include;
-  }-*/;
-
-  public final boolean isEqual(HostEntry host) {
-    return this.getUrl().equals(host.getUrl());
-  }
-}
diff --git a/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/HostEntryStorage.java b/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/HostEntryStorage.java
deleted file mode 100644
index 6a7ddc0..0000000
--- a/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/HostEntryStorage.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2010 Google Inc.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.devmodeoptions.client;
-
-import com.google.gwt.core.client.JavaScriptObject;
-import com.google.gwt.core.client.JsArray;
-
-public class HostEntryStorage {
-  private static HostEntryStorage singleton = new HostEntryStorage();
-  private static final String HOST_ENTRY_KEY = "GWT_DEV_HOSTENTRY";
-  
-  public static HostEntryStorage get() {
-    return singleton;
-  }
-  
-  private final LocalStorage localStorage;
-  
-  private HostEntryStorage() {
-    localStorage = getLocalStorage();
-  }
-
-  private static native LocalStorage getLocalStorage() /*-{
-    return $wnd.localStorage;
-  }-*/;
-  
-  public JsArray<HostEntry> getHostEntries() {
-    JsArray<HostEntry> entries = localStorage.getItem(HOST_ENTRY_KEY).cast();
-    if (entries == null) {
-      return JavaScriptObject.createArray().cast();
-    } else {
-      return entries;
-    }
-  }
-  
-  public void saveEntries(JsArray<HostEntry> entries) {
-    localStorage.setItem(HOST_ENTRY_KEY, entries.cast());
-  }
-  
-}
diff --git a/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/LocalStorage.java b/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/LocalStorage.java
deleted file mode 100644
index 9e6a6c2..0000000
--- a/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/LocalStorage.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright 2010 Google Inc.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-
-package com.google.gwt.devmodeoptions.client;
-
-import com.google.gwt.core.client.JavaScriptObject;
-
-/**
- * Simple wrapper around HTML5 <a
- * href="http://dev.w3.org/html5/webstorage/#the-localstorage-attribute">local
- * storage</a> API.
- */
-public class LocalStorage extends JavaScriptObject {
-  protected LocalStorage() {
-  }
-
-  public final native void clear() /*-{
-    this.clear();
-  }-*/;
-
-  public final native JavaScriptObject getItem(String key) /*-{
-    return JSON.parse(this.getItem(key));
-  }-*/;
-
-  public final native String getKey(int index) /*-{
-    return this.key(index);
-  }-*/;
-
-  public final native int getLength() /*-{
-    return this.length;
-  }-*/;
-
-  public final native String getStringItem(String key) /*-{
-    return this.getItem(key);
-  }-*/;
-
-  public final native void removeItem(String key) /*-{
-    this.removeItem(key);
-  }-*/;
-
-  public final native void setItem(String key, JavaScriptObject dataObject) /*-{
-    // Note, as of FF3.6, gecko does not support storing an object (only strings).
-    this.setItem(key, JSON.stringify(dataObject));
-  }-*/;
-
-  public final native void setStringItem(String key, String dataString) /*-{
-    this.setItem(key, dataString);
-  }-*/;
-}
diff --git a/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/resources/DevModeOptions.css b/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/resources/DevModeOptions.css
deleted file mode 100644
index 51d8605..0000000
--- a/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/resources/DevModeOptions.css
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright 2010 Google Inc.
- * 
- * Licensed 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.
- */
-@def TEXTWIDTH 30em;
-.savedHostsHeading {
-  font-weight: bold;
-}
-
-.savedHosts {
-  border: 2px solid silver;
-  padding: 2px;
-  margin-top: 1.5em;
-}
-
-.include {
-  color: blue;
-}
-
-.exclude {
-  color: IndianRed;
-}
-
-.errorMessage {
-  color: red;
-  font-weight: bold;
-}
-
-.important {
-  font-weight: bold;
-}
-
-.header {
-  font-size: large;
-  font-weight: bold;
-}
-
-.textBox {
-  width: 15em;
-}
-
-.textCol {
-  width: TEXTWIDTH;
-}
-
-.logo {
-  margin-right: 1em;
-}
-
-.mainPanel {
-  margin-left: 2em;
-  margin-top: 2em;
-  font-family: sans-serif;
-  font-size: small;
-  max-width: 50em;
-}
-
-.explanation {
-  margin-top: 1.5em;
-  margin-bottom: 1.5em;
-}
\ No newline at end of file
diff --git a/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/resources/gwt128.png b/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/resources/gwt128.png
deleted file mode 100644
index 57e8e01..0000000
--- a/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/resources/gwt128.png
+++ /dev/null
Binary files differ
diff --git a/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/resources/gwt16.png b/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/resources/gwt16.png
deleted file mode 100644
index f26096e..0000000
--- a/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/resources/gwt16.png
+++ /dev/null
Binary files differ
diff --git a/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/resources/gwt32.png b/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/resources/gwt32.png
deleted file mode 100644
index 7ba8270..0000000
--- a/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/resources/gwt32.png
+++ /dev/null
Binary files differ
diff --git a/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/resources/gwt48.png b/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/resources/gwt48.png
deleted file mode 100644
index e8a4172..0000000
--- a/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/resources/gwt48.png
+++ /dev/null
Binary files differ
diff --git a/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/resources/gwt64.png b/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/resources/gwt64.png
deleted file mode 100644
index 922cc88..0000000
--- a/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/resources/gwt64.png
+++ /dev/null
Binary files differ
diff --git a/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/resources/warning.png b/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/resources/warning.png
deleted file mode 100644
index 55a203b..0000000
--- a/plugins/npapi/DevModeOptions/java/com/google/gwt/devmodeoptions/client/resources/warning.png
+++ /dev/null
Binary files differ
diff --git a/plugins/npapi/DevModeOptions/war/DevModeOptions.html b/plugins/npapi/DevModeOptions/war/DevModeOptions.html
deleted file mode 100644
index d2132e8..0000000
--- a/plugins/npapi/DevModeOptions/war/DevModeOptions.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<!doctype html>
-<html>
-  <head>
-    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
-    
-    <title>GWT DevMode Options</title>
-    <script type="text/javascript" language="javascript" src="DevModeOptions/DevModeOptions.nocache.js"></script>
-  </head>
-
-  <body>
-  </body>
-</html>
diff --git a/plugins/npapi/DevModeOptions/war/WEB-INF/classes/marker b/plugins/npapi/DevModeOptions/war/WEB-INF/classes/marker
deleted file mode 100644
index e69de29..0000000
--- a/plugins/npapi/DevModeOptions/war/WEB-INF/classes/marker
+++ /dev/null
diff --git a/plugins/npapi/DevModeOptions/war/WEB-INF/lib/marker b/plugins/npapi/DevModeOptions/war/WEB-INF/lib/marker
deleted file mode 100644
index e69de29..0000000
--- a/plugins/npapi/DevModeOptions/war/WEB-INF/lib/marker
+++ /dev/null
diff --git a/plugins/npapi/DevModeOptions/war/WEB-INF/web.xml b/plugins/npapi/DevModeOptions/war/WEB-INF/web.xml
deleted file mode 100644
index bd4f348..0000000
--- a/plugins/npapi/DevModeOptions/war/WEB-INF/web.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-xmlns="http://java.sun.com/xml/ns/javaee"
-xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
-xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
-http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
-</web-app>
diff --git a/plugins/npapi/JavaObject.cpp b/plugins/npapi/JavaObject.cpp
deleted file mode 100644
index adbdbc8..0000000
--- a/plugins/npapi/JavaObject.cpp
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#include "Debug.h"
-
-#include "JavaObject.h"
-#include "Plugin.h"
-#include "NPVariantUtil.h"
-#include "NPVariantWrapper.h"
-
-using std::string;
-
-static string IdentifierName(NPIdentifier name) {
-  string iname;
-  if (NPN_IdentifierIsString(name)) {
-    iname = NPN_UTF8FromIdentifier(name);
-  } else {
-    char buf[50];
-    snprintf(buf, sizeof(buf), "%d", NPN_IntFromIdentifier(name));
-    iname = buf;
-  }
-  return iname;
-}
-
-JavaObject* JavaObject::create(ScriptableInstance* plugin, int id) {
-  Debug::log(Debug::Spam) << "Creating Java object id=" << id;
-  NPClass* npClass = GetNPClass<JavaObject>();
-  NPObject* obj = NPN_CreateObject(plugin->getNPP(), npClass);
-  Debug::log(Debug::Spam) << " addr=" << obj << Debug::flush;
-  JavaObject* jObj = static_cast<JavaObject*>(obj);
-  jObj->setObjectId(id);
-  return jObj;
-}
-
-bool JavaObject::isInstance(NPObject* obj) {
-  return obj->_class == GetNPClass<JavaObject>();
-}
-
-JavaObject::~JavaObject() {
-  if (plugin) {
-    plugin->destroyJavaWrapper(this);
-  } else {
-    Debug::log(Debug::Spam) << "Destroying JavaObject " << objectId << " after plugin destroyed"
-        << Debug::flush;
-  }
-}
-
-bool JavaObject::enumeration(NPIdentifier** propReturn, uint32_t* count) {
-  Debug::log(Debug::Debugging) << "JavaObject::enumeration(" << objectId << ")"
-      << Debug::flush;
-  int n = 1;
-  NPIdentifier* props = static_cast<NPIdentifier*>(NPN_MemAlloc(sizeof(NPIdentifier) * n));
-  props[0] = idID;
-  *propReturn = props;
-  *count = n;
-  return true;
-}
-
-bool JavaObject::getProperty(NPIdentifier prop, NPVariant *result) {
-  if (!plugin) {
-    Debug::log(Debug::Spam) << "Ignoring getProperty on " << objectId << " after plugin destroyed"
-        << Debug::flush;
-    VOID_TO_NPVARIANT(*result);
-    return true;
-  }
-  Debug::log(Debug::Spam) << "JavaObject::getProperty(" << objectId << ")" << Debug::flush;
-  if (NPN_IdentifierIsString(prop)) {
-    if (prop == plugin->toStringID) {
-      return plugin->JavaObject_getToStringTearOff(result);
-    }
-    if (prop == idID) {
-      INT32_TO_NPVARIANT(objectId, *result);
-      return true;
-    }
-    // all other properties are numeric dispatchIDs
-    return false;
-  }
-  int dispId = NPN_IntFromIdentifier(prop);
-  // JavaObject_getProperty will retain the return value if needed.
-  return plugin->JavaObject_getProperty(objectId, dispId, result);
-}
-
-bool JavaObject::hasMethod(NPIdentifier method) {
-  if (!plugin) {
-    Debug::log(Debug::Spam) << "Ignoring hasMethod on " << objectId << " after plugin destroyed"
-        << Debug::flush;
-    return true;
-  }
-  Debug::log(Debug::Spam) << "JavaObject::hasMethod(" << objectId << ", method="
-      << IdentifierName(method) << ")" << Debug::flush;
-  return false;
-//  return !NPN_IdentifierIsString(method);
-}
-
-bool JavaObject::hasProperty(NPIdentifier prop) {
-  if (!plugin) {
-    Debug::log(Debug::Spam) << "Ignoring hasProperty on " << objectId << " after plugin destroyed"
-        << Debug::flush;
-    return true;
-  }
-  Debug::log(Debug::Spam) << "JavaObject::hasProperty(" << objectId << ", prop="
-      << IdentifierName(prop) << ")" << Debug::flush;
-  return !NPN_IdentifierIsString(prop) || prop == idID || prop == plugin->toStringID;
-}
-
-bool JavaObject::invokeDefault(const NPVariant *args, uint32_t argCount, NPVariant *result) {
-  if (argCount < 2 || !NPVariantUtil::isInt(args[0])
-      || (!NPVariantUtil::isNull(args[1]) && !NPVariantUtil::isObject(args[1]))) {
-    Debug::log(Debug::Error) << "incorrect arguments to invokeDefault" << Debug::flush;
-    return false;
-  }
-  if (!plugin) {
-    Debug::log(Debug::Spam) << "Ignoring invokeDefault on " << objectId << " after plugin destroyed"
-        << Debug::flush;
-    VOID_TO_NPVARIANT(*result);
-    return true;
-  }
-  Debug::log(Debug::Debugging) << "JavaObject::invokeDefault(" << objectId;
-  for (uint32_t i = 0; i < argCount; ++i) {
-    Debug::log(Debug::Debugging) << ", " << NPVariantProxy::toString(args[i]);
-  }
-  Debug::log(Debug::Debugging) << ")" << Debug::flush;
-  int dispId = NPVariantUtil::getAsInt(args[0]);
-  int objId = objectId;
-  if (!NPVariantUtil::isNull(args[1])) {
-    NPObject* thisObj = NPVariantUtil::getAsObject(args[1]);
-    if (isInstance(thisObj)) {
-      JavaObject* thisJavaObj = static_cast<JavaObject*>(thisObj);
-      objId = thisJavaObj->objectId;
-    }
-  }
-  // JavaObject_invoke will retain the return value if needed.
-  return plugin->JavaObject_invoke(objId, dispId, args + 2, argCount - 2, result);
-}
-
-bool JavaObject::invoke(NPIdentifier name, const NPVariant *args,
-    uint32_t argCount, NPVariant *result) {
-  VOID_TO_NPVARIANT(*result);
-  if (!plugin) {
-    Debug::log(Debug::Spam) << "Ignoring invoke on " << objectId << " after plugin destroyed"
-        << Debug::flush;
-    return true;
-  }
-  string methodName(NPN_UTF8FromIdentifier(name));
-  Debug::log(Debug::Spam) << "JavaObject::invoke(" << objectId << ", method="
-      << methodName << ")" << Debug::flush;
-  if (name == plugin->toStringID) {
-    // -1 is magic and means a raw toString().
-    return plugin->JavaObject_invoke(objectId, -1, args, argCount, result);
-  }
-  // toString is the only method we support invoking directly on a Java wrapper
-  return false;
-}
-
-bool JavaObject::setProperty(NPIdentifier prop, const NPVariant *value) {
-  if (!plugin) {
-    Debug::log(Debug::Spam) << "Ignoring setProperty on " << objectId << " after plugin destroyed"
-        << Debug::flush;
-    return true;
-  }
-  Debug::log(Debug::Spam) << "JavaObject::setProperty(" << objectId << ", val="
-      << NPVariantProxy::toString(*value) << ")" << Debug::flush;
-  if (NPN_IdentifierIsString(prop)) {
-    // any non-numeric properties are read-only
-    return false;
-  }
-  int dispId = NPN_IntFromIdentifier(prop); 
-  return plugin->JavaObject_setProperty(objectId, dispId, value);
-}
diff --git a/plugins/npapi/JavaObject.h b/plugins/npapi/JavaObject.h
deleted file mode 100644
index c5dc310..0000000
--- a/plugins/npapi/JavaObject.h
+++ /dev/null
@@ -1,67 +0,0 @@
-#ifndef JAVAOBJECT_H_
-#define JAVAOBJECT_H_
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#include <string>
-#include <vector>
-
-#include "mozincludes.h"
-#include "Plugin.h"
-#include "ScriptableInstance.h"
-#include "Debug.h"
-#include "HashMap.h"
-
-class JavaObject : public NPObjectWrapper<JavaObject> {
-  friend class ScriptableInstance;
-private:
-  ScriptableInstance* plugin;
-  int objectId;
-  
-  NPIdentifier idID;
-
-public:
-  JavaObject(NPP npp) : NPObjectWrapper<JavaObject>(npp),
-      plugin(reinterpret_cast<Plugin*>(npp->pdata)->getScriptableInstance()),
-      idID(NPN_GetStringIdentifier("id")) {}
-  virtual ~JavaObject();
-  static JavaObject* create(ScriptableInstance* plugin, int id);
-  static bool isInstance(NPObject* obj);
-  
-  virtual bool enumeration(NPIdentifier** names, uint32_t* count);
-  virtual bool hasMethod(NPIdentifier name);
-  virtual bool invoke(NPIdentifier name, const NPVariant *args, uint32_t num_args,
-      NPVariant *result);
-  virtual bool invokeDefault(const NPVariant *args, uint32_t num_args, NPVariant *result);
-  virtual bool hasProperty(NPIdentifier name);
-  virtual bool getProperty(NPIdentifier name, NPVariant *result);
-  virtual bool setProperty(NPIdentifier name, const NPVariant *value);
-  
-  void setObjectId(int objectId) {
-    this->objectId = objectId;
-  }
-
-  int getObjectId() const {
-    return objectId;
-  }
-private:
-  // Called by a Plugin instance when it is about to be destroyed.
-  void disconnectPlugin() {
-    plugin = 0;
-  }
-};
-
-#endif /*JAVAOBJECT_H_*/
diff --git a/plugins/npapi/LocalObjectTable.cpp b/plugins/npapi/LocalObjectTable.cpp
deleted file mode 100644
index a450381..0000000
--- a/plugins/npapi/LocalObjectTable.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "mozincludes.h"
-#include "LocalObjectTable.h"
-
-LocalObjectTable::~LocalObjectTable() {
-  if (!dontFree) {
-    freeAll();
-  }
-}
diff --git a/plugins/npapi/LocalObjectTable.h b/plugins/npapi/LocalObjectTable.h
deleted file mode 100644
index 57a5887..0000000
--- a/plugins/npapi/LocalObjectTable.h
+++ /dev/null
@@ -1,183 +0,0 @@
-#ifndef H_LocalObjectTable
-#define H_LocalObjectTable
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#include <map>
-
-#include "Debug.h"
-
-#include "mozincludes.h"
-#include "NPVariantUtil.h"
-
-class LocalObjectTable {
-private:
-  /* The host expects Value objects to have int's for JSO id's, hence the
-   * dual mapping.  ObjectMap is for host communication (Value.getJsObjectId)
-   * and the IdMap is for browser communication (NPObject to ID).
-   */
-  typedef std::map<int, NPObject*> ObjectMap;
-  typedef std::map<NPObject*,int> IdMap;
-
-  NPP npp;
-
-  int nextId;
-  ObjectMap objects;
-  IdMap ids;
-  bool dontFree;
-
-  bool jsIdentitySafe;
-
-  const NPIdentifier gwtId;
-
-  void setFree(int id) {
-    NPObject *obj = getById(id);
-    if(!obj) {
-      Debug::log(Debug::Error) << "setFree(id=" << id << "): object not in table"
-        << Debug::flush;
-      return;
-    }
-    ids.erase(obj);
-    objects.erase(id);
-  }
-
-public:
-  LocalObjectTable(NPP npp, bool jsIdentitySafe):
-    nextId(0), dontFree(false), jsIdentitySafe(jsIdentitySafe),
-    gwtId(NPN_GetStringIdentifier("__gwt_ObjectId")) {
-  }
-
-  virtual ~LocalObjectTable();
-
-  /**
-   * Add a new object, which must not be in the table, and return a new id for it.
-   */
-  int add(NPObject* obj) {
-    int id = nextId++;
-    set(id, obj);
-
-    if (!jsIdentitySafe) {
-      NPVariant idVariant;
-      Debug::log(Debug::Debugging) << "LocalObjectTable::set(): setting expando("
-          << id << ")" << Debug::flush;
-      INT32_TO_NPVARIANT(id,idVariant);
-      if (!NPN_SetProperty(npp, obj, gwtId, &idVariant)) {
-        Debug::log(Debug::Error) << "Setting GWT id on object failed" << Debug::flush;
-      }
-    }
-
-    return id;
-  }
-
-  void set(int id, NPObject* obj) {
-    Debug::log(Debug::Debugging) << "LocalObjectTable::set(id=" << id << ",obj=" << (void*)obj
-        << ")" << Debug::flush;
-    if (!jsIdentitySafe) {
-      ObjectMap::iterator it;
-      it = objects.find(id);
-      if( it != objects.end() ) {
-        if (it->second != obj) {
-          //The JSO has changed and we need to update the map, releasing
-          //the old and remembering the new object.
-          ids.erase(it->second);
-          NPN_ReleaseObject(it->second);
-          NPN_RetainObject(obj);
-        } else {
-          //do nothing; object exists and is already mapped
-          return;
-        }
-      } else {
-        //New insertion, retain the object in the table
-        NPN_RetainObject(obj);
-      }
-    } else {
-      //Not dealing with identity hack, retain
-      NPN_RetainObject(obj);
-    }
-    objects[id] = obj;
-    ids[obj] = id;
-
-    // keep track that we hold a reference in the table
-  }
-
-  void free(int id) {
-    Debug::log(Debug::Debugging) << "LocalObjectTable::free(id=" << id << ")" << Debug::flush;
-    ObjectMap::iterator it = objects.find(id);
-    if (it == objects.end()) {
-      Debug::log(Debug::Error) << "Freeing freed object slot " << id << Debug::flush;
-      return;
-    }
-    if (!jsIdentitySafe) {
-      Debug::log(Debug::Debugging) << "removing expando!" << Debug::flush;
-      NPN_RemoveProperty(npp, it->second, gwtId);
-    }
-    setFree(id);
-    if (!dontFree) {
-      NPObject* obj = it->second;
-      NPN_ReleaseObject(obj);
-    }
-  }
-
-  void freeAll() {
-    Debug::log(Debug::Info) << "LocalObjectTable::freeAll()" << Debug::flush;
-    for (ObjectMap::const_iterator it = objects.begin(); it != objects.end(); ++it) {
-      NPObject* obj = it->second;
-      if (!dontFree) {
-        NPN_ReleaseObject(obj);
-      }
-    }
-    objects.clear();
-  }
-
-  NPObject* getById(int id) {
-    ObjectMap::iterator it = objects.find(id);
-    if (it == objects.end()) {
-      Debug::log(Debug::Error) << "LocalObjectTable::get(id=" << id
-          << "): no object found" << Debug::flush;
-    }
-    return it->second;
-  }
-
-  int getObjectId(NPObject* jsObject) {
-    int id = -1;
-    if(!jsIdentitySafe) {
-      NPVariant idVariant;
-      VOID_TO_NPVARIANT(idVariant);
-      Debug::log(Debug::Debugging) << "LocalObjectTable::get(): expando test"
-          << Debug::flush;
-      if (NPN_GetProperty(npp, jsObject, gwtId, &idVariant) &&
-          NPVariantUtil::isInt(idVariant)) {
-        id = NPVariantUtil::getAsInt(idVariant);
-        Debug::log(Debug::Debugging) << "LocalObjectTable::get(): expando: "
-            << id << Debug::flush;
-        set(id, jsObject);
-      }
-      NPN_ReleaseVariantValue(&idVariant);
-    } else {
-      IdMap::iterator it = ids.find(jsObject);
-      if (it != ids.end()) {
-        id = it->second;
-      }
-    }
-    return id;
-  }
-
-  void setDontFree(bool dontFree) {
-    this->dontFree = dontFree;
-  }
-};
-
-#endif
diff --git a/plugins/npapi/Makefile b/plugins/npapi/Makefile
deleted file mode 100644
index d6224b4..0000000
--- a/plugins/npapi/Makefile
+++ /dev/null
@@ -1,204 +0,0 @@
-# Copyright 2010 Google Inc.
-# 
-# Licensed 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.
-
-ifeq ($(shell uname),Darwin)
-# We seem to be using 32-bit plugins on the Mac, so compile this way even if host is 64-bit.
-ARCH=x86
-endif
-
-include ../config.mk
-
-ifeq ($(OS),mac)
-RUN_PATH_FLAG = -executable_path
-DLL_SUFFIX = .dylib
-DLLFLAGS = -bundle $(ARCHCFLAGS) -mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk
-CFLAGS += -DXP_MACOSX $(ARCHCFLAGS)
-CXXFLAGS += -DXP_MACOSX $(ARCHCFLAGS)
-# Mac puts multiple architectures into the same files
-TARGET_PLATFORM = Darwin-gcc3
-CHROME_PATH ?= /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome
-PLATFORM_DIR_SUFFIX = gwtDev.plugin/Contents/MacOS/
-else
-ifeq ($(OS),linux)
-RUN_PATH_FLAG = -rpath-link
-DLL_SUFFIX = .so
-DLLFLAGS = -shared -m$(FLAG32BIT)
-TARGET_PLATFORM = Linux_$(ARCH)-gcc3
-CHROME_PATH ?= /opt/google/chrome/chrome
-else
-endif
-endif
-
-
-export FLAG32BIT
-
-CFLAGS += -DBROWSER_NPAPI -DXP_UNIX -fshort-wchar
-CXXFLAGS = $(CXXONLYFLAGS) $(CFLAGS)
-DIR = $(shell pwd)
-
-DEPEND = g++ -MM -MT'$$(OBJ_OUTDIR)/$(patsubst %.cpp,%.o,$(src))' \
-  -I. -I../common $(src)
-
-COMMON            = ../common/libcommon$(FLAG32BIT).a
-
-OBJ_OUTDIR        = build/$(TARGET_PLATFORM)
-EXTENSION_OUTDIR  = prebuilt/gwt-dev-plugin
-EXTENSION_FILES = *.html *.js *.json *.png *.txt \
-  DevModeOptions/*.gif DevModeOptions/*.js DevModeOptions/*.txt \
-  Linux*/*.so WIN*/*.dll Darwin*/*/*/*.plist Darwin*/*/*/*/*.dylib
-PLATFORM_DIR      = $(EXTENSION_OUTDIR)/$(TARGET_PLATFORM)
-PLATFORM_DIR_SUFFIX ?= ""
-
-DLL               = $(OBJ_OUTDIR)/libGwtDevPlugin$(DLL_SUFFIX)
-#DLLFLAGS +=
-
-VERSION ?= 1.0.$(shell ./getversion)
-ifeq ($(VERSION), 1.0.)
-$(error You must specify the version if you are not in an svn checkout)
-endif
-
-.PHONY: default all zip lib common clean depend install install-platform \
-	versioned-files devmodeoptions
-
-default:: lib versioned-files devmodeoptions
-
-all:: common lib install-platform zip
-
-lib:: $(OBJ_OUTDIR) $(EXTENSION_OUTDIR) $(DLL)
-zip:: $(EXTENSION_OUTDIR)
-	(cd $(EXTENSION_OUTDIR); zip ../gwt-dev-plugin.zip $(EXTENSION_FILES))
-
-linuxplatforms:
-	$(MAKE) lib ARCH=x86
-	$(MAKE) lib ARCH=x86_64
-
-macplatforms:
-	$(MAKE) lib
-
-HDRS =	\
-	LocalObjectTable.h \
-	NPVariantWrapper.h \
-	Plugin.h \
-	ScriptableInstance.h \
-	mozincludes.h \
-	JavaObject.h
-
-SRCS =	\
-	main.cpp \
-	Plugin.cpp \
-	LocalObjectTable.cpp \
-	JavaObject.cpp \
-	npn_bindings.cpp \
-	ScriptableInstance.cpp
-
-OBJS = $(patsubst %.cpp,$(OBJ_OUTDIR)/%.o,$(SRCS))
-
-$(OBJS): $(OBJ_OUTDIR)
-
-$(OBJ_OUTDIR)::
-	@mkdir -p $@
-
-versioned-files::
-	sed -e s/GWT_DEV_PLUGIN_VERSION/$(VERSION)/ manifest-template.json >prebuilt/gwt-dev-plugin/manifest.json
-	#sed -e s/GWT_DEV_PLUGIN_VERSION/$(VERSION)/ updates-template.xml >prebuilt/updates.xml
-
-$(DLL): $(OBJS) $(COMMON)
-	$(CXX) -m$(FLAG32BIT) -o $@ $(OBJS) $(COMMON) $(DLLFLAGS) 
-	@mkdir -p $(PLATFORM_DIR)
-	cp $(DLL) $(PLATFORM_DIR)/$(PLATFORM_DIR_SUFFIX)
-
-$(OBJ_OUTDIR)/%.o: %.cpp
-	$(CXX) $(CXXFLAGS) -c -o $@ -I. -I../common $<
-
-common $(COMMON):
-	(cd ../common && ARCH=$(ARCH) $(MAKE))
-
-clean:
-	rm -rf build
-
-devmodeoptions:
-	(ant -f DevModeOptions/build.xml prebuilt)
-
-depend: $(OBJ_OUTDIR)
-	($(foreach src,$(SRCS),$(DEPEND)) true) >>Makefile
-#	makedepend -- $(CFLAGS) -- $(SRCS)
-
-# DO NOT DELETE
-$(OBJ_OUTDIR)/main.o $(OBJ_OUTDIR)/Plugin.o \
- $(OBJ_OUTDIR)/LocalObjectTable.o $(OBJ_OUTDIR)/JavaObject.o \
- $(OBJ_OUTDIR)/npn_bindings.cpp $(OBJ_OUTDIR)/ScriptableInstance.o: \
- main.cpp ../common/Debug.h ../common/Platform.h ../common/DebugLevel.h \
- mozincludes.h npapi/npapi.h npapi/nphostapi.h npapi/npapi.h \
- npapi/npruntime.h npapi/npruntime.h NPObjectWrapper.h Plugin.h \
- ../common/HostChannel.h ../common/Debug.h ../common/ByteOrder.h \
- ../common/Socket.h ../common/Message.h ../common/ReturnMessage.h \
- ../common/BrowserChannel.h ../common/Value.h ../common/SessionHandler.h \
- ../common/LoadModuleMessage.h ../common/HostChannel.h LocalObjectTable.h \
- ../common/SessionHandler.h ../common/HashMap.h ScriptableInstance.h \
- ../common/scoped_ptr/scoped_ptr.h
-$(OBJ_OUTDIR)/main.o $(OBJ_OUTDIR)/Plugin.o \
- $(OBJ_OUTDIR)/LocalObjectTable.o $(OBJ_OUTDIR)/JavaObject.o \
- $(OBJ_OUTDIR)/npn_bindings.cpp $(OBJ_OUTDIR)/ScriptableInstance.o: \
- Plugin.cpp Plugin.h ../common/Debug.h ../common/Platform.h \
- ../common/DebugLevel.h mozincludes.h npapi/npapi.h npapi/nphostapi.h \
- npapi/npapi.h npapi/npruntime.h npapi/npruntime.h NPObjectWrapper.h \
- ../common/HostChannel.h ../common/Debug.h ../common/ByteOrder.h \
- ../common/Socket.h ../common/Message.h ../common/ReturnMessage.h \
- ../common/BrowserChannel.h ../common/Value.h ../common/SessionHandler.h \
- ../common/LoadModuleMessage.h ../common/HostChannel.h LocalObjectTable.h \
- ../common/SessionHandler.h ../common/HashMap.h ScriptableInstance.h \
- ../common/InvokeMessage.h ../common/ReturnMessage.h \
- ../common/ServerMethods.h ../common/scoped_ptr/scoped_ptr.h \
- NPVariantWrapper.h ../common/Platform.h ../common/Value.h JavaObject.h
-$(OBJ_OUTDIR)/main.o $(OBJ_OUTDIR)/Plugin.o \
- $(OBJ_OUTDIR)/LocalObjectTable.o $(OBJ_OUTDIR)/JavaObject.o \
- $(OBJ_OUTDIR)/npn_bindings.cpp $(OBJ_OUTDIR)/ScriptableInstance.o: \
- LocalObjectTable.cpp mozincludes.h npapi/npapi.h npapi/nphostapi.h \
- npapi/npapi.h npapi/npruntime.h npapi/npruntime.h NPObjectWrapper.h \
- LocalObjectTable.h ../common/Debug.h ../common/Platform.h \
- ../common/DebugLevel.h
-$(OBJ_OUTDIR)/main.o $(OBJ_OUTDIR)/Plugin.o \
- $(OBJ_OUTDIR)/LocalObjectTable.o $(OBJ_OUTDIR)/JavaObject.o \
- $(OBJ_OUTDIR)/npn_bindings.cpp $(OBJ_OUTDIR)/ScriptableInstance.o: \
- JavaObject.cpp ../common/Debug.h ../common/Platform.h \
- ../common/DebugLevel.h JavaObject.h mozincludes.h npapi/npapi.h \
- npapi/nphostapi.h npapi/npapi.h npapi/npruntime.h npapi/npruntime.h \
- NPObjectWrapper.h Plugin.h ../common/HostChannel.h ../common/Debug.h \
- ../common/ByteOrder.h ../common/Socket.h ../common/Message.h \
- ../common/ReturnMessage.h ../common/BrowserChannel.h ../common/Value.h \
- ../common/SessionHandler.h ../common/LoadModuleMessage.h \
- ../common/HostChannel.h LocalObjectTable.h ../common/SessionHandler.h \
- ../common/HashMap.h ScriptableInstance.h NPVariantWrapper.h \
- ../common/Platform.h ../common/Value.h
-$(OBJ_OUTDIR)/main.o $(OBJ_OUTDIR)/Plugin.o \
- $(OBJ_OUTDIR)/LocalObjectTable.o $(OBJ_OUTDIR)/JavaObject.o \
- $(OBJ_OUTDIR)/npn_bindings.cpp $(OBJ_OUTDIR)/ScriptableInstance.o: \
- npn_bindings.cpp ../common/Debug.h ../common/Platform.h \
- ../common/DebugLevel.h mozincludes.h npapi/npapi.h npapi/nphostapi.h \
- npapi/npapi.h npapi/npruntime.h npapi/npruntime.h NPObjectWrapper.h
-$(OBJ_OUTDIR)/main.o $(OBJ_OUTDIR)/Plugin.o \
- $(OBJ_OUTDIR)/LocalObjectTable.o $(OBJ_OUTDIR)/JavaObject.o \
- $(OBJ_OUTDIR)/npn_bindings.cpp $(OBJ_OUTDIR)/ScriptableInstance.o: \
- ScriptableInstance.cpp ScriptableInstance.h ../common/Debug.h \
- ../common/Platform.h ../common/DebugLevel.h mozincludes.h npapi/npapi.h \
- npapi/nphostapi.h npapi/npapi.h npapi/npruntime.h npapi/npruntime.h \
- NPObjectWrapper.h ../common/HostChannel.h ../common/Debug.h \
- ../common/ByteOrder.h ../common/Socket.h ../common/Message.h \
- ../common/ReturnMessage.h ../common/BrowserChannel.h ../common/Value.h \
- ../common/SessionHandler.h ../common/LoadModuleMessage.h \
- ../common/HostChannel.h LocalObjectTable.h ../common/SessionHandler.h \
- ../common/HashMap.h ../common/InvokeMessage.h ../common/ReturnMessage.h \
- ../common/ServerMethods.h ../common/AllowedConnections.h \
- ../common/scoped_ptr/scoped_ptr.h NPVariantWrapper.h \
- ../common/Platform.h ../common/Value.h Plugin.h JavaObject.h
diff --git a/plugins/npapi/NPObjectWrapper.h b/plugins/npapi/NPObjectWrapper.h
deleted file mode 100644
index 89280fab..0000000
--- a/plugins/npapi/NPObjectWrapper.h
+++ /dev/null
@@ -1,169 +0,0 @@
-// Copyright 2007, Google Inc.
-//
-// Redistribution and use in source and binary forms, with or without 
-// modification, are permitted provided that the following conditions are met:
-//
-//  1. Redistributions of source code must retain the above copyright notice, 
-//     this list of conditions and the following disclaimer.
-//  2. Redistributions in binary form must reproduce the above copyright notice,
-//     this list of conditions and the following disclaimer in the documentation
-//     and/or other materials provided with the distribution.
-//  3. Neither the name of Google Inc. nor the names of its contributors may be
-//     used to endorse or promote products derived from this software without
-//     specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
-// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
-// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
-// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Modified from gears/base/npapi/plugin.h
-
-#ifndef _H_NPObjectWrapper
-#define _H_NPObjectWrapper
-
-#include <cstdio>
-#include "mozincludes.h"
-
-// This is a base class for the bridge between the JavaScript engine and the plugin.
-template<class Wrapper>
-class NPObjectWrapper : public NPObject {
- public:
-  // NPClass callbacks.
-  static NPObject* Allocate(NPP npp, NPClass *npclass) {
-    Wrapper* obj = new Wrapper(npp);
-    return obj;
-  }
-
-  static void Deallocate(NPObject *npobj) {
-    delete static_cast<Wrapper*>(npobj);
-  }
-
-  static bool Enumeration(NPObject *npobj, NPIdentifier** value,
-      uint32_t *count) {
-    Wrapper* obj = static_cast<Wrapper*>(npobj);
-    return obj->enumeration(value, count);
-  }
-
-  static bool HasMethod(NPObject *npobj, NPIdentifier name) {
-    Wrapper* obj = static_cast<Wrapper*>(npobj);
-    return obj->hasMethod(name);
-  }
-
-  static bool Invoke(NPObject *npobj, NPIdentifier name, const NPVariant *args,
-      uint32_t num_args, NPVariant *result) {
-    Wrapper* obj = static_cast<Wrapper*>(npobj);
-    return obj->invoke(name, args, num_args, result);
-  }
-
-  static bool InvokeDefault(NPObject *npobj, const NPVariant *args,
-      uint32_t num_args, NPVariant *result) {
-    Wrapper* obj = static_cast<Wrapper*>(npobj);
-    return obj->invokeDefault(args, num_args, result);
-  }
-
-  static bool HasProperty(NPObject *npobj, NPIdentifier name) {
-    Wrapper* obj = static_cast<Wrapper*>(npobj);
-    return obj->hasProperty(name);
-  }
-
-  static bool GetProperty(NPObject *npobj, NPIdentifier name,
-        NPVariant *result) {
-    Wrapper* obj = static_cast<Wrapper*>(npobj);
-    return obj->getProperty(name, result);
-  }
-
-  static bool SetProperty(NPObject *npobj, NPIdentifier name,
-                          const NPVariant *value) {
-    Wrapper* obj = static_cast<Wrapper*>(npobj);
-    return obj->setProperty(name, value);
-  }
-
-  virtual ~NPObjectWrapper() {}
-
-  /**
-   * *value must be memory allocated with NPN_MemAlloc, as the caller will call NPN_MemFree.
-   */
-  virtual bool enumeration(NPIdentifier** value, uint32_t* count) {
-    return false;
-  }
-
-  /**
-   * Caller must release the result value when it no longer needs it,
-   * so implementation must return an extra refcount.
-   */
-  virtual bool getProperty(NPIdentifier name, NPVariant *result) {
-    return false;
-  }
-  
-  virtual bool hasMethod(NPIdentifier name) {
-    return false;
-  }
-
-  virtual bool hasProperty(NPIdentifier name) {
-    return false;
-  }
-  
-  /**
-   * Caller must release the result value when it no longer needs it,
-   * so implementation must return an extra refcount.
-   */
-  virtual bool invoke(NPIdentifier name, const NPVariant *args,
-      uint32_t num_args, NPVariant *result) {
-    return false;
-  }
-
-  /**
-   * Caller must release the result value when it no longer needs it,
-   * so implementation must return an extra refcount.
-   */
-  virtual bool invokeDefault(const NPVariant *args, uint32_t num_args,
-      NPVariant *result) {
-    return false;
-  }
-
-   virtual bool setProperty(NPIdentifier name, const NPVariant *value) {
-     return false;
-   }
-
-  protected:
-    NPObjectWrapper(NPP instance) : npp(instance) {}
-
-  public:
-    const NPP getNPP() const {
-      return npp;
-    }
-
-  private:
-    NPP npp;
-    DISALLOW_EVIL_CONSTRUCTORS(NPObjectWrapper);
-};
-
-// Get the NPClass for a NPObject wrapper (the type must derive from NPObjectWrapper).
-template<class Wrapper>
-NPClass* GetNPClass() {
-  static NPClass plugin_class = {
-    NP_CLASS_STRUCT_VERSION,
-    NPObjectWrapper<Wrapper>::Allocate,
-    NPObjectWrapper<Wrapper>::Deallocate,
-    NULL,  // Invalidate,
-    NPObjectWrapper<Wrapper>::HasMethod,
-    NPObjectWrapper<Wrapper>::Invoke,
-    NPObjectWrapper<Wrapper>::InvokeDefault,
-    NPObjectWrapper<Wrapper>::HasProperty,
-    NPObjectWrapper<Wrapper>::GetProperty,
-    NPObjectWrapper<Wrapper>::SetProperty,
-    NULL,  // RemoveProperty,
-    NPObjectWrapper<Wrapper>::Enumeration,
-  };
-
-  return &plugin_class;
-}
-
-#endif // GEARS_BASE_NPAPI_PLUGIN_H__
diff --git a/plugins/npapi/NPVariantUtil.h b/plugins/npapi/NPVariantUtil.h
deleted file mode 100644
index 2ca7ea5..0000000
--- a/plugins/npapi/NPVariantUtil.h
+++ /dev/null
@@ -1,132 +0,0 @@
-#ifndef _H_NPVariantUtil
-#define _H_NPVariantUtil
-
-#include "Debug.h"
-#include "mozincludes.h"
-
-/**
- * Wraps an NPVariant and provides various helper functions
- */
-class NPVariantUtil {
-public:
-  static int isBoolean(const NPVariant& variant) {
-    return NPVARIANT_IS_BOOLEAN(variant);
-  }
-
-  static bool getAsBoolean(const NPVariant& variant) {
-    return NPVARIANT_TO_BOOLEAN(variant);
-  }
-
-  // Return true if the variant is holding a regular integer or an integral double.
-  static int isInt(const NPVariant& variant) {
-    if (NPVARIANT_IS_INT32(variant)) {
-      return 1;
-    } else if (NPVARIANT_IS_DOUBLE(variant)) {
-      // As of http://trac.webkit.org/changeset/72974 we get doubles for all
-      // numerical variants out of V8.
-      double d = NPVARIANT_TO_DOUBLE(variant);
-      int i = static_cast<int>(d);
-      // Verify that d is an integral value in range.
-      return (d == static_cast<double>(i));
-    } else {
-      return 0;
-    }
-  }
-
-  static int getAsInt(const NPVariant& variant) {
-    if (isInt(variant)) {
-      if (NPVARIANT_IS_INT32(variant)) {
-        return NPVARIANT_TO_INT32(variant);
-      } else if (NPVARIANT_IS_DOUBLE(variant)) {
-        return static_cast<int>(NPVARIANT_TO_DOUBLE(variant));
-      }
-    }
-
-    Debug::log(Debug::Error) << "getAsInt: variant " <<
-      NPVariantUtil::toString(variant) << "not int" << Debug::flush;
-    return 0;
-  }
-
-  static int isNull(const NPVariant& variant) {
-    return NPVARIANT_IS_NULL(variant);
-  }
-
-  static int isObject(const NPVariant& variant) {
-    return NPVARIANT_IS_OBJECT(variant);
-  }
-
-  static NPObject* getAsObject(const NPVariant& variant) {
-    if (NPVARIANT_IS_OBJECT(variant)) {
-      return NPVARIANT_TO_OBJECT(variant);
-    }
-    Debug::log(Debug::Error) << "getAsObject: variant not object" << Debug::flush;
-    return 0;
-  }
-
-  static int isString(const NPVariant& variant) {
-    return NPVARIANT_IS_STRING(variant);
-  }
-
-  static const NPString* getAsNPString(const NPVariant& variant) {
-    if (NPVARIANT_IS_STRING(variant)) {
-      return &NPVARIANT_TO_STRING(variant);
-    }
-    Debug::log(Debug::Error) << "getAsNPString: variant not string" << Debug::flush;
-    return 0;
-  }
-
-  static std::string toString(const NPVariant& variant) {
-    std::string retval;
-    // TODO(jat): remove sprintfs
-    char buf[40];
-    NPObject* npObj;
-    switch (variant.type) {
-      case NPVariantType_Void:
-        retval = "undef";
-        break;
-      case NPVariantType_Null:
-        retval = "null";
-        break;
-      case NPVariantType_Bool:
-        retval = "bool(";
-        retval += (NPVARIANT_TO_BOOLEAN(variant) ? "true" : "false");
-        retval += ')';
-        break;
-      case NPVariantType_Int32:
-        retval = "int(";
-        snprintf(buf, sizeof(buf), "%d)", NPVARIANT_TO_INT32(variant));
-        retval += buf;
-        break;
-      case NPVariantType_Double:
-        retval = "double(";
-        snprintf(buf, sizeof(buf), "%g)", NPVARIANT_TO_DOUBLE(variant));
-        retval += buf;
-        break;
-      case NPVariantType_String:
-        {
-          retval = "string(";
-          NPString str = NPVARIANT_TO_STRING(variant);
-          retval += std::string(str.UTF8Characters, str.UTF8Length);
-          retval += ')';
-        }
-        break;
-      case NPVariantType_Object:
-        npObj = NPVARIANT_TO_OBJECT(variant);
-        snprintf(buf, sizeof(buf), "obj(class=%p, ", npObj->_class);
-        retval = buf;
-        snprintf(buf, sizeof(buf), "count=%d, ", npObj->referenceCount);
-        retval += buf;
-        snprintf(buf, sizeof(buf), "%p)", npObj);
-        retval += buf;
-        break;
-      default:
-        snprintf(buf, sizeof(buf), "Unknown type %d", variant.type);
-        retval = buf;
-        break;
-    }
-    return retval;
-  }
-
-};
-
-#endif
diff --git a/plugins/npapi/NPVariantWrapper.h b/plugins/npapi/NPVariantWrapper.h
deleted file mode 100644
index 0fd18e3..0000000
--- a/plugins/npapi/NPVariantWrapper.h
+++ /dev/null
@@ -1,550 +0,0 @@
-#ifndef _H_NPVariantWrapper
-#define _H_NPVariantWrapper
-
-#include <string>
-#include <ostream>
-
-#ifdef sun
-// Sun's cstring doesn't define strlen/etc
-#include <string.h>
-#endif
-#include <cstring>
-#include <stdio.h>
-
-#include "Debug.h"
-#include "Platform.h"
-
-#include "mozincludes.h"
-#include "NPVariantUtil.h"
-
-#include "Value.h"
-#include "LocalObjectTable.h"
-#include "Plugin.h"
-#include "JavaObject.h"
-
-/**
- * Contains NPVariantProxy, NPVariantWrapper, and NPVariantArray
- */
-
-/**
- * Wraps an NPVariant and provides various conversion functions.  The variant
- * provided retained at create time.
- */
-class NPVariantProxy {
-  friend class NPVariantArray;
-private:
-  ScriptableInstance& plugin;
-  NPVariant& variant;
-public:
-  NPVariantProxy(ScriptableInstance& plugin, NPVariant& variant)
-      : plugin(plugin), variant(variant)
-  {
-    VOID_TO_NPVARIANT(variant);
-  }
-  
-  NPVariantProxy(ScriptableInstance& plugin, NPVariant& variant, bool noinit)
-      : plugin(plugin), variant(variant)
-  {
-  }
-
-  ~NPVariantProxy() {
-  }
-  
-  operator NPVariant() const {
-    return variant;
-  }
-  
-  const NPVariant* operator->() const {
-	return &variant;
-  }
-
-  const NPVariant* address() const {
-    return &variant;
-  }
-
-  int isBoolean() const {
-    return NPVariantUtil::isBoolean(variant);
-  }
-
-  bool getAsBoolean() const {
-    return NPVariantUtil::getAsBoolean(variant);
-  }
-
-  int isInt() const {
-    return NPVariantUtil::isInt(variant);
-  }
-  
-  int getAsInt() const {
-    return NPVariantUtil::getAsInt(variant);
-  }
-
-  int isNull() const {
-    return NPVariantUtil::isNull(variant);
-  }
-  
-  int isObject() const {
-    return NPVariantUtil::isObject(variant);
-  }
-  
-  NPObject* getAsObject() const {
-    return NPVariantUtil::getAsObject(variant);
-  }
-
-  int isString() const {
-    return NPVariantUtil::isString(variant);
-  }
-  
-  const NPString* getAsNPString() const {
-    return NPVariantUtil::getAsNPString(variant);
-  }
-
-  gwt::Value getAsValue(ScriptableInstance& scriptInstance, bool unwrapJava = true) const {
-    return getAsValue(variant, scriptInstance, unwrapJava);
-  }
-
-  static gwt::Value getAsValue(const NPVariant& variant, ScriptableInstance& scriptInstance,
-      bool unwrapJava = true) {
-    gwt::Value val;
-    if (NPVARIANT_IS_VOID(variant)) {
-      val.setUndefined();
-    } else if (NPVARIANT_IS_NULL(variant)) {
-      val.setNull();
-    } else if (NPVARIANT_IS_BOOLEAN(variant)) {
-      val.setBoolean(NPVARIANT_TO_BOOLEAN(variant));
-    } else if (NPVARIANT_IS_INT32(variant)) {
-      val.setInt(NPVARIANT_TO_INT32(variant));      
-    } else if (NPVARIANT_IS_DOUBLE(variant)) {
-      val.setDouble(NPVARIANT_TO_DOUBLE(variant));
-    } else if (NPVARIANT_IS_STRING(variant)) {
-      NPString str = NPVARIANT_TO_STRING(variant);
-      val.setString(GetNPStringUTF8Characters(str), GetNPStringUTF8Length(str));
-    } else if (NPVARIANT_IS_OBJECT(variant)) {
-      NPObject* obj = NPVARIANT_TO_OBJECT(variant);
-      if (unwrapJava && JavaObject::isInstance(obj)) {
-        JavaObject* jObj = static_cast<JavaObject*>(obj);
-        val.setJavaObject(jObj->getObjectId());
-      } else {
-        NPVariant result;
-        VOID_TO_NPVARIANT(result);
-        if (scriptInstance.tryGetStringPrimitive(obj, result)) {
-          NPString str = NPVARIANT_TO_STRING(result);
-          val.setString(GetNPStringUTF8Characters(str), GetNPStringUTF8Length(str));
-          release(result);
-        } else {
-          val.setJsObjectId(scriptInstance.getLocalObjectRef(obj));
-        }
-      }
-    } else {
-      Debug::log(Debug::Error) << "Unsupported NPVariant type " << variant.type << Debug::flush;
-    }
-    return val;
-  }
-  
-  /**
-   * The incoming variant is not altered, and is not even required to have
-   * its contents retained.  Any object will get an extra refcount on it
-   * when copied to this variant, and strings will be copied.
-   */
-  NPVariantProxy& operator=(const NPVariant& newval) {
-    assignFrom(variant, newval);
-    return *this;
-  }
-
-  /**
-   * The incoming variant is not altered, and is not even required to have
-   * its contents retained.  Any object will get an extra refcount on it
-   * when copied to this variant, and strings will be copied.
-   */
-  static void assignFrom(NPVariant& variant, const NPVariant& newval) {
-    release(variant);
-    variant = newval;
-    if (NPVARIANT_IS_STRING(newval)) {
-      int n = variant.value.stringValue.UTF8Length;
-      char* strBytes = reinterpret_cast<char*>(NPN_MemAlloc(n));
-      memcpy(strBytes, variant.value.stringValue.UTF8Characters, n);
-      variant.value.stringValue.UTF8Characters = strBytes;
-    } else {
-      retain(variant);
-    }
-  }
-
-  NPVariantProxy& operator=(NPObject* obj) {
-    assignFrom(variant, obj);
-    return *this;
-  }
-  
-  static void assignFrom(NPVariant& variant, NPObject* obj) {
-    release(variant);
-    OBJECT_TO_NPVARIANT(obj, variant);
-    retain(variant);
-  }
-
-  // Convenience method for C++ code
-  NPVariantProxy& operator=(int intVal) {
-    assignFrom(variant, intVal);
-    return *this;
-  }
-
-  // Convenience method for C++ code
-  static void assignFrom(NPVariant& variant, int intVal) {
-    NPVariant newvar;
-    INT32_TO_NPVARIANT(intVal, newvar);
-    assignFrom(variant, newvar);
-  }
-
-  // Convenience method for C++ code
-  NPVariantProxy& operator=(const std::string& strval) {
-    assignFrom(variant, strval);
-    return *this;
-  }
-
-  // Convenience method for C++ code
-  static void assignFrom(NPVariant& variant, const std::string& strval) {
-    NPVariant newvar;
-    STDSTRING_TO_NPVARIANT(strval, newvar);
-    assignFrom(variant, newvar);
-  }
-  
-  // Convenience method for C++ code
-  NPVariantProxy& operator=(const char* strval) {
-    assignFrom(variant, strval);
-    return *this;
-  }
-
-  // Convenience method for C++ code
-  static void assignFrom(NPVariant& variant, const char* strval) {
-    NPVariant newvar;
-    STRINGZ_TO_NPVARIANT(strval, newvar);
-    assignFrom(variant, newvar);
-  }
-
-  NPVariantProxy& operator=(const gwt::Value& newval) {
-    assignFrom(plugin, variant, newval);
-    return *this;
-  }
-
-  static void assignFrom(ScriptableInstance& plugin, NPVariant& variant, const gwt::Value& newval) {
-    NPVariant newvar;
-    VOID_TO_NPVARIANT(newvar);
-    if (newval.isBoolean()) {
-      BOOLEAN_TO_NPVARIANT(newval.getBoolean(), newvar);
-    } else if (newval.isByte()) {
-      INT32_TO_NPVARIANT(newval.getByte(), newvar);
-    } else if (newval.isChar()) {
-      INT32_TO_NPVARIANT(newval.getChar(), newvar);
-    } else if (newval.isShort()) {
-      INT32_TO_NPVARIANT(newval.getShort(), newvar);
-    } else if (newval.isInt()) {
-      int value = newval.getInt();
-      // Firefox NPAPI bug: 32-bit ints get mapped to int jsvals, regardless of range.
-      // However, int jsvals are 31 bits, so we need to use a double if the value is
-      // not representable in a 31 bit signed 2's-complement value.
-      if (value >= 0x40000000 || value < -0x40000000) {
-        DOUBLE_TO_NPVARIANT(static_cast<double>(value), newvar);
-      } else {
-        INT32_TO_NPVARIANT(value, newvar);
-      }
-    } else if (newval.isFloat()) {
-      DOUBLE_TO_NPVARIANT(newval.getFloat(), newvar);
-    } else if (newval.isDouble()) {
-      DOUBLE_TO_NPVARIANT(newval.getDouble(), newvar);
-    } else if (newval.isNull()) {
-      NULL_TO_NPVARIANT(newvar);
-    } else if (newval.isUndefined()) {
-      VOID_TO_NPVARIANT(newvar);
-    } else if (newval.isString()) {
-      assignFrom(variant, newval.getString());
-      return;
-    } else if (newval.isJavaObject()) {
-      if (1) {
-        JavaObject* jObj = plugin.createJavaWrapper(newval.getJavaObjectId());
-        NPObject* obj = jObj;
-        OBJECT_TO_NPVARIANT(obj, newvar);
-      } else {
-        VOID_TO_NPVARIANT(newvar);
-      }
-    } else if (newval.isJsObject()) {
-      OBJECT_TO_NPVARIANT(plugin.getLocalObject(newval.getJsObjectId()),
-    	  newvar);
-    } else {
-      Debug::log(Debug::Error) << "Unsupported NPVariant type " << newval.getType() << Debug::flush;
-    }
-    assignFrom(variant, newvar);
-  }
-
-  std::string toString() const {
-    return toString(variant);
-  }
-
-  static std::string toString(const NPVariant& variant) {
-    std::string retval;
-    // TODO(jat): remove sprintfs
-    char buf[40];
-    NPObject* npObj;
-    switch (variant.type) {
-      case NPVariantType_Void:
-        retval = "undef";
-        break;
-      case NPVariantType_Null:
-        retval = "null";
-        break;
-      case NPVariantType_Bool:
-        retval = "bool(";
-        retval += (NPVARIANT_TO_BOOLEAN(variant) ? "true" : "false");
-        retval += ')';
-        break;
-      case NPVariantType_Int32:
-        retval = "int(";
-        snprintf(buf, sizeof(buf), "%d)", NPVARIANT_TO_INT32(variant));
-        retval += buf;
-        break;
-      case NPVariantType_Double:
-        retval = "double(";
-        snprintf(buf, sizeof(buf), "%g)", NPVARIANT_TO_DOUBLE(variant));
-        retval += buf;
-        break;
-      case NPVariantType_String:
-        {
-          retval = "string(";
-          NPString str = NPVARIANT_TO_STRING(variant);
-          retval += std::string(str.UTF8Characters, str.UTF8Length);
-          retval += ')';
-        }
-        break;
-      case NPVariantType_Object:
-        npObj = NPVARIANT_TO_OBJECT(variant);
-        if (JavaObject::isInstance(npObj)) {
-          JavaObject* javaObj = static_cast<JavaObject*>(npObj);
-          snprintf(buf, sizeof(buf), "javaObj(id=%d, ", javaObj->getObjectId());
-        } else {
-          snprintf(buf, sizeof(buf), "jsObj(class=%p, ", npObj->_class);
-        }
-        retval = buf;
-        snprintf(buf, sizeof(buf), "%p)", npObj);
-        retval += buf;
-        break;
-      default:
-        snprintf(buf, sizeof(buf), "Unknown type %d", variant.type);
-        retval = buf;
-        break;
-    }
-    return retval;
-  }
-
-public:
-  void release() {
-    release(variant);
-  }
-
-  static void release(NPVariant& variant) {
-    NPN_ReleaseVariantValue(&variant);
-  }
-
-  void retain() {
-    retain(variant);
-  }
-
-  static void retain(NPVariant& variant) {
-    if (NPVARIANT_IS_OBJECT(variant)) {
-      NPN_RetainObject(NPVARIANT_TO_OBJECT(variant));
-    }
-  }
-};
-
-inline Debug::DebugStream& operator<<(Debug::DebugStream& dbg, const NPVariant& var) {
-  return dbg << NPVariantProxy::toString(var);
-}
-
-inline Debug::DebugStream& operator<<(Debug::DebugStream& dbg, const NPVariantProxy& var) {
-  return dbg << var.toString();
-}
-
-/**
- * Variation of NPVariantProxy that provides its own variant and always frees it
- * when the wrapper goes away.
- */
-class NPVariantWrapper  {
-private:
-  ScriptableInstance& plugin;
-  NPVariant variant;
-public:
-  NPVariantWrapper(ScriptableInstance& plugin) : plugin(plugin) {
-    VOID_TO_NPVARIANT(variant);
-  }
-
-  ~NPVariantWrapper() {
-    release();
-  }
-
-  operator NPVariant() const {
-    return variant;
-  }
-
-  const NPVariant* operator->() const {
-  return &variant;
-  }
-
-  const NPVariant* address() const {
-    return &variant;
-  }
-
-  /**
-   * Get the address for use as a return value.  Since the value can be trashed,
-   * we need to release any data we currently hold.
-   */
-  NPVariant* addressForReturn() {
-    NPVariantProxy::release(variant);
-    VOID_TO_NPVARIANT(variant);
-    NPVariantProxy::retain(variant); // does nothing, present for consistency
-    return &variant;
-  }
-  
-  bool isBoolean() const {
-    return NPVariantUtil::isBoolean(variant);
-  }
-
-  int isInt() const {
-    return NPVariantUtil::isInt(variant);
-  }
-  
-  int isObject() const {
-    return NPVariantUtil::isObject(variant);
-  }
-  
-  int isString() const {
-    return NPVariantUtil::isString(variant);
-  }
-  
-  bool getAsBoolean() const {
-    return NPVariantUtil::getAsBoolean(variant);
-  }
-
-  int getAsInt() const {
-    return NPVariantUtil::getAsInt(variant);
-  }
-
-  NPObject* getAsObject() const {
-    return NPVariantUtil::getAsObject(variant);
-  }
-
-  const NPString* getAsNPString() const {
-    return NPVariantUtil::getAsNPString(variant);
-  }
-
-  gwt::Value getAsValue(ScriptableInstance& scriptInstance, bool unwrapJava = true) const {
-    return NPVariantProxy::getAsValue(variant, scriptInstance, unwrapJava);
-  }
-
-  /**
-   * The incoming variant is not altered, and is not even required to have
-   * its contents retained.  Any object will get an extra refcount on it
-   * when copied to this variant, and strings will be copied.
-   */
-  NPVariantWrapper& operator=(const NPVariant& newval) {
-    NPVariantProxy::assignFrom(variant, newval);
-    return *this;
-  }
-
-  NPVariantWrapper& operator=(const gwt::Value& newval) {
-    NPVariantProxy::assignFrom(plugin, variant, newval);
-    return *this;
-  }
-  
-  NPVariantWrapper& operator=(NPObject* obj) {
-    NPVariantProxy::assignFrom(variant, obj);
-    return *this;
-  }
-  
-  // Convenience method for C++ code
-  NPVariantWrapper& operator=(const std::string& strval) {
-    NPVariantProxy::assignFrom(variant, strval);
-    return *this;
-  }
-
-  // Convenience method for C++ code
-  NPVariantWrapper& operator=(const char* strval) {
-    NPVariantProxy::assignFrom(variant, strval);
-    return *this;
-  }
-
-  // Convenience method for C++ code
-  NPVariantWrapper& operator=(int intval) {
-    NPVariantProxy::assignFrom(variant, intval);
-    return *this;
-  }
-
-  void release() {
-    NPVariantProxy::release(variant);
-  }
-
-  void retain() {
-    NPVariantProxy::retain(variant);
-  }
-
-  std::string toString() const {
-    return NPVariantProxy::toString(variant);
-  }
-};
-
-inline Debug::DebugStream& operator<<(Debug::DebugStream& dbg, const NPVariantWrapper& var) {
-  dbg << var.toString();
-  return dbg;
-}
-
-/**
- * Maintains an array of NPVariants and cleans them up when it is destroyed.
- */
-class NPVariantArray {
-private:
-	ScriptableInstance& plugin;
-  int size;
-  NPVariant* args;
-
-public:
-  NPVariantArray(ScriptableInstance& plugin, int size) : plugin(plugin), size(size) {
-    args = new NPVariant[size];
-    for (int i = 0; i < size; ++i) {
-      VOID_TO_NPVARIANT(args[i]);
-    }
-  }
-
-  ~NPVariantArray() {
-    for (int i = 0; i < size; ++i) {
-      NPN_ReleaseVariantValue(&args[i]);
-    }
-    delete [] args;
-  }
-
-  const NPVariant* getArray() const {
-    return args;
-  }
-
-  int getSize() const {
-    return size;
-  }
-
-  const NPVariant& operator[](int idx) const {
-    if (idx >= size) {
-      printf("NPVariantArray[idx=%d] const: size=%d\n", idx, size);
-    }
-    return args[idx];
-  }
-
-  NPVariantProxy operator[](int idx) {
-    if (idx >= size) {
-      printf("NPVariantArray[idx=%d]: size=%d\n", idx, size);
-    }
-    return NPVariantProxy(plugin, args[idx], true);
-  }
-};
-
-inline Debug::DebugStream& operator<<(Debug::DebugStream& dbg, const NPVariantArray& var) {
-  dbg << "[";
-  for (int i = 0; i < var.getSize(); ++i) {
-    dbg << " " << var[i]; 
-  }
-  dbg << " ]";
-  return dbg;
-}
-
-#endif
diff --git a/plugins/npapi/Plugin.cpp b/plugins/npapi/Plugin.cpp
deleted file mode 100644
index 4abe7a4..0000000
--- a/plugins/npapi/Plugin.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#include <cstring>
-
-#include "Plugin.h"
-#include "ScriptableInstance.h"
-#include "InvokeMessage.h"
-#include "ReturnMessage.h"
-#include "ServerMethods.h"
-#include "mozincludes.h"
-#include "scoped_ptr/scoped_ptr.h"
-#include "NPVariantWrapper.h"
-
-using std::string;
-using std::endl;
-
-Plugin::Plugin(NPP npp) : npp(npp) {
-  this->scriptableInstance = static_cast<ScriptableInstance*>(NPN_CreateObject(npp,
-	  GetNPClass<ScriptableInstance>()));
-}
-
-Plugin::Plugin(NPP npp, ScriptableInstance* scriptableInstance) : npp(npp),
-    scriptableInstance(scriptableInstance) {
-}
-
-Plugin::~Plugin() {
-  Debug::log(Debug::Debugging) << "Plugin destroyed" << Debug::flush;
-  if (scriptableInstance) {
-    scriptableInstance->pluginDeath();
-    NPN_ReleaseObject(scriptableInstance);
-    scriptableInstance = 0;
-  }
-}
diff --git a/plugins/npapi/Plugin.h b/plugins/npapi/Plugin.h
deleted file mode 100644
index b5d989a..0000000
--- a/plugins/npapi/Plugin.h
+++ /dev/null
@@ -1,55 +0,0 @@
-#ifndef _H_Plugin
-#define _H_Plugin
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#include <vector>
-
-#include "Debug.h"
-
-#include "mozincludes.h"
-#include "HostChannel.h"
-#include "LoadModuleMessage.h"
-#include "LocalObjectTable.h"
-#include "SessionHandler.h"
-#include "HashMap.h"
-
-using std::vector;
-
-class ScriptableInstance;
-
-class Plugin {
-  friend class JavaObject;
-public:
-  Plugin(NPP);
-  Plugin(NPP, ScriptableInstance*);
-  ~Plugin();
-  
-  const NPNetscapeFuncs* getBrowser() { return &GetNPNFuncs(); }
-  ScriptableInstance* getScriptableInstance() { return scriptableInstance; }
-  NPP getNPP() { return npp; }
-
-  static const uint32_t VERSION = 1;
-private:  
-  
-  NPP npp;
-  ScriptableInstance* scriptableInstance;
-  
-  NPObject* window;
-
-};
-
-#endif
diff --git a/plugins/npapi/README.txt b/plugins/npapi/README.txt
deleted file mode 100644
index ca89e98..0000000
--- a/plugins/npapi/README.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-This plugin is obsolete and out of date, due to a problem with the NPAPI
-plugin getting reloaded by Firefox when window.enableScrolling is changed.
-
-The code is kept since it will be useful for future NPAPI-based plugins,
-such as for Chrome.
diff --git a/plugins/npapi/ScriptableInstance.cpp b/plugins/npapi/ScriptableInstance.cpp
deleted file mode 100644
index f788a3e..0000000
--- a/plugins/npapi/ScriptableInstance.cpp
+++ /dev/null
@@ -1,793 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#include <cstring>
-
-#include "ScriptableInstance.h"
-#include "InvokeMessage.h"
-#include "ReturnMessage.h"
-#include "ServerMethods.h"
-#include "AllowedConnections.h"
-
-#include "mozincludes.h"
-#include "scoped_ptr/scoped_ptr.h"
-#include "NPVariantWrapper.h"
-
-using std::string;
-using std::endl;
-const static string BACKGROUND_PAGE_STR = "chrome-extension://jpjpnpmbddbjkfaccnmhnkdgjideieim/background.html";
-const static string UNKNOWN_STR = "unknown";
-const static string INCLUDE_STR = "include";
-const static string EXCLUDE_STR = "exclude";
-
-bool ScriptableInstance::jsIdentitySafe = false;
-
-static inline string convertToString(const NPString& str) {
-  return string(GetNPStringUTF8Characters(str), GetNPStringUTF8Length(str));
-}
-
-string ScriptableInstance::computeTabIdentity() {
-  return "";
-}
-
-void ScriptableInstance::dumpObjectBytes(NPObject* obj) {
-  char buf[20];
-  Debug::log(Debug::Debugging) << "   object bytes:\n";
-  const unsigned char* ptr = reinterpret_cast<const unsigned char*>(obj);
-  for (int i = 0; i < 24; ++i) {
-    snprintf(buf, sizeof(buf), " %02x", ptr[i]);
-    Debug::log(Debug::Debugging) << buf;
-  }
-  NPVariant objVar;
-  OBJECT_TO_NPVARIANT(obj, objVar);
-  Debug::log(Debug::Debugging) << " obj.toString()="
-      << NPVariantProxy::toString(objVar) << Debug::flush;
-}
-
-ScriptableInstance::ScriptableInstance(NPP npp) : NPObjectWrapper<ScriptableInstance>(npp),
-    plugin(*reinterpret_cast<Plugin*>(npp->pdata)),
-    _channel(new HostChannel()),
-    localObjects(npp,ScriptableInstance::jsIdentitySafe),
-    _connectId(NPN_GetStringIdentifier("connect")),
-    initID(NPN_GetStringIdentifier("init")),
-    toStringID(NPN_GetStringIdentifier("toString")),
-    loadHostEntriesID(NPN_GetStringIdentifier("loadHostEntries")),
-    locationID(NPN_GetStringIdentifier("location")),
-    hrefID(NPN_GetStringIdentifier("href")),
-    urlID(NPN_GetStringIdentifier("url")),
-    includeID(NPN_GetStringIdentifier("include")),
-    getHostPermissionID(NPN_GetStringIdentifier("getHostPermission")),
-    testJsIdentityID(NPN_GetStringIdentifier("testJsIdentity")),
-    connectedID(NPN_GetStringIdentifier("connected")),
-    statsID(NPN_GetStringIdentifier("stats")),
-    jsDisconnectedID(NPN_GetStringIdentifier("__gwt_disconnected")),
-    jsInvokeID(NPN_GetStringIdentifier("__gwt_jsInvoke")),
-    jsResultID(NPN_GetStringIdentifier("__gwt_makeResult")),
-    jsTearOffID(NPN_GetStringIdentifier("__gwt_makeTearOff")),
-    jsValueOfID(NPN_GetStringIdentifier("valueOf")),
-    idx0(NPN_GetIntIdentifier(0)),
-    idx1(NPN_GetIntIdentifier(1)) {
-  savedValueIdx = -1;
-  if (NPN_GetValue(npp, NPNVWindowNPObject, &window) != NPERR_NO_ERROR) {
-    Debug::log(Debug::Error) << "Error getting window object" << Debug::flush;
-  }
-
-}
-
-ScriptableInstance::~ScriptableInstance() {
-  // TODO(jat): free any remaining Java objects held by JS, then make
-  // the JS wrapper handle that situation gracefully
-  if (window) {
-    NPN_ReleaseObject(window);
-  }
-  for (hash_map<int, JavaObject*>::iterator it = javaObjects.begin(); it != javaObjects.end();
-      ++it) {
-    Debug::log(Debug::Spam) << "  disconnecting Java wrapper " << it->first << Debug::flush;
-    it->second->disconnectPlugin();
-  }
-  if (_channel) {
-    _channel->disconnectFromHost();
-    delete _channel;
-  }
-}
-
-void ScriptableInstance::dumpJSresult(const char* js) {
-  NPString npScript;
-  dupString(js, npScript);
-  NPVariantWrapper wrappedRetVal(*this);
-  if (!NPN_Evaluate(getNPP(), window, &npScript, wrappedRetVal.addressForReturn())) {
-    Debug::log(Debug::Error) << "   *** dumpJSresult failed" << Debug::flush;
-    return;
-  }
-  Debug::log(Debug::Info) << "dumpWindow=" << wrappedRetVal.toString() << Debug::flush;
-}
-
-bool ScriptableInstance::tryGetStringPrimitive(NPObject* obj, NPVariant& result) {
-  if (NPN_HasMethod(getNPP(), obj, jsValueOfID)) {
-    if (NPN_Invoke(getNPP(), obj, jsValueOfID, 0, 0, &result)
-        && NPVariantUtil::isString(result)) {
-      return true;
-    }
-    NPVariantProxy::release(result);
-  }
-  return false;
-}
-
-bool ScriptableInstance::makeResult(bool isException, const gwt::Value& value, NPVariant* result) {
-  Debug::log(Debug::Debugging) << "makeResult(" << isException << ", " << value << ")"
-      << Debug::flush;
-  gwt::Value temp;
-  if (value.getType() == gwt::Value::JAVA_OBJECT) {
-    int javaId = value.getJavaObjectId();
-    // We may have previously released the proxy for the same object id,
-    // but have not yet sent a free message back to the server.
-    javaObjectsToFree.erase(javaId);
-  }
-  NPVariantArray varArgs(*this, 3);
-  varArgs[0] = isException ? 1 : 0;
-  varArgs[1] = value;
-  NPVariantWrapper retVal(*this);
-  return NPN_Invoke(getNPP(), window, jsResultID, varArgs.getArray(), varArgs.getSize(), result);
-}
-
-//=============================================================================
-// NPObject methods
-//=============================================================================
-
-bool ScriptableInstance::hasProperty(NPIdentifier name) {
-  if (!NPN_IdentifierIsString(name)) {
-    // all numeric properties are ok, as we assume only JSNI code is making
-    // the field access via dispatchID
-    return true;
-  }
-  // TODO: special-case toString tear-offs
-  return name == statsID || name == connectedID;
-}
-
-bool ScriptableInstance::getProperty(NPIdentifier name, NPVariant* variant) {
-  Debug::log(Debug::Debugging) << "ScriptableInstance::getProperty(name="
-      << NPN_UTF8FromIdentifier(name) << ")" << Debug::flush;
-  bool retVal = false;
-  VOID_TO_NPVARIANT(*variant);
-  if (name == connectedID) {
-    BOOLEAN_TO_NPVARIANT(_channel->isConnected(), *variant);
-    retVal = true;
-  } else if (name == statsID) {
-    NPVariantProxy::assignFrom(*variant, "<stats data>");
-    retVal = true;
-  }
-  if (retVal) {
-    // TODO: testing
-    Debug::log(Debug::Debugging) << " return value " << *variant
-        << Debug::flush;
-  }
-  return retVal;
-}
-
-bool ScriptableInstance::setProperty(NPIdentifier name, const NPVariant* variant) {
-  Debug::log(Debug::Debugging) << "ScriptableInstance::setProperty(name="
-      << NPN_UTF8FromIdentifier(name) << ", value=" << *variant << ")"
-      << Debug::flush; 
-  return false;
-}
-
-bool ScriptableInstance::hasMethod(NPIdentifier name) {
-  Debug::log(Debug::Debugging) << "ScriptableInstance::hasMethod(name=" << NPN_UTF8FromIdentifier(name) << ")"
-      << Debug::flush; 
-  if (name == _connectId ||
-      name == initID ||
-      name == toStringID ||
-      name == loadHostEntriesID ||
-      name == getHostPermissionID ||
-      name == testJsIdentityID ) {
-    return true;
-  }
-  return false;
-}
-
-bool ScriptableInstance::invoke(NPIdentifier name, const NPVariant* args, unsigned argCount,
-    NPVariant* result) {
-  NPUTF8* uname = NPN_UTF8FromIdentifier(name);
-  Debug::log(Debug::Debugging) << "ScriptableInstance::invoke(name=" << uname << ",#args=" << argCount << ")"
-      << Debug::flush;
-  VOID_TO_NPVARIANT(*result);
-  if (name == _connectId) {
-    connect(args, argCount, result);
-  } else if (name == initID) {
-    init(args, argCount, result);
-  } else if (name == toStringID) {
-    // TODO(jat): figure out why this doesn't show in Firebug
-    string val("[GWT OOPHM Plugin: connected=");
-    val += _channel->isConnected() ? 'Y' : 'N';
-    val += ']';
-    NPVariantProxy::assignFrom(*result, val);
-  } else if (name == loadHostEntriesID) {
-    loadHostEntries(args, argCount, result);
-  } else if (name == getHostPermissionID) {
-    getHostPermission(args, argCount, result);
-  } else if (name == testJsIdentityID) {
-    testJsIdentity(args, argCount, result);
-  }
-  return true;
-}
-
-bool ScriptableInstance::invokeDefault(const NPVariant* args, unsigned argCount,
-      NPVariant* result) {
-  Debug::log(Debug::Debugging) << "ScriptableInstance::invokeDefault(#args=" << argCount << ")"
-      << Debug::flush;
-  VOID_TO_NPVARIANT(*result);
-  return true;
-}
-
-bool ScriptableInstance::enumeration(NPIdentifier** propReturn, uint32_t* count) {
-  Debug::log(Debug::Debugging) << "ScriptableInstance::enumeration()" << Debug::flush;
-  int n = 2;
-  NPIdentifier* props = static_cast<NPIdentifier*>(NPN_MemAlloc(sizeof(NPIdentifier) * n));
-  props[0] = connectedID;
-  props[1] = statsID;
-  *propReturn = props;
-  *count = n;
-  return true;
-}
-
-//=============================================================================
-// internal methods
-//=============================================================================
-
-void ScriptableInstance::init(const NPVariant* args, unsigned argCount, NPVariant* result) {
-  if (argCount != 1 || !NPVariantUtil::isObject(args[0])) {
-    // TODO: better failure?
-    Debug::log(Debug::Error) << "ScriptableInstance::init called with incorrect arguments:\n";
-    for (unsigned i = 0; i < argCount; ++i) {
-      Debug::log(Debug::Error) << " " << i << " " << NPVariantProxy::toString(args[i]) << "\n";
-    }
-    Debug::log(Debug::Error) << Debug::flush;
-    result->type = NPVariantType_Void;
-    return;
-  }
-  if (window) {
-    NPN_ReleaseObject(window);
-  }
-  // replace our window object with that passed by the caller
-  window = NPVariantUtil::getAsObject(args[0]);
-  NPN_RetainObject(window);
-  BOOLEAN_TO_NPVARIANT(true, *result);
-  result->type = NPVariantType_Bool;
-}
-
-string ScriptableInstance::getLocationHref() {
-  NPVariantWrapper locationVariant(*this);
-  NPVariantWrapper hrefVariant(*this);
-
-  // window.location
-  NPN_GetProperty(getNPP(), window, locationID, locationVariant.addressForReturn());
-  //window.location.href
-  NPN_GetProperty(getNPP(), locationVariant.getAsObject(), hrefID, hrefVariant.addressForReturn());
-
-  const NPString* locationHref = NPVariantUtil::getAsNPString(hrefVariant);
-  return convertToString(*locationHref);
-}
-
-
-void ScriptableInstance::loadHostEntries(const NPVariant* args, unsigned argCount, NPVariant* result) {
-  string locationHref = getLocationHref();
-  if (locationHref.compare(BACKGROUND_PAGE_STR) == 0) {
-    AllowedConnections::clearRules();
-    for (unsigned i = 0; i < argCount; ++i) {
-      //Get the host entry object {url: "somehost.net", include: true/false}
-      NPObject* hostEntry = NPVariantUtil::getAsObject(args[i]);
-      if (!hostEntry) {
-        Debug::log(Debug::Error) << "Got a host entry that is not an object.\n";
-        break;
-      }
-
-      //Get the url
-      NPVariantWrapper urlVariant(*this);
-      if (!NPN_GetProperty(getNPP(), hostEntry, urlID, urlVariant.addressForReturn()) ||
-          !urlVariant.isString()) {
-        Debug::log(Debug::Error) << "Got a host.url entry that is not a string.\n";
-        break;
-      }
-      const NPString* urlNPString = urlVariant.getAsNPString();
-      string urlString = convertToString(*urlNPString);
-
-      //Include/Exclude?
-      NPVariantWrapper includeVariant(*this);
-      if (!NPN_GetProperty(getNPP(), hostEntry, includeID, includeVariant.addressForReturn()) || 
-          !includeVariant.isBoolean()) {
-        Debug::log(Debug::Error) << "Got a host.include entry that is not a boolean.\n";
-        break;
-      }
-      bool include = includeVariant.getAsBoolean();
-      Debug::log(Debug::Info) << "Adding " << urlString << "(" << (include ? "include" : "exclude") << ")\n";
-
-      int slash = urlString.find( '/' );
-      if( slash == std::string::npos ) {
-        AllowedConnections::addRule(urlString, "localhost", !include);
-      } else {
-        AllowedConnections::addRule(urlString.substr( 0, slash), urlString.substr(slash+1), !include);
-      }
-    }
-  } else {
-    Debug::log(Debug::Error) << "ScriptableInstance::loadHostEntries called from outside the background page: " <<
-                             locationHref << "\n";
-  }
-}
-
-void ScriptableInstance::getHostPermission(const NPVariant* args, unsigned argCount, NPVariant* result) {
-  if (argCount != 1 || !NPVariantUtil::isString(args[0])) {
-    Debug::log(Debug::Error) << "ScriptableInstance::getHostPermission called with incorrect arguments.\n";
-  }
-
-  const NPString url = args[0].value.stringValue;
-  const string urlStr = convertToString(url);
-  bool allowed = false;
-
-  Debug::log(Debug::Info) << "getHostPermission() url " << urlStr << Debug::flush;
-  bool matches = AllowedConnections::matchesRule(
-      AllowedConnections::getHostFromUrl(urlStr),
-      AllowedConnections::getCodeServerFromUrl(urlStr),
-      &allowed);
-  string retStr;
-  if (!matches) {
-    retStr = UNKNOWN_STR;
-  } else if (allowed) {
-    retStr = INCLUDE_STR;
-  } else {
-    retStr = EXCLUDE_STR;
-  }
-
-  NPVariantProxy(*this, *result) = retStr;
-}
-
-void ScriptableInstance::testJsIdentity(const NPVariant* args, unsigned argCount, NPVariant* result) {
-  if (argCount != 2 || !NPVariantUtil::isObject(args[0]) ||
-      !NPVariantUtil::isObject(args[1]) ) {
-    Debug::log(Debug::Error) << "ScriptableInstance::testJsIdentity called"
-        << " with incorrect arguments.\n";
-  }
-  NPObject* obj1 = NPVariantUtil::getAsObject(args[0]);
-  NPObject* obj2 = NPVariantUtil::getAsObject(args[1]);
-  Debug::log(Debug::Info) << "obj1:" << obj1 << " obj2:" << obj2
-      << Debug::flush;
-  if( obj1 == obj2 ) {
-    Debug::log(Debug::Info) << "Idenity check passed; not using expando!"
-        << Debug::flush;
-    ScriptableInstance::jsIdentitySafe = true;
-  } else {
-    Debug::log(Debug::Info) << "Idenity check failed; using expando"
-        << Debug::flush;
-    ScriptableInstance::jsIdentitySafe = false;
-  }
-}
-
-
-void ScriptableInstance::connect(const NPVariant* args, unsigned argCount, NPVariant* result) {
-  if (argCount != 5 || !NPVariantUtil::isString(args[0])
-      || !NPVariantUtil::isString(args[1])
-      || !NPVariantUtil::isString(args[2])
-      || !NPVariantUtil::isString(args[3])
-      || !NPVariantUtil::isString(args[4])) {
-    // TODO: better failure?
-    Debug::log(Debug::Error) << "ScriptableInstance::connect called with incorrect arguments:\n";
-    for (unsigned i = 0; i < argCount; ++i) {
-      Debug::log(Debug::Error) << " " << i << " " << NPVariantProxy::toString(args[i]) << "\n";
-    }
-    Debug::log(Debug::Error) << Debug::flush;
-    result->type = NPVariantType_Void;
-    return;
-  }
-
-  // application provided URL string used for user facing things like the
-  // devmode tab title
-  const NPString appUrl = args[0].value.stringValue;
-  const string appUrlStr = convertToString(appUrl);
-
-  // window.location.href provided URL. (used for security)
-  const string urlStr = getLocationHref();
-
-  const NPString sessionKey = args[1].value.stringValue;
-  const NPString hostAddr = args[2].value.stringValue;
-  const NPString moduleName = args[3].value.stringValue;
-  const NPString hostedHtmlVersion = args[4].value.stringValue;
-  Debug::log(Debug::Info) << "ScriptableInstance::connect(url=" << NPVariantProxy::toString(args[0])
-      << ",sessionKey=" << NPVariantProxy::toString(args[1]) << ",host=" << NPVariantProxy::toString(args[2])
-      << ",module=" << NPVariantProxy::toString(args[3]) << ",hostedHtmlVers=" << NPVariantProxy::toString(args[4])
-      << ")" << Debug::flush;
-
-  bool allowed = false;
-  AllowedConnections::matchesRule(
-      AllowedConnections::getHostFromUrl(urlStr),
-      AllowedConnections::getCodeServerFromUrl(appUrlStr),
-      &allowed);
-  if (!allowed) {
-    BOOLEAN_TO_NPVARIANT(false, *result);
-    result->type = NPVariantType_Bool;
-    return;
-  }
-
-  bool connected = false;
-  unsigned port = 9997;  // TODO(jat): should there be a default?
-  int n = GetNPStringUTF8Length(hostAddr);
-  scoped_ptr<char> host(new char[n + 1]);
-  const char* s = GetNPStringUTF8Characters(hostAddr);
-  char* d = host.get();
-  while (n > 0 && *s != ':') {
-    n--;
-    *d++ = *s++;
-  }
-  *d = 0;
-  if (n > 0) {
-    port = atoi(s + 1);
-  }
-  Debug::log(Debug::Info) << "  host=" << host.get() << ",port=" << port << Debug::flush;
-
-
-  if (!_channel->connectToHost(host.get(), port)) {
-    BOOLEAN_TO_NPVARIANT(false, *result);
-    result->type = NPVariantType_Bool;
-  }
-
-  string hostedHtmlVersionStr = convertToString(hostedHtmlVersion);
-  if (!_channel->init(this, BROWSERCHANNEL_PROTOCOL_VERSION,
-      BROWSERCHANNEL_PROTOCOL_VERSION, hostedHtmlVersionStr)) {
-    BOOLEAN_TO_NPVARIANT(false, *result);
-    result->type = NPVariantType_Bool;
-  }
-
-  string moduleNameStr = convertToString(moduleName);
-  string userAgent(NPN_UserAgent(getNPP()));
-  string tabKeyStr = computeTabIdentity();
-  string sessionKeyStr = convertToString(sessionKey);
-  Debug::log(Debug::Debugging) << "  connected, sending loadModule" << Debug::flush;
-  connected = LoadModuleMessage::send(*_channel, appUrlStr, tabKeyStr, sessionKeyStr,
-      moduleNameStr, userAgent, this);
-  BOOLEAN_TO_NPVARIANT(connected, *result);
-  result->type = NPVariantType_Bool;
-}
-
-int ScriptableInstance::getLocalObjectRef(NPObject* obj) {
-  int id = localObjects.getObjectId(obj);
-  if(id == -1) {
-    id = localObjects.add(obj);
-  }
-  return id;
-}
-
-void ScriptableInstance::fatalError(HostChannel& channel, const string& message) {
-  // TODO(jat): better error handling
-  Debug::log(Debug::Error) << "Fatal error: " << message << Debug::flush;
-}
-
-void ScriptableInstance::dupString(const char* str, NPString& npString) {
-  npString.UTF8Length = static_cast<uint32_t>(strlen(str));
-  NPUTF8* chars = static_cast<NPUTF8*>(NPN_MemAlloc(npString.UTF8Length));
-  memcpy(chars, str, npString.UTF8Length);
-  npString.UTF8Characters = chars;
-}
-
-// SessionHandler methods
-void ScriptableInstance::freeValue(HostChannel& channel, int idCount, const int* const ids) {
-  Debug::log(Debug::Debugging) << "freeValue(#ids=" << idCount << ")" << Debug::flush;
-  for (int i = 0; i < idCount; ++i) {
-    Debug::log(Debug::Spam) << " id=" << ids[i] << Debug::flush;
-    localObjects.free(ids[i]);
-  }
-}
-
-void ScriptableInstance::loadJsni(HostChannel& channel, const string& js) {
-  NPString npScript;
-  dupString(js.c_str(), npScript);
-  NPVariantWrapper npResult(*this);
-  Debug::log(Debug::Spam) << "loadJsni - \n" << js << Debug::flush;
-  if (!NPN_Evaluate(getNPP(), window, &npScript, npResult.addressForReturn())) {
-    Debug::log(Debug::Error) << "loadJsni failed\n" << js << Debug::flush;
-  }
-}
-
-gwt::Value ScriptableInstance::clientMethod_getProperty(HostChannel& channel, int numArgs, const gwt::Value* const args) {
-  if (numArgs != 2 || !args[0].isInt() || (!args[1].isString() && !args[1].isInt())) {
-    Debug::log(Debug::Error) << "Incorrect invocation of getProperty: #args=" << numArgs << ":";
-    for (int i = 0; i < numArgs; ++i) {
-      Debug::log(Debug::Error) << " " << i << "=" << args[i].toString();
-    }
-    Debug::log(Debug::Error) << Debug::flush;
-    return gwt::Value();
-  }
-  int id = args[0].getInt();
-  NPObject* obj = localObjects.getById(id);
-  NPIdentifier propID;
-  if (args[1].isString()) {
-    string propName = args[1].getString();
-    propID = NPN_GetStringIdentifier(propName.c_str());
-  } else {
-    int propNum = args[1].getInt();
-    propID = NPN_GetIntIdentifier(propNum);
-  }
-  NPVariantWrapper npResult(*this);
-  if (!NPN_GetProperty(getNPP(), obj, propID, npResult.addressForReturn())) {
-    Debug::log(Debug::Warning) << "getProperty(id=" << id << ", prop="
-        << NPN_UTF8FromIdentifier(propID) << ") failed" << Debug::flush;
-    return gwt::Value();
-  }
-  return npResult.getAsValue(*this);
-}
-
-gwt::Value ScriptableInstance::clientMethod_setProperty(HostChannel& channel, int numArgs, const gwt::Value* const args) {
-  if (numArgs != 2 || !args[0].isInt() || (!args[1].isString() && !args[1].isInt())) {
-    Debug::log(Debug::Error) << "Incorrect invocation of setProperty: #args="
-        << numArgs << ":";
-    for (int i = 0; i < numArgs; ++i) {
-      Debug::log(Debug::Error) << " " << i << "=" << args[i].toString();
-    }
-    Debug::log(Debug::Error) << Debug::flush;
-    return gwt::Value();
-  }
-  int id = args[0].getInt();
-  NPObject* obj = localObjects.getById(id);
-  NPIdentifier propID;
-  if (args[1].isString()) {
-    string propName = args[1].getString();
-    propID = NPN_GetStringIdentifier(propName.c_str());
-  } else {
-    int propNum = args[1].getInt();
-    propID = NPN_GetIntIdentifier(propNum);
-  }
-  NPVariantWrapper npValue(*this);
-  npValue.operator=(args[2]);
-  if (!NPN_SetProperty(getNPP(), obj, propID, npValue.address())) {
-    Debug::log(Debug::Warning) << "setProperty(id=" << id << ", prop="
-        << NPN_UTF8FromIdentifier(propID) << ", val=" << args[2].toString()
-        << ") failed" << Debug::flush;
-    return gwt::Value();
-  }
-  return gwt::Value();
-}
-
-/**
- * SessionHandler.invoke - used by LoadModule and reactToMessages* to process server-side
- * requests to invoke methods in Javascript or the plugin.
- */
-bool ScriptableInstance::invokeSpecial(HostChannel& channel, SpecialMethodId dispatchId,
-    int numArgs, const gwt::Value* const args, gwt::Value* returnValue) {
-  switch (dispatchId) {
-  case SessionHandler::HasMethod:
-  case SessionHandler::HasProperty:
-    break;
-  case SessionHandler::SetProperty:
-    *returnValue = clientMethod_setProperty(channel, numArgs, args);
-    return false;
-  case SessionHandler::GetProperty:
-    *returnValue = clientMethod_getProperty(channel, numArgs, args);
-    return false;
-  default:
-    break;
-  }
-  Debug::log(Debug::Error) << "Unexpected special method " << dispatchId
-      << " called on plugin; #args=" << numArgs << ":";
-  for (int i = 0; i < numArgs; ++i) {
-    Debug::log(Debug::Error) << " " << i << "=" << args[i].toString();
-  }
-  Debug::log(Debug::Error) << Debug::flush;
-  // TODO(jat): should we create a real exception object?
-  string buf("unexpected invokeSpecial(");
-  buf += static_cast<int>(dispatchId);
-  buf += ")";
-  returnValue->setString(buf);
-  return true;
-}
-
-bool ScriptableInstance::invoke(HostChannel& channel, const gwt::Value& thisRef,
-    const string& methodName, int numArgs, const gwt::Value* const args,
-    gwt::Value* returnValue) {
-  Debug::log(Debug::Debugging) << "invokeJS(" << methodName << ", this=" 
-      << thisRef.toString() << ", numArgs=" << numArgs << ")" << Debug::flush;
-  NPVariantArray varArgs(*this, numArgs + 2);
-  varArgs[0] = thisRef;
-  varArgs[1] = methodName;
-  for (int i = 0; i < numArgs; ++i) {
-    varArgs[i + 2] = args[i];
-  }
-  const NPVariant* argArray = varArgs.getArray();
-  if (Debug::level(Debug::Spam)) {
-    for (int i = 0; i < varArgs.getSize(); ++i) {
-      Debug::log(Debug::Spam) << "  arg " << i << " is "
-          << NPVariantProxy::toString(argArray[i]) << Debug::flush;
-    }
-  }
-  NPVariantWrapper wrappedRetVal(*this);
-  if (!NPN_Invoke(getNPP(), window, jsInvokeID, argArray, varArgs.getSize(),
-      wrappedRetVal.addressForReturn())) {
-    Debug::log(Debug::Error) << "*** invokeJS(" << methodName << ", this="
-        << thisRef.toString() << ", numArgs=" << numArgs << ") failed"
-        << Debug::flush;
-    // TODO(jat): should we create a real exception object?
-    returnValue->setString("invoke of " + methodName + " failed");
-    return true;
-  }
-  Debug::log(Debug::Spam) << "  wrapped return is " << wrappedRetVal.toString() << Debug::flush;
-  NPVariantWrapper exceptFlag(*this);
-  NPVariantWrapper retval(*this);
-  NPObject* wrappedArray = wrappedRetVal.getAsObject();
-  if (!NPN_GetProperty(getNPP(), wrappedArray, idx0, exceptFlag.addressForReturn())) {
-    Debug::log(Debug::Error) << " Error getting element 0 of wrapped return value ("
-        << wrappedRetVal << ") on call to " << methodName << Debug::flush;
-  }
-  if (!NPN_GetProperty(getNPP(), wrappedArray, idx1, retval.addressForReturn())) {
-    Debug::log(Debug::Error) << " Error getting element 1 of wrapped return value ("
-        << wrappedRetVal << ") on call to " << methodName << Debug::flush;
-  }
-  Debug::log(Debug::Debugging) << "  return value " << retval.toString() << Debug::flush;
-  *returnValue = retval.getAsValue(*this);
-  if (exceptFlag.isInt() && exceptFlag.getAsInt() != 0) {
-    Debug::log(Debug::Debugging) << "  exception: " << retval << Debug::flush;
-    return true;
-  }
-  return false;
-}
-
-bool ScriptableInstance::JavaObject_invoke(int objectId, int dispId,
-    const NPVariant* args, uint32_t numArgs, NPVariant* result) {
-  Debug::log(Debug::Debugging) << "JavaObject_invoke(dispId= " << dispId << ", numArgs=" << numArgs << ")" << Debug::flush;
-  if (Debug::level(Debug::Spam)) {
-    for (uint32_t i = 0; i < numArgs; ++i) {
-      Debug::log(Debug::Spam) << "  " << i << " = " << args[i] << Debug::flush;
-    }
-  }
-
-  bool isRawToString = false;
-  if (dispId == -1) {
-    dispId = 0;
-    isRawToString = true;
-  }
-
-  gwt::Value javaThis;
-  javaThis.setJavaObject(objectId);
-  scoped_array<gwt::Value> vargs(new gwt::Value[numArgs]);
-  for (unsigned i = 0; i < numArgs; ++i) {
-    vargs[i] = NPVariantProxy::getAsValue(args[i], *this);
-  }
-  bool isException = false;
-  gwt::Value returnValue;
-  if (!InvokeMessage::send(*_channel, javaThis, dispId, numArgs, vargs.get())) {
-    Debug::log(Debug::Error) << "JavaObject_invoke: failed to send invoke message" << Debug::flush;
-  } else {
-    Debug::log(Debug::Debugging) << " return from invoke" << Debug::flush;
-    scoped_ptr<ReturnMessage> retMsg(_channel->reactToMessagesWhileWaitingForReturn(this));
-    if (!retMsg.get()) {
-      Debug::log(Debug::Error) << "JavaObject_invoke: failed to get return value" << Debug::flush;
-    } else {
-      if (isRawToString) {
-        // toString() needs the raw value
-        NPVariantProxy::assignFrom(*this, *result, retMsg->getReturnValue());
-        return !retMsg->isException();
-      }
-      isException = retMsg->isException();
-      returnValue = retMsg->getReturnValue();
-    }
-  }
-  // Wrap the result
-  return makeResult(isException, returnValue, result);
-}
-
-bool ScriptableInstance::JavaObject_getProperty(int objectId, int dispId,
-    NPVariant* result) {
-  Debug::log(Debug::Debugging) << "JavaObject_getProperty(objectid="
-      << objectId << ", dispId=" << dispId << ")" << Debug::flush;
-  VOID_TO_NPVARIANT(*result);
-  gwt::Value propertyValue = ServerMethods::getProperty(*_channel, this, objectId, dispId);
-  if (propertyValue.isJsObject()) {
-    // TODO(jat): special-case for testing
-    NPObject* npObj = localObjects.getById(propertyValue.getJsObjectId());
-    OBJECT_TO_NPVARIANT(npObj, *result);
-    NPN_RetainObject(npObj);
-  } else {
-    NPVariantProxy::assignFrom(*this, *result, propertyValue);
-  }
-  Debug::log(Debug::Debugging) << " return val=" << propertyValue
-      << ", NPVariant=" << *result << Debug::flush;
-  if (NPVariantUtil::isObject(*result)) {
-    dumpObjectBytes(NPVariantUtil::getAsObject(*result));
-  }
-  if (NPVariantUtil::isObject(*result)) {
-    Debug::log(Debug::Debugging) << "  final return refcount = "
-        << NPVariantUtil::getAsObject(*result)->referenceCount << Debug::flush;
-  }
-  return true;
-}
-
-bool ScriptableInstance::JavaObject_setProperty(int objectId, int dispId,
-    const NPVariant* npValue) {
-  Debug::log(Debug::Debugging) << "JavaObject_setProperty(objectid="
-      << objectId << ", dispId=" << dispId << ", value=" << *npValue << ")" << Debug::flush;
-  if (NPVariantUtil::isObject(*npValue)) {
-    Debug::log(Debug::Debugging) << "  before localObj: refcount = "
-        << NPVariantUtil::getAsObject(*npValue)->referenceCount << Debug::flush;
-  }
-  gwt::Value value = NPVariantProxy::getAsValue(*npValue, *this, true);
-  if (NPVariantUtil::isObject(*npValue)) {
-    Debug::log(Debug::Debugging) << "  after localObj: refcount = "
-        << NPVariantUtil::getAsObject(*npValue)->referenceCount << Debug::flush;
-  }
-  if (NPVariantUtil::isObject(*npValue)) {
-    dumpObjectBytes(NPVariantUtil::getAsObject(*npValue));
-  }
-  Debug::log(Debug::Debugging) << "  as value: " << value << Debug::flush;
-  // TODO: no way to set an actual exception object! (Could ClassCastException on server.)
-  return ServerMethods::setProperty(*_channel, this, objectId, dispId, value);
-}
-
-bool ScriptableInstance::JavaObject_getToStringTearOff(NPVariant* result) {
-  Debug::log(Debug::Debugging) << "JavaObject_getToStringTearOff()" << Debug::flush;
-  VOID_TO_NPVARIANT(*result);
-
-  gwt::Value temp;
-  NPVariantArray varArgs(*this, 3);
-  temp.setNull();  varArgs[0] = temp; // proxy: no proxy needed
-  temp.setInt(0);  varArgs[1] = temp; // dispId: always 0 for toString()
-  temp.setInt(0);  varArgs[2] = temp; // argCount: always 0 for toString()
-
-  if (!NPN_Invoke(getNPP(), window, jsTearOffID, varArgs.getArray(), 3, result)) {
-    Debug::log(Debug::Error) << "*** JavaObject_getToStringTearOff() failed"
-        << Debug::flush;
-    return true;
-  }
-  return true;
-}
-
-JavaObject* ScriptableInstance::createJavaWrapper(int objectId) {
-  Debug::log(Debug::Debugging) << "createJavaWrapper(objectId=" << objectId <<  ")" << Debug::flush;
-  JavaObject* jObj;
-  hash_map<int, JavaObject*>::iterator it = javaObjects.find(objectId);
-  if (it != javaObjects.end()) {
-    jObj = it->second;
-    NPN_RetainObject(jObj);
-    return jObj;
-  }
-  jObj = JavaObject::create(this, objectId);
-  javaObjects[objectId] = jObj;
-  return jObj;
-}
-
-void ScriptableInstance::destroyJavaWrapper(JavaObject* jObj) {
-  int objectId = jObj->getObjectId();
-  if (!javaObjects.erase(objectId)) {
-    Debug::log(Debug::Error) << "destroyJavaWrapper(id=" << objectId
-        << "): trying to free unknown JavaObject" << Debug::flush;
-  }
-  Debug::log(Debug::Debugging) << "destroyJavaWrapper(id=" << objectId << ")" << Debug::flush;
-  javaObjectsToFree.insert(objectId);
-}
-
-void ScriptableInstance::disconnectDetectedImpl() {
-  NPVariantWrapper result(*this);
-  NPN_Invoke(getNPP(), window, jsDisconnectedID, 0, 0, result.addressForReturn());
-}
-
-void ScriptableInstance::sendFreeValues(HostChannel& channel) {
-  unsigned n = javaObjectsToFree.size();
-  if (n) {
-    scoped_array<int> ids(new int[n]);
-    int i = 0;
-    for (std::set<int>::iterator it = javaObjectsToFree.begin();
-        it != javaObjectsToFree.end(); ++it) {
-      ids[i++] = *it;
-    }
-    if (ServerMethods::freeJava(channel, this, n, ids.get())) {
-      javaObjectsToFree.clear();
-    }
-  }
-}
diff --git a/plugins/npapi/ScriptableInstance.h b/plugins/npapi/ScriptableInstance.h
deleted file mode 100644
index df79ffa..0000000
--- a/plugins/npapi/ScriptableInstance.h
+++ /dev/null
@@ -1,154 +0,0 @@
-#ifndef _H_ScriptableInstance
-#define _H_ScriptableInstance
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#include <vector>
-#include <set>
-
-#include "Debug.h"
-
-#include "mozincludes.h"
-#include "HostChannel.h"
-#include "LoadModuleMessage.h"
-#include "LocalObjectTable.h"
-#include "SessionHandler.h"
-#include "HashMap.h"
-
-using std::vector;
-
-class JavaObject;
-class JavaClass;
-class Plugin;
-
-class ScriptableInstance : public NPObjectWrapper<ScriptableInstance>, SessionHandler {
-  friend class JavaObject;
-public:
-  ScriptableInstance(NPP npp);
-  ~ScriptableInstance();
-
-  void pluginDeath() {
-    // our local objects will get freed anyway when the plugin dies
-    localObjects.freeAll();
-    localObjects.setDontFree(true);
-    // TODO(jat): leaving this in causes SEGV upon plugin destruction in the
-    // NPN_ReleaseObject call.
-//    if (window) {
-//      NPN_ReleaseObject(window);
-//      window = 0;
-//    }
-  }
-  
-  // NPObjectWrapper methods
-  bool enumeration(NPIdentifier** values, uint32_t* count);
-  bool getProperty(NPIdentifier name, NPVariant* result);
-  bool setProperty(NPIdentifier name, const NPVariant* value);
-  bool invoke(NPIdentifier name, const NPVariant* args, unsigned argCount, NPVariant* result);
-  bool invokeDefault(const NPVariant* args, unsigned argCount, NPVariant* result);
-  bool hasMethod(NPIdentifier name);
-  bool hasProperty(NPIdentifier name);
-  
-  void dumpJSresult(const char* js);
-  
-  int getLocalObjectRef(NPObject* obj);
-
-  NPObject* getLocalObject(int refid) { return localObjects.getById(refid); }
-  
-  bool tryGetStringPrimitive(NPObject* obj, NPVariant& result);
-
-  JavaObject* createJavaWrapper(int objectId);
-  void destroyJavaWrapper(JavaObject*);
-
-  static const uint32_t VERSION = 1;
-
-protected:
-  virtual void disconnectDetectedImpl();
-
-private:  
-  // Map of object ID to JavaObject
-  hash_map<int, JavaObject*> javaObjects;
-  std::set<int> javaObjectsToFree;
-  
-  vector<JavaClass*> classes;
-  
-  Plugin& plugin;
-  HostChannel* _channel;
-  LocalObjectTable localObjects;
-
-  static bool jsIdentitySafe;
-  int savedValueIdx;
-
-  // Identifiers
-  const NPIdentifier _connectId;
-  const NPIdentifier initID;
-  const NPIdentifier toStringID;
-
-  const NPIdentifier loadHostEntriesID;
-  const NPIdentifier locationID;
-  const NPIdentifier hrefID;
-  const NPIdentifier urlID;
-  const NPIdentifier includeID;
-  const NPIdentifier getHostPermissionID;
-  const NPIdentifier testJsIdentityID;
-  
-  const NPIdentifier connectedID;
-  const NPIdentifier statsID;
-
-  const NPIdentifier jsDisconnectedID;
-  const NPIdentifier jsInvokeID;
-  const NPIdentifier jsResultID;
-  const NPIdentifier jsTearOffID;
-  const NPIdentifier jsValueOfID;
-  const NPIdentifier idx0;
-  const NPIdentifier idx1;
-  
-  NPObject* window;
-  void dupString(const char* str, NPString& npString);
-  void dumpObjectBytes(NPObject* obj);
-  bool makeResult(bool isException, const gwt::Value& value, NPVariant* result);
-  
-  // SessionHandler methods
-  virtual bool invoke(HostChannel& channel, const gwt::Value& thisObj,
-      const std::string& methodName, int numArgs, const gwt::Value* const args,
-      gwt::Value* returnValue);
-  virtual bool invokeSpecial(HostChannel& channel, SpecialMethodId dispatchId,
-      int numArgs, const gwt::Value* const args, gwt::Value* returnValue);
-  virtual void freeValue(HostChannel& channel, int idCount, const int* ids);
-  virtual void sendFreeValues(HostChannel& channel);
-  virtual void loadJsni(HostChannel& channel, const std::string& js);
-  virtual void fatalError(HostChannel& channel, const std::string& message);
-
-  void connect(const NPVariant* args, unsigned argCount, NPVariant* result);
-  void init(const NPVariant* args, unsigned argCount, NPVariant* result);
-  void loadHostEntries(const NPVariant* args, unsigned argCount, NPVariant* result);
-  void getHostPermission(const NPVariant* args, unsigned argCount, NPVariant* result);
-  void testJsIdentity(const NPVariant* args, unsigned argCount, NPVariant* result);
-  gwt::Value clientMethod_getProperty(HostChannel& channel, int numArgs, const gwt::Value* const args);
-  gwt::Value clientMethod_setProperty(HostChannel& channel, int numArgs, const gwt::Value* const args);
-  
-  void JavaObject_invalidate(int objectId);
-  bool JavaObject_invoke(int objectId, int dispId, const NPVariant* args,
-      uint32_t numArgs, NPVariant* result);
-  bool JavaObject_getProperty(int objectId, int dispId, NPVariant* result);
-  bool JavaObject_setProperty(int objectId, int dispId, const NPVariant* value);
-  bool JavaObject_getToStringTearOff(NPVariant* result);
-
-private:
-  std::string computeTabIdentity();
-  std::string getLocationHref();
-};
-
-#endif
diff --git a/plugins/npapi/SigningCommands.txt b/plugins/npapi/SigningCommands.txt
deleted file mode 100644
index 67869d4..0000000
--- a/plugins/npapi/SigningCommands.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-# Create new certificate database
-certutil -N -d certdb
-
-# Create Object CA certificate
-certutil -d certdb -S -n 'GWT Plugin' -t u,u,Ccu -g 2048 -x -v 24 -5 -s 'CN=GWT Plugin,O=Google Inc,OU=Google Web Toolkit,ST=California,C=US,UID=jat,E=Google-Web-Toolkit-Contributors@googlegroups.com'
-#   add #3 & #7, then specify as critical extension
-
-# Export Object CA certificate in DER format, for import into browser
-certutil -d certdb -L -n 'GWT Plugin' -r >GwtPlugin.der
diff --git a/plugins/npapi/VisualStudio/npapi-plugin.sln b/plugins/npapi/VisualStudio/npapi-plugin.sln
deleted file mode 100755
index 1705f7d..0000000
--- a/plugins/npapi/VisualStudio/npapi-plugin.sln
+++ /dev/null
@@ -1,26 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "npapi-plugin", "npapi-plugin.vcxproj", "{6BF0C2CE-CB0C-421B-A67C-1E448371D24A}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|Win64 = Debug|Win64
-		Release|Win32 = Release|Win32
-		Release|Win64 = Release|Win64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{6BF0C2CE-CB0C-421B-A67C-1E448371D24A}.Debug|Win32.ActiveCfg = Debug|Win32
-		{6BF0C2CE-CB0C-421B-A67C-1E448371D24A}.Debug|Win32.Build.0 = Debug|Win32
-		{6BF0C2CE-CB0C-421B-A67C-1E448371D24A}.Debug|Win64.ActiveCfg = Debug|Win32
-		{6BF0C2CE-CB0C-421B-A67C-1E448371D24A}.Debug|Win64.Build.0 = Debug|Win32
-		{6BF0C2CE-CB0C-421B-A67C-1E448371D24A}.Release|Win32.ActiveCfg = Release|Win32
-		{6BF0C2CE-CB0C-421B-A67C-1E448371D24A}.Release|Win32.Build.0 = Release|Win32
-		{6BF0C2CE-CB0C-421B-A67C-1E448371D24A}.Release|Win64.ActiveCfg = Release|Win32
-		{6BF0C2CE-CB0C-421B-A67C-1E448371D24A}.Release|Win64.Build.0 = Release|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/plugins/npapi/VisualStudio/npapi-plugin.vcxproj b/plugins/npapi/VisualStudio/npapi-plugin.vcxproj
deleted file mode 100644
index 35447bd..0000000
--- a/plugins/npapi/VisualStudio/npapi-plugin.vcxproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>

-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

-  <ItemGroup Label="ProjectConfigurations">

-    <ProjectConfiguration Include="Debug|Win32">

-      <Configuration>Debug</Configuration>

-      <Platform>Win32</Platform>

-    </ProjectConfiguration>

-    <ProjectConfiguration Include="Release|Win32">

-      <Configuration>Release</Configuration>

-      <Platform>Win32</Platform>

-    </ProjectConfiguration>

-  </ItemGroup>

-  <PropertyGroup Label="Globals">

-    <ProjectGuid>{6BF0C2CE-CB0C-421B-A67C-1E448371D24A}</ProjectGuid>

-    <RootNamespace>npapi-plugin</RootNamespace>

-    <Keyword>Win32Proj</Keyword>

-  </PropertyGroup>

-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

-  <PropertyGroup Label="Configuration">

-    <ConfigurationType>DynamicLibrary</ConfigurationType>

-  </PropertyGroup>

-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />

-  <ImportGroup Label="ExtensionSettings">

-  </ImportGroup>

-  <ImportGroup Label="PropertySheets">

-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

-  </ImportGroup>

-  <PropertyGroup Label="UserMacros" />

-  <PropertyGroup>

-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>

-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>

-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>

-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>

-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>

-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>

-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />

-    <TargetName>npGwtDevPlugin</TargetName>

-  </PropertyGroup>

-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

-    <ClCompile>

-      <Optimization>Disabled</Optimization>

-      <AdditionalIncludeDirectories>$(ProjectDir)\..;$(ProjectDir)\..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>

-      <MinimalRebuild>true</MinimalRebuild>

-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>

-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>

-      <PrecompiledHeader>

-      </PrecompiledHeader>

-      <WarningLevel>Level3</WarningLevel>

-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>

-    </ClCompile>

-    <ResourceCompile>

-      <ResourceOutputFileName>$(IntDir)$(TargetName).res</ResourceOutputFileName>

-    </ResourceCompile>

-    <Link>

-      <AdditionalDependencies>ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>

-      <ShowProgress>LinkVerboseLib</ShowProgress>

-      <OutputFile>$(ProjectDir)\..\prebuilt\gwt-dev-plugin\WINNT_x86-msvc\npGwtDevPlugin.dll</OutputFile>

-      <ModuleDefinitionFile>$(ProjectDir)\..\npGwtDevPlugin.def</ModuleDefinitionFile>

-      <GenerateDebugInformation>true</GenerateDebugInformation>

-      <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>

-      <SubSystem>Windows</SubSystem>

-      <RandomizedBaseAddress>false</RandomizedBaseAddress>

-      <DataExecutionPrevention>

-      </DataExecutionPrevention>

-      <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>

-      <TargetMachine>MachineX86</TargetMachine>

-    </Link>

-  </ItemDefinitionGroup>

-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

-    <ClCompile>

-      <Optimization>Full</Optimization>

-      <IntrinsicFunctions>true</IntrinsicFunctions>

-      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>

-      <AdditionalIncludeDirectories>$(ProjectDir)\..;$(ProjectDir)\..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>

-      <ExceptionHandling>Sync</ExceptionHandling>

-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

-      <PrecompiledHeader>

-      </PrecompiledHeader>

-      <WarningLevel>Level3</WarningLevel>

-      <TreatWarningAsError>false</TreatWarningAsError>

-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>

-    </ClCompile>

-    <Link>

-      <AdditionalDependencies>ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>

-      <ShowProgress>LinkVerboseLib</ShowProgress>

-      <OutputFile>$(ProjectDir)\..\prebuilt\gwt-dev-plugin\WINNT_x86-msvc\npGwtDevPlugin.dll</OutputFile>

-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>

-      <ModuleDefinitionFile>..\npGwtDevPlugin.def</ModuleDefinitionFile>

-      <GenerateDebugInformation>true</GenerateDebugInformation>

-      <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>

-      <SubSystem>Windows</SubSystem>

-      <OptimizeReferences>true</OptimizeReferences>

-      <EnableCOMDATFolding>true</EnableCOMDATFolding>

-      <RandomizedBaseAddress>false</RandomizedBaseAddress>

-      <DataExecutionPrevention>

-      </DataExecutionPrevention>

-      <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>

-      <TargetMachine>MachineX86</TargetMachine>

-    </Link>

-  </ItemDefinitionGroup>

-  <ItemGroup>

-    <ClInclude Include="..\JavaObject.h" />

-    <ClInclude Include="..\LocalObjectTable.h" />

-    <ClInclude Include="..\mozincludes.h" />

-    <ClInclude Include="..\NPObjectWrapper.h" />

-    <ClInclude Include="..\NPVariantWrapper.h" />

-    <ClInclude Include="..\Plugin.h" />

-    <ClInclude Include="..\resource.h" />

-    <ClInclude Include="..\ScriptableInstance.h" />

-    <ClInclude Include="..\..\common\AllowedConnections.h" />

-    <ClInclude Include="..\..\common\BrowserChannel.h" />

-    <ClInclude Include="..\..\common\CheckVersionsMessage.h" />

-    <ClInclude Include="..\..\common\ChooseTransportMessage.h" />

-    <ClInclude Include="..\..\common\Debug.h" />

-    <ClInclude Include="..\..\common\DebugLevel.h" />

-    <ClInclude Include="..\..\common\FatalErrorMessage.h" />

-    <ClInclude Include="..\..\common\FreeValueMessage.h" />

-    <ClInclude Include="..\..\common\HashMap.h" />

-    <ClInclude Include="..\..\common\HostChannel.h" />

-    <ClInclude Include="..\..\common\InvokeMessage.h" />

-    <ClInclude Include="..\..\common\InvokeSpecialMessage.h" />

-    <ClInclude Include="..\..\common\LoadJsniMessage.h" />

-    <ClInclude Include="..\..\common\LoadModuleMessage.h" />

-    <ClInclude Include="..\..\common\Message.h" />

-    <ClInclude Include="..\..\common\Platform.h" />

-    <ClInclude Include="..\..\common\ProtocolVersionMessage.h" />

-    <ClInclude Include="..\..\common\QuitMessage.h" />

-    <ClInclude Include="..\..\common\ReturnMessage.h" />

-    <ClInclude Include="..\..\common\scoped_ptr\scoped_ptr.h" />

-    <ClInclude Include="..\..\common\ServerMethods.h" />

-    <ClInclude Include="..\..\common\SessionHandler.h" />

-    <ClInclude Include="..\..\common\Socket.h" />

-    <ClInclude Include="..\..\common\SwitchTransportMessage.h" />

-    <ClInclude Include="..\..\common\Value.h" />

-    <ClInclude Include="..\npapi\npapi.h" />

-    <ClInclude Include="..\npapi\nphostapi.h" />

-    <ClInclude Include="..\npapi\npruntime.h" />

-  </ItemGroup>

-  <ItemGroup>

-    <ResourceCompile Include="..\npGwtDevPlugin.rc" />

-  </ItemGroup>

-  <ItemGroup>

-    <ClCompile Include="..\JavaObject.cpp" />

-    <ClCompile Include="..\LocalObjectTable.cpp" />

-    <ClCompile Include="..\main.cpp" />

-    <ClCompile Include="..\npn_bindings.cpp" />

-    <ClCompile Include="..\Plugin.cpp" />

-    <ClCompile Include="..\ScriptableInstance.cpp" />

-    <ClCompile Include="..\..\common\AllowedConnections.cpp" />

-    <ClCompile Include="..\..\common\CheckVersionsMessage.cpp" />

-    <ClCompile Include="..\..\common\ChooseTransportMessage.cpp" />

-    <ClCompile Include="..\..\common\Debug.cpp" />

-    <ClCompile Include="..\..\common\FatalErrorMessage.cpp" />

-    <ClCompile Include="..\..\common\FreeValueMessage.cpp" />

-    <ClCompile Include="..\..\common\HostChannel.cpp" />

-    <ClCompile Include="..\..\common\InvokeMessage.cpp" />

-    <ClCompile Include="..\..\common\InvokeSpecialMessage.cpp" />

-    <ClCompile Include="..\..\common\LoadJsniMessage.cpp" />

-    <ClCompile Include="..\..\common\LoadModuleMessage.cpp" />

-    <ClCompile Include="..\..\common\ProtocolVersionMessage.cpp" />

-    <ClCompile Include="..\..\common\ReturnMessage.cpp" />

-    <ClCompile Include="..\..\common\ServerMethods.cpp" />

-    <ClCompile Include="..\..\common\Socket.cpp" />

-    <ClCompile Include="..\..\common\SwitchTransportMessage.cpp" />

-  </ItemGroup>

-  <ItemGroup>

-    <None Include="..\npGwtDevPlugin.def" />

-  </ItemGroup>

-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />

-  <ImportGroup Label="ExtensionTargets">

-  </ImportGroup>

-</Project>
\ No newline at end of file
diff --git a/plugins/npapi/arch b/plugins/npapi/arch
deleted file mode 100644
index 027cd25..0000000
--- a/plugins/npapi/arch
+++ /dev/null
@@ -1 +0,0 @@
-Linux_x86-gcc3
diff --git a/plugins/npapi/computearch b/plugins/npapi/computearch
deleted file mode 100755
index 9d7c343..0000000
--- a/plugins/npapi/computearch
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/bin/sh
-#
-# Compute the Firefox XPCOM-ABI string -- see
-#    http://developer.mozilla.org/en/docs/XPCOM_ABI
-# 
-
-# OS_TARGET portion should be one of:
-#   Linux
-#   Darwin - Mac OSX
-#   WINNT - Windows NT, 2000, XP and later
-#   SunOS - all Solaris versions
-#
-OS=`uname -s`
-
-# COMPILER should be one of:
-#    gcc2 - GNU C++ v2.x
-#    gcc3 - GNU C++ v3.x or v4.x
-#    msvc - MS Visual C++
-#    n32 - IRIX 6 C++ Compiler
-#    sunc - Sun C++ Compiler
-#    ibmc - IBM C++ Compiler
-#
-# TODO: figure out how to determine this in a better way
-case $OS in
-  SunOS)
-    COMPILER=sunc
-    ;;
-  WINNT)
-    COMPILER=msvc
-    ;;
-  *)
-    COMPILER=gcc3
-    ;;
-esac
-
-# TARGET_XPCOM_ABI consists of ARCH and COMPILER
-
-# Currently acceptable ARCH values are:
-#    x86 - i386 and up, 32-bit mode
-#    x86_64 - AMD64/EMT64 processors in 64-bit mode
-#    ppc
-#    alpha
-#    sparc
-#    ia64 - Itanium
-#
-ARCH=`uname -m`
-case "$ARCH" in
-  x86_64 | ppc | sparc | alpha | ia64)
-    # these don't need changing
-    ;;
-  athlon | i386 | i486 | i586 | i686 | i86pc)
-    ARCH=x86
-    ;;
-  *Macintosh*)
-    case `uname -p` in
-      powerpc)
-        ARCH=ppc
-        ;;
-      *)
-        echo "Unknown mac architecture '$ARCH'" >&2
-        exit 1
-        ;;
-    esac
-    ;;
-  *)
-    echo "Unknown architecture '$ARCH'" >&2
-    exit 1
-    ;;
-esac
-
-echo ${OS}_$ARCH-$COMPILER >$1
-exit 0
diff --git a/plugins/npapi/get32bitflag b/plugins/npapi/get32bitflag
deleted file mode 100755
index ff62c6a..0000000
--- a/plugins/npapi/get32bitflag
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/sh
-
-if [ ! -r "$1" ]
-then
-  echo "32"
-  exit 0
-fi
-
-read ARCH <$1
-
-case "$ARCH" in
-   *_64* | *sparc*)
-	echo "64"
-	;;
-   *)
-	echo "32"
-	;;
-esac
-exit 0
diff --git a/plugins/npapi/getarch b/plugins/npapi/getarch
deleted file mode 100755
index fc69c11..0000000
--- a/plugins/npapi/getarch
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-
-if [ -r $1 ]
-then
-  read k <$1
-  echo $k
-else 
-  echo "unknown"
-fi
-exit 0
diff --git a/plugins/npapi/getversion b/plugins/npapi/getversion
deleted file mode 100755
index c5ec58f..0000000
--- a/plugins/npapi/getversion
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-# Wrapper to prevent failure if svnversion isn't available
-
-V=`svnversion ${PWD}/.. 2>/dev/null`
-if [ $? -gt 0 -o -z "$V" ]
-then
-  V='0'
-fi
-echo $V | sed s/[^0-9].*$//
-exit 0
diff --git a/plugins/npapi/main.cpp b/plugins/npapi/main.cpp
deleted file mode 100644
index 0fb5b61..0000000
--- a/plugins/npapi/main.cpp
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
- *  main.cpp
- *  gwt-hosted-mode
- *
- *  Created by Kelly Norton on 11/18/07.
- *  Copyright 2007 Google Inc. All rights reserved.
- *
- */
-
-#ifndef _WINDOWS
-#include <unistd.h>
-#endif
-
-#include "Debug.h"
-
-#include "mozincludes.h"
-#include "Plugin.h"
-#include "ScriptableInstance.h"
-#include "scoped_ptr/scoped_ptr.h"
-
-#ifdef _WINDOWS
-#include <windows.h>
-BOOL APIENTRY DllMain(HMODULE hModule, DWORD ulReasonForCall, LPVOID lpReserved) {
-  switch (ulReasonForCall) {
-    case DLL_PROCESS_ATTACH:
-      DisableThreadLibraryCalls(hModule);
-      break;
-    case DLL_THREAD_ATTACH:
-    case DLL_THREAD_DETACH:
-    case DLL_PROCESS_DETACH:
-      break;
-  }
-  return TRUE;
-}
-#endif
-extern "C" {
-
-  static const NPNetscapeFuncs* browser;
-
-  NPError	NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode,
-	  int16 argc, char* argn[], char* argv[], NPSavedData* saved);
-  NPError	NPP_Destroy(NPP instance, NPSavedData** save);
-  NPError	NPP_SetWindow(NPP instance, NPWindow* window);
-  NPError	NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream,
-	  NPBool seekable, uint16* stype);
-  NPError	NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason);
-  int32		NPP_WriteReady(NPP instance, NPStream* stream);
-  int32		NPP_Write(NPP instance, NPStream* stream, int32 offset, int32 len,
-	  void* buffer);
-  void		NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname);
-  void		NPP_Print(NPP instance, NPPrint* platformPrint);
-  int16		NPP_HandleEvent(NPP instance, void* event);
-  void		NPP_URLNotify(NPP instance, const char* URL, NPReason reason,
-	  void* notifyData);
-  NPError NP_GetValue(void*, NPPVariable variable, void *value);
-  NPError	NPP_GetValue(NPP instance, NPPVariable variable, void *value);
-  NPError	NPP_SetValue(NPP instance, NPNVariable variable, void *value);
-
-  // necessary for Mac
-#ifdef __APPLE_CC__
-  #pragma export on
-  int main(NPNetscapeFuncs* browserFuncs, NPPluginFuncs* pluginFuncs, NPP_ShutdownUPP* shutdownUPP);
-#endif
-  NPError WINAPI NP_Initialize(NPNetscapeFuncs* browserFuncs NPINIT_ARG(pluginFuncs));
-  NPError WINAPI NP_GetEntryPoints(NPPluginFuncs* pluginFuncs);
-  const char *NP_GetMIMEDescription();
-  const char *NPP_GetMIMEDescription();
-  NP_SHUTDOWN_RETURN_TYPE WINAPI NP_Shutdown(void);
-#ifdef __APPLE_CC__
-  #pragma export off
-#endif
-
-  // Function pointer variables:
-
-  NPError WINAPI NP_Initialize(NPNetscapeFuncs* browserFuncs NPINIT_ARG(pluginFuncs)) {
-    Debug::log(Debug::Info) << "NP_Initialize (gwt-hosted-mode/c++)";
-#ifndef _WINDOWS
-    Debug::log(Debug::Info) << ", pid=" << (unsigned) getpid();
-#endif
-    Debug::log(Debug::Info) << Debug::flush;
-    SetNPNFuncs(browserFuncs);
-    browser = &GetNPNFuncs();
-#ifdef NPINIT_GETS_ENTRYPOINTS
-    NP_GetEntryPoints(pluginFuncs);
-#endif
-    return NPERR_NO_ERROR;
-  }
-
-#ifdef __APPLE_CC__
-  int main(NPNetscapeFuncs* browserFuncs, NPPluginFuncs* pluginFuncs, NPP_ShutdownUPP* shutdownUPP) {
-    printf("main (gwt-dev-plugin/c++)\n");
-    if (shutdownUPP == NULL) {
-      return NPERR_INVALID_FUNCTABLE_ERROR;
-    }
-    *shutdownUPP = NP_Shutdown;//NewNPP_ShutdownProc(NP_Shutdown);
-    NP_Initialize(browserFuncs);
-    NP_GetEntryPoints(pluginFuncs);
-    return NPERR_NO_ERROR;
-  }
-#endif
-
-  NPError WINAPI NP_GetEntryPoints(NPPluginFuncs* pluginFuncs) {
-    Debug::log(Debug::Debugging) << "NP_GetEntryPoints" << Debug::flush;
-#ifdef BROWSER_WEBKIT
-    pluginFuncs->size          = sizeof(NPPluginFuncs);
-#else
-    if (pluginFuncs->size < sizeof(NPPluginFuncs)) {
-      return NPERR_INVALID_FUNCTABLE_ERROR;
-    }
-#endif
-    pluginFuncs->version = (NP_VERSION_MAJOR << 8) | NP_VERSION_MINOR;
-#if 1
-    pluginFuncs->newp          = NPP_New;
-    pluginFuncs->destroy       = NPP_Destroy;
-    pluginFuncs->setwindow     = NPP_SetWindow;
-    pluginFuncs->newstream     = NPP_NewStream;
-    pluginFuncs->destroystream = NPP_DestroyStream;
-    pluginFuncs->asfile        = NPP_StreamAsFile;
-    pluginFuncs->writeready    = NPP_WriteReady;
-#ifdef BROWSER_WEBKIT
-    pluginFuncs->write         = reinterpret_cast<NPP_WriteProcPtr>(NPP_Write);
-#else
-    pluginFuncs->write         = NPP_Write;
-#endif
-    pluginFuncs->print         = NPP_Print;
-    pluginFuncs->event         = NPP_HandleEvent;
-    pluginFuncs->urlnotify     = NPP_URLNotify;
-    pluginFuncs->getvalue      = NPP_GetValue;
-    pluginFuncs->setvalue      = NPP_SetValue;
-    pluginFuncs->javaClass     = NULL;
-#else
-    pluginFuncs->newp =          NewNPP_NewProc(NPP_New);
-    pluginFuncs->destroy =       NewNPP_DestroyProc(NPP_Destroy);
-    pluginFuncs->setwindow =     NewNPP_SetWindowProc(NPP_SetWindow);
-    pluginFuncs->newstream =     NewNPP_NewStreamProc(NPP_NewStream);
-    pluginFuncs->destroystream = NewNPP_DestroyStreamProc(NPP_DestroyStream);
-    pluginFuncs->asfile =        NewNPP_StreamAsFileProc(NPP_StreamAsFile);
-    pluginFuncs->writeready =    NewNPP_WriteReadyProc(NPP_WriteReady);
-    pluginFuncs->write =         NewNPP_WriteProc(NPP_Write);
-    pluginFuncs->print =         NewNPP_PrintProc(NPP_Print);
-    pluginFuncs->event =         NewNPP_HandleEventProc(NPP_HandleEvent);
-    pluginFuncs->urlnotify =     NewNPP_URLNotifyProc(NPP_URLNotify);
-    pluginFuncs->getvalue =      NewNPP_GetValueProc(NPP_GetValue);
-    pluginFuncs->setvalue =      NewNPP_SetValueProc(NPP_SetValue);
-#endif
-    return NPERR_NO_ERROR;
-  }
-
-  const char *NP_GetMIMEDescription() {
-    Debug::log(Debug::Info) << "NP_GetMIMEDescription: returned mime description" << Debug::flush;
-    return "application/x-gwt-dev-mode::GWT dev-mode plugin;application/x-gwt-hosted-mode::GWT dev-mode plugin";
-  }
-
-  const char *NPP_GetMIMEDescription() {
-    return NP_GetMIMEDescription();
-  }
-
-  NP_SHUTDOWN_RETURN_TYPE WINAPI NP_Shutdown(void) {
-    Debug::log(Debug::Debugging) << "NP_Shutdown" << Debug::flush;
-    return NP_SHUTDOWN_RETURN(NPERR_NO_ERROR);
-  }
-
-  NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char* argn[],
-      char* argv[], NPSavedData* saved) {
-    Debug::log(Debug::Info) << "NPP_New(instance=" << instance << ",mode=" << mode << ",argc="
-        << argc << ",args=[";
-    for (int i = 0; i < argc; ++i) {
-      Debug::log(Debug::Info) << (i ? "," : "") << argn[i] << "=" << argv[i];
-    }
-    Debug::log(Debug::Info) << "],saved=" << saved << "): version=" << browser->version
-        << Debug::flush;
-    // Version 14 provides browser->createobject, which we need for npruntime support.
-    if (browser->version < 14) {
-      return NPERR_INVALID_INSTANCE_ERROR;
-    }
-    if (instance == NULL) {
-      return NPERR_INVALID_INSTANCE_ERROR;
-    }
-    Plugin* obj;
-//    if (saved) {
-//      obj = new Plugin(instance, reinterpret_cast<ScriptableInstance*>(saved));
-//    } else {
-      obj = new Plugin(instance);
-//    }
-    instance->pdata = obj;
-
-#ifdef __APPLE_CC__
-    // On the Mac, we need to negotiate CoreGraphics and Cocoa even though
-    // we don't use them.
-    // See: http://code.google.com/p/chromium/issues/detail?id=134761
-
-    // select the right drawing model if necessary
-    NPBool supportsCoreGraphics = false;
-    if (browser->getvalue(instance, NPNVsupportsCoreGraphicsBool,
-      &supportsCoreGraphics) == NPERR_NO_ERROR && supportsCoreGraphics) {
-
-      browser->setvalue(instance, NPPVpluginDrawingModel,
-        (void*)NPDrawingModelCoreGraphics);
-    }
-
-    // select the Cocoa event model
-    NPBool supportsCocoaEvents = false;
-    if (browser->getvalue(instance, NPNVsupportsCocoaBool,
-      &supportsCocoaEvents) == NPERR_NO_ERROR && supportsCocoaEvents) {
-
-      browser->setvalue(instance, NPPVpluginEventModel,
-        (void*)NPEventModelCocoa);
-    }
-
-#endif
-
-    // Make this a windowless plugin.
-    return NPN_SetValue(instance, NPPVpluginWindowBool, NULL);
-  }
-
-  NPError NPP_Destroy(NPP instance, NPSavedData** save) {
-    Debug::log(Debug::Info) << "NPP_Destroy(instance=" << instance << ")" << Debug::flush;
-    if (instance == NULL) {
-      return NPERR_INVALID_INSTANCE_ERROR;
-    }
-    Plugin* plugin = static_cast<Plugin*>(instance->pdata);
-    if (plugin) {
-      delete plugin;
-      instance->pdata = 0;
-    }
-    return NPERR_NO_ERROR;
-  }
-
-  NPError NPP_SetWindow(NPP instance, NPWindow* window) {
-    Debug::log(Debug::Info) << "NPP_SetWindow(instance=" << instance << ",window=" << window
-        << ")" << Debug::flush;
-    return NPERR_NO_ERROR;
-  }
-   
-
-  NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype) {
-    Debug::log(Debug::Info) << "NPP_NewStream(instance=" << instance << ")" << Debug::flush;
-    *stype = NP_ASFILEONLY;
-    return NPERR_NO_ERROR;
-  }
-
-  NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason) {
-    Debug::log(Debug::Info) << "NPP_DestroyStream(instance=" << instance << ")" << Debug::flush;
-    return NPERR_NO_ERROR;
-  }
-
-  int32 NPP_WriteReady(NPP instance, NPStream* stream) {
-    Debug::log(Debug::Info) << "NPP_WriteReady(instance=" << instance << ")" << Debug::flush;
-    return 0;
-  }
-
-  int32 NPP_Write(NPP instance, NPStream* stream, int32 offset, int32 len, void* buffer) {
-    Debug::log(Debug::Info) << "NPP_Write(instance=" << instance << ")" << Debug::flush;
-    return 0;
-  }
-
-  void NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname) {
-    Debug::log(Debug::Info) << "NPP_StreamAsFile(instance=" << instance << ")" << Debug::flush;
-  }
-
-  void NPP_Print(NPP instance, NPPrint* platformPrint) {
-    Debug::log(Debug::Info) << "NPP_Print(instance=" << instance << ")" << Debug::flush;
-  }
-
-  int16 NPP_HandleEvent(NPP instance, void* event) {
-    //Debug::log(Debug::Spam) << "NPP_HandleEvent(instance=" << instance << ")" << Debug::flush;
-    return 0 ;
-  }
-
-  void NPP_URLNotify(NPP instance, const char* url, NPReason reason, void* notifyData) {
-    Debug::log(Debug::Info) << "NPP_URLNotify(instance=" << instance << ")" << Debug::flush;
-  }
-
-  NPObject *NPP_GetScriptableInstance(NPP instance) {
-    Debug::log(Debug::Info) << "NPP_GetScriptableInstance(instance=" << instance << ")" << Debug::flush;
-    if (!instance) {
-      return 0;
-    }
-    Plugin* plugin = static_cast<Plugin*>(instance->pdata);
-    ScriptableInstance* scriptableInstance = plugin->getScriptableInstance();
-    NPN_RetainObject(scriptableInstance);  // caller expects it retained.
-    return scriptableInstance;
-  }
-  
-  NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value) {
-    Debug::log(Debug::Info) << "NPP_GetValue(instance=" << instance << ",var=" << variable << ")"
-        << Debug::flush;
-    switch (variable) {
-      case NPPVpluginScriptableNPObject:
-        // here the plugin is asked by Mozilla to tell if it is scriptable
-        // we should return a valid interface id and a pointer to 
-        // nsScriptablePeer interface which we should have implemented
-        // and which should be defined in the corressponding *.xpt file
-        // in the bin/components folder
-        *static_cast<NPObject**>(value) = NPP_GetScriptableInstance(instance);
-        break;
-      default:
-        // pass other ones to the static version of GetValue
-        return NP_GetValue(0, variable, value);
-    }
-    return NPERR_NO_ERROR;
-  }
-
-  NPError NP_GetValue(void*, NPPVariable variable, void *value) {
-    Debug::log(Debug::Info) << "NP_GetValue(var=" << variable << ")" << Debug::flush;
-    switch (variable) {
-      case NPPVpluginNameString:
-        *static_cast<const char **>(value) = "GWT Development-Mode Plugin";
-        break;
-      case NPPVpluginDescriptionString:
-        *static_cast<const char **>(value) = "Plugin to enable debugging of Google Web Toolkit "
-            "applications in development mode.";
-        break;
-      default:
-        Debug::log(Debug::Info) << "NPP_GetValue(var=" << variable
-            << ") -- unexpected variable type" << Debug::flush;
-        return NPERR_GENERIC_ERROR;
-    }
-    return NPERR_NO_ERROR;
-  }
-
-  NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value) {
-    Debug::log(Debug::Info) << "NPP_SetValue(instance=" << instance << ",var=" << variable << ")"
-        << Debug::flush;
-    return NPERR_NO_ERROR;
-  }
-}
diff --git a/plugins/npapi/manifest-template.json b/plugins/npapi/manifest-template.json
deleted file mode 100644
index 376cb1b..0000000
--- a/plugins/npapi/manifest-template.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
-  "name": "GWT Developer Plugin",
-  "version": "GWT_DEV_PLUGIN_VERSION",
-  "manifest_version": 2,
-
-  "description": "A plugin to enable debugging with GWT's Development Mode",
-  "icons": {
-    "16": "gwt16.png",
-    "32": "gwt32.png",
-    "48": "gwt48.png",
-    "64": "gwt64.png",
-    "128": "gwt128.png"
-  },
-
-  "background": {
-     "page": "background.html"
-   },
-  "options_page" : "DevModeOptions.html",
-  "page_action" : {
-    "default_icon" : "gwt32.png",
-    "default_title" : "GWT Development Mode",
-    "default_popup" : "page_action.html"
-  },
-  "permissions" : [
-    "tabs"
-  ],
-  "plugins": [
-    { "path": "WINNT_x86-msvc/npGwtDevPlugin.dll", "public": true },
-    { "path": "Linux_x86-gcc3/libGwtDevPlugin.so", "public": true },
-    { "path": "Linux_x86_64-gcc3/libGwtDevPlugin.so", "public": true },
-    { "path": "Darwin-gcc3/gwtDev.plugin", "public": true }
-  ]
-}
diff --git a/plugins/npapi/mozincludes.h b/plugins/npapi/mozincludes.h
deleted file mode 100644
index 302b2eb..0000000
--- a/plugins/npapi/mozincludes.h
+++ /dev/null
@@ -1,63 +0,0 @@
-#ifndef _H_mozincludes
-#define _H_mozincludes
-
-// Defines private prototypes for copy constructor and assigment operator. Do
-// not implement these methods.
-#define DISALLOW_EVIL_CONSTRUCTORS(CLASS) \
- private:                                 \
-  CLASS(const CLASS&);                    \
-  CLASS& operator=(const CLASS&)
-
-#include "npapi/npapi.h"
-#include "npapi/nphostapi.h"
-#include "npapi/npruntime.h"
-
-void SetNPNFuncs(NPNetscapeFuncs* npnFuncs);
-const NPNetscapeFuncs& GetNPNFuncs();
-
-#include "NPObjectWrapper.h"
-
-inline const NPUTF8 *GetNPStringUTF8Characters(const NPString &npstr) {
-  return npstr.UTF8Characters;
-}
-
-inline uint32 GetNPStringUTF8Length(const NPString &npstr) {
-  return npstr.UTF8Length;
-}
-
-// Convenience wrappers to make an NPVariant from various string types.
-#define STDSTRING_TO_NPVARIANT(str, var) \
-  STRINGN_TO_NPVARIANT(str.data(), static_cast<uint32_t>(str.length()), var)
-
-#define NPSTRING_TO_NPVARIANT(npstr, var) \
-  STRINGN_TO_NPVARIANT(GetNPStringUTF8Characters(npstr), \
-                       GetNPStringUTF8Length(npstr), var)
-
-#ifdef linux
-#define OSCALL /**/
-#define WINAPI /**/
-#define DLLEXP /**/
-#define NPINIT_ARG(argname) , NPPluginFuncs* argname
-#define NPINIT_GETS_ENTRYPOINTS
-#define NP_SHUTDOWN_RETURN_TYPE NPError
-#define NP_SHUTDOWN_RETURN(val) (val)
-#endif
-
-#ifdef _WINDOWS
-#define DLLEXP __declspec(dllexport)
-#define NPINIT_ARG(argname) /**/
-#define NP_SHUTDOWN_RETURN_TYPE NPError
-#define NP_SHUTDOWN_RETURN(val) (val)
-#endif
-
-#ifdef __mac
-#define OSCALL /**/
-#define WINAPI /**/
-#define DLLEXP /**/
-#define NPINIT_ARG(argname) /**/
-#define NP_SHUTDOWN_RETURN_TYPE void
-#define NP_SHUTDOWN_RETURN(val) /**/
-typedef void (* NP_LOADDS NPP_ShutdownUPP)(void); // from npupp.h
-#endif
-
-#endif
diff --git a/plugins/npapi/npGwtDevPlugin.def b/plugins/npapi/npGwtDevPlugin.def
deleted file mode 100644
index 5a7d84b..0000000
--- a/plugins/npapi/npGwtDevPlugin.def
+++ /dev/null
@@ -1,7 +0,0 @@
-LIBRARY npGwtDevPlugin
-
-EXPORTS
-  NP_GetEntryPoints			@1
-  NP_Initialize				@2
-  NP_Shutdown				@3
-  NP_GetMIMEDescription		@4
\ No newline at end of file
diff --git a/plugins/npapi/npGwtDevPlugin.rc b/plugins/npapi/npGwtDevPlugin.rc
deleted file mode 100644
index 913b4ea..0000000
--- a/plugins/npapi/npGwtDevPlugin.rc
+++ /dev/null
@@ -1,111 +0,0 @@
-#include "resource.h"
-
-#define APSTUDIO_READONLY_SYMBOLS
-#include "windows.h"
-#include "winres.h"
-#undef APSTUDIO_READONLY_SYMBOLS
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-#ifdef _WIN32
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-#pragma code_page(1252)
-#endif
-
-1 VERSIONINFO
-  FILEVERSION 0,9,0,0
-  PRODUCTVERSION 0,9,0,0
-  FILEFLAGSMASK 0x3fL
-#ifdef _DEBUG
-  FILEFLAGS 0x1L
-#else
-  FILEFLAGS 0x0L
-#endif
-  FILEOS 0x40004L
-  FILETYPE 0x2L
-  FILESUBTYPE 0x0L
-BEGIN
-  BLOCK "StringFileInfo"
-  BEGIN
-  	BLOCK "040904e4"
-  	BEGIN
-  	  VALUE "CompanyName", 		"Google Inc"
-  	  VALUE "FileDescription",	"GWT Development Mode Plugin"
-#if 0
-  	  VALUE "FileExtents",		""
-#endif
-  	  VALUE "FileOpenName",		"Plugin to allow debugging of GWT applications in hosted mode."
-  	  VALUE "FileVersion",		"0.9.0"
-  	  VALUE "InternalName",		"GWT DMP"
-  	  VALUE "LegalCopyright",	"Copyright © 2009 Google Inc.  All rights reserved."
-  	  VALUE "MIMEType",			"application/x-gwt-hosted-mode"
-  	  VALUE "OriginalFilename",	"npOOPHM.dll"
-  	  VALUE "ProductName",		"GWT DMP Plugin"
-  	  VALUE "ProductVersion",	"0.9.0"
-  	END
-  END
-  BLOCK "VarFileInfo"
-  BEGIN
-    VALUE "Translation", 0x409, 1252
-  END
-END
-
-#ifdef APSTUDIO_INVOKED
-1 TEXTINCLUDE
-BEGIN
-  "resource.h\0"
-END
-
-2 TEXTINCLUDE
-BEGIN
-  "#include ""mfc/afxres.h""\r\n"
-  "\0"
-END
-
-3 TEXTINCLUDE
-BEGIN
-  "\r\n"
-  "\0"
-END
-
-#endif
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
-IDD_ALLOW_DIALOG DIALOGEX 0, 0, 188, 73
-STYLE DS_SYSMODAL | DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | WS_CAPTION
-EXSTYLE WS_EX_TOPMOST
-CAPTION "GWT Plugin Security Alert"
-FONT 10, "Microsoft Sans Serif", 400, 0, 0x0
-BEGIN
-    CONTROL         "Remember this decision for this server",IDC_REMEMBER_CHECKBOX,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,30,31,129,10
-    LTEXT           "This web server is trying to initiate a GWT Development\r\nMode Connection -- should it be allowed?",IDC_STATIC,10,7,167,19
-    PUSHBUTTON      "Allow",IDC_ALLOW_BUTTON,37,50,50,14
-    DEFPUSHBUTTON   "Deny",IDCANCEL,100,50,50,14
-END
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// DESIGNINFO
-//
-
-#ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO 
-BEGIN
-    IDD_ALLOW_DIALOG, DIALOG
-    BEGIN
-        LEFTMARGIN, 7
-        RIGHTMARGIN, 181
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 66
-    END
-END
-#endif    // APSTUDIO_INVOKED
-
-#else
-
-#endif
diff --git a/plugins/npapi/npapi/npapi.h b/plugins/npapi/npapi/npapi.h
deleted file mode 100644
index cca69c3..0000000
--- a/plugins/npapi/npapi/npapi.h
+++ /dev/null
@@ -1,827 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (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.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is mozilla.org code.
- *
- * The Initial Developer of the Original Code is
- * Netscape Communications Corporation.
- * Portions created by the Initial Developer are Copyright (C) 1998
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-
-/*
- *  npapi.h $Revision: 3.48 $
- *  Netscape client plug-in API spec
- */
-
-#ifndef _NPAPI_H_
-#define _NPAPI_H_
-
-
-// BEGIN GOOGLE GEARS MODIFICATIONS
-
-//#include "gears/base/common/int_types.h"
-// Signed integer types
-typedef signed char         int8;
-typedef short               int16;
-typedef int                 int32;
-#ifdef _MSC_VER  //_MSC_VER is defined iff the code is compiled by MSVC
-typedef __int64             int64;
-#else
-typedef long long           int64;
-#endif /* _MSC_VER */
-
-// Unsigned integer types
-typedef unsigned char      uint8;
-typedef unsigned short     uint16;
-typedef unsigned int       uint32;
-#ifdef _MSC_VER
-typedef unsigned __int64   uint64;
-#else
-typedef unsigned long long uint64;
-#endif /* _MSC_VER */
-
-// END GOOGLE GEARS MODIFICATIONS
-
-
-#ifdef __OS2__
-#pragma pack(1)
-#endif
-
-//#include "prtypes.h"
-/* Copied from xp_core.h */
-/* removed #ifdef for hpux defined in /usr/include/model.h */
-#ifndef _INT16
-#define _INT16
-#endif
-#ifndef _INT32
-#define _INT32
-#endif
-#ifndef _UINT16
-#define _UINT16
-#endif
-#ifndef _UINT32
-#define _UINT32
-#endif
-
-/* 
- * NO_NSPR_10_SUPPORT disables the inclusion 
- * of obsolete/protypes.h, whose int16, uint16, 
- * int32, and uint32 typedefs conflict with those 
- * in this file. 
- */ 
-#ifndef NO_NSPR_10_SUPPORT
-#define NO_NSPR_10_SUPPORT
-#endif
-#ifdef OJI
-#include "jri.h"                /* Java Runtime Interface */
-#endif
-
-#if defined (__OS2__ ) || defined (OS2)
-#	ifndef XP_OS2
-#		define XP_OS2 1
-#	endif /* XP_OS2 */
-#endif /* __OS2__ */
-
-#ifdef _WINDOWS
-// BEGIN GOOGLE MODIFICATIONS
-//#ifdef XP_WIN
-typedef __int32 int32_t;
-typedef unsigned __int32 uint32_t; 
-//#include <windows.h>
-//#endif // XP_WIN
-// END GOOGLE MODIFICATIONS
-
-#	ifndef XP_WIN
-#		define XP_WIN 1
-#	endif /* XP_WIN */
-#endif /* _WINDOWS */
-
-#ifdef __MWERKS__
-#	define _declspec __declspec
-#	ifdef __INTEL__
-#		undef NULL
-#		ifndef XP_WIN
-#			define XP_WIN 1
-#		endif /* XP_WIN */
-#	endif /* __INTEL__ */
-#endif /* __MWERKS__ */
-
-#ifdef XP_MACOSX
-#include <Carbon/Carbon.h>
-#ifdef __LP64__
-#define NP_NO_QUICKDRAW
-#endif
-#endif
-
-#if defined(XP_UNIX) 
-#	include <stdio.h>
-#	if defined(MOZ_X11)
-#		include <X11/Xlib.h>
-#		include <X11/Xutil.h>
-#	endif
-#endif
-
-/*----------------------------------------------------------------------*/
-/*                        Plugin Version Constants                      */
-/*----------------------------------------------------------------------*/
-
-#define NP_VERSION_MAJOR 0
-#define NP_VERSION_MINOR 19
-
-
-/* The OS/2 version of Netscape uses RC_DATA to define the
-   mime types, file extensions, etc that are required.
-   Use a vertical bar to separate types, end types with \0.
-   FileVersion and ProductVersion are 32bit ints, all other
-   entries are strings the MUST be terminated wwith a \0.
-
-AN EXAMPLE:
-
-RCDATA NP_INFO_ProductVersion { 1,0,0,1,}
-
-RCDATA NP_INFO_MIMEType    { "video/x-video|",
-                             "video/x-flick\0" }
-RCDATA NP_INFO_FileExtents { "avi|",
-                             "flc\0" }
-RCDATA NP_INFO_FileOpenName{ "MMOS2 video player(*.avi)|",
-                             "MMOS2 Flc/Fli player(*.flc)\0" }
-
-RCDATA NP_INFO_FileVersion       { 1,0,0,1 }
-RCDATA NP_INFO_CompanyName       { "Netscape Communications\0" }
-RCDATA NP_INFO_FileDescription   { "NPAVI32 Extension DLL\0"
-RCDATA NP_INFO_InternalName      { "NPAVI32\0" )
-RCDATA NP_INFO_LegalCopyright    { "Copyright Netscape Communications \251 1996\0"
-RCDATA NP_INFO_OriginalFilename  { "NVAPI32.DLL" }
-RCDATA NP_INFO_ProductName       { "NPAVI32 Dynamic Link Library\0" }
-
-*/
-
-
-/* RC_DATA types for version info - required */
-#define NP_INFO_ProductVersion      1
-#define NP_INFO_MIMEType            2
-#define NP_INFO_FileOpenName        3
-#define NP_INFO_FileExtents         4
-
-/* RC_DATA types for version info - used if found */
-#define NP_INFO_FileDescription     5
-#define NP_INFO_ProductName         6
-
-/* RC_DATA types for version info - optional */
-#define NP_INFO_CompanyName         7
-#define NP_INFO_FileVersion         8
-#define NP_INFO_InternalName        9
-#define NP_INFO_LegalCopyright      10
-#define NP_INFO_OriginalFilename    11
-
-#ifndef RC_INVOKED
-
-
-
-/*----------------------------------------------------------------------*/
-/*                       Definition of Basic Types                      */
-/*----------------------------------------------------------------------*/
-
-#ifndef _UINT16
-typedef unsigned short uint16;
-#endif
-
-#ifndef _UINT32
-#    if defined(__alpha) || defined(__amd64__) || defined(__x86_64__)
-typedef unsigned int uint32;
-#    else  /* __alpha */
-typedef unsigned long uint32;
-#    endif /* __alpha */
-#endif
-
-/*
- * AIX defines these in sys/inttypes.h included from sys/types.h
- */
-#ifndef AIX
-#ifndef _INT16
-typedef short int16;
-#endif
-
-#ifndef _INT32
-#    if defined(__alpha) || defined(__amd64__) || defined(__x86_64__)
-typedef int int32;
-#    else  /* __alpha */
-typedef long int32;
-#    endif /* __alpha */
-#endif
-#endif
-
-#ifndef FALSE
-#define FALSE (0)
-#endif
-#ifndef TRUE
-#define TRUE (1)
-#endif
-#ifndef NULL
-#define NULL (0L)
-#endif
-
-#ifdef XP_MACOSX
-typedef enum {
-#ifndef NP_NO_QUICKDRAW
-  NPDrawingModelQuickDraw = 0,
-#endif
-  NPDrawingModelCoreGraphics = 1
-} NPDrawingModel;
-#endif
-
-// copied from newer npapi.h - skybrian
-#ifdef XP_MACOSX
-typedef enum {
-#ifndef NP_NO_CARBON
-  NPEventModelCarbon = 0,
-#endif
-  NPEventModelCocoa = 1
-} NPEventModel;
-#endif
-
-typedef unsigned char	NPBool;
-typedef int16			NPError;
-typedef int16			NPReason;
-typedef char*			NPMIMEType;
-
-
-
-/*----------------------------------------------------------------------*/
-/*                       Structures and definitions                     */
-/*----------------------------------------------------------------------*/
-
-/*
- *  NPP is a plug-in's opaque instance handle
- */
-typedef struct _NPP
-{
-  void*	pdata;      /* plug-in private data */
-  void*	ndata;      /* netscape private data */
-} NPP_t;
-
-typedef NPP_t*  NPP;
-
-
-typedef struct _NPStream
-{
-  void*  pdata; /* plug-in private data */
-  void*  ndata; /* netscape private data */
-  const  char* url;
-  uint32 end;
-  uint32 lastmodified;
-  void*  notifyData;
-  const  char* headers; /* Response headers from host.
-                         * Exists only for >= NPVERS_HAS_RESPONSE_HEADERS.
-                         * Used for HTTP only; NULL for non-HTTP.
-                         * Available from NPP_NewStream onwards.
-                         * Plugin should copy this data before storing it.
-                         * Includes HTTP status line and all headers,
-                         * preferably verbatim as received from server,
-                         * headers formatted as in HTTP ("Header: Value"),
-                         * and newlines (\n, NOT \r\n) separating lines.
-                         * Terminated by \n\0 (NOT \n\n\0). */
-} NPStream;
-
-
-typedef struct _NPByteRange
-{
-  int32  offset; /* negative offset means from the end */
-  uint32 length;
-  struct _NPByteRange* next;
-} NPByteRange;
-
-
-typedef struct _NPSavedData
-{
-  int32	len;
-  void*	buf;
-} NPSavedData;
-
-
-typedef struct _NPRect
-{
-  uint16 top;
-  uint16 left;
-  uint16 bottom;
-  uint16 right;
-} NPRect;
-
-typedef struct _NPSize 
-{ 
-  int32 width; 
-  int32 height; 
-} NPSize; 
-
-#ifdef XP_UNIX
-/*
- * Unix specific structures and definitions
- */
-
-/*
- * Callback Structures.
- *
- * These are used to pass additional platform specific information.
- */
-enum {
-  NP_SETWINDOW = 1,
-  NP_PRINT
-};
-
-typedef struct
-{
-  int32 type;
-} NPAnyCallbackStruct;
-
-typedef struct
-{
-  int32        type;
-#ifdef MOZ_X11
-  Display*     display;
-  Visual*      visual;
-  Colormap     colormap;
-  unsigned int depth;
-#endif
-} NPSetWindowCallbackStruct;
-
-typedef struct
-{
-  int32 type;
-  FILE* fp;
-} NPPrintCallbackStruct;
-
-#endif /* XP_UNIX */
-
-
-/*
- *   The following masks are applied on certain platforms to NPNV and 
- *   NPPV selectors that pass around pointers to COM interfaces. Newer 
- *   compilers on some platforms may generate vtables that are not 
- *   compatible with older compilers. To prevent older plugins from 
- *   not understanding a new browser's ABI, these masks change the 
- *   values of those selectors on those platforms. To remain backwards
- *   compatible with differenet versions of the browser, plugins can 
- *   use these masks to dynamically determine and use the correct C++
- *   ABI that the browser is expecting. This does not apply to Windows 
- *   as Microsoft's COM ABI will likely not change.
- */
-
-#define NP_ABI_GCC3_MASK  0x10000000
-/*
- *   gcc 3.x generated vtables on UNIX and OSX are incompatible with 
- *   previous compilers.
- */
-#if (defined (XP_UNIX) && defined(__GNUC__) && (__GNUC__ >= 3))
-#define _NP_ABI_MIXIN_FOR_GCC3 NP_ABI_GCC3_MASK
-#else
-#define _NP_ABI_MIXIN_FOR_GCC3 0
-#endif
-
-
-#define NP_ABI_MACHO_MASK 0x01000000
-/*
- *   On OSX, the Mach-O executable format is significantly
- *   different than CFM. In addition to having a different
- *   C++ ABI, it also has has different C calling convention.
- *   You must use glue code when calling between CFM and
- *   Mach-O C functions. 
- */
-#if (defined(TARGET_RT_MAC_MACHO))
-#define _NP_ABI_MIXIN_FOR_MACHO NP_ABI_MACHO_MASK
-#else
-#define _NP_ABI_MIXIN_FOR_MACHO 0
-#endif
-
-
-#define NP_ABI_MASK (_NP_ABI_MIXIN_FOR_GCC3 | _NP_ABI_MIXIN_FOR_MACHO)
-
-/*
- * List of variable names for which NPP_GetValue shall be implemented
- */
-typedef enum {
-  NPPVpluginNameString = 1,
-  NPPVpluginDescriptionString,
-  NPPVpluginWindowBool,
-  NPPVpluginTransparentBool,
-  NPPVjavaClass,                /* Not implemented in Mozilla 1.0 */
-  NPPVpluginWindowSize,
-  NPPVpluginTimerInterval,
-
-  NPPVpluginScriptableInstance = (10 | NP_ABI_MASK),
-  NPPVpluginScriptableIID = 11,
-
-  /* Introduced in Mozilla 0.9.9 */
-  NPPVjavascriptPushCallerBool = 12,
-
-  /* Introduced in Mozilla 1.0 */
-  NPPVpluginKeepLibraryInMemory = 13,
-  NPPVpluginNeedsXEmbed         = 14,
-
-  /* Get the NPObject for scripting the plugin. Introduced in Firefox
-   * 1.0 (NPAPI minor version 14).
-   */
-  NPPVpluginScriptableNPObject  = 15,
-
-  /* Get the plugin value (as \0-terminated UTF-8 string data) for
-   * form submission if the plugin is part of a form. Use
-   * NPN_MemAlloc() to allocate memory for the string data. Introduced
-   * in Mozilla 1.8b2 (NPAPI minor version 15).
-   */
-  NPPVformValue = 16
-#ifdef XP_MACOSX
-  /* Used for negotiating drawing models */
-  , NPPVpluginDrawingModel = 1000
-#endif
-
-  // copied from newer npapi.h - skybrian
-#if defined(XP_MACOSX)
-  /* Used for negotiating event models */
-  , NPPVpluginEventModel = 1001
-  /* In the NPDrawingModelCoreAnimation drawing model, the browser asks the plug-in for a Core Animation layer. */
-  , NPPVpluginCoreAnimationLayer = 1003
-#endif
-
-} NPPVariable;
-
-/*
- * List of variable names for which NPN_GetValue is implemented by Mozilla
- */
-typedef enum {
-  NPNVxDisplay = 1,
-  NPNVxtAppContext,
-  NPNVnetscapeWindow,
-  NPNVjavascriptEnabledBool,
-  NPNVasdEnabledBool,
-  NPNVisOfflineBool,
-
-  /* 10 and over are available on Mozilla builds starting with 0.9.4 */
-  NPNVserviceManager = (10 | NP_ABI_MASK),
-  NPNVDOMElement     = (11 | NP_ABI_MASK),   /* available in Mozilla 1.2 */
-  NPNVDOMWindow      = (12 | NP_ABI_MASK),
-  NPNVToolkit        = (13 | NP_ABI_MASK),
-  NPNVSupportsXEmbedBool = 14,
-
-  /* Get the NPObject wrapper for the browser window. */
-  NPNVWindowNPObject = 15,
-
-  /* Get the NPObject wrapper for the plugins DOM element. */
-  NPNVPluginElementNPObject = 16,
-
-  NPNVSupportsWindowless = 17
-
-#ifdef XP_MACOSX
-  /* Used for negotiating drawing models */
-  , NPNVpluginDrawingModel = 1000
-#ifndef NP_NO_QUICKDRAW
-  , NPNVsupportsQuickDrawBool = 2000
-#endif
-  , NPNVsupportsCoreGraphicsBool = 2001
-#endif
-  // Copied from newer npapi - skybrian
-#if defined(XP_MACOSX)
-#ifndef NP_NO_CARBON
-  , NPNVsupportsCarbonBool = 3000 /* TRUE if the browser supports the Carbon event model */
-#endif
-  , NPNVsupportsCocoaBool = 3001 /* TRUE if the browser supports the Cocoa event model */
-#endif
-} NPNVariable;
-
-/*
- * The type of Tookkit the widgets use
- */
-typedef enum {
-  NPNVGtk12 = 1,
-  NPNVGtk2
-} NPNToolkitType;
-
-/*
- * The type of a NPWindow - it specifies the type of the data structure
- * returned in the window field.
- */
-typedef enum {
-  NPWindowTypeWindow = 1,
-  NPWindowTypeDrawable
-} NPWindowType;
-
-typedef struct _NPWindow
-{
-  void* window;  /* Platform specific window handle */
-                 /* OS/2: x - Position of bottom left corner  */
-                 /* OS/2: y - relative to visible netscape window */
-  int32 x;       /* Position of top left corner relative */
-  int32 y;       /* to a netscape page.					*/
-  uint32 width;  /* Maximum window size */
-  uint32 height;
-  NPRect clipRect; /* Clipping rectangle in port coordinates */
-                   /* Used by MAC only.			  */
-#if defined(XP_UNIX) && !defined(XP_MACOSX)
-  void * ws_info; /* Platform-dependent additonal data */
-#endif /* XP_UNIX */
-  NPWindowType type; /* Is this a window or a drawable? */
-} NPWindow;
-
-
-typedef struct _NPFullPrint
-{
-  NPBool pluginPrinted;/* Set TRUE if plugin handled fullscreen printing */
-  NPBool printOne;		 /* TRUE if plugin should print one copy to default printer */
-  void* platformPrint; /* Platform-specific printing info */
-} NPFullPrint;
-
-typedef struct _NPEmbedPrint
-{
-  NPWindow window;
-  void* platformPrint; /* Platform-specific printing info */
-} NPEmbedPrint;
-
-typedef struct _NPPrint
-{
-  uint16 mode;               /* NP_FULL or NP_EMBED */
-  union
-  {
-    NPFullPrint fullPrint;   /* if mode is NP_FULL */
-    NPEmbedPrint embedPrint; /* if mode is NP_EMBED */
-  } print;
-} NPPrint;
-
-#ifdef XP_MACOSX
-typedef EventRecord	NPEvent;
-#elif defined(XP_WIN)
-typedef struct _NPEvent
-{
-  uint16 event;
-  uint32 wParam;
-  uint32 lParam;
-} NPEvent;
-#elif defined(XP_OS2)
-typedef struct _NPEvent
-{
-  uint32 event;
-  uint32 wParam;
-  uint32 lParam;
-} NPEvent;
-#elif defined (XP_UNIX) && defined(MOZ_X11)
-typedef XEvent NPEvent;
-#else
-typedef void*			NPEvent;
-#endif /* XP_MACOSX */
-
-#ifdef XP_MACOSX
-typedef void* NPRegion;
-#ifndef NP_NO_QUICKDRAW
-typedef RgnHandle NPQDRegion;
-#endif
-typedef CGPathRef NPCGRegion;
-#elif defined(XP_WIN)
-//typedef HRGN NPRegion;
-typedef int NPRegion;
-#elif defined(XP_UNIX) && defined(MOZ_X11)
-typedef Region NPRegion;
-#else
-typedef void *NPRegion;
-#endif /* XP_MACOSX */
-
-#ifdef XP_MACOSX
-/*
- *  Mac-specific structures and definitions.
- */
-
-typedef struct NP_Port
-{
-  CGrafPtr port; /* Grafport */
-  int32 portx;   /* position inside the topmost window */
-  int32 porty;
-} NP_Port;
-
-typedef struct NP_CGContext
-{
-  CGContextRef context;
-  WindowRef window;
-} NP_CGContext;
-
-/*
- *  Non-standard event types that can be passed to HandleEvent
- */
-
-enum NPEventType {
-  NPEventType_GetFocusEvent = (osEvt + 16),
-  NPEventType_LoseFocusEvent,
-  NPEventType_AdjustCursorEvent,
-  NPEventType_MenuCommandEvent,
-  NPEventType_ClippingChangedEvent,
-  NPEventType_ScrollingBeginsEvent = 1000,
-  NPEventType_ScrollingEndsEvent
-};
-
-#ifdef OBSOLETE
-#define getFocusEvent     (osEvt + 16)
-#define loseFocusEvent    (osEvt + 17)
-#define adjustCursorEvent (osEvt + 18)
-#endif
-#endif /* XP_MACOSX */
-
-/*
- * Values for mode passed to NPP_New:
- */
-#define NP_EMBED 1
-#define NP_FULL  2
-
-/*
- * Values for stream type passed to NPP_NewStream:
- */
-#define NP_NORMAL     1
-#define NP_SEEK       2
-#define NP_ASFILE     3
-#define NP_ASFILEONLY 4
-
-#define NP_MAXREADY	(((unsigned)(~0)<<1)>>1)
-
-
-/*----------------------------------------------------------------------*/
-/*		     Error and Reason Code definitions			*/
-/*----------------------------------------------------------------------*/
-
-/*
- * Values of type NPError:
- */
-#define NPERR_BASE                         0
-#define NPERR_NO_ERROR                    (NPERR_BASE + 0)
-#define NPERR_GENERIC_ERROR               (NPERR_BASE + 1)
-#define NPERR_INVALID_INSTANCE_ERROR      (NPERR_BASE + 2)
-#define NPERR_INVALID_FUNCTABLE_ERROR     (NPERR_BASE + 3)
-#define NPERR_MODULE_LOAD_FAILED_ERROR    (NPERR_BASE + 4)
-#define NPERR_OUT_OF_MEMORY_ERROR         (NPERR_BASE + 5)
-#define NPERR_INVALID_PLUGIN_ERROR        (NPERR_BASE + 6)
-#define NPERR_INVALID_PLUGIN_DIR_ERROR    (NPERR_BASE + 7)
-#define NPERR_INCOMPATIBLE_VERSION_ERROR  (NPERR_BASE + 8)
-#define NPERR_INVALID_PARAM               (NPERR_BASE + 9)
-#define NPERR_INVALID_URL                 (NPERR_BASE + 10)
-#define NPERR_FILE_NOT_FOUND              (NPERR_BASE + 11)
-#define NPERR_NO_DATA                     (NPERR_BASE + 12)
-#define NPERR_STREAM_NOT_SEEKABLE         (NPERR_BASE + 13)
-
-/*
- * Values of type NPReason:
- */
-#define NPRES_BASE          0
-#define NPRES_DONE         (NPRES_BASE + 0)
-#define NPRES_NETWORK_ERR  (NPRES_BASE + 1)
-#define NPRES_USER_BREAK   (NPRES_BASE + 2)
-
-/*
- * Don't use these obsolete error codes any more.
- */
-#define NP_NOERR  NP_NOERR_is_obsolete_use_NPERR_NO_ERROR
-#define NP_EINVAL NP_EINVAL_is_obsolete_use_NPERR_GENERIC_ERROR
-#define NP_EABORT NP_EABORT_is_obsolete_use_NPRES_USER_BREAK
-
-/*
- * Version feature information
- */
-#define NPVERS_HAS_STREAMOUTPUT             8
-#define NPVERS_HAS_NOTIFICATION             9
-#define NPVERS_HAS_LIVECONNECT              9
-#define NPVERS_WIN16_HAS_LIVECONNECT        9
-#define NPVERS_68K_HAS_LIVECONNECT          11
-#define NPVERS_HAS_WINDOWLESS               11
-#define NPVERS_HAS_XPCONNECT_SCRIPTING      13
-#define NPVERS_HAS_NPRUNTIME_SCRIPTING      14
-#define NPVERS_HAS_FORM_VALUES              15
-#define NPVERS_HAS_POPUPS_ENABLED_STATE     16
-#define NPVERS_HAS_RESPONSE_HEADERS         17
-#define NPVERS_HAS_NPOBJECT_ENUM            18
-#define NPVERS_HAS_PLUGIN_THREAD_ASYNC_CALL 19
-
-/*----------------------------------------------------------------------*/
-/*                        Function Prototypes                           */
-/*----------------------------------------------------------------------*/
-
-#if defined(_WINDOWS) && !defined(WIN32)
-#define NP_LOADDS  _loadds
-#else
-#if defined(__OS2__)
-#define NP_LOADDS _System
-#else
-#define NP_LOADDS
-#endif
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * NPP_* functions are provided by the plugin and called by the navigator.
- */
-
-#ifdef XP_UNIX
-const char* NPP_GetMIMEDescription(void);
-#endif /* XP_UNIX */
-
-NPError NP_LOADDS NPP_Initialize(void);
-void    NP_LOADDS NPP_Shutdown(void);
-NPError NP_LOADDS NPP_New(NPMIMEType pluginType, NPP instance,
-                          uint16 mode, int16 argc, char* argn[],
-                          char* argv[], NPSavedData* saved);
-NPError NP_LOADDS NPP_Destroy(NPP instance, NPSavedData** save);
-NPError NP_LOADDS NPP_SetWindow(NPP instance, NPWindow* window);
-NPError NP_LOADDS NPP_NewStream(NPP instance, NPMIMEType type,
-                                NPStream* stream, NPBool seekable,
-                                uint16* stype);
-NPError NP_LOADDS NPP_DestroyStream(NPP instance, NPStream* stream,
-                                    NPReason reason);
-int32   NP_LOADDS NPP_WriteReady(NPP instance, NPStream* stream);
-int32   NP_LOADDS NPP_Write(NPP instance, NPStream* stream, int32 offset,
-                            int32 len, void* buffer);
-void    NP_LOADDS NPP_StreamAsFile(NPP instance, NPStream* stream,
-                                   const char* fname);
-void    NP_LOADDS NPP_Print(NPP instance, NPPrint* platformPrint);
-int16   NP_LOADDS NPP_HandleEvent(NPP instance, void* event);
-void    NP_LOADDS NPP_URLNotify(NPP instance, const char* url,
-                                NPReason reason, void* notifyData);
-#ifdef OJI
-jref    NP_LOADDS NPP_GetJavaClass(void);
-#endif
-NPError NP_LOADDS NPP_GetValue(NPP instance, NPPVariable variable, void *value);
-NPError NP_LOADDS NPP_SetValue(NPP instance, NPNVariable variable, void *value);
-
-/*
- * NPN_* functions are provided by the navigator and called by the plugin.
- */
-void    NP_LOADDS NPN_Version(int* plugin_major, int* plugin_minor,
-                              int* netscape_major, int* netscape_minor);
-NPError NP_LOADDS NPN_GetURLNotify(NPP instance, const char* url,
-                                   const char* target, void* notifyData);
-NPError NP_LOADDS NPN_GetURL(NPP instance, const char* url,
-                             const char* target);
-NPError NP_LOADDS NPN_PostURLNotify(NPP instance, const char* url,
-                                    const char* target, uint32 len,
-                                    const char* buf, NPBool file,
-                                    void* notifyData);
-NPError NP_LOADDS NPN_PostURL(NPP instance, const char* url,
-                              const char* target, uint32 len,
-                              const char* buf, NPBool file);
-NPError NP_LOADDS NPN_RequestRead(NPStream* stream, NPByteRange* rangeList);
-NPError NP_LOADDS NPN_NewStream(NPP instance, NPMIMEType type,
-                                const char* target, NPStream** stream);
-int32   NP_LOADDS NPN_Write(NPP instance, NPStream* stream, int32 len, void* buffer);
-NPError NP_LOADDS NPN_DestroyStream(NPP instance, NPStream* stream, NPReason reason);
-void    NP_LOADDS NPN_Status(NPP instance, const char* message);
-const char* NP_LOADDS	NPN_UserAgent(NPP instance);
-void*   NP_LOADDS NPN_MemAlloc(uint32 size);
-void    NP_LOADDS NPN_MemFree(void* ptr);
-uint32  NP_LOADDS NPN_MemFlush(uint32 size);
-void    NP_LOADDS NPN_ReloadPlugins(NPBool reloadPages);
-#ifdef OJI
-JRIEnv* NP_LOADDS NPN_GetJavaEnv(void);
-jref    NP_LOADDS NPN_GetJavaPeer(NPP instance);
-#endif
-NPError NP_LOADDS NPN_GetValue(NPP instance, NPNVariable variable, void *value);
-NPError NP_LOADDS NPN_SetValue(NPP instance, NPPVariable variable, void *value);
-void    NP_LOADDS NPN_InvalidateRect(NPP instance, NPRect *invalidRect);
-void    NP_LOADDS NPN_InvalidateRegion(NPP instance, NPRegion invalidRegion);
-void    NP_LOADDS NPN_ForceRedraw(NPP instance);
-void    NP_LOADDS NPN_PushPopupsEnabledState(NPP instance, NPBool enabled);
-void    NP_LOADDS NPN_PopPopupsEnabledState(NPP instance);
-void    NP_LOADDS NPN_PluginThreadAsyncCall(NPP instance,
-                                            void (*func) (void *),
-                                            void *userData);
-
-#ifdef __cplusplus
-}  /* end extern "C" */
-#endif
-
-#endif /* RC_INVOKED */
-#ifdef __OS2__
-#pragma pack()
-#endif
-
-#endif /* _NPAPI_H_ */
diff --git a/plugins/npapi/npapi/nphostapi.h b/plugins/npapi/npapi/nphostapi.h
deleted file mode 100644
index 2794dee..0000000
--- a/plugins/npapi/npapi/nphostapi.h
+++ /dev/null
@@ -1,289 +0,0 @@
-// Copyright 2006 Google Inc. All Rights Reserved.
-
-#ifndef _NPHOSTAPI_H_
-#define _NPHOSTAPI_H_
-
-#include "npapi.h"
-#include "npruntime.h"
-
-// BEGIN GOOGLE GEARS MODIFICATIONS
-
-#ifndef STDCALL
-#ifdef WIN32
-//#define STDCALL WINAPI
-#define STDCALL __stdcall
-#else
-#define STDCALL
-#endif // WIN32
-#endif // STDCALL
-
-// END GOOGLE GEARS MODIFICATIONS
-
-#ifdef __cplusplus
-extern "C" { 
-#endif
-
-//
-// NPAPI NPP Function Pointers
-//
-typedef NPError      (*NPP_NewProcPtr)(NPMIMEType pluginType,
-                         NPP instance,
-                         uint16 mode,
-                         int16 argc,
-                         char* argn[],
-                         char* argv[],
-                         NPSavedData* saved);
-typedef NPError      (*NPP_DestroyProcPtr)(NPP instance,
-                         NPSavedData** save);
-typedef NPError      (*NPP_SetWindowProcPtr)(NPP instance,
-                         NPWindow* window);
-typedef NPError      (*NPP_NewStreamProcPtr)(NPP instance,
-                         NPMIMEType type, 
-                         NPStream* stream,
-                         NPBool seekable,
-                         uint16* stype);
-typedef NPError      (*NPP_DestroyStreamProcPtr)(NPP instance,
-                         NPStream* stream,
-                         NPReason reason);
-typedef int32        (*NPP_WriteReadyProcPtr)(NPP instance,
-                         NPStream* stream);
-typedef int32        (*NPP_WriteProcPtr)(NPP instance,
-                         NPStream* stream, 
-                         int32 offset,
-                         int32 len,
-                         void* buffer);
-typedef void         (*NPP_StreamAsFileProcPtr)(NPP instance,
-                         NPStream* stream,
-                         const char* fname);
-typedef void         (*NPP_PrintProcPtr)(NPP instance,
-                         NPPrint* platformPrint);
-typedef int16        (*NPP_HandleEventProcPtr)(NPP instance,
-                         void* event);
-typedef void         (*NPP_URLNotifyProcPtr)(NPP instance,
-                         const char* url, 
-                         NPReason reason,
-                         void* notifyData);
-typedef void* JRIGlobalRef; //not using this right now
-typedef NPError      (*NPP_GetValueProcPtr)(NPP instance,
-                         NPPVariable variable,
-                         void *ret_alue);
-typedef NPError      (*NPP_SetValueProcPtr)(NPP instance,
-                         NPNVariable variable,
-                         void *ret_alue);
-
-//
-// NPAPI NPN Function Pointers
-//
-typedef NPError      (*NPN_GetURLProcPtr)(NPP instance,
-                         const char* URL,
-                         const char* window);
-typedef NPError      (*NPN_PostURLProcPtr)(NPP instance,
-                         const char* URL,
-                         const char* window,
-                         uint32 len,
-                         const char* buf,
-                         NPBool file);
-typedef NPError      (*NPN_RequestReadProcPtr)(NPStream* stream,
-                         NPByteRange* rangeList);
-typedef NPError      (*NPN_NewStreamProcPtr)(NPP instance,
-                         NPMIMEType type,
-                         const char* window,
-                         NPStream** stream);
-typedef int32        (*NPN_WriteProcPtr)(NPP instance,
-                         NPStream* stream,
-                         int32 len,
-                         void* buffer);
-typedef NPError      (*NPN_DestroyStreamProcPtr)(NPP instance,
-                         NPStream* stream,
-                         NPReason reason);
-typedef void         (*NPN_StatusProcPtr)(NPP instance,
-                         const char* message);
-typedef const char*  (*NPN_UserAgentProcPtr)(NPP instance);
-typedef void*        (*NPN_MemAllocProcPtr)(uint32 size);
-typedef void         (*NPN_MemFreeProcPtr)(void* ptr);
-typedef uint32       (*NPN_MemFlushProcPtr)(uint32 size);
-typedef void         (*NPN_ReloadPluginsProcPtr)(NPBool reloadPages);
-
-typedef void*        (*NPN_GetJavaEnvProcPtr)(void);
-typedef void*        (*NPN_GetJavaPeerProcPtr)(NPP instance);
-
-typedef NPError      (*NPN_GetURLNotifyProcPtr)(NPP instance,
-                         const char* URL,
-                         const char* window,
-                         void* notifyData);
-typedef NPError      (*NPN_PostURLNotifyProcPtr)(NPP instance,
-                         const char* URL,
-                         const char* window,
-                         uint32 len,
-                         const char* buf,
-                         NPBool file,
-                         void* notifyData);
-typedef NPError      (*NPN_GetValueProcPtr)(NPP instance,
-                         NPNVariable variable,
-                         void *ret_value);
-typedef NPError      (*NPN_SetValueProcPtr)(NPP instance,
-                         NPPVariable variable,
-                         void *value);
-typedef void         (*NPN_InvalidateRectProcPtr)(NPP instance,
-                         NPRect *rect);
-typedef void         (*NPN_InvalidateRegionProcPtr)(NPP instance,
-                         NPRegion region);
-typedef void         (*NPN_ForceRedrawProcPtr)(NPP instance);
-
-typedef void         (*NPN_ReleaseVariantValueProcPtr) (NPVariant *variant);
-
-typedef NPIdentifier (*NPN_GetStringIdentifierProcPtr) (const NPUTF8 *name);
-typedef void         (*NPN_GetStringIdentifiersProcPtr) (const NPUTF8 **names,
-                         int32_t nameCount,
-                         NPIdentifier *identifiers);
-typedef NPIdentifier (*NPN_GetIntIdentifierProcPtr) (int32_t intid);
-typedef int32_t      (*NPN_IntFromIdentifierProcPtr) (NPIdentifier identifier);
-typedef bool         (*NPN_IdentifierIsStringProcPtr) (NPIdentifier identifier);
-typedef NPUTF8 *     (*NPN_UTF8FromIdentifierProcPtr) (NPIdentifier identifier);
-
-typedef NPObject*    (*NPN_CreateObjectProcPtr) (NPP,
-                         NPClass *aClass);
-typedef NPObject*    (*NPN_RetainObjectProcPtr) (NPObject *obj);
-typedef void         (*NPN_ReleaseObjectProcPtr) (NPObject *obj);
-typedef bool         (*NPN_InvokeProcPtr) (NPP npp,
-                         NPObject *obj,
-                         NPIdentifier methodName,
-                         const NPVariant *args,
-                         unsigned argCount,
-                         NPVariant *result);
-typedef bool         (*NPN_InvokeDefaultProcPtr) (NPP npp,
-                         NPObject *obj,
-                         const NPVariant *args,
-                         unsigned argCount,
-                         NPVariant *result);
-typedef bool         (*NPN_EvaluateProcPtr) (NPP npp,
-                         NPObject *obj,
-                         NPString *script,
-                         NPVariant *result);
-typedef bool         (*NPN_GetPropertyProcPtr) (NPP npp,
-                         NPObject *obj,
-                         NPIdentifier propertyName,
-                         NPVariant *result);
-typedef bool         (*NPN_SetPropertyProcPtr) (NPP npp,
-                         NPObject *obj,
-                         NPIdentifier propertyName,
-                         const NPVariant *value);
-typedef bool         (*NPN_HasPropertyProcPtr) (NPP,
-                         NPObject *npobj,
-                         NPIdentifier propertyName);
-typedef bool         (*NPN_HasMethodProcPtr) (NPP npp,
-                         NPObject *npobj,
-                         NPIdentifier methodName);
-typedef bool         (*NPN_RemovePropertyProcPtr) (NPP npp,
-                         NPObject *obj,
-                         NPIdentifier propertyName);
-typedef void         (*NPN_SetExceptionProcPtr) (NPObject *obj,
-                         const NPUTF8 *message);
-typedef void         (*NPN_PushPopupsEnabledStateProcPtr)(NPP npp,
-                         NPBool enabled);
-typedef void         (*NPN_PopPopupsEnabledStateProcPtr)(NPP npp);
-typedef bool         (*NPN_EnumerateProcPtr)(NPP npp,
-                         NPObject *obj,
-                         NPIdentifier **identifier,
-                         uint32_t *count);
-typedef void         (*NPN_PluginThreadAsyncCallProcPtr)(NPP instance, 
-                         void (*func)(void *),
-                         void *userData);
-typedef bool         (*NPN_ConstructProcPtr)(NPP npp,
-                         NPObject* obj,
-                         const NPVariant *args,
-                         uint32_t argCount,
-                         NPVariant *result);
-
-//
-// NPAPI Function table of NPP functions (functions provided by plugin to host)
-//
-typedef struct _NPPluginFuncs {
-    unsigned short size;
-    unsigned short version;
-    NPP_NewProcPtr newp;
-    NPP_DestroyProcPtr destroy;
-    NPP_SetWindowProcPtr setwindow;
-    NPP_NewStreamProcPtr newstream;
-    NPP_DestroyStreamProcPtr destroystream;
-    NPP_StreamAsFileProcPtr asfile;
-    NPP_WriteReadyProcPtr writeready;
-    NPP_WriteProcPtr write;
-    NPP_PrintProcPtr print;
-    NPP_HandleEventProcPtr event;
-    NPP_URLNotifyProcPtr urlnotify;
-    JRIGlobalRef javaClass;
-    NPP_GetValueProcPtr getvalue;
-    NPP_SetValueProcPtr setvalue;
-} NPPluginFuncs;
-
-//
-// NPAPI Function table NPN functions (functions provided by host to plugin)
-//
-typedef struct _NPNetscapeFuncs {
-    uint16 size;
-    uint16 version;
-    NPN_GetURLProcPtr geturl;
-    NPN_PostURLProcPtr posturl;
-    NPN_RequestReadProcPtr requestread;
-    NPN_NewStreamProcPtr newstream;
-    NPN_WriteProcPtr write;
-    NPN_DestroyStreamProcPtr destroystream;
-    NPN_StatusProcPtr status;
-    NPN_UserAgentProcPtr uagent;
-    NPN_MemAllocProcPtr memalloc;
-    NPN_MemFreeProcPtr memfree;
-    NPN_MemFlushProcPtr memflush;
-    NPN_ReloadPluginsProcPtr reloadplugins;
-    NPN_GetJavaEnvProcPtr getJavaEnv;
-    NPN_GetJavaPeerProcPtr getJavaPeer;
-    NPN_GetURLNotifyProcPtr geturlnotify;
-    NPN_PostURLNotifyProcPtr posturlnotify;
-    NPN_GetValueProcPtr getvalue;
-    NPN_SetValueProcPtr setvalue;
-    NPN_InvalidateRectProcPtr invalidaterect;
-    NPN_InvalidateRegionProcPtr invalidateregion;
-    NPN_ForceRedrawProcPtr forceredraw;
-
-    NPN_GetStringIdentifierProcPtr getstringidentifier;
-    NPN_GetStringIdentifiersProcPtr getstringidentifiers;
-    NPN_GetIntIdentifierProcPtr getintidentifier;
-    NPN_IdentifierIsStringProcPtr identifierisstring;
-    NPN_UTF8FromIdentifierProcPtr utf8fromidentifier;
-    NPN_IntFromIdentifierProcPtr intfromidentifier;
-    NPN_CreateObjectProcPtr createobject;
-    NPN_RetainObjectProcPtr retainobject;
-    NPN_ReleaseObjectProcPtr releaseobject;
-    NPN_InvokeProcPtr invoke;
-    NPN_InvokeDefaultProcPtr invokeDefault;
-    NPN_EvaluateProcPtr evaluate;
-    NPN_GetPropertyProcPtr getproperty;
-    NPN_SetPropertyProcPtr setproperty;
-    NPN_RemovePropertyProcPtr removeproperty;
-    NPN_HasPropertyProcPtr hasproperty;
-    NPN_HasMethodProcPtr hasmethod;
-    NPN_ReleaseVariantValueProcPtr releasevariantvalue;
-    NPN_SetExceptionProcPtr setexception;
-    NPN_PushPopupsEnabledStateProcPtr pushpopupsenabledstate;
-    NPN_PopPopupsEnabledStateProcPtr poppopupsenabledstate;
-    // comment these out since they aren't provided by Firefox 1.5 and
-    // we don't currently use them anyway.
-//    NPN_EnumerateProcPtr enumerate;
-//    NPN_PluginThreadAsyncCallProcPtr pluginthreadasynccall;
-//    NPN_ConstructProcPtr construct;
-} NPNetscapeFuncs;
-
-//
-// NPAPI DLL entry points
-//
-
-typedef NPError (STDCALL * NP_InitializeFunc)(NPNetscapeFuncs* pFuncs);
-typedef NPError (STDCALL * NP_GetEntryPointsFunc)(NPPluginFuncs* pFuncs);
-typedef NPError (STDCALL * NP_ShutdownFunc)(void);
-
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // _NPHOSTAPI_H_
diff --git a/plugins/npapi/npapi/npruntime.h b/plugins/npapi/npapi/npruntime.h
deleted file mode 100644
index 21b8089..0000000
--- a/plugins/npapi/npapi/npruntime.h
+++ /dev/null
@@ -1,380 +0,0 @@
-/*
- * Copyright (C) 2004, Apple Computer, Inc. and The Mozilla Foundation. 
- * All rights reserved.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- * 
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the names of Apple Computer, Inc. ("Apple") or The Mozilla
- * Foundation ("Mozilla") nor the names of their contributors may be used
- * to endorse or promote products derived from this software without
- * specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY APPLE, MOZILLA AND THEIR CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE, MOZILLA OR
- * THEIR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Revision 1 (March 4, 2004):
- * Initial proposal.
- *
- * Revision 2 (March 10, 2004):
- * All calls into script were made asynchronous.  Results are
- * provided via the NPScriptResultFunctionPtr callback.
- *
- * Revision 3 (March 10, 2004):
- * Corrected comments to not refer to class retain/release FunctionPtrs.
- *
- * Revision 4 (March 11, 2004):
- * Added additional convenience NPN_SetExceptionWithUTF8().
- * Changed NPHasPropertyFunctionPtr and NPHasMethodFunctionPtr to take NPClass
- * pointers instead of NPObject pointers.
- * Added NPIsValidIdentifier().
- *
- * Revision 5 (March 17, 2004):
- * Added context parameter to result callbacks from ScriptObject functions.
- *
- * Revision 6 (March 29, 2004):
- * Renamed functions implemented by user agent to NPN_*.  Removed _ from
- * type names.
- * Renamed "JavaScript" types to "Script".
- *
- * Revision 7 (April 21, 2004):
- * NPIdentifier becomes a void*, was int32_t
- * Remove NP_IsValidIdentifier, renamed NP_IdentifierFromUTF8 to NP_GetIdentifier
- * Added NPVariant and modified functions to use this new type.
- *
- * Revision 8 (July 9, 2004):
- * Updated to joint Apple-Mozilla license.
- *
- * Revision 9 (August 12, 2004):
- * Changed NPVariantType enum values to form PVariantType_XXX
- * Added NPP arguments to NPObject functions.
- * Replaced NPVariant functions with macros.
- */
-#ifndef _NP_RUNTIME_H_
-#define _NP_RUNTIME_H_
-
-
-// BEGIN GOOGLE GEARS MODIFICATIONS
-
-//#include "gears/base/common/int_types.h"
-#include "npapi.h"
-
-typedef uint32 uint32_t;
-typedef int32 int32_t;
-#ifndef sun
-typedef uint8 uint8_t;
-typedef int8 int8_t;
-typedef uint16 uint16_t;
-typedef int16 int16_t;
-// MODIFIED(jat)
-#ifndef __LP64__ 
-typedef int64 int64_t;
-typedef uint64 uint64_t;
-#endif
-#endif
-
-// END GOOGLE GEARS MODIFICATIONS
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
-    This API is used to facilitate binding code written in C to script
-    objects.  The API in this header does not assume the presence of a
-    user agent.  That is, it can be used to bind C code to scripting
-    environments outside of the context of a user agent.
-    
-    However, the normal use of the this API is in the context of a
-    scripting environment running in a browser or other user agent.
-    In particular it is used to support the extended Netscape
-    script-ability API for plugins (NP-SAP).  NP-SAP is an extension
-    of the Netscape plugin API.  As such we have adopted the use of
-    the "NP" prefix for this API.
-
-    The following NP{N|P}Variables were added to the Netscape plugin
-    API (in npapi.h):
-
-    NPNVWindowNPObject
-    NPNVPluginElementNPObject
-    NPPVpluginScriptableNPObject
-
-    These variables are exposed through NPN_GetValue() and
-    NPP_GetValue() (respectively) and are used to establish the
-    initial binding between the user agent and native code.  The DOM
-    objects in the user agent can be examined and manipulated using
-    the NPN_ functions that operate on NPObjects described in this
-    header.
-
-    To the extent possible the assumptions about the scripting
-    language used by the scripting environment have been minimized.
-*/
-
-
-/*
-    Objects (non-primitive data) passed between 'C' and script is
-    always wrapped in an NPObject.  The 'interface' of an NPObject is
-    described by an NPClass.
-*/
-typedef struct NPObject NPObject;
-typedef struct NPClass NPClass;
-
-typedef char NPUTF8;
-typedef struct _NPString {
-    const NPUTF8 *UTF8Characters;
-    uint32_t UTF8Length;
-} NPString;
-  
-typedef enum {
-    NPVariantType_Void,
-    NPVariantType_Null,
-    NPVariantType_Bool,
-    NPVariantType_Int32,
-    NPVariantType_Double,
-    NPVariantType_String,
-    NPVariantType_Object
-} NPVariantType;
-
-typedef struct _NPVariant {
-    NPVariantType type;
-    union {
-        bool boolValue;
-        int32_t intValue;
-        double doubleValue;
-        NPString stringValue;
-        NPObject *objectValue;
-    } value;
-} NPVariant;
-
-/*
-    NPN_ReleaseVariantValue is called on all 'out' parameters references.
-    Specifically it is called on variants that are resultant out parameters
-    in NPGetPropertyFunctionPtr and NPInvokeFunctionPtr.  Resultant variants
-    from these two functions should be initialized using the
-    NPN_InitializeVariantXXX() functions.
-    
-    After calling NPReleaseVariantValue, the type of the variant will
-    be set to NPVariantUndefinedType.
-*/
-void NPN_ReleaseVariantValue (NPVariant *variant);
-
-#define NPVARIANT_IS_VOID(_v)    ((_v).type == NPVariantType_Void)
-#define NPVARIANT_IS_NULL(_v)    ((_v).type == NPVariantType_Null)
-#define NPVARIANT_IS_BOOLEAN(_v) ((_v).type == NPVariantType_Bool)
-#define NPVARIANT_IS_INT32(_v)   ((_v).type == NPVariantType_Int32)
-#define NPVARIANT_IS_DOUBLE(_v)  ((_v).type == NPVariantType_Double)
-#define NPVARIANT_IS_STRING(_v)  ((_v).type == NPVariantType_String)
-#define NPVARIANT_IS_OBJECT(_v)  ((_v).type == NPVariantType_Object)
-
-#define NPVARIANT_TO_BOOLEAN(_v) ((_v).value.boolValue)
-#define NPVARIANT_TO_INT32(_v)   ((_v).value.intValue)
-#define NPVARIANT_TO_DOUBLE(_v)  ((_v).value.doubleValue)
-#define NPVARIANT_TO_STRING(_v)  ((_v).value.stringValue)
-#define NPVARIANT_TO_OBJECT(_v)  ((_v).value.objectValue)
-
-#define NP_BEGIN_MACRO  do {
-#define NP_END_MACRO    } while (0)
-
-#define VOID_TO_NPVARIANT(_v)                NP_BEGIN_MACRO (_v).type = NPVariantType_Void; (_v).value.objectValue = NULL; NP_END_MACRO
-#define NULL_TO_NPVARIANT(_v)                NP_BEGIN_MACRO (_v).type = NPVariantType_Null; (_v).value.objectValue = NULL; NP_END_MACRO
-#define BOOLEAN_TO_NPVARIANT(_val, _v)       NP_BEGIN_MACRO (_v).type = NPVariantType_Bool; (_v).value.boolValue = !!(_val); NP_END_MACRO
-#define INT32_TO_NPVARIANT(_val, _v)         NP_BEGIN_MACRO (_v).type = NPVariantType_Int32; (_v).value.intValue = _val; NP_END_MACRO
-#define DOUBLE_TO_NPVARIANT(_val, _v)        NP_BEGIN_MACRO (_v).type = NPVariantType_Double; (_v).value.doubleValue = _val; NP_END_MACRO
-#define STRINGZ_TO_NPVARIANT(_val, _v)       NP_BEGIN_MACRO (_v).type = NPVariantType_String; NPString _str = { _val, strlen(_val) }; (_v).value.stringValue = _str; NP_END_MACRO
-#define STRINGN_TO_NPVARIANT(_val, _len, _v) NP_BEGIN_MACRO (_v).type = NPVariantType_String; NPString _str = { _val, _len }; (_v).value.stringValue = _str; NP_END_MACRO
-#define OBJECT_TO_NPVARIANT(_val, _v)        NP_BEGIN_MACRO (_v).type = NPVariantType_Object; (_v).value.objectValue = _val; NP_END_MACRO
-
-/*
-        Type mappings (JavaScript types have been used for illustration
-    purposes):
-
-        JavaScript       to             C (NPVariant with type:)
-        undefined                       NPVariantType_Void
-        null                            NPVariantType_Null
-        Boolean                         NPVariantType_Bool
-        Number                          NPVariantType_Double or NPVariantType_Int32
-        String                          NPVariantType_String
-        Object                          NPVariantType_Object
-
-        C (NPVariant with type:)   to   JavaScript
-        NPVariantType_Void              undefined
-        NPVariantType_Null              null
-        NPVariantType_Bool              Boolean 
-        NPVariantType_Int32             Number
-        NPVariantType_Double            Number
-        NPVariantType_String            String
-        NPVariantType_Object            Object
-*/
-
-typedef void *NPIdentifier;
-
-/*
-    NPObjects have methods and properties.  Methods and properties are
-    identified with NPIdentifiers.  These identifiers may be reflected
-    in script.  NPIdentifiers can be either strings or integers, IOW,
-    methods and properties can be identified by either strings or
-    integers (i.e. foo["bar"] vs foo[1]). NPIdentifiers can be
-    compared using ==.  In case of any errors, the requested
-    NPIdentifier(s) will be NULL.
-*/
-NPIdentifier NPN_GetStringIdentifier(const NPUTF8 *name);
-void NPN_GetStringIdentifiers(const NPUTF8 **names, int32_t nameCount, NPIdentifier *identifiers);
-NPIdentifier NPN_GetIntIdentifier(int32_t intid);
-bool NPN_IdentifierIsString(NPIdentifier identifier);
-
-/*
-    The NPUTF8 returned from NPN_UTF8FromIdentifier SHOULD be freed.
-*/
-NPUTF8 *NPN_UTF8FromIdentifier(NPIdentifier identifier);
-
-/*
-    Get the integer represented by identifier. If identifier is not an
-    integer identifier, the behaviour is undefined.
-*/
-int32_t NPN_IntFromIdentifier(NPIdentifier identifier);
-
-/*
-    NPObject behavior is implemented using the following set of
-    callback functions.
-
-    The NPVariant *result argument of these functions (where
-    applicable) should be released using NPN_ReleaseVariantValue().
-*/
-typedef NPObject *(*NPAllocateFunctionPtr)(NPP npp, NPClass *aClass);
-typedef void (*NPDeallocateFunctionPtr)(NPObject *obj);
-typedef void (*NPInvalidateFunctionPtr)(NPObject *obj);
-typedef bool (*NPHasMethodFunctionPtr)(NPObject *obj, NPIdentifier name);
-typedef bool (*NPInvokeFunctionPtr)(NPObject *obj, NPIdentifier name, const NPVariant *args, uint32_t argCount, NPVariant *result);
-typedef bool (*NPInvokeDefaultFunctionPtr)(NPObject *npobj, const NPVariant *args, uint32_t argCount, NPVariant *result);
-typedef bool (*NPHasPropertyFunctionPtr)(NPObject *obj, NPIdentifier name);
-typedef bool (*NPGetPropertyFunctionPtr)(NPObject *obj, NPIdentifier name, NPVariant *result);
-typedef bool (*NPSetPropertyFunctionPtr)(NPObject *obj, NPIdentifier name, const NPVariant *value);
-typedef bool (*NPRemovePropertyFunctionPtr)(NPObject *npobj, NPIdentifier name);
-typedef bool (*NPEnumerationFunctionPtr)(NPObject *npobj, NPIdentifier **value, uint32_t *count);
-
-/*
-    NPObjects returned by create have a reference count of one.  It is the caller's responsibility
-    to release the returned object.
-
-    NPInvokeFunctionPtr function may return false to indicate a the method could not be invoked.
-    
-    NPGetPropertyFunctionPtr and NPSetPropertyFunctionPtr may return false to indicate a property doesn't
-    exist.
-    
-    NPInvalidateFunctionPtr is called by the scripting environment when the native code is
-    shutdown.  Any attempt to message a NPObject instance after the invalidate
-    callback has been called will result in undefined behavior, even if the
-    native code is still retaining those NPObject instances.
-    (The runtime will typically return immediately, with 0 or NULL, from an attempt to
-    dispatch to a NPObject, but this behavior should not be depended upon.)
-    
-    The NPEnumerationFunctionPtr function may pass an array of                  
-    NPIdentifiers back to the caller. The callee allocs the memory of           
-    the array using NPN_MemAlloc(), and it's the caller's responsibility        
-    to release it using NPN_MemFree().           
-*/
-struct NPClass
-{
-    uint32_t structVersion;
-    NPAllocateFunctionPtr allocate;
-    NPDeallocateFunctionPtr deallocate;
-    NPInvalidateFunctionPtr invalidate;
-    NPHasMethodFunctionPtr hasMethod;
-    NPInvokeFunctionPtr invoke;
-    NPInvokeDefaultFunctionPtr invokeDefault;
-    NPHasPropertyFunctionPtr hasProperty;
-    NPGetPropertyFunctionPtr getProperty;
-    NPSetPropertyFunctionPtr setProperty;
-    NPRemovePropertyFunctionPtr removeProperty;
-    NPEnumerationFunctionPtr enumerate;
-};
-
-#define NP_CLASS_STRUCT_VERSION      2
-#define NP_CLASS_STRUCT_VERSION_ENUM 2                           
-#define NP_CLASS_STRUCT_VERSION_HAS_ENUM(npclass)   \
-    ((npclass)->structVersion >= NP_CLASS_STRUCT_VERSION_ENUM)
-
-struct NPObject {
-    NPClass *_class;
-    uint32_t referenceCount;
-    // Additional space may be allocated here by types of NPObjects
-};
-
-/*
-    If the class has an allocate function, NPN_CreateObject invokes that function,
-    otherwise a NPObject is allocated and returned.  If a class has an allocate
-    function it is the responsibility of that implementation to set the initial retain
-    count to 1.
-*/
-NPObject *NPN_CreateObject(NPP npp, NPClass *aClass);
-
-/*
-    Increment the NPObject's reference count.
-*/
-NPObject *NPN_RetainObject (NPObject *obj);
-
-/*
-    Decremented the NPObject's reference count.  If the reference
-    count goes to zero, the class's destroy function is invoke if
-    specified, otherwise the object is freed directly.
-*/
-void NPN_ReleaseObject (NPObject *obj);
-
-/*
-    Functions to access script objects represented by NPObject.
-
-    Calls to script objects are synchronous.  If a function returns a
-    value, it will be supplied via the result NPVariant
-    argument. Successful calls will return true, false will be
-    returned in case of an error.
-    
-    Calls made from plugin code to script must be made from the thread
-    on which the plugin was initialized.
-*/
-bool NPN_Invoke(NPP npp, NPObject *npobj, NPIdentifier methodName, const NPVariant *args, uint32_t argCount, NPVariant *result);
-bool NPN_InvokeDefault(NPP npp, NPObject *npobj, const NPVariant *args, uint32_t argCount, NPVariant *result);
-bool NPN_Evaluate(NPP npp, NPObject *npobj, NPString *script, NPVariant *result);
-bool NPN_GetProperty(NPP npp, NPObject *npobj, NPIdentifier propertyName, NPVariant *result);
-bool NPN_SetProperty(NPP npp, NPObject *npobj, NPIdentifier propertyName, const NPVariant *value);
-bool NPN_RemoveProperty(NPP npp, NPObject *npobj, NPIdentifier propertyName);
-bool NPN_HasProperty(NPP npp, NPObject *npobj, NPIdentifier propertyName);
-bool NPN_HasMethod(NPP npp, NPObject *npobj, NPIdentifier methodName);
-bool NPN_Enumerate(NPP npp, NPObject *npobj, NPIdentifier **identifier, uint32_t *count);
-
-// BEGIN GOOGLE MODIFICATIONS
-
-void* NPP_GetJavaClass(void);
-void* NPN_GetJavaEnv(void);
-void* NPN_GetJavaPeer(NPP instance);
-void NPN_PluginThreadAsyncCall(NPP id, void (*func)(void *), void *userData);
-bool NPN_Construct(NPP npp, NPObject* obj, const NPVariant *args, uint32_t argCount, NPVariant *result);
-
-// END GOOGLE MODIFICATIONS
-
-/*
-    NPN_SetException may be called to trigger a script exception upon return
-    from entry points into NPObjects.
-*/
-void NPN_SetException (NPObject *obj, const NPUTF8 *message);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/plugins/npapi/npn_bindings.cpp b/plugins/npapi/npn_bindings.cpp
deleted file mode 100644
index b47b7af..0000000
--- a/plugins/npapi/npn_bindings.cpp
+++ /dev/null
@@ -1,381 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: NPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Netscape Public License
- * Version 1.1 (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.mozilla.org/NPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is mozilla.org code.
- *
- * The Initial Developer of the Original Code is 
- * Netscape Communications Corporation.
- * Portions created by the Initial Developer are Copyright (C) 1998
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or 
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the NPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the NPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-////////////////////////////////////////////////////////////
-//
-// Implementation of Netscape entry points (NPN_*), which are the functions
-// the plugin calls to talk to the browser.
-//
-
-#include "Debug.h"
-
-// Sun's cstring doesn't declare memcpy
-#include <string.h>
-//#include <cstring>
-
-#include "mozincludes.h"
-//#include "gears/base/common/base_class.h"
-//#include "gears/base/common/thread_locals.h"
-//#include "gears/base/npapi/module.h"
-
-#ifndef HIBYTE
-#define HIBYTE(x) ((((uint32)(x)) & 0xff00) >> 8)
-#endif
-
-#ifndef LOBYTE
-#define LOBYTE(W) ((W) & 0xFF)
-#endif
-
-static NPNetscapeFuncs npn_funcs;
-
-void SetNPNFuncs(NPNetscapeFuncs* npnFuncs) {
-  // Since we can't rely on the pointer remaining valid, we need to
-  // copy the function pointers.
-  int size = sizeof(NPNetscapeFuncs);
-  if (size > npnFuncs->size) {
-    Debug::log(Debug::Warning) << "*** Warning: NPNetscapeFuncs supplied by "
-        "browser is smaller than expected: " << npnFuncs->size << " vs " << size
-        << Debug::flush;
-    size = npnFuncs->size;
-  }
-  memcpy(&npn_funcs, npnFuncs, size);
-}
-
-const NPNetscapeFuncs &GetNPNFuncs() {
-  return npn_funcs;
-}
-
-void NPN_Version(int* plugin_major, int* plugin_minor,
-                 int* netscape_major, int* netscape_minor)
-{
-  const NPNetscapeFuncs &funcs = GetNPNFuncs();
-  *plugin_major   = NP_VERSION_MAJOR;
-  *plugin_minor   = NP_VERSION_MINOR;
-  *netscape_major = HIBYTE(funcs.version);
-  *netscape_minor = LOBYTE(funcs.version);
-}
-
-NPError NPN_GetURLNotify(NPP instance, const char *url, const char *target,
-                         void* notifyData)
-{
-  const NPNetscapeFuncs &funcs = GetNPNFuncs();
-  int navMinorVers = funcs.version & 0xFF;
-  NPError rv = NPERR_NO_ERROR;
-
-  if (navMinorVers >= NPVERS_HAS_NOTIFICATION)
-    rv = funcs.geturlnotify(instance, url, target, notifyData);
-  else
-    rv = NPERR_INCOMPATIBLE_VERSION_ERROR;
-
-  return rv;
-}
-
-NPError NPN_GetURL(NPP instance, const char *url, const char *target)
-{
-  NPError rv = GetNPNFuncs().geturl(instance, url, target);
-  return rv;
-}
-
-NPError NPN_PostURLNotify(NPP instance, const char* url, const char* window,
-                          uint32 len, const char* buf, NPBool file,
-                          void* notifyData)
-{
-  const NPNetscapeFuncs &funcs = GetNPNFuncs();
-  int navMinorVers = funcs.version & 0xFF;
-  NPError rv = NPERR_NO_ERROR;
-
-  if (navMinorVers >= NPVERS_HAS_NOTIFICATION) {
-    rv = funcs.posturlnotify(instance, url, window, len, buf, file, notifyData);
-  } else {
-    rv = NPERR_INCOMPATIBLE_VERSION_ERROR;
-  }
-
-  return rv;
-}
-
-NPError NPN_PostURL(NPP instance, const char* url, const char* window,
-                    uint32 len, const char* buf, NPBool file)
-{
-  NPError rv = GetNPNFuncs().posturl(instance, url, window, len, buf, file);
-  return rv;
-} 
-
-NPError NPN_RequestRead(NPStream* stream, NPByteRange* rangeList)
-{
-  NPError rv = GetNPNFuncs().requestread(stream, rangeList);
-  return rv;
-}
-
-NPError NPN_NewStream(NPP instance, NPMIMEType type, const char* target,
-                      NPStream** stream)
-{
-  const NPNetscapeFuncs &funcs = GetNPNFuncs();
-  int navMinorVersion = funcs.version & 0xFF;
-
-  NPError rv = NPERR_NO_ERROR;
-
-  if ( navMinorVersion >= NPVERS_HAS_STREAMOUTPUT )
-    rv = funcs.newstream(instance, type, target, stream);
-  else
-    rv = NPERR_INCOMPATIBLE_VERSION_ERROR;
-
-  return rv;
-}
-
-int32 NPN_Write(NPP instance, NPStream *stream, int32 len, void *buffer)
-{
-  const NPNetscapeFuncs &funcs = GetNPNFuncs();
-  int navMinorVersion = funcs.version & 0xFF;
-  int32 rv = 0;
-
-  if ( navMinorVersion >= NPVERS_HAS_STREAMOUTPUT )
-    rv = funcs.write(instance, stream, len, buffer);
-  else
-    rv = -1;
-
-  return rv;
-}
-
-NPError NPN_DestroyStream(NPP instance, NPStream* stream, NPError reason)
-{
-  const NPNetscapeFuncs &funcs = GetNPNFuncs();
-  int navMinorVersion = funcs.version & 0xFF;
-  NPError rv = NPERR_NO_ERROR;
-
-  if ( navMinorVersion >= NPVERS_HAS_STREAMOUTPUT )
-    rv = funcs.destroystream(instance, stream, reason);
-  else
-    rv = NPERR_INCOMPATIBLE_VERSION_ERROR;
-
-  return rv;
-}
-
-void NPN_Status(NPP instance, const char *message)
-{
-  GetNPNFuncs().status(instance, message);
-}
-
-const char* NPN_UserAgent(NPP instance)
-{
-  const char * rv = NULL;
-  rv = GetNPNFuncs().uagent(instance);
-  return rv;
-}
-
-void* NPN_MemAlloc(uint32 size)
-{
-  void * rv = NULL;
-  rv = GetNPNFuncs().memalloc(size);
-  return rv;
-}
-
-void NPN_MemFree(void* ptr)
-{
-  GetNPNFuncs().memfree(ptr);
-}
-
-uint32 NPN_MemFlush(uint32 size)
-{
-  uint32 rv = GetNPNFuncs().memflush(size);
-  return rv;
-}
-
-void NPN_ReloadPlugins(NPBool reloadPages)
-{
-  GetNPNFuncs().reloadplugins(reloadPages);
-}
-
-NPError NPN_GetValue(NPP instance, NPNVariable variable, void *value)
-{
-  NPError rv = GetNPNFuncs().getvalue(instance, variable, value);
-  return rv;
-}
-
-NPError NPN_SetValue(NPP instance, NPPVariable variable, void *value)
-{
-  NPError rv = GetNPNFuncs().setvalue(instance, variable, value);
-  return rv;
-}
-
-void NPN_InvalidateRect(NPP instance, NPRect *invalidRect)
-{
-  GetNPNFuncs().invalidaterect(instance, invalidRect);
-}
-
-void NPN_InvalidateRegion(NPP instance, NPRegion invalidRegion)
-{
-  GetNPNFuncs().invalidateregion(instance, invalidRegion);
-}
-
-void NPN_ForceRedraw(NPP instance)
-{
-  GetNPNFuncs().forceredraw(instance);
-}
-
-NPIdentifier NPN_GetStringIdentifier(const NPUTF8 *name)
-{
-  return GetNPNFuncs().getstringidentifier(name);
-}
-
-void NPN_GetStringIdentifiers(const NPUTF8 **names, int32_t nameCount,
-                              NPIdentifier *identifiers)
-{
-  return GetNPNFuncs().getstringidentifiers(names, nameCount, identifiers);
-}
-
-NPIdentifier NPN_GetIntIdentifier(int32_t intid)
-{
-  return GetNPNFuncs().getintidentifier(intid);
-}
-
-bool NPN_IdentifierIsString(NPIdentifier identifier)
-{
-  return GetNPNFuncs().identifierisstring(identifier);
-}
-
-NPUTF8 *NPN_UTF8FromIdentifier(NPIdentifier identifier)
-{
-  return GetNPNFuncs().utf8fromidentifier(identifier);
-}
-
-// On WebKit under OSX, the intfromidentifier field of the structure isn't
-// filled in (see WebNetscapePluginPackage.m#526 in WebKit source tree).
-// At this time this function isn't called from our code, so for now comment it
-// out.
-//
-int32_t NPN_IntFromIdentifier(NPIdentifier identifier)
-{
-  return GetNPNFuncs().intfromidentifier(identifier);
-}
-
-NPObject *NPN_CreateObject(NPP npp, NPClass *aClass)
-{
-  return GetNPNFuncs().createobject(npp, aClass);
-}
-
-NPObject *NPN_RetainObject(NPObject *obj)
-{
-  return GetNPNFuncs().retainobject(obj);
-}
-
-void NPN_ReleaseObject(NPObject *obj)
-{
-  return GetNPNFuncs().releaseobject(obj);
-}
-
-bool NPN_Invoke(NPP npp, NPObject* obj, NPIdentifier methodName,
-                const NPVariant *args, uint32_t argCount, NPVariant *result)
-{
-  return GetNPNFuncs().invoke(npp, obj, methodName, args, argCount, result);
-}
-
-bool NPN_InvokeDefault(NPP npp, NPObject* obj, const NPVariant *args,
-                       uint32_t argCount, NPVariant *result)
-{
-  return GetNPNFuncs().invokeDefault(npp, obj, args, argCount, result);
-}
-
-bool NPN_Evaluate(NPP npp, NPObject* obj, NPString *script,
-                  NPVariant *result)
-{
-  return GetNPNFuncs().evaluate(npp, obj, script, result);
-}
-
-bool NPN_GetProperty(NPP npp, NPObject* obj, NPIdentifier propertyName,
-                     NPVariant *result)
-{
-// Workaround for bug in WebKit: GetProperty() fails when attempting to
-// read a null value from an array, however it fills in the variant structure
-// correctly.
-// The workaround is to chek if GetProprety() touches the variant structure,
-// if so, we assume it succeeded.
-#ifdef BROWSER_WEBKIT
-  result->type = static_cast<NPVariantType>(-1);
-  
-  bool ret = GetNPNFuncs().getproperty(npp, obj, propertyName, result);
-  
-  if (result->type != -1 && !ret) {
-    ret = true;
-  }
-  return ret;
-#else
-  return GetNPNFuncs().getproperty(npp, obj, propertyName, result);
-#endif
-}
-
-bool NPN_SetProperty(NPP npp, NPObject* obj, NPIdentifier propertyName,
-                     const NPVariant *value)
-{
-  return GetNPNFuncs().setproperty(npp, obj, propertyName, value);
-}
-
-bool NPN_RemoveProperty(NPP npp, NPObject* obj, NPIdentifier propertyName)
-{
-  return GetNPNFuncs().removeproperty(npp, obj, propertyName);
-}
-
-#ifdef BROWSER_WEBKIT
-// This field of NPN functions isn't filled in by WebKit on OSX.
-#else
-bool NPN_HasProperty(NPP npp, NPObject* obj, NPIdentifier propertyName)
-{
-  return GetNPNFuncs().hasproperty(npp, obj, propertyName);
-}
-#endif
-
-#ifdef BROWSER_WEBKIT
-// This field of NPN functions isn't filled in by WebKit on OSX.
-#else
-bool NPN_HasMethod(NPP npp, NPObject* obj, NPIdentifier methodName)
-{
-  return GetNPNFuncs().hasmethod(npp, obj, methodName);
-}
-#endif
-
-void NPN_ReleaseVariantValue(NPVariant *variant)
-{
-  GetNPNFuncs().releasevariantvalue(variant);
-}
-
-#ifdef BROWSER_WEBKIT
-// This function is buggy in WebKit, see 
-// http://bugs.webkit.org/show_bug.cgi?id=16829
-#else
-void NPN_SetException(NPObject* obj, const NPUTF8 *message)
-{
-  GetNPNFuncs().setexception(obj, message);
-}
-#endif
diff --git a/plugins/npapi/prebuilt/gwt-dev-plugin.zip b/plugins/npapi/prebuilt/gwt-dev-plugin.zip
deleted file mode 100644
index fc2e6ec..0000000
--- a/plugins/npapi/prebuilt/gwt-dev-plugin.zip
+++ /dev/null
Binary files differ
diff --git a/plugins/npapi/prebuilt/gwt-dev-plugin/Darwin-gcc3/gwtDev.plugin/Contents/Info.plist b/plugins/npapi/prebuilt/gwt-dev-plugin/Darwin-gcc3/gwtDev.plugin/Contents/Info.plist
deleted file mode 100644
index 4df9097..0000000
--- a/plugins/npapi/prebuilt/gwt-dev-plugin/Darwin-gcc3/gwtDev.plugin/Contents/Info.plist
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-  <dict>
-    <key>CFBundleDevelopmentRegion</key>
-    <string>English</string>
-    <key>CFBundleExecutable</key>
-    <string>libGwtDevPlugin.dylib</string>
-    <key>CFBundleGetInfoString</key>
-    <string>Copyright 2010 Google, Inc.</string>
-    <key>CFBundleIdentifier</key>
-    <string>com.google.gwt.devmode-npapi-plugin</string>
-    <key>CFBundleInfoDictionaryVersion</key>
-    <string>6.0</string>
-    <key>CFBundleName</key>
-    <string>GWT Devmode NPAPI Plugin</string>
-    <key>CFBundlePackageType</key>
-    <string>BRPL</string>
-    <key>CFBundleShortVersionString</key>
-    <string>1.0</string>
-    <key>CFBundleSignature</key>
-    <string>????</string>
-    <key>CFBundleVersion</key>
-    <string>1.0</string>
-    <key>CFPlugInDynamicRegisterFunction</key>
-    <string></string>
-    <key>CFPlugInDynamicRegistration</key>
-    <string>NO</string>
-    <key>WebPluginDescription</key>
-    <string>Plugin to allow debugging of GWT applications in DevMode</string>
-    <key>WebPluginMIMETypes</key>
-    <dict>
-      <key>application/x-gwt-hosted-mode</key>
-      <dict>
-        <key>WebPluginTypeDescription</key>
-        <string>GWT DevMode</string>
-      </dict>
-    </dict>
-    <key>WebPluginName</key>
-    <string>GWT DevMode Plugin</string>
-  </dict>
-</plist>
-
diff --git a/plugins/npapi/prebuilt/gwt-dev-plugin/Darwin-gcc3/gwtDev.plugin/Contents/MacOS/libGwtDevPlugin.dylib b/plugins/npapi/prebuilt/gwt-dev-plugin/Darwin-gcc3/gwtDev.plugin/Contents/MacOS/libGwtDevPlugin.dylib
deleted file mode 100755
index 0ce4079..0000000
--- a/plugins/npapi/prebuilt/gwt-dev-plugin/Darwin-gcc3/gwtDev.plugin/Contents/MacOS/libGwtDevPlugin.dylib
+++ /dev/null
Binary files differ
diff --git a/plugins/npapi/prebuilt/gwt-dev-plugin/LICENSE.txt b/plugins/npapi/prebuilt/gwt-dev-plugin/LICENSE.txt
deleted file mode 100644
index 326366d..0000000
--- a/plugins/npapi/prebuilt/gwt-dev-plugin/LICENSE.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-Copyright 2008 Google Inc.
-
-Licensed 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.
diff --git a/plugins/npapi/prebuilt/gwt-dev-plugin/Linux_x86-gcc3/libGwtDevPlugin.so b/plugins/npapi/prebuilt/gwt-dev-plugin/Linux_x86-gcc3/libGwtDevPlugin.so
deleted file mode 100755
index 9c39145..0000000
--- a/plugins/npapi/prebuilt/gwt-dev-plugin/Linux_x86-gcc3/libGwtDevPlugin.so
+++ /dev/null
Binary files differ
diff --git a/plugins/npapi/prebuilt/gwt-dev-plugin/Linux_x86_64-gcc3/libGwtDevPlugin.so b/plugins/npapi/prebuilt/gwt-dev-plugin/Linux_x86_64-gcc3/libGwtDevPlugin.so
deleted file mode 100755
index 4ec8b6d..0000000
--- a/plugins/npapi/prebuilt/gwt-dev-plugin/Linux_x86_64-gcc3/libGwtDevPlugin.so
+++ /dev/null
Binary files differ
diff --git a/plugins/npapi/prebuilt/gwt-dev-plugin/WINNT_x86-msvc/npGwtDevPlugin.dll b/plugins/npapi/prebuilt/gwt-dev-plugin/WINNT_x86-msvc/npGwtDevPlugin.dll
deleted file mode 100755
index 71312af..0000000
--- a/plugins/npapi/prebuilt/gwt-dev-plugin/WINNT_x86-msvc/npGwtDevPlugin.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/npapi/prebuilt/gwt-dev-plugin/background.html b/plugins/npapi/prebuilt/gwt-dev-plugin/background.html
deleted file mode 100644
index 4f14a8c..0000000
--- a/plugins/npapi/prebuilt/gwt-dev-plugin/background.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-<head>
-</head>
-
-<embed id="pluginEmbed" type="application/x-gwt-hosted-mode" width="10"
-height="10">
-</embed>
-
-<script src="background.js"></script>
-</html>
diff --git a/plugins/npapi/prebuilt/gwt-dev-plugin/background.js b/plugins/npapi/prebuilt/gwt-dev-plugin/background.js
deleted file mode 100644
index c9908a3..0000000
--- a/plugins/npapi/prebuilt/gwt-dev-plugin/background.js
+++ /dev/null
@@ -1,81 +0,0 @@
-var plugin = document.getElementById('pluginEmbed');
-var disabledIcon = 'gwt32-gray.png';
-var enabledIcon = 'gwt32.png';
-
-
-function getHostFromUrl(url) {
-  var hostname = '';
-  var idx = url.indexOf('://');
-  if (idx >= 0) {
-    idx += 3;
-    hostname = url.substring(idx);
-  }
-  idx = hostname.indexOf('/');
-  if (idx >= 0) {
-    hostname = hostname.substring(0,idx);
-  }
-  idx = hostname.indexOf('@');
-  if( idx >= 0)
-  {
-    hostname = hostname.substring(idx+1);
-  }
-  idx = hostname.indexOf(':');
-  if (idx >= 0) {
-    hostname = hostname.substring(0,idx);
-  }
-  return hostname;
-}
-
-function getCodeServerFromUrl(url) {
-  var idx = url.indexOf('?');
-  if (idx < 0) {
-    return '';
-  }
-  url = url.substring(idx+1);
-  idx = url.indexOf('gwt.codesvr=');
-  if( idx < 0 ) {
-    return '';
-  }
-  url = url.substring(idx+12);
-  var colon = url.indexOf(':');
-  var amp   = url.indexOf('&');
-  if( amp < 0 || colon < amp ) {
-    amp = colon;
-  }
-  return amp < 0 ? url : url.substring(0,amp);
-}
-
-function devModeTabListener(tabId, changeInfo, tab) {
-  var search = tab.url.slice(tab.url.indexOf('?'));
-  if (search.indexOf('gwt.codesvr=') >= 0 || search.indexOf('gwt.hosted=') >= 0) {
-    var permission = plugin.getHostPermission(tab.url);
-    var host = getHostFromUrl(tab.url);
-    var code = getCodeServerFromUrl(tab.url);
-    var popup = 'page_action.html';
-    var icon = null;
-    console.log("got permission " + permission + " for host " + host + '/ code ' + code);
-
-    var idObject = {};
-    plugin.testJsIdentity( idObject, idObject );
-
-    if (permission == 'include') {
-      icon = enabledIcon;
-    } else if (permission == 'exclude') {
-      icon = disabledIcon;
-    } else if (permission == 'unknown') {
-      icon = disabledIcon;
-    }
-    popup += "?permission=" + permission + "&host=" + host + "&codeserver=" + code;
-    chrome.pageAction.setIcon({'tabId' : tabId, 'path' : icon});
-    chrome.pageAction.setPopup({'tabId' : tabId, 'popup' : popup});
-    chrome.pageAction.show(tabId);
-
-    var hostEntries = window.localStorage.getItem('GWT_DEV_HOSTENTRY') || [];
-    console.log("loading hostentries: " + hostEntries);
-    plugin.loadHostEntries.apply(plugin, JSON.parse(hostEntries));
-  } else {
-    chrome.pageAction.hide(tabId);
-  }
-};
-
-chrome.tabs.onUpdated.addListener(devModeTabListener);
diff --git a/plugins/npapi/prebuilt/gwt-dev-plugin/gwt128.png b/plugins/npapi/prebuilt/gwt-dev-plugin/gwt128.png
deleted file mode 100644
index 57e8e01..0000000
--- a/plugins/npapi/prebuilt/gwt-dev-plugin/gwt128.png
+++ /dev/null
Binary files differ
diff --git a/plugins/npapi/prebuilt/gwt-dev-plugin/gwt16.png b/plugins/npapi/prebuilt/gwt-dev-plugin/gwt16.png
deleted file mode 100644
index f26096e..0000000
--- a/plugins/npapi/prebuilt/gwt-dev-plugin/gwt16.png
+++ /dev/null
Binary files differ
diff --git a/plugins/npapi/prebuilt/gwt-dev-plugin/gwt32-gray.png b/plugins/npapi/prebuilt/gwt-dev-plugin/gwt32-gray.png
deleted file mode 100644
index d02689e..0000000
--- a/plugins/npapi/prebuilt/gwt-dev-plugin/gwt32-gray.png
+++ /dev/null
Binary files differ
diff --git a/plugins/npapi/prebuilt/gwt-dev-plugin/gwt32.png b/plugins/npapi/prebuilt/gwt-dev-plugin/gwt32.png
deleted file mode 100644
index 7ba8270..0000000
--- a/plugins/npapi/prebuilt/gwt-dev-plugin/gwt32.png
+++ /dev/null
Binary files differ
diff --git a/plugins/npapi/prebuilt/gwt-dev-plugin/gwt48.png b/plugins/npapi/prebuilt/gwt-dev-plugin/gwt48.png
deleted file mode 100644
index e8a4172..0000000
--- a/plugins/npapi/prebuilt/gwt-dev-plugin/gwt48.png
+++ /dev/null
Binary files differ
diff --git a/plugins/npapi/prebuilt/gwt-dev-plugin/gwt64.png b/plugins/npapi/prebuilt/gwt-dev-plugin/gwt64.png
deleted file mode 100644
index 922cc88..0000000
--- a/plugins/npapi/prebuilt/gwt-dev-plugin/gwt64.png
+++ /dev/null
Binary files differ
diff --git a/plugins/npapi/prebuilt/gwt-dev-plugin/manifest.json b/plugins/npapi/prebuilt/gwt-dev-plugin/manifest.json
deleted file mode 100644
index 8993320..0000000
--- a/plugins/npapi/prebuilt/gwt-dev-plugin/manifest.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
-  "name": "GWT Developer Plugin",
-  "version": "1.0.11349",
-  "manifest_version": 2,
-
-  "description": "A plugin to enable debugging with GWT's Development Mode",
-  "icons": {
-    "16": "gwt16.png",
-    "32": "gwt32.png",
-    "48": "gwt48.png",
-    "64": "gwt64.png",
-    "128": "gwt128.png"
-  },
-
-  "background": {
-     "page": "background.html"
-   },
-  "options_page" : "DevModeOptions.html",
-  "page_action" : {
-    "default_icon" : "gwt32.png",
-    "default_title" : "GWT Development Mode",
-    "default_popup" : "page_action.html"
-  },
-  "permissions" : [
-    "tabs"
-  ],
-  "plugins": [
-    { "path": "WINNT_x86-msvc/npGwtDevPlugin.dll", "public": true },
-    { "path": "Linux_x86-gcc3/libGwtDevPlugin.so", "public": true },
-    { "path": "Linux_x86_64-gcc3/libGwtDevPlugin.so", "public": true },
-    { "path": "Darwin-gcc3/gwtDev.plugin", "public": true }
-  ]
-}
diff --git a/plugins/npapi/prebuilt/gwt-dev-plugin/page_action.html b/plugins/npapi/prebuilt/gwt-dev-plugin/page_action.html
deleted file mode 100644
index eeaf556..0000000
--- a/plugins/npapi/prebuilt/gwt-dev-plugin/page_action.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<head>
-  <style>
-    body {
-      width: 20em;
-    }
-  </style>
-  <script src="page_action.js"></script>
-</head>
-<body>
-  <h3>GWT Developer Plugin</h3>
-  <div id='message'></div>
-  <br/>
-  <button id="updateConfiguration">Update Your Configuration</button>
-  </p>
-</body>
diff --git a/plugins/npapi/prebuilt/gwt-dev-plugin/page_action.js b/plugins/npapi/prebuilt/gwt-dev-plugin/page_action.js
deleted file mode 100644
index b63e9b7..0000000
--- a/plugins/npapi/prebuilt/gwt-dev-plugin/page_action.js
+++ /dev/null
@@ -1,35 +0,0 @@
-function getParam(key) {
-  var idx = window.location.search.indexOf(key + "=");
-  var value = '';
-  if (idx >= 0) {
-    idx += key.length + 1;
-    value = window.location.search.substring(idx).split('&')[0];
-  }
-  return value;
-}
-
-function init() {
-  var permission = getParam('permission');
-  var host = getParam('host');
-  var code = getParam('codeserver');
-  var message='';
-
-  if (permission == 'include') {
-    message = 'The web and code server (' + host + '/' + code + ') is allowed to use the plugin';
-  } else if (permission == 'exclude') {
-    message = 'The web and code server (' + host + '/' + code + ') has been been blacklisted.';
-  } else if (permission == 'unknown') {
-    message = 'The web and code server (' + host + '/' + code + ') is unknown to the plugin.';
-  }
-
-  document.getElementById('message').innerText = message;
-  document.getElementById("updateConfiguration").onclick = updateConfiguration
-}
-
-function updateConfiguration() {
-  var url = 'DevModeOptions.html?host=' + getParam('host') + '&codeserver=' + getParam('codeserver');
-  url = chrome.extension.getURL(url);
-  chrome.tabs.create({'url' : url});
-}
-
-window.onload = init;
diff --git a/plugins/npapi/prebuilt/gwt-dev-plugin/warning.png b/plugins/npapi/prebuilt/gwt-dev-plugin/warning.png
deleted file mode 100644
index 55a203b..0000000
--- a/plugins/npapi/prebuilt/gwt-dev-plugin/warning.png
+++ /dev/null
Binary files differ
diff --git a/plugins/npapi/resource.h b/plugins/npapi/resource.h
deleted file mode 100644
index bd2d338..0000000
--- a/plugins/npapi/resource.h
+++ /dev/null
@@ -1,23 +0,0 @@
-//{{NO_DEPENDENCIES}}
-// Microsoft Visual C++ generated include file.
-// Used by npOOPHM.rc
-//
-#define IDD_MAIN                        101
-#define IDC_BUTTON_GO                   1002
-#define IDC_STATIC_UA                   1003
-#define IDC_BUTTON1                     1005
-#define IDC_BUTTON_DONT                 1005
-#define IDD_ALLOW_DIALOG                103
-#define IDC_REMEMBER_CHECKBOX           201
-#define IDC_ALLOW_BUTTON                202
-
-// Next default values for new objects
-//
-#ifdef APSTUDIO_INVOKED
-#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE        102
-#define _APS_NEXT_COMMAND_VALUE         40001
-#define _APS_NEXT_CONTROL_VALUE         1006
-#define _APS_NEXT_SYMED_VALUE           101
-#endif
-#endif
diff --git a/plugins/npapi/test.html b/plugins/npapi/test.html
deleted file mode 100644
index e55d25e..0000000
--- a/plugins/npapi/test.html
+++ /dev/null
@@ -1,110 +0,0 @@
-<html>
-<head>
-<title>OOPHM test page</title>
-<script>
-var $wnd = window,$doc = document;
-var $moduleBase = 'file:///home/jat/s/gwt-oophm/plugins/firefox/';
-
-// fake property provider
-function __gwt_getProperty(prop) {
-  return "gecko1_8";
-}
-
-// wrapper to call JS methods, which we need both to be able to supply a
-// different this for method lookup and to get the exception back
-function __gwt_jsWrapper(method, methodlookup, thisref) {
-  try {
-    var args = Array.prototype.slice.call(arguments, 3);
-//    console.log("calling " + method + " on " + methodlookup + " (this=" + thisref + "), args are ",
-//        args);
-    var ret = methodlookup[method].apply(thisref, args);
-//    console.log("successful; returned ", ret);
-    return [0, ret];
-  } catch (e) {
-    try {
-//      console.log("methodlookup[method]=", methodlookup[method] ?
-//          methodlookup[method].toString() : methodlookup[method]);
-//      console.log("failed; exception ", e);
-    } catch (e2) {
-//      console.log("exception " + e2 + " logging original exception");
-    }
-    return [1, e];
-  }
-}
-
-function __gwt_initHandlers(resize, beforeunload, unload) {
-  console.log("initHandlers called", resize, beforeunload, unload);
-  var $wnd = window
-  , oldOnResize = $wnd.onresize
-  , oldOnBeforeUnload = $wnd.onbeforeunload
-  , oldOnUnload = $wnd.onunload
-  ;
-
-  $wnd.onresize = function(evt) {
-    try {
-      resize();
-    } finally {
-      oldOnResize && oldOnResize(evt);
-    }
-  };
-
-  $wnd.onbeforeunload = function(evt) {
-    var ret, oldRet;
-    try {
-      ret = beforeunload();
-    } finally {
-      oldRet = oldOnBeforeUnload && oldOnBeforeUnload(evt);
-    }
-    // Avoid returning null as IE6 will coerce it into a string.
-    // Ensure that "" gets returned properly.
-    if (ret != null) {
-      return ret;
-    }
-    if (oldRet != null) {
-      return oldRet;
-    }
-    // returns undefined.
-  };
-
-  $wnd.onunload = function(evt) {
-    try {
-      unload();
-    } finally {
-      oldOnUnload && oldOnUnload(evt);
-    }
-  };
-};
-
-// fire up plugin
-window.onload = function() {
-  var plugin = document.getElementById('plugin');
-  var connectTo = "localhost:9997";
-  var module = "com.google.gwt.sample.kitchensink.KitchenSink";
-  var idx = location.search.indexOf("gwt.hosted=");
-  if (idx >= 0) {
-    var amp = location.search.indexOf("&", idx);
-    if (amp >= 0) {
-      connectTo = location.search.substring(idx + 11, amp);
-    } else {
-      connectTo = location.search.substring(idx + 11);
-    }
-  }
-  var idx = location.search.indexOf("gwt.module=");
-  if (idx >= 0) {
-    var amp = location.search.indexOf("&", idx);
-    if (amp >= 0) {
-      module = location.search.substring(idx + 11, amp);
-    } else {
-      module = location.search.substring(idx + 11);
-    }
-  }
-  plugin.connect(connectTo, module)
-      || alert("failed to connect");
-};
-</script>
-</head>
-<body>
-<embed id="plugin" type="application/x-gwt-hosted-mode" width="10"
-        height="10"/>
-</body>
-</html>
diff --git a/plugins/npapi/version b/plugins/npapi/version
deleted file mode 100644
index 4c00d4e..0000000
--- a/plugins/npapi/version
+++ /dev/null
@@ -1 +0,0 @@
-0.0.0.20090326025214
diff --git a/plugins/platform/Win/AllowDialog.cpp b/plugins/platform/Win/AllowDialog.cpp
deleted file mode 100644
index 6e5672b..0000000
--- a/plugins/platform/Win/AllowDialog.cpp
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright 2009 Google Inc.
- * 
- * Licensed 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.
- */
-
-#include "AllowDialog.h"
-#include "Debug.h"
-#include "resource.h"
-
-HINSTANCE AllowDialog::hInstance;
-
-static BOOL CALLBACK allowDialogProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam) {
-  if (message != WM_COMMAND) {
-    return false;
-  }
-  bool allowed;
-  switch (LOWORD(wParam)) {
-    case IDCANCEL:
-      allowed = false;
-      break;
-    case IDC_ALLOW_BUTTON:
-      allowed = true;
-      break;
-    default:
-      // ignore anything but buttons which close the dialog
-      return false;
-  }
-  bool remember = IsDlgButtonChecked(hwndDlg, IDC_REMEMBER_CHECKBOX) == BST_CHECKED;
-  int returnVal = (allowed ? 1 : 0) + (remember ? 2 : 0);
-  EndDialog(hwndDlg, (INT_PTR) returnVal);
-  return true;
-}
-
-void AllowDialog::setHInstance(HINSTANCE hInstance) {
-  AllowDialog::hInstance = hInstance;
-}
-
-bool AllowDialog::askUserToAllow(bool* remember) {
-  int result = (int) DialogBox(hInstance, MAKEINTRESOURCE(IDD_ALLOW_DIALOG),
-      NULL, (DLGPROC) allowDialogProc);
-  *remember = (result & 2) != 0;
-  return (result & 1) != 0;
-}
diff --git a/plugins/platform/Win/AllowDialog.h b/plugins/platform/Win/AllowDialog.h
deleted file mode 100644
index 93f9438..0000000
--- a/plugins/platform/Win/AllowDialog.h
+++ /dev/null
@@ -1,42 +0,0 @@
-#ifndef _H_AllowDialog
-#define _H_AllowDialog
-/*
- * Copyright 2009 Google Inc.
- * 
- * Licensed 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.
- */
-
-#ifdef _WINDOWS
-#include <windows.h>
-#include <winnt.h>
-#include <windef.h>
-
-class AllowDialog {
-public:
-  static void setHInstance(HINSTANCE hInstance);
-
-  /**
-   * Ask the user if a connection should be allowed.
-   *
-   * @param remember *remember is set to true if the user asked us to remember this decision,
-   *     false otherwise
-   * @return return true if this connection should be allowed
-   */
-  static bool askUserToAllow(bool* remember);
-
-private:
-  static HINSTANCE hInstance;
-};
-#endif
-
-#endif
diff --git a/plugins/platform/Win/Preferences.cpp b/plugins/platform/Win/Preferences.cpp
deleted file mode 100644
index 7eeb381..0000000
--- a/plugins/platform/Win/Preferences.cpp
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright 2009 Google Inc.
- *
- * Licensed 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.
- */
-
-#include <windows.h>
-#include <winnt.h>
-#include <winreg.h>
-#include "Debug.h"
-#include "Preferences.h"
-#include "AllowedConnections.h"
-
-#define REG_ACCESS_LIST "SOFTWARE\\Google\\Google Web Toolkit\\gwt-dev-plugin.accessList"
-
-/**
- * Return a null-terminated string containing the access list.
- *
- * @param HKEY registry key for the access list value
- * @return null-terminated string containing the access list (an empty string
- *     if the value does not exist) -- caller is responsible for freeing with
- *     delete[]
- */
-static char* getAccessList(HKEY keyHandle) {
-  char *buf;
-  DWORD len = 512;
-  while(true) {
-    buf = new char[len];
-    int cc = RegQueryValueExA(keyHandle, NULL, 0, NULL, (LPBYTE) buf, &len);
-    if (cc == ERROR_SUCCESS) {
-      break;
-    } else if (cc == ERROR_FILE_NOT_FOUND) {
-      // special handling if the value doesn't exist
-      len = 0;
-      break;
-    } else if (cc != ERROR_MORE_DATA) {
-      // log unexpected errors
-      Debug::log(Debug::Error) << "Unable to load access list from registry: "
-          << cc << Debug::flush;
-      len = 0;
-      break;
-    }
-    // Buffer wasn't big enough, so make it bigger and try again
-    delete [] buf;
-    len *= 2;
-  }
-  buf[len] = 0;
-  return buf;
-}
-
-void Preferences::addNewRule(const std::string& pattern, bool exclude) {
-  HKEY keyHandle;
-  if (RegCreateKeyExA(HKEY_CURRENT_USER, REG_ACCESS_LIST, 0, 0,
-      REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &keyHandle, NULL)
-      != ERROR_SUCCESS) {
-    return;
-  }
-  char *buf = getAccessList(keyHandle);
-  std::string pref(buf);
-  delete [] buf;
-  if (pref.length() > 0) {
-    pref += ',';
-  }
-  if (exclude) {
-    pref += '!';
-  }
-  pref += pattern;
-  int cc = RegSetValueExA(keyHandle, NULL, 0, REG_SZ, (LPBYTE) pref.c_str(),
-      pref.length() + 1);
-  if (cc != ERROR_SUCCESS) {
-      Debug::log(Debug::Error) << "Unable to store access list in registry: "
-          << cc << Debug::flush;
-  }
-  RegCloseKey(keyHandle);
-}
-
-void Preferences::loadAccessList() {
-  // TODO(jat): can Reg* routines throw exceptions?  If so, we need to make
-  // this exception safe about closing the key hendle and freeing the buffer.
-  HKEY keyHandle;
-  if (RegCreateKeyExA(HKEY_CURRENT_USER, REG_ACCESS_LIST, 0, 0,
-      REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &keyHandle, NULL)
-      != ERROR_SUCCESS) {
-    return;
-  }
-  char *buf = getAccessList(keyHandle);
-  AllowedConnections::initFromAccessList(buf);
-  delete [] buf;
-  RegCloseKey(keyHandle);
-}
diff --git a/plugins/platform/Win/Preferences.h b/plugins/platform/Win/Preferences.h
deleted file mode 100644
index f4fc49b..0000000
--- a/plugins/platform/Win/Preferences.h
+++ /dev/null
@@ -1,34 +0,0 @@
-#ifndef _H_Preferences
-#define _H_Preferences
-/*
- * Copyright 2009 Google Inc.
- *
- * Licensed 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.
- */
-
-#include <string>
-
-/**
- * Deal with getting/storing/updating preferences in the Windows registry.
- */
-class Preferences {
-private:
-  // prevent instantiation
-  Preferences() {}
-
-public:
-  static void loadAccessList();
-  static void addNewRule(const std::string& pattern, bool exclude);
-};
-
-#endif
diff --git a/plugins/webkit/Browser/AppController.h b/plugins/webkit/Browser/AppController.h
deleted file mode 100644
index 2d4747f..0000000
--- a/plugins/webkit/Browser/AppController.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#import <Cocoa/Cocoa.h>
-#import <WebKit/WebKit.h>
-
-@interface AppController : NSObject
-{
-    IBOutlet WebView *webview;
-}
-- (IBAction)newWindow:(id)sender;
-@end
diff --git a/plugins/webkit/Browser/AppController.m b/plugins/webkit/Browser/AppController.m
deleted file mode 100644
index 046a507..0000000
--- a/plugins/webkit/Browser/AppController.m
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#import "AppController.h"
-#import "BrowserWindow.h"
-
-@implementation AppController
-- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
-  NSLog(@"%s", __PRETTY_FUNCTION__);
-  
-  if (![WebView canShowMIMEType:@"application/x-gwt-hosted-mode"]) {
-    NSLog(@"plugin not available");
-    exit(-1);
-  }
-  NSString* str = @"http://localhost:8888/com.google.gwt.dev.jjs.CompilerSuite.JUnit/junit.html?gwt.hosted=localhost:9997";
-//  NSString* str = @"http://localhost:8888/com.google.gwt.user.RPCSuite.JUnit/junit.html?gwt.hosted=localhost:9997";
-//  NSString* str = @"http://localhost:8888/com.google.gwt.user.User.JUnit/junit.html?gwt.hosted=localhost:9997";
-  [webview setUIDelegate:self];
-  [webview setShouldCloseWithWindow: YES];
-  [[webview mainFrame] loadRequest: [NSURLRequest requestWithURL:[NSURL URLWithString:str]]];
-}
-
-- (IBAction)newWindow:(id)sender {
-  NSLog(@"Action received");
-  NSRect r;
-  r.origin.x = 100;
-  r.origin.y = 100;
-  r.size.height = 500;
-  r.size.width = 500;
-  
-  WebView* webView = [[WebView alloc] initWithFrame:r];
-  NSString* str = @"http://localhost:8888/com.google.gwt.sample.kitchensink.KitchenSink/KitchenSink.html?gwt.hosted=localhost:9997";
-  [webView setUIDelegate:self];
-  [webView setShouldCloseWithWindow: YES];
-  [[webView mainFrame] loadRequest: [NSURLRequest requestWithURL:[NSURL URLWithString:str]]];
-  
-  NSWindow* wnd = [[BrowserWindow alloc] initWithContentRect:r styleMask:NSResizableWindowMask|NSClosableWindowMask backing:NSBackingStoreBuffered defer:NO];
-  [wnd setContentView:webView];
-  [wnd makeKeyAndOrderFront:self];
-}
-
-- (void)webView:(WebView *)sender windowScriptObjectAvailable:(WebScriptObject *)windowScriptObject {
-  NSLog(@"%s", __PRETTY_FUNCTION__);
-}
-
-@end
diff --git a/plugins/webkit/Browser/Browser-Info.plist b/plugins/webkit/Browser/Browser-Info.plist
deleted file mode 100644
index c597e30..0000000
--- a/plugins/webkit/Browser/Browser-Info.plist
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>English</string>
-	<key>CFBundleExecutable</key>
-	<string>${EXECUTABLE_NAME}</string>
-	<key>CFBundleIconFile</key>
-	<string>gwtlogo</string>
-	<key>CFBundleIdentifier</key>
-	<string>com.google.gwt.oophm.browser</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundlePackageType</key>
-	<string>APPL</string>
-	<key>CFBundleSignature</key>
-	<string>????</string>
-	<key>CFBundleVersion</key>
-	<string>1.0</string>
-	<key>NSMainNibFile</key>
-	<string>browser.nib</string>
-	<key>NSPrincipalClass</key>
-	<string>NSApplication</string>
-</dict>
-</plist>
diff --git a/plugins/webkit/Browser/BrowserWindow.h b/plugins/webkit/Browser/BrowserWindow.h
deleted file mode 100644
index 18664ed..0000000
--- a/plugins/webkit/Browser/BrowserWindow.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#import <Cocoa/Cocoa.h>
-
-@interface BrowserWindow : NSWindow {
-
-}
-
-@end
diff --git a/plugins/webkit/Browser/BrowserWindow.m b/plugins/webkit/Browser/BrowserWindow.m
deleted file mode 100644
index c822886..0000000
--- a/plugins/webkit/Browser/BrowserWindow.m
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#import "BrowserWindow.h"
-
-@implementation BrowserWindow
-
-@end
diff --git a/plugins/webkit/Browser/browser.nib/classes.nib b/plugins/webkit/Browser/browser.nib/classes.nib
deleted file mode 100644
index af71aad..0000000
--- a/plugins/webkit/Browser/browser.nib/classes.nib
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>IBClasses</key>
-	<array>
-		<dict>
-			<key>CLASS</key>
-			<string>BrowserWindow</string>
-			<key>LANGUAGE</key>
-			<string>ObjC</string>
-			<key>SUPERCLASS</key>
-			<string>NSWindow</string>
-		</dict>
-		<dict>
-			<key>ACTIONS</key>
-			<dict>
-				<key>toggleAutomaticLinkDetection</key>
-				<string>id</string>
-				<key>toggleAutomaticQuoteSubstitution</key>
-				<string>id</string>
-				<key>toggleGrammarChecking</key>
-				<string>id</string>
-				<key>toggleSmartInsertDelete</key>
-				<string>id</string>
-			</dict>
-			<key>CLASS</key>
-			<string>FirstResponder</string>
-			<key>LANGUAGE</key>
-			<string>ObjC</string>
-			<key>SUPERCLASS</key>
-			<string>NSObject</string>
-		</dict>
-		<dict>
-			<key>ACTIONS</key>
-			<dict>
-				<key>newWindow</key>
-				<string>id</string>
-			</dict>
-			<key>CLASS</key>
-			<string>AppController</string>
-			<key>LANGUAGE</key>
-			<string>ObjC</string>
-			<key>OUTLETS</key>
-			<dict>
-				<key>webview</key>
-				<string>WebView</string>
-			</dict>
-			<key>SUPERCLASS</key>
-			<string>NSObject</string>
-		</dict>
-	</array>
-	<key>IBVersion</key>
-	<string>1</string>
-</dict>
-</plist>
diff --git a/plugins/webkit/Browser/browser.nib/info.nib b/plugins/webkit/Browser/browser.nib/info.nib
deleted file mode 100644
index 6271e8e..0000000
--- a/plugins/webkit/Browser/browser.nib/info.nib
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>IBFramework Version</key>
-	<string>629</string>
-	<key>IBLastKnownRelativeProjectPath</key>
-	<string>../../oophm.xcodeproj</string>
-	<key>IBOldestOS</key>
-	<integer>5</integer>
-	<key>IBOpenObjects</key>
-	<array/>
-	<key>IBSystem Version</key>
-	<string>9C7010</string>
-	<key>targetFramework</key>
-	<string>IBCocoaFramework</string>
-</dict>
-</plist>
diff --git a/plugins/webkit/Browser/browser.nib/keyedobjects.nib b/plugins/webkit/Browser/browser.nib/keyedobjects.nib
deleted file mode 100644
index 7691b0d..0000000
--- a/plugins/webkit/Browser/browser.nib/keyedobjects.nib
+++ /dev/null
Binary files differ
diff --git a/plugins/webkit/Browser/main.m b/plugins/webkit/Browser/main.m
deleted file mode 100644
index f1a7cba..0000000
--- a/plugins/webkit/Browser/main.m
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#import <Cocoa/Cocoa.h>
-
-int main(int argc, char *argv[])
-{
-    return NSApplicationMain(argc,  (const char **) argv);
-}
diff --git a/plugins/webkit/Core/ObjectFunctions.cpp b/plugins/webkit/Core/ObjectFunctions.cpp
deleted file mode 100644
index a0a4a73..0000000
--- a/plugins/webkit/Core/ObjectFunctions.cpp
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#include "ObjectFunctions.h"
-#include "WebScriptSessionHandler.h"
-#include "scoped_ptr.h"
-
-JSValueRef JavaObjectCallAsFunction(JSContextRef ctx, JSObjectRef function, JSObjectRef thisObject,
-                                            size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) {
-  TrackingDataRef tracker = static_cast<TrackingDataRef>(JSObjectGetPrivate(function));
-  WebScriptSessionHandler* sessionHandler = static_cast<WebScriptSessionHandler*>(tracker->getSessionData());
-  
-  *exception = NULL;
-  int dispatchId = JSValueToNumber(ctx, arguments[0], exception);
-  if (*exception) {
-    return JSValueMakeUndefined(ctx);
-  }
-  
-  bool explicitThis = JSValueToBoolean(ctx, arguments[1]);
-  if (explicitThis) {
-    thisObject = JSValueToObject(ctx, arguments[1], exception);
-    if (*exception) {
-      return JSValueMakeUndefined(ctx);
-    }
-  } else {
-    thisObject = function;
-  }
-  
-  return sessionHandler->javaFunctionCallbackImpl(dispatchId, thisObject,
-                                                  argumentCount - 2, &arguments[2], exception);  
-}
-
-/*
- * Static-dispatch function to clean up a Java object proxy.  This will
- * deallocate the TrackingData as well as remove the objectId mapping.  This
- * function is called from JavaScriptCore as well as ~WebScriptSessionHandler.
- *
- * The JavaScriptCore documentation indicates that finalizers may be called
- * from any thread, so we can't see javaFree messages directly from this
- * method.  Instead, we'll accumulate a list of ids to free. 
- */
-void JavaObjectFinalize (JSObjectRef object) {
-  TrackingDataRef tracker = static_cast<TrackingDataRef>(JSObjectGetPrivate(object));
-  if (!tracker) {
-    // The tracker may have already been deleted in ~WebScriptSessionHandler()
-    return;
-  }
-  Debug::log(Debug::Spam) << "Finalizing Java object " << tracker->getObjectId() << Debug::flush;
-  JSObjectSetPrivate(object, NULL);
-  int id = tracker->getObjectId();  
-  WebScriptSessionHandler* sessionHandler = static_cast<WebScriptSessionHandler*>(tracker->getSessionData());
-  delete tracker;
-  sessionHandler->javaObjectFinalizeImpl(id);
-}
-
-/*
- * Static-dispatch function to check for the presence of a property on a Java
- * object proxy.
- */
-bool JavaObjectHasProperty (JSContextRef ctx, JSObjectRef object, JSStringRef propertyName) {
-  TrackingDataRef tracker = static_cast<TrackingDataRef>(JSObjectGetPrivate(object));
-  WebScriptSessionHandler* sessionHandler = static_cast<WebScriptSessionHandler*>(tracker->getSessionData());
-  return sessionHandler->javaObjectHasPropertyImpl(tracker, object, propertyName);
-}
-
-/*
- * Static-dispatch function to retrieve the value of a property on a Java
- * object proxy.
- */
-JSValueRef JavaObjectGetProperty (JSContextRef ctx, JSObjectRef object,
-                                         JSStringRef propertyName, JSValueRef* exception) {
-  TrackingDataRef tracker = static_cast<TrackingDataRef>(JSObjectGetPrivate(object));
-  WebScriptSessionHandler* sessionHandler = static_cast<WebScriptSessionHandler*>(tracker->getSessionData());
-  return sessionHandler->javaObjectGetPropertyImpl(tracker, object, propertyName, exception);
-}
-
-/*
- * Static-dispatch function to set the value of a property an a Java object
- * proxy.
- */
-bool JavaObjectSetProperty (JSContextRef ctx, JSObjectRef object,
-                                   JSStringRef propertyName, JSValueRef value,
-                                   JSValueRef* exception) {
-  TrackingDataRef tracker = static_cast<TrackingDataRef>(JSObjectGetPrivate(object));
-  WebScriptSessionHandler* sessionHandler = static_cast<WebScriptSessionHandler*>(tracker->getSessionData());
-  return sessionHandler->javaObjectSetPropertyImpl(tracker, object, propertyName, value, exception);
-}
diff --git a/plugins/webkit/Core/ObjectFunctions.h b/plugins/webkit/Core/ObjectFunctions.h
deleted file mode 100644
index 176218e..0000000
--- a/plugins/webkit/Core/ObjectFunctions.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#include "JavaScriptCore/JavaScriptCore.h"
-
-/*
- * Handle JSNI function invocations.
- */
-JSValueRef JavaObjectCallAsFunction(JSContextRef ctx, JSObjectRef function, JSObjectRef thisObject,
-                                    size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
-
-/*
- * Static-dispatch function to clean up a Java object proxy.  This will
- * deallocate the TrackingData as well as remove the objectId mapping.  This
- * function is called from JavaScriptCore as well as ~WebScriptSessionHandler.
- *
- * The JavaScriptCore documentation indicates that finalizers may be called
- * from any thread, so we can't see javaFree messages directly from this
- * method.  Instead, we'll accumulate a list of ids to free. 
- */
-void JavaObjectFinalize (JSObjectRef object);
-
-/*
- * Static-dispatch function to check for the presence of a property on a Java
- * object proxy.
- */
-bool JavaObjectHasProperty (JSContextRef ctx, JSObjectRef object, JSStringRef propertyName);
-
-/*
- * Static-dispatch function to retrieve the value of a property on a Java
- * object proxy.
- */
-JSValueRef JavaObjectGetProperty (JSContextRef ctx, JSObjectRef object,
-                                         JSStringRef propertyName, JSValueRef* exception);
-
-/*
- * Static-dispatch function to set the value of a property an a Java object
- * proxy.
- */
-bool JavaObjectSetProperty (JSContextRef ctx, JSObjectRef object,
-                                   JSStringRef propertyName, JSValueRef value,
-                                   JSValueRef* exception);
\ No newline at end of file
diff --git a/plugins/webkit/Core/SessionData.h b/plugins/webkit/Core/SessionData.h
deleted file mode 100644
index 9f60ddf..0000000
--- a/plugins/webkit/Core/SessionData.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#import "HostChannel.h"
-#import "JavaScriptCore/JavaScriptCore.h"
-#import "SessionHandler.h"
-
-/*
- * Encapsules per-OOPHM-session data.
- */
-class SessionData {
-public:
-  SessionData(HostChannel* channel, JSGlobalContextRef contextRef, 
-              SessionHandler* sessionHandler) : channel(channel),
-                                                contextRef(contextRef),
-                                                sessionHandler(sessionHandler) {
-  }
-  
-  JSGlobalContextRef getContext() const {
-    return contextRef;
-  }
-  
-  HostChannel* getHostChannel() const {
-    return channel;
-  }
-  
-  SessionHandler* getSessionHandler() const {
-    return sessionHandler;
-  }
-
-protected:
-  /*
-   * The communication channel used for the OOPHM session.
-   */
-  HostChannel* const channel;
-  
-  /*
-   * The JavaScriptCore interpreter instance.
-   */
-  JSGlobalContextRef const contextRef;
-  
-  /*
-   * A reference to the SessionHandler being used in the OOPHM session.
-   */
-  SessionHandler* const sessionHandler;
-};
-typedef SessionData* SessionDataRef;
\ No newline at end of file
diff --git a/plugins/webkit/Core/TrackingData.h b/plugins/webkit/Core/TrackingData.h
deleted file mode 100644
index de19f00..0000000
--- a/plugins/webkit/Core/TrackingData.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#import "SessionData.h"
-
-/*
- * This class encapsulates per-object information to determine how to dispatch
- * a given JSObjectRef that is a Java object proxy. Instances of
- * this class are intended to be stored in the private data area provided
- * by JSObjectRef.
- */
-class TrackingData {
-public:
-  /*
-   * Constructor for Java object proxies.
-   */
-  TrackingData(const SessionDataRef sessionData, const unsigned objId) :
-  objId(objId), sessionData(sessionData) {
-  }
-  
-  const unsigned getObjectId() const {
-    return objId;
-  }
-  
-  SessionDataRef getSessionData() const {
-    return sessionData;
-  }
-  
-private:
-  /*
-   * The tracking number assigned to the object.
-   */
-  const unsigned objId;
-  
-  /*
-   * A reference to the per-OOPHM-session data.
-   */
-  SessionDataRef const sessionData;  
-};
-typedef const TrackingData* TrackingDataRef;
diff --git a/plugins/webkit/Core/WebScriptSessionHandler.cpp b/plugins/webkit/Core/WebScriptSessionHandler.cpp
deleted file mode 100644
index 1a1e972..0000000
--- a/plugins/webkit/Core/WebScriptSessionHandler.cpp
+++ /dev/null
@@ -1,727 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#import "WebScriptSessionHandler.h"
-#import "InvokeMessage.h"
-#import "ObjectFunctions.h"
-#import "ServerMethods.h"
-#import "TrackingData.h"
-#import "scoped_ptr.h"
-
-
-WebScriptSessionHandler::WebScriptSessionHandler(HostChannel* channel,
-                                                 JSGlobalContextRef contextRef,
-                                                 CrashHandlerRef crashHandler) :
-SessionData(channel, contextRef, this), jsObjectId(1), crashHandler(crashHandler) {
-
-  JSClassDefinition def = kJSClassDefinitionEmpty;
-  def.className = "JavaObject";
-  def.hasProperty = JavaObjectHasProperty;
-  def.callAsFunction = JavaObjectCallAsFunction;
-  def.finalize = JavaObjectFinalize;
-  def.getProperty = JavaObjectGetProperty;
-  def.setProperty = JavaObjectSetProperty;
-  javaObjectWrapperClass = JSClassCreate(&def);
-  JSClassRetain(javaObjectWrapperClass);
-
-  // Get the String constructor function to tell Strings from other Objects
-  JSStringRef stringString = JSStringCreateWithUTF8CString("String");
-  JSValueRef stringConstructorValue = JSObjectGetProperty(contextRef,
-                                                          JSContextGetGlobalObject(contextRef),
-                                                          stringString, NULL);
-  stringConstructor = JSValueToObject(contextRef, stringConstructorValue, NULL);
-  JSValueProtect(contextRef, stringConstructor);
-  JSStringRelease(stringString);
-
-  // Call out to the utility __gwt_makeResult function to create the return array
-  JSStringRef makeResultString = JSStringCreateWithUTF8CString("__gwt_makeResult");
-  JSValueRef makeResultValue = JSObjectGetProperty(contextRef, JSContextGetGlobalObject(contextRef), makeResultString, NULL);
-  JSStringRelease(makeResultString);
-
-  if (!JSValueIsObject(contextRef, makeResultValue)) {
-    crashHandler->crash(__PRETTY_FUNCTION__, "Could not find __gwt_makeResult");
-  } else {
-    makeResultFunction = JSValueToObject(contextRef, makeResultValue, NULL);
-    JSValueProtect(contextRef, makeResultFunction);
-  }
-
-  pthread_mutexattr_t mutexAttrs;
-  pthread_mutexattr_init(&mutexAttrs);
-  // This behaves basically like the Java synchronized keyword
-  pthread_mutexattr_settype(&mutexAttrs, PTHREAD_MUTEX_RECURSIVE);
-  pthread_mutex_init(&javaObjectsLock, &mutexAttrs);
-  pthread_mutexattr_destroy(&mutexAttrs);
-}
-
-WebScriptSessionHandler::~WebScriptSessionHandler() {
-  std::map<int, JSObjectRef>::iterator i;
-
-  pthread_mutex_lock(&javaObjectsLock);
-  while ((i = javaObjectsById.begin()) != javaObjectsById.end()) {
-    JavaObjectFinalize(i->second);
-  }
-  pthread_mutex_unlock(&javaObjectsLock);
-
-  for (i = jsObjectsById.begin(); i != jsObjectsById.end(); i++) {
-    JSObjectRef ref = i->second;
-    delete static_cast<TrackingDataRef>(JSObjectGetPrivate(ref));
-    JSObjectSetPrivate(ref, NULL);
-    JSValueUnprotect(contextRef, i->second);
-  }
-
-  JSClassRelease(javaObjectWrapperClass);
-
-  JSValueUnprotect(contextRef, stringConstructor);
-  JSValueUnprotect(contextRef, makeResultFunction);
-
-  JSGarbageCollect(contextRef);
-  pthread_mutex_destroy(&javaObjectsLock);
-}
-
-void WebScriptSessionHandler::disconnectDetectedImpl() {
-  crashHandler->crash(__PRETTY_FUNCTION__, "Server disconnect detected");
-}
-
-void WebScriptSessionHandler::fatalError(HostChannel& channel,
-    const std::string& message) {
-  // TODO: better way of reporting error?
-  Debug::log(Debug::Error) << "Fatal error: " << message << Debug::flush;
-}
-
-void WebScriptSessionHandler::sendFreeValues(HostChannel& channel) {
-  pthread_mutex_lock(&javaObjectsLock);
-  int idCount = javaObjectsToFree.size();
-  if (idCount == 0) {
-    pthread_mutex_unlock(&javaObjectsLock);
-    return;
-  }
-
-  int ids[idCount];
-  std::set<int>::iterator it = javaObjectsToFree.begin();
-  for (int i = 0; i < idCount; it++) {
-    ids[i++] = *it;
-  }
-  if (!ServerMethods::freeJava(channel, this, idCount, ids)) {
-    Debug::log(Debug::Error) << "Unable to free Java ids" << Debug::flush;
-  } else {
-    Debug::log(Debug::Debugging) << "Freed " << idCount << " Java ids" << Debug::flush;
-  }
-  javaObjectsToFree.clear();
-  pthread_mutex_unlock(&javaObjectsLock);
-}
-
-void WebScriptSessionHandler::freeValue(HostChannel& channel, int idCount, const int* ids) {
-  Debug::log(Debug::Spam) << "freeValue freeing " << idCount << " js objects" << Debug::flush;
-  if (idCount == 0) {
-    return;
-  }
-
-  for (int i = 0; i < idCount; i++) {
-    int objId = ids[i];
-
-    std::map<int, JSObjectRef>::iterator x = jsObjectsById.find(objId);
-    if (x == jsObjectsById.end()) {
-      Debug::log(Debug::Error) << "Unknown object id " << objId << Debug::flush;
-      continue;
-    }
-
-    JSObjectRef ref = x->second;
-    jsObjectsById.erase(objId);
-    jsIdsByObject.erase(ref);
-    JSValueUnprotect(contextRef, ref);
-  }
-  Debug::log(Debug::Debugging) << "Freed " << idCount << " JS objects" << Debug::flush;
-}
-
-void WebScriptSessionHandler::initiateAutodestructSequence(const char* functionName, const char* message) {
-  crashHandler->crash(functionName, message);
-}
-
-bool WebScriptSessionHandler::invoke(HostChannel& channel, const Value& thisObj,
-                                    const std::string& methodName,
-                                    int numArgs, const Value* args, Value* returnValue) {
-  Debug::log(Debug::Spam) << "invoke " << methodName << Debug::flush;
-
-  JSValueRef argsJS[numArgs];
-  JSValueRef localException = NULL;
-  JSStringRef methodNameJS = JSStringCreateWithUTF8CString(methodName.c_str());
-  JSObjectRef thisObjJs;
-
-  if (thisObj.isNull()) {
-    thisObjJs = JSContextGetGlobalObject(contextRef);
-  } else {
-    thisObjJs = (JSObjectRef) makeValueRef(thisObj);
-  }
-
-  JSValueRef functionValueJS = JSObjectGetProperty(contextRef, JSContextGetGlobalObject(contextRef),
-                                                   methodNameJS, &localException);
-  JSStringRelease(methodNameJS);
-
-  if (!JSValueIsObject(contextRef, functionValueJS)) {
-    char message[512];
-    snprintf(message, sizeof(message), "Could not find method for property name %s on %s", methodName.c_str(), thisObj.toString().c_str());
-    makeExceptionValue(*returnValue, message);
-    return true;
-  }
-
-  JSObjectRef functionJS = JSValueToObject(contextRef, functionValueJS,
-                                           &localException);
-  if (localException) {
-    makeValue(*returnValue, localException);
-    return true;
-  }
-
-  // Convert the arguments
-  for (int i = 0; i < numArgs; i++) {
-    argsJS[i] = makeValueRef(args[i]);
-  }
-
-  JSValueRef retVal = JSObjectCallAsFunction(contextRef, functionJS,
-                                             thisObjJs, numArgs, argsJS,
-                                             &localException);
-
-  if (localException) {
-    Debug::log(Debug::Spam) << "Returning exception to server" << Debug::flush;
-    makeValue(*returnValue, localException);
-    return true;
-  } else {
-    makeValue(*returnValue, retVal);
-    return false;
-  }
-}
-
-bool WebScriptSessionHandler::invokeSpecial(HostChannel& channel, SpecialMethodId method, int numArgs,
-                                            const Value* const args, Value* returnValue) {
-  Debug::log(Debug::Spam) << "invokeSpecial " << method << Debug::flush;
-  switch (method) {
-    case GetProperty:
-    {
-      int objId = args[0].getInt();
-      std::map<int, JSObjectRef>::iterator i = jsObjectsById.find(objId);
-      if (i == jsObjectsById.end()) {
-        char message[50];
-        snprintf(message, sizeof(message), "Unknown object id %i", objId);
-        makeExceptionValue(*returnValue, message);
-        return true;
-      }
-
-      JSObjectRef jsObj = i->second;
-      if (args[1].isString()) {
-        JSStringRef asString = JSValueToStringCopy(contextRef, jsObj, NULL);
-        int maxLength = JSStringGetMaximumUTF8CStringSize(asString);
-        scoped_array<char> asChars(new char[maxLength]);
-        JSStringGetUTF8CString(asString, asChars.get(), maxLength);
-
-        JSValueRef localException = NULL;
-        JSStringRef str = JSStringCreateWithUTF8CString(args[1].getString().c_str());
-        JSValueRef value = JSObjectGetProperty(contextRef, jsObj, str, &localException);
-        JSStringRelease(str);
-        if (localException) {
-          makeValue(*returnValue, localException);
-          return true;
-        } else {
-          makeValue(*returnValue, value);
-          return false;
-        }
-      } else if (args[1].isInt()) {
-        JSValueRef localException = NULL;
-        JSValueRef value = JSObjectGetPropertyAtIndex(contextRef, jsObj, args[1].getInt(), &localException);
-
-        if (localException) {
-          makeValue(*returnValue, localException);
-          return true;
-        } else {
-          makeValue(*returnValue, value);
-          return false;
-        }
-      } else {
-        char message[50];
-        snprintf(message, sizeof(message), "Unhandled argument type %s for getProperty", args[1].toString().c_str());
-        makeExceptionValue(*returnValue, message);
-        return true;
-      }
-    }
-    default:
-      Debug::log(Debug::Error) << "Unhandled invokeSpecial " << method << Debug::flush;
-      makeExceptionValue(*returnValue, "Unhandled invokeSpecial");
-      return true;
-  }
-}
-
-JSValueRef WebScriptSessionHandler::javaFunctionCallbackImpl (int dispatchId,
-                                                              JSObjectRef thisObject,
-                                                              size_t argumentCount,
-                                                              const JSValueRef arguments[],
-                                                              JSValueRef* exception){
-  /*
-   * NB: Because throwing exceptions in JavaScriptCore is trivial, we don't rely
-   * on any special return values to indicate that an exception is thrown, we'll simply
-   * throw the exception.
-   */
-  Debug::log(Debug::Debugging) << "Java method " << dispatchId << " invoked" << Debug::flush;
-
-  JSValueRef toReturn;
-  if (crashHandler->hasCrashed()) {
-    Debug::log(Debug::Debugging) << "Not executing method since we have crashed" << Debug::flush;
-    toReturn =  JSValueMakeUndefined(contextRef);
-  } else {
-    /*
-     * If a JS function is evaluated without an meaningful this object or the global
-     * object is implicitly used as the this object, we'll assume that the
-     * Java-derived method is static, and send a null this object to the server
-     */
-    Value thisValue;
-    if (JSValueIsEqual(contextRef, thisObject, JSContextGetGlobalObject(contextRef), NULL)) {
-      thisValue = Value();
-      thisValue.setNull();
-    } else {
-      makeValue(thisValue, thisObject);
-    }
-
-    // Argument conversion is straightforward
-    Value *args = new Value[argumentCount];
-    for (int i = 0; i < argumentCount; i++) {
-      makeValue(args[i], arguments[i]);
-    }
-      
-    bool status = InvokeMessage::send(*channel, thisValue, dispatchId,
-                                      argumentCount, args);
-    delete[] args;
-    if (!status) {
-      initiateAutodestructSequence(__PRETTY_FUNCTION__, "Unable to send invocation message");
-      *exception = makeException("Unable to send invocation message");
-      return JSValueMakeUndefined(contextRef);
-    }
-
-    scoped_ptr<ReturnMessage> ret(channel->reactToMessagesWhileWaitingForReturn(sessionHandler));
-
-    if (!ret.get()) {
-      initiateAutodestructSequence(__PRETTY_FUNCTION__, "Unable to receive return message");
-      *exception = makeException("Unable to receive return message");
-      return JSValueMakeUndefined(contextRef);
-    }
-
-    Value v = ret->getReturnValue();
-
-    if (ret->isException()) {
-      *exception = makeValueRef(v);
-      toReturn = JSValueMakeUndefined(contextRef);
-    } else {
-      toReturn = makeValueRef(v);
-    }
-  }
-
-  JSValueRef makeResultArguments[] = {JSValueMakeBoolean(contextRef, false), toReturn};
-  return JSObjectCallAsFunction(contextRef, makeResultFunction, NULL, 2, makeResultArguments, exception);
-}
-
-void WebScriptSessionHandler::javaObjectFinalizeImpl(int objId) {
-  if (pthread_mutex_lock(&javaObjectsLock)) {
-    Debug::log(Debug::Error) << "Unable to acquire javaObjectsLock in thread " << pthread_self() << " " << __PRETTY_FUNCTION__ << Debug::flush;
-    initiateAutodestructSequence(__PRETTY_FUNCTION__, "Unable to acquire javaObjectsLock");
-    return;
-  }
-  javaObjectsById.erase(objId);
-  javaObjectsToFree.insert(objId);
-  if (pthread_mutex_unlock(&javaObjectsLock)) {
-    Debug::log(Debug::Error) << "Unable to release javaObjectsLock in thread " << pthread_self() << " " << __PRETTY_FUNCTION__ << Debug::flush;
-    initiateAutodestructSequence(__PRETTY_FUNCTION__, "Unable to release javaObjectsLock");
-  }
-}
-
-JSValueRef WebScriptSessionHandler::javaObjectGetPropertyImpl (TrackingDataRef tracker, JSObjectRef object,
-                                                               JSStringRef propertyName, JSValueRef* exception) {
-  *exception = NULL;
-  
-  if (crashHandler->hasCrashed()) {
-    Debug::log(Debug::Debugging) << "Not executing since we have crashed" << Debug::flush;
-    return JSValueMakeUndefined(contextRef);
-  }
-
-  // Convert the name
-  int maxLength = JSStringGetMaximumUTF8CStringSize(propertyName);
-  scoped_array<char> propertyNameChars(new char[maxLength]);
-  JSStringGetUTF8CString(propertyName, propertyNameChars.get(), maxLength);
-  JSValueRef toReturn;
-
-  if (!strcmp(propertyNameChars.get(), "toString")) {
-    // We'll call out to the JSNI tear-off support function
-    JSStringRef tearOffName =JSStringCreateWithUTF8CString("__gwt_makeTearOff");
-    JSValueRef makeTearOffValue = JSObjectGetProperty(contextRef, JSContextGetGlobalObject(contextRef), tearOffName, exception);
-    JSStringRelease(tearOffName);
-    if (*exception) {
-      return JSValueMakeUndefined(contextRef);
-    }
-
-    JSObjectRef makeTearOff = JSValueToObject(contextRef, makeTearOffValue, exception);
-    if (*exception) {
-      return JSValueMakeUndefined(contextRef);
-    }
-
-    JSValueRef arguments[3];
-    arguments[0] = object;
-    arguments[1] = JSValueMakeNumber(contextRef, 0);
-    arguments[2] = JSValueMakeNumber(contextRef, 0);
-    toReturn = JSObjectCallAsFunction(contextRef, makeTearOff, JSContextGetGlobalObject(contextRef), 3, arguments, exception);
-  } else {
-    char* endptr;
-    int dispatchId = strtol(propertyNameChars.get(), &endptr, 10);
-
-    if (*endptr != '\0') {
-      Debug::log(Debug::Error) << "Unable to parse dispatch id " << propertyNameChars.get() << Debug::flush;
-      *exception = makeException("Unable to parse dispatch id");
-    } else if (dispatchId < 0) {
-      Debug::log(Debug::Error) << "Dispatch ids may not be negative" << Debug::flush;
-      *exception = makeException("Dispatch ids may not be negative");
-    } else {
-      Value v = ServerMethods::getProperty(*channel, this, tracker->getObjectId(), dispatchId);
-      toReturn = makeValueRef(v);
-    }
-  }
-
-  return toReturn;
-}
-
-bool WebScriptSessionHandler::javaObjectHasPropertyImpl (TrackingDataRef tracker, JSObjectRef object, JSStringRef propertyName) {
-  // The property name must either be "toString" or a number
-  int maxLength = JSStringGetMaximumUTF8CStringSize(propertyName);
-  scoped_array<char> propertyNameChars(new char[maxLength]);
-  JSStringGetUTF8CString(propertyName, propertyNameChars.get(), maxLength);
-  if (!strcmp(propertyNameChars.get(), "toString")) {
-    return true;
-  }
-
-  char* endptr;
-  int dispatchId = strtol(propertyNameChars.get(), &endptr, 10);
-
-  if (*endptr != '\0') {
-    return false;
-  } else if (dispatchId < 0) {
-    return false;
-  } else {
-    return true;
-  }
-}
-
-bool WebScriptSessionHandler::javaObjectSetPropertyImpl (TrackingDataRef tracker, JSObjectRef object,
-                                                         JSStringRef propertyName, JSValueRef jsValue,
-                                                         JSValueRef* exception) {
-
-  if (crashHandler->hasCrashed()) {
-    Debug::log(Debug::Debugging) << "Not executing since we have crashed" << Debug::flush;
-    return true;
-  }
-
-  int maxLength = JSStringGetMaximumUTF8CStringSize(propertyName);
-  scoped_array<char> propertyNameChars(new char[maxLength]);
-  JSStringGetUTF8CString(propertyName, propertyNameChars.get(), maxLength);
-  Value value;
-
-  char* endptr;
-  int dispatchId = strtol(propertyNameChars.get(), &endptr, 10);
-
-  if (*endptr != '\0') {
-    // TODO Figure out the right policy here; when we throw a Java object, JSCore wants to
-    // add expandos to record stack information.  It would be possible to map the limited
-    // number of properties into a synthetic causal exception in the exception being thrown.
-  } else if (dispatchId < 0) {
-    // Do nothing.
-    Debug::log(Debug::Error) << "Dispatch ids may not be negative" << Debug::flush;
-    *exception = makeException("Dispatch ids may not be negative");
-  } else {
-
-    makeValue(value, jsValue);
-
-    if (!ServerMethods::setProperty(*channel, this, tracker->getObjectId(), dispatchId, value)) {
-      char message[50];
-      snprintf(message, sizeof(message), "Unable to set value object %i dispatchId %i", tracker->getObjectId(), dispatchId);
-      *exception = makeException(message);
-    }
-  }
-
-  // true means to not try to follow the prototype chain; not an indication of success
-  return true;
-}
-
-void WebScriptSessionHandler::loadJsni(HostChannel& channel, const std::string& js) {
-  Debug::log(Debug::Spam) << "loadJsni " << js << Debug::flush;
-  JSValueRef localException = NULL;
-
-  JSStringRef script = JSStringCreateWithUTF8CString(js.c_str());
-  JSEvaluateScript(contextRef, script, NULL, NULL, NULL, &localException);
-  JSStringRelease(script);
-
-  if (localException) {
-    // TODO Exception handling
-    Debug::log(Debug::Error) << "Exception thrown during loadJsni" << Debug::flush;
-  } else {
-    Debug::log(Debug::Spam) << "Success" << Debug::flush;
-  }
-}
-
-JSValueRef WebScriptSessionHandler::makeException(const char* message) {
-  JSValueRef localException = NULL;
-  JSObjectRef global = JSContextGetGlobalObject(contextRef);
-
-  JSStringRef errorName = JSStringCreateWithUTF8CString("Error");
-  JSValueRef errorValue = JSObjectGetProperty(contextRef, global, errorName, &localException);
-  JSStringRelease(errorName);
-
-  if (!JSValueIsObject(contextRef, errorValue)) {
-    initiateAutodestructSequence(__PRETTY_FUNCTION__, "Could not get reference to Error");
-    return JSValueMakeUndefined(contextRef);
-  }
-
-  JSObjectRef errorObject = (JSObjectRef) errorValue;
-
-  if (!JSObjectIsFunction(contextRef, errorObject)) {
-    initiateAutodestructSequence(__PRETTY_FUNCTION__, "Error was not a function");
-    return JSValueMakeUndefined(contextRef);
-  }
-
-  JSValueRef args[1];
-  JSStringRef messageJs = JSStringCreateWithUTF8CString(message);
-  args[0] = JSValueMakeString(contextRef, messageJs);
-  JSStringRelease(messageJs);
-
-  return JSObjectCallAsConstructor(contextRef, errorObject, 1, args, &localException);
-}
-
-void WebScriptSessionHandler::makeExceptionValue(Value& value, const char* message) {
-  makeValue(value, makeException(message));
-}
-
-JSObjectRef WebScriptSessionHandler::makeJavaWrapper(int objId) {
-  Debug::log(Debug::Spam) << "Creating wrapper for Java object " << objId << Debug::flush;
-
-  TrackingDataRef data = new TrackingData(this, objId);
-  return JSObjectMake(contextRef, javaObjectWrapperClass,
-                      const_cast<TrackingData*>(data));
-}
-
-JSValueRef WebScriptSessionHandler::makeValueRef(const Value& v) {
-  std::map<int, JSObjectRef>::iterator i;
-  switch (v.getType()) {
-    case Value::NULL_TYPE:
-      return JSValueMakeNull(contextRef);
-
-    case Value::BOOLEAN:
-      return JSValueMakeBoolean(contextRef, v.getBoolean());
-
-    case Value::BYTE:
-      return JSValueMakeNumber(contextRef, v.getByte());
-
-    case Value::CHAR:
-      return JSValueMakeNumber(contextRef, v.getChar());
-
-    case Value::SHORT:
-      return JSValueMakeNumber(contextRef, v.getShort());
-
-    case Value::INT:
-      return JSValueMakeNumber(contextRef, v.getInt());
-
-    case Value::LONG:
-      return JSValueMakeNumber(contextRef, v.getLong());
-
-    case Value::FLOAT:
-      return JSValueMakeNumber(contextRef, v.getFloat());
-
-    case Value::DOUBLE:
-      return JSValueMakeNumber(contextRef, v.getDouble());
-
-    case Value::STRING:
-    {
-      std::string stringValue = v.getString();
-
-      // We need to handle the conversion ourselves to be able to get both
-      // UTF8 encoding as well as explicit control over the length of the string
-      // due to the possibility of null characters being part of the data
-      CFStringRef cfString = CFStringCreateWithBytesNoCopy(NULL, (UInt8*)stringValue.data(),
-                                                           stringValue.length(), kCFStringEncodingUTF8,
-                                                           false, kCFAllocatorNull);
-      JSStringRef stringRef = JSStringCreateWithCFString(cfString);
-      JSValueRef toReturn = JSValueMakeString(contextRef, stringRef);
-      JSStringRelease(stringRef);
-      CFRelease(cfString);
-      return toReturn;
-    }
-
-    case Value::JAVA_OBJECT:
-    {
-      unsigned javaId = v.getJavaObjectId();
-      JSObjectRef ref;
-
-      pthread_mutex_lock(&javaObjectsLock);
-      i = javaObjectsById.find(javaId);
-
-      /*
-       * It's possible that we've already finalized the JsObjectRef that
-       * represented the object with the given id.  If so, we must remove it
-       * from the list of finalized object ids to avoid prematurely freeing
-       * the object on the server.
-       */
-      javaObjectsToFree.erase(javaId);
-
-      if (i == javaObjectsById.end()) {
-        /*
-         * We don't call JSValueProtect so that the JavaObject peer can be
-         * garbage-collected during the lifetime of the program.  Object
-         * identity is maintained as long as the object hasn't been finalized.
-         * If it had been finalized, then there wouldn't be an object to use
-         * as a basis for identity comparison.
-         *
-         * NB: The act of creating the wrapper may trigger a GC.
-         */
-        ref = makeJavaWrapper(javaId);
-
-        javaObjectsById[javaId] = ref;
-
-      } else {
-        ref = i->second;
-      }
-      pthread_mutex_unlock(&javaObjectsLock);
-
-
-      return ref;
-    }
-
-    case Value::JS_OBJECT:
-    {
-      int jsId = v.getJsObjectId();
-
-      i = jsObjectsById.find(jsId);
-      if (i == jsObjectsById.end()) {
-        char errMsg[50];
-        snprintf(errMsg, sizeof(errMsg), "Missing JsObject with id %i", jsId);
-        return makeException(errMsg);
-
-      } else {
-        return i->second;
-      }
-    }
-
-    case Value::UNDEFINED:
-      return JSValueMakeUndefined(contextRef);
-
-    default:
-    {
-      char message[50];
-      snprintf(message, sizeof(message), "Could not convert %s", v.toString().c_str());
-      initiateAutodestructSequence(__PRETTY_FUNCTION__, message);
-      return makeException(message);
-    }
-  }
-}
-
-bool WebScriptSessionHandler::makeValue(Value& ret, JSValueRef v) {
-  JSValueRef localException = NULL;
-
-  if (JSValueIsNull(contextRef, v)) {
-    ret.setNull();
-
-  } else if (JSValueIsUndefined(contextRef, v)) {
-    ret.setUndefined();
-
-  } else if (JSValueIsBoolean(contextRef, v)) {
-    ret.setBoolean(JSValueToBoolean(contextRef, v));
-
-  } else if (JSValueIsNumber(contextRef, v)) {
-    double d = JSValueToNumber(contextRef, v, &localException);
-    int i = round(d);
-    if (i == d) {
-      ret.setInt(i);
-    } else {
-      ret.setDouble(d);
-    }
-
-  } else if (JSValueIsString(contextRef, v) ||
-             JSValueIsInstanceOfConstructor(contextRef, v, stringConstructor, &localException)) {
-    return makeValueFromString(ret, v);
-
-  } else if (JSValueIsObjectOfClass(contextRef, v, javaObjectWrapperClass)) {
-    // It's one of our Java object proxies
-    JSObjectRef objectRef = JSValueToObject(contextRef, v, &localException);
-
-    if (!localException) {
-      TrackingDataRef tracker = (TrackingDataRef) JSObjectGetPrivate(objectRef);
-      int objId = tracker->getObjectId();
-      ret.setJavaObject(objId);
-      Debug::log(Debug::Spam) << "Made a Java object Value " << objId << Debug::flush;
-    }
-
-  } else if (JSValueIsObject(contextRef, v)) {
-    JSObjectRef objectRef = JSValueToObject(contextRef, v, &localException);
-    if (!localException) {
-      /*
-       * Then this is just a plain-old JavaScript Object.  Because JSCore
-       * doesn't retain private data for objects derived from the built-in
-       * Object type, we'll simply revert to using a pair of maps to provide
-       * a 1:1 mapping of JSObjectRefs and ints.
-       */
-      std::map<JSObjectRef, int>::iterator i = jsIdsByObject.find(objectRef);
-      if (i != jsIdsByObject.end()) {
-        // We've seen the object before
-        ret.setJsObjectId(i->second);
-      } else {
-        // Allocate a new id
-        int objId = ++jsObjectId;
-        JSValueProtect(contextRef, objectRef);
-
-        jsObjectsById[objId] = objectRef;
-        jsIdsByObject[objectRef] = objId;
-
-        ret.setJsObjectId(objId);
-        Debug::log(Debug::Spam) << "Made JS Value " << objId << Debug::flush;
-      }
-    }
-  } else {
-    Debug::log(Debug::Error) << "Unhandled JSValueRef -> Value conversion in plugin" << Debug::flush;
-    ret.setString("Unhandled JSValueRef -> Value conversion in plugin");
-  }
-
-  if (localException) {
-    makeValue(ret, localException);
-    return true;
-  } else {
-    return false;
-  }
-}
-
-bool WebScriptSessionHandler::makeValueFromString(Value& ret, JSValueRef value) {
-  JSValueRef localException = NULL;
-
-  JSStringRef jsString = JSValueToStringCopy(contextRef, value, &localException);
-  if (localException) {
-    makeValue(ret, localException);
-    return true;
-  }
-
-  CFStringRef cfString = JSStringCopyCFString(NULL, jsString);
-  JSStringRelease(jsString);
-
-  CFIndex cfLength = CFStringGetLength(cfString);
-  CFIndex maxLength = CFStringGetMaximumSizeForEncoding(cfLength, kCFStringEncodingUTF8);
-  scoped_array<char> utf8(new char[maxLength]);
-
-  CFIndex numBytes;
-  CFStringGetBytes(cfString, CFRangeMake(0, cfLength), kCFStringEncodingUTF8,
-                   0, false, (UInt8*) utf8.get(), maxLength, &numBytes);
-  CFRelease(cfString);
-
-  ret.setString(utf8.get(), numBytes);
-  Debug::log(Debug::Spam) << "Made a string Value " << ret.getString() << Debug::flush;
-  return false;
-}
diff --git a/plugins/webkit/Core/WebScriptSessionHandler.h b/plugins/webkit/Core/WebScriptSessionHandler.h
deleted file mode 100644
index 5e05385..0000000
--- a/plugins/webkit/Core/WebScriptSessionHandler.h
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include <map>
-#include <set>
-#import "Debug.h"
-#import "HostChannel.h"
-#import "JavaScriptCore/JavaScriptCore.h"
-#import "pthread.h"
-#import "TrackingData.h"
-
-class CrashHandler {
-public:
-  virtual void crash(const char* functionName, const char* message) = 0;
-  virtual bool hasCrashed() = 0;
-};
-typedef CrashHandler* CrashHandlerRef;
-
-/*
- * This comprises the guts of the JavaScriptCore-specific code and is
- * responsible for message dispatch and value conversion.  This class should
- * be portable to any runtime that uses JavaScriptCore.
- */
-class WebScriptSessionHandler : public SessionHandler, public SessionData  {
-public:
-  WebScriptSessionHandler(HostChannel* channel, JSGlobalContextRef contextRef,
-                          CrashHandler* crashHandler);
-
-  /*
-   * Invoking the destructor will perform a clean shutdown of the OOPHM session.
-   */
-  ~WebScriptSessionHandler();
-
-  /*
-   * This is a panic method for shutting down the OOPHM debugging session due
-   * to unrecoverable errors.
-   */
-  void initiateAutodestructSequence(const char* functionName, const char* message);
-
-  /*
-   * Invoke a Java method.
-   */
-  JSValueRef javaFunctionCallbackImpl(int dispatchId,
-                                      JSObjectRef thisObject,
-                                      size_t argumentCount,
-                                      const JSValueRef arguments[],
-                                      JSValueRef* exception);
-
-  /*
-   * Finalize a Javo object proxy.
-   */
-  void javaObjectFinalizeImpl(int objId);
-
-  /*
-   * Determine if a Java class has a named property.
-   */
-  bool javaObjectHasPropertyImpl(TrackingDataRef tracker, JSObjectRef object,
-                                JSStringRef propertyName);
-
-  /*
-   * Obtain the value of named property of an object.
-   */
-  JSValueRef javaObjectGetPropertyImpl(TrackingDataRef tracker, JSObjectRef object,
-                                       JSStringRef propertyName, JSValueRef* exception);
-
-  /*
-   * Set the value of a named property on a Java object.
-   */
-  bool javaObjectSetPropertyImpl(TrackingDataRef tracker, JSObjectRef object,
-                                 JSStringRef propertyName, JSValueRef value,
-                                 JSValueRef* exception);
-
-  /*
-   * Create a JavaScript Error object with the given message.
-   */
-  JSValueRef makeException(const char* message);
-
-protected:
-  virtual void disconnectDetectedImpl();
-  virtual void fatalError(HostChannel& channel, const std::string& message);
-  virtual void freeValue(HostChannel& channel, int idCount, const int* ids);
-  virtual void loadJsni(HostChannel& channel, const std::string& js);
-  virtual bool invoke(HostChannel& channel, const Value& thisObj, const std::string& methodName,
-                      int numArgs, const Value* const args, Value* returnValue);
-  virtual bool invokeSpecial(HostChannel& channel, SpecialMethodId method, int numArgs,
-                             const Value* const args, Value* returnValue);
-  virtual void sendFreeValues(HostChannel& channel);
-
-private:
-  CrashHandlerRef const crashHandler;
-  int jsObjectId;
-  std::map<int, JSObjectRef> javaObjectsById;
-  std::set<int> javaObjectsToFree;
-  pthread_mutex_t javaObjectsLock;
-  std::map<int, JSObjectRef> jsObjectsById;
-  std::map<JSObjectRef, int> jsIdsByObject;
-  JSClassRef javaObjectWrapperClass;
-
-  /* A reference to __gwt_makeResult, which we use constantly */
-  JSObjectRef makeResultFunction;
-
-  /* The String() function */
-  JSObjectRef stringConstructor;
-
-  /*
-   * Free server-side references.
-   */
-  void freeJavaObjects();
-
-  /*
-   * Create a exception Value that contains the given message.
-   */
-  void makeExceptionValue(Value& value, const char* message);
-
-  /*
-   * Create a Java object proxy to be passed into the JavaScript execution
-   * environment.
-   */
-  JSObjectRef makeJavaWrapper(int objId);
-
-  /*
-   * Convert a value from the JavaScript into something that can be sent back
-   * to the OOPHM host.
-   *
-   * Returns true if an exception was encountered.
-   */
-  bool makeValue(Value& ret, JSValueRef value);
-
-  /*
-   * Convert a string-like object to something that can be sent back to the OOPHM
-   * host.
-   *
-   * Returns true if an exception was encountered.
-   */
-  bool makeValueFromString(Value& ret, JSValueRef value);
-
-  /*
-   * Convert a value from the OOPHM host into something that can be passed into
-   * the JavaScript execution environment.
-   */
-  JSValueRef makeValueRef(const Value& value);
-};
-typedef WebScriptSessionHandler* WebScriptSessionHandlerRef;
-
diff --git a/plugins/webkit/English.lproj/InfoPlist.strings b/plugins/webkit/English.lproj/InfoPlist.strings
deleted file mode 100644
index 92beb1a..0000000
--- a/plugins/webkit/English.lproj/InfoPlist.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Localized versions of Info.plist keys */
-
-NSHumanReadableCopyright = "© Google Inc, 2008";
diff --git a/plugins/webkit/Info.plist b/plugins/webkit/Info.plist
deleted file mode 100644
index 79fa629..0000000
--- a/plugins/webkit/Info.plist
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>English</string>
-	<key>CFBundleExecutable</key>
-	<string>${EXECUTABLE_NAME}</string>
-	<key>CFBundleIconFile</key>
-	<string>gwtlogo</string>
-	<key>CFBundleIdentifier</key>
-	<string>com.google.gwt.plugin</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleName</key>
-	<string>${PRODUCT_NAME}</string>
-	<key>CFBundlePackageType</key>
-	<string>WBPL</string>
-	<key>CFBundleSignature</key>
-	<string>????</string>
-	<key>CFBundleVersion</key>
-	<string>0.9</string>
-	<key>NSPrincipalClass</key>
-	<string>OophmPlugin</string>
-	<key>WebPluginDescription</key>
-	<string>Google Web Toolkit Developer Plugin</string>
-	<key>WebPluginMIMETypes</key>
-	<dict>
-		<key>application/x-gwt-dev-mode</key>
-		<dict>
-			<key>WebPluginTypeDescription</key>
-			<string>Google Web Toolkit Development Mode</string>
-		</dict>
-		<key>application/x-gwt-hosted-mode</key>
-		<dict>
-			<key>WebPluginTypeDescription</key>
-			<string>Google Web Toolkit Development Mode (Legacy)</string>
-		</dict>
-	</dict>
-	<key>WebPluginName</key>
-	<string>${PRODUCT_NAME}</string>
-</dict>
-</plist>
diff --git a/plugins/webkit/Plugin/Debug.mm b/plugins/webkit/Plugin/Debug.mm
deleted file mode 100644
index 6cc8edf..0000000
--- a/plugins/webkit/Plugin/Debug.mm
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#include <Debug.h>
-
-static NSMutableString* const buffer = [[NSMutableString alloc] initWithCapacity:1024];
-
-Debug::DebugStream& Debug::flush(Debug::DebugStream& dbg) {
-  Debug::logFinish();
-  return dbg;
-}
-
-void Debug::logStart(Debug::LogLevel level) {
-}
-
-void Debug::logFinish() {
-  NSLog(buffer);
-  [buffer setString:@""];
-}
-
-void Debug::logString(const char* str) {
-  [buffer appendString:[NSString stringWithUTF8String:str]];
-}
diff --git a/plugins/webkit/Plugin/English.lproj/crash.html b/plugins/webkit/Plugin/English.lproj/crash.html
deleted file mode 100644
index dbf47e0..0000000
--- a/plugins/webkit/Plugin/English.lproj/crash.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<html>
-<head>
-<title>GWT Development Mode Failure</title>
-<style>
-* { 
-  font-family: sans-serif;
-}
-
-h1 {
-  background: blue;
-  color: white; 
-  padding: 0.25em
-}
-
-#r {
-  width:100%; 
-  white-space: pre-wrap; 
-  font-family: monospace;
-}
-
-</style>
-</head>
-<body>
-
-<h1>GWT Development Mode Failure</h1>
-
-<p>The development mode plugin encountered a fatal error&mdash;did you stop your code server?</p>
-
-<p>You can try to restart your web application by <a href='javascript:window.location.reload()'>reloading this page</a>.</p>
-
-<hr/>
-
-<div id="r" wrap="off">
-__MESSAGE__
-
-System version: __SYSTEM_VERSION__
-
-__USER_AGENT__
-
-Compilation time: __DATE__ __TIME__
-</textarea>
-</body>
-</html>
diff --git a/plugins/webkit/Plugin/NSMutableString+HtmlReplacement.h b/plugins/webkit/Plugin/NSMutableString+HtmlReplacement.h
deleted file mode 100644
index 57da6e3..0000000
--- a/plugins/webkit/Plugin/NSMutableString+HtmlReplacement.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#import <Cocoa/Cocoa.h>
-#import "GTMNSString+HTML.h"
-
-/*
- * This adds a convenience method to add HTML-escaped text to an NSMutableString.
- */
-@interface NSMutableString (NSMutableStringWithHtmlReplacement)
-- (void)replacePattern:(NSString*)pattern
-     withStringLiteral:(NSString*)replacement;
-@end
diff --git a/plugins/webkit/Plugin/NSMutableString+HtmlReplacement.m b/plugins/webkit/Plugin/NSMutableString+HtmlReplacement.m
deleted file mode 100644
index ed0f62b..0000000
--- a/plugins/webkit/Plugin/NSMutableString+HtmlReplacement.m
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#import "NSMutableString+HtmlReplacement.h"
-
-@implementation NSMutableString (NSMutableStringWithHtmlReplacement)
-- (void)replacePattern:(NSString*)pattern
-     withStringLiteral:(NSString*)replacement {
-  [self replaceOccurrencesOfString:pattern
-                        withString:[replacement gtm_stringByEscapingForHTML]
-                           options:NSLiteralSearch
-                             range:NSMakeRange(0, [self length])];
-}
-@end
diff --git a/plugins/webkit/Plugin/OophmPlugin.h b/plugins/webkit/Plugin/OophmPlugin.h
deleted file mode 100644
index 96d0ed3..0000000
--- a/plugins/webkit/Plugin/OophmPlugin.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#import <Cocoa/Cocoa.h>
-#import <WebKit/WebKit.h>
-#import <WebKit/WebPlugin.h>
-#import "Debug.h"
-#import "OophmWebScriptObject.h"
-#import "SlowScriptProxy.h"
-#import "WebFrameNonTigerHeaders.h"
-
-/*
- * This provides the entrypoint for the WebKit plugin.  This class performs
- * any necessary environmental configuration and provides the scripting object
- * that represents the plugin in the JavaScript environment.
- */
-@interface OophmPlugin : NSView <WebPlugInViewFactory> {
-@private
-  OophmWebScriptObject* _scriptObject;
-  id _slowScriptProxy;
-}
-
-/*
- * Defined by the WebPlugInViewFactory protocol to construct an instance of
- * the plugin.
- */
-+ (NSView *)plugInViewWithArguments:(NSDictionary *)arguments;
-- (void)dealloc;
-
-/*
- * Called by plugInViewWithArguments to initialize the instance of the plugin.
- */
-- (id)initWithArguments:(NSDictionary *)arguments;
-
-/*
- * Specified by the WebPlugIn informal protocol to obtain an object whose
- * methods will be exposed to the scripting environment.
- */
-- (id)objectForWebScript;
-
-/*
- * Defined by WebPlugIn and called when the plugin should shut down.
- */
-- (void)webPlugInDestroy;
-@end
diff --git a/plugins/webkit/Plugin/OophmPlugin.mm b/plugins/webkit/Plugin/OophmPlugin.mm
deleted file mode 100644
index b4c3338..0000000
--- a/plugins/webkit/Plugin/OophmPlugin.mm
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#import "OophmPlugin.h"
-#import "OophmWebScriptObject.h"
-#import "SlowScriptProxy.h"
-
-@interface OophmPlugin (Private)
-/* Tell GoogleSoftwareUpdate the plugin is being used */
-- (void)recordActive;
-@end
-
-@implementation OophmPlugin
-+ (NSView *)plugInViewWithArguments:(NSDictionary *)arguments {
-  return [[[OophmPlugin alloc] initWithArguments: arguments] autorelease];
-}
-
-- (void)dealloc {
-  Debug::log(Debug::Info) << "Plugin deallocated" << Debug::flush;
-  [super dealloc];
-}
-
-- (id)initWithArguments:(NSDictionary *)arguments {
-  Debug::log(Debug::Info) << "Plugin starting" << Debug::flush;
-  self = [super initWithFrame: NSZeroRect];
-  if (!self) {
-    return nil;
-  }
-
-  id container = [[arguments objectForKey:WebPlugInContainerKey] retain];
-  WebFrame* frame = [container webFrame];
-  JSGlobalContextRef contextRef = [frame globalContext];
-  _scriptObject = [[OophmWebScriptObject scriptObjectWithContext:contextRef withWebView:[frame webView]] retain];
-
-  /*
-   * Install a proxy to prevent slow script warnings from being shown by hijacking
-   * the message sent to the original UIDelegate.  We could also use this to prevent
-   * window.alert and window.prompt from blocking test code.
-   */
-  WebView* view = [frame webView];
-  _slowScriptProxy = [[SlowScriptProxy alloc] initWithWebView: view];
-  if ([_slowScriptProxy respondsToSelector:@selector(webView:setStatusText:)]) {
-    [_slowScriptProxy webView:view setStatusText:@"GWT Developer Plugin Active"];
-  }
-
-  [self recordActive];
-
-  return self;
-}
-
-- (id)objectForWebScript {
-  return _scriptObject;
-}
-
-- (void)webPlugInDestroy {
-  Debug::log(Debug::Info) << "Destroying plugin" << Debug::flush;
-  [_scriptObject release];
-  _scriptObject = nil;
-  
-  if ([_slowScriptProxy respondsToSelector:@selector(webView:setStatusText:)]) {
-    [_slowScriptProxy webView:[_slowScriptProxy webView] 
-                      setStatusText:@"GWT OOPHM Session Ended"];
-  }
-  [_slowScriptProxy release];
-  _slowScriptProxy = nil;
-}
-@end
-
-@implementation OophmPlugin (Private)
-// Touch a file in ~/Library/Google/GoogleSoftwareUpdate/Actives
-- (void)recordActive {
-  NSFileManager* manager = [[NSFileManager alloc] init];
-  [manager autorelease];
-  NSError* error = NULL;
-
-  NSString* activesDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Google/GoogleSoftwareUpdate/Actives"];
-  Debug::log(Debug::Info) << "Ensuring directory " << [activesDirectory UTF8String] << Debug::flush;
-  if (![manager createDirectoryAtPath:activesDirectory withIntermediateDirectories:YES attributes:nil error:&error]) {
-    Debug::log(Debug::Error) << "Unable to create actives directory " << [activesDirectory UTF8String] <<
-        ": " << [[error localizedDescription] UTF8String] << Debug::flush;
-    return;
-  }
-
-  // Add the product id
-  NSString* file = [activesDirectory stringByAppendingPathComponent:@"com.google.gwt.dev.plugin.safari"];
-
-  // Create an empty file using an empty NSData object
-  if (![manager createFileAtPath:file contents:[NSData data] attributes:nil]) {
-    Debug::log(Debug::Error) << "Unable to create actives file" << Debug::flush;
-    return;
-  }
-
-  Debug::log(Debug::Info) << "Created actives file " << [file UTF8String] << Debug::flush;
-}
-@end
\ No newline at end of file
diff --git a/plugins/webkit/Plugin/OophmWebScriptObject.h b/plugins/webkit/Plugin/OophmWebScriptObject.h
deleted file mode 100644
index ee435d5..0000000
--- a/plugins/webkit/Plugin/OophmWebScriptObject.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#import <JavaScriptCore/JavaScriptCore.h>
-#import "HostChannel.h"
-#import "WebScriptSessionHandler.h"
-
-@interface OophmWebScriptObject : NSObject {
-@private
-  JSGlobalContextRef _contextRef;
-  CrashHandlerRef _crashHandler;
-  BOOL _hasCrashed;
-  HostChannel* _hostChannel;
-  WebScriptSessionHandlerRef _sessionHandler;
-  WebView* _webView;
-}
-+ (void)initialize;
-+ (BOOL)isSelectorExcludedFromWebScript: (SEL)selector;
-+ (OophmWebScriptObject*)scriptObjectWithContext: (JSGlobalContextRef)context
-                                     withWebView: (WebView*) webView;
-+ (NSString*)webScriptNameForSelector: (SEL)selector;
-- (BOOL)initForWebScriptWithJsniContext: (WebScriptObject*) jsniContext;
-- (BOOL)connectWithUrl: (NSString*) url
-        withSessionKey: (NSString*) sessionKey
-              withHost: (NSString*) host
-        withModuleName: (NSString*) moduleName
- withHostedHtmlVersion: (NSString*) hostedHtmlVersion;
-- (void)crashWithMessage: (NSString*)message;
-- (void)dealloc;
-- (void)finalizeForWebScript;
-@end
-
diff --git a/plugins/webkit/Plugin/OophmWebScriptObject.mm b/plugins/webkit/Plugin/OophmWebScriptObject.mm
deleted file mode 100644
index 040b766..0000000
--- a/plugins/webkit/Plugin/OophmWebScriptObject.mm
+++ /dev/null
@@ -1,420 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#include <map>
-#import <JavaScriptCore/JavaScriptCore.h>
-#import <WebKit/WebKit.h>
-#import "BrowserChannel.h"
-#import "Debug.h"
-#import "GTMSystemVersion.h"
-#import "NSMutableString+HtmlReplacement.h"
-#import "LoadModuleMessage.h"
-#import "OophmWebScriptObject.h"
-#import "SessionHandler.h"
-#import "AllowedConnections.h"
-
-/*
- * This is a helper shim to bridge crash events from the core cpp code to the
- * objc plugin and UI layer.
- */
-class PluginCrashHandler : public CrashHandler {
-public:
-  PluginCrashHandler(OophmWebScriptObject* obj) : obj(obj) {
-  }
-  
-  virtual void crash(const char* functionName, const char* message) {
-    Debug::log(Debug::Error) << "Crashing with message: "<< message << Debug::flush;
-    NSString* str = [NSString stringWithFormat:@"%s\n\n%s", message, functionName];
-    [obj crashWithMessage:str];
-  }
-  virtual bool hasCrashed();
-private:
-  OophmWebScriptObject* const obj;
-};
-
-@interface OophmWebScriptObject (Private)
-+ (void)logAndThrowString: (NSString*)message;
-- (void)addAllowedHost: (NSString*)host;
-- (BOOL)hasCrashed;
-- (void)connectAlertDidEnd: (NSAlert*)alert
-                returnCode: (int)returnCode
-               contextInfo: (void*)contextInfo;
-- (BOOL)doConnectWithUrl: (NSString*) url
-          withSessionKey: (NSString*) sessionKey
-                withHost: (NSString*) host
-              withModule: (NSString*) moduleName
-   withHostedHtmlVersion: (NSString*) hostedHtmlVersion;
-	
-@end
-
-// This is declared here so that we can access the category method
-bool PluginCrashHandler::hasCrashed() {
-  return [obj hasCrashed] ? true : false;
-}
-
-@implementation OophmWebScriptObject
-+ (void)initialize {
-  // Add the plugin's bundle name to the user defaults search path
-  NSBundle* pluginBundle = [NSBundle bundleForClass:[OophmWebScriptObject class]];
-  NSString* bundleIdentifier = [pluginBundle bundleIdentifier];
-  NSUserDefaults* shared = [NSUserDefaults standardUserDefaults];
-  [shared addSuiteNamed:bundleIdentifier];
-}
-
-+ (BOOL)isSelectorExcludedFromWebScript:(SEL)selector {
-  if (selector == @selector(initForWebScriptWithJsniContext:)) {
-    return NO;
-  } else if (selector == @selector(connectWithUrl:withSessionKey:withHost:withModuleName:withHostedHtmlVersion:)) {
-    return NO;
-  } else if (selector == @selector(crashWithMessage:)) {
-    return NO;
-  }
-
-  return YES;
-}
-
-+ (OophmWebScriptObject*)scriptObjectWithContext: (JSGlobalContextRef) context
-                                     withWebView: (WebView*) webView {
-  JSGlobalContextRetain(context);
-  OophmWebScriptObject* obj = [[[OophmWebScriptObject alloc] init] autorelease];
-  obj->_contextRef = context;
-  obj->_webView = [webView retain];
-  return obj;
-}
-
-+ (NSString*)webScriptNameForSelector: (SEL)selector {
-  if (selector == @selector(initForWebScriptWithJsniContext:)) {
-    return @"init";
-  } else if (selector == @selector(connectWithUrl:withSessionKey:withHost:withModuleName:withHostedHtmlVersion:)) {
-    return @"connect";
-  } else if (selector == @selector(crashWithMessage:)) {
-    return @"crash";
-  }
-  return nil;
-}
-
-// Simply return true to indicate the plugin was successfully loaded and
-// reachable.
-- (BOOL)initForWebScriptWithJsniContext: (WebScriptObject*) jsniContext {
-  return YES;
-}
-
-- (BOOL)connectWithUrl: (NSString*) url
-        withSessionKey: (NSString*) sessionKey
-              withHost: (NSString*) host
-        withModuleName: (NSString*) moduleName
- withHostedHtmlVersion: (NSString*) hostedHtmlVersion {
-
-  NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
-
-  // See if authentication has been bypassed
-  if ([defaults boolForKey:@"allowAll"]) {
-    return [self doConnectWithUrl:url withSessionKey:sessionKey withHost:host
-        withModule:moduleName withHostedHtmlVersion:hostedHtmlVersion];
-  }
-  
-  // TODO(jat): do this only once, refactor to a separate method
-  NSArray* allowedHosts = [defaults arrayForKey:@"allowedHosts"];
-  if (allowedHosts != nil) {
-    AllowedConnections::clearRules();
-    int n = [allowedHosts count];
-    for (int i = 0; i < n; ++i) {
-      NSString* entry = [allowedHosts objectAtIndex:i];
-      std::string hostName = [entry UTF8String];
-      std::string codeServer = "localhost";
-      int len = hostName.length();
-      bool exclude = false;
-      if (len > 0) {
-        if (len > 1 && hostName[0] == '!') {
-          exclude = true;
-          hostName = hostName.substr(1);
-        }
-        int slash = hostName.find("/");
-        if( slash > 0 && slash != std::string::npos ) {
-            codeServer = hostName.substr(slash+1);
-            hostName = hostName.substr(0,slash);
-        }
-        AllowedConnections::addRule(hostName, codeServer, exclude);
-      }
-    }
-  }
-
-  const std::string urlStr = [url UTF8String];
-  bool allowed = false;
-
-  if (AllowedConnections::matchesRule(AllowedConnections::getHostFromUrl(urlStr), 
-                                      AllowedConnections::getCodeServerFromUrl(urlStr),
-                                      &allowed) )
-  {
-    if (allowed) {
-      return [self doConnectWithUrl:url withSessionKey:sessionKey withHost:host
-          withModule:moduleName withHostedHtmlVersion:hostedHtmlVersion];
-    } else {
-      return YES;
-    }
-  }
-
-  // Otherwise, bring up an alert dialog
-  // TODO(jat): add an include/exclude option, currently treat as only include
-  NSAlert* alert = [NSAlert alertWithMessageText:@"Initiate development mode session"
-                                   defaultButton:@"Deny"
-                                 alternateButton:nil
-                                     otherButton:@"Allow"
-                       informativeTextWithFormat:@"The current web-page would like to initiate a development-mode connection to %@", host];
-  
-  if ([alert respondsToSelector:@selector(setShowsSuppressionButton:)]) {
-    [alert setShowsSuppressionButton:YES];
-    [[alert suppressionButton] setTitle:@"Remember this decision for this server"];
-  } else {
-    [[alert addButtonWithTitle:@"Always allow"] setTag:NSAlertAlternateReturn];
-  }
-  
-  NSBundle* bundle = [NSBundle bundleForClass:[OophmWebScriptObject class]];
-	NSArray* contextArray = [[NSArray arrayWithObjects:[url retain],
-      [sessionKey retain], [host retain], [moduleName retain],
-      [hostedHtmlVersion retain], nil] retain];
-  NSString* imagePath = [bundle pathForImageResource:@"gwtlogo"];
-  if (imagePath != nil) {
-    NSImage* img = [[[NSImage alloc] initByReferencingFile:imagePath] autorelease];
-    [alert setIcon:img];
-  }
-  
-  [alert beginSheetModalForWindow:[_webView hostWindow]
-                    modalDelegate:self
-                   didEndSelector:@selector(connectAlertDidEnd:returnCode:contextInfo:)
-                      contextInfo:contextArray];
-  return YES;
-}
-
-- (void)crashWithMessage: (NSString*)message {
-  if (self->_hasCrashed) {
-    return;
-  }
-  self->_hasCrashed = YES;
-  
-#ifdef GWT_DEBUGDISABLE
-  // We'll call out to the JS support function
-  JSGlobalContextRef contextRef = self->_contextRef;
-  JSStringRef disconnectedName = JSStringCreateWithUTF8CString("__gwt_disconnected");
-  JSValueRef disconnected = JSObjectGetProperty(contextRef, JSContextGetGlobalObject(contextRef), disconnectedName, NULL);
-  JSStringRelease(disconnectedName);
-  
-  if (JSValueIsObject(contextRef, disconnected)) {
-    // Found hosted.html's crash support
-    JSObjectRef disconnectedFunction = JSValueToObject(contextRef, disconnected, NULL);
-    JSValueRef exception = NULL;
-    JSObjectCallAsFunction(contextRef, disconnectedFunction, JSContextGetGlobalObject(contextRef), 0, NULL, &exception);
-    if (!exception) {
-      // Couldn't invoke the crash handler.
-      return;
-    }
-  }
-#endif //GWT_DEBUGDISABLE
-
-  // Use a simple crash page built into the bundle
-  NSBundle* oophmBundle = [NSBundle bundleForClass:[self class]];
-  NSString* path = [oophmBundle pathForResource:@"crash" ofType:@"html"];
-  NSMutableString* crashPage = [NSMutableString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
-  [crashPage replacePattern:@"__MESSAGE__" withStringLiteral:message];
-  
-  long major, minor, bugFix;
-  [GTMSystemVersion getMajor:&major minor:&minor bugFix:&bugFix];
-  NSString* systemVersion = [NSString stringWithFormat:@"%i.%i.%i", major, minor, bugFix];
-  [crashPage replacePattern:@"__SYSTEM_VERSION__" withStringLiteral:systemVersion];
-  
-  NSString* ua = [_webView userAgentForURL:[NSURL URLWithString:@"about:blank"]];
-  [crashPage replacePattern:@"__USER_AGENT__" withStringLiteral:ua];
-  
-  [crashPage replacePattern:@"__DATE__"
-          withStringLiteral:[NSString stringWithUTF8String:__DATE__]];
-  [crashPage replacePattern:@"__TIME__"
-          withStringLiteral:[NSString stringWithUTF8String:__TIME__]];  
-
-  NSURL* currentUrl = [[[[_webView mainFrame] dataSource] response] URL];
-
-  [[_webView mainFrame] loadAlternateHTMLString:crashPage
-                                        baseURL:[NSURL fileURLWithPath:path]
-                              forUnreachableURL:currentUrl];
-}
-
-- (void)dealloc {
-  [_webView release];  
-  delete _crashHandler;
-  [super dealloc];
-}
-
-- (void)finalizeForWebScript {
-  Debug::log(Debug::Info) << "Finalizing OophmWebScriptObject" << Debug::flush;
-
-  // Disable any lingering JS proxy objects
-  _hasCrashed = true;
-
-  // Free memory
-  delete _sessionHandler;
-  
-  if (_hostChannel) {
-    _hostChannel->disconnectFromHost();
-    delete _hostChannel;
-    _hostChannel = NULL;
-  }
-
-  if (_contextRef) {
-    JSGlobalContextRelease(_contextRef);
-    _contextRef = NULL;
-  }
-}
-@end
-
-@implementation OophmWebScriptObject (Private)
-+ (void)logAndThrowString:(NSString*)message {
-  Debug::log(Debug::Info) << "Throwing exception from WSO: " << message << Debug::flush;
-  [WebScriptObject throwException:message];
-}
-
-- (void)addAllowedHost:(NSString*)host {
-  /*
-   * This is more complicated than usual because we're not using the
-   * application's default persestent domain.  Instead, we use a plugin-specific
-   * domain.
-   */
-  NSBundle* pluginBundle = [NSBundle bundleForClass:[OophmWebScriptObject class]];
-  NSString* bundleIdentifier = [pluginBundle bundleIdentifier];
-  
-  NSUserDefaults* shared = [NSUserDefaults standardUserDefaults];
-  NSDictionary* pluginDict = [shared persistentDomainForName:bundleIdentifier];
-  NSArray* allowedHosts = [pluginDict objectForKey:@"allowedHosts"];
-  
-  //TODO(codefu): don't add duplicates
-
-  NSMutableArray* mutableHosts = [NSMutableArray arrayWithArray:allowedHosts];
-  NSMutableDictionary* mutableDict = [NSMutableDictionary dictionaryWithDictionary:pluginDict];
-  [mutableHosts addObject:host];
-  [mutableDict setObject:mutableHosts forKey:@"allowedHosts"];
-  [shared setPersistentDomain:mutableDict forName:bundleIdentifier];
-  [shared synchronize];
-}
-
-- (BOOL)hasCrashed{
-  return self->_hasCrashed;
-}
-
-- (void)connectAlertDidEnd:(NSAlert *)alert
-                returnCode:(int)returnCode
-               contextInfo:(void *)contextInfo {
-  NSArray* contextArray = (NSArray*) contextInfo;
-  NSString* url = [[contextArray objectAtIndex:0] autorelease];
-  NSString* sessionKey = [[contextArray objectAtIndex:1] autorelease];
-  NSString* host = [[contextArray objectAtIndex:2] autorelease];
-  NSString* moduleName = [[contextArray objectAtIndex:3] autorelease];
-  NSString* hostedHtmlVersion = [[contextArray objectAtIndex:4] autorelease];
-  [contextArray release];
-  
-  if (returnCode == NSAlertDefaultReturn) {
-    //TODO(codefu): save the host/codesvr as excluded ("!host")
-    //              should this require a check to verify that one is
-    //              not already whitelisted?
-    // currently: ignore exclude, re-show the modal popup on webpage reload
-    return;
-  } else if (returnCode == NSAlertAlternateReturn ||
-      [alert respondsToSelector:@selector(suppressionButton)] &&
-      [[alert suppressionButton] state] == NSOnState) {
-    // TODO(jat): simplify, handle errors
-    // Get the host part of the URL and store that
-    NSString* host = [NSString stringWithFormat: @"%@/%@",
-                      [[[[[[url componentsSeparatedByString:@"://"]
-                           objectAtIndex:1] componentsSeparatedByString:@"/"] objectAtIndex:0]
-                           componentsSeparatedByString:@":"] objectAtIndex:0],
-                      [[[[[[url componentsSeparatedByString:@"gwt.codesvr="]
-                           objectAtIndex:1] componentsSeparatedByString:@"&"] objectAtIndex:0]
-                        componentsSeparatedByString:@":"] objectAtIndex:0]];
-    [self addAllowedHost:host];
-  }
-
-  [self doConnectWithUrl:url withSessionKey:sessionKey withHost:host
-      withModule:moduleName withHostedHtmlVersion:hostedHtmlVersion];
-}
-
-- (BOOL)doConnectWithUrl: (NSString*) url
-          withSessionKey: (NSString*) sessionKey
-                withHost: (NSString*) host
-              withModule: (NSString*) moduleName
-   withHostedHtmlVersion: (NSString*) hostedHtmlVersion {
-  Debug::log(Debug::Debugging) << "connect : " << [host UTF8String] << " " <<
-      [moduleName UTF8String] << Debug::flush;
-  
-  if (_hostChannel != NULL) {
-    [OophmWebScriptObject logAndThrowString:@"Already connected"];
-    return NO;
-  }
-  
-  NSArray *parts = [host componentsSeparatedByString:@":"];
-  if ([parts count] != 2) {
-    [OophmWebScriptObject logAndThrowString:
-     [NSString stringWithFormat:@"Incorrect format for host string %i",
-      [parts count]]];
-    return NO;
-  }
-  
-  NSString *hostPart = [parts objectAtIndex:0];
-  NSString *portPart = [parts objectAtIndex:1];
-  
-  Debug::log(Debug::Debugging) << "Extracted host: " << [hostPart UTF8String] <<
-      " and port: " << [portPart UTF8String] << Debug::flush;
-  
-  char *hostAsChars = const_cast<char*>([hostPart UTF8String]);
-  unsigned portAsInt = [portPart intValue];
-  
-  _hostChannel = new HostChannel();
-  if (!_hostChannel->connectToHost(hostAsChars, portAsInt)) {
-    [OophmWebScriptObject logAndThrowString:@"HostChannel failed to connect"];
-    delete _hostChannel;
-    _hostChannel = NULL;
-    return NO;
-  }
-  
-  _crashHandler = new PluginCrashHandler(self);
-  _sessionHandler = new WebScriptSessionHandler(_hostChannel, _contextRef, _crashHandler);
-
-  std::string hostedHtmlVersionStr([hostedHtmlVersion UTF8String]);
-  // TODO: add support for a range of protocol versions when more are added.
-  if (!_hostChannel->init(_sessionHandler, BROWSERCHANNEL_PROTOCOL_VERSION,
-      BROWSERCHANNEL_PROTOCOL_VERSION, hostedHtmlVersionStr)) {
-    [OophmWebScriptObject logAndThrowString:@"HostChannel failed to initialize"];
-    _hostChannel->disconnectFromHost();
-    delete _hostChannel;
-    _hostChannel = NULL;
-    return NO;
-  }
-
-  const std::string urlStr = [url UTF8String];
-  // TODO(jat): add support for tab identity
-  const std::string tabKeyStr = "";
-  const std::string sessionKeyStr = [sessionKey UTF8String];
-  const std::string moduleNameStr = [moduleName UTF8String];
-    
-  if (!LoadModuleMessage::send(*_hostChannel, urlStr, tabKeyStr, 
-                               sessionKeyStr, moduleNameStr,
-                               "Safari DMP", _sessionHandler)) {
-    _hostChannel->disconnectFromHost();
-    delete _hostChannel;
-    _hostChannel = NULL;
-    [OophmWebScriptObject logAndThrowString:@"Unable to load module"];
-    return NO;
-  }  
-  
-  return YES;
-}
-@end
diff --git a/plugins/webkit/Plugin/SlowScriptProxy.h b/plugins/webkit/Plugin/SlowScriptProxy.h
deleted file mode 100644
index f46ab94..0000000
--- a/plugins/webkit/Plugin/SlowScriptProxy.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#import <Cocoa/Cocoa.h>
-#import <WebKit/WebKit.h>
-
-/*
- * This NSProxy is used to prevent slow-script warnings from surfacing in the
- * web browser.  This is something of a hack since the message that we want
- * to override isn't public, but there's no way to directly reset the slow-scipt
- * timer either.
- */
-@interface SlowScriptProxy : NSProxy {
-@private
-  id _target;
-  WebView* _webView;
-}
-
-/*
- * This will restore the original UIDelegate.
- */
-- (void)dealloc;
-
-/*
- * The proxy object will install itself as the UIDelegate on the given webView.
- */
-- (id)initWithWebView: (WebView*)webView;
-
-/*
- * Just delegates the invocation to the original UIDelegate.
- */
-- (void)forwardInvocation:(NSInvocation *)anInvocation;
-
-/*
- * Just delegates the invocation to the original UIDelegate.
- */
-- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector;
-
-/*
- * The WebView to which the proxy object has attached itself.
- */
-- (WebView*)webView;
-
-/*
- * This is the message that we want to intercept.
- */
-- (BOOL)webViewShouldInterruptJavaScript:(WebView *)sender;
-@end
diff --git a/plugins/webkit/Plugin/SlowScriptProxy.m b/plugins/webkit/Plugin/SlowScriptProxy.m
deleted file mode 100644
index 8798ada..0000000
--- a/plugins/webkit/Plugin/SlowScriptProxy.m
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#import "SlowScriptProxy.h"
-
-@implementation SlowScriptProxy
-- (id)initWithWebView:(WebView*)webView {
-  _target = [[webView UIDelegate] retain];
-  _webView = [webView retain];
-  [_webView setUIDelegate:self];
-  return self;
-}
-
-- (void)dealloc {
-  // Restore the original delegate
-  [_webView setUIDelegate:_target];
-  [_webView release];
-  [_target release];
-  [super dealloc];
-}
-
-- (void)forwardInvocation:(NSInvocation *)anInvocation {
-  [anInvocation setTarget:_target];
-  [anInvocation invoke];
-}
-
-- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector {
-  return [_target methodSignatureForSelector:aSelector];
-}
-
-- (WebView*)webView {
-  return _webView;
-}
-
-- (BOOL)webViewShouldInterruptJavaScript:(WebView *)sender {
-  // TODO: (robertvawter) What do we want to do with repeated invocations?
-  return NO;
-}
-
-@end
diff --git a/plugins/webkit/Plugin/WebFrameNonTigerHeaders.h b/plugins/webkit/Plugin/WebFrameNonTigerHeaders.h
deleted file mode 100644
index 975ea6d..0000000
--- a/plugins/webkit/Plugin/WebFrameNonTigerHeaders.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#import <JavaScriptCore/JavaScriptCore.h>
-
-/*!
- * The headers in Tiger don't include the globalContext method.
- */
-@interface WebFrame (NonTigerHeaders)
-- (JSGlobalContextRef) globalContext;
-@end
\ No newline at end of file
diff --git a/plugins/webkit/build.xml b/plugins/webkit/build.xml
deleted file mode 100755
index 34fee9e..0000000
--- a/plugins/webkit/build.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<project name="webkit" default="build" basedir=".">
-	<property name="plugin.root" value="webkit" />
-	<import file="../common.ant.xml" />
-
-	<target name="build" description="Copy compiled plugin to the output folder">
-		<mkdir dir="${gwt.build.out}/plugins" />
-		<mkdir dir="${gwt.build.out}/plugins/webkit" />
-		<copy todir="${gwt.build.out}/plugins/webkit">
-			<fileset file="prebuilt/oophm.dmg" />
-		</copy>
-	</target>
-
-	<target name="test" description="Run any tests">
-	</target>
-
-	<target name="checkstyle" description="Static style analysis">
-	</target>
-</project>
diff --git a/plugins/webkit/gwtlogo.icns b/plugins/webkit/gwtlogo.icns
deleted file mode 100644
index 6a593df..0000000
--- a/plugins/webkit/gwtlogo.icns
+++ /dev/null
Binary files differ
diff --git a/plugins/webkit/oophm.xcodeproj/project.pbxproj b/plugins/webkit/oophm.xcodeproj/project.pbxproj
deleted file mode 100644
index 7cc225d..0000000
--- a/plugins/webkit/oophm.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,786 +0,0 @@
-// !$*UTF8*$!
-{
-	archiveVersion = 1;
-	classes = {
-	};
-	objectVersion = 45;
-	objects = {
-
-/* Begin PBXAggregateTarget section */
-		48547E030DD882170047AC8A /* symlinks */ = {
-			isa = PBXAggregateTarget;
-			buildConfigurationList = 48547E080DD8823B0047AC8A /* Build configuration list for PBXAggregateTarget "symlinks" */;
-			buildPhases = (
-				48547E020DD882170047AC8A /* Make symlink */,
-			);
-			comments = "This will create a symlink in ~/Library/Internet Plug-Ins to the plugin";
-			dependencies = (
-				48547E070DD8821D0047AC8A /* PBXTargetDependency */,
-			);
-			name = symlinks;
-			productName = oophm.symlink;
-		};
-/* End PBXAggregateTarget section */
-
-/* Begin PBXBuildFile section */
-		45283765103BCCB100153ABF /* CheckVersionsMessage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 45283764103BCCB100153ABF /* CheckVersionsMessage.cpp */; };
-		4528376F103BCCDF00153ABF /* ChooseTransportMessage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 45283767103BCCDF00153ABF /* ChooseTransportMessage.cpp */; };
-		45283770103BCCDF00153ABF /* FatalErrorMessage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 45283769103BCCDF00153ABF /* FatalErrorMessage.cpp */; };
-		45283771103BCCDF00153ABF /* ProtocolVersionMessage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4528376B103BCCDF00153ABF /* ProtocolVersionMessage.cpp */; };
-		45283772103BCCDF00153ABF /* SwitchTransportMessage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4528376D103BCCDF00153ABF /* SwitchTransportMessage.cpp */; };
-		480DDCAA0E381E22000711F4 /* AppController.m in Sources */ = {isa = PBXBuildFile; fileRef = 48A23BB50DD0E688004EF5CA /* AppController.m */; };
-		480DDCAB0E381E23000711F4 /* BrowserWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 48A23C770DD0F545004EF5CA /* BrowserWindow.m */; };
-		480DDCAC0E381E28000711F4 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 48A23BB60DD0E688004EF5CA /* main.m */; };
-		48108DDF0E2C15BD007FA76C /* AllowedConnections.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48108DDB0E2C15BD007FA76C /* AllowedConnections.cpp */; };
-		48108DE00E2C15BD007FA76C /* Socket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48108DDD0E2C15BD007FA76C /* Socket.cpp */; };
-		48338DDF0E4A2CA7008ACF0F /* oophm_bypass.plist in Resources */ = {isa = PBXBuildFile; fileRef = 48338DDB0E4A2C49008ACF0F /* oophm_bypass.plist */; };
-		48420D410DD51A3D001F3839 /* GTMNSString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = 48420D3E0DD51A3D001F3839 /* GTMNSString+HTML.m */; };
-		4851A9D50DD1198300C577B2 /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 48FD98A00DC62FD800E011A2 /* JavaScriptCore.framework */; };
-		48547F000DD889DA0047AC8A /* GTMSystemVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = 48547EFF0DD889DA0047AC8A /* GTMSystemVersion.m */; };
-		48547F4B0DD88D110047AC8A /* NSMutableString+HtmlReplacement.m in Sources */ = {isa = PBXBuildFile; fileRef = 48547F4A0DD88D110047AC8A /* NSMutableString+HtmlReplacement.m */; };
-		485505ED0DCD475C0009536F /* SlowScriptProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 485505EC0DCD475C0009536F /* SlowScriptProxy.m */; };
-		4856DF890DCF95B8000BF47C /* HostChannel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4856DF750DCF95B8000BF47C /* HostChannel.cpp */; };
-		4856DF8A0DCF95B8000BF47C /* InvokeMessage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4856DF770DCF95B8000BF47C /* InvokeMessage.cpp */; };
-		4856DF8B0DCF95B8000BF47C /* LoadModuleMessage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4856DF790DCF95B8000BF47C /* LoadModuleMessage.cpp */; };
-		4856DF8E0DCF95B8000BF47C /* ReturnMessage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4856DF7F0DCF95B8000BF47C /* ReturnMessage.cpp */; };
-		4856DF8F0DCF95B8000BF47C /* README.google in Resources */ = {isa = PBXBuildFile; fileRef = 4856DF820DCF95B8000BF47C /* README.google */; };
-		4856DF900DCF95B8000BF47C /* ServerMethods.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4856DF840DCF95B8000BF47C /* ServerMethods.cpp */; };
-		485CCFF00DDDDEA400AEE666 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 485CCFEF0DDDDEA400AEE666 /* CoreFoundation.framework */; };
-		485CD0AA0DDDEAF300AEE666 /* Debug.mm in Sources */ = {isa = PBXBuildFile; fileRef = 485CD0A90DDDEAF300AEE666 /* Debug.mm */; };
-		486DA8F50DD22BD50065980B /* crash.html in Resources */ = {isa = PBXBuildFile; fileRef = 486DA8F40DD22BD50065980B /* crash.html */; };
-		48A237D10DCFB46D004EF5CA /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */; };
-		48A23BC60DD0E6EE004EF5CA /* browser.nib in Resources */ = {isa = PBXBuildFile; fileRef = 48A23BC50DD0E6EE004EF5CA /* browser.nib */; };
-		48A23BE00DD0E8B1004EF5CA /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 48FD98A10DC62FD800E011A2 /* WebKit.framework */; };
-		48A23BE10DD0E8B6004EF5CA /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */; };
-		48A23C510DD0F2D6004EF5CA /* Browser-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 48A23C500DD0F2D6004EF5CA /* Browser-Info.plist */; };
-		48A23C530DD0F302004EF5CA /* gwtlogo.icns in Resources */ = {isa = PBXBuildFile; fileRef = 48C4D72D0DCA2B6900C34919 /* gwtlogo.icns */; };
-		48ABDDC50DCBA04800B0159A /* WebScriptSessionHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48ABDDC40DCBA04800B0159A /* WebScriptSessionHandler.cpp */; };
-		48C4D72E0DCA2B6900C34919 /* gwtlogo.icns in Resources */ = {isa = PBXBuildFile; fileRef = 48C4D72D0DCA2B6900C34919 /* gwtlogo.icns */; };
-		48C9EA4A0E37863700E691C6 /* FreeValueMessage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48C9EA440E37863700E691C6 /* FreeValueMessage.cpp */; };
-		48C9EA4B0E37863700E691C6 /* InvokeSpecialMessage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48C9EA460E37863700E691C6 /* InvokeSpecialMessage.cpp */; };
-		48C9EA4C0E37863700E691C6 /* LoadJsniMessage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48C9EA480E37863700E691C6 /* LoadJsniMessage.cpp */; };
-		48EF692D0E318E200050F5D6 /* ObjectFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48EF692C0E318E200050F5D6 /* ObjectFunctions.cpp */; };
-		48FD98900DC62E7400E011A2 /* OophmPlugin.mm in Sources */ = {isa = PBXBuildFile; fileRef = 48FD988F0DC62E7400E011A2 /* OophmPlugin.mm */; };
-		48FD98A20DC62FD800E011A2 /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 48FD98A00DC62FD800E011A2 /* JavaScriptCore.framework */; };
-		48FD98A30DC62FD800E011A2 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 48FD98A10DC62FD800E011A2 /* WebKit.framework */; };
-		48FD99540DC6349F00E011A2 /* OophmWebScriptObject.mm in Sources */ = {isa = PBXBuildFile; fileRef = 48FD99530DC6349F00E011A2 /* OophmWebScriptObject.mm */; };
-		8D5B49B0048680CD000E48DA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C167DFE841241C02AAC07 /* InfoPlist.strings */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
-		48547E060DD8821D0047AC8A /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 089C1669FE841209C02AAC07 /* Project object */;
-			proxyType = 1;
-			remoteGlobalIDString = 8D5B49AC048680CD000E48DA;
-			remoteInfo = oophm;
-		};
-		485CD0C40DDDED1700AEE666 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 089C1669FE841209C02AAC07 /* Project object */;
-			proxyType = 1;
-			remoteGlobalIDString = 48547E030DD882170047AC8A;
-			remoteInfo = symlinks;
-		};
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXFileReference section */
-		089C1672FE841209C02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
-		089C167EFE841241C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
-		089C167FFE841241C02AAC07 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
-		1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
-		32DBCF630370AF2F00C91783 /* oophm_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = oophm_Prefix.pch; sourceTree = "<group>"; };
-		45283764103BCCB100153ABF /* CheckVersionsMessage.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CheckVersionsMessage.cpp; sourceTree = "<group>"; };
-		45283766103BCCDF00153ABF /* CheckVersionsMessage.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CheckVersionsMessage.h; sourceTree = "<group>"; };
-		45283767103BCCDF00153ABF /* ChooseTransportMessage.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ChooseTransportMessage.cpp; sourceTree = "<group>"; };
-		45283768103BCCDF00153ABF /* ChooseTransportMessage.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ChooseTransportMessage.h; sourceTree = "<group>"; };
-		45283769103BCCDF00153ABF /* FatalErrorMessage.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = FatalErrorMessage.cpp; sourceTree = "<group>"; };
-		4528376A103BCCDF00153ABF /* FatalErrorMessage.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FatalErrorMessage.h; sourceTree = "<group>"; };
-		4528376B103BCCDF00153ABF /* ProtocolVersionMessage.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ProtocolVersionMessage.cpp; sourceTree = "<group>"; };
-		4528376C103BCCDF00153ABF /* ProtocolVersionMessage.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ProtocolVersionMessage.h; sourceTree = "<group>"; };
-		4528376D103BCCDF00153ABF /* SwitchTransportMessage.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SwitchTransportMessage.cpp; sourceTree = "<group>"; };
-		4528376E103BCCDF00153ABF /* SwitchTransportMessage.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SwitchTransportMessage.h; sourceTree = "<group>"; };
-		48108DDB0E2C15BD007FA76C /* AllowedConnections.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AllowedConnections.cpp; sourceTree = "<group>"; };
-		48108DDC0E2C15BD007FA76C /* AllowedConnections.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AllowedConnections.h; sourceTree = "<group>"; };
-		48108DDD0E2C15BD007FA76C /* Socket.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Socket.cpp; sourceTree = "<group>"; };
-		48108DDE0E2C15BD007FA76C /* Socket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Socket.h; sourceTree = "<group>"; };
-		48338DDB0E4A2C49008ACF0F /* oophm_bypass.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = oophm_bypass.plist; sourceTree = "<group>"; };
-		48420D3C0DD51A23001F3839 /* GTMDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GTMDefines.h; path = GTM/GTMDefines.h; sourceTree = "<group>"; };
-		48420D3D0DD51A3D001F3839 /* GTMNSString+HTML.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "GTMNSString+HTML.h"; path = "GTM/Foundation/GTMNSString+HTML.h"; sourceTree = "<group>"; };
-		48420D3E0DD51A3D001F3839 /* GTMNSString+HTML.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "GTMNSString+HTML.m"; path = "GTM/Foundation/GTMNSString+HTML.m"; sourceTree = "<group>"; };
-		48547EFE0DD889DA0047AC8A /* GTMSystemVersion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GTMSystemVersion.h; path = GTM/Foundation/GTMSystemVersion.h; sourceTree = "<group>"; };
-		48547EFF0DD889DA0047AC8A /* GTMSystemVersion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GTMSystemVersion.m; path = GTM/Foundation/GTMSystemVersion.m; sourceTree = "<group>"; };
-		48547F490DD88D110047AC8A /* NSMutableString+HtmlReplacement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSMutableString+HtmlReplacement.h"; sourceTree = "<group>"; };
-		48547F4A0DD88D110047AC8A /* NSMutableString+HtmlReplacement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSMutableString+HtmlReplacement.m"; sourceTree = "<group>"; };
-		485505EB0DCD475C0009536F /* SlowScriptProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SlowScriptProxy.h; sourceTree = "<group>"; };
-		485505EC0DCD475C0009536F /* SlowScriptProxy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SlowScriptProxy.m; sourceTree = "<group>"; };
-		4856DF740DCF95B8000BF47C /* BrowserChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BrowserChannel.h; path = ../common/BrowserChannel.h; sourceTree = SOURCE_ROOT; };
-		4856DF750DCF95B8000BF47C /* HostChannel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HostChannel.cpp; path = ../common/HostChannel.cpp; sourceTree = SOURCE_ROOT; };
-		4856DF760DCF95B8000BF47C /* HostChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HostChannel.h; path = ../common/HostChannel.h; sourceTree = SOURCE_ROOT; };
-		4856DF770DCF95B8000BF47C /* InvokeMessage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = InvokeMessage.cpp; path = ../common/InvokeMessage.cpp; sourceTree = SOURCE_ROOT; };
-		4856DF780DCF95B8000BF47C /* InvokeMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InvokeMessage.h; path = ../common/InvokeMessage.h; sourceTree = SOURCE_ROOT; };
-		4856DF790DCF95B8000BF47C /* LoadModuleMessage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LoadModuleMessage.cpp; path = ../common/LoadModuleMessage.cpp; sourceTree = SOURCE_ROOT; };
-		4856DF7A0DCF95B8000BF47C /* LoadModuleMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LoadModuleMessage.h; path = ../common/LoadModuleMessage.h; sourceTree = SOURCE_ROOT; };
-		4856DF7D0DCF95B8000BF47C /* Message.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Message.h; path = ../common/Message.h; sourceTree = SOURCE_ROOT; };
-		4856DF7E0DCF95B8000BF47C /* QuitMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QuitMessage.h; path = ../common/QuitMessage.h; sourceTree = SOURCE_ROOT; };
-		4856DF7F0DCF95B8000BF47C /* ReturnMessage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ReturnMessage.cpp; path = ../common/ReturnMessage.cpp; sourceTree = SOURCE_ROOT; };
-		4856DF800DCF95B8000BF47C /* ReturnMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ReturnMessage.h; path = ../common/ReturnMessage.h; sourceTree = SOURCE_ROOT; };
-		4856DF820DCF95B8000BF47C /* README.google */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = README.google; path = ../common/scoped_ptr/README.google; sourceTree = SOURCE_ROOT; };
-		4856DF830DCF95B8000BF47C /* scoped_ptr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = scoped_ptr.h; path = ../common/scoped_ptr/scoped_ptr.h; sourceTree = SOURCE_ROOT; };
-		4856DF840DCF95B8000BF47C /* ServerMethods.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ServerMethods.cpp; path = ../common/ServerMethods.cpp; sourceTree = SOURCE_ROOT; };
-		4856DF850DCF95B8000BF47C /* ServerMethods.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ServerMethods.h; path = ../common/ServerMethods.h; sourceTree = SOURCE_ROOT; };
-		4856DF860DCF95B8000BF47C /* SessionHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SessionHandler.h; path = ../common/SessionHandler.h; sourceTree = SOURCE_ROOT; };
-		4856DF880DCF95B8000BF47C /* Value.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Value.h; path = ../common/Value.h; sourceTree = SOURCE_ROOT; };
-		485CCE650DDDC5E900AEE666 /* HashMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HashMap.h; sourceTree = "<group>"; };
-		485CCFEF0DDDDEA400AEE666 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; };
-		485CD0A90DDDEAF300AEE666 /* Debug.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = Debug.mm; sourceTree = "<group>"; };
-		486DA8ED0DD22B850065980B /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = English; path = English.lproj/crash.html; sourceTree = "<group>"; wrapsLines = 0; };
-		48A23BA20DD0E5B4004EF5CA /* Browser.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Browser.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		48A23BB40DD0E688004EF5CA /* AppController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppController.h; sourceTree = "<group>"; };
-		48A23BB50DD0E688004EF5CA /* AppController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppController.m; sourceTree = "<group>"; };
-		48A23BB60DD0E688004EF5CA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
-		48A23BC50DD0E6EE004EF5CA /* browser.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; path = browser.nib; sourceTree = "<group>"; };
-		48A23C500DD0F2D6004EF5CA /* Browser-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Browser-Info.plist"; sourceTree = "<group>"; };
-		48A23C760DD0F545004EF5CA /* BrowserWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BrowserWindow.h; sourceTree = "<group>"; };
-		48A23C770DD0F545004EF5CA /* BrowserWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BrowserWindow.m; sourceTree = "<group>"; };
-		48ABDDC30DCBA04800B0159A /* WebScriptSessionHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebScriptSessionHandler.h; sourceTree = "<group>"; };
-		48ABDDC40DCBA04800B0159A /* WebScriptSessionHandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebScriptSessionHandler.cpp; sourceTree = "<group>"; };
-		48ABDDC80DCBA09D00B0159A /* TrackingData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TrackingData.h; sourceTree = "<group>"; };
-		48ABE1050DCBB67600B0159A /* SessionData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SessionData.h; sourceTree = "<group>"; };
-		48C4D72D0DCA2B6900C34919 /* gwtlogo.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = gwtlogo.icns; sourceTree = "<group>"; };
-		48C9EA440E37863700E691C6 /* FreeValueMessage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FreeValueMessage.cpp; sourceTree = "<group>"; };
-		48C9EA450E37863700E691C6 /* FreeValueMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FreeValueMessage.h; sourceTree = "<group>"; };
-		48C9EA460E37863700E691C6 /* InvokeSpecialMessage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InvokeSpecialMessage.cpp; sourceTree = "<group>"; };
-		48C9EA470E37863700E691C6 /* InvokeSpecialMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InvokeSpecialMessage.h; sourceTree = "<group>"; };
-		48C9EA480E37863700E691C6 /* LoadJsniMessage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LoadJsniMessage.cpp; sourceTree = "<group>"; };
-		48C9EA490E37863700E691C6 /* LoadJsniMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoadJsniMessage.h; sourceTree = "<group>"; };
-		48D5795D0DDB8C03005A3498 /* Debug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Debug.h; sourceTree = "<group>"; };
-		48D5795E0DDB8C03005A3498 /* DebugLevel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebugLevel.h; sourceTree = "<group>"; };
-		48EF692B0E318E200050F5D6 /* ObjectFunctions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjectFunctions.h; sourceTree = "<group>"; };
-		48EF692C0E318E200050F5D6 /* ObjectFunctions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ObjectFunctions.cpp; sourceTree = "<group>"; };
-		48FD988E0DC62E7400E011A2 /* OophmPlugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OophmPlugin.h; sourceTree = "<group>"; };
-		48FD988F0DC62E7400E011A2 /* OophmPlugin.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OophmPlugin.mm; sourceTree = "<group>"; };
-		48FD989B0DC62F8800E011A2 /* WebFrameNonTigerHeaders.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebFrameNonTigerHeaders.h; sourceTree = "<group>"; };
-		48FD98A00DC62FD800E011A2 /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = /System/Library/Frameworks/JavaScriptCore.framework; sourceTree = "<absolute>"; };
-		48FD98A10DC62FD800E011A2 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = /System/Library/Frameworks/WebKit.framework; sourceTree = "<absolute>"; };
-		48FD99520DC6349F00E011A2 /* OophmWebScriptObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OophmWebScriptObject.h; sourceTree = "<group>"; };
-		48FD99530DC6349F00E011A2 /* OophmWebScriptObject.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OophmWebScriptObject.mm; sourceTree = "<group>"; };
-		48FFCFC80DD35DA900805659 /* Platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Platform.h; sourceTree = "<group>"; };
-		8D5B49B6048680CD000E48DA /* gwt-dev.webplugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "gwt-dev.webplugin"; sourceTree = BUILT_PRODUCTS_DIR; };
-		8D5B49B7048680CD000E48DA /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
-		D2F7E65807B2D6F200F64583 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
-		48A23BA00DD0E5B4004EF5CA /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				48A23BE00DD0E8B1004EF5CA /* WebKit.framework in Frameworks */,
-				48A23BE10DD0E8B6004EF5CA /* Cocoa.framework in Frameworks */,
-				4851A9D50DD1198300C577B2 /* JavaScriptCore.framework in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		8D5B49B3048680CD000E48DA /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				48FD98A20DC62FD800E011A2 /* JavaScriptCore.framework in Frameworks */,
-				48FD98A30DC62FD800E011A2 /* WebKit.framework in Frameworks */,
-				48A237D10DCFB46D004EF5CA /* Cocoa.framework in Frameworks */,
-				485CCFF00DDDDEA400AEE666 /* CoreFoundation.framework in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
-		089C166AFE841209C02AAC07 /* oophm */ = {
-			isa = PBXGroup;
-			children = (
-				485506C90DCD54180009536F /* Classes */,
-				48420D3B0DD51A0F001F3839 /* GTM */,
-				32C88E010371C26100C91783 /* Other Sources */,
-				089C167CFE841241C02AAC07 /* Resources */,
-				089C1671FE841209C02AAC07 /* Frameworks and Libraries */,
-				19C28FB8FE9D52D311CA2CBB /* Products */,
-			);
-			comments = "/*\n * Copyright 2008 Google Inc.\n * \n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * use this file except in compliance with the License. You may obtain a copy of\n * the License at\n * \n * http://www.apache.org/licenses/LICENSE-2.0\n * \n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */\n";
-			name = oophm;
-			sourceTree = "<group>";
-		};
-		089C1671FE841209C02AAC07 /* Frameworks and Libraries */ = {
-			isa = PBXGroup;
-			children = (
-				1058C7ACFEA557BF11CA2CBB /* Linked Frameworks */,
-				1058C7AEFEA557BF11CA2CBB /* Other Frameworks */,
-			);
-			name = "Frameworks and Libraries";
-			sourceTree = "<group>";
-		};
-		089C167CFE841241C02AAC07 /* Resources */ = {
-			isa = PBXGroup;
-			children = (
-				48338DDB0E4A2C49008ACF0F /* oophm_bypass.plist */,
-				486DA8F40DD22BD50065980B /* crash.html */,
-				48C4D72D0DCA2B6900C34919 /* gwtlogo.icns */,
-				8D5B49B7048680CD000E48DA /* Info.plist */,
-				089C167DFE841241C02AAC07 /* InfoPlist.strings */,
-			);
-			name = Resources;
-			sourceTree = "<group>";
-		};
-		1058C7ACFEA557BF11CA2CBB /* Linked Frameworks */ = {
-			isa = PBXGroup;
-			children = (
-				485CCFEF0DDDDEA400AEE666 /* CoreFoundation.framework */,
-				48FD98A00DC62FD800E011A2 /* JavaScriptCore.framework */,
-				48FD98A10DC62FD800E011A2 /* WebKit.framework */,
-				1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */,
-			);
-			name = "Linked Frameworks";
-			sourceTree = "<group>";
-		};
-		1058C7AEFEA557BF11CA2CBB /* Other Frameworks */ = {
-			isa = PBXGroup;
-			children = (
-				089C167FFE841241C02AAC07 /* AppKit.framework */,
-				D2F7E65807B2D6F200F64583 /* CoreData.framework */,
-				089C1672FE841209C02AAC07 /* Foundation.framework */,
-			);
-			name = "Other Frameworks";
-			sourceTree = "<group>";
-		};
-		19C28FB8FE9D52D311CA2CBB /* Products */ = {
-			isa = PBXGroup;
-			children = (
-				8D5B49B6048680CD000E48DA /* gwt-dev.webplugin */,
-				48A23BA20DD0E5B4004EF5CA /* Browser.app */,
-			);
-			name = Products;
-			sourceTree = "<group>";
-		};
-		32C88E010371C26100C91783 /* Other Sources */ = {
-			isa = PBXGroup;
-			children = (
-				4856DF730DCF95B8000BF47C /* common */,
-				32DBCF630370AF2F00C91783 /* oophm_Prefix.pch */,
-			);
-			name = "Other Sources";
-			sourceTree = "<group>";
-		};
-		48420D3B0DD51A0F001F3839 /* GTM */ = {
-			isa = PBXGroup;
-			children = (
-				48547EFE0DD889DA0047AC8A /* GTMSystemVersion.h */,
-				48547EFF0DD889DA0047AC8A /* GTMSystemVersion.m */,
-				48420D3D0DD51A3D001F3839 /* GTMNSString+HTML.h */,
-				48420D3E0DD51A3D001F3839 /* GTMNSString+HTML.m */,
-				48420D3C0DD51A23001F3839 /* GTMDefines.h */,
-			);
-			comments = "We just need a subset of the functionality available in GTM, so we'll pull in only the files we need as opposed to creating a cross-project dependency and having to package the framework in the plugin.";
-			name = GTM;
-			sourceTree = "<group>";
-		};
-		485506C90DCD54180009536F /* Classes */ = {
-			isa = PBXGroup;
-			children = (
-				48A23B9D0DD0E57E004EF5CA /* Browser */,
-				4856DFFB0DCFAEFD000BF47C /* Plugin */,
-				4856DFFA0DCFAEBC000BF47C /* Core */,
-			);
-			name = Classes;
-			sourceTree = "<group>";
-		};
-		4856DF730DCF95B8000BF47C /* common */ = {
-			isa = PBXGroup;
-			children = (
-				45283766103BCCDF00153ABF /* CheckVersionsMessage.h */,
-				45283767103BCCDF00153ABF /* ChooseTransportMessage.cpp */,
-				45283768103BCCDF00153ABF /* ChooseTransportMessage.h */,
-				45283769103BCCDF00153ABF /* FatalErrorMessage.cpp */,
-				4528376A103BCCDF00153ABF /* FatalErrorMessage.h */,
-				4528376B103BCCDF00153ABF /* ProtocolVersionMessage.cpp */,
-				4528376C103BCCDF00153ABF /* ProtocolVersionMessage.h */,
-				4528376D103BCCDF00153ABF /* SwitchTransportMessage.cpp */,
-				4528376E103BCCDF00153ABF /* SwitchTransportMessage.h */,
-				48C9EA440E37863700E691C6 /* FreeValueMessage.cpp */,
-				48C9EA450E37863700E691C6 /* FreeValueMessage.h */,
-				48C9EA460E37863700E691C6 /* InvokeSpecialMessage.cpp */,
-				48C9EA470E37863700E691C6 /* InvokeSpecialMessage.h */,
-				48C9EA480E37863700E691C6 /* LoadJsniMessage.cpp */,
-				48C9EA490E37863700E691C6 /* LoadJsniMessage.h */,
-				48108DDB0E2C15BD007FA76C /* AllowedConnections.cpp */,
-				48108DDC0E2C15BD007FA76C /* AllowedConnections.h */,
-				48108DDD0E2C15BD007FA76C /* Socket.cpp */,
-				48108DDE0E2C15BD007FA76C /* Socket.h */,
-				485CCE650DDDC5E900AEE666 /* HashMap.h */,
-				48D5795D0DDB8C03005A3498 /* Debug.h */,
-				48D5795E0DDB8C03005A3498 /* DebugLevel.h */,
-				48FFCFC80DD35DA900805659 /* Platform.h */,
-				4856DF740DCF95B8000BF47C /* BrowserChannel.h */,
-				4856DF750DCF95B8000BF47C /* HostChannel.cpp */,
-				4856DF760DCF95B8000BF47C /* HostChannel.h */,
-				4856DF770DCF95B8000BF47C /* InvokeMessage.cpp */,
-				4856DF780DCF95B8000BF47C /* InvokeMessage.h */,
-				4856DF790DCF95B8000BF47C /* LoadModuleMessage.cpp */,
-				4856DF7A0DCF95B8000BF47C /* LoadModuleMessage.h */,
-				4856DF7D0DCF95B8000BF47C /* Message.h */,
-				4856DF7E0DCF95B8000BF47C /* QuitMessage.h */,
-				4856DF7F0DCF95B8000BF47C /* ReturnMessage.cpp */,
-				4856DF800DCF95B8000BF47C /* ReturnMessage.h */,
-				4856DF810DCF95B8000BF47C /* scoped_ptr */,
-				4856DF840DCF95B8000BF47C /* ServerMethods.cpp */,
-				4856DF850DCF95B8000BF47C /* ServerMethods.h */,
-				4856DF860DCF95B8000BF47C /* SessionHandler.h */,
-				4856DF880DCF95B8000BF47C /* Value.h */,
-				45283764103BCCB100153ABF /* CheckVersionsMessage.cpp */,
-			);
-			name = common;
-			path = ../common;
-			sourceTree = SOURCE_ROOT;
-		};
-		4856DF810DCF95B8000BF47C /* scoped_ptr */ = {
-			isa = PBXGroup;
-			children = (
-				4856DF820DCF95B8000BF47C /* README.google */,
-				4856DF830DCF95B8000BF47C /* scoped_ptr.h */,
-			);
-			name = scoped_ptr;
-			path = ../common/scoped_ptr;
-			sourceTree = SOURCE_ROOT;
-		};
-		4856DFFA0DCFAEBC000BF47C /* Core */ = {
-			isa = PBXGroup;
-			children = (
-				48ABDDC30DCBA04800B0159A /* WebScriptSessionHandler.h */,
-				48ABDDC40DCBA04800B0159A /* WebScriptSessionHandler.cpp */,
-				48ABDDC80DCBA09D00B0159A /* TrackingData.h */,
-				48ABE1050DCBB67600B0159A /* SessionData.h */,
-				48EF692B0E318E200050F5D6 /* ObjectFunctions.h */,
-				48EF692C0E318E200050F5D6 /* ObjectFunctions.cpp */,
-			);
-			path = Core;
-			sourceTree = "<group>";
-		};
-		4856DFFB0DCFAEFD000BF47C /* Plugin */ = {
-			isa = PBXGroup;
-			children = (
-				485CD0A90DDDEAF300AEE666 /* Debug.mm */,
-				48FD988E0DC62E7400E011A2 /* OophmPlugin.h */,
-				48FD988F0DC62E7400E011A2 /* OophmPlugin.mm */,
-				48FD99520DC6349F00E011A2 /* OophmWebScriptObject.h */,
-				485505EB0DCD475C0009536F /* SlowScriptProxy.h */,
-				48FD99530DC6349F00E011A2 /* OophmWebScriptObject.mm */,
-				485505EC0DCD475C0009536F /* SlowScriptProxy.m */,
-				48FD989B0DC62F8800E011A2 /* WebFrameNonTigerHeaders.h */,
-				48547F490DD88D110047AC8A /* NSMutableString+HtmlReplacement.h */,
-				48547F4A0DD88D110047AC8A /* NSMutableString+HtmlReplacement.m */,
-			);
-			path = Plugin;
-			sourceTree = "<group>";
-		};
-		48A23B9D0DD0E57E004EF5CA /* Browser */ = {
-			isa = PBXGroup;
-			children = (
-				48A23C760DD0F545004EF5CA /* BrowserWindow.h */,
-				48A23C770DD0F545004EF5CA /* BrowserWindow.m */,
-				48A23C500DD0F2D6004EF5CA /* Browser-Info.plist */,
-				48A23BB40DD0E688004EF5CA /* AppController.h */,
-				48A23BB50DD0E688004EF5CA /* AppController.m */,
-				48A23BB60DD0E688004EF5CA /* main.m */,
-				48A23BC50DD0E6EE004EF5CA /* browser.nib */,
-			);
-			path = Browser;
-			sourceTree = "<group>";
-		};
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
-		48A23BA10DD0E5B4004EF5CA /* Browser */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = 48A23BA70DD0E5B5004EF5CA /* Build configuration list for PBXNativeTarget "Browser" */;
-			buildPhases = (
-				48A23B9E0DD0E5B4004EF5CA /* Resources */,
-				48A23B9F0DD0E5B4004EF5CA /* Sources */,
-				48A23BA00DD0E5B4004EF5CA /* Frameworks */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-				485CD0C50DDDED1700AEE666 /* PBXTargetDependency */,
-			);
-			name = Browser;
-			productName = Browser;
-			productReference = 48A23BA20DD0E5B4004EF5CA /* Browser.app */;
-			productType = "com.apple.product-type.application";
-		};
-		8D5B49AC048680CD000E48DA /* gwt-dev */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = 1DEB913A08733D840010E9CD /* Build configuration list for PBXNativeTarget "gwt-dev" */;
-			buildPhases = (
-				8D5B49AF048680CD000E48DA /* Resources */,
-				8D5B49B1048680CD000E48DA /* Sources */,
-				8D5B49B3048680CD000E48DA /* Frameworks */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-			);
-			name = "gwt-dev";
-			productInstallPath = "$(HOME)/Library/Bundles";
-			productName = oophm;
-			productReference = 8D5B49B6048680CD000E48DA /* gwt-dev.webplugin */;
-			productType = "com.apple.product-type.bundle";
-		};
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
-		089C1669FE841209C02AAC07 /* Project object */ = {
-			isa = PBXProject;
-			buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "oophm" */;
-			compatibilityVersion = "Xcode 3.1";
-			developmentRegion = English;
-			hasScannedForEncodings = 1;
-			knownRegions = (
-				en,
-			);
-			mainGroup = 089C166AFE841209C02AAC07 /* oophm */;
-			projectDirPath = "";
-			projectRoot = "";
-			targets = (
-				48A23BA10DD0E5B4004EF5CA /* Browser */,
-				8D5B49AC048680CD000E48DA /* gwt-dev */,
-				48547E030DD882170047AC8A /* symlinks */,
-			);
-		};
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
-		48A23B9E0DD0E5B4004EF5CA /* Resources */ = {
-			isa = PBXResourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				48A23BC60DD0E6EE004EF5CA /* browser.nib in Resources */,
-				48A23C510DD0F2D6004EF5CA /* Browser-Info.plist in Resources */,
-				48A23C530DD0F302004EF5CA /* gwtlogo.icns in Resources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		8D5B49AF048680CD000E48DA /* Resources */ = {
-			isa = PBXResourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				8D5B49B0048680CD000E48DA /* InfoPlist.strings in Resources */,
-				48C4D72E0DCA2B6900C34919 /* gwtlogo.icns in Resources */,
-				4856DF8F0DCF95B8000BF47C /* README.google in Resources */,
-				486DA8F50DD22BD50065980B /* crash.html in Resources */,
-				48338DDF0E4A2CA7008ACF0F /* oophm_bypass.plist in Resources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXShellScriptBuildPhase section */
-		48547E020DD882170047AC8A /* Make symlink */ = {
-			isa = PBXShellScriptBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			inputPaths = (
-				"$(BUILT_PRODUCTS_DIR)/{$PluginShortName}.webplugin",
-			);
-			name = "Make symlink";
-			outputPaths = (
-				"$(USER_LIBRARY_DIR)/Internet Plug-Ins/${PluginShortName}.webplugin/Contents",
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-			shellPath = /bin/sh;
-			shellScript = "set -x\nrm -r \"${USER_LIBRARY_DIR}/Internet Plug-Ins/${PluginShortName}.webplugin\"\nln -sf \"${BUILT_PRODUCTS_DIR}/${PluginShortName}.webplugin\" \"${USER_LIBRARY_DIR}/Internet Plug-Ins/.\"";
-		};
-/* End PBXShellScriptBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
-		48A23B9F0DD0E5B4004EF5CA /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				480DDCAA0E381E22000711F4 /* AppController.m in Sources */,
-				480DDCAB0E381E23000711F4 /* BrowserWindow.m in Sources */,
-				480DDCAC0E381E28000711F4 /* main.m in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		8D5B49B1048680CD000E48DA /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				48FD98900DC62E7400E011A2 /* OophmPlugin.mm in Sources */,
-				48FD99540DC6349F00E011A2 /* OophmWebScriptObject.mm in Sources */,
-				48ABDDC50DCBA04800B0159A /* WebScriptSessionHandler.cpp in Sources */,
-				485505ED0DCD475C0009536F /* SlowScriptProxy.m in Sources */,
-				4856DF890DCF95B8000BF47C /* HostChannel.cpp in Sources */,
-				4856DF8A0DCF95B8000BF47C /* InvokeMessage.cpp in Sources */,
-				4856DF8B0DCF95B8000BF47C /* LoadModuleMessage.cpp in Sources */,
-				4856DF8E0DCF95B8000BF47C /* ReturnMessage.cpp in Sources */,
-				4856DF900DCF95B8000BF47C /* ServerMethods.cpp in Sources */,
-				48420D410DD51A3D001F3839 /* GTMNSString+HTML.m in Sources */,
-				48547F000DD889DA0047AC8A /* GTMSystemVersion.m in Sources */,
-				48547F4B0DD88D110047AC8A /* NSMutableString+HtmlReplacement.m in Sources */,
-				485CD0AA0DDDEAF300AEE666 /* Debug.mm in Sources */,
-				48108DDF0E2C15BD007FA76C /* AllowedConnections.cpp in Sources */,
-				48108DE00E2C15BD007FA76C /* Socket.cpp in Sources */,
-				48EF692D0E318E200050F5D6 /* ObjectFunctions.cpp in Sources */,
-				48C9EA4A0E37863700E691C6 /* FreeValueMessage.cpp in Sources */,
-				48C9EA4B0E37863700E691C6 /* InvokeSpecialMessage.cpp in Sources */,
-				48C9EA4C0E37863700E691C6 /* LoadJsniMessage.cpp in Sources */,
-				45283765103BCCB100153ABF /* CheckVersionsMessage.cpp in Sources */,
-				4528376F103BCCDF00153ABF /* ChooseTransportMessage.cpp in Sources */,
-				45283770103BCCDF00153ABF /* FatalErrorMessage.cpp in Sources */,
-				45283771103BCCDF00153ABF /* ProtocolVersionMessage.cpp in Sources */,
-				45283772103BCCDF00153ABF /* SwitchTransportMessage.cpp in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXTargetDependency section */
-		48547E070DD8821D0047AC8A /* PBXTargetDependency */ = {
-			isa = PBXTargetDependency;
-			target = 8D5B49AC048680CD000E48DA /* gwt-dev */;
-			targetProxy = 48547E060DD8821D0047AC8A /* PBXContainerItemProxy */;
-		};
-		485CD0C50DDDED1700AEE666 /* PBXTargetDependency */ = {
-			isa = PBXTargetDependency;
-			target = 48547E030DD882170047AC8A /* symlinks */;
-			targetProxy = 485CD0C40DDDED1700AEE666 /* PBXContainerItemProxy */;
-		};
-/* End PBXTargetDependency section */
-
-/* Begin PBXVariantGroup section */
-		089C167DFE841241C02AAC07 /* InfoPlist.strings */ = {
-			isa = PBXVariantGroup;
-			children = (
-				089C167EFE841241C02AAC07 /* English */,
-			);
-			name = InfoPlist.strings;
-			sourceTree = "<group>";
-		};
-		486DA8F40DD22BD50065980B /* crash.html */ = {
-			isa = PBXVariantGroup;
-			children = (
-				486DA8ED0DD22B850065980B /* English */,
-			);
-			name = crash.html;
-			path = Plugin;
-			sourceTree = "<group>";
-		};
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
-		1DEB913B08733D840010E9CD /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				COPY_PHASE_STRIP = NO;
-				FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/GTM/build/TigerOrLater-Release\"";
-				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_ENABLE_FIX_AND_CONTINUE = YES;
-				GCC_MODEL_TUNING = G5;
-				GCC_OPTIMIZATION_LEVEL = 0;
-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
-				GCC_PREFIX_HEADER = oophm_Prefix.pch;
-				GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = NO;
-				GCC_WARN_NON_VIRTUAL_DESTRUCTOR = NO;
-				GCC_WARN_PEDANTIC = NO;
-				INFOPLIST_FILE = Info.plist;
-				INSTALL_PATH = "$(HOME)/Library/Bundles";
-				PRODUCT_NAME = "${PluginShortName}";
-				SDKROOT = macosx10.6;
-				WRAPPER_EXTENSION = webplugin;
-				ZERO_LINK = YES;
-			};
-			name = Debug;
-		};
-		1DEB913C08733D840010E9CD /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				FRAMEWORK_SEARCH_PATHS_QUOTED_1 = "\"$(SRCROOT)/GTM/build/TigerOrLater-Release\"";
-				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
-				GCC_MODEL_TUNING = G5;
-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
-				GCC_PREFIX_HEADER = oophm_Prefix.pch;
-				GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = NO;
-				GCC_WARN_NON_VIRTUAL_DESTRUCTOR = NO;
-				GCC_WARN_PEDANTIC = NO;
-				INFOPLIST_FILE = Info.plist;
-				INSTALL_PATH = "$(HOME)/Library/Bundles";
-				PRODUCT_NAME = "${PluginShortName}";
-				SDKROOT = macosx10.6;
-				STRIP_INSTALLED_PRODUCT = YES;
-				STRIP_STYLE = "non-global";
-				WRAPPER_EXTENSION = webplugin;
-			};
-			name = Release;
-		};
-		1DEB913F08733D840010E9CD /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				COPY_PHASE_STRIP = NO;
-				GCC_C_LANGUAGE_STANDARD = gnu99;
-				GCC_OPTIMIZATION_LEVEL = 0;
-				GCC_PREPROCESSOR_DEFINITIONS = "GWT_DEBUGLEVEL=Debugging";
-				GCC_WARN_ABOUT_RETURN_TYPE = YES;
-				GCC_WARN_UNUSED_VARIABLE = YES;
-				OTHER_CFLAGS = "-mmacosx-version-min=10.5";
-				PREBINDING = NO;
-				PluginShortName = "gwt-dev";
-				SDKROOT = macosx10.5;
-				STRIP_INSTALLED_PRODUCT = NO;
-				STRIP_STYLE = "non-global";
-				SYMROOT = build;
-			};
-			name = Debug;
-		};
-		1DEB914008733D840010E9CD /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
-				GCC_C_LANGUAGE_STANDARD = gnu99;
-				GCC_OPTIMIZATION_LEVEL = 3;
-				GCC_PREPROCESSOR_DEFINITIONS = GWT_DEBUGDISABLE;
-				GCC_WARN_ABOUT_RETURN_TYPE = YES;
-				GCC_WARN_UNUSED_VARIABLE = YES;
-				OTHER_CFLAGS = "-mmacosx-version-min=10.5";
-				PREBINDING = NO;
-				PluginShortName = "gwt-dev";
-				SDKROOT = macosx10.5;
-				STRIP_STYLE = "non-global";
-				SYMROOT = build;
-			};
-			name = Release;
-		};
-		48547E040DD882170047AC8A /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				COPY_PHASE_STRIP = NO;
-				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_OPTIMIZATION_LEVEL = 0;
-				PRODUCT_NAME = "${PluginShortName}.symlinks";
-				SDKROOT = macosx10.6;
-			};
-			name = Debug;
-		};
-		48547E050DD882170047AC8A /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				COPY_PHASE_STRIP = YES;
-				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
-				GCC_ENABLE_FIX_AND_CONTINUE = NO;
-				PRODUCT_NAME = "${PluginShortName}.symlinks";
-				SDKROOT = macosx10.6;
-				ZERO_LINK = NO;
-			};
-			name = Release;
-		};
-		48A23BA50DD0E5B5004EF5CA /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				COPY_PHASE_STRIP = NO;
-				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_ENABLE_FIX_AND_CONTINUE = YES;
-				GCC_MODEL_TUNING = G5;
-				GCC_OPTIMIZATION_LEVEL = 0;
-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
-				GCC_PREFIX_HEADER = oophm_Prefix.pch;
-				INFOPLIST_FILE = "Browser/Browser-Info.plist";
-				INSTALL_PATH = "$(HOME)/Applications";
-				OTHER_LDFLAGS = (
-					"-framework",
-					Foundation,
-					"-framework",
-					AppKit,
-				);
-				PREBINDING = NO;
-				PRODUCT_NAME = Browser;
-				SDKROOT = macosx10.6;
-				WRAPPER_EXTENSION = app;
-				ZERO_LINK = YES;
-			};
-			name = Debug;
-		};
-		48A23BA60DD0E5B5004EF5CA /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ARCHS = (
-					i386,
-					ppc,
-				);
-				COPY_PHASE_STRIP = YES;
-				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
-				GCC_ENABLE_FIX_AND_CONTINUE = NO;
-				GCC_MODEL_TUNING = G5;
-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
-				GCC_PREFIX_HEADER = oophm_Prefix.pch;
-				INFOPLIST_FILE = "Browser/Browser-Info.plist";
-				INSTALL_PATH = "$(HOME)/Applications";
-				OTHER_LDFLAGS = (
-					"-framework",
-					Foundation,
-					"-framework",
-					AppKit,
-				);
-				PREBINDING = NO;
-				PRODUCT_NAME = Browser;
-				SDKROOT = macosx10.6;
-				STRIP_INSTALLED_PRODUCT = YES;
-				STRIP_STYLE = "non-global";
-				VALID_ARCHS = "ppc64 ppc7400 ppc970 i386 x86_64 ppc";
-				WRAPPER_EXTENSION = app;
-				ZERO_LINK = NO;
-			};
-			name = Release;
-		};
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
-		1DEB913A08733D840010E9CD /* Build configuration list for PBXNativeTarget "gwt-dev" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				1DEB913B08733D840010E9CD /* Debug */,
-				1DEB913C08733D840010E9CD /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-		1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "oophm" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				1DEB913F08733D840010E9CD /* Debug */,
-				1DEB914008733D840010E9CD /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-		48547E080DD8823B0047AC8A /* Build configuration list for PBXAggregateTarget "symlinks" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				48547E040DD882170047AC8A /* Debug */,
-				48547E050DD882170047AC8A /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-		48A23BA70DD0E5B5004EF5CA /* Build configuration list for PBXNativeTarget "Browser" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				48A23BA50DD0E5B5004EF5CA /* Debug */,
-				48A23BA60DD0E5B5004EF5CA /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-/* End XCConfigurationList section */
-	};
-	rootObject = 089C1669FE841209C02AAC07 /* Project object */;
-}
diff --git a/plugins/webkit/oophm_Prefix.pch b/plugins/webkit/oophm_Prefix.pch
deleted file mode 100644
index e7b7f01..0000000
--- a/plugins/webkit/oophm_Prefix.pch
+++ /dev/null
@@ -1,7 +0,0 @@
-//
-// Prefix header for all source files of the 'oophm' target in the 'oophm' project.
-//
-
-#ifdef __OBJC__
-    #import <Cocoa/Cocoa.h>
-#endif
diff --git a/plugins/webkit/oophm_bypass.plist b/plugins/webkit/oophm_bypass.plist
deleted file mode 100644
index b7af14f..0000000
--- a/plugins/webkit/oophm_bypass.plist
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<!-- Copy this to Library/Preferences/com.google.gwt.oophm.plist -->
-<plist version="1.0">
-<dict>
-	<key>allowAll</key>
-	<true/>
-</dict>
-</plist>
diff --git a/plugins/webkit/prebuilt/gwt-dev-plugin.dmg b/plugins/webkit/prebuilt/gwt-dev-plugin.dmg
deleted file mode 100644
index b96c731..0000000
--- a/plugins/webkit/prebuilt/gwt-dev-plugin.dmg
+++ /dev/null
Binary files differ
diff --git a/plugins/wireshark/Makefile b/plugins/wireshark/Makefile
deleted file mode 100644
index a1be1f9..0000000
--- a/plugins/wireshark/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# Copyright 2010 Google Inc.
-#
-# Licensed 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.
-
-# Modify to point to your Wireshark and glib include directories
-INCS = -I/usr/include/wireshark -I/usr/include/glib-2.0 \
-       -I/usr/lib/glib-2.0/include -I../common
-
-CC   = gcc
-
-SRCS = packet-gwtcs.c
-OBJS = obj/packet-gwtcs.o
-
-PLUGIN_NAME = packet-gwtcs
-PLUGIN_DIR  = $(HOME)/.wireshark/plugins
-PLUGIN      = $(PLUGIN_NAME).so
-
-CFLAGS = -DHAVE_CONFIG_H $(INCS) -DINET6 -D_U_=__attribute__\(\(unused\)\) \
-	-Wall -Wpointer-arith -g -DXTHREADS -D_REENTRANT -DXUSE_MTSAFE_API \
-	-fPIC -DPIC -O2
-
-all::		obj/$(PLUGIN)
-
-install::	obj/$(PLUGIN)
-	cp obj/$(PLUGIN) $(PLUGIN_DIR)/$(PLUGIN)
-
-obj/$(PLUGIN) : $(OBJS)
-	mkdir -p $(PLUGIN_DIR)
-	$(CC) -shared $(OBJS) -o $@
-
-$(OBJS): obj
-
-obj:
-	mkdir obj
-
-obj/packet-gwtcs.o : packet-gwtcs.c ../common/BrowserChannel.h
-	$(CC) -c $(CFLAGS) $< -o $@
-
-clean:
-	rm -rf obj
diff --git a/plugins/wireshark/README.txt b/plugins/wireshark/README.txt
deleted file mode 100644
index 1ed9817..0000000
--- a/plugins/wireshark/README.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-This is a quick and dirty Wireshark packet dissector for the GWT Code Server
-protocol.
-
-I have only tested this on Ubuntu Hardy with wireshark 1.0.0 on an x86_64
-machine.  It may require other changes for other platforms, and has only
-light testing.  It is also incomplete but provided enough decoding to be
-useful to me -- YMMV.
-
-The Makefile is very Unix-centric as it installs the library under your home
-directory.
-
-On Linux, you need the wireshark-dev package installed.
diff --git a/plugins/wireshark/packet-gwtcs.c b/plugins/wireshark/packet-gwtcs.c
deleted file mode 100644
index fc12f8c..0000000
--- a/plugins/wireshark/packet-gwtcs.c
+++ /dev/null
@@ -1,975 +0,0 @@
-/*
- * Copyright 2010 Google Inc.
- *
- * Licensed 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.
- */
-
-/*
- * Note that Wireshark dissectors are pure C, not C++ -- there are also
- * restrictions on various C extensions, including things like all variables
- * must be declared at the beginning of a block, and only initialized to
- * scalar constants.
- */
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "BrowserChannel.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <gmodule.h>
-#include <epan/conversation.h>
-#include <epan/prefs.h>
-#include <epan/packet.h>
-
-/*
- * Default port to follow.
- */
-#define DEFAULT_GWTCS_PORT 9997
-
-/*
- * Trim strngs at this length.
- */
-#define MAX_STRING_LENGTH 100
-
-/* forward reference */
-void proto_register_gwtcs();
-void proto_reg_handoff_gwtcs();
-
-/* Define version if we are not building Wireshark statically */
-#ifndef ENABLE_STATIC
-G_MODULE_EXPORT const gchar version[] = "0.1";
-#endif
-
-/*
- * Data stored for a GWT-CS conversation.
- */
-typedef struct _gwtcs_data {
-  address       clientAddress;
-  guint32       clientPort;
-  int           level;
-} gwtcs_data;
-
-/*
- * Names of packet types -- must be in order.
- */
-static const value_string packetTypes[] = {
-  { MESSAGE_TYPE_INVOKE,                  "Invoke" },
-  { MESSAGE_TYPE_RETURN,                  "Return" },
-  { MESSAGE_TYPE_OLD_LOAD_MODULE,         "Old Load Module" },
-  { MESSAGE_TYPE_QUIT,                    "Quit" },
-  { MESSAGE_TYPE_LOADJSNI,                "Load JSNI" },
-  { MESSAGE_TYPE_INVOKESPECIAL,           "Invoke Special" },
-  { MESSAGE_TYPE_FREEVALUE,               "Free Value" },
-  { MESSAGE_TYPE_FATAL_ERROR,             "Fatal Error" },
-  { MESSAGE_TYPE_CHECK_VERSIONS,          "Check Versions" },
-  { MESSAGE_TYPE_PROTOCOL_VERSION,        "Protocol Version" },
-  { MESSAGE_TYPE_CHOOSE_TRANSPORT,        "Choose Transport" },
-  { MESSAGE_TYPE_SWITCH_TRANSPORT,        "Switch Transport" },
-  { MESSAGE_TYPE_LOAD_MODULE,             "Load Module" },
-  { 0,  NULL }
-};
-#define MAX_PACKET_TYPE MESSAGE_TYPE_LOAD_MODULE
-
-
-static const value_string valueTypes[] = {
-  {VALUE_TYPE_NULL,        "null" },
-  {VALUE_TYPE_BOOLEAN,     "boolean" },
-  {VALUE_TYPE_BYTE,        "byte" },
-  {VALUE_TYPE_CHAR,        "char" },
-  {VALUE_TYPE_SHORT,       "short" },
-  {VALUE_TYPE_INT,         "int" },
-  {VALUE_TYPE_LONG,        "long" },
-  {VALUE_TYPE_FLOAT,       "float" },
-  {VALUE_TYPE_DOUBLE,      "double" },
-  {VALUE_TYPE_STRING,      "string" },
-  {VALUE_TYPE_JAVA_OBJECT, "Java object" },
-  {VALUE_TYPE_JS_OBJECT,   "JS object" },
-  {VALUE_TYPE_UNDEFINED,   "undefined" },
-  { 0,  NULL }
-};
-
-/*
- * InvokeSpecial types -- must be in order.
- */
-static const value_string specialTypes[] = {
-  { SPECIAL_HAS_METHOD,   "hasMethod" },
-  { SPECIAL_HAS_PROPERTY, "hasProperty" },
-  { SPECIAL_GET_PROPERTY, "getProperty" },
-  { SPECIAL_SET_PROPERTY, "setProperty" },
-  { 0, NULL }
-};
-
-/*
- * Dynamically assigned protocol ID.
- */
-static int proto_gwtcs = -1;
-
-/*
- * Dynamically assigned subtree IDs.
- */
-static gint ett_gwtcs = -1;
-static gint ett_value = -1;
-static gint ett_args = -1;
-
-/*
- * IDs for displayed values.
- */
-static int hf_gwtcs_pdu_type = -1;
-static int hf_gwtcs_value_tag = -1;
-static int hf_gwtcs_min_vers = -1;
-static int hf_gwtcs_max_vers = -1;
-static int hf_gwtcs_hosted_vers = -1;
-static int hf_gwtcs_sel_vers = -1;
-static int hf_gwtcs_lm_ua = -1;
-static int hf_gwtcs_lm_tabkey = -1;
-static int hf_gwtcs_lm_seskey = -1;
-static int hf_gwtcs_lm_modname = -1;
-static int hf_gwtcs_lm_url = -1;
-static int hf_gwtcs_methname = -1;
-static int hf_gwtcs_isexc = -1;
-static int hf_gwtcs_dispid = -1;
-static int hf_gwtcs_jsni = -1;
-static int hf_gwtcs_val_hdr = -1;
-static int hf_gwtcs_val_bool = -1;
-static int hf_gwtcs_val_byte = -1;
-static int hf_gwtcs_val_char = -1;
-static int hf_gwtcs_val_short = -1;
-static int hf_gwtcs_val_int = -1;
-static int hf_gwtcs_val_long = -1;
-static int hf_gwtcs_val_float = -1;
-static int hf_gwtcs_val_double = -1;
-static int hf_gwtcs_val_string = -1;
-static int hf_gwtcs_val_javaobj = -1;
-static int hf_gwtcs_val_jsobj = -1;
-static int hf_gwtcs_val_null = -1;
-static int hf_gwtcs_val_undef = -1;
-static int hf_gwtcs_numargs = -1;
-static int hf_gwtcs_spectype = -1;
-static int hf_gwtcs_transport = -1;
-static int hf_gwtcs_transargs = -1;
-
-static dissector_handle_t gwtcs_handle;
-
-static GMemChunk* memChunk = 0;
-
-#ifndef ENABLE_STATIC
-G_MODULE_EXPORT void plugin_register(void)
-{
-   /* register the new protocol, protocol fields, and subtrees */
-   if (proto_gwtcs == -1) { /* execute protocol initialization only once */
-      proto_register_gwtcs();
-   }
-}
-
-G_MODULE_EXPORT void plugin_reg_handoff(void){
-   proto_reg_handoff_gwtcs();
-}
-#endif
-
-/*
- * Get a string describing a Value from the packet, and return the total length
- * (including the tag byte).
- *
- * ofs - offset into the buffer of the Value's tag byte
- * buf - buffer to write string into; on return is guaranteed to be null
- *     terminated
- * buflen - length of buf
- *
- * returns the offset after the last byte of this Value
- */
-static int getValue(tvbuff_t* tvb, int ofs, char* buf, int buflen) {
-  guint8 tag;
-  tag = tvb_get_guint8(tvb, ofs++);
-  int len = 0;
-  switch (tag) {
-    case VALUE_TYPE_NULL:
-      strncpy(buf, "null", buflen);
-      break;
-    case VALUE_TYPE_UNDEFINED:
-      strncpy(buf, "undef", buflen);
-      break;
-    case VALUE_TYPE_BOOLEAN:
-      {
-        guint8 val;
-        val = tvb_get_guint8(tvb, ofs);
-        len = 1;
-        strncpy(buf, val ? "true" : "false", buflen);
-      }
-      break;
-    case VALUE_TYPE_BYTE:
-      {
-        int val;
-        val = tvb_get_guint8(tvb, ofs);
-        if (val & 128) {
-          val -= 256;
-        }
-        len = 1;
-        snprintf(buf, buflen, "%d", val);
-      }
-      break;
-    case VALUE_TYPE_SHORT:
-      {
-        int val;
-        val = tvb_get_ntohs(tvb, ofs);
-        if (val & 0x8000) {
-          val -= 0x10000;
-        }
-        len = 2;
-        snprintf(buf, buflen, "%d", val);
-      }
-      break;
-    case VALUE_TYPE_CHAR:
-      {
-        int val;
-        val = tvb_get_ntohs(tvb, ofs);
-        len = 2;
-        /* show printable ASCII */
-        if (val >= 0x20 && val < 0x7f) {
-          snprintf(buf, buflen, "%d - %c", val, val);
-        } else {
-          snprintf(buf, buflen, "%d (U+%04x)", val, val);
-        }
-      }
-      break;
-    case VALUE_TYPE_INT:
-      {
-        int val;
-        val = tvb_get_ntohl(tvb, ofs);
-        len = 4;
-        snprintf(buf, buflen, "%d", val);
-      }
-      break;
-    case VALUE_TYPE_FLOAT:
-      {
-        float val;
-        val = tvb_get_ntohieee_float(tvb, ofs);
-        len = 4;
-        snprintf(buf, buflen, "%g", val);
-      }
-      break;
-    case VALUE_TYPE_JAVA_OBJECT:
-      {
-        int val;
-        val = tvb_get_ntohl(tvb, ofs);
-        len = 4;
-        snprintf(buf, buflen, "Java Object %d", val);
-      }
-      break;
-    case VALUE_TYPE_JS_OBJECT:
-      {
-        int val;
-        val = tvb_get_ntohl(tvb, ofs);
-        len = 4;
-        snprintf(buf, buflen, "JS Object %d", val);
-      }
-      break;
-    case VALUE_TYPE_LONG:
-      {
-        guint64 val;
-        val = tvb_get_ntoh64(tvb, ofs);
-        len = 8;
-        /* no portable way to print guint64, so do it in two pieces */
-        snprintf(buf, buflen, "0x%08x%08x", (int) ((val >> 32) & 0xFFFFFFFF),
-            (int) (val & 0xFFFFFFFF));
-      }
-      break;
-    case VALUE_TYPE_DOUBLE:
-      {
-        double val;
-        val = tvb_get_ntohieee_double(tvb, ofs);
-        len = 8;
-        snprintf(buf, buflen, "%lg", val);
-      }
-      break;
-    case VALUE_TYPE_STRING:
-      {
-        guint8* str;
-        len = tvb_get_ntohl(tvb, ofs);
-        ofs += 4;
-        str = tvb_get_ephemeral_string(tvb, ofs, len);
-        if (len > buflen - 3 && buflen >= 6) {
-          snprintf(buf, buflen, "\"%.*s...\"", buflen - 6, (char*) str);
-        } else {
-          snprintf(buf, buflen, "\"%s\"", (char*) str);
-        }
-      }
-      break;
-  }
-  /* ensure the buffer is null-terminated */;
-  buf[buflen - 1] = 0;
-
-  /* point to byte after this Value */
-  return ofs + len;
-}
-
-/*
- * Show a labelled Value.
- *
- * hdr - name of this Value
- * ofs - offset into buffer where the Value tag byte is located.
- *
- * returns the offset after the last byte of this Value
- */
-static int showValue(proto_tree* tree, char* hdr, tvbuff_t* tvb, int ofs) {
-  proto_tree* subtree;
-  proto_item* ti;
-  guint8 tag;
-  int newOffset;
-  char buf[40];
-  *buf = 0;
-  newOffset = getValue(tvb, ofs, buf, sizeof(buf));
-  tag = tvb_get_guint8(tvb, ofs);
-  ti = proto_tree_add_string_format(tree, hf_gwtcs_val_hdr, tvb, ofs,
-      newOffset - ofs, 0, "%s: %s", hdr, buf);
-  subtree = proto_item_add_subtree(ti, ett_value);
-  proto_tree_add_item(subtree, hf_gwtcs_value_tag, tvb, ofs++, 1, FALSE);
-  switch (tag) {
-    case VALUE_TYPE_NULL:
-      proto_tree_add_item(subtree, hf_gwtcs_val_null, tvb, ofs, 0, FALSE);
-      break;
-    case VALUE_TYPE_UNDEFINED:
-      proto_tree_add_item(subtree, hf_gwtcs_val_undef, tvb, ofs, 0, FALSE);
-      break;
-    case VALUE_TYPE_BOOLEAN:
-      proto_tree_add_item(subtree, hf_gwtcs_val_bool, tvb, ofs, 1, FALSE);
-      break;
-    case VALUE_TYPE_BYTE:
-      proto_tree_add_item(subtree, hf_gwtcs_val_byte, tvb, ofs, 1, FALSE);
-      break;
-    case VALUE_TYPE_CHAR:
-      proto_tree_add_item(subtree, hf_gwtcs_val_char, tvb, ofs, 2, FALSE);
-      break;
-    case VALUE_TYPE_SHORT:
-      proto_tree_add_item(subtree, hf_gwtcs_val_short, tvb, ofs, 2, FALSE);
-      break;
-    case VALUE_TYPE_INT:
-      proto_tree_add_item(subtree, hf_gwtcs_val_int, tvb, ofs, 4, FALSE);
-      break;
-    case VALUE_TYPE_LONG:
-      proto_tree_add_item(subtree, hf_gwtcs_val_long, tvb, ofs, 8, FALSE);
-      break;
-    case VALUE_TYPE_FLOAT:
-      proto_tree_add_item(subtree, hf_gwtcs_val_float, tvb, ofs, 4, FALSE);
-      break;
-    case VALUE_TYPE_DOUBLE:
-      proto_tree_add_item(subtree, hf_gwtcs_val_double, tvb, ofs, 8, FALSE);
-      break;
-    case VALUE_TYPE_STRING:
-      proto_tree_add_item(subtree, hf_gwtcs_val_string, tvb, ofs, 4, FALSE);
-      break;
-    case VALUE_TYPE_JAVA_OBJECT:
-      proto_tree_add_item(subtree, hf_gwtcs_val_javaobj, tvb, ofs, 4, FALSE);
-      break;
-    case VALUE_TYPE_JS_OBJECT:
-      proto_tree_add_item(subtree, hf_gwtcs_val_jsobj, tvb, ofs, 4, FALSE);
-      break;
-  }
-  return newOffset;
-}
-
-/*
- * Initialize memchunk system.
- */
-static void init() {
-  if (memChunk) {
-    g_mem_chunk_destroy(memChunk);
-  }
-  memChunk = g_mem_chunk_new("gwtcs data", sizeof(gwtcs_data),
-                             20 * sizeof(gwtcs_data), G_ALLOC_AND_FREE);
-}
-
-/*
- * Dissect a single packet.
- */
-static int dissect_gwtcs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
-{
-  guint8 packetType;
-  conversation_t* conv;
-  gwtcs_data* data = 0;
-  int isClient = 0;
-
-  if (tvb_length(tvb) < 1) {
-    return 0;
-  }
-
-  packetType = tvb_get_guint8(tvb, 0);
-  if (packetType > MAX_PACKET_TYPE) {
-    return 0;
-  }
-
-  if (check_col(pinfo->cinfo, COL_PROTOCOL)) {
-    col_set_str(pinfo->cinfo, COL_PROTOCOL, "GWT-CS");
-  }
-
-  /* Clear the info column */
-  if (check_col(pinfo->cinfo, COL_INFO)) {
-    col_set_str(pinfo->cinfo, COL_INFO, "");
-  }
-
-  /* get the conversation */
-  conv = find_conversation(pinfo->fd->num, &pinfo->src, &pinfo->dst,
-                           pinfo->ptype, pinfo->srcport, pinfo->destport, 0);
-  if (!conv) {
-    conv = conversation_new(pinfo->fd->num, &pinfo->src, &pinfo->dst,
-                            pinfo->ptype, pinfo->srcport, pinfo->destport, 0);
-  }
-  data = (gwtcs_data*) conversation_get_proto_data(conv, proto_gwtcs);
-  if (!data) {
-    data = (gwtcs_data*) g_mem_chunk_alloc(memChunk);
-    data->clientPort = -1;
-    data->level = 0;
-    conversation_add_proto_data(conv, proto_gwtcs, data);
-  }
-
-  if (packetType == MESSAGE_TYPE_CHECK_VERSIONS) {
-    data->clientAddress = pinfo->src;
-    data->clientPort = pinfo->srcport;
-  }
-
-  if (data->clientPort == pinfo->srcport) {
-    isClient = 1;
-  }
-
-  /* Set the info column */
-  if (check_col(pinfo->cinfo,COL_INFO)) {
-    gint32 len;
-    guint8* str;
-    int i;
-    gint32 offset = 1;
-    if (data->clientPort != -1) {
-      col_add_str(pinfo->cinfo, COL_INFO, isClient ? "C->S: " : "S->C: ");
-    }
-    for (i = 0; i < data->level; ++i) {
-      col_append_str(pinfo->cinfo, COL_INFO, " ");
-    }
-    col_append_str(pinfo->cinfo, COL_INFO, packetTypes[packetType].strptr);
-    switch (packetType) {
-      case MESSAGE_TYPE_CHECK_VERSIONS:
-        {
-          int minvers, maxvers;
-          minvers = tvb_get_ntohl(tvb, offset);
-          offset += 4;
-          maxvers = tvb_get_ntohl(tvb, offset);
-          col_append_fstr(pinfo->cinfo, COL_INFO, " vers=%d-%d", minvers,
-              maxvers);
-        }
-        break;
-      case MESSAGE_TYPE_PROTOCOL_VERSION:
-        {
-          int vers;
-          vers = tvb_get_ntohl(tvb, offset);
-          col_append_fstr(pinfo->cinfo, COL_INFO, " vers=%d", vers);
-        }
-        break;
-      case MESSAGE_TYPE_LOAD_MODULE:
-        data->level++;
-        // URL
-        len = tvb_get_ntohl(tvb, offset);
-        offset += 4 + len;
-        // tab key
-        len = tvb_get_ntohl(tvb, offset);
-        offset += 4 + len;
-        // session key
-        len = tvb_get_ntohl(tvb, offset);
-        offset += 4 + len;
-        // module name
-        len = tvb_get_ntohl(tvb, offset);
-        offset  += 4;
-        // clip string
-        if (len > MAX_STRING_LENGTH) {
-          len = MAX_STRING_LENGTH;
-        }
-        str = tvb_get_ephemeral_string(tvb, offset, len);
-        col_append_fstr(pinfo->cinfo, COL_INFO, " %s", str);
-        break;
-      case MESSAGE_TYPE_INVOKE:
-        data->level++;
-        if (data->clientPort == -1) {
-          break;
-        }
-        if (isClient) {
-          int dispId;
-          dispId = tvb_get_ntohl(tvb, offset);
-          offset += 4;
-          col_append_fstr(pinfo->cinfo, COL_INFO, " dispid=%d", dispId);
-        } else {
-          // module name
-          len = tvb_get_ntohl(tvb, offset);
-          offset += 4;
-          // clip string
-          if (len > MAX_STRING_LENGTH) {
-            len = MAX_STRING_LENGTH;
-          }
-          str = tvb_get_ephemeral_string(tvb, offset, len);
-          col_append_fstr(pinfo->cinfo, COL_INFO, " %s", str);
-        }
-        break;
-      case MESSAGE_TYPE_RETURN:
-        {
-          char buf[40];
-          guint8 isexc;
-          data->level--;
-          isexc = tvb_get_guint8(tvb, 1);
-          getValue(tvb, 2, buf, sizeof(buf));
-          col_append_fstr(pinfo->cinfo, COL_INFO, " %s%s",
-              isexc ? "** EXCEPTION ** " : "", buf);
-        }
-        break;
-      case MESSAGE_TYPE_INVOKESPECIAL:
-        {
-          guint8 specialType;
-          data->level++;
-          specialType = tvb_get_guint8(tvb, 1);
-          col_append_fstr(pinfo->cinfo, COL_INFO, " %s",
-              specialTypes[specialType].strptr);
-        }
-        break;
-    }
-  }
-
-  /*
-   * If tree is non-null, then we want to get the detailed data.
-   */
-  if (tree) {
-    proto_item *ti = 0;
-    proto_tree *gwtcs_tree = 0;
-    gint32 offset = 1;
-
-    ti = proto_tree_add_item(tree, proto_gwtcs, tvb, 0 , -1, FALSE);
-    gwtcs_tree = proto_item_add_subtree(ti, ett_gwtcs);
-    proto_tree_add_item(gwtcs_tree, hf_gwtcs_pdu_type, tvb, 0, 1, FALSE);
-    switch (packetType) {
-      case MESSAGE_TYPE_CHECK_VERSIONS:
-        proto_tree_add_item(gwtcs_tree, hf_gwtcs_min_vers, tvb, 1, 4, FALSE);
-        proto_tree_add_item(gwtcs_tree, hf_gwtcs_max_vers, tvb, 5, 4, FALSE);
-        proto_tree_add_item(gwtcs_tree, hf_gwtcs_hosted_vers, tvb, 9, 4, FALSE);
-        break;
-      case MESSAGE_TYPE_PROTOCOL_VERSION:
-        proto_tree_add_item(gwtcs_tree, hf_gwtcs_sel_vers, tvb, 1, 4, FALSE);
-        break;
-      case MESSAGE_TYPE_LOAD_MODULE:
-        {
-          guint32 len;
-          len = tvb_get_ntohl(tvb, offset);
-          proto_tree_add_item(gwtcs_tree, hf_gwtcs_lm_url, tvb, offset, 4,
-              FALSE);
-          offset += 4 + len;
-          len = tvb_get_ntohl(tvb, offset);
-          proto_tree_add_item(gwtcs_tree, hf_gwtcs_lm_tabkey, tvb, offset, 4,
-              FALSE);
-          offset += 4 + len;
-          len = tvb_get_ntohl(tvb, offset);
-          proto_tree_add_item(gwtcs_tree, hf_gwtcs_lm_seskey, tvb, offset, 4,
-              FALSE);
-          offset += 4 + len;
-          len = tvb_get_ntohl(tvb, offset);
-          proto_tree_add_item(gwtcs_tree, hf_gwtcs_lm_modname, tvb, offset, 4,
-              FALSE);
-          offset += 4 + len;
-          len = tvb_get_ntohl(tvb, offset);
-          proto_tree_add_item(gwtcs_tree, hf_gwtcs_lm_ua, tvb, offset, 4,
-              FALSE);
-          offset += 4 + len;
-        }
-        break;
-      case MESSAGE_TYPE_INVOKE:
-        {
-          int numArgs, len, i;
-          proto_item* ti;
-          proto_tree* subtree;
-          if (data->clientPort == -1) {
-            proto_tree_add_text(gwtcs_tree, tvb, 1, -1,
-                "Can't decode - unknown direction");
-            break;
-          }
-          if (isClient) {
-            proto_tree_add_item(gwtcs_tree, hf_gwtcs_dispid, tvb, offset, 4,
-                FALSE);
-            offset += 4;
-          } else {
-            // method name
-            len = tvb_get_ntohl(tvb, offset);
-            proto_tree_add_item(gwtcs_tree, hf_gwtcs_methname, tvb, offset, 4,
-                FALSE);
-            offset += 4 + len;
-          }
-          offset = showValue(gwtcs_tree, "This Value", tvb, offset);
-          numArgs = tvb_get_ntohl(tvb, offset);
-          ti = proto_tree_add_item(gwtcs_tree, hf_gwtcs_numargs, tvb, offset, 4,
-              FALSE);
-          subtree = proto_item_add_subtree(ti, ett_args);
-          offset += 4;
-          for (i = 0; i < numArgs; ++i) {
-            char argName[10];
-            snprintf(argName, sizeof(argName), "arg%d", i);
-            offset = showValue(subtree, argName, tvb, offset);
-          }
-        }
-        break;
-      case MESSAGE_TYPE_RETURN:
-        proto_tree_add_item(gwtcs_tree, hf_gwtcs_isexc, tvb, 1, 1, FALSE);
-        showValue(gwtcs_tree, "Return Value", tvb, 2);
-        break;
-      case MESSAGE_TYPE_LOADJSNI:
-        proto_tree_add_item(gwtcs_tree, hf_gwtcs_jsni, tvb, 1, 4, FALSE);
-        break;
-      case MESSAGE_TYPE_INVOKESPECIAL:
-        {
-          int numArgs, i;
-          proto_item* ti;
-          proto_tree* subtree;
-          proto_tree_add_item(gwtcs_tree, hf_gwtcs_spectype, tvb, offset++, 1,
-              FALSE);
-          numArgs = tvb_get_ntohl(tvb, offset);
-          ti = proto_tree_add_item(gwtcs_tree, hf_gwtcs_numargs, tvb, offset, 4,
-              FALSE);
-          offset += 4;
-          subtree = proto_item_add_subtree(ti, ett_args);
-          for (i = 0; i < numArgs; ++i) {
-            char argName[10];
-            snprintf(argName, sizeof(argName), "arg%d", i);
-            offset = showValue(subtree, argName, tvb, offset);
-          }
-        }
-        break;
-      case MESSAGE_TYPE_FREEVALUE:
-        {
-          int numArgs, i, label;
-          proto_item* ti;
-          proto_tree* subtree;
-          numArgs = tvb_get_ntohl(tvb, offset);
-          ti = proto_tree_add_item(gwtcs_tree, hf_gwtcs_numargs, tvb, offset, 4,
-              FALSE);
-          offset += 4;
-          subtree = proto_item_add_subtree(ti, ett_args);
-          label = isClient ? hf_gwtcs_val_jsobj : hf_gwtcs_val_javaobj;
-          for (i = 0; i < numArgs; ++i) {
-            proto_tree_add_item(subtree, label, tvb, offset, 4, FALSE);
-            offset += 4;
-          }
-        }
-        break;
-      case MESSAGE_TYPE_CHOOSE_TRANSPORT:
-        {
-          int numArgs, i, len;
-          proto_item* ti;
-          proto_tree* subtree;
-          numArgs = tvb_get_ntohl(tvb, offset);
-          ti = proto_tree_add_item(gwtcs_tree, hf_gwtcs_numargs, tvb, offset, 4,
-              FALSE);
-          offset += 4;
-          subtree = proto_item_add_subtree(ti, ett_args);
-          for (i = 0; i < numArgs; ++i) {
-            len = tvb_get_ntohl(tvb, offset);
-            proto_tree_add_item(subtree, hf_gwtcs_transport, tvb, offset, 4,
-                FALSE);
-            offset += 4 + len;
-          }
-        }
-        break;
-      case MESSAGE_TYPE_SWITCH_TRANSPORT:
-        {
-          int len;
-          len = tvb_get_ntohl(tvb, offset);
-          proto_tree_add_item(gwtcs_tree, hf_gwtcs_transport, tvb, offset, 4,
-              FALSE);
-          offset += 4 + len;
-          len = tvb_get_ntohl(tvb, offset);
-          proto_tree_add_item(gwtcs_tree, hf_gwtcs_transargs, tvb, offset, 4,
-              FALSE);
-          offset += 4 + len;
-        }
-        break;
-    }
-  }
-
-  return tvb_length(tvb);
-}
-
-void proto_register_gwtcs(void)
-{
-  /*
-   * List of subtree identifiers to be allocated.
-   */
-  static gint *ett[] = {
-    &ett_gwtcs,
-    &ett_value,
-    &ett_args,
-  };
-
-  /*
-   * List of display identifiers to be allocated.
-   */
-  static hf_register_info hf[] = {
-    {
-      &hf_gwtcs_pdu_type,
-      {
-        "Packet Type", "gwtcs.type",
-        FT_UINT8, BASE_DEC, VALS(packetTypes), 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_spectype,
-      {
-        "Type", "gwtcs.spectype",
-        FT_UINT8, BASE_DEC, VALS(specialTypes), 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_value_tag,
-      {
-        "Value Tag", "gwtcs.value.tag",
-        FT_UINT8, BASE_DEC, VALS(valueTypes), 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_min_vers,
-      {
-        "Minimum version", "gwtcs.minvers",
-        FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_max_vers,
-      {
-        "Maximum version", "gwtcs.maxvers",
-        FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_hosted_vers,
-      {
-        "hosted.html version", "gwtcs.hostedvers",
-        FT_UINT_STRING, BASE_DEC, NULL, 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_sel_vers,
-      {
-        "Selected version", "gwtcs.selvers",
-        FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_lm_url,
-      {
-        "URL", "gwtcs.lm.url",
-        FT_UINT_STRING, BASE_DEC, NULL, 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_lm_modname,
-      {
-        "Module Name", "gwtcs.lm.modname",
-        FT_UINT_STRING, BASE_DEC, NULL, 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_lm_tabkey,
-      {
-        "Tab Key", "gwtcs.lm.tabkey",
-        FT_UINT_STRING, BASE_DEC, NULL, 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_lm_seskey,
-      {
-        "Session Key", "gwtcs.lm.seskey",
-        FT_UINT_STRING, BASE_DEC, NULL, 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_lm_ua,
-      {
-        "User Agent", "gwtcs.lm.ua",
-        FT_UINT_STRING, BASE_DEC, NULL, 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_methname,
-      {
-        "Method Name", "gwtcs.lm.methname",
-        FT_UINT_STRING, BASE_DEC, NULL, 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_isexc,
-      {
-        "Is Exception", "gwtcs.isexc",
-        FT_BOOLEAN, BASE_DEC, NULL, 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_dispid,
-      {
-        "Dispatch ID", "gwtcs.dispid",
-        FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_jsni,
-      {
-        "JSNI Source", "gwtcs.jsni",
-        FT_UINT_STRING, BASE_DEC, NULL, 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_val_hdr,
-      {
-        "Value", "gwtcs.val.hdr",
-        FT_STRINGZ, BASE_DEC, NULL, 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_numargs,
-      {
-        "# of Arguments", "gwtcs.val.numargs",
-        FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_val_null,
-      {
-        "Null Value", "gwtcs.val.null",
-        FT_NONE, BASE_DEC, NULL, 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_val_undef,
-      {
-        "Undef Value", "gwtcs.val.undef",
-        FT_NONE, BASE_DEC, NULL, 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_val_bool,
-      {
-        "Boolean Value", "gwtcs.val.bool",
-        FT_BOOLEAN, BASE_DEC, NULL, 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_val_byte,
-      {
-        "Byte Value", "gwtcs.val.byte",
-        FT_INT8, BASE_DEC, NULL, 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_val_char,
-      {
-        "Char Value", "gwtcs.val.char",
-        FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_val_short,
-      {
-        "Short Value", "gwtcs.val.short",
-        FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_val_int,
-      {
-        "Int Value", "gwtcs.val.int",
-        FT_INT32, BASE_DEC, NULL, 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_val_long,
-      {
-        "Long Value", "gwtcs.val.long",
-        FT_INT64, BASE_DEC, NULL, 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_val_float,
-      {
-        "Float Value", "gwtcs.val.float",
-        FT_FLOAT, BASE_DEC, NULL, 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_val_double,
-      {
-        "Double Value", "gwtcs.val.double",
-        FT_DOUBLE, BASE_DEC, NULL, 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_val_javaobj,
-      {
-        "Java Object Id", "gwtcs.val.javaobj",
-        FT_INT32, BASE_DEC, NULL, 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_val_jsobj,
-      {
-        "JS Object Id", "gwtcs.val.jsobj",
-        FT_INT32, BASE_DEC, NULL, 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_val_string,
-      {
-        "String Value", "gwtcs.val.string",
-        FT_UINT_STRING, BASE_DEC, NULL, 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_transport,
-      {
-        "Transport Name", "gwtcs.transport",
-        FT_UINT_STRING, BASE_DEC, NULL, 0x0, NULL, HFILL,
-      }
-    },
-    {
-      &hf_gwtcs_transargs,
-      {
-        "Transport Args", "gwtcs.transargs",
-        FT_UINT_STRING, BASE_DEC, NULL, 0x0, NULL, HFILL,
-      }
-    },
-  };
-
-  if (proto_gwtcs == -1)
-  {
-     register_init_routine(&init);
-     proto_gwtcs = proto_register_protocol (
-        "GWT Code Server Protocol", /* name */
-        "GWT-CS",          /* short name */
-        "gwtcs"           /* abbrev */
-     );
-
-     proto_register_field_array(proto_gwtcs, hf, array_length(hf));
-     proto_register_subtree_array(ett, array_length(ett));
-  }
-}
-
-void proto_reg_handoff_gwtcs(void)
-{
-   static int Initialized=FALSE;
-
-   /* register with wireshark to dissect tdp packets on port 9997 */
-   if (!Initialized) {
-      gwtcs_handle = new_create_dissector_handle(dissect_gwtcs, proto_gwtcs);
-      dissector_add("tcp.port", DEFAULT_GWTCS_PORT, gwtcs_handle);
-      Initialized = TRUE;
-   }
-}
diff --git a/plugins/xpcom/ExternalWrapper.cpp b/plugins/xpcom/ExternalWrapper.cpp
deleted file mode 100644
index 62cc1b5..0000000
--- a/plugins/xpcom/ExternalWrapper.cpp
+++ /dev/null
@@ -1,417 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include "ExternalWrapper.h"
-
-#include "nsIHttpProtocolHandler.h"
-#include "nsISupports.h"
-#include "nsNetCID.h"
-#include "nsCOMPtr.h"
-#include "nsMemory.h"
-#include "nsServiceManagerUtils.h"
-#include "nsIPromptService.h"
-#include "nsIDOMWindow.h"
-#if GECKO_VERSION <= 7000
-#include "nsIDOMWindowInternal.h"
-#endif //GECKO_VERSION
-#include "nsIDOMLocation.h"
-#include "nsXPCOMStrings.h"
-#include "nsICategoryManager.h"
-#include "nsIJSContextStack.h"
-#include "nsIScriptContext.h"
-#include "nsIScriptGlobalObject.h"
-#include "nsPIDOMWindow.h"
-#include "LoadModuleMessage.h"
-#include "ServerMethods.h"
-#include "BrowserChannel.h"
-#include "AllowedConnections.h"
-
-#if GECKO_VERSION >= 1900
-#include "nsIClassInfoImpl.h"
-#endif //GECKO_VERSION
-
-#if GECKO_VERSION >= 2000
-NS_IMPL_CLASSINFO(ExternalWrapper, NULL, 0, OOPHM_CID)
-#endif //GECKO_VERSION
-
-NS_IMPL_ISUPPORTS2_CI(ExternalWrapper, IOOPHM, nsISecurityCheckedComponent)
-
-ExternalWrapper::ExternalWrapper() {
-  Debug::log(Debug::Debugging) << "ExternalWrapper::ExternalWrapper(this="
-      << this << ")" << Debug::flush;
-  preferences = new Preferences();
-  windowWatcher = do_GetService(NS_WINDOWWATCHER_CONTRACTID);
-  if (!windowWatcher) {
-    Debug::log(Debug::Warning) << "Can't get WindowWatcher service"
-        << Debug::flush;
-    return;
-  }
-}
-
-ExternalWrapper::~ExternalWrapper() {
-  Debug::log(Debug::Debugging) << "ExternalWrapper::~ExternalWrapper(this="
-      << this << ")" << Debug::flush;
-}
-
-// define the CID for nsIHttpProtocolHandler
-static NS_DEFINE_CID(kHttpHandlerCID, NS_HTTPPROTOCOLHANDLER_CID);
-
-static nsresult getUserAgent(std::string& userAgent) {
-  nsresult res;
-  nsCOMPtr<nsIHttpProtocolHandler> http = do_GetService(kHttpHandlerCID, &res);
-  if (NS_FAILED(res)) {
-    return res;
-  }
-  nsCString userAgentStr;
-  res = http->GetUserAgent(userAgentStr);
-  if (NS_FAILED(res)) {
-    return res;
-  }
-  userAgent.assign(userAgentStr.get());
-  return NS_OK;
-}
-
-/**
- * Get JS window object.
- *
- * @param win output parameter to store the window object
- * @return true on success
- */
-static bool getWindowObject(nsIDOMWindow** win) {
-  // Get JSContext from stack.
-  nsCOMPtr<nsIJSContextStack> stack =
-      do_GetService("@mozilla.org/js/xpc/ContextStack;1");
-  if (!stack) {
-    Debug::log(Debug::Error) << "getWindowObject: no context stack"
-        << Debug::flush;
-    return false;
-  }
-  JSContext *cx;
-  if (NS_FAILED(stack->Peek(&cx)) || !cx) {
-    Debug::log(Debug::Error) << "getWindowObject: no context on stack"
-        << Debug::flush;
-    return false;
-  }
-  if (!(::JS_GetOptions(cx) & JSOPTION_PRIVATE_IS_NSISUPPORTS)) {
-    Debug::log(Debug::Error)
-        << "getWindowObject: context doesn't have nsISupports" << Debug::flush;
-    return false;
-  }
-
-  nsCOMPtr<nsIScriptContext> scx =
-    do_QueryInterface(static_cast<nsISupports *>
-                                 (::JS_GetContextPrivate(cx)));
-  if (!scx) {
-    Debug::log(Debug::Error) << "getWindowObject: no script context"
-        << Debug::flush;
-    return false;
-  }
-  nsCOMPtr<nsIScriptGlobalObject> globalObj = scx->GetGlobalObject();
-  if (!globalObj) {
-    Debug::log(Debug::Error) << "getWindowObject: no global object"
-        << Debug::flush;
-    return false;
-  }
-  nsCOMPtr<nsPIDOMWindow> window = do_QueryInterface(globalObj);
-  if (!window) {
-    Debug::log(Debug::Error) << "getWindowObject: window is null"
-        << Debug::flush;
-    return false;
-  }
-  NS_ADDREF(*win = window);
-  return true;
-}
-
-/**
- * Get the URL of a window.
- *
- * @param win DOMWindowInternal instance
- * @param url output wide string for the URL
- * @return true if successful
- */
-static bool getWindowUrl(nsIDOMWindowInternal* win, nsAString& url) {
-  nsCOMPtr<nsIDOMLocation> loc;
-  if (win->GetLocation(getter_AddRefs(loc)) != NS_OK) {
-    Debug::log(Debug::Info) << "Unable to get location" << Debug::flush;
-    return false;
-  }
-  if (loc->GetHref(url) != NS_OK) {
-    Debug::log(Debug::Info) << "Unable to get URL" << Debug::flush;
-    return false;
-  }
-  return true;
-}
-
-/**
- * Get the top-level window for a given window, and its URL.
- *
- * @param win window to start from
- * @param topWinRet output parameter to store top window
- * @param topUrl output parameter to store URL
- * @return true on success, false on error (already logged)
- */
-static bool getTopWindow(nsIDOMWindow* win, nsIDOMWindowInternal** topWinRet,
-    nsAString& topUrl) {
-  nsCOMPtr<nsIDOMWindow> topWin;
-  if (win->GetTop(getter_AddRefs(topWin)) != NS_OK) {
-    Debug::log(Debug::Error) << "Unable to get top window" << Debug::flush;
-    return false;
-  }
-  nsresult rv;
-  nsCOMPtr<nsIDOMWindowInternal> topWinInt = do_QueryInterface(topWin, &rv);
-  if (rv != NS_OK) {
-    Debug::log(Debug::Error) << "Unable to QI DOMWindowInternal"
-        << Debug::flush;
-    return false;
-  }
-  if (!getWindowUrl(topWinInt, topUrl)) {
-    Debug::log(Debug::Error) << "Unable to get url of top window"
-        << Debug::flush;
-    return false;
-  }
-  NS_ADDREF(*topWinRet = topWinInt);
-  return true;
-}
-
-std::string ExternalWrapper::computeTabIdentity() {
-  std::string returnVal;
-  if (!windowWatcher) {
-    return returnVal;
-  }
-  // The nsPIDOMWindow interface of our top-level window appears to be stable
-  // across refreshes, so we will use that for our tab ID.
-  nsCOMPtr<nsPIDOMWindow> privateWin = do_QueryInterface(topWindow);
-  if (!privateWin) {
-    return returnVal;
-  }
-  char buf[20]; // typically 8-16 hex digits plus 0x, not horrible if truncated
-  snprintf(buf, sizeof(buf), "%p", privateWin.get());
-  buf[19] = 0; // ensure null termination
-  returnVal = buf;
-  return returnVal;
-}
-
-// TODO(jat): remove suppliedWindow and update hosted.html API
-
-#if GECKO_VERSION < 10000
-NS_IMETHODIMP ExternalWrapper::Init(nsIDOMWindow* suppliedWindow,
-    PRBool *_retval) {
-#else
-NS_IMETHODIMP ExternalWrapper::Init(nsIDOMWindow* suppliedWindow,
-    bool *_retval) {
-#endif //GECKO_VERSION
-
-  Debug::log(Debug::Debugging) << "Plugin initialized from hosted.html"
-      << Debug::flush;
-  *_retval = false;
-  nsCOMPtr<nsIDOMWindow> computedWindow;
-  if (getWindowObject(getter_AddRefs(computedWindow))) {
-    Debug::log(Debug::Debugging) << " passed window=" << suppliedWindow
-        << ", computed=" << computedWindow << Debug::flush;
-    domWindow = computedWindow;
-  } else {
-    Debug::log(Debug::Warning) << " using supplied window object"
-        << Debug::flush;
-    // TODO(jat): remove this
-    domWindow = suppliedWindow;
-  }
-  if (getTopWindow(domWindow, getter_AddRefs(topWindow), url)) {
-    *_retval = true;
-  }
-  return NS_OK;
-}
-
-bool ExternalWrapper::askUserToAllow(const std::string& url) {
-  nsCOMPtr<nsIPromptService> promptService = do_GetService(
-      "@mozilla.org/embedcomp/prompt-service;1");
-  if (!promptService) {
-    return false;
-  }
-  NS_ConvertASCIItoUTF16 title("Allow GWT Developer Plugin Connection");
-  NS_ConvertASCIItoUTF16 text("The web and code server combination is unrecognized and requesting a GWT "
-      "developer plugin connection -- do you want to allow it?");
-  NS_ConvertASCIItoUTF16 checkMsg("Remember this decision for this server "
-      "(change in GWT Developer Plugin preferences)");
-
-#if GECKO_VERSION < 10000
-  // Please see: https://bugzilla.mozilla.org/show_bug.cgi?id=681188
-  PRBool remember = false;
-  PRBool include = true;
-  if (promptService->ConfirmCheck(domWindow.get(), title.get(), text.get(),
-      checkMsg.get(), &remember, &include) != NS_OK) {
-    return false;
-  }
-
-  if (remember) {
-    std::string host = AllowedConnections::getHostFromUrl(url);
-    std::string server = AllowedConnections::getCodeServerFromUrl(url);
-    preferences->addNewRule(host + "/" + server, !include);
-  }
-  return include;
-
-#else
-
-  bool remember = false;
-  bool include = true;
-  if (promptService->ConfirmCheck(domWindow.get(), title.get(), text.get(),
-      checkMsg.get(), &remember, &include) != NS_OK) {
-    return false;
-  }
-
-  if (remember) {
-    std::string host = AllowedConnections::getHostFromUrl(url);
-    std::string server = AllowedConnections::getCodeServerFromUrl(url);
-    preferences->addNewRule(host + "/" + server, !include);
-  }
-
-  return include;
-
-#endif //GECKO_VERSION
-}
-
-// TODO(jat): remove suppliedUrl and update hosted.html API
-#if GECKO_VERSION < 10000
-NS_IMETHODIMP ExternalWrapper::Connect(const nsACString& suppliedUrl,
-                const nsACString& sessionKey, const nsACString& aAddr,
-                const nsACString& aModuleName, const nsACString& hostedHtmlVersion,
-                PRBool *_retval) {
-#else
-NS_IMETHODIMP ExternalWrapper::Connect(const nsACString& suppliedUrl,
-                const nsACString& sessionKey, const nsACString& aAddr,
-                const nsACString& aModuleName, const nsACString& hostedHtmlVersion,
-                bool *_retval) {
-#endif //GECKO_VERSION
-
-  Debug::log(Debug::Info) << "Connect(url=" <<  url << ", sessionKey="
-      << sessionKey << ", address=" << aAddr << ", module=" << aModuleName
-      << ", hostedHtmlVersion=" << hostedHtmlVersion << Debug::flush;
-
-  // TODO: string utilities?
-  nsCString urlAutoStr;
-  NS_UTF16ToCString(url, NS_CSTRING_ENCODING_UTF8, urlAutoStr);
-  nsCString sessionKeyAutoStr(sessionKey);
-  nsCString addrAutoStr(aAddr);
-  nsCString moduleAutoStr(aModuleName);
-  nsCString hostedHtmlVersionAutoStr(hostedHtmlVersion);
-  std::string hostedUrl(addrAutoStr.get());
-  std::string urlStr(urlAutoStr.get());
-
-  bool allowed = false;
-  std::string webHost = AllowedConnections::getHostFromUrl(urlStr);
-  std::string codeServer = AllowedConnections::getCodeServerFromUrl(urlStr);
-  if (!AllowedConnections::matchesRule( webHost, codeServer, &allowed)) {
-    // If we didn't match an existing rule, prompt the user
-    allowed = askUserToAllow(urlStr);
-  }
-  if (!allowed) {
-    *_retval = false;
-    return NS_OK;
-  }
-
-  size_t index = hostedUrl.find(':');
-  if (index == std::string::npos) {
-    *_retval = false;
-    return NS_OK;
-  }
-  std::string hostPart = hostedUrl.substr(0, index);
-  std::string portPart = hostedUrl.substr(index + 1);
-
-  // TODO(jat): leaks HostChannel -- need to save it in a session object and
-  // return that so the host page can call a disconnect method on it at unload
-  // time or when it gets GC'd.
-  HostChannel* channel = new HostChannel();
-
-  Debug::log(Debug::Debugging) << "Connecting..." << Debug::flush;
-
-  if (!channel->connectToHost(hostPart.c_str(),
-      atoi(portPart.c_str()))) {
-    *_retval = false;
-    return NS_OK;
-  }
-
-  Debug::log(Debug::Debugging) << "...Connected" << Debug::flush;
-  sessionHandler.reset(new FFSessionHandler(channel/*, ctx*/));
-
-  std::string hostedHtmlVersionStr(hostedHtmlVersionAutoStr.get());
-  if (!channel->init(sessionHandler.get(), BROWSERCHANNEL_PROTOCOL_VERSION,
-      BROWSERCHANNEL_PROTOCOL_VERSION, hostedHtmlVersionStr)) {
-    *_retval = false;
-    return NS_OK;
-  }
-
-  std::string moduleName(moduleAutoStr.get());
-  std::string userAgent;
-
-  // get the user agent
-  nsresult res = getUserAgent(userAgent);
-  if (NS_FAILED(res)) {
-    return res;
-  }
-
-  std::string tabKeyStr = computeTabIdentity();
-  std::string sessionKeyStr(sessionKeyAutoStr.get());
-
-  LoadModuleMessage::send(*channel, urlStr, tabKeyStr, sessionKeyStr,
-      moduleName, userAgent, sessionHandler.get());
-
-  // TODO: return session object?
-  *_retval = true;
-  return NS_OK;
-}
-
-// nsISecurityCheckedComponent
-static char* cloneAllAccess() {
-  static const char allAccess[] = "allAccess";
-  return static_cast<char*>(nsMemory::Clone(allAccess, sizeof(allAccess)));
-}
-
-static bool strEquals(const PRUnichar* utf16, const char* ascii) {
-  nsCString utf8;
-  NS_UTF16ToCString(nsDependentString(utf16), NS_CSTRING_ENCODING_UTF8, utf8);
-  return strcmp(ascii, utf8.get()) == 0;
-}
-
-NS_IMETHODIMP ExternalWrapper::CanCreateWrapper(const nsIID * iid,
-    char **_retval) {
-  Debug::log(Debug::Spam) << "ExternalWrapper::CanCreateWrapper"
-      << Debug::flush;
-  *_retval = cloneAllAccess();
-  return NS_OK;
-}
-
-NS_IMETHODIMP ExternalWrapper::CanCallMethod(const nsIID * iid,
-    const PRUnichar *methodName, char **_retval) {
-  Debug::log(Debug::Spam) << "ExternalWrapper::CanCallMethod" << Debug::flush;
-  if (strEquals(methodName, "connect") || strEquals(methodName, "init")) {
-    *_retval = cloneAllAccess();
-  } else {
-    *_retval = nsnull;
-  }
-  return NS_OK;
-}
-
-NS_IMETHODIMP ExternalWrapper::CanGetProperty(const nsIID * iid,
-    const PRUnichar *propertyName, char **_retval) {
-  Debug::log(Debug::Spam) << "ExternalWrapper::CanGetProperty" << Debug::flush;
-  *_retval = nsnull;
-  return NS_OK;
-}
-NS_IMETHODIMP ExternalWrapper::CanSetProperty(const nsIID * iid,
-    const PRUnichar *propertyName, char **_retval) {
-  Debug::log(Debug::Spam) << "ExternalWrapper::CanSetProperty" << Debug::flush;
-  *_retval = nsnull;
-  return NS_OK;
-}
diff --git a/plugins/xpcom/ExternalWrapper.h b/plugins/xpcom/ExternalWrapper.h
deleted file mode 100755
index 9d012e1..0000000
--- a/plugins/xpcom/ExternalWrapper.h
+++ /dev/null
@@ -1,93 +0,0 @@
-#ifndef _H_ExternalWrapper
-#define _H_ExternalWrapper
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include <string>
-
-#include "mozincludes.h"
-
-#include "IOOPHM.h"
-
-#include "Preferences.h"
-#include "FFSessionHandler.h"
-#include "Debug.h"
-#include "scoped_ptr/scoped_ptr.h"
-
-#include "nsCOMPtr.h"
-#include "nsISecurityCheckedComponent.h"
-#include "nsStringAPI.h"
-#include "nsIWindowWatcher.h"
-#include "nsIDOMWindow.h"
-
-class nsIDOMWindow;
-
-// {028DD88B-6D65-401D-AAFD-17E497D15D09}
-#define OOPHM_CID \
-  { 0x028DD88B, 0x6D65, 0x401D, \
-  { 0xAA, 0xFD, 0x17, 0xE4, 0x97, 0xD1, 0x5D, 0x09 } }
-
-#define OOPHM_CONTRACTID "@gwt.google.com/oophm/ExternalWrapper;1"
-#define OOPHM_CLASSNAME "GWT DevMode component"
-
-class ExternalWrapper : public IOOPHM,
-                        public nsISecurityCheckedComponent {
-  NS_DECL_ISUPPORTS
-  NS_DECL_IOOPHM
-  NS_DECL_NSISECURITYCHECKEDCOMPONENT
-
-  ExternalWrapper();
-  virtual ~ExternalWrapper();
-
-private:
-  nsCOMPtr<nsIDOMWindow> domWindow;
-  nsCOMPtr<nsIDOMWindowInternal> topWindow;
-  nsString url;
-  nsCOMPtr<Preferences> preferences;
-  scoped_ptr<FFSessionHandler> sessionHandler;
-  nsCOMPtr<nsIWindowWatcher> windowWatcher;
-
-  /**
-   * Prompt the user whether a connection should be allowed, and optionally
-   * update the preferences.
-   */
-  bool askUserToAllow(const std::string& url);
-
-  /**
-   * Compute a stable tab identity value for the DOM window.
-   *
-   * @return a unique tab identifier which is stable across reloads, or an
-   *     empty string if it cannot be computed
-   */
-  std::string computeTabIdentity();
-
-};
-
-inline Debug::DebugStream& operator<<(Debug::DebugStream& dbg,
-    const nsACString& str) {
-  nsCString copy(str);
-  dbg << copy.get();
-  return dbg;
-}
-
-inline Debug::DebugStream& operator<<(Debug::DebugStream& dbg,
-    const nsAString& str) {
-  NS_ConvertUTF16toUTF8 copy(str);
-  dbg << copy.get();
-  return dbg;
-}
-
-#endif
diff --git a/plugins/xpcom/FFSessionHandler.cpp b/plugins/xpcom/FFSessionHandler.cpp
deleted file mode 100755
index 4cd9771..0000000
--- a/plugins/xpcom/FFSessionHandler.cpp
+++ /dev/null
@@ -1,651 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include "FFSessionHandler.h"
-#include "HostChannel.h"
-#include "JavaObject.h"
-#include "JSRunner.h"
-#include "Debug.h"
-#include "XpcomDebug.h"
-#include "scoped_ptr/scoped_ptr.h"
-#include "RootedObject.h"
-#include "InvokeMessage.h"
-#include "ServerMethods.h"
-#include "AllowedConnections.h"
-
-#include "jsapi.h"
-#include "nsCOMPtr.h"
-#include "nsStringAPI.h"
-#include "nsIJSContextStack.h"
-#include "nsIPrincipal.h"
-#include "nsServiceManagerUtils.h"
-
-#if GECKO_VERSION >= 2000
-#define JS_RemoveRootRT js_RemoveRoot
-static inline bool INT_FITS_IN_JSVAL(int i) {
-  return (i >= JSVAL_INT_MIN) && (i <= JSVAL_INT_MAX);
-}
-#endif //GECKO_VERSION
-
-static JSContext* getJSContext() {
-  // Get JSContext from stack.
-  nsCOMPtr<nsIJSContextStack> stack =
-      do_GetService("@mozilla.org/js/xpc/ContextStack;1");
-  if (!stack) {
-    return NULL;
-  }
-
-  JSContext *cx;
-  if (NS_FAILED(stack->Peek(&cx))) {
-    return NULL;
-  }
-
-  if (cx == nsnull) {
-    // TODO(jat): figure out why this can be null at plugin unload time
-    Debug::log(Debug::Error) << "GWT Dev Plugin: Null JS context" << Debug::flush;
-  }
-
-  return cx;
-}
-
-FFSessionHandler::FFSessionHandler(HostChannel* channel)
-    : SessionData(channel, this, getJSContext()), jsObjectId(0),
-    jsObjectsById(NULL), stringObjectClass(NULL) {
-  Debug::log(Debug::Debugging) << "FFSessionHandler::FFSessionHandler(this="
-      << this << ")" << Debug::flush;
-  // TODO(jat): is there a way to avoid calling this twice, without keeping
-  // JSContext in an instance field?
-  JSContext* ctx = getJSContext();
-  if (!JS_AddNamedObjectRoot(ctx, &jsObjectsById, "jsObjectsById")) {
-    Debug::log(Debug::Error) << "Error rooting jsObjectsById" << Debug::flush;
-  }
-  jsObjectsById = JS_NewArrayObject(ctx, 0, NULL);
-  if (!jsObjectsById) {
-    Debug::log(Debug::Error) << "Error rooting jsObjectsById" << Debug::flush;
-  }
-  if (!JS_AddNamedValueRoot(ctx, &toStringTearOff, "toStringTearOff")) {
-    Debug::log(Debug::Error) << "Error rooting toStringTearOff" << Debug::flush;
-  }
-  getStringObjectClass(ctx);
-  getToStringTearOff(ctx);
-}
-
-void FFSessionHandler::getStringObjectClass(JSContext* ctx) {
-  jsval str = JS_GetEmptyStringValue(ctx);
-  JSObject* obj = 0;
-  if (!JS_ValueToObject(ctx, str, &obj)) {
-    return;
-  }
-  if (!obj) {
-    return;
-  }
-  stringObjectClass = JS_GET_CLASS(ctx, obj);
-}
-
-void FFSessionHandler::getToStringTearOff(JSContext* ctx) {
-  jsval funcVal;
-
-  Debug::log(Debug::Debugging) << "Getting function \"__gwt_makeTearOff\""
-        << Debug::flush;
-
-  if (!JS_GetProperty(ctx, global, "__gwt_makeTearOff", &funcVal)
-      || funcVal == JSVAL_VOID) {
-    Debug::log(Debug::Error) << "Could not get function \"__gwt_makeTearOff\""
-        << Debug::flush;
-    return;
-  }
-  jsval jsargs[3] = {
-    JSVAL_NULL,                                     // no proxy
-    INT_TO_JSVAL(InvokeMessage::TOSTRING_DISP_ID),  // dispId
-    JSVAL_ZERO                                      // arg count is zero
-  };
-  if (!JS_CallFunctionValue(ctx, global, funcVal, 3, jsargs, &toStringTearOff)) {
-    jsval exc;
-    if (JS_GetPendingException(ctx, &exc)) {
-      Debug::log(Debug::Error)
-          << "__gwt_makeTearOff(null,0,0) threw exception "
-          << dumpJsVal(ctx, exc) << Debug::flush;
-    } else {
-      Debug::log(Debug::Error) << "Error creating toString tear-off"
-          << Debug::flush;
-    }
-    // TODO(jat): show some crash page and die
-  }
-}
-
-FFSessionHandler::~FFSessionHandler(void) {
-  Debug::log(Debug::Debugging) << "FFSessionHandler::~FFSessionHandler(this="
-      << this << ")" << Debug::flush;
-  disconnect();
-  if (runtime) {
-    JS_RemoveRootRT(runtime, &jsObjectsById);
-    jsObjectsById = NULL;
-    JS_RemoveRootRT(runtime, &toStringTearOff);
-    runtime = NULL;
-  }
-}
-
-void FFSessionHandler::disconnectDetectedImpl() {
-  JSContext* ctx = getJSContext();
-  if (!ctx) {
-    return;
-  }
-
-  Debug::log(Debug::Debugging) << "Getting function \"__gwt_disconnected\""
-        << Debug::flush;
-
-  jsval funcVal;
-  if (!JS_GetProperty(ctx, global, "__gwt_disconnected", &funcVal)
-      || funcVal == JSVAL_VOID) {
-    Debug::log(Debug::Error) << "Could not get function \"__gwt_disconnected\""
-        << Debug::flush;
-    return;
-  }
-  jsval rval;
-  JS_CallFunctionValue(ctx, global, funcVal, 0, 0, &rval);
-}
-
-void FFSessionHandler::freeValue(HostChannel& channel, int idCount, const int* ids) {
-  Debug::DebugStream& dbg = Debug::log(Debug::Spam)
-      << "FFSessionHandler::freeValue [ ";
-  JSContext* ctx = getJSContext();
-
-  for (int i = 0; i < idCount; ++i) {
-    int objId = ids[i];
-    dbg << objId << " ";
-    jsval toRemove;
-    if (JS_GetElement(ctx, jsObjectsById, objId, &toRemove) && 
-#ifdef JSVAL_IS_OBJECT
-       JSVAL_IS_OBJECT(toRemove)) {
-#else
-       !JSVAL_IS_PRIMITIVE(toRemove)) { 
-#endif
-      jsIdsByObject.erase(identityFromObject(JSVAL_TO_OBJECT(toRemove)));
-      JS_DeleteElement(ctx, jsObjectsById, objId);
-    } else {
-      Debug::log(Debug::Error) << "Error deleting js objId=" << objId << Debug::flush;
-    }
-  }
-
-  dbg << "]" << Debug::flush;
-}
-
-void FFSessionHandler::loadJsni(HostChannel& channel, const std::string& js) {
-  Debug::log(Debug::Spam) << "FFSessionHandler::loadJsni " << js << "(EOM)" << Debug::flush;
-  JSContext* ctx = getJSContext();
-  if (!JSRunner::eval(ctx, global, js)) {
-    Debug::log(Debug::Error) << "Error executing script" << Debug::flush;
-  }
-}
-
-void FFSessionHandler::sendFreeValues(HostChannel& channel) {
-  unsigned n = javaObjectsToFree.size();
-  if (n) {
-    scoped_array<int> ids(new int[n]);
-    int i = 0;
-    for (std::set<int>::iterator it = javaObjectsToFree.begin();
-        it != javaObjectsToFree.end(); ++it) {
-      ids[i++] = *it;
-    }
-    if (ServerMethods::freeJava(channel, this, n, ids.get())) {
-      javaObjectsToFree.clear();
-    }
-  }
-}
-
-void FFSessionHandler::fatalError(HostChannel& channel,
-    const std::string& message) {
-  // TODO(jat): implement
-}
-
-bool FFSessionHandler::invoke(HostChannel& channel, const gwt::Value& thisObj, const std::string& methodName,
-    int numArgs, const gwt::Value* const args, gwt::Value* returnValue) {
-  Debug::log(Debug::Debugging) << "FFSessionHandler::invoke " << thisObj.toString()
-      << "::" << methodName << Debug::flush;
-  JSContext* ctx = getJSContext();
-
-  // Used to root JSthis and args while making the JS call
-  // TODO(jat): keep one object and just keep a "stack pointer" into that
-  // object on the native stack so we don't keep allocating/rooting/freeing
-  // an object
-  RootedObject argsRoot(ctx, "FFSessionhandler::invoke");
-  argsRoot = JS_NewArrayObject(ctx, 0, NULL);
-  if (!JS_SetArrayLength(ctx, argsRoot.get(), numArgs + 1)) {
-    Debug::log(Debug::Error)
-        << "FFSessionhandler::invoke - could not set argsRoot length"
-        << Debug::flush;
-    return true;
-  }
-
-  jsval jsThis;
-  if (thisObj.isNull()) {
-    jsThis = OBJECT_TO_JSVAL(global);
-    Debug::log(Debug::Debugging) << " using global object for this" << Debug::flush;
-  } else {
-    makeJsvalFromValue(jsThis, ctx, thisObj);
-    if (Debug::level(Debug::Spam)) {
-      Debug::log(Debug::Spam) << "  obj=" << dumpJsVal(ctx, jsThis)
-          << Debug::flush;
-    }
-  }
-  if (!JS_SetElement(ctx, argsRoot.get(), 0, &jsThis)) {
-    Debug::log(Debug::Error)
-        << "FFSessionhandler::invoke - could not set argsRoot[0] to this"
-        << Debug::flush;
-    return true;
-  }
-
-  jsval funcVal;
-  // TODO: handle non-ASCII method names
-  if (!JS_GetProperty(ctx, global, methodName.c_str(), &funcVal)
-      || funcVal == JSVAL_VOID) {
-    Debug::log(Debug::Error) << "Could not get function " << methodName
-        << Debug::flush;
-    return true;
-  } 
-
-  scoped_array<jsval> jsargs(new jsval[numArgs]);
-  for (int i = 0; i < numArgs; ++i) {
-    makeJsvalFromValue(jsargs[i], ctx, args[i]);
-    if (Debug::level(Debug::Spam)) {
-      Debug::log(Debug::Spam) << "  arg[" << i << "] = " << dumpJsVal(ctx,
-          jsargs[i]) << Debug::flush;
-    }
-    if (!JS_SetElement(ctx, argsRoot.get(), i + 1, &jsargs[i])) {
-      Debug::log(Debug::Error)
-          << "FFSessionhandler::invoke - could not set args[" << (i + 1) << "]"
-          << Debug::flush;
-      return true;
-    }
-  }
-
-  if (JS_IsExceptionPending(ctx)) {
-    JS_ClearPendingException(ctx);
-  }
-
-  jsval rval;
-  JSBool ok = JS_CallFunctionValue(ctx, JSVAL_TO_OBJECT(jsThis), funcVal,
-      numArgs, jsargs.get(), &rval);
-
-  if (!ok) {
-    if (JS_GetPendingException(ctx, &rval)) {
-      makeValueFromJsval(*returnValue, ctx, rval);
-      Debug::log(Debug::Debugging) << "FFSessionHandler::invoke "
-          << thisObj.toString() << "::" << methodName << " threw exception "
-          << dumpJsVal(ctx, rval) << Debug::flush;
-    } else {
-      Debug::log(Debug::Error) << "Non-exception failure invoking "
-          << methodName << Debug::flush;
-      returnValue->setUndefined();
-    }
-  } else {
-    makeValueFromJsval(*returnValue, ctx, rval);
-  }
-  Debug::log(Debug::Spam) << "  return= " << *returnValue << Debug::flush;
-  return !ok;
-}
-
-/**
- * Invoke a plugin-provided method with the given args.  As above, this method does not own
- * any of its args.
- *
- * Returns true if an exception occurred.
- */
-bool FFSessionHandler::invokeSpecial(HostChannel& channel, SpecialMethodId method, int numArgs,
-    const gwt::Value* const args, gwt::Value* returnValue)  {
-  Debug::log(Debug::Spam) << "FFSessionHandler::invokeSpecial" << Debug::flush;
-  return false;
-}
-
-/**
- * Convert UTF16 string to UTF8-encoded std::string.
- *
- * This is implemented here because the Mozilla libraries mangle certain UTF8
- * strings.
- *
- * @return UTF8-encoded string.
- */
-static std::string utf8String(const jschar* str, unsigned len) {
-  std::string utf8str;
-  while (len-- > 0) {
-    unsigned ch = *str++;
-    // check for paired surrogates first, leave unpaired surrogates as-is
-    if (ch >= 0xD800 && ch < 0xDC00 && len > 0 && *str >= 0xDC00 && *str < 0xE000) {
-      ch = ((ch & 1023) << 10) + (*str++ & 1023) + 0x10000;
-      len--;
-    }
-    if (ch < 0x80) {          // U+0000 - U+007F as 0xxxxxxx
-      utf8str.append(1, ch);
-    } else if (ch < 0x800) {  // U+0080 - U+07FF as 110xxxxx 10xxxxxx
-      utf8str.append(1, 0xC0 + ((ch >> 6) & 31));
-      utf8str.append(1, 0x80 + (ch & 63));
-    } else if (ch < 0x10000) { // U+0800 - U+FFFF as 1110xxxx 10xxxxxx 10xxxxxx
-      utf8str.append(1, 0xE0 + ((ch >> 12) & 15));
-      utf8str.append(1, 0x80 + ((ch >> 6) & 63));
-      utf8str.append(1, 0x80 + (ch & 63));
-    } else {  // rest as 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
-      utf8str.append(1, 0xF0 + ((ch >> 18) & 7));
-      utf8str.append(1, 0x80 + ((ch >> 12) & 63));
-      utf8str.append(1, 0x80 + ((ch >> 6) & 63));
-      utf8str.append(1, 0x80 + (ch & 63));
-    }
-  }
-  return utf8str;
-}
-
-/**
- * Creates a JSString from a UTF8-encoded std::string.
- *
- * This is implemented here because the Mozilla libraries mangle certain UTF8
- * strings.
- *
- * @return the JSString object, which owns its memory buffer.
- */
-static JSString* stringUtf8(JSContext* ctx, const std::string& utf8str) {
-  unsigned len = 0;
-  for (unsigned i = 0; i < utf8str.length(); ++i) {
-    char ch = utf8str[i];
-    switch (ch & 0xF8) {
-      // continuation & invalid chars
-      default:
-      // ASCII characters
-      case 0x00: case 0x08: case 0x10: case 0x18:
-      case 0x20: case 0x28: case 0x30: case 0x38:
-      case 0x40: case 0x48: case 0x50: case 0x58:
-      case 0x60: case 0x68: case 0x70: case 0x78:
-      // 2-byte UTF8 characters
-      case 0xC0: case 0xC8: case 0xD0: case 0xD8:
-      // 3-byte UTF8 characters
-      case 0xE0: case 0xE8:
-        ++len;
-        break;
-      case 0xF0:
-        len += 2;
-        break;
-    }
-  }
-  // Account for null terminator even if it isn't included in the string length
-  // Note that buf becomes owned by the JSString and must not be freed here.
-  jschar* buf = static_cast<jschar*>(JS_malloc(ctx, (len + 1) * sizeof(jschar)));
-  if (!buf) {
-    return NULL;
-  }
-  jschar* p = buf;
-  unsigned codePoint;
-  int charsLeft = -1;
-  for (unsigned i = 0; i < utf8str.length(); ++i) {
-    char ch = utf8str[i];
-    if (charsLeft >= 0) {
-      if ((ch & 0xC0) != 0x80) {
-        // invalid, missing continuation character
-        *p++ = static_cast<jschar>(0xFFFD);
-        charsLeft = -1;
-      } else {
-        codePoint = (codePoint << 6) | (ch & 63);
-        if (!--charsLeft) {
-          if (codePoint >= 0x10000) {
-            codePoint -= 0x10000;
-            *p++ = static_cast<jschar>(0xD800 + ((codePoint >> 10) & 1023));
-            *p++ = static_cast<jschar>(0xDC00 + (codePoint & 1023));
-          } else {
-            *p++ = static_cast<jschar>(codePoint);
-          }
-          charsLeft = -1;
-        }
-      }
-      continue;
-    }
-    // Look at the top 5 bits to determine how many bytes are in this character.
-    switch (ch & 0xF8) {
-      default: // skip invalid and continuation chars
-        break;
-      case 0x00: case 0x08: case 0x10: case 0x18:
-      case 0x20: case 0x28: case 0x30: case 0x38:
-      case 0x40: case 0x48: case 0x50: case 0x58:
-      case 0x60: case 0x68: case 0x70: case 0x78:
-        *p++ = static_cast<jschar>(ch);
-        break;
-      case 0xC0: case 0xC8: case 0xD0: case 0xD8:
-        charsLeft = 1;
-        codePoint = ch & 31;
-        break;
-      case 0xE0: case 0xE8:
-        charsLeft = 2;
-        codePoint = ch & 15;
-        break;
-      case 0xF0:
-        charsLeft = 3;
-        codePoint = ch & 7;
-        break;
-    }
-  }
-  // null terminator, apparently some code expects a terminator even though
-  // the strings are counted.  Note that this null word should not be included
-  // in the length, and that the buffer becomes owned by the JSString object.
-  *p = 0;
-  return JS_NewUCString(ctx, buf, p - buf);
-}
-
-void FFSessionHandler::makeValueFromJsval(gwt::Value& retVal, JSContext* ctx,
-    const jsval& value) {
-  if (JSVAL_IS_VOID(value)) {
-    retVal.setUndefined();
-  } else if (JSVAL_IS_NULL(value)) {
-    retVal.setNull();
-  } else if (JSVAL_IS_INT(value)) {
-    retVal.setInt(JSVAL_TO_INT(value));
-  } else if (JSVAL_IS_BOOLEAN(value)) {
-    retVal.setBoolean(JSVAL_TO_BOOLEAN(value));
-  } else if (JSVAL_IS_STRING(value)) {
-    JSString* str = JSVAL_TO_STRING(value);
-#if GECKO_VERSION < 2000
-    retVal.setString(utf8String(JS_GetStringChars(str),
-        JS_GetStringLength(str)));
-#else
-    retVal.setString(utf8String(JS_GetStringCharsZ(ctx, str),
-        JS_GetStringLength(str)));
-#endif //GECKO_VERSION
-  } else if (JSVAL_IS_DOUBLE(value)) {
-    retVal.setDouble(JSVAL_TO_DOUBLE(value));
-#ifdef JSVAL_IS_OBJECT
-  } else if (JSVAL_IS_OBJECT(value)) {
-#else
-  } else if (!JSVAL_IS_PRIMITIVE(value)) {
-#endif
-    JSObject* obj = JSVAL_TO_OBJECT(value);
-    if (JavaObject::isJavaObject(ctx, obj)) {
-      retVal.setJavaObject(JavaObject::getObjectId(ctx, obj));
-    } else if (JS_GET_CLASS(ctx, obj) == stringObjectClass) {
-      // JS String wrapper object, treat as a string primitive
-      JSString* str = JS_ValueToString(ctx, value);
-#if GECKO_VERSION < 2000
-    retVal.setString(utf8String(JS_GetStringChars(str),
-        JS_GetStringLength(str)));
-#else
-    retVal.setString(utf8String(JS_GetStringCharsZ(ctx, str),
-        JS_GetStringLength(str)));
-#endif //GECKO_VERSION
-      // str will be garbage-collected, does not need to be freed
-    } else {
-      // It's a plain-old JavaScript Object
-      void* objKey = identityFromObject(obj);
-      std::map<void*, int>::iterator it = jsIdsByObject.find(objKey);
-      if (it != jsIdsByObject.end()) {
-        retVal.setJsObjectId(it->second);
-      } else {
-        // Allocate a new id
-        int objId = ++jsObjectId;
-        JS_SetElement(ctx, jsObjectsById, objId, const_cast<jsval*>(&value));
-        jsIdsByObject[objKey] = objId;
-        retVal.setJsObjectId(objId);
-      }
-    }
-  } else {
-    Debug::log(Debug::Error) << "Unhandled jsval type " << Debug::flush;
-    retVal.setString("Unhandled jsval type");
-  }
-}
-
-void FFSessionHandler::makeJsvalFromValue(jsval& retVal, JSContext* ctx,
-    const gwt::Value& value) {
-  switch (value.getType()) {
-    case gwt::Value::NULL_TYPE:
-      retVal = JSVAL_NULL;
-      break;
-    case gwt::Value::BOOLEAN:
-      retVal = BOOLEAN_TO_JSVAL(value.getBoolean());
-      break;
-    case gwt::Value::BYTE:
-      retVal = INT_TO_JSVAL((int) value.getByte());
-      break;
-    case gwt::Value::CHAR:
-      retVal = INT_TO_JSVAL((int) value.getChar());
-      break;
-    case gwt::Value::SHORT:
-      retVal = INT_TO_JSVAL((int) value.getShort());
-      break;
-    case gwt::Value::INT: {
-      int intValue = value.getInt();
-      if (INT_FITS_IN_JSVAL(intValue)) {
-        retVal = INT_TO_JSVAL(intValue);
-      } else {
-        JS_NewNumberValue(ctx, (jsdouble) intValue, &retVal);
-      }
-      break;
-    }
-    // TODO(jat): do we still need long support in the wire format and Value?
-//    case gwt::Value::LONG:
-//      retVal = value.getLong();
-//      break;
-    case gwt::Value::FLOAT:
-      JS_NewNumberValue(ctx, (jsdouble) value.getFloat(), &retVal);
-      break;
-    case gwt::Value::DOUBLE:
-      JS_NewNumberValue(ctx, (jsdouble) value.getDouble(), &retVal);
-      break;
-    case gwt::Value::STRING:
-      {
-        JSString* str = stringUtf8(ctx, value.getString());
-        retVal = STRING_TO_JSVAL(str);
-      }
-      break;
-    case gwt::Value::JAVA_OBJECT:
-      {
-        int javaId = value.getJavaObjectId();
-        std::map<int, JSObject*>::iterator i = javaObjectsById.find(javaId);
-        if (i == javaObjectsById.end()) {
-          JSObject* obj = JavaObject::construct(ctx, this, javaId);
-          javaObjectsById[javaId] = obj;
-          // We may have previously released the proxy for the same object id,
-          // but have not yet sent a free message back to the server.
-          javaObjectsToFree.erase(javaId);
-          retVal = OBJECT_TO_JSVAL(obj);
-        } else {
-          retVal = OBJECT_TO_JSVAL(i->second);
-        }
-      }
-      break;
-    case gwt::Value::JS_OBJECT:
-      {
-        int jsId = value.getJsObjectId();
-        if (!JS_GetElement(ctx, jsObjectsById, jsId, &retVal)) {
-          Debug::log(Debug::Error) << "Error getting jsObject with id " << jsId << Debug::flush;
-        }
-#ifdef JSVAL_IS_OBJECT
-        if (!JSVAL_IS_OBJECT(retVal)) {
-#else
-        if (JSVAL_IS_PRIMITIVE(retVal)) {
-#endif
-          Debug::log(Debug::Error) << "Missing jsObject with id " << jsId << Debug::flush;
-        }
-      }
-      break;
-    case gwt::Value::UNDEFINED:
-      retVal = JSVAL_VOID;
-      break;
-    default:
-      Debug::log(Debug::Error) << "Unknown Value type " << value.toString() << Debug::flush;
-  }
-}
-
-void FFSessionHandler::freeJavaObject(int objectId) {
-  if (!javaObjectsById.erase(objectId)) {
-    Debug::log(Debug::Error) << "Trying to free unknown JavaObject: " << objectId << Debug::flush;
-    return;
-  }
-  javaObjectsToFree.insert(objectId);
-}
-
-void FFSessionHandler::disconnect() {
-  Debug::log(Debug::Debugging) << "FFSessionHandler::disconnect" << Debug::flush;
-  JSContext* ctx = getJSContext();
-  bool freeCtx = false;
-  if (!ctx) {
-    Debug::log(Debug::Debugging) << "  creating temporary context"
-        << Debug::flush;
-    freeCtx = true;
-    ctx = JS_NewContext(runtime, 8192);
-    if (ctx) {
-      JS_SetOptions(ctx, JSOPTION_VAROBJFIX);
-#ifdef JSVERSION_LATEST
-      JS_SetVersion(ctx, JSVERSION_LATEST);
-#endif
-    }
-  }
-  if (ctx) {
-    JS_BeginRequest(ctx);
-    for (std::map<int, JSObject*>::iterator it = javaObjectsById.begin();
-        it != javaObjectsById.end(); ++it) {
-      int javaId = it->first;
-      JSObject* obj = it->second;
-      if (JavaObject::isJavaObject(ctx, obj)) {
-        // clear the SessionData pointer -- JavaObject knows it is
-        // disconnected if this is null
-        MOZ_JS_SetPrivate(ctx, obj, NULL);
-        javaObjectsToFree.erase(javaId);
-      }
-    }
-    JS_EndRequest(ctx);
-    if (freeCtx) {
-      JS_DestroyContext(ctx);
-    }
-  } else {
-    Debug::log(Debug::Warning)
-        << "FFSessionHandler::disconnect - no context available"
-        << Debug::flush;
-  }
-  HostChannel* channel = getHostChannel();
-  if (channel->isConnected()) {
-    channel->disconnectFromHost();
-  }
-}
-
-void* FFSessionHandler::identityFromObject(JSObject* obj) {
-  JSContext* ctx = getJSContext();
-  jsval rval;
-  void* returnValue = obj;
-  if (JS_GetProperty(ctx, obj, "wrappedJSObject", &rval)
-#ifdef JSVAL_IS_OBJECT
-      && JSVAL_IS_OBJECT(rval)) {
-#else
-      && !JSVAL_IS_PRIMITIVE(rval)) {
-#endif
-    returnValue = JSVAL_TO_OBJECT(rval);
-    Debug::log(Debug::Info) << "identityFromObject mapped " << obj << " to "
-        << returnValue << Debug::flush;
-  }
-  return returnValue;
-}
diff --git a/plugins/xpcom/FFSessionHandler.h b/plugins/xpcom/FFSessionHandler.h
deleted file mode 100755
index f7941bf..0000000
--- a/plugins/xpcom/FFSessionHandler.h
+++ /dev/null
@@ -1,73 +0,0 @@
-#ifndef _H_FFSessionHandler
-#define _H_FFSessionHandler
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include <set>
-#include <map>
-
-#include "mozincludes.h"
-#include "SessionData.h"
-#include "Preferences.h"
-
-#include "jsapi.h"
-
-class HostChannel;
-namespace gwt {
-  class Value;
-}
-
-class FFSessionHandler : public SessionData, public SessionHandler {
-  friend class JavaObject;
-public:
-  FFSessionHandler(HostChannel* channel);
-  ~FFSessionHandler(void);
-  virtual void makeValueFromJsval(gwt::Value& retVal, JSContext* ctx,
-      const jsval& value);
-  virtual void makeJsvalFromValue(jsval& retVal, JSContext* ctx,
-      const gwt::Value& value);
-  virtual void freeJavaObject(int objectId);
-  void disconnect();
-
-protected:
-  virtual void disconnectDetectedImpl();
-  virtual void freeValue(HostChannel& channel, int idCount, const int* ids);
-  virtual void loadJsni(HostChannel& channel, const std::string& js);
-  virtual bool invoke(HostChannel& channel, const gwt::Value& thisObj, const std::string& methodName,
-      int numArgs, const gwt::Value* const args, gwt::Value* returnValue);
-  virtual bool invokeSpecial(HostChannel& channel, SpecialMethodId method, int numArgs,
-      const gwt::Value* const args, gwt::Value* returnValue);
-  virtual void sendFreeValues(HostChannel& channel);
-  virtual void fatalError(HostChannel& channel, const std::string& message);
-
-private:
-  void getStringObjectClass(JSContext* ctx);
-  void getToStringTearOff(JSContext* ctx);
-  void* identityFromObject(JSObject* obj);
-
-  int jsObjectId;
-
-  std::map<int, JSObject*> javaObjectsById;
-  std::set<int> javaObjectsToFree;
-
-  // Array of JSObjects exposed to the host
-  JSObject* jsObjectsById;
-  JSClass* stringObjectClass;
-
-  std::map<void*, int> jsIdsByObject;
-};
-
-#endif
diff --git a/plugins/xpcom/IOOPHM.idl b/plugins/xpcom/IOOPHM.idl
deleted file mode 100644
index 1aeea54..0000000
--- a/plugins/xpcom/IOOPHM.idl
+++ /dev/null
@@ -1,11 +0,0 @@
-#include "nsISupports.idl"
-
-interface nsIDOMWindow;
-
-[scriptable, uuid(90CEF17B-C3FE-4251-AF68-4381B3D938A0)]
-interface IOOPHM : nsISupports
-{
-  boolean init(in nsIDOMWindow window);
-  boolean connect(in ACString url, in ACString sessionKey, in ACString addr,
-  in ACString moduleName, in ACString hostedHtmlVersion);
-};
diff --git a/plugins/xpcom/IOOPHM.xpt b/plugins/xpcom/IOOPHM.xpt
deleted file mode 100644
index 4be87b7..0000000
--- a/plugins/xpcom/IOOPHM.xpt
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/JSRunner.cpp b/plugins/xpcom/JSRunner.cpp
deleted file mode 100755
index f5b3a8a..0000000
--- a/plugins/xpcom/JSRunner.cpp
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#include "Debug.h"
-#include "JSRunner.h"
-
-#include "nsCOMPtr.h"
-#include "nsIPrincipal.h"
-#include "nsIScriptGlobalObject.h"
-#include "nsIScriptObjectPrincipal.h"
-#include "nsIURI.h"
-#include "nsIXPConnect.h"
-#if GECKO_VERSION >= 13000
-#include "nsJSPrincipals.h"
-#endif
-#include "nsStringAPI.h"
-
-// from js_runner_ff.cc in Gears (http://code.google.com/p/gears/)
-
-bool JSRunner::eval(JSContext* ctx, JSObject* object, const std::string& script) {
-  // To eval the script, we need the JSPrincipals to be acquired through
-  // nsIPrincipal.  nsIPrincipal can be queried through the
-  // nsIScriptObjectPrincipal interface on the Script Global Object.  In order
-  // to get the Script Global Object, we need to request the private data
-  // associated with the global JSObject on the current context.
-  nsCOMPtr<nsIScriptGlobalObject> sgo;
-  nsISupports *priv = reinterpret_cast<nsISupports *>(JS_GetPrivate(
-#if GECKO_VERSION < 13000
-                                                          ctx,
-#endif
-                                                          object));
-  nsCOMPtr<nsIXPConnectWrappedNative> wrapped_native = do_QueryInterface(priv);
-
-  if (wrapped_native) {
-    // The global object is a XPConnect wrapped native, the native in
-    // the wrapper might be the nsIScriptGlobalObject.
-    sgo = do_QueryWrappedNative(wrapped_native);
-  } else {
-    sgo = do_QueryInterface(priv);
-  }
-
-  JSPrincipals *jsprin = nsnull;
-  std::string virtual_filename;
-  nsresult nr;
-
-  nsCOMPtr<nsIScriptObjectPrincipal> obj_prin = do_QueryInterface(sgo, &nr);
-  if (NS_FAILED(nr)) {
-    Debug::log(Debug::Error) << "Error getting object principal" << Debug::flush;
-    return false;
-  }
-
-  nsIPrincipal *principal = obj_prin->GetPrincipal();
-  if (!principal) {
-    Debug::log(Debug::Error) << "Error getting principal" << Debug::flush;
-    return false;
-  }
-
-  // Get the script scheme and host from the principal.  This is the URI that
-  // Firefox treats this script as running from.
-
-  // If the codebase is null, the script may be running from a chrome context.
-  // In that case, don't construct a virtual filename.
-
-  nsCOMPtr<nsIURI> codebase;
-  nr = principal->GetURI(getter_AddRefs(codebase));
-  if (codebase) { 
-    nsCString scheme;
-    nsCString host;
-
-    if (NS_FAILED(codebase->GetScheme(scheme)) ||
-        NS_FAILED(codebase->GetHostPort(host))) {
-      Debug::log(Debug::Error) << "Error getting codebase" << Debug::flush;
-      return false;
-    }
-
-    // Build a virtual filename that we'll run as.  This is to workaround
-    // http://lxr.mozilla.org/seamonkey/source/dom/src/base/nsJSEnvironment.cpp#500
-    // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=387477
-    // The filename is being used as the security origin instead of the principal.
-    // TODO(zork): Remove this section if this bug is resolved.
-    virtual_filename = std::string(scheme.BeginReading());
-    virtual_filename += "://";
-    virtual_filename += host.BeginReading();
-  }
-
-#if GECKO_VERSION >= 13000
-  jsprin = nsJSPrincipals::get(principal);
-#else
-  principal->GetJSPrincipals(ctx, &jsprin);
-#endif
-
-  if (jsprin == nsnull) {
-    Debug::log(Debug::Error) << "Get JSPrincial failed at JSRunner::eval"
-        << Debug::flush;
-    return false;
-  }
-
-  // Set up the JS stack so that our context is on top.  This is needed to
-  // play nicely with plugins that access the context stack, such as Firebug.
-//  nsCOMPtr<nsIJSContextStack> stack =
-//      do_GetService("@mozilla.org/js/xpc/ContextStack;1");
-//  if (!stack) { return false; }
-//
-//  stack->Push(js_engine_context_);
-
-  uintN line_number_start = 0;
-  jsval rval;
-  JSBool js_ok = JS_EvaluateScriptForPrincipals(ctx, object, jsprin,
-      script.c_str(), script.length(), virtual_filename.c_str(),
-      line_number_start, &rval);
-
-  // Restore the context stack.
-//  JSContext *cx;
-//  stack->Pop(&cx);
-
-  // Decrements ref count on jsprin (Was added in GetJSPrincipals()).
-#if GECKO_VERSION >= 13000
-  (void) JS_DropPrincipals(JS_GetRuntime(ctx), jsprin);
-#else
-  (void) JSPRINCIPALS_DROP(ctx, jsprin);
-#endif
-  if (!js_ok) {
-    Debug::log(Debug::Error) << "JS execution failed in JSRunner::eval"
-        << Debug::flush;
-    return false;
-  }
-
-  return true;
-}
diff --git a/plugins/xpcom/JSRunner.h b/plugins/xpcom/JSRunner.h
deleted file mode 100755
index 733970e..0000000
--- a/plugins/xpcom/JSRunner.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef _H_JSRunner
-#define _H_JSRunner
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#include <string>
-
-#include "mozincludes.h"
-#include "jsapi.h"
-
-class JSRunner {
-public:
-  static bool eval(JSContext* ctx, JSObject* global, const std::string& script);
-};
-
-#endif
diff --git a/plugins/xpcom/JavaObject.cpp b/plugins/xpcom/JavaObject.cpp
deleted file mode 100644
index 9940fa9..0000000
--- a/plugins/xpcom/JavaObject.cpp
+++ /dev/null
@@ -1,506 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include "JavaObject.h"
-#include "FFSessionHandler.h"
-#include "SessionData.h"
-#include "ServerMethods.h"
-#include "Debug.h"
-#include "XpcomDebug.h"
-#include "HostChannel.h"
-#include "InvokeMessage.h"
-#include "ReturnMessage.h"
-#include "scoped_ptr/scoped_ptr.h"
-
-static JSClass JavaObjectClass = {
-  "GWTJavaObject", /* class name */
-  JSCLASS_HAS_PRIVATE | JSCLASS_HAS_RESERVED_SLOTS(1) | JSCLASS_NEW_ENUMERATE, /* flags */
-
-  JS_PropertyStub, /* add property */
-  JS_PropertyStub, /* delete property */
-#if GECKO_VERSION < 15000
-  JavaObject::getProperty, /* get property */
-  JavaObject::setProperty, /* set property */
-#else
-  JavaObject::getPropertyWrapper,
-  JavaObject::setPropertyWrapper,
-#endif //GECHO_VERSION
-
-  reinterpret_cast<JSEnumerateOp>(JavaObject::enumerate), /* enumerate */
-  JS_ResolveStub, /* resolve */
-  JS_ConvertStub, // JavaObject::convert, /* convert */
-  JavaObject::finalize, /* finalize */ //TODO
-
-#if GECKO_VERSION < 13000
-  NULL, /* object hooks */
-#endif
-  NULL, /* check access */
-#if GECKO_VERSION < 2000
-  JavaObject::call, /* call */ //TODO
-#else
-  JavaObject::call20, /* call: compatability wrapper for 2.0+ */
-#endif //GECKO_VERSION
-  NULL, /* construct */
-  NULL, /* object serialization */
-  NULL, /* has instance */
-  NULL, /* mark */
-  NULL /* reserve slots */
-};
-
-int JavaObject::getObjectId(JSContext* ctx, JSObject* obj) {
-  jsval val;
-  JSClass* jsClass = JS_GET_CLASS(ctx, obj);
-  if (jsClass != &JavaObjectClass) {
-    Debug::log(Debug::Error)
-        << "JavaObject::getObjectId called on non-JavaObject: " << jsClass->name
-        << Debug::flush;
-    return -1;
-  }
-  if (JSCLASS_RESERVED_SLOTS(jsClass) < 1) {
-    Debug::log(Debug::Error)
-        << "JavaObject::getObjectId -- " << static_cast<void*>(obj)
-        << " has only " << (JSCLASS_RESERVED_SLOTS(jsClass))
-        << " reserved slots, no objectId present" << Debug::flush;
-    return -1;
-  }
-
-
-#if GECKO_VERSION >= 13000
-  val = JS_GetReservedSlot(obj, 0);
-#else
-  if (!JS_GetReservedSlot(ctx, obj, 0, &val)) {
-    Debug::log(Debug::Error) << "Error getting reserved slot" << Debug::flush;
-    return -1;
-  }
-#endif
-
-  // TODO: assert JSVAL_IS_INT(val)
-  return JSVAL_TO_INT(val);
-}
-
-SessionData* JavaObject::getSessionData(JSContext* ctx, JSObject* obj) {
-  void* data = JS_GetInstancePrivate(ctx, obj, &JavaObjectClass, NULL);
-  return static_cast<SessionData*>(data);
-}
-
-
-bool JavaObject::isJavaObject(JSContext* ctx, JSObject* obj) {
-  return JS_GET_CLASS(ctx, obj) == &JavaObjectClass;
-}
-
-JSObject* JavaObject::construct(JSContext* ctx, SessionData* data, int objectRef) {
-  // TODO: prototype? parent?
-  Debug::log(Debug::Spam) << "JavaObject::construct objectId=" << objectRef << Debug::flush;
-  JSObject* obj = JS_NewObject(ctx, &JavaObjectClass, NULL, NULL);
-  Debug::log(Debug::Spam) << "  obj=" << obj << Debug::flush;
-  if (!obj) {
-    return NULL;
-  }
-  // set the session data
-#if GECKO_VERSION >= 13000
-  MOZ_JS_SetPrivate(ctx, obj, data);
-#else
-  if (!MOZ_JS_SetPrivate(ctx, obj, data)) {
-    Debug::log(Debug::Error) << "Could not set private data" << Debug::flush;
-    return NULL;
-  }
-#endif
-
-  #if GECKO_VERSION >= 13000
-  MOZ_JS_SetReservedSlot(ctx, obj, 0, INT_TO_JSVAL(objectRef));
-  #else
-  // set the objectId
-  if (!MOZ_JS_SetReservedSlot(ctx, obj, 0, INT_TO_JSVAL(objectRef))) {
-    Debug::log(Debug::Error) << "Could not set reserved slot" << Debug::flush;
-    return NULL;
-  }
-  #endif
-
-  // define toString (TODO: some way to avoid doing this each time)
-#if GECKO_VERSION < 2000
-  if (!JS_DefineFunction(ctx, obj, "toString", JavaObject::toString, 0, 0)) {
-    Debug::log(Debug::Error) << "Could not define toString method on object"
-        << Debug::flush;
-  }
-#else
-  if (!JS_DefineFunction(ctx, obj, "toString", JavaObject::toString20, 0, 0)) {
-    Debug::log(Debug::Error) << "Could not define toString method on object"
-        << Debug::flush;
-  }
-#endif //GECKO_VERSION
-  return obj;
-}
-
-#if GECKO_VERSION >= 15000
-JSBool JavaObject::getPropertyWrapper(JSContext* ctx, JSHandleObject obj,
-    JSHandleId id, jsval *vp) {
-#if GECKO_VERSION >= 16000
-  return JavaObject::getProperty(ctx, obj.get(), id.get(), vp);
-#else
-  return JavaObject::getProperty(ctx, obj.value(), id.value(), vp);
-#endif
-}
-#endif
-
-JSBool JavaObject::getProperty(JSContext* ctx, JSObject* obj, jsid id,
-    jsval* rval) {
-  Debug::log(Debug::Spam) << "JavaObject::getProperty obj=" << obj << Debug::flush;
-  SessionData* data = JavaObject::getSessionData(ctx, obj);
-  if (!data) {
-    // TODO: replace the frame with an error page instead?
-    *rval = JSVAL_VOID;
-    return JS_TRUE;
-  }
-  int objectRef = JavaObject::getObjectId(ctx, obj);
-  if (JSID_IS_STRING(id)) {
-    JSString* str = JSID_TO_STRING(id);
-    if ((JS_GetStringEncodingLength(ctx, str) == 8) && !strncmp("toString",
-          JS_EncodeString(ctx, str), 8)) {
-      *rval = data->getToStringTearOff();
-      return JS_TRUE;
-    }
-    if ((JS_GetStringEncodingLength(ctx, str) == 2) && !strncmp("id",
-          JS_EncodeString(ctx, str), 2)) {
-      *rval = INT_TO_JSVAL(objectRef);
-      return JS_TRUE;
-    }
-    if ((JS_GetStringEncodingLength(ctx, str) == 16) && !strncmp("__noSuchMethod__",
-          JS_EncodeString(ctx, str), 16)) {
-      // Avoid error spew if we are disconnected
-      *rval = JSVAL_VOID;
-      return JS_TRUE;
-    }
-    // TODO: dumpJsVal can no longer handle this case
-    //Debug::log(Debug::Error) << "Getting unexpected string property "
-    //    << dumpJsVal(ctx, id) << Debug::flush;
-    // TODO: throw a better exception here
-    return JS_FALSE;
-  }
-  if (!JSID_IS_INT(id)) {
-    // TODO: dumpJsVal can no longer handle this case
-    //Debug::log(Debug::Error) << "Getting non-int/non-string property "
-    //      << dumpJsVal(ctx, id) << Debug::flush;
-    // TODO: throw a better exception here
-    return JS_FALSE;
-  }
-  int dispId = JSID_TO_INT(id);
-
-  HostChannel* channel = data->getHostChannel();
-  SessionHandler* handler = data->getSessionHandler();
-
-  gwt::Value value = ServerMethods::getProperty(*channel, handler, objectRef, dispId);
-  data->makeJsvalFromValue(*rval, ctx, value);
-  return JS_TRUE;
-}
-
-#if GECKO_VERSION >= 15000
-JSBool JavaObject::setPropertyWrapper(JSContext* ctx, JSHandleObject obj,
-    JSHandleId id, JSBool strict, jsval *vp) {
-#if GECKO_VERSION >= 16000
-  return setProperty(ctx, obj.get(), id.get(), strict, vp);
-#else
-  return setProperty(ctx, obj.value(), id.value(), strict, vp);
-#endif
-}
-#endif
-
-#if GECKO_VERSION < 2000
-JSBool JavaObject::setProperty(JSContext* ctx, JSObject* obj, jsid id,
-    jsval* vp) {
-#else
-JSBool JavaObject::setProperty(JSContext* ctx, JSObject* obj, jsid id,
-    JSBool strict, jsval* vp) {
-#endif //GECKO_VERSION
-
-  Debug::log(Debug::Spam) << "JavaObject::setProperty obj=" << obj << Debug::flush;
-  if (!JSID_IS_INT(id)) {
-    Debug::log(Debug::Error) << "  Error: setting string property id" << Debug::flush;
-    // TODO: throw a better exception here
-    return JS_FALSE;
-  }
-
-  SessionData* data = JavaObject::getSessionData(ctx, obj);
-  if (!data) {
-    return JS_TRUE;
-  }
-
-  int objectRef = JavaObject::getObjectId(ctx, obj);
-  int dispId = JSID_TO_INT(id);
-
-  gwt::Value value;
-  data->makeValueFromJsval(value, ctx, *vp);
-
-  HostChannel* channel = data->getHostChannel();
-  SessionHandler* handler = data->getSessionHandler();
-
-  if (!ServerMethods::setProperty(*channel, handler, objectRef, dispId, value)) {
-    // TODO: throw a better exception here
-    return JS_FALSE;
-  }
-  return JS_TRUE;
-}
-
-// TODO: can this be removed now?
-JSBool JavaObject::convert(JSContext* ctx, JSObject* obj, JSType type, jsval* vp) {
-  Debug::log(Debug::Spam) << "JavaObject::convert obj=" << obj
-      << " type=" << type << Debug::flush;
-  switch (type) {
-    case JSTYPE_STRING:
-      return toString(ctx, obj, 0, NULL, vp);
-    case JSTYPE_VOID:
-      *vp = JSVAL_VOID;
-      return JS_TRUE;
-    case JSTYPE_NULL:
-      *vp = JSVAL_NULL;
-      return JS_TRUE;
-    case JSTYPE_OBJECT:
-      *vp = OBJECT_TO_JSVAL(obj);
-      return JS_TRUE;
-    default:
-      break;
-  }
-  return JS_FALSE;
-}
-
-/**
- * List of property names we want to fake on wrapped Java objects.
- */
-static const char* propertyNames[] = {
-    "toString",
-    "id",
-};
-#define NUM_PROPERTY_NAMES (sizeof(propertyNames) / sizeof(propertyNames[0]))
-
-JSBool JavaObject::enumerate(JSContext* ctx, JSObject* obj, JSIterateOp op,
-    jsval* statep, jsid* idp) {
-  int objectId = JavaObject::getObjectId(ctx, obj);
-  switch (op) {
-    case JSENUMERATE_INIT:
-      Debug::log(Debug::Spam) << "JavaObject::enumerate(oid=" << objectId
-          << ", INIT)" << Debug::flush;
-      *statep = JSVAL_ZERO;
-      if (idp) {
-        *idp = INT_TO_JSID(NUM_PROPERTY_NAMES);
-      }
-      break;
-    case JSENUMERATE_NEXT:
-    {
-      int idNum = JSVAL_TO_INT(*statep);
-      Debug::log(Debug::Spam) << "JavaObject::enumerate(oid=" << objectId
-          << ", NEXT " << idNum << ")" << Debug::flush;
-      *statep = INT_TO_JSVAL(idNum + 1);
-      if (idNum >= NUM_PROPERTY_NAMES) {
-        *statep = JSVAL_NULL;
-#if GECKO_VERSION < 2000
-	//TODO(jat): do we need to do this?
-        *idp = JSVAL_NULL;
-#endif //GECKO_VERSION
-      } else {
-        const char* propName = propertyNames[idNum];
-        JSString* str = JS_NewStringCopyZ(ctx, propName);
-        return JS_ValueToId(ctx, STRING_TO_JSVAL(str), idp);
-      }
-      break;
-    }
-    case JSENUMERATE_DESTROY:
-      Debug::log(Debug::Spam) << "JavaObject::enumerate(oid=" << objectId
-          << ", DESTROY)" << Debug::flush;
-      *statep = JSVAL_NULL;
-      break;
-    default:
-      Debug::log(Debug::Error) << "Unknown Enumerate op " <<
-          static_cast<int>(op) << Debug::flush;
-      return JS_FALSE;
-  }
-  return JS_TRUE;
-}
-
-#if GECKO_VERSION >= 14000
-void JavaObject::finalize(JSFreeOp* fop, JSObject* obj) {
-  // In general use of JS_GetPrivate is not safe but it is OK in the finalizer
-  // according to:
-  // https://developer.mozilla.org/en/SpiderMonkey/JSAPI_Reference/JS_GetPrivate
-  // We will not be using getSession for that reason.
-  SessionData * data = static_cast<SessionData*>(JS_GetPrivate(obj));
-  if (data) {
-    jsval val = JS_GetReservedSlot(obj, 0);
-    int objectId = JSVAL_TO_INT(val);
-    data->freeJavaObject(objectId);
-    MOZ_JS_SetPrivate(/** Post-FF13 requires no ctx anyways*/ NULL, obj, NULL);
-  }
-}
-#else
-void JavaObject::finalize(JSContext* ctx, JSObject* obj) {
-  Debug::log(Debug::Spam) << "JavaObject::finalize obj=" << obj
-      << " objId=" << JavaObject::getObjectId(ctx, obj) << Debug::flush;
-  SessionData* data = JavaObject::getSessionData(ctx, obj);
-  if (data) {
-    int objectId = JavaObject::getObjectId(ctx, obj);
-    data->freeJavaObject(objectId);
-    MOZ_JS_SetPrivate(ctx, obj, NULL);
-  }
-}
-#endif
-
-JSBool JavaObject::toString(JSContext* ctx, JSObject* obj, uintN argc,
-    jsval* argv, jsval* rval) {
-  SessionData* data = JavaObject::getSessionData(ctx, obj);
-  if (!data) {
-    *rval = JSVAL_VOID;
-    return JS_TRUE;
-  }
-  int oid = getObjectId(ctx, obj);
-  Debug::log(Debug::Spam) << "JavaObject::toString(id=" << oid << ")"
-      << Debug::flush;
-  gwt::Value javaThis;
-  javaThis.setJavaObject(oid);
-  // we ignore any supplied parameters
-  return invokeJava(ctx, data, javaThis, InvokeMessage::TOSTRING_DISP_ID, 0,
-      NULL, rval);
-}
-
-/**
- * Called when the JavaObject is invoked as a function.
- * We ignore the JSObject* argument, which is the 'this' context, which is
- * usually the window object. The JavaObject instance is in argv[-2].
- *
- * Returns a JS array, with the first element being a boolean indicating that
- * an exception occured, and the second element is either the return value or
- * the exception which was thrown.  In this case, we always return false and
- * raise the exception ourselves.
- */
-JSBool JavaObject::call(JSContext* ctx, JSObject*, uintN argc, jsval* argv,
-    jsval* rval) {
-  // Get the JavaObject called as a function
-  JSObject* obj = JSVAL_TO_OBJECT(argv[-2]);
-  if (argc < 2 || !JSVAL_IS_INT(argv[0]) ||
-#ifdef JSVAL_IS_OBJECT
-  !JSVAL_IS_OBJECT(argv[1])) {
-#else
-    (JSVAL_IS_PRIMITIVE(argv[1]) && !JSVAL_IS_NULL(argv[1]))) {
-#endif
-    Debug::log(Debug::Error) << "JavaObject::call incorrect arguments" << Debug::flush;
-    return JS_FALSE;
-  }
-  int dispId = JSVAL_TO_INT(argv[0]);
-  if (Debug::level(Debug::Spam)) {
-    Debug::DebugStream& dbg = Debug::log(Debug::Spam) << "JavaObject::call oid="
-        << JavaObject::getObjectId(ctx, obj) << ",dispId=" << dispId << " (";
-    for (unsigned i = 2; i < argc; ++i) {
-      if (i > 2) {
-        dbg << ", ";
-      }
-      dbg << dumpJsVal(ctx, argv[i]);
-    }
-    dbg << ")" << Debug::flush;
-  }
-
-  SessionData* data = JavaObject::getSessionData(ctx, obj);
-  if (!data) {
-    *rval = JSVAL_VOID;
-    return JS_TRUE;
-  }
-  Debug::log(Debug::Spam) << "Data = " << data << Debug::flush;
-
-  gwt::Value javaThis;
-  if (!JSVAL_IS_NULL(argv[1])) {
-    JSObject* thisObj = JSVAL_TO_OBJECT(argv[1]);
-    if (isJavaObject(ctx, thisObj)) {
-      javaThis.setJavaObject(getObjectId(ctx, thisObj));
-    } else {
-      data->makeValueFromJsval(javaThis, ctx, argv[1]);
-    }
-  } else {
-    int oid = getObjectId(ctx, obj);
-    javaThis.setJavaObject(oid);
-  }
-  return invokeJava(ctx, data, javaThis, dispId, argc - 2, &argv[2], rval);
-}
-
-#if GECKO_VERSION >= 2000
-/**
- * Compatability wrapper for Gecko 2.0+
- */
-JSBool JavaObject::toString20(JSContext* ctx, uintN argc, jsval* vp) {
-  jsval rval = JSVAL_VOID;
-  JSBool success;
-  success = toString(ctx, JS_THIS_OBJECT(ctx, vp), argc, JS_ARGV(ctx, vp),
-                       &rval);
-  JS_SET_RVAL(cx, vp, rval);
-  return success;
-}
-
-/**
- * Compatability wrapper method for Gecko 2.0+
- */
-JSBool JavaObject::call20(JSContext* ctx, uintN argc, jsval* vp) {
-  jsval rval = JSVAL_VOID;
-  JSBool success;
-  success = call(ctx, NULL, argc, JS_ARGV(ctx, vp), &rval);
-  JS_SET_RVAL(ctx, vp, rval);
-  return success;
-}
-#endif //GECKO_VERSION
-
-/**
- * Calls a method on a Java object and returns a two-element JS array, with
- * the first element being a boolean flag indicating an exception was thrown,
- * and the second element is the actual return value or exception.
- */
-JSBool JavaObject::invokeJava(JSContext* ctx, SessionData* data,
-    const gwt::Value& javaThis, int dispId, int numArgs, const jsval* jsargs,
-    jsval* rval) {
-  HostChannel* channel = data->getHostChannel();
-  SessionHandler* handler = data->getSessionHandler();
-  scoped_array<gwt::Value> args(new gwt::Value[numArgs]);
-  for (int i = 0; i < numArgs; ++i) {
-    data->makeValueFromJsval(args[i], ctx, jsargs[i]);
-  }
-
-  bool isException = false;
-  gwt::Value returnValue;
-  if (!InvokeMessage::send(*channel, javaThis, dispId, numArgs, args.get())) {
-    Debug::log(Debug::Debugging) << "JavaObject::call failed to send invoke message" << Debug::flush;
-  } else {
-    Debug::log(Debug::Spam) << " return from invoke" << Debug::flush;
-    scoped_ptr<ReturnMessage> retMsg(channel->reactToMessagesWhileWaitingForReturn(handler));
-    if (!retMsg.get()) {
-      Debug::log(Debug::Debugging) << "JavaObject::call failed to get return value" << Debug::flush;
-    } else {
-      isException = retMsg->isException();
-      returnValue = retMsg->getReturnValue();
-    }
-  }
-  // Since we can set exceptions normally, we always return false to the
-  // wrapper function and set the exception ourselves if one occurs.
-  // TODO: cleanup exception case
-  jsval retvalArray[] = {JSVAL_FALSE, JSVAL_VOID};
-  JSObject* retval = JS_NewArrayObject(ctx, 2, retvalArray);
-  *rval = OBJECT_TO_JSVAL(retval);
-  jsval retJsVal;
-  Debug::log(Debug::Spam) << "  result is " << returnValue << Debug::flush;
-  data->makeJsvalFromValue(retJsVal, ctx, returnValue);
-  if (isException) {
-    JS_SetPendingException(ctx, retJsVal);
-    return false;
-  }
-  if (!JS_SetElement(ctx, retval, 1, &retJsVal)) {
-    Debug::log(Debug::Error) << "Error setting return value element in array"
-        << Debug::flush;
-    return false;
-  }
-  return true;
-}
diff --git a/plugins/xpcom/JavaObject.h b/plugins/xpcom/JavaObject.h
deleted file mode 100755
index c2fcf00..0000000
--- a/plugins/xpcom/JavaObject.h
+++ /dev/null
@@ -1,79 +0,0 @@
-#ifndef _H_JavaObject
-#define _H_JavaObject
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#include "mozincludes.h"
-#include "jsapi.h"
-
-class SessionData;
-namespace gwt {
-  class Value;
-}
-
-#if GECKO_VERSION < 2000
-#define jsid jsval
-#define JSID_IS_STRING JSVAL_IS_STRING
-#define JSID_TO_STRING JSVAL_TO_STRING
-#define JSID_IS_INT JSVAL_IS_INT
-#define JSID_TO_INT JSVAL_TO_INT
-#define INT_TO_JSID INT_TO_JSVAL
-#define JS_GetStringEncodingLength(ctx, str) JS_GetStringLength(str)
-#define JS_EncodeString(ctx, str) JS_GetStringBytes(str)
-#endif
-
-class JavaObject {
-public:
-  static bool isJavaObject(JSContext* ctx, JSObject* obj);
-  static JSObject* construct(JSContext* ctx, SessionData* data, int objectRef);
-  static int getObjectId(JSContext* ctx, JSObject* obj);
-  static JSBool getProperty(JSContext* ctx, JSObject* obj, jsid id, jsval* vp);
-
-#if GECKO_VERSION < 2000
-  static JSBool setProperty(JSContext* ctx, JSObject* obj, jsid id, jsval* vp);
-#else
-  static JSBool setProperty(JSContext* ctx, JSObject* obj, jsid id, JSBool strict, jsval* vp);
-#endif //GECKO_VERSION
-
-  static JSBool resolve(JSContext* ctx, JSObject* obj, jsval id);
-  static JSBool convert(JSContext* cx, JSObject* obj, JSType type, jsval* vp);
-  static JSBool enumerate(JSContext* ctx, JSObject* obj, JSIterateOp op, jsval* statep, jsid* idp);
-#if GECKO_VERSION >= 14000
-  static void finalize(JSFreeOp* fop, JSObject* obj);
-#else
-  static void finalize(JSContext* ctx, JSObject* obj);
-#endif //GECKO_VERSION
-  static JSBool toString(JSContext* ctx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
-  static JSBool call(JSContext* ctx, JSObject* obj, uintN argc, jsval* argv, jsval* rval);
-
-#if GECKO_VERSION >= 2000
-  static JSBool toString20(JSContext* ctx, uintN argc, jsval* vp);
-  static JSBool call20(JSContext* ctx, uintN argc, jsval* vp);
-#endif //GECKO_VERSION
-#if GECKO_VERSION >= 15000
-  static JSBool getPropertyWrapper(JSContext* ctx, JSHandleObject obj, JSHandleId id, jsval *vp);
-  static JSBool setPropertyWrapper(JSContext* ctx, JSHandleObject obj, JSHandleId id,
-      JSBool strict, jsval *vp);
-#endif
-
-private:
-  static SessionData* getSessionData(JSContext* ctx, JSObject* obj);
-  static JSBool invokeJava(JSContext* ctx, SessionData* data,
-      const gwt::Value& javaThis, int dispId, int numArgs, const jsval* jsargs,
-      jsval* rval);
-};
-
-#endif
diff --git a/plugins/xpcom/Makefile b/plugins/xpcom/Makefile
deleted file mode 100644
index 37c5f92..0000000
--- a/plugins/xpcom/Makefile
+++ /dev/null
@@ -1,442 +0,0 @@
-# Copyright 2009 Google Inc.
-# 
-# Licensed 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.
-
-include ../config.mk
-
-# Make variables intended to be settable from the command line:
-#   DEFAULT_FIREFOX_LIBS	points to /usr/lib/firefox or equivalent
-#   PLUGIN_SDKS			points to GWT /plugin-sdks directory
-#   GECKO_PLATFORM		XPCOM ABI (ie, Linux_x86_64-gcc3)
-#
-
-ifeq ($(OS),mac)
-DEFAULT_FIREFOX_LIBS ?= /Applications/Firefox.app/Contents/MacOS
-RUN_PATH_FLAG = -executable_path
-DLL_SUFFIX = .dylib
-DLLFLAGS += -bundle $(ALLARCHCFLAGS) -mmacosx-version-min=10.5  -isysroot /Developer/SDKs/MacOSX10.5.sdk
-CFLAGS += $(ALLARCHCFLAGS)
-CXXFLAGS += $(ALLARCHCFLAGS)
-TARGET_PLATFORM = Darwin-gcc3
-# Mac puts multiple architectures into the same files
-GECKO_PLATFORM = Darwin-gcc3
-else
-ifeq ($(OS),linux)
-DEFAULT_FIREFOX_LIBS ?= /usr/lib/firefox
-RUN_PATH_FLAG = -rpath-link
-DLL_SUFFIX = .so
-DLLFLAGS += -shared -m$(FLAG32BIT)
-TARGET_PLATFORM = Linux_$(ARCH)-gcc3
-else
-ifeq ($(OS),sun)
-TARGET_PLATFORM = SunOS_$(ARCH)-sunc
-RUN_PATH_FLAG = -rpath-link
-DLLFLAGS ?= ""
-endif
-endif
-endif
-
-export FLAG32BIT
-
-ifeq ($(BROWSER),)
-$(warning Defaulting to FF3 build [set with BROWSER=ff3, ff3+, ff35, ff36, ff40, ff50, ff60, ff70, ff80, ff90, ff100, f110, ff120, ff130, ff140, ff150, ff160])
-BROWSER=ff3
-endif
-
-# Gold doesn't play nice with xpcom libs
-LINKER=$(shell ld -v | awk '{print $$2}')
-ifeq ($(LINKER), gold)
-ifeq ($(wildcard /usr/lib/compat-ld),)
-$(error cannot link with gold, use the BFD ld instead)
-else
-CFLAGS += -B/usr/lib/compat-ld/
-CXXFLAGS += -B/usr/lib/compat-ld/
-DLLFLAGS += -B/usr/lib/compat-ld/
-endif
-endif
-
-CFLAGS += -DBROWSER=$(BROWSER)
-GECKO_MINOR_VERSION=
-GECKO_DLLFLAGS = -lxpcomglue_s -lxpcom
-NSPR_DLLFLAGS = -lnspr4
-MOZJS_DLLFLAGS = -lxul
-
-#defaults to post-FF4
-MOZALLOC_DLLFLAGS = -lmozalloc
-
-#default ALLARCHFLAGS for post-FF4
-ALLARCHCFLAGS = -arch i386 -arch x86_64 -Xarch_i386 -DFLAG32BIT=32 -Xarch_x86_64 -DFLAG32BIT=64
-
-# Python xpidl tool is the new hotness post-FF9
-XPIDL_TOOL = python
-
-ifeq ($(BROWSER),ff3)
-XPIDL_TOOL = binary
-MOZALLOC_DLLFLAGS =
-GECKO_VERSION   = 1.9.0
-CFLAGS += -DGECKO_VERSION=1900
-MOZJS_DLLFLAGS = -lmozjs
-ifeq ($(OS),mac)
-ALLARCHCFLAGS = -arch i386 -arch ppc
-endif
-else
-ifeq ($(BROWSER),ff3+)
-XPIDL_TOOL = binary
-MOZALLOC_DLLFLAGS =
-GECKO_VERSION   = 1.9.0
-CFLAGS += -DGECKO_VERSION=1901
-GECKO_MINOR_VERSION=.10
-MOZJS_DLLFLAGS = -lmozjs
-ifeq ($(OS),mac)
-ALLARCHCFLAGS = -arch i386 -arch ppc
-endif
-else
-ifeq ($(BROWSER),ff35)
-XPIDL_TOOL = binary
-MOZALLOC_DLLFLAGS =
-GECKO_VERSION   = 1.9.1
-CFLAGS += -DGECKO_VERSION=1910
-MOZJS_DLLFLAGS = -lmozjs
-ifeq ($(OS),mac)
-ALLARCHCFLAGS = -arch i386 -arch ppc
-endif
-else
-ifeq ($(BROWSER),ff36)
-XPIDL_TOOL = binary
-MOZALLOC_DLLFLAGS =
-GECKO_VERSION   = 1.9.2
-CFLAGS += -DGECKO_VERSION=1920
-MOZJS_DLLFLAGS = -lmozjs
-ifeq ($(OS),mac)
-ALLARCHCFLAGS = -arch i386 -arch ppc
-endif
-else
-ifeq ($(BROWSER),ff40)
-XPIDL_TOOL = binary
-GECKO_VERSION   = 2.0.0
-CFLAGS += -DGECKO_VERSION=2000
-else
-ifeq ($(BROWSER),ff50)
-XPIDL_TOOL = binary
-GECKO_VERSION   = 5.0.0
-CFLAGS += -DGECKO_VERSION=5000
-else
-ifeq ($(BROWSER),ff60)
-XPIDL_TOOL = binary
-GECKO_VERSION   = 6.0.0
-CFLAGS += -DGECKO_VERSION=6000
-else
-ifeq ($(BROWSER),ff70)
-XPIDL_TOOL = binary
-GECKO_VERSION   = 7.0.0
-CFLAGS += -DGECKO_VERSION=7000
-else
-ifeq ($(BROWSER),ff80)
-XPIDL_TOOL = binary
-GECKO_VERSION   = 8.0.0
-CFLAGS += -DGECKO_VERSION=8000
-else
-ifeq ($(BROWSER),ff90)
-GECKO_VERSION   = 9.0.0
-CFLAGS += -DGECKO_VERSION=9000
-else
-ifeq ($(BROWSER),ff100)
-GECKO_VERSION   = 10.0.0
-CFLAGS += -DGECKO_VERSION=10000
-else
-ifeq ($(BROWSER),ff110)
-GECKO_VERSION   = 11.0.0
-CFLAGS += -DGECKO_VERSION=11000
-else
-ifeq ($(BROWSER),ff120)
-GECKO_VERSION   = 12.0.0
-CFLAGS += -DGECKO_VERSION=12000
-else
-ifeq ($(BROWSER),ff130)
-GECKO_VERSION   = 13.0.0
-CFLAGS += -DGECKO_VERSION=13000
-else
-ifeq ($(BROWSER),ff140)
-GECKO_VERSION   = 14.0.0
-CFLAGS += -DGECKO_VERSION=14000
-else
-ifeq ($(BROWSER),ff150)
-GECKO_VERSION   = 15.0.0
-CFLAGS += -DGECKO_VERSION=15000
-else
-ifeq ($(BROWSER),ff160)
-GECKO_VERSION   = 16.0.0
-CFLAGS += -DGECKO_VERSION=16000
-else
-$(error Unrecognized BROWSER of $(BROWSER) - options are ff3, ff3+, ff35, ff36, ff40, ff50, ff60, ff70, ff80, ff90, ff100, ff110, ff120, ff130, ff140, ff150)
-endif
-endif
-endif
-endif
-endif
-endif
-endif
-endif
-endif
-endif
-endif
-endif
-endif
-endif
-endif
-endif
-endif
-
-CFLAGS += -fshort-wchar
-CXXFLAGS = $(CXXONLYFLAGS) $(CFLAGS)
-DIR = $(shell pwd)
-
-# Set $PLUGIN_SDKS if it isn't in the default location
-PLUGIN_SDKS ?= ../../../plugin-sdks
-GECKO_PLATFORM ?= $(TARGET_PLATFORM)
-
-COMMON            = ../common/libcommon$(FLAG32BIT).a
-
-OBJ_OUTDIR        = build/$(TARGET_PLATFORM)-$(BROWSER)
-EXTENSION_OUTDIR  = prebuilt/extension
-FF_PLATFORM_DIR   = $(EXTENSION_OUTDIR)/lib/$(TARGET_PLATFORM)/$(BROWSER)
-
-INSTALLER_XPI     = prebuilt/gwt-dev-plugin.xpi
-FF_DLL            = $(OBJ_OUTDIR)/libgwt_dev_$(BROWSER)$(DLL_SUFFIX)
-#FF_TYPELIB        = build/IOOPHM.xpt
-#FF_HEADER         = $(OBJ_OUTDIR)/IOOPHM.h
-FF_TYPELIB        = prebuilt/extension/components/IOOPHM.xpt
-FF_HEADERDIR      = prebuilt/$(BROWSER)/include
-FF_HEADER         = $(FF_HEADERDIR)/IOOPHM.h
-INSTALL_RDF       = $(EXTENSION_OUTDIR)/install.rdf
-
-SDK_PATH          = $(PLUGIN_SDKS)/gecko-sdks
-GECKO_SDK         = $(SDK_PATH)/gecko-$(GECKO_VERSION)
-GECKO_PLAT_INC    = $(GECKO_SDK)/$(GECKO_PLATFORM)/include
-GECKO_LIBS        = $(GECKO_SDK)/$(GECKO_PLATFORM)/lib$(GECKO_MINOR_VERSION)
-
-ifeq ($(XPIDL_TOOL),python)
-XPIDL             = $(GECKO_SDK)/bin/xpidl.py
-XPIDL_HEADER      = $(GECKO_SDK)/bin/header.py
-XPIDL_TYPELIBS    = $(GECKO_SDK)/bin/typelib.py
-else
-XPIDL             = $(GECKO_SDK)/$(GECKO_PLATFORM)/bin/xpidl
-XPIDL_HEADER      = $(GECKO_SDK)/$(GECKO_PLATFORM)/bin/xpidl -m header
-XPIDL_TYPELIBS    = $(GECKO_SDK)/$(GECKO_PLATFORM)/bin/xpidl -m typelib
-endif
-
-XPIDL_FLAGS       = -I$(GECKO_SDK)/idl
-
-DLLFLAGS += \
-		-L$(GECKO_LIBS) \
-		-Wl,$(RUN_PATH_FLAG),$(GECKO_LIBS) \
-		$(GECKO_DLLFLAGS) $(NSPR_DLLFLAGS) \
-		$(MOZALLOC_DLLFLAGS) $(MOZJS_DLLFLAGS)
-
-INC += -I$(GECKO_PLAT_INC) -I$(GECKO_SDK)/include -I$(dir $(FF_HEADER))
-
-VERSION ?= 1.0.$(shell ./getversion).$(shell date +%Y%m%d%H%M%S)
-
-.PHONY: all xpi lib common browser clean depend install install-platform find-ff-libs
-
-all:: common lib xpi
-
-lib:: browser $(OBJ_OUTDIR) $(EXTENSION_OUTDIR) $(FF_DLL)
-xpi:: $(EXTENSION_OUTDIR) $(INSTALLER_XPI)
-
-find-ff-libs::
-ifeq ($(FIREFOX_LIBS),)
-	$(warning Using firefox libraries at $(GECKO_LIBS))
-	$(eval FIREFOX_LIBS = $(GECKO_LIBS))
-endif
-
-browser:: find-ff-libs
-#	if [ ! -r $(GECKO_LIBS)/libxpcom.so ]
-#	then
-#	    $(error Missing Firefox libraries at $(GECKO_LIBS))
-#	fi
-
-generate-install:: $(EXTENSION_OUTDIR) install-template.rdf
-	sed -e s/GWT_DEV_PLUGIN_VERSION/$(VERSION)/ install-template.rdf >$(INSTALL_RDF)
-
-linuxplatforms:
-	$(MAKE) lib BROWSER=ff3 ARCH=x86
-	$(MAKE) lib BROWSER=ff3+ ARCH=x86
-	$(MAKE) lib BROWSER=ff35 ARCH=x86
-	$(MAKE) lib BROWSER=ff36 ARCH=x86
-	$(MAKE) lib BROWSER=ff40 ARCH=x86
-	$(MAKE) lib BROWSER=ff50 ARCH=x86
-	$(MAKE) lib BROWSER=ff60 ARCH=x86
-	$(MAKE) lib BROWSER=ff70 ARCH=x86
-	$(MAKE) lib BROWSER=ff80 ARCH=x86
-	$(MAKE) lib BROWSER=ff90 ARCH=x86
-	$(MAKE) lib BROWSER=ff100 ARCH=x86
-	$(MAKE) lib BROWSER=ff110 ARCH=x86
-	$(MAKE) lib BROWSER=ff120 ARCH=x86
-	$(MAKE) lib BROWSER=ff130 ARCH=x86
-	$(MAKE) lib BROWSER=ff140 ARCH=x86
-	$(MAKE) lib BROWSER=ff150 ARCH=x86
-	$(MAKE) lib BROWSER=ff160 ARCH=x86
-	$(MAKE) lib BROWSER=ff3 ARCH=x86_64
-	$(MAKE) lib BROWSER=ff3+ ARCH=x86_64
-	$(MAKE) lib BROWSER=ff35 ARCH=x86_64
-	$(MAKE) lib BROWSER=ff36 ARCH=x86_64
-	$(MAKE) lib BROWSER=ff40 ARCH=x86_64
-	$(MAKE) lib BROWSER=ff50 ARCH=x86_64
-	$(MAKE) lib BROWSER=ff60 ARCH=x86_64
-	$(MAKE) lib BROWSER=ff70 ARCH=x86_64
-	$(MAKE) lib BROWSER=ff80 ARCH=x86_64
-	$(MAKE) lib BROWSER=ff90 ARCH=x86_64
-	$(MAKE) lib BROWSER=ff100 ARCH=x86_64
-	$(MAKE) lib BROWSER=ff110 ARCH=x86_64
-	$(MAKE) lib BROWSER=ff120 ARCH=x86_64
-	$(MAKE) lib BROWSER=ff130 ARCH=x86_64
-	$(MAKE) lib BROWSER=ff140 ARCH=x86_64
-	$(MAKE) lib BROWSER=ff150 ARCH=x86_64
-	$(MAKE) lib BROWSER=ff160 ARCH=x86_64
-
-macplatforms:
-	$(MAKE) lib BROWSER=ff3
-	$(MAKE) lib BROWSER=ff35
-	$(MAKE) lib BROWSER=ff36
-	$(MAKE) lib BROWSER=ff40
-	$(MAKE) lib BROWSER=ff50
-	$(MAKE) lib BROWSER=ff60
-	$(MAKE) lib BROWSER=ff70
-	$(MAKE) lib BROWSER=ff80
-	$(MAKE) lib BROWSER=ff90
-	$(MAKE) lib BROWSER=ff100
-	$(MAKE) lib BROWSER=ff110
-	$(MAKE) lib BROWSER=ff120
-	$(MAKE) lib BROWSER=ff130
-	$(MAKE) lib BROWSER=ff140
-
-SRCS =	\
-		ExternalWrapper.cpp \
-		ModuleOOPHM.cpp \
-		FFSessionHandler.cpp \
-		JavaObject.cpp \
-		JSRunner.cpp \
-		Preferences.cpp \
-		XpcomDebug.cpp
-
-FF_OBJS = $(patsubst %.cpp,$(OBJ_OUTDIR)/%.o,$(SRCS))
-
-$(FF_OBJS): $(OBJ_OUTDIR)
-
-$(OBJ_OUTDIR)::
-	@mkdir -p $@
-
-$(INSTALLER_XPI): $(FF_TYPELIB) $(EXTENSION_OUTDIR) generate-install $(shell find prebuilt/extension $(EXTENSION_OUTDIR))
-	@mkdir -p $(EXTENSION_OUTDIR)/components
-	#(cd prebuilt/extension; find . \( -name .svn -prune \) -o -print | cpio -pmdua ../../$(EXTENSION_OUTDIR))
-	-rm $(INSTALLER_XPI)
-	(cd $(EXTENSION_OUTDIR) && zip -r -D -9 $(DIR)/$(INSTALLER_XPI) * -x '*/.svn/*' -x 'META-INF/*')
-
-$(FF_TYPELIB): IOOPHM.idl
-	[ ! -x $(XPIDL) -o \( -e $(FF_TYPELIB) -a ! -w $(FF_TYPELIB) \) ] || $(XPIDL_TYPELIBS) $(XPIDL_FLAGS) -o $@ $<
-
-$(FF_HEADERDIR):
-	@mkdir -p $@
-
-$(FF_HEADER): IOOPHM.idl $(OBJ_OUTDIR) $(FF_HEADERDIR)
-	[ ! -x $(XPIDL) -o \( -e $(FF_HEADER) -a ! -w $(FF_HEADER) \) ] || $(XPIDL_HEADER) $(XPIDL_FLAGS) -o $@ $<
-
-$(FF_DLL): $(FF_OBJS) $(COMMON)
-	$(CXX) -o $@ $(FF_OBJS) $(COMMON) $(DLLFLAGS)
-	@mkdir -p $(FF_PLATFORM_DIR)
-	cp $(FF_DLL) $(FF_PLATFORM_DIR)/
-
-$(OBJ_OUTDIR)/%.o: %.cpp $(FF_HEADER)
-	$(CXX) $(CXXFLAGS) -c -o $@ -I. -I../common $<
-
-common $(COMMON):
-	(cd ../common && $(MAKE))
-
-clean:
-	rm -rf build
-	(cd ../common && $(MAKE) clean)
-
-install-platform:
-ifdef BROWSER
-	@-mkdir -p $(FF_PLATFORM_DIR)
-	-cp $(FF_DLL) $(FF_PLATFORM_DIR))/
-ifeq ($(OS),mac)
-	@-mkdir -p $(subst $(EXTENSION_OUTDIR),prebuilt/extension-$(BROWSER),$(subst x86,ppc,$(FF_PLATFORM_DIR)))/components
-	-cp $(FF_DLL) $(subst $(EXTENSION_OUTDIR),prebuilt/extension-$(BROWSER),$(subst x86,ppc,$(FF_PLATFORM_DIR)))/components
-endif
-else
-	@$(MAKE) $@ BROWSER=ff3
-	@$(MAKE) $@ BROWSER=ff3+
-	@$(MAKE) $@ BROWSER=ff35
-	@$(MAKE) $@ BROWSER=ff36
-	@$(MAKE) $@ BROWSER=ff40
-	@$(MAKE) $@ BROWSER=ff50
-endif
-
-DEPEND = g++ -MM -MT'$$(OBJ_OUTDIR)/$(patsubst %.cpp,%.o,$(src))' \
-  -I. -I../common -isystem$(dir $(FF_HEADER)) -isystem$(GECKO_SDK)/include $(src) &&
-depend: browser $(OBJ_OUTDIR) $(FF_HEADER)
-	($(foreach src,$(SRCS),$(DEPEND)) true) >>Makefile
-#	makedepend -- $(CFLAGS) -- $(SRCS)
-
-# DO NOT DELETE
-$(OBJ_OUTDIR)/ExternalWrapper.o: ExternalWrapper.cpp ExternalWrapper.h \
-  mozincludes.h FFSessionHandler.h SessionData.h \
-  ../common/SessionHandler.h ../common/BrowserChannel.h ../common/Value.h \
-  ../common/Debug.h ../common/Platform.h ../common/DebugLevel.h \
-  ../common/BrowserChannel.h ../common/scoped_ptr/scoped_ptr.h \
-  ../common/LoadModuleMessage.h ../common/Message.h \
-  ../common/BrowserChannel.h ../common/HostChannel.h ../common/Debug.h \
-  ../common/ByteOrder.h ../common/Platform.h ../common/Socket.h \
-  ../common/Platform.h ../common/Debug.h ../common/AllowedConnections.h \
-  ../common/Platform.h ../common/Message.h ../common/ReturnMessage.h \
-  ../common/Message.h ../common/BrowserChannel.h ../common/Value.h \
-  ../common/Value.h ../common/SessionHandler.h ../common/SessionHandler.h \
-  ../common/ServerMethods.h ../common/Value.h
-$(OBJ_OUTDIR)/ModuleOOPHM.o: ModuleOOPHM.cpp ../common/Debug.h \
-  ../common/Platform.h ../common/DebugLevel.h ExternalWrapper.h \
-  mozincludes.h FFSessionHandler.h SessionData.h \
-  ../common/SessionHandler.h ../common/BrowserChannel.h ../common/Value.h \
-  ../common/Debug.h ../common/BrowserChannel.h \
-  ../common/scoped_ptr/scoped_ptr.h
-$(OBJ_OUTDIR)/FFSessionHandler.o: FFSessionHandler.cpp FFSessionHandler.h \
-  mozincludes.h SessionData.h ../common/SessionHandler.h \
-  ../common/BrowserChannel.h ../common/Value.h ../common/Debug.h \
-  ../common/Platform.h ../common/DebugLevel.h ../common/BrowserChannel.h \
-  ../common/HostChannel.h ../common/Debug.h ../common/ByteOrder.h \
-  ../common/Platform.h ../common/Socket.h ../common/Platform.h \
-  ../common/Debug.h ../common/AllowedConnections.h ../common/Platform.h \
-  ../common/Message.h ../common/ReturnMessage.h ../common/Message.h \
-  ../common/BrowserChannel.h ../common/Value.h ../common/Value.h \
-  ../common/SessionHandler.h JavaObject.h JSRunner.h XpcomDebug.h \
-  ../common/scoped_ptr/scoped_ptr.h RootedObject.h \
-  ../common/InvokeMessage.h ../common/Message.h \
-  ../common/BrowserChannel.h ../common/Value.h ../common/ServerMethods.h \
-  ../common/Value.h
-$(OBJ_OUTDIR)/JavaObject.o: JavaObject.cpp JavaObject.h mozincludes.h \
-  FFSessionHandler.h SessionData.h ../common/SessionHandler.h \
-  ../common/BrowserChannel.h ../common/Value.h ../common/Debug.h \
-  ../common/Platform.h ../common/DebugLevel.h ../common/BrowserChannel.h \
-  ../common/ServerMethods.h ../common/Value.h XpcomDebug.h \
-  ../common/HostChannel.h ../common/Debug.h ../common/ByteOrder.h \
-  ../common/Platform.h ../common/Socket.h ../common/Platform.h \
-  ../common/Debug.h ../common/AllowedConnections.h ../common/Platform.h \
-  ../common/Message.h ../common/ReturnMessage.h ../common/Message.h \
-  ../common/BrowserChannel.h ../common/Value.h ../common/Value.h \
-  ../common/SessionHandler.h ../common/InvokeMessage.h \
-  ../common/Message.h ../common/BrowserChannel.h ../common/Value.h \
-  ../common/scoped_ptr/scoped_ptr.h
-$(OBJ_OUTDIR)/JSRunner.o: JSRunner.cpp JSRunner.h mozincludes.h
-$(OBJ_OUTDIR)/XpcomDebug.o: XpcomDebug.cpp XpcomDebug.h mozincludes.h \
-  JavaObject.h
diff --git a/plugins/xpcom/ModuleOOPHM.cpp b/plugins/xpcom/ModuleOOPHM.cpp
deleted file mode 100644
index 7e52bb1..0000000
--- a/plugins/xpcom/ModuleOOPHM.cpp
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include "Debug.h"
-#include "ExternalWrapper.h"
-
-#include "nsCOMPtr.h"
-#include "nsISupports.h"
-#include "nsIXULAppInfo.h"
-#include "nsIXULRuntime.h"
-#include "nsServiceManagerUtils.h"
-#include "nsXPCOMCID.h"
-
-#if GECKO_VERSION >= 1900
-#include "nsIClassInfoImpl.h"
-#endif
-
-#if GECKO_VERSION >= 2000
-#include "mozilla/ModuleUtils.h"
-#else
-#include "nsIGenericFactory.h"
-#include "nsICategoryManager.h"
-#endif
-
-
-// Allow a macro to be treated as a C string, ie -Dfoo=bar; QUOTE(foo) = "bar"
-#define QUOTE_HELPER(x) #x
-#define QUOTE(x) QUOTE_HELPER(x)
-
-#ifdef _WINDOWS
-#include <windows.h>
-
-BOOL APIENTRY DllMain(HMODULE hModule, DWORD ulReasonForCall, LPVOID lpReserved) {
-  switch (ulReasonForCall) {
-    case DLL_PROCESS_ATTACH:
-    case DLL_THREAD_ATTACH:
-    case DLL_THREAD_DETACH:
-    case DLL_PROCESS_DETACH:
-      break;
-  }
-  return TRUE;
-}
-#endif
-
-// This defines ExternalWrapperConstructor, which in turn instantiates via
-// ExternalWrapper::ExternalWrapper()
-NS_GENERIC_FACTORY_CONSTRUCTOR(ExternalWrapper);
-
-static nsresult Load() {
-  nsresult nr;
-  nsCOMPtr<nsIXULAppInfo> app_info
-      = do_GetService("@mozilla.org/xre/app-info;1", &nr);
-  if (NS_FAILED(nr) || !app_info) {
-    return NS_ERROR_FAILURE;
-  }
-  nsCString gecko_version;
-  app_info->GetPlatformVersion(gecko_version);
-  nsCString browser_version;
-  app_info->GetVersion(browser_version);
-  nsCOMPtr<nsIXULRuntime> xulRuntime
-      = do_GetService("@mozilla.org/xre/app-info;1", &nr);
-  if (NS_FAILED(nr) || !app_info) {
-    return NS_ERROR_FAILURE;
-  }
-  nsCString os;
-  xulRuntime->GetOS(os);
-  nsCString abi;
-  xulRuntime->GetXPCOMABI(abi);
-  Debug::log(Debug::Info) << "Initializing GWT Developer Plugin"
-      << Debug::flush;
-  Debug::log(Debug::Info) << "  gecko=" << gecko_version.BeginReading()
-      << ", firefox=" << browser_version.BeginReading() << ", abi="
-      << os.BeginReading() << "_" << abi.BeginReading() << ", built for "
-      QUOTE(BROWSER) << Debug::flush;
-  return NS_OK;
-}
-
-static void Unload() {
-  Debug::log(Debug::Debugging) << "ModuleOOPHM Unload()"
-      << Debug::flush;
-}
-
-#if GECKO_VERSION >= 2000
-/**
- * Gecko 2.0 has a completely different initialization mechanism
- */
-
-// This defines kOOPHM_CID variable that refers to the OOPHM_CID
-NS_DEFINE_NAMED_CID(OOPHM_CID);
-
-// Build a table of ClassIDs (CIDs) which are implemented by this module. CIDs
-// should be completely unique UUIDs.
-// each entry has the form { CID, service, factoryproc, constructorproc }
-// where factoryproc is usually NULL.
-static const mozilla::Module::CIDEntry kOOPHMCIDs[] = {
-  {&kOOPHM_CID, false, NULL, ExternalWrapperConstructor},
-  {NULL }
-};
-
-// Build a table which maps contract IDs to CIDs.
-// A contract is a string which identifies a particular set of functionality. In some
-// cases an extension component may override the contract ID of a builtin gecko component
-// to modify or extend functionality.
-static const mozilla::Module::ContractIDEntry kOOPHMContracts[] = {
-  {OOPHM_CONTRACTID, &kOOPHM_CID},
-  {NULL}
-};
-
-// Category entries are category/key/value triples which can be used
-// to register contract ID as content handlers or to observe certain
-// notifications.
-static const mozilla::Module::CategoryEntry kOOPHMCategories[] = {
-  {"JavaScript-global-property", "__gwt_HostedModePlugin", OOPHM_CONTRACTID},
-  {NULL}
-};
-
-static const mozilla::Module kModuleOOPHM = {
-  mozilla::Module::kVersion,
-  kOOPHMCIDs,
-  kOOPHMContracts,
-  kOOPHMCategories,
-  NULL, /* Use the default factory */
-  Load,
-  Unload
-};
-
-NSMODULE_DEFN(ModuleOOPHM) = &kModuleOOPHM;
-
-#else
-/**
- * pre-Gecko2.0 initialization
- */
-NS_DECL_CLASSINFO(ExternalWrapper);
-static NS_IMETHODIMP registerSelf(nsIComponentManager *aCompMgr, nsIFile *aPath,
-    const char *aLoaderStr, const char *aType,
-    const nsModuleComponentInfo *aInfo) {
-
-  Debug::log(Debug::Info)
-      << "  successfully registered GWT Developer Plugin"
-      << Debug::flush;
-  nsresult rv;
-  nsCOMPtr<nsICategoryManager> categoryManager =
-      do_GetService(NS_CATEGORYMANAGER_CONTRACTID, &rv);
-
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  rv = categoryManager->AddCategoryEntry("JavaScript global property",
-      "__gwt_HostedModePlugin", OOPHM_CONTRACTID, true, true, nsnull);
-
-  if (rv != NS_OK) {
-    Debug::log(Debug::Error) << "ModuleOOPHM registerSelf returned " << rv
-        << Debug::flush;
-  }
-  return rv;
-}
-
-static NS_IMETHODIMP factoryDestructor(void) {
-  Unload();
-  return NS_OK;
-}
-
-static NS_IMETHODIMP unregisterSelf(nsIComponentManager *aCompMgr,
-    nsIFile *aPath, const char *aLoaderStr,
-    const nsModuleComponentInfo *aInfo) {
-  Debug::log(Debug::Info) << "Unregistered GWT Developer Plugin"
-      << Debug::flush;
-  return NS_OK;
-}
-
-static nsModuleComponentInfo components[] = {
-    {
-       OOPHM_CLASSNAME,
-       OOPHM_CID,
-       OOPHM_CONTRACTID,
-       ExternalWrapperConstructor,
-       registerSelf,
-       unregisterSelf, /* unregister self */
-       factoryDestructor, /* factory destructor */
-       NS_CI_INTERFACE_GETTER_NAME(ExternalWrapper), /* get interfaces */
-       nsnull, /* language helper */
-       &NS_CLASSINFO_NAME(ExternalWrapper), /* global class-info pointer */
-       0 /* class flags */
-    }
-};
-
-// From Gears base/firefox/module.cc
-static nsModuleInfo const kModuleInfo = {
-  NS_MODULEINFO_VERSION,
-  ("ExternalWrapperModule"),
-  (components),
-  (sizeof(components) / sizeof(components[0])),
-  (nsnull),
-  (nsnull)
-};
-
-NSGETMODULE_ENTRY_POINT(ExternalWrapperModule) (nsIComponentManager *servMgr,
-    nsIFile* location, nsIModule** result) {
-  Load();
-  return NS_NewGenericModule2(&kModuleInfo, result);
-}
-#endif //GECKO_VERSION
diff --git a/plugins/xpcom/Preferences.cpp b/plugins/xpcom/Preferences.cpp
deleted file mode 100644
index 055200c..0000000
--- a/plugins/xpcom/Preferences.cpp
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright 2009 Google Inc.
- *
- * Licensed 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.
- */
-
-#include "Preferences.h"
-#include "Debug.h"
-#include "AllowedConnections.h"
-
-#include "nsCOMPtr.h"
-#include "nsStringAPI.h"
-#include "nsISupportsImpl.h"
-#include "nsIObserver.h"
-#include "nsIPrefService.h"
-#include "nsIPrefBranch.h"
-#include "nsIPrefBranch2.h"
-#include "nsServiceManagerUtils.h"
-
-#define GWT_DEV_PREFS_PREFIX "gwt-dev-plugin."
-#define GWT_DEV_ACCESS_LIST "accessList"
-
-NS_IMPL_ADDREF(Preferences)
-NS_IMPL_RELEASE(Preferences)
-NS_IMPL_QUERY_INTERFACE1(Preferences, nsIObserver)
-
-Preferences::Preferences() {
-  nsCOMPtr<nsIPrefService> prefService = do_GetService(
-      NS_PREFSERVICE_CONTRACTID);
-  if (!prefService) {
-    Debug::log(Debug::Error) << "Unable to get preference service"
-        << Debug::flush;
-    return;
-  }
-  nsCOMPtr<nsIPrefBranch> branch;
-  prefService->GetBranch(GWT_DEV_PREFS_PREFIX, getter_AddRefs(branch));
-  if (!branch) {
-    Debug::log(Debug::Error) << "Unable to get " GWT_DEV_PREFS_PREFIX
-        " preference branch" << Debug::flush;
-    return;
-  }
-  prefs = do_QueryInterface(branch);
-  if (!prefs) {
-    Debug::log(Debug::Error) << "Unable to get nsIPrefBranch2" << Debug::flush;
-    return;
-  }
-  prefs->AddObserver(GWT_DEV_ACCESS_LIST, this, PR_FALSE);
-  nsCString prefValue;
-  if (branch->GetCharPref(GWT_DEV_ACCESS_LIST, getter_Copies(prefValue))
-      == NS_OK) {
-    loadAccessList(prefValue.get());
-  }
-}
-
-// implements nsIObserver
-NS_IMETHODIMP
-Preferences::Observe(nsISupports *aSubject, const char* aTopic,
-    const PRUnichar *aData) {
-  nsresult rv = NS_OK;
-  Debug::log(Debug::Spam) << "Preferences::Observe(subject="
-      << aSubject << ", topic=" << aTopic << ", data=" << aData << Debug::flush;
-  if (strcmp(aTopic, NS_PREFBRANCH_PREFCHANGE_TOPIC_ID)) {
-    return NS_ERROR_UNEXPECTED;
-  }
-  // TODO(jat): check preference name in aData if we ever add another one
-  nsCOMPtr<nsIPrefBranch> prefs(do_QueryInterface(aSubject, &rv));
-  NS_ENSURE_SUCCESS(rv, rv);
-  nsCString prefValue;
-  if (prefs->GetCharPref(GWT_DEV_ACCESS_LIST, getter_Copies(prefValue))
-      == NS_OK) {
-    loadAccessList(prefValue.get());
-  }
-  return NS_OK;
-}
-
-void Preferences::addNewRule(const std::string& pattern, bool exclude) {
-  nsCString prefValue;
-  if (prefs->GetCharPref(GWT_DEV_ACCESS_LIST, getter_Copies(prefValue))
-      != NS_OK) {
-    Debug::log(Debug::Error) << "Unable to retrieve access list preference"
-        << Debug::flush;
-    return;
-  }
-  // TODO(jat): see if the same rule already exists
-  std::string pref(prefValue.get());
-  if (pref.length() > 0) {
-    pref += ',';
-  }
-  if (exclude) {
-    pref += '!';
-  }
-  pref += pattern;
-  if (prefs->SetCharPref(GWT_DEV_ACCESS_LIST, pref.c_str()) != NS_OK) {
-    Debug::log(Debug::Error) << "Unable to save modified access list preference"
-        << Debug::flush;
-    return;
-  }
-}
-
-void Preferences::loadAccessList(const char* prefValue) {
-  if (!prefValue) {
-    return;
-  }
-  Debug::log(Debug::Spam) << "loadFromAccessList(prefValue=" << prefValue << ")"
-      << Debug::flush;
-  AllowedConnections::initFromAccessList(prefValue);
-}
-
-Preferences::~Preferences() {
-  if (prefs) {
-    prefs->RemoveObserver(GWT_DEV_ACCESS_LIST, this);
-  }
-}
diff --git a/plugins/xpcom/Preferences.h b/plugins/xpcom/Preferences.h
deleted file mode 100644
index 2bc0a81..0000000
--- a/plugins/xpcom/Preferences.h
+++ /dev/null
@@ -1,55 +0,0 @@
-#ifndef _H_Preferences
-#define _H_Preferences
-/*
- * Copyright 2009 Google Inc.
- *
- * Licensed 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.
- */
-
-#include <string>
-
-#include "mozincludes.h"
-
-#include "nsCOMPtr.h"
-#include "nsISupports.h"
-#include "nsIObserver.h"
-#include "nsIPrefBranch2.h"
-
-class HostChannel;
-namespace gwt {
-  class Value;
-}
-
-class Preferences : public nsIObserver {
-  NS_DECL_ISUPPORTS
-  NS_DECL_NSIOBSERVER
-public:
-  Preferences();
-  virtual ~Preferences();
-
-  /**
-   * Add a new rule to the access list preference.
-   *
-   * @param pattern pattern to add (currently only an exact-match literal)
-   * @param exclude true if the pattern should be excluded from matches,
-   *     otherwise included
-   */
-  void addNewRule(const std::string& pattern, bool exclude);
-
-private:
-  static void loadAccessList(const char*);
-
-  nsCOMPtr<nsIPrefBranch2> prefs;
-};
-
-#endif
diff --git a/plugins/xpcom/README.txt b/plugins/xpcom/README.txt
deleted file mode 100644
index 0ef9b49..0000000
--- a/plugins/xpcom/README.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-You will need to checkout the SDKs required for building the plugin
-separately.  These are located at:
-	https://google-web-toolkit.googlecode.com/svn/plugin-sdks
-
-This assumes the SDKS are located in ../../../plugin-sdks -- if this is
-not correct, edit the definition in Makefile or pass PLUGIN_SDKS=<path> on the
-make command.
-
-Build by:
-
-make ARCH=x86 BROWSER=ff35
-make ARCH=x86_64 BROWSER=ff3
-
-etc -- default is current architecture and ff3.
-
-BROWSER values supported:
-  ff3	Firefox 3.0
-  ff3+  Firefox 3.0.11+ on some platforms
-  ff35  Firefox 3.5
-  ff36  Firefox 3.6
-  ff40  Firefox 4.0 (and 3.7alpha)
-
-You may need to try both ff3 and ff3+, as different platforms chose different
-library layouts.
-
-Targets of interest:
-  make linuxplatforms
-  make macplatforms
diff --git a/plugins/xpcom/RootedObject.h b/plugins/xpcom/RootedObject.h
deleted file mode 100755
index 1f85b71..0000000
--- a/plugins/xpcom/RootedObject.h
+++ /dev/null
@@ -1,84 +0,0 @@
-#ifndef _H_RootedObject
-#define _H_RootedObject
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include "Debug.h"
-
-#include "jsapi.h"
-
-#if GECKO_VERSION < 2000
-#define JS_AddNamedObjectRoot JS_AddNamedRoot
-#define JS_AddNamedValueRoot JS_AddNamedRoot
-#define JS_RemoveObjectRoot JS_RemoveRoot
-#define JS_RemoveValueRoot JS_RemoveRoot
-#endif
-
-class RootedObject {
-public:
-  RootedObject(JSContext* ctx, const char* name = 0) : ctx(ctx), obj(0) {
-    if (!JS_AddNamedObjectRoot(ctx, &obj, name)) {
-      Debug::log(Debug::Error) << "RootedObject(" << (name ? name : "")
-          << "): JS_AddNamedRoot failed" << Debug::flush;
-    }
-  }
-  
-  ~RootedObject() {
-    // Always returns success, so no need to check.
-    JS_RemoveObjectRoot(ctx, &obj);
-  }
-  
-  JSObject& operator*() const {
-    assert(obj != 0);
-    return *obj;
-  }
-
-  JSObject* operator->() const  {
-    assert(obj != 0);
-    return obj;
-  }
-
-  bool operator==(JSObject* p) const {
-    return obj == p;
-  }
-
-  bool operator!=(JSObject* p) const {
-    return obj != p;
-  }
-
-  JSObject* get() const  {
-    return obj;
-  }
-  
-  RootedObject& operator=(JSObject* val) {
-    obj = val;
-    return *this;
-  }
-
-private:
-  JSContext* ctx;
-  JSObject* obj; 
-};
-
-inline bool operator==(JSObject* p, const RootedObject& ro) {
-  return p == ro.get();
-}
-
-inline bool operator!=(JSObject* p, const RootedObject& ro) {
-  return p != ro.get();
-}
-
-#endif
diff --git a/plugins/xpcom/SessionData.h b/plugins/xpcom/SessionData.h
deleted file mode 100755
index 3f77d42..0000000
--- a/plugins/xpcom/SessionData.h
+++ /dev/null
@@ -1,114 +0,0 @@
-#ifndef _H_SessionData
-#define _H_SessionData
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed 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.
- */
-
-#include "mozincludes.h"
-
-#include "SessionHandler.h"
-
-#include "jsapi.h"
-
-#if GECKO_VERSION >= 2000 && GECKO_VERSION < 10000
-#include "jsobj.h"
-#endif
-
-class HostChannel;
-
-class SessionData {
-public:
-  SessionData(HostChannel* channel, SessionHandler* sessionHandler,
-      JSContext* ctx) : channel(channel), sessionHandler(sessionHandler),
-      global(SessionData::getJSGlobalObject(ctx)), runtime(JS_GetRuntime(ctx)),
-      toStringTearOff(JSVAL_VOID)
-  {
-  }
-
-  HostChannel* getHostChannel() const {
-    return channel;
-  }
-
-  SessionHandler* getSessionHandler() const {
-    return sessionHandler;
-  }
-
-  JSObject* getGlobalObject() const {
-    return global;
-  }
-
-  jsval getToStringTearOff() const {
-    return toStringTearOff;
-  }
-
-  /*
-  * Convert a value from the JavaScript into something that can be sent back
-  * to the OOPHM host.
-  */
-  virtual void makeValueFromJsval(gwt::Value& retVal, JSContext* ctx, const jsval& value)=0;
-
-  /*
-  * Convert a value from the OOPHM host into something that can be passed into
-  * the JavaScript execution environment.
-  */
-  virtual void makeJsvalFromValue(jsval& retVal, JSContext* ctx, const gwt::Value& value)=0;
-  
-  /*
-  * Removes the JavaObject wrapper with the given id and notifies the host.
-  */
-  virtual void freeJavaObject(int objectId)=0;
-
-private:
-  static JSObject* getJSGlobalObject(JSContext* ctx) {
-#if GECKO_VERSION < 10000
-    JSObject* global = JS_GetGlobalObject(ctx);
-#endif
-
-// See: https://developer.mozilla.org/en/SpiderMonkey/JSAPI_Reference/JS_GetGlobalObject
-#if GECKO_VERSION >= 2000 && GECKO_VERSION < 10000
-    // Innerize the global object from the WindowProxy object to its inner
-    // Window delegate since the proxy can't be used for evaluating scripts.
-    OBJ_TO_INNER_OBJECT(ctx, global);
-#endif
-
-#if GECKO_VERSION >= 10000
-    JSObject* global = JS_GetGlobalForScopeChain(ctx);
-#endif
-
-    return global;
-  }
-
-protected:
-  /*
-  * The communication channel used for the OOPHM session.
-  */
-  HostChannel* const channel;
-
-  /*
-  * A reference to the SessionHandler being used in the OOPHM session.
-  */
-  SessionHandler* const sessionHandler;
-
-  JSRuntime* runtime;
-  
-  JSObject* const global; 
-  
-  /**
-   * A function object representing the toString tear-off method.
-   */
-  jsval toStringTearOff;
-};
-
-#endif
diff --git a/plugins/xpcom/UserAgents.txt b/plugins/xpcom/UserAgents.txt
deleted file mode 100644
index 28d70ae..0000000
--- a/plugins/xpcom/UserAgents.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-User agents that work with ff3 XPI:
-===================================
-Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.13) Gecko/2009080315 Ubuntu/9.04 (jaunty) Firefox/3.08
-
-User agents that work with ff3+ XPI:
-====================================
-Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.12) Gecko/2009072110 Fedora/3.0.12-1.fc10 Firefox/3.0.12
-
diff --git a/plugins/xpcom/VisualStudio/FirefoxPlugins.sln b/plugins/xpcom/VisualStudio/FirefoxPlugins.sln
deleted file mode 100644
index e4bb71e..0000000
--- a/plugins/xpcom/VisualStudio/FirefoxPlugins.sln
+++ /dev/null
@@ -1,48 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ff70-xpcom", "ff70-xpcom.vcxproj", "{58AE040D-01CC-4E4A-AE98-BEDE56480AE9}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ff60-xpcom", "ff60-xpcom.vcxproj", "{58AE040D-01CC-4E4A-AE98-BEDE56480AE9}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ff50-xpcom", "ff50-xpcom.vcxproj", "{58AE040D-01CC-4E4A-AE98-BEDE56480AE9}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ff40-xpcom", "ff40-xpcom.vcxproj", "{6BF0C2CE-CB0C-421B-A67C-1E448371D24D}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ff36-xpcom", "ff36-xpcom.vcxproj", "{37692217-C7AD-4FA9-A588-DDC11E17D925}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ff35-xpcom", "ff35-xpcom.vcxproj", "{59A0C5AD-DE66-4C6D-9164-86F31308E719}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ff3-xpcom", "ff3-xpcom.vcxproj", "{6BF0C2CE-CB0C-421B-A67C-1E448371D24C}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Release|Win32 = Release|Win32
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{58AE040D-01CC-4E4A-AE98-BEDE56480AE9}.Debug|Win32.ActiveCfg = Debug|Win32
-		{58AE040D-01CC-4E4A-AE98-BEDE56480AE9}.Debug|Win32.Build.0 = Debug|Win32
-		{58AE040D-01CC-4E4A-AE98-BEDE56480AE9}.Release|Win32.ActiveCfg = Release|Win32
-		{58AE040D-01CC-4E4A-AE98-BEDE56480AE9}.Release|Win32.Build.0 = Release|Win32
-		{6BF0C2CE-CB0C-421B-A67C-1E448371D24D}.Debug|Win32.ActiveCfg = Debug|Win32
-		{6BF0C2CE-CB0C-421B-A67C-1E448371D24D}.Debug|Win32.Build.0 = Debug|Win32
-		{6BF0C2CE-CB0C-421B-A67C-1E448371D24D}.Release|Win32.ActiveCfg = Release|Win32
-		{6BF0C2CE-CB0C-421B-A67C-1E448371D24D}.Release|Win32.Build.0 = Release|Win32
-		{37692217-C7AD-4FA9-A588-DDC11E17D925}.Debug|Win32.ActiveCfg = Debug|Win32
-		{37692217-C7AD-4FA9-A588-DDC11E17D925}.Debug|Win32.Build.0 = Debug|Win32
-		{37692217-C7AD-4FA9-A588-DDC11E17D925}.Release|Win32.ActiveCfg = Release|Win32
-		{37692217-C7AD-4FA9-A588-DDC11E17D925}.Release|Win32.Build.0 = Release|Win32
-		{59A0C5AD-DE66-4C6D-9164-86F31308E719}.Debug|Win32.ActiveCfg = Debug|Win32
-		{59A0C5AD-DE66-4C6D-9164-86F31308E719}.Debug|Win32.Build.0 = Debug|Win32
-		{59A0C5AD-DE66-4C6D-9164-86F31308E719}.Release|Win32.ActiveCfg = Release|Win32
-		{59A0C5AD-DE66-4C6D-9164-86F31308E719}.Release|Win32.Build.0 = Release|Win32
-		{6BF0C2CE-CB0C-421B-A67C-1E448371D24C}.Debug|Win32.ActiveCfg = Debug|Win32
-		{6BF0C2CE-CB0C-421B-A67C-1E448371D24C}.Debug|Win32.Build.0 = Debug|Win32
-		{6BF0C2CE-CB0C-421B-A67C-1E448371D24C}.Release|Win32.ActiveCfg = Release|Win32
-		{6BF0C2CE-CB0C-421B-A67C-1E448371D24C}.Release|Win32.Build.0 = Release|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/plugins/xpcom/VisualStudio/ff100-xpcom.vcproj b/plugins/xpcom/VisualStudio/ff100-xpcom.vcproj
deleted file mode 100755
index c8b81e8..0000000
--- a/plugins/xpcom/VisualStudio/ff100-xpcom.vcproj
+++ /dev/null
@@ -1,845 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="ff100-xpcom"
-	ProjectGUID="{6BF0C2CE-CB0C-421B-A67C-1E448371D24D}"
-	RootNamespace="ff100-xpcom"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Debug100"
-			IntermediateDirectory="Debug100"
-			ConfigurationType="2"
-			UseOfMFC="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff100\include;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\mozilla&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\WINNT_x86-msvc\include&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\xpconnect&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\WINNT_x86-msvc\include&quot;"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF8;GECKO_VERSION=10000"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				TreatWChar_tAsBuiltInType="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib Advapi32.lib xpcomglue_s.lib xpcom.lib nspr4.lib mozalloc.lib xul.lib mozjs.lib"
-				ShowProgress="2"
-				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff100\xpGwtDevPlugin.dll"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\WINNT_x86-msvc\lib&quot;"
-				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
-				SubSystem="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(IntDir)\$(TargetName).lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Release100"
-			IntermediateDirectory="Release100"
-			ConfigurationType="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="3"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff100\include;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\mozilla&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\WINNT_x86-msvc\include&quot;;&quot;..\..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\xpconnect&quot;"
-				PreprocessorDefinitions="WIN32;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF8;GECKO_VERSION=10000;$(NOINHERIT)"
-				ExceptionHandling="1"
-				RuntimeLibrary="0"
-				TreatWChar_tAsBuiltInType="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib Advapi32.lib xpcomglue_s.lib xpcom.lib nspr4.lib mozalloc.lib xul.lib mozjs.lib"
-				ShowProgress="2"
-				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff100\xpGwtDevPlugin.dll"
-				LinkIncremental="0"
-				AdditionalLibraryDirectories="&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\WINNT_x86-msvc\lib&quot;"
-				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(IntDir)\$(TargetName).lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\ExternalWrapper.h"
-				>
-			</File>
-			<File
-				RelativePath="..\FFSessionHandler.h"
-				>
-			</File>
-			<File
-				RelativePath="..\prebuilt\ff100\include\IOOPHM.h"
-				>
-			</File>
-			<File
-				RelativePath="..\JavaObject.h"
-				>
-			</File>
-			<File
-				RelativePath="..\JSRunner.h"
-				>
-			</File>
-			<File
-				RelativePath="..\mozincludes.h"
-				>
-			</File>
-			<File
-				RelativePath="..\Preferences.h"
-				>
-			</File>
-			<File
-				RelativePath="..\RootedObject.h"
-				>
-			</File>
-			<File
-				RelativePath="..\SessionData.h"
-				>
-			</File>
-			<File
-				RelativePath="..\XpcomDebug.h"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\common\AllowedConnections.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\BrowserChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ByteOrder.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\CheckVersionsMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ChooseTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Debug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\DebugLevel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FatalErrorMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FreeValueMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HashMap.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HostChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeSpecialMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadJsniMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadModuleMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Message.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Platform.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ProtocolVersionMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\QuitMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ReturnMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\scoped_ptr\scoped_ptr.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ServerMethods.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SessionHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Socket.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SwitchTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Value.h"
-					>
-				</File>
-			</Filter>
-			<Filter
-				Name="gecko"
-				>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\WINNT_x86-msvc\include\js-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\js\jsapi.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\js\jsautocfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\js\jscompat.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\js\jsconfig.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\WINNT_x86-msvc\include\jscpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\jscpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\jsinttypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\js\jslong.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\jsosdep.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\js\jsotypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\js\jsproto.tbl"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\js\jspubtd.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\js\jstypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\WINNT_x86-msvc\include\mozilla-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\xpconnect\nsAXPCNativeCallContext.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\nsCOMPtr.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\nscore.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\xpcom\nscore.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\nsCycleCollector.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\nsDebug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\nsError.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\widget\nsEvent.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\nsICategoryManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\nsIClassInfo.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\nsIClassInfoImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\nsIComponentManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\nsID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\xpcom\nsIEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\xpcom\nsIException.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\xpcom\nsIExceptionService.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\nsIFactory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\nsIGenericFactory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\necko\nsIHttpProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\xpcom\nsIInterfaceInfo.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\xpcom\nsIInterfaceInfoManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\xpconnect\nsIJSContextStack.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\nsIMemory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\nsIModule.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\caps\nsIPrincipal.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\nsIProgrammingLanguage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\necko\nsIProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\necko\nsIProxiedProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\xpconnect\nsIScriptableInterfaces.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\dom\nsIScriptGlobalObject.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\dom\nsIScriptObjectPrincipal.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\caps\nsISecurityCheckedComponent.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\xpcom\nsISerializable.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\nsIServiceManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\xpcom\nsISimpleEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\nsISimpleEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\xpcom\nsISupports.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\nsISupports.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\xpcom\nsISupportsBase.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\nsISupportsBase.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\nsISupportsImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\xpcom\nsISupportsUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\nsISupportsUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\nsIURI.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\xpcom\nsIVariant.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\xpconnect\nsIXPConnect.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\nsMemory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\necko\nsNetCID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\nsrootidl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\xpcom\nsrootidl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\nsServiceManagerUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\nsStringAPI.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\nsTraceRefcnt.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\nsXPCOM.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\nsXPCOMCID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\nsXPCOMStrings.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\pratom.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\prcpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\prinrval.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\prlock.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\prlog.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\prlong.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\obsolete\protypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\prthread.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\prtime.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\prtypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\xpconnect\xpccomponents.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\xpconnect\xpcexception.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\xpconnect\xpcjsid.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\WINNT_x86-msvc\include\xpcom-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\xpcom\xpt_arena.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\xpcom\xpt_struct.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-10.0.0\include\xpcom\xptinfo.h"
-					>
-				</File>
-			</Filter>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-			<File
-				RelativePath="..\xpGwtDevPlugin.rc"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\ExternalWrapper.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\FFSessionHandler.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\JavaObject.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\JSRunner.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\ModuleOOPHM.cpp"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						GeneratePreprocessedFile="0"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\Preferences.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\XpcomDebug.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\xpGwtDevPlugin.def"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\common\AllowedConnections.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\CheckVersionsMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ChooseTransportMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Debug.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FatalErrorMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FreeValueMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HostChannel.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeSpecialMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadJsniMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadModuleMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ProtocolVersionMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ReturnMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ServerMethods.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Socket.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SwitchTransportMessage.cpp"
-					>
-				</File>
-			</Filter>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/plugins/xpcom/VisualStudio/ff110-xpcom.vcproj b/plugins/xpcom/VisualStudio/ff110-xpcom.vcproj
deleted file mode 100755
index 3d46823..0000000
--- a/plugins/xpcom/VisualStudio/ff110-xpcom.vcproj
+++ /dev/null
@@ -1,845 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="ff110-xpcom"
-	ProjectGUID="{6BF0C2CE-CB0C-421B-A67C-1E448371D24D}"
-	RootNamespace="ff110-xpcom"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Debug110"
-			IntermediateDirectory="Debug110"
-			ConfigurationType="2"
-			UseOfMFC="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff110\include;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\mozilla&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\WINNT_x86-msvc\include&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\xpconnect&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\WINNT_x86-msvc\include&quot;"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF8;GECKO_VERSION=11000"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				TreatWChar_tAsBuiltInType="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib Advapi32.lib xpcomglue_s.lib xpcom.lib nspr4.lib mozalloc.lib xul.lib mozjs.lib"
-				ShowProgress="2"
-				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff110\xpGwtDevPlugin.dll"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\WINNT_x86-msvc\lib&quot;"
-				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
-				SubSystem="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(IntDir)\$(TargetName).lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Release110"
-			IntermediateDirectory="Release110"
-			ConfigurationType="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="3"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff110\include;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\mozilla&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\WINNT_x86-msvc\include&quot;;&quot;..\..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\xpconnect&quot;"
-				PreprocessorDefinitions="WIN32;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF8;GECKO_VERSION=11000;$(NOINHERIT)"
-				ExceptionHandling="1"
-				RuntimeLibrary="0"
-				TreatWChar_tAsBuiltInType="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib Advapi32.lib xpcomglue_s.lib xpcom.lib nspr4.lib mozalloc.lib xul.lib mozjs.lib"
-				ShowProgress="2"
-				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff110\xpGwtDevPlugin.dll"
-				LinkIncremental="0"
-				AdditionalLibraryDirectories="&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\WINNT_x86-msvc\lib&quot;"
-				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(IntDir)\$(TargetName).lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\ExternalWrapper.h"
-				>
-			</File>
-			<File
-				RelativePath="..\FFSessionHandler.h"
-				>
-			</File>
-			<File
-				RelativePath="..\prebuilt\ff110\include\IOOPHM.h"
-				>
-			</File>
-			<File
-				RelativePath="..\JavaObject.h"
-				>
-			</File>
-			<File
-				RelativePath="..\JSRunner.h"
-				>
-			</File>
-			<File
-				RelativePath="..\mozincludes.h"
-				>
-			</File>
-			<File
-				RelativePath="..\Preferences.h"
-				>
-			</File>
-			<File
-				RelativePath="..\RootedObject.h"
-				>
-			</File>
-			<File
-				RelativePath="..\SessionData.h"
-				>
-			</File>
-			<File
-				RelativePath="..\XpcomDebug.h"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\common\AllowedConnections.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\BrowserChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ByteOrder.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\CheckVersionsMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ChooseTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Debug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\DebugLevel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FatalErrorMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FreeValueMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HashMap.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HostChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeSpecialMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadJsniMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadModuleMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Message.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Platform.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ProtocolVersionMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\QuitMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ReturnMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\scoped_ptr\scoped_ptr.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ServerMethods.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SessionHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Socket.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SwitchTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Value.h"
-					>
-				</File>
-			</Filter>
-			<Filter
-				Name="gecko"
-				>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\WINNT_x86-msvc\include\js-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\js\jsapi.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\js\jsautocfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\js\jscompat.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\js\jsconfig.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\WINNT_x86-msvc\include\jscpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\jscpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\jsinttypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\js\jslong.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\jsosdep.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\js\jsotypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\js\jsproto.tbl"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\js\jspubtd.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\js\jstypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\WINNT_x86-msvc\include\mozilla-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\xpconnect\nsAXPCNativeCallContext.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\nsCOMPtr.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\nscore.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\xpcom\nscore.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\nsCycleCollector.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\nsDebug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\nsError.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\widget\nsEvent.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\nsICategoryManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\nsIClassInfo.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\nsIClassInfoImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\nsIComponentManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\nsID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\xpcom\nsIEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\xpcom\nsIException.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\xpcom\nsIExceptionService.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\nsIFactory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\nsIGenericFactory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\necko\nsIHttpProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\xpcom\nsIInterfaceInfo.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\xpcom\nsIInterfaceInfoManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\xpconnect\nsIJSContextStack.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\nsIMemory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\nsIModule.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\caps\nsIPrincipal.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\nsIProgrammingLanguage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\necko\nsIProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\necko\nsIProxiedProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\xpconnect\nsIScriptableInterfaces.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\dom\nsIScriptGlobalObject.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\dom\nsIScriptObjectPrincipal.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\caps\nsISecurityCheckedComponent.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\xpcom\nsISerializable.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\nsIServiceManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\xpcom\nsISimpleEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\nsISimpleEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\xpcom\nsISupports.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\nsISupports.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\xpcom\nsISupportsBase.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\nsISupportsBase.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\nsISupportsImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\xpcom\nsISupportsUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\nsISupportsUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\nsIURI.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\xpcom\nsIVariant.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\xpconnect\nsIXPConnect.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\nsMemory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\necko\nsNetCID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\nsrootidl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\xpcom\nsrootidl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\nsServiceManagerUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\nsStringAPI.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\nsTraceRefcnt.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\nsXPCOM.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\nsXPCOMCID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\nsXPCOMStrings.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\pratom.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\prcpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\prinrval.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\prlock.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\prlog.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\prlong.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\obsolete\protypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\prthread.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\prtime.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\prtypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\xpconnect\xpccomponents.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\xpconnect\xpcexception.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\xpconnect\xpcjsid.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\WINNT_x86-msvc\include\xpcom-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\xpcom\xpt_arena.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\xpcom\xpt_struct.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-11.0.0\include\xpcom\xptinfo.h"
-					>
-				</File>
-			</Filter>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-			<File
-				RelativePath="..\xpGwtDevPlugin.rc"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\ExternalWrapper.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\FFSessionHandler.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\JavaObject.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\JSRunner.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\ModuleOOPHM.cpp"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						GeneratePreprocessedFile="0"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\Preferences.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\XpcomDebug.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\xpGwtDevPlugin.def"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\common\AllowedConnections.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\CheckVersionsMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ChooseTransportMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Debug.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FatalErrorMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FreeValueMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HostChannel.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeSpecialMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadJsniMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadModuleMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ProtocolVersionMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ReturnMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ServerMethods.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Socket.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SwitchTransportMessage.cpp"
-					>
-				</File>
-			</Filter>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/plugins/xpcom/VisualStudio/ff120-xpcom.vcproj b/plugins/xpcom/VisualStudio/ff120-xpcom.vcproj
deleted file mode 100755
index 340e6d4..0000000
--- a/plugins/xpcom/VisualStudio/ff120-xpcom.vcproj
+++ /dev/null
@@ -1,845 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="ff120-xpcom"
-	ProjectGUID="{6BF0C2CE-CB0C-421B-A67C-1E448371D24D}"
-	RootNamespace="ff120-xpcom"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Debug120"
-			IntermediateDirectory="Debug120"
-			ConfigurationType="2"
-			UseOfMFC="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff120\include;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\mozilla&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\WINNT_x86-msvc\include&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\xpconnect&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\WINNT_x86-msvc\include&quot;"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF8;GECKO_VERSION=12000"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				TreatWChar_tAsBuiltInType="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib Advapi32.lib xpcomglue_s.lib xpcom.lib nspr4.lib mozalloc.lib xul.lib mozjs.lib"
-				ShowProgress="2"
-				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff120\xpGwtDevPlugin.dll"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\WINNT_x86-msvc\lib&quot;"
-				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
-				SubSystem="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(IntDir)\$(TargetName).lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Release120"
-			IntermediateDirectory="Release120"
-			ConfigurationType="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="3"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff120\include;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\mozilla&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\WINNT_x86-msvc\include&quot;;&quot;..\..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\xpconnect&quot;"
-				PreprocessorDefinitions="WIN32;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF8;GECKO_VERSION=12000;$(NOINHERIT)"
-				ExceptionHandling="1"
-				RuntimeLibrary="0"
-				TreatWChar_tAsBuiltInType="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib Advapi32.lib xpcomglue_s.lib xpcom.lib nspr4.lib mozalloc.lib xul.lib mozjs.lib"
-				ShowProgress="2"
-				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff120\xpGwtDevPlugin.dll"
-				LinkIncremental="0"
-				AdditionalLibraryDirectories="&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\WINNT_x86-msvc\lib&quot;"
-				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(IntDir)\$(TargetName).lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\ExternalWrapper.h"
-				>
-			</File>
-			<File
-				RelativePath="..\FFSessionHandler.h"
-				>
-			</File>
-			<File
-				RelativePath="..\prebuilt\ff120\include\IOOPHM.h"
-				>
-			</File>
-			<File
-				RelativePath="..\JavaObject.h"
-				>
-			</File>
-			<File
-				RelativePath="..\JSRunner.h"
-				>
-			</File>
-			<File
-				RelativePath="..\mozincludes.h"
-				>
-			</File>
-			<File
-				RelativePath="..\Preferences.h"
-				>
-			</File>
-			<File
-				RelativePath="..\RootedObject.h"
-				>
-			</File>
-			<File
-				RelativePath="..\SessionData.h"
-				>
-			</File>
-			<File
-				RelativePath="..\XpcomDebug.h"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\common\AllowedConnections.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\BrowserChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ByteOrder.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\CheckVersionsMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ChooseTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Debug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\DebugLevel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FatalErrorMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FreeValueMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HashMap.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HostChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeSpecialMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadJsniMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadModuleMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Message.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Platform.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ProtocolVersionMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\QuitMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ReturnMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\scoped_ptr\scoped_ptr.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ServerMethods.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SessionHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Socket.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SwitchTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Value.h"
-					>
-				</File>
-			</Filter>
-			<Filter
-				Name="gecko"
-				>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\WINNT_x86-msvc\include\js-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\js\jsapi.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\js\jsautocfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\js\jscompat.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\js\jsconfig.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\WINNT_x86-msvc\include\jscpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\jscpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\jsinttypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\js\jslong.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\jsosdep.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\js\jsotypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\js\jsproto.tbl"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\js\jspubtd.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\js\jstypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\WINNT_x86-msvc\include\mozilla-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\xpconnect\nsAXPCNativeCallContext.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\nsCOMPtr.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\nscore.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\xpcom\nscore.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\nsCycleCollector.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\nsDebug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\nsError.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\widget\nsEvent.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\nsICategoryManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\nsIClassInfo.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\nsIClassInfoImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\nsIComponentManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\nsID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\xpcom\nsIEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\xpcom\nsIException.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\xpcom\nsIExceptionService.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\nsIFactory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\nsIGenericFactory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\necko\nsIHttpProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\xpcom\nsIInterfaceInfo.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\xpcom\nsIInterfaceInfoManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\xpconnect\nsIJSContextStack.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\nsIMemory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\nsIModule.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\caps\nsIPrincipal.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\nsIProgrammingLanguage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\necko\nsIProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\necko\nsIProxiedProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\xpconnect\nsIScriptableInterfaces.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\dom\nsIScriptGlobalObject.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\dom\nsIScriptObjectPrincipal.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\caps\nsISecurityCheckedComponent.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\xpcom\nsISerializable.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\nsIServiceManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\xpcom\nsISimpleEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\nsISimpleEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\xpcom\nsISupports.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\nsISupports.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\xpcom\nsISupportsBase.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\nsISupportsBase.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\nsISupportsImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\xpcom\nsISupportsUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\nsISupportsUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\nsIURI.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\xpcom\nsIVariant.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\xpconnect\nsIXPConnect.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\nsMemory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\necko\nsNetCID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\nsrootidl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\xpcom\nsrootidl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\nsServiceManagerUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\nsStringAPI.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\nsTraceRefcnt.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\nsXPCOM.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\nsXPCOMCID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\nsXPCOMStrings.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\pratom.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\prcpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\prinrval.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\prlock.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\prlog.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\prlong.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\obsolete\protypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\prthread.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\prtime.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\prtypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\xpconnect\xpccomponents.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\xpconnect\xpcexception.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\xpconnect\xpcjsid.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\WINNT_x86-msvc\include\xpcom-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\xpcom\xpt_arena.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\xpcom\xpt_struct.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-12.0.0\include\xpcom\xptinfo.h"
-					>
-				</File>
-			</Filter>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-			<File
-				RelativePath="..\xpGwtDevPlugin.rc"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\ExternalWrapper.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\FFSessionHandler.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\JavaObject.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\JSRunner.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\ModuleOOPHM.cpp"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						GeneratePreprocessedFile="0"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\Preferences.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\XpcomDebug.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\xpGwtDevPlugin.def"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\common\AllowedConnections.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\CheckVersionsMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ChooseTransportMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Debug.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FatalErrorMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FreeValueMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HostChannel.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeSpecialMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadJsniMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadModuleMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ProtocolVersionMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ReturnMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ServerMethods.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Socket.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SwitchTransportMessage.cpp"
-					>
-				</File>
-			</Filter>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/plugins/xpcom/VisualStudio/ff130-xpcom.vcproj b/plugins/xpcom/VisualStudio/ff130-xpcom.vcproj
deleted file mode 100755
index 4f3ac18..0000000
--- a/plugins/xpcom/VisualStudio/ff130-xpcom.vcproj
+++ /dev/null
@@ -1,845 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="ff130-xpcom"
-	ProjectGUID="{6BF0C2CE-CB0C-421B-A67C-1E448371D24D}"
-	RootNamespace="ff130-xpcom"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Debug130"
-			IntermediateDirectory="Debug130"
-			ConfigurationType="2"
-			UseOfMFC="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff130\include;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\mozilla&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\WINNT_x86-msvc\include&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\xpconnect&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\WINNT_x86-msvc\include&quot;"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF8;GECKO_VERSION=13000"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				TreatWChar_tAsBuiltInType="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib Advapi32.lib xpcomglue_s.lib xpcom.lib nspr4.lib mozalloc.lib xul.lib mozjs.lib"
-				ShowProgress="2"
-				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff130\xpGwtDevPlugin.dll"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\WINNT_x86-msvc\lib&quot;"
-				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
-				SubSystem="2"
-				RandomizedBaseAddress="2"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(IntDir)\$(TargetName).lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Release130"
-			IntermediateDirectory="Release130"
-			ConfigurationType="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="3"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff130\include;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\mozilla&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\WINNT_x86-msvc\include&quot;;&quot;..\..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\xpconnect&quot;"
-				PreprocessorDefinitions="WIN32;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF8;GECKO_VERSION=13000;$(NOINHERIT)"
-				ExceptionHandling="1"
-				RuntimeLibrary="0"
-				TreatWChar_tAsBuiltInType="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib Advapi32.lib xpcomglue_s.lib xpcom.lib nspr4.lib mozalloc.lib xul.lib mozjs.lib"
-				ShowProgress="2"
-				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff130\xpGwtDevPlugin.dll"
-				LinkIncremental="0"
-				AdditionalLibraryDirectories="&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\WINNT_x86-msvc\lib&quot;"
-				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="2"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(IntDir)\$(TargetName).lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\ExternalWrapper.h"
-				>
-			</File>
-			<File
-				RelativePath="..\FFSessionHandler.h"
-				>
-			</File>
-			<File
-				RelativePath="..\prebuilt\ff130\include\IOOPHM.h"
-				>
-			</File>
-			<File
-				RelativePath="..\JavaObject.h"
-				>
-			</File>
-			<File
-				RelativePath="..\JSRunner.h"
-				>
-			</File>
-			<File
-				RelativePath="..\mozincludes.h"
-				>
-			</File>
-			<File
-				RelativePath="..\Preferences.h"
-				>
-			</File>
-			<File
-				RelativePath="..\RootedObject.h"
-				>
-			</File>
-			<File
-				RelativePath="..\SessionData.h"
-				>
-			</File>
-			<File
-				RelativePath="..\XpcomDebug.h"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\common\AllowedConnections.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\BrowserChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ByteOrder.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\CheckVersionsMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ChooseTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Debug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\DebugLevel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FatalErrorMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FreeValueMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HashMap.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HostChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeSpecialMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadJsniMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadModuleMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Message.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Platform.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ProtocolVersionMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\QuitMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ReturnMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\scoped_ptr\scoped_ptr.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ServerMethods.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SessionHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Socket.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SwitchTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Value.h"
-					>
-				</File>
-			</Filter>
-			<Filter
-				Name="gecko"
-				>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\WINNT_x86-msvc\include\js-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\js\jsapi.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\js\jsautocfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\js\jscompat.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\js\jsconfig.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\WINNT_x86-msvc\include\jscpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\jscpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\jsinttypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\js\jslong.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\jsosdep.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\js\jsotypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\js\jsproto.tbl"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\js\jspubtd.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\js\jstypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\WINNT_x86-msvc\include\mozilla-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\xpconnect\nsAXPCNativeCallContext.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\nsCOMPtr.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\xpcom\nscore.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\nscore.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\nsCycleCollector.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\nsDebug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\nsError.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\widget\nsEvent.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\nsICategoryManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\nsIClassInfo.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\nsIClassInfoImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\nsIComponentManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\nsID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\xpcom\nsIEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\xpcom\nsIException.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\xpcom\nsIExceptionService.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\nsIFactory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\nsIGenericFactory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\necko\nsIHttpProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\xpcom\nsIInterfaceInfo.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\xpcom\nsIInterfaceInfoManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\xpconnect\nsIJSContextStack.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\nsIMemory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\nsIModule.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\caps\nsIPrincipal.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\nsIProgrammingLanguage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\necko\nsIProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\necko\nsIProxiedProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\xpconnect\nsIScriptableInterfaces.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\dom\nsIScriptGlobalObject.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\dom\nsIScriptObjectPrincipal.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\caps\nsISecurityCheckedComponent.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\xpcom\nsISerializable.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\nsIServiceManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\nsISimpleEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\xpcom\nsISimpleEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\nsISupports.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\xpcom\nsISupports.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\xpcom\nsISupportsBase.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\nsISupportsBase.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\nsISupportsImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\nsISupportsUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\xpcom\nsISupportsUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\nsIURI.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\xpcom\nsIVariant.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\xpconnect\nsIXPConnect.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\nsMemory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\necko\nsNetCID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\xpcom\nsrootidl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\nsrootidl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\nsServiceManagerUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\nsStringAPI.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\nsTraceRefcnt.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\nsXPCOM.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\nsXPCOMCID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\nsXPCOMStrings.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\pratom.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\prcpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\prinrval.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\prlock.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\prlog.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\prlong.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\obsolete\protypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\prthread.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\prtime.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\prtypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\xpconnect\xpccomponents.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\xpconnect\xpcexception.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\xpconnect\xpcjsid.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\WINNT_x86-msvc\include\xpcom-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\xpcom\xpt_arena.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\xpcom\xpt_struct.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-13.0.0\include\xpcom\xptinfo.h"
-					>
-				</File>
-			</Filter>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-			<File
-				RelativePath="..\xpGwtDevPlugin.rc"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\ExternalWrapper.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\FFSessionHandler.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\JavaObject.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\JSRunner.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\ModuleOOPHM.cpp"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						GeneratePreprocessedFile="0"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\Preferences.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\XpcomDebug.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\xpGwtDevPlugin.def"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\common\AllowedConnections.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\CheckVersionsMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ChooseTransportMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Debug.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FatalErrorMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FreeValueMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HostChannel.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeSpecialMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadJsniMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadModuleMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ProtocolVersionMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ReturnMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ServerMethods.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Socket.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SwitchTransportMessage.cpp"
-					>
-				</File>
-			</Filter>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/plugins/xpcom/VisualStudio/ff140-xpcom.vcproj b/plugins/xpcom/VisualStudio/ff140-xpcom.vcproj
deleted file mode 100755
index ee3d7f9..0000000
--- a/plugins/xpcom/VisualStudio/ff140-xpcom.vcproj
+++ /dev/null
@@ -1,845 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="ff140-xpcom"
-	ProjectGUID="{6BF0C2CE-CB0C-421B-A67C-1E448371D24D}"
-	RootNamespace="ff140-xpcom"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Debug140"
-			IntermediateDirectory="Debug140"
-			ConfigurationType="2"
-			UseOfMFC="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff140\include;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\mozilla&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\WINNT_x86-msvc\include&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\xpconnect&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\WINNT_x86-msvc\include&quot;"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF8;GECKO_VERSION=14000"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				TreatWChar_tAsBuiltInType="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib Advapi32.lib xpcomglue_s.lib xpcom.lib nspr4.lib mozalloc.lib xul.lib mozjs.lib"
-				ShowProgress="2"
-				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff140\xpGwtDevPlugin.dll"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\WINNT_x86-msvc\lib&quot;"
-				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
-				SubSystem="2"
-				RandomizedBaseAddress="2"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(IntDir)\$(TargetName).lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Release140"
-			IntermediateDirectory="Release140"
-			ConfigurationType="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="3"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff140\include;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\mozilla&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\WINNT_x86-msvc\include&quot;;&quot;..\..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\xpconnect&quot;"
-				PreprocessorDefinitions="WIN32;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF8;GECKO_VERSION=14000;$(NOINHERIT)"
-				ExceptionHandling="1"
-				RuntimeLibrary="0"
-				TreatWChar_tAsBuiltInType="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib Advapi32.lib xpcomglue_s.lib xpcom.lib nspr4.lib mozalloc.lib xul.lib mozjs.lib"
-				ShowProgress="2"
-				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff140\xpGwtDevPlugin.dll"
-				LinkIncremental="0"
-				AdditionalLibraryDirectories="&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\WINNT_x86-msvc\lib&quot;"
-				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="2"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(IntDir)\$(TargetName).lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\ExternalWrapper.h"
-				>
-			</File>
-			<File
-				RelativePath="..\FFSessionHandler.h"
-				>
-			</File>
-			<File
-				RelativePath="..\prebuilt\ff140\include\IOOPHM.h"
-				>
-			</File>
-			<File
-				RelativePath="..\JavaObject.h"
-				>
-			</File>
-			<File
-				RelativePath="..\JSRunner.h"
-				>
-			</File>
-			<File
-				RelativePath="..\mozincludes.h"
-				>
-			</File>
-			<File
-				RelativePath="..\Preferences.h"
-				>
-			</File>
-			<File
-				RelativePath="..\RootedObject.h"
-				>
-			</File>
-			<File
-				RelativePath="..\SessionData.h"
-				>
-			</File>
-			<File
-				RelativePath="..\XpcomDebug.h"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\common\AllowedConnections.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\BrowserChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ByteOrder.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\CheckVersionsMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ChooseTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Debug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\DebugLevel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FatalErrorMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FreeValueMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HashMap.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HostChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeSpecialMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadJsniMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadModuleMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Message.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Platform.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ProtocolVersionMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\QuitMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ReturnMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\scoped_ptr\scoped_ptr.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ServerMethods.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SessionHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Socket.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SwitchTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Value.h"
-					>
-				</File>
-			</Filter>
-			<Filter
-				Name="gecko"
-				>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\WINNT_x86-msvc\include\js-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\js\jsapi.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\js\jsautocfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\js\jscompat.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\js\jsconfig.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\WINNT_x86-msvc\include\jscpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\jscpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\jsinttypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\js\jslong.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\jsosdep.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\js\jsotypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\js\jsproto.tbl"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\js\jspubtd.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\js\jstypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\WINNT_x86-msvc\include\mozilla-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\xpconnect\nsAXPCNativeCallContext.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\nsCOMPtr.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\xpcom\nscore.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\nscore.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\nsCycleCollector.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\nsDebug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\nsError.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\widget\nsEvent.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\nsICategoryManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\nsIClassInfo.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\nsIClassInfoImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\nsIComponentManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\nsID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\xpcom\nsIEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\xpcom\nsIException.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\xpcom\nsIExceptionService.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\nsIFactory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\nsIGenericFactory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\necko\nsIHttpProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\xpcom\nsIInterfaceInfo.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\xpcom\nsIInterfaceInfoManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\xpconnect\nsIJSContextStack.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\nsIMemory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\nsIModule.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\caps\nsIPrincipal.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\nsIProgrammingLanguage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\necko\nsIProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\necko\nsIProxiedProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\xpconnect\nsIScriptableInterfaces.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\dom\nsIScriptGlobalObject.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\dom\nsIScriptObjectPrincipal.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\caps\nsISecurityCheckedComponent.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\xpcom\nsISerializable.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\nsIServiceManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\nsISimpleEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\xpcom\nsISimpleEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\nsISupports.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\xpcom\nsISupports.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\xpcom\nsISupportsBase.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\nsISupportsBase.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\nsISupportsImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\nsISupportsUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\xpcom\nsISupportsUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\nsIURI.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\xpcom\nsIVariant.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\xpconnect\nsIXPConnect.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\nsMemory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\necko\nsNetCID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\xpcom\nsrootidl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\nsrootidl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\nsServiceManagerUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\nsStringAPI.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\nsTraceRefcnt.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\nsXPCOM.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\nsXPCOMCID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\nsXPCOMStrings.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\pratom.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\prcpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\prinrval.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\prlock.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\prlog.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\prlong.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\obsolete\protypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\prthread.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\prtime.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\prtypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\xpconnect\xpccomponents.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\xpconnect\xpcexception.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\xpconnect\xpcjsid.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\WINNT_x86-msvc\include\xpcom-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\xpcom\xpt_arena.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\xpcom\xpt_struct.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-14.0.0\include\xpcom\xptinfo.h"
-					>
-				</File>
-			</Filter>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-			<File
-				RelativePath="..\xpGwtDevPlugin.rc"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\ExternalWrapper.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\FFSessionHandler.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\JavaObject.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\JSRunner.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\ModuleOOPHM.cpp"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						GeneratePreprocessedFile="0"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\Preferences.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\XpcomDebug.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\xpGwtDevPlugin.def"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\common\AllowedConnections.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\CheckVersionsMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ChooseTransportMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Debug.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FatalErrorMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FreeValueMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HostChannel.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeSpecialMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadJsniMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadModuleMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ProtocolVersionMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ReturnMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ServerMethods.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Socket.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SwitchTransportMessage.cpp"
-					>
-				</File>
-			</Filter>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/plugins/xpcom/VisualStudio/ff150-xpcom.vcproj b/plugins/xpcom/VisualStudio/ff150-xpcom.vcproj
deleted file mode 100755
index ebcf539..0000000
--- a/plugins/xpcom/VisualStudio/ff150-xpcom.vcproj
+++ /dev/null
@@ -1,846 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="ff150-xpcom"
-	ProjectGUID="{6BF0C2CE-CB0C-421B-A67C-1E448371D24D}"
-	RootNamespace="ff150-xpcom"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Debug150"
-			IntermediateDirectory="Debug150"
-			ConfigurationType="2"
-			UseOfMFC="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff150\include;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\mozilla&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\WINNT_x86-msvc\include&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\xpconnect&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\WINNT_x86-msvc\include&quot;"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF8;GECKO_VERSION=15000"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				TreatWChar_tAsBuiltInType="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib Advapi32.lib xpcomglue_s.lib xpcom.lib nspr4.lib mozalloc.lib xul.lib mozjs.lib"
-				ShowProgress="2"
-				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff150\xpGwtDevPlugin.dll"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\WINNT_x86-msvc\lib&quot;"
-				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
-				SubSystem="2"
-				RandomizedBaseAddress="2"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(IntDir)\$(TargetName).lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Release150"
-			IntermediateDirectory="Release150"
-			ConfigurationType="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="3"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff150\include;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\mozilla&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\WINNT_x86-msvc\include&quot;;&quot;..\..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\xpconnect&quot;"
-				PreprocessorDefinitions="WIN32;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF8;GECKO_VERSION=15000;$(NOINHERIT)"
-				ExceptionHandling="1"
-				RuntimeLibrary="0"
-				TreatWChar_tAsBuiltInType="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib Advapi32.lib xpcomglue_s.lib xpcom.lib nspr4.lib mozalloc.lib xul.lib mozjs.lib msvcrt.lib"
-				ShowProgress="2"
-				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff150\xpGwtDevPlugin.dll"
-				LinkIncremental="0"
-				AdditionalLibraryDirectories="&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\WINNT_x86-msvc\lib&quot;"
-				IgnoreDefaultLibraryNames=""
-				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="2"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(IntDir)\$(TargetName).lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\ExternalWrapper.h"
-				>
-			</File>
-			<File
-				RelativePath="..\FFSessionHandler.h"
-				>
-			</File>
-			<File
-				RelativePath="..\prebuilt\ff150\include\IOOPHM.h"
-				>
-			</File>
-			<File
-				RelativePath="..\JavaObject.h"
-				>
-			</File>
-			<File
-				RelativePath="..\JSRunner.h"
-				>
-			</File>
-			<File
-				RelativePath="..\mozincludes.h"
-				>
-			</File>
-			<File
-				RelativePath="..\Preferences.h"
-				>
-			</File>
-			<File
-				RelativePath="..\RootedObject.h"
-				>
-			</File>
-			<File
-				RelativePath="..\SessionData.h"
-				>
-			</File>
-			<File
-				RelativePath="..\XpcomDebug.h"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\common\AllowedConnections.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\BrowserChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ByteOrder.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\CheckVersionsMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ChooseTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Debug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\DebugLevel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FatalErrorMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FreeValueMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HashMap.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HostChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeSpecialMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadJsniMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadModuleMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Message.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Platform.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ProtocolVersionMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\QuitMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ReturnMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\scoped_ptr\scoped_ptr.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ServerMethods.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SessionHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Socket.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SwitchTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Value.h"
-					>
-				</File>
-			</Filter>
-			<Filter
-				Name="gecko"
-				>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\WINNT_x86-msvc\include\js-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\js\jsapi.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\js\jsautocfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\js\jscompat.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\js\jsconfig.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\WINNT_x86-msvc\include\jscpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\jscpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\jsinttypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\js\jslong.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\jsosdep.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\js\jsotypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\js\jsproto.tbl"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\js\jspubtd.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\js\jstypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\WINNT_x86-msvc\include\mozilla-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\xpconnect\nsAXPCNativeCallContext.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\nsCOMPtr.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\nscore.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\xpcom\nscore.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\nsCycleCollector.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\nsDebug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\nsError.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\widget\nsEvent.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\nsICategoryManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\nsIClassInfo.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\nsIClassInfoImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\nsIComponentManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\nsID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\xpcom\nsIEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\xpcom\nsIException.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\xpcom\nsIExceptionService.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\nsIFactory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\nsIGenericFactory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\necko\nsIHttpProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\xpcom\nsIInterfaceInfo.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\xpcom\nsIInterfaceInfoManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\xpconnect\nsIJSContextStack.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\nsIMemory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\nsIModule.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\caps\nsIPrincipal.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\nsIProgrammingLanguage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\necko\nsIProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\necko\nsIProxiedProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\xpconnect\nsIScriptableInterfaces.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\dom\nsIScriptGlobalObject.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\dom\nsIScriptObjectPrincipal.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\caps\nsISecurityCheckedComponent.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\xpcom\nsISerializable.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\nsIServiceManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\xpcom\nsISimpleEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\nsISimpleEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\xpcom\nsISupports.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\nsISupports.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\xpcom\nsISupportsBase.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\nsISupportsBase.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\nsISupportsImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\xpcom\nsISupportsUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\nsISupportsUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\nsIURI.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\xpcom\nsIVariant.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\xpconnect\nsIXPConnect.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\nsMemory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\necko\nsNetCID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\nsrootidl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\xpcom\nsrootidl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\nsServiceManagerUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\nsStringAPI.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\nsTraceRefcnt.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\nsXPCOM.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\nsXPCOMCID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\nsXPCOMStrings.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\pratom.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\prcpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\prinrval.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\prlock.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\prlog.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\prlong.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\obsolete\protypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\prthread.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\prtime.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\prtypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\xpconnect\xpccomponents.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\xpconnect\xpcexception.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\xpconnect\xpcjsid.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\WINNT_x86-msvc\include\xpcom-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\xpcom\xpt_arena.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\xpcom\xpt_struct.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-15.0.0\include\xpcom\xptinfo.h"
-					>
-				</File>
-			</Filter>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-			<File
-				RelativePath="..\xpGwtDevPlugin.rc"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\ExternalWrapper.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\FFSessionHandler.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\JavaObject.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\JSRunner.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\ModuleOOPHM.cpp"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						GeneratePreprocessedFile="0"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\Preferences.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\XpcomDebug.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\xpGwtDevPlugin.def"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\common\AllowedConnections.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\CheckVersionsMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ChooseTransportMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Debug.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FatalErrorMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FreeValueMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HostChannel.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeSpecialMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadJsniMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadModuleMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ProtocolVersionMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ReturnMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ServerMethods.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Socket.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SwitchTransportMessage.cpp"
-					>
-				</File>
-			</Filter>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/plugins/xpcom/VisualStudio/ff160-xpcom.vcxproj b/plugins/xpcom/VisualStudio/ff160-xpcom.vcxproj
deleted file mode 100644
index b9e5a6f..0000000
--- a/plugins/xpcom/VisualStudio/ff160-xpcom.vcxproj
+++ /dev/null
@@ -1,280 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{6BF0C2CE-CB0C-421B-A67C-1E448371D24D}</ProjectGuid>
-    <RootNamespace>ff160-xpcom</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>Static</UseOfMfc>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug160\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug160\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release160\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release160\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">xpGwtDevPlugin</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">xpGwtDevPlugin</TargetName>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\common;..\prebuilt\ff160\include;..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include;..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\mozilla;..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\WINNT_x86-msvc\include;..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\WINNT_x86-msvc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF8;GECKO_VERSION=16000;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <ResourceCompile>
-      <ResourceOutputFileName>$(IntDir)$(TargetName).res</ResourceOutputFileName>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>ws2_32.lib;Advapi32.lib;xpcomglue_s.lib;xpcom.lib;nspr4.lib;mozalloc.lib;xul.lib;mozjs.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <ShowProgress>LinkVerboseLib</ShowProgress>
-      <OutputFile>$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff160\xpGwtDevPlugin.dll</OutputFile>
-      <AdditionalLibraryDirectories>..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\WINNT_x86-msvc\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ModuleDefinitionFile>$(ProjectDir)\..\xpGwtDevPlugin.def</ModuleDefinitionFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>true</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\common;..\prebuilt\ff160\include;..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include;..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\mozilla;..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\WINNT_x86-msvc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF8;GECKO_VERSION=16000</PreprocessorDefinitions>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <ResourceCompile>
-      <ResourceOutputFileName>$(IntDir)$(TargetName).res</ResourceOutputFileName>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>ws2_32.lib;Advapi32.lib;xpcomglue_s.lib;xpcom.lib;nspr4.lib;mozalloc.lib;xul.lib;mozjs.lib;msvcrt.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <ShowProgress>LinkVerboseLib</ShowProgress>
-      <OutputFile>$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff160\xpGwtDevPlugin.dll</OutputFile>
-      <AdditionalLibraryDirectories>..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\WINNT_x86-msvc\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
-      <ModuleDefinitionFile>$(ProjectDir)\..\xpGwtDevPlugin.def</ModuleDefinitionFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>true</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClInclude Include="..\ExternalWrapper.h" />
-    <ClInclude Include="..\FFSessionHandler.h" />
-    <ClInclude Include="..\prebuilt\ff160\include\IOOPHM.h" />
-    <ClInclude Include="..\JavaObject.h" />
-    <ClInclude Include="..\JSRunner.h" />
-    <ClInclude Include="..\mozincludes.h" />
-    <ClInclude Include="..\Preferences.h" />
-    <ClInclude Include="..\RootedObject.h" />
-    <ClInclude Include="..\SessionData.h" />
-    <ClInclude Include="..\XpcomDebug.h" />
-    <ClInclude Include="..\..\common\AllowedConnections.h" />
-    <ClInclude Include="..\..\common\BrowserChannel.h" />
-    <ClInclude Include="..\..\common\ByteOrder.h" />
-    <ClInclude Include="..\..\common\CheckVersionsMessage.h" />
-    <ClInclude Include="..\..\common\ChooseTransportMessage.h" />
-    <ClInclude Include="..\..\common\Debug.h" />
-    <ClInclude Include="..\..\common\DebugLevel.h" />
-    <ClInclude Include="..\..\common\FatalErrorMessage.h" />
-    <ClInclude Include="..\..\common\FreeValueMessage.h" />
-    <ClInclude Include="..\..\common\HashMap.h" />
-    <ClInclude Include="..\..\common\HostChannel.h" />
-    <ClInclude Include="..\..\common\InvokeMessage.h" />
-    <ClInclude Include="..\..\common\InvokeSpecialMessage.h" />
-    <ClInclude Include="..\..\common\LoadJsniMessage.h" />
-    <ClInclude Include="..\..\common\LoadModuleMessage.h" />
-    <ClInclude Include="..\..\common\Message.h" />
-    <ClInclude Include="..\..\common\Platform.h" />
-    <ClInclude Include="..\..\common\ProtocolVersionMessage.h" />
-    <ClInclude Include="..\..\common\QuitMessage.h" />
-    <ClInclude Include="..\..\common\ReturnMessage.h" />
-    <ClInclude Include="..\..\common\scoped_ptr\scoped_ptr.h" />
-    <ClInclude Include="..\..\common\ServerMethods.h" />
-    <ClInclude Include="..\..\common\SessionHandler.h" />
-    <ClInclude Include="..\..\common\Socket.h" />
-    <ClInclude Include="..\..\common\SwitchTransportMessage.h" />
-    <ClInclude Include="..\..\common\Value.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\WINNT_x86-msvc\include\js-config.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\js\jsapi.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\js\jsautocfg.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\js\jscompat.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\js\jsconfig.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\WINNT_x86-msvc\include\jscpucfg.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\jscpucfg.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\jsinttypes.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\js\jslong.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\jsosdep.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\js\jsotypes.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\js\jspubtd.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\js\jstypes.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\js\jsutil.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\WINNT_x86-msvc\include\mozilla-config.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\xpconnect\nsAXPCNativeCallContext.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\nsCOMPtr.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\nscore.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\xpcom\nscore.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\nsCycleCollector.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\nsDebug.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\nsError.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\widget\nsEvent.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\nsICategoryManager.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\nsIClassInfo.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\nsIClassInfoImpl.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\nsIComponentManager.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\nsID.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\xpcom\nsIEnumerator.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\xpcom\nsIException.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\xpcom\nsIExceptionService.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\nsIFactory.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\nsIGenericFactory.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\necko\nsIHttpProtocolHandler.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\xpcom\nsIInterfaceInfo.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\xpcom\nsIInterfaceInfoManager.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\xpconnect\nsIJSContextStack.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\nsIMemory.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\nsIModule.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\caps\nsIPrincipal.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\nsIProgrammingLanguage.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\necko\nsIProtocolHandler.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\necko\nsIProxiedProtocolHandler.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\xpconnect\nsIScriptableInterfaces.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\dom\nsIScriptGlobalObject.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\dom\nsIScriptObjectPrincipal.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\caps\nsISecurityCheckedComponent.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\xpcom\nsISerializable.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\nsIServiceManager.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\xpcom\nsISimpleEnumerator.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\nsISimpleEnumerator.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\xpcom\nsISupports.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\nsISupports.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\xpcom\nsISupportsBase.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\nsISupportsBase.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\nsISupportsImpl.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\xpcom\nsISupportsUtils.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\nsISupportsUtils.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\nsIURI.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\xpcom\nsIVariant.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\xpconnect\nsIXPConnect.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\nsMemory.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\necko\nsNetCID.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\nsrootidl.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\xpcom\nsrootidl.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\nsServiceManagerUtils.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\nsStringAPI.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\nsTraceRefcnt.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\nsXPCOM.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\nsXPCOMCID.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\nsXPCOMStrings.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\pratom.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\prcpucfg.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\prinrval.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\prlock.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\prlog.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\prlong.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\obsolete\protypes.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\prthread.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\prtime.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\prtypes.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\xpconnect\xpccomponents.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\xpconnect\xpcexception.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\xpconnect\xpcjsid.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\WINNT_x86-msvc\include\xpcom-config.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\xpcom\xpt_arena.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\xpcom\xpt_struct.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\xpcom\xptinfo.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-16.0.0\include\js\jsproto.tbl" />
-    <None Include="..\xpGwtDevPlugin.def" />
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="..\xpGwtDevPlugin.rc" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\ExternalWrapper.cpp" />
-    <ClCompile Include="..\FFSessionHandler.cpp" />
-    <ClCompile Include="..\JavaObject.cpp" />
-    <ClCompile Include="..\JSRunner.cpp" />
-    <ClCompile Include="..\ModuleOOPHM.cpp">
-      <PreprocessToFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</PreprocessToFile>
-      <PreprocessSuppressLineNumbers Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</PreprocessSuppressLineNumbers>
-    </ClCompile>
-    <ClCompile Include="..\Preferences.cpp" />
-    <ClCompile Include="..\XpcomDebug.cpp" />
-    <ClCompile Include="..\..\common\AllowedConnections.cpp" />
-    <ClCompile Include="..\..\common\CheckVersionsMessage.cpp" />
-    <ClCompile Include="..\..\common\ChooseTransportMessage.cpp" />
-    <ClCompile Include="..\..\common\Debug.cpp" />
-    <ClCompile Include="..\..\common\FatalErrorMessage.cpp" />
-    <ClCompile Include="..\..\common\FreeValueMessage.cpp" />
-    <ClCompile Include="..\..\common\HostChannel.cpp" />
-    <ClCompile Include="..\..\common\InvokeMessage.cpp" />
-    <ClCompile Include="..\..\common\InvokeSpecialMessage.cpp" />
-    <ClCompile Include="..\..\common\LoadJsniMessage.cpp" />
-    <ClCompile Include="..\..\common\LoadModuleMessage.cpp" />
-    <ClCompile Include="..\..\common\ProtocolVersionMessage.cpp" />
-    <ClCompile Include="..\..\common\ReturnMessage.cpp" />
-    <ClCompile Include="..\..\common\ServerMethods.cpp" />
-    <ClCompile Include="..\..\common\Socket.cpp" />
-    <ClCompile Include="..\..\common\SwitchTransportMessage.cpp" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/plugins/xpcom/VisualStudio/ff3-xpcom.vcproj b/plugins/xpcom/VisualStudio/ff3-xpcom.vcproj
deleted file mode 100755
index 582c455..0000000
--- a/plugins/xpcom/VisualStudio/ff3-xpcom.vcproj
+++ /dev/null
@@ -1,837 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="ff3-xpcom"
-	ProjectGUID="{6BF0C2CE-CB0C-421B-A67C-1E448371D24C}"
-	RootNamespace="ff3-xpcom"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Debug3"
-			IntermediateDirectory="Debug3"
-			ConfigurationType="2"
-			UseOfMFC="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;&quot;..\prebuilt\ff3\include&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\WINNT_x86-msvc\include&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include&quot;"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF3"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				TreatWChar_tAsBuiltInType="false"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib xpcomglue_s.lib xpcom.lib nspr4.lib js3250.lib"
-				ShowProgress="2"
-				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff3\xpGwtDevPlugin.dll"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\WINNT_x86-msvc\lib"
-				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
-				SubSystem="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(IntDir)\$(TargetName).lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Release3"
-			IntermediateDirectory="Release3"
-			ConfigurationType="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="3"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff3\include;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\WINNT_x86-msvc\include&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include&quot;"
-				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Warning;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF3;BROWSER=ff3;GECKO_VERSION=1900"
-				ExceptionHandling="1"
-				RuntimeLibrary="0"
-				TreatWChar_tAsBuiltInType="false"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib xpcomglue_s.lib xpcom.lib nspr4.lib js3250.lib"
-				ShowProgress="2"
-				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff3\xpGwtDevPlugin.dll"
-				LinkIncremental="0"
-				AdditionalLibraryDirectories="&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\WINNT_x86-msvc\lib&quot;"
-				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(IntDir)\$(TargetName).lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\ExternalWrapper.h"
-				>
-			</File>
-			<File
-				RelativePath="..\FFSessionHandler.h"
-				>
-			</File>
-			<File
-				RelativePath="..\prebuilt\ff3\include\IOOPHM.h"
-				>
-			</File>
-			<File
-				RelativePath="..\JavaObject.h"
-				>
-			</File>
-			<File
-				RelativePath="..\JSRunner.h"
-				>
-			</File>
-			<File
-				RelativePath="..\ModuleOOPHM.h"
-				>
-			</File>
-			<File
-				RelativePath="..\mozincludes.h"
-				>
-			</File>
-			<File
-				RelativePath="..\Preferences.h"
-				>
-			</File>
-			<File
-				RelativePath="..\RootedObject.h"
-				>
-			</File>
-			<File
-				RelativePath="..\SessionData.h"
-				>
-			</File>
-			<File
-				RelativePath="..\XpcomDebug.h"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\common\AllowedConnections.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\BrowserChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ByteOrder.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\CheckVersionsMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ChooseTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Debug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\DebugLevel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FatalErrorMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FreeValueMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HashMap.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HostChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeSpecialMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadJsniMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadModuleMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Message.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Platform.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ProtocolVersionMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\QuitMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ReturnMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\scoped_ptr\scoped_ptr.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ServerMethods.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SessionHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Socket.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SwitchTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Value.h"
-					>
-				</File>
-			</Filter>
-			<Filter
-				Name="gecko"
-				>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jsapi.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jsautocfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jscompat.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jsconfig.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jscpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jslong.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jsosdep.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jsotypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jsproto.tbl"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jspubtd.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jstypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\WINNT_x86-msvc\include\mozilla-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsAXPCNativeCallContext.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsCOMPtr.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nscore.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nscore.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsCycleCollector.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsDebug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsError.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsEvent.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsICategoryManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIClassInfo.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIClassInfoImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIComponentManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIException.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIExceptionService.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIFactory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIGenericFactory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIHttpProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIInterfaceInfo.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIInterfaceInfoManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIJSContextStack.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIMemory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIModule.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIPrincipal.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIProgrammingLanguage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIProxiedProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIScriptableInterfaces.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIScriptGlobalObject.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIScriptObjectPrincipal.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsISecurityCheckedComponent.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsISerializable.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIServiceManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsISimpleEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsISimpleEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsISupports.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsISupports.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsISupportsBase.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsISupportsBase.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsISupportsImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsISupportsUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsISupportsUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIURI.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIVariant.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIXPConnect.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsMemory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsNetCID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsrootidl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsrootidl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsServiceManagerUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsStringAPI.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsTraceRefcnt.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsXPCOM.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsXPCOMCID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsXPCOMStrings.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\pratom.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\prcpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\prinrval.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\prlock.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\prlog.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\prlong.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\obsolete\protypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\prthread.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\prtime.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\prtypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\xpccomponents.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\xpcexception.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\xpcjsid.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\WINNT_x86-msvc\include\xpcom-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\xpt_arena.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\xpt_struct.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\xptinfo.h"
-					>
-				</File>
-			</Filter>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-			<File
-				RelativePath="..\xpGwtDevPlugin.rc"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\ExternalWrapper.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\FFSessionHandler.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\JavaObject.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\JSRunner.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\ModuleOOPHM.cpp"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						GeneratePreprocessedFile="0"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\Preferences.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\XpcomDebug.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\xpGwtDevPlugin.def"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\common\AllowedConnections.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\CheckVersionsMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ChooseTransportMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Debug.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FatalErrorMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FreeValueMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HostChannel.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeSpecialMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadJsniMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadModuleMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ProtocolVersionMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ReturnMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ServerMethods.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Socket.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SwitchTransportMessage.cpp"
-					>
-				</File>
-			</Filter>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/plugins/xpcom/VisualStudio/ff3-xpcom.vcxproj b/plugins/xpcom/VisualStudio/ff3-xpcom.vcxproj
deleted file mode 100644
index 53575bb..0000000
--- a/plugins/xpcom/VisualStudio/ff3-xpcom.vcxproj
+++ /dev/null
@@ -1,269 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{6BF0C2CE-CB0C-421B-A67C-1E448371D24C}</ProjectGuid>
-    <RootNamespace>ff3-xpcom</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>Static</UseOfMfc>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug3\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug3\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release3\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release3\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\common;..\prebuilt\ff3\include;..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\WINNT_x86-msvc\include;..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF3;BROWSER=ff3;GECKO_VERSION=1900;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <ResourceCompile>
-      <ResourceOutputFileName>$(IntDir)$(TargetName).res</ResourceOutputFileName>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>ws2_32.lib;xpcomglue_s.lib;xpcom.lib;nspr4.lib;js3250.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <ShowProgress>LinkVerboseLib</ShowProgress>
-      <OutputFile>$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff3\xpGwtDevPlugin.dll</OutputFile>
-      <AdditionalLibraryDirectories>..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\WINNT_x86-msvc\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ModuleDefinitionFile>$(ProjectDir)\..\xpGwtDevPlugin.def</ModuleDefinitionFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\common;..\prebuilt\ff3\include;..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\WINNT_x86-msvc\include;..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Warning;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF3;BROWSER=ff3;GECKO_VERSION=1900;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <ResourceCompile>
-      <ResourceOutputFileName>$(IntDir)$(TargetName).res</ResourceOutputFileName>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>ws2_32.lib;xpcomglue_s.lib;xpcom.lib;nspr4.lib;js3250.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <ShowProgress>LinkVerboseLib</ShowProgress>
-      <OutputFile>$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff3\xpGwtDevPlugin.dll</OutputFile>
-      <AdditionalLibraryDirectories>..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\WINNT_x86-msvc\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ModuleDefinitionFile>$(ProjectDir)\..\xpGwtDevPlugin.def</ModuleDefinitionFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClInclude Include="..\ExternalWrapper.h" />
-    <ClInclude Include="..\FFSessionHandler.h" />
-    <ClInclude Include="..\prebuilt\ff3\include\IOOPHM.h" />
-    <ClInclude Include="..\JavaObject.h" />
-    <ClInclude Include="..\JSRunner.h" />
-    <ClInclude Include="..\ModuleOOPHM.h" />
-    <ClInclude Include="..\mozincludes.h" />
-    <ClInclude Include="..\Preferences.h" />
-    <ClInclude Include="..\RootedObject.h" />
-    <ClInclude Include="..\SessionData.h" />
-    <ClInclude Include="..\XpcomDebug.h" />
-    <ClInclude Include="..\..\common\AllowedConnections.h" />
-    <ClInclude Include="..\..\common\BrowserChannel.h" />
-    <ClInclude Include="..\..\common\ByteOrder.h" />
-    <ClInclude Include="..\..\common\CheckVersionsMessage.h" />
-    <ClInclude Include="..\..\common\ChooseTransportMessage.h" />
-    <ClInclude Include="..\..\common\Debug.h" />
-    <ClInclude Include="..\..\common\DebugLevel.h" />
-    <ClInclude Include="..\..\common\FatalErrorMessage.h" />
-    <ClInclude Include="..\..\common\FreeValueMessage.h" />
-    <ClInclude Include="..\..\common\HashMap.h" />
-    <ClInclude Include="..\..\common\HostChannel.h" />
-    <ClInclude Include="..\..\common\InvokeMessage.h" />
-    <ClInclude Include="..\..\common\InvokeSpecialMessage.h" />
-    <ClInclude Include="..\..\common\LoadJsniMessage.h" />
-    <ClInclude Include="..\..\common\LoadModuleMessage.h" />
-    <ClInclude Include="..\..\common\Message.h" />
-    <ClInclude Include="..\..\common\Platform.h" />
-    <ClInclude Include="..\..\common\ProtocolVersionMessage.h" />
-    <ClInclude Include="..\..\common\QuitMessage.h" />
-    <ClInclude Include="..\..\common\ReturnMessage.h" />
-    <ClInclude Include="..\..\common\scoped_ptr\scoped_ptr.h" />
-    <ClInclude Include="..\..\common\ServerMethods.h" />
-    <ClInclude Include="..\..\common\SessionHandler.h" />
-    <ClInclude Include="..\..\common\Socket.h" />
-    <ClInclude Include="..\..\common\SwitchTransportMessage.h" />
-    <ClInclude Include="..\..\common\Value.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jsapi.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jsautocfg.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jscompat.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jsconfig.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jscpucfg.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jslong.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jsosdep.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jsotypes.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jspubtd.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jstypes.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jsutil.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\WINNT_x86-msvc\include\mozilla-config.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsAXPCNativeCallContext.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsCOMPtr.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nscore.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsCycleCollector.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsDebug.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsError.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsEvent.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsICategoryManager.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIClassInfo.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIClassInfoImpl.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIComponentManager.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsID.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIEnumerator.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIException.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIExceptionService.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIFactory.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIGenericFactory.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIHttpProtocolHandler.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIInterfaceInfo.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIInterfaceInfoManager.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIJSContextStack.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIMemory.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIModule.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIPrincipal.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIProgrammingLanguage.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIProtocolHandler.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIProxiedProtocolHandler.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIScriptableInterfaces.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIScriptGlobalObject.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIScriptObjectPrincipal.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsISecurityCheckedComponent.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsISerializable.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIServiceManager.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsISimpleEnumerator.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsISupports.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsISupportsBase.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsISupportsImpl.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsISupportsUtils.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIURI.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIVariant.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIXPConnect.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsMemory.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsNetCID.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsrootidl.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsServiceManagerUtils.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsStringAPI.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsTraceRefcnt.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsXPCOM.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsXPCOMCID.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsXPCOMStrings.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\pratom.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\prcpucfg.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\prinrval.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\prlock.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\prlog.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\prlong.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\obsolete\protypes.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\prthread.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\prtime.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\prtypes.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\xpccomponents.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\xpcexception.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\xpcjsid.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\WINNT_x86-msvc\include\xpcom-config.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\xpt_arena.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\xpt_struct.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\xptinfo.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jsproto.tbl" />
-    <None Include="..\xpGwtDevPlugin.def" />
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="..\xpGwtDevPlugin.rc" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\ExternalWrapper.cpp" />
-    <ClCompile Include="..\FFSessionHandler.cpp" />
-    <ClCompile Include="..\JavaObject.cpp" />
-    <ClCompile Include="..\JSRunner.cpp" />
-    <ClCompile Include="..\ModuleOOPHM.cpp">
-      <PreprocessToFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</PreprocessToFile>
-      <PreprocessSuppressLineNumbers Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</PreprocessSuppressLineNumbers>
-    </ClCompile>
-    <ClCompile Include="..\Preferences.cpp" />
-    <ClCompile Include="..\XpcomDebug.cpp" />
-    <ClCompile Include="..\..\common\AllowedConnections.cpp" />
-    <ClCompile Include="..\..\common\CheckVersionsMessage.cpp" />
-    <ClCompile Include="..\..\common\ChooseTransportMessage.cpp" />
-    <ClCompile Include="..\..\common\Debug.cpp" />
-    <ClCompile Include="..\..\common\FatalErrorMessage.cpp" />
-    <ClCompile Include="..\..\common\FreeValueMessage.cpp" />
-    <ClCompile Include="..\..\common\HostChannel.cpp" />
-    <ClCompile Include="..\..\common\InvokeMessage.cpp" />
-    <ClCompile Include="..\..\common\InvokeSpecialMessage.cpp" />
-    <ClCompile Include="..\..\common\LoadJsniMessage.cpp" />
-    <ClCompile Include="..\..\common\LoadModuleMessage.cpp" />
-    <ClCompile Include="..\..\common\ProtocolVersionMessage.cpp" />
-    <ClCompile Include="..\..\common\ReturnMessage.cpp" />
-    <ClCompile Include="..\..\common\ServerMethods.cpp" />
-    <ClCompile Include="..\..\common\Socket.cpp" />
-    <ClCompile Include="..\..\common\SwitchTransportMessage.cpp" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/plugins/xpcom/VisualStudio/ff3-xpcom.vcxproj.filters b/plugins/xpcom/VisualStudio/ff3-xpcom.vcxproj.filters
deleted file mode 100644
index 94395ca..0000000
--- a/plugins/xpcom/VisualStudio/ff3-xpcom.vcxproj.filters
+++ /dev/null
@@ -1,460 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Header Files\common">
-      <UniqueIdentifier>{fc617b60-337a-4e22-a021-35cb77fb21d7}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Header Files\gecko">
-      <UniqueIdentifier>{9d802c13-b225-4cb5-8cbf-794f114b390a}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Resource Files">
-      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
-      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx</Extensions>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Source Files\common">
-      <UniqueIdentifier>{b7f8abdc-77a5-4e89-9c37-3528a82c42d2}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\ExternalWrapper.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\FFSessionHandler.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\prebuilt\ff3\include\IOOPHM.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\JavaObject.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\JSRunner.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\ModuleOOPHM.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\mozincludes.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\Preferences.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\RootedObject.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\SessionData.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\XpcomDebug.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\AllowedConnections.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\BrowserChannel.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\ByteOrder.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\CheckVersionsMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\ChooseTransportMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\Debug.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\DebugLevel.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\FatalErrorMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\FreeValueMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\HashMap.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\HostChannel.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\InvokeMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\InvokeSpecialMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\LoadJsniMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\LoadModuleMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\Message.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\Platform.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\ProtocolVersionMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\QuitMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\ReturnMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\scoped_ptr\scoped_ptr.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\ServerMethods.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\SessionHandler.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\Socket.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\SwitchTransportMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\Value.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jsapi.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jsautocfg.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jscompat.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jsconfig.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jscpucfg.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jslong.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jsosdep.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jsotypes.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jspubtd.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jstypes.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jsutil.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\WINNT_x86-msvc\include\mozilla-config.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsAXPCNativeCallContext.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsCOMPtr.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nscore.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsCycleCollector.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsDebug.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsError.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsEvent.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsICategoryManager.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIClassInfo.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIClassInfoImpl.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIComponentManager.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsID.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIEnumerator.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIException.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIExceptionService.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIFactory.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIGenericFactory.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIHttpProtocolHandler.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIInterfaceInfo.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIInterfaceInfoManager.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIJSContextStack.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIMemory.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIModule.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIPrincipal.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIProgrammingLanguage.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIProtocolHandler.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIProxiedProtocolHandler.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIScriptableInterfaces.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIScriptGlobalObject.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIScriptObjectPrincipal.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsISecurityCheckedComponent.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsISerializable.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIServiceManager.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsISimpleEnumerator.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsISupports.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsISupportsBase.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsISupportsImpl.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsISupportsUtils.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIURI.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIVariant.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsIXPConnect.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsMemory.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsNetCID.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsrootidl.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsServiceManagerUtils.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsStringAPI.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsTraceRefcnt.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsXPCOM.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsXPCOMCID.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\nsXPCOMStrings.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\pratom.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\prcpucfg.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\prinrval.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\prlock.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\prlog.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\prlong.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\obsolete\protypes.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\prthread.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\prtime.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\prtypes.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\xpccomponents.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\xpcexception.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\xpcjsid.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\WINNT_x86-msvc\include\xpcom-config.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\xpt_arena.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\xpt_struct.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\xptinfo.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.0\include\jsproto.tbl">
-      <Filter>Header Files\gecko</Filter>
-    </None>
-    <None Include="..\xpGwtDevPlugin.def">
-      <Filter>Source Files</Filter>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="..\xpGwtDevPlugin.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\ExternalWrapper.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\FFSessionHandler.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\JavaObject.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\JSRunner.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\ModuleOOPHM.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\Preferences.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\XpcomDebug.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\AllowedConnections.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\CheckVersionsMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\ChooseTransportMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\Debug.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\FatalErrorMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\FreeValueMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\HostChannel.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\InvokeMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\InvokeSpecialMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\LoadJsniMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\LoadModuleMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\ProtocolVersionMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\ReturnMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\ServerMethods.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\Socket.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\SwitchTransportMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/plugins/xpcom/VisualStudio/ff35-xpcom.vcproj b/plugins/xpcom/VisualStudio/ff35-xpcom.vcproj
deleted file mode 100755
index 02682dc..0000000
--- a/plugins/xpcom/VisualStudio/ff35-xpcom.vcproj
+++ /dev/null
@@ -1,837 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="ff35-xpcom"
-	ProjectGUID="{59A0C5AD-DE66-4C6D-9164-86F31308E719}"
-	RootNamespace="ff35-xpcom"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Debug35"
-			IntermediateDirectory="Debug35"
-			ConfigurationType="2"
-			UseOfMFC="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff35\include;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\WINNT_x86-msvc\include&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include&quot;"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF3"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				TreatWChar_tAsBuiltInType="false"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib xpcomglue_s.lib xpcom.lib nspr4.lib js3250.lib"
-				ShowProgress="2"
-				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff35\xpGwtDevPlugin.dll"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\WINNT_x86-msvc\lib&quot;"
-				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
-				SubSystem="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(IntDir)\$(TargetName).lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Release35"
-			IntermediateDirectory="Release35"
-			ConfigurationType="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="3"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff35\include;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\WINNT_x86-msvc\include&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include&quot;"
-				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Warning;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF3;BROWSER=ff35;GECKO_VERSION=1901"
-				ExceptionHandling="1"
-				RuntimeLibrary="0"
-				TreatWChar_tAsBuiltInType="false"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib xpcomglue_s.lib xpcom.lib nspr4.lib js3250.lib"
-				ShowProgress="2"
-				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff35\xpGwtDevPlugin.dll"
-				LinkIncremental="0"
-				AdditionalLibraryDirectories="&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\WINNT_x86-msvc\lib&quot;"
-				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(IntDir)\$(TargetName).lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\ExternalWrapper.h"
-				>
-			</File>
-			<File
-				RelativePath="..\FFSessionHandler.h"
-				>
-			</File>
-			<File
-				RelativePath="..\prebuilt\ff35\include\IOOPHM.h"
-				>
-			</File>
-			<File
-				RelativePath="..\JavaObject.h"
-				>
-			</File>
-			<File
-				RelativePath="..\JSRunner.h"
-				>
-			</File>
-			<File
-				RelativePath="..\ModuleOOPHM.h"
-				>
-			</File>
-			<File
-				RelativePath="..\mozincludes.h"
-				>
-			</File>
-			<File
-				RelativePath="..\Preferences.h"
-				>
-			</File>
-			<File
-				RelativePath="..\RootedObject.h"
-				>
-			</File>
-			<File
-				RelativePath="..\SessionData.h"
-				>
-			</File>
-			<File
-				RelativePath="..\XpcomDebug.h"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\common\AllowedConnections.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\BrowserChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ByteOrder.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\CheckVersionsMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ChooseTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Debug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\DebugLevel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FatalErrorMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FreeValueMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HashMap.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HostChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeSpecialMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadJsniMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadModuleMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Message.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Platform.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ProtocolVersionMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\QuitMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ReturnMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\scoped_ptr\scoped_ptr.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ServerMethods.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SessionHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Socket.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SwitchTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Value.h"
-					>
-				</File>
-			</Filter>
-			<Filter
-				Name="gecko"
-				>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jsapi.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jsautocfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jscompat.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jsconfig.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\jscpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jslong.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\jsosdep.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jsotypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jsproto.tbl"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jspubtd.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jstypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\WINNT_x86-msvc\include\mozilla-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpconnect\nsAXPCNativeCallContext.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsCOMPtr.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nscore.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nscore.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsCycleCollector.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsDebug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsError.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\widget\nsEvent.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsICategoryManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsIClassInfo.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsIClassInfoImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsIComponentManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsIEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsIException.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsIExceptionService.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsIFactory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsIGenericFactory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\necko\nsIHttpProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsIInterfaceInfo.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsIInterfaceInfoManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpconnect\nsIJSContextStack.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsIMemory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsIModule.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\caps\nsIPrincipal.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsIProgrammingLanguage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\necko\nsIProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\necko\nsIProxiedProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpconnect\nsIScriptableInterfaces.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\dom\nsIScriptGlobalObject.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\dom\nsIScriptObjectPrincipal.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\caps\nsISecurityCheckedComponent.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsISerializable.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsIServiceManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsISimpleEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsISimpleEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsISupports.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsISupports.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsISupportsBase.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsISupportsBase.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsISupportsImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsISupportsUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsISupportsUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsIURI.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsIVariant.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpconnect\nsIXPConnect.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsMemory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\necko\nsNetCID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsrootidl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsrootidl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsServiceManagerUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsStringAPI.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsTraceRefcnt.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsXPCOM.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsXPCOMCID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsXPCOMStrings.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\pratom.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\prcpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\prinrval.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\prlock.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\prlog.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\prlong.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\obsolete\protypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\prthread.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\prtime.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\prtypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpconnect\xpccomponents.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpconnect\xpcexception.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpconnect\xpcjsid.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\WINNT_x86-msvc\include\xpcom-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\xpt_arena.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\xpt_struct.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\xptinfo.h"
-					>
-				</File>
-			</Filter>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-			<File
-				RelativePath="..\xpGwtDevPlugin.rc"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\ExternalWrapper.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\FFSessionHandler.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\JavaObject.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\JSRunner.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\ModuleOOPHM.cpp"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						GeneratePreprocessedFile="0"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\Preferences.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\XpcomDebug.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\xpGwtDevPlugin.def"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\common\AllowedConnections.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\CheckVersionsMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ChooseTransportMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Debug.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FatalErrorMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FreeValueMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HostChannel.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeSpecialMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadJsniMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadModuleMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ProtocolVersionMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ReturnMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ServerMethods.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Socket.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SwitchTransportMessage.cpp"
-					>
-				</File>
-			</Filter>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/plugins/xpcom/VisualStudio/ff35-xpcom.vcxproj b/plugins/xpcom/VisualStudio/ff35-xpcom.vcxproj
deleted file mode 100644
index eaef50d..0000000
--- a/plugins/xpcom/VisualStudio/ff35-xpcom.vcxproj
+++ /dev/null
@@ -1,275 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{59A0C5AD-DE66-4C6D-9164-86F31308E719}</ProjectGuid>
-    <RootNamespace>ff35-xpcom</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>Static</UseOfMfc>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug35\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug35\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release35\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release35\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\common;..\prebuilt\ff35\include;..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\WINNT_x86-msvc\include;..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF3;BROWSER=ff35;GECKO_VERSION=1901;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <ResourceCompile>
-      <ResourceOutputFileName>$(IntDir)$(TargetName).res</ResourceOutputFileName>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>ws2_32.lib;xpcomglue_s.lib;xpcom.lib;nspr4.lib;js3250.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <ShowProgress>LinkVerboseLib</ShowProgress>
-      <OutputFile>$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff35\xpGwtDevPlugin.dll</OutputFile>
-      <AdditionalLibraryDirectories>..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\WINNT_x86-msvc\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ModuleDefinitionFile>$(ProjectDir)\..\xpGwtDevPlugin.def</ModuleDefinitionFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\common;..\prebuilt\ff35\include;..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\WINNT_x86-msvc\include;..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Warning;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF3;BROWSER=ff35;GECKO_VERSION=1901;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <ResourceCompile>
-      <ResourceOutputFileName>$(IntDir)$(TargetName).res</ResourceOutputFileName>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>ws2_32.lib;xpcomglue_s.lib;xpcom.lib;nspr4.lib;js3250.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <ShowProgress>LinkVerboseLib</ShowProgress>
-      <OutputFile>$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff35\xpGwtDevPlugin.dll</OutputFile>
-      <AdditionalLibraryDirectories>..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\WINNT_x86-msvc\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ModuleDefinitionFile>$(ProjectDir)\..\xpGwtDevPlugin.def</ModuleDefinitionFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClInclude Include="..\ExternalWrapper.h" />
-    <ClInclude Include="..\FFSessionHandler.h" />
-    <ClInclude Include="..\prebuilt\ff35\include\IOOPHM.h" />
-    <ClInclude Include="..\JavaObject.h" />
-    <ClInclude Include="..\JSRunner.h" />
-    <ClInclude Include="..\ModuleOOPHM.h" />
-    <ClInclude Include="..\mozincludes.h" />
-    <ClInclude Include="..\Preferences.h" />
-    <ClInclude Include="..\RootedObject.h" />
-    <ClInclude Include="..\SessionData.h" />
-    <ClInclude Include="..\XpcomDebug.h" />
-    <ClInclude Include="..\..\common\AllowedConnections.h" />
-    <ClInclude Include="..\..\common\BrowserChannel.h" />
-    <ClInclude Include="..\..\common\ByteOrder.h" />
-    <ClInclude Include="..\..\common\CheckVersionsMessage.h" />
-    <ClInclude Include="..\..\common\ChooseTransportMessage.h" />
-    <ClInclude Include="..\..\common\Debug.h" />
-    <ClInclude Include="..\..\common\DebugLevel.h" />
-    <ClInclude Include="..\..\common\FatalErrorMessage.h" />
-    <ClInclude Include="..\..\common\FreeValueMessage.h" />
-    <ClInclude Include="..\..\common\HashMap.h" />
-    <ClInclude Include="..\..\common\HostChannel.h" />
-    <ClInclude Include="..\..\common\InvokeMessage.h" />
-    <ClInclude Include="..\..\common\InvokeSpecialMessage.h" />
-    <ClInclude Include="..\..\common\LoadJsniMessage.h" />
-    <ClInclude Include="..\..\common\LoadModuleMessage.h" />
-    <ClInclude Include="..\..\common\Message.h" />
-    <ClInclude Include="..\..\common\Platform.h" />
-    <ClInclude Include="..\..\common\ProtocolVersionMessage.h" />
-    <ClInclude Include="..\..\common\QuitMessage.h" />
-    <ClInclude Include="..\..\common\ReturnMessage.h" />
-    <ClInclude Include="..\..\common\scoped_ptr\scoped_ptr.h" />
-    <ClInclude Include="..\..\common\ServerMethods.h" />
-    <ClInclude Include="..\..\common\SessionHandler.h" />
-    <ClInclude Include="..\..\common\Socket.h" />
-    <ClInclude Include="..\..\common\SwitchTransportMessage.h" />
-    <ClInclude Include="..\..\common\Value.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jsapi.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jsautocfg.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jscompat.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jsconfig.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\jscpucfg.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jslong.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\jsosdep.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jsotypes.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jspubtd.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jstypes.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jsutil.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\WINNT_x86-msvc\include\mozilla-config.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpconnect\nsAXPCNativeCallContext.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsCOMPtr.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nscore.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nscore.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsCycleCollector.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsDebug.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsError.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\widget\nsEvent.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsICategoryManager.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsIClassInfo.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsIClassInfoImpl.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsIComponentManager.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsID.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsIEnumerator.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsIException.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsIExceptionService.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsIFactory.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsIGenericFactory.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\necko\nsIHttpProtocolHandler.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsIInterfaceInfo.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsIInterfaceInfoManager.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpconnect\nsIJSContextStack.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsIMemory.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsIModule.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\caps\nsIPrincipal.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsIProgrammingLanguage.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\necko\nsIProtocolHandler.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\necko\nsIProxiedProtocolHandler.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpconnect\nsIScriptableInterfaces.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\dom\nsIScriptGlobalObject.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\dom\nsIScriptObjectPrincipal.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\caps\nsISecurityCheckedComponent.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsISerializable.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsIServiceManager.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsISimpleEnumerator.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsISimpleEnumerator.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsISupports.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsISupports.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsISupportsBase.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsISupportsBase.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsISupportsImpl.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsISupportsUtils.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsISupportsUtils.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsIURI.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsIVariant.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpconnect\nsIXPConnect.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsMemory.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\necko\nsNetCID.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsrootidl.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsrootidl.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsServiceManagerUtils.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsStringAPI.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsTraceRefcnt.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsXPCOM.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsXPCOMCID.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsXPCOMStrings.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\pratom.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\prcpucfg.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\prinrval.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\prlock.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\prlog.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\prlong.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\obsolete\protypes.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\prthread.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\prtime.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\prtypes.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpconnect\xpccomponents.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpconnect\xpcexception.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpconnect\xpcjsid.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\WINNT_x86-msvc\include\xpcom-config.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\xpt_arena.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\xpt_struct.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\xptinfo.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jsproto.tbl" />
-    <None Include="..\xpGwtDevPlugin.def" />
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="..\xpGwtDevPlugin.rc" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\ExternalWrapper.cpp" />
-    <ClCompile Include="..\FFSessionHandler.cpp" />
-    <ClCompile Include="..\JavaObject.cpp" />
-    <ClCompile Include="..\JSRunner.cpp" />
-    <ClCompile Include="..\ModuleOOPHM.cpp">
-      <PreprocessToFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</PreprocessToFile>
-      <PreprocessSuppressLineNumbers Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</PreprocessSuppressLineNumbers>
-    </ClCompile>
-    <ClCompile Include="..\Preferences.cpp" />
-    <ClCompile Include="..\XpcomDebug.cpp" />
-    <ClCompile Include="..\..\common\AllowedConnections.cpp" />
-    <ClCompile Include="..\..\common\CheckVersionsMessage.cpp" />
-    <ClCompile Include="..\..\common\ChooseTransportMessage.cpp" />
-    <ClCompile Include="..\..\common\Debug.cpp" />
-    <ClCompile Include="..\..\common\FatalErrorMessage.cpp" />
-    <ClCompile Include="..\..\common\FreeValueMessage.cpp" />
-    <ClCompile Include="..\..\common\HostChannel.cpp" />
-    <ClCompile Include="..\..\common\InvokeMessage.cpp" />
-    <ClCompile Include="..\..\common\InvokeSpecialMessage.cpp" />
-    <ClCompile Include="..\..\common\LoadJsniMessage.cpp" />
-    <ClCompile Include="..\..\common\LoadModuleMessage.cpp" />
-    <ClCompile Include="..\..\common\ProtocolVersionMessage.cpp" />
-    <ClCompile Include="..\..\common\ReturnMessage.cpp" />
-    <ClCompile Include="..\..\common\ServerMethods.cpp" />
-    <ClCompile Include="..\..\common\Socket.cpp" />
-    <ClCompile Include="..\..\common\SwitchTransportMessage.cpp" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/plugins/xpcom/VisualStudio/ff35-xpcom.vcxproj.filters b/plugins/xpcom/VisualStudio/ff35-xpcom.vcxproj.filters
deleted file mode 100644
index ce2cab8..0000000
--- a/plugins/xpcom/VisualStudio/ff35-xpcom.vcxproj.filters
+++ /dev/null
@@ -1,478 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Header Files\common">
-      <UniqueIdentifier>{4f18743c-59fe-408a-91e9-dc3d52dcdb5f}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Header Files\gecko">
-      <UniqueIdentifier>{df580225-cf8c-4a43-b99e-1fe657ff5722}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Resource Files">
-      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
-      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx</Extensions>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Source Files\common">
-      <UniqueIdentifier>{a894e408-3d66-4e63-ac34-51c4a524cfd4}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\ExternalWrapper.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\FFSessionHandler.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\prebuilt\ff35\include\IOOPHM.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\JavaObject.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\JSRunner.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\ModuleOOPHM.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\mozincludes.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\Preferences.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\RootedObject.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\SessionData.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\XpcomDebug.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\AllowedConnections.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\BrowserChannel.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\ByteOrder.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\CheckVersionsMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\ChooseTransportMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\Debug.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\DebugLevel.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\FatalErrorMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\FreeValueMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\HashMap.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\HostChannel.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\InvokeMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\InvokeSpecialMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\LoadJsniMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\LoadModuleMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\Message.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\Platform.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\ProtocolVersionMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\QuitMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\ReturnMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\scoped_ptr\scoped_ptr.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\ServerMethods.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\SessionHandler.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\Socket.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\SwitchTransportMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\Value.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jsapi.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jsautocfg.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jscompat.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jsconfig.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\jscpucfg.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jslong.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\jsosdep.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jsotypes.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jspubtd.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jstypes.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jsutil.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\WINNT_x86-msvc\include\mozilla-config.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpconnect\nsAXPCNativeCallContext.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsCOMPtr.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nscore.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nscore.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsCycleCollector.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsDebug.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsError.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\widget\nsEvent.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsICategoryManager.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsIClassInfo.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsIClassInfoImpl.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsIComponentManager.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsID.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsIEnumerator.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsIException.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsIExceptionService.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsIFactory.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsIGenericFactory.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\necko\nsIHttpProtocolHandler.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsIInterfaceInfo.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsIInterfaceInfoManager.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpconnect\nsIJSContextStack.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsIMemory.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsIModule.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\caps\nsIPrincipal.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsIProgrammingLanguage.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\necko\nsIProtocolHandler.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\necko\nsIProxiedProtocolHandler.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpconnect\nsIScriptableInterfaces.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\dom\nsIScriptGlobalObject.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\dom\nsIScriptObjectPrincipal.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\caps\nsISecurityCheckedComponent.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsISerializable.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsIServiceManager.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsISimpleEnumerator.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsISimpleEnumerator.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsISupports.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsISupports.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsISupportsBase.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsISupportsBase.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsISupportsImpl.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsISupportsUtils.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsISupportsUtils.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsIURI.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsIVariant.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpconnect\nsIXPConnect.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsMemory.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\necko\nsNetCID.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\nsrootidl.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsrootidl.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsServiceManagerUtils.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsStringAPI.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsTraceRefcnt.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsXPCOM.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsXPCOMCID.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\nsXPCOMStrings.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\pratom.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\prcpucfg.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\prinrval.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\prlock.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\prlog.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\prlong.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\obsolete\protypes.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\prthread.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\prtime.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\prtypes.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpconnect\xpccomponents.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpconnect\xpcexception.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpconnect\xpcjsid.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\WINNT_x86-msvc\include\xpcom-config.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\xpt_arena.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\xpt_struct.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\xpcom\xptinfo.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.1\include\js\jsproto.tbl">
-      <Filter>Header Files\gecko</Filter>
-    </None>
-    <None Include="..\xpGwtDevPlugin.def">
-      <Filter>Source Files</Filter>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="..\xpGwtDevPlugin.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\ExternalWrapper.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\FFSessionHandler.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\JavaObject.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\JSRunner.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\ModuleOOPHM.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\Preferences.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\XpcomDebug.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\AllowedConnections.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\CheckVersionsMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\ChooseTransportMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\Debug.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\FatalErrorMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\FreeValueMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\HostChannel.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\InvokeMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\InvokeSpecialMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\LoadJsniMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\LoadModuleMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\ProtocolVersionMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\ReturnMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\ServerMethods.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\Socket.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\SwitchTransportMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/plugins/xpcom/VisualStudio/ff36-xpcom.vcproj b/plugins/xpcom/VisualStudio/ff36-xpcom.vcproj
deleted file mode 100644
index f1667a1..0000000
--- a/plugins/xpcom/VisualStudio/ff36-xpcom.vcproj
+++ /dev/null
@@ -1,849 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="ff36-xpcom"
-	ProjectGUID="{37692217-C7AD-4FA9-A588-DDC11E17D925}"
-	RootNamespace="ff36-xpcom"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Debug36"
-			IntermediateDirectory="Debug36"
-			ConfigurationType="2"
-			UseOfMFC="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff36\include;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\WINNT_x86-msvc\include&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include&quot;"
-				PreprocessorDefinitions="WIN32;_DEBUG;NDEBUG;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Warning;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF3;BROWSER=ff36;GECKO_VERSION=1910"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				TreatWChar_tAsBuiltInType="false"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib xpcomglue_s.lib xpcom.lib nspr4.lib js3250.lib"
-				ShowProgress="2"
-				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff36\xpGwtDevPlugin.dll"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\WINNT_x86-msvc\lib&quot;"
-				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
-				SubSystem="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(IntDir)\$(TargetName).lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Release36"
-			IntermediateDirectory="Release36"
-			ConfigurationType="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="3"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff36\include;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\WINNT_x86-msvc\include&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include&quot;"
-				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Warning;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF3;BROWSER=ff36;GECKO_VERSION=1910"
-				ExceptionHandling="1"
-				RuntimeLibrary="0"
-				TreatWChar_tAsBuiltInType="false"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib xpcomglue_s.lib xpcom.lib nspr4.lib js3250.lib"
-				ShowProgress="2"
-				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff36\xpGwtDevPlugin.dll"
-				LinkIncremental="0"
-				AdditionalLibraryDirectories="&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\WINNT_x86-msvc\lib&quot;"
-				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(IntDir)\$(TargetName).lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\ExternalWrapper.h"
-				>
-			</File>
-			<File
-				RelativePath="..\FFSessionHandler.h"
-				>
-			</File>
-			<File
-				RelativePath="..\prebuilt\ff36\include\IOOPHM.h"
-				>
-			</File>
-			<File
-				RelativePath="..\JavaObject.h"
-				>
-			</File>
-			<File
-				RelativePath="..\JSRunner.h"
-				>
-			</File>
-			<File
-				RelativePath="..\ModuleOOPHM.h"
-				>
-			</File>
-			<File
-				RelativePath="..\mozincludes.h"
-				>
-			</File>
-			<File
-				RelativePath="..\Preferences.h"
-				>
-			</File>
-			<File
-				RelativePath="..\RootedObject.h"
-				>
-			</File>
-			<File
-				RelativePath="..\SessionData.h"
-				>
-			</File>
-			<File
-				RelativePath="..\XpcomDebug.h"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\common\AllowedConnections.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\BrowserChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ByteOrder.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\CheckVersionsMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ChooseTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Debug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\DebugLevel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FatalErrorMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FreeValueMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HashMap.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HostChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeSpecialMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadJsniMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadModuleMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Message.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Platform.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ProtocolVersionMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\QuitMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ReturnMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\scoped_ptr\scoped_ptr.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ServerMethods.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SessionHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Socket.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SwitchTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Value.h"
-					>
-				</File>
-			</Filter>
-			<Filter
-				Name="gecko"
-				>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\WINNT_x86-msvc\include\js-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jsapi.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jsautocfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jscompat.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jsconfig.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\WINNT_x86-msvc\include\jscpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\jscpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\jsinttypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jslong.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\jsosdep.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jsotypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jsproto.tbl"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jspubtd.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jstypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\WINNT_x86-msvc\include\mozilla-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpconnect\nsAXPCNativeCallContext.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsCOMPtr.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nscore.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nscore.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsCycleCollector.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsDebug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsError.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\widget\nsEvent.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsICategoryManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsIClassInfo.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsIClassInfoImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsIComponentManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsIEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsIException.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsIExceptionService.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsIFactory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsIGenericFactory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\necko\nsIHttpProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsIInterfaceInfo.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsIInterfaceInfoManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpconnect\nsIJSContextStack.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsIMemory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsIModule.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\caps\nsIPrincipal.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsIProgrammingLanguage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\necko\nsIProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\necko\nsIProxiedProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpconnect\nsIScriptableInterfaces.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\dom\nsIScriptGlobalObject.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\dom\nsIScriptObjectPrincipal.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\caps\nsISecurityCheckedComponent.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsISerializable.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsIServiceManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsISimpleEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsISimpleEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsISupports.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsISupports.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsISupportsBase.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsISupportsBase.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsISupportsImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsISupportsUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsISupportsUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsIURI.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsIVariant.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpconnect\nsIXPConnect.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsMemory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\necko\nsNetCID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsrootidl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsrootidl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsServiceManagerUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsStringAPI.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsTraceRefcnt.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsXPCOM.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsXPCOMCID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsXPCOMStrings.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\pratom.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\prcpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\prinrval.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\prlock.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\prlog.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\prlong.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\obsolete\protypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\prthread.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\prtime.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\prtypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpconnect\xpccomponents.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpconnect\xpcexception.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpconnect\xpcjsid.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\WINNT_x86-msvc\include\xpcom-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\xpt_arena.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\xpt_struct.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\xptinfo.h"
-					>
-				</File>
-			</Filter>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-			<File
-				RelativePath="..\xpGwtDevPlugin.rc"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\ExternalWrapper.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\FFSessionHandler.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\JavaObject.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\JSRunner.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\ModuleOOPHM.cpp"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						GeneratePreprocessedFile="0"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\Preferences.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\XpcomDebug.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\xpGwtDevPlugin.def"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\common\AllowedConnections.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\CheckVersionsMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ChooseTransportMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Debug.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FatalErrorMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FreeValueMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HostChannel.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeSpecialMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadJsniMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadModuleMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ProtocolVersionMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ReturnMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ServerMethods.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Socket.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SwitchTransportMessage.cpp"
-					>
-				</File>
-			</Filter>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/plugins/xpcom/VisualStudio/ff36-xpcom.vcxproj b/plugins/xpcom/VisualStudio/ff36-xpcom.vcxproj
deleted file mode 100644
index d00b934..0000000
--- a/plugins/xpcom/VisualStudio/ff36-xpcom.vcxproj
+++ /dev/null
@@ -1,278 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{37692217-C7AD-4FA9-A588-DDC11E17D925}</ProjectGuid>
-    <RootNamespace>ff36-xpcom</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>Static</UseOfMfc>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug36\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug36\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release36\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release36\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\common;..\prebuilt\ff36\include;..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\WINNT_x86-msvc\include;..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;NDEBUG;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Warning;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF3;BROWSER=ff36;GECKO_VERSION=1910;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <ResourceCompile>
-      <ResourceOutputFileName>$(IntDir)$(TargetName).res</ResourceOutputFileName>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>ws2_32.lib;xpcomglue_s.lib;xpcom.lib;nspr4.lib;js3250.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <ShowProgress>LinkVerboseLib</ShowProgress>
-      <OutputFile>$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff36\xpGwtDevPlugin.dll</OutputFile>
-      <AdditionalLibraryDirectories>..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\WINNT_x86-msvc\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ModuleDefinitionFile>$(ProjectDir)\..\xpGwtDevPlugin.def</ModuleDefinitionFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\common;..\prebuilt\ff36\include;..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\WINNT_x86-msvc\include;..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Warning;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF3;BROWSER=ff36;GECKO_VERSION=1910;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <ResourceCompile>
-      <ResourceOutputFileName>$(IntDir)$(TargetName).res</ResourceOutputFileName>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>ws2_32.lib;xpcomglue_s.lib;xpcom.lib;nspr4.lib;js3250.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <ShowProgress>LinkVerboseLib</ShowProgress>
-      <OutputFile>$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff36\xpGwtDevPlugin.dll</OutputFile>
-      <AdditionalLibraryDirectories>..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\WINNT_x86-msvc\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ModuleDefinitionFile>$(ProjectDir)\..\xpGwtDevPlugin.def</ModuleDefinitionFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClInclude Include="..\ExternalWrapper.h" />
-    <ClInclude Include="..\FFSessionHandler.h" />
-    <ClInclude Include="..\prebuilt\ff36\include\IOOPHM.h" />
-    <ClInclude Include="..\JavaObject.h" />
-    <ClInclude Include="..\JSRunner.h" />
-    <ClInclude Include="..\ModuleOOPHM.h" />
-    <ClInclude Include="..\mozincludes.h" />
-    <ClInclude Include="..\Preferences.h" />
-    <ClInclude Include="..\RootedObject.h" />
-    <ClInclude Include="..\SessionData.h" />
-    <ClInclude Include="..\XpcomDebug.h" />
-    <ClInclude Include="..\..\common\AllowedConnections.h" />
-    <ClInclude Include="..\..\common\BrowserChannel.h" />
-    <ClInclude Include="..\..\common\ByteOrder.h" />
-    <ClInclude Include="..\..\common\CheckVersionsMessage.h" />
-    <ClInclude Include="..\..\common\ChooseTransportMessage.h" />
-    <ClInclude Include="..\..\common\Debug.h" />
-    <ClInclude Include="..\..\common\DebugLevel.h" />
-    <ClInclude Include="..\..\common\FatalErrorMessage.h" />
-    <ClInclude Include="..\..\common\FreeValueMessage.h" />
-    <ClInclude Include="..\..\common\HashMap.h" />
-    <ClInclude Include="..\..\common\HostChannel.h" />
-    <ClInclude Include="..\..\common\InvokeMessage.h" />
-    <ClInclude Include="..\..\common\InvokeSpecialMessage.h" />
-    <ClInclude Include="..\..\common\LoadJsniMessage.h" />
-    <ClInclude Include="..\..\common\LoadModuleMessage.h" />
-    <ClInclude Include="..\..\common\Message.h" />
-    <ClInclude Include="..\..\common\Platform.h" />
-    <ClInclude Include="..\..\common\ProtocolVersionMessage.h" />
-    <ClInclude Include="..\..\common\QuitMessage.h" />
-    <ClInclude Include="..\..\common\ReturnMessage.h" />
-    <ClInclude Include="..\..\common\scoped_ptr\scoped_ptr.h" />
-    <ClInclude Include="..\..\common\ServerMethods.h" />
-    <ClInclude Include="..\..\common\SessionHandler.h" />
-    <ClInclude Include="..\..\common\Socket.h" />
-    <ClInclude Include="..\..\common\SwitchTransportMessage.h" />
-    <ClInclude Include="..\..\common\Value.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\WINNT_x86-msvc\include\js-config.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jsapi.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jsautocfg.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jscompat.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jsconfig.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\WINNT_x86-msvc\include\jscpucfg.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\jscpucfg.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\jsinttypes.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jslong.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\jsosdep.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jsotypes.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jspubtd.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jstypes.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jsutil.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\WINNT_x86-msvc\include\mozilla-config.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpconnect\nsAXPCNativeCallContext.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsCOMPtr.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nscore.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nscore.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsCycleCollector.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsDebug.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsError.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\widget\nsEvent.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsICategoryManager.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsIClassInfo.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsIClassInfoImpl.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsIComponentManager.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsID.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsIEnumerator.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsIException.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsIExceptionService.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsIFactory.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsIGenericFactory.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\necko\nsIHttpProtocolHandler.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsIInterfaceInfo.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsIInterfaceInfoManager.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpconnect\nsIJSContextStack.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsIMemory.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsIModule.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\caps\nsIPrincipal.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsIProgrammingLanguage.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\necko\nsIProtocolHandler.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\necko\nsIProxiedProtocolHandler.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpconnect\nsIScriptableInterfaces.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\dom\nsIScriptGlobalObject.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\dom\nsIScriptObjectPrincipal.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\caps\nsISecurityCheckedComponent.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsISerializable.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsIServiceManager.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsISimpleEnumerator.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsISimpleEnumerator.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsISupports.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsISupports.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsISupportsBase.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsISupportsBase.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsISupportsImpl.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsISupportsUtils.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsISupportsUtils.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsIURI.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsIVariant.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpconnect\nsIXPConnect.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsMemory.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\necko\nsNetCID.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsrootidl.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsrootidl.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsServiceManagerUtils.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsStringAPI.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsTraceRefcnt.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsXPCOM.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsXPCOMCID.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsXPCOMStrings.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\pratom.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\prcpucfg.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\prinrval.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\prlock.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\prlog.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\prlong.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\obsolete\protypes.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\prthread.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\prtime.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\prtypes.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpconnect\xpccomponents.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpconnect\xpcexception.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpconnect\xpcjsid.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\WINNT_x86-msvc\include\xpcom-config.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\xpt_arena.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\xpt_struct.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\xptinfo.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jsproto.tbl" />
-    <None Include="..\xpGwtDevPlugin.def" />
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="..\xpGwtDevPlugin.rc" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\ExternalWrapper.cpp" />
-    <ClCompile Include="..\FFSessionHandler.cpp" />
-    <ClCompile Include="..\JavaObject.cpp" />
-    <ClCompile Include="..\JSRunner.cpp" />
-    <ClCompile Include="..\ModuleOOPHM.cpp">
-      <PreprocessToFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</PreprocessToFile>
-      <PreprocessSuppressLineNumbers Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</PreprocessSuppressLineNumbers>
-    </ClCompile>
-    <ClCompile Include="..\Preferences.cpp" />
-    <ClCompile Include="..\XpcomDebug.cpp" />
-    <ClCompile Include="..\..\common\AllowedConnections.cpp" />
-    <ClCompile Include="..\..\common\CheckVersionsMessage.cpp" />
-    <ClCompile Include="..\..\common\ChooseTransportMessage.cpp" />
-    <ClCompile Include="..\..\common\Debug.cpp" />
-    <ClCompile Include="..\..\common\FatalErrorMessage.cpp" />
-    <ClCompile Include="..\..\common\FreeValueMessage.cpp" />
-    <ClCompile Include="..\..\common\HostChannel.cpp" />
-    <ClCompile Include="..\..\common\InvokeMessage.cpp" />
-    <ClCompile Include="..\..\common\InvokeSpecialMessage.cpp" />
-    <ClCompile Include="..\..\common\LoadJsniMessage.cpp" />
-    <ClCompile Include="..\..\common\LoadModuleMessage.cpp" />
-    <ClCompile Include="..\..\common\ProtocolVersionMessage.cpp" />
-    <ClCompile Include="..\..\common\ReturnMessage.cpp" />
-    <ClCompile Include="..\..\common\ServerMethods.cpp" />
-    <ClCompile Include="..\..\common\Socket.cpp" />
-    <ClCompile Include="..\..\common\SwitchTransportMessage.cpp" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/plugins/xpcom/VisualStudio/ff36-xpcom.vcxproj.filters b/plugins/xpcom/VisualStudio/ff36-xpcom.vcxproj.filters
deleted file mode 100644
index 4e8e2db..0000000
--- a/plugins/xpcom/VisualStudio/ff36-xpcom.vcxproj.filters
+++ /dev/null
@@ -1,487 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Header Files\common">
-      <UniqueIdentifier>{f5a3dd15-8632-44d4-9eae-08d8ce7f6140}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Header Files\gecko">
-      <UniqueIdentifier>{7e144492-1e7b-48d4-8fd9-027f5d1d157d}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Resource Files">
-      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
-      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx</Extensions>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Source Files\common">
-      <UniqueIdentifier>{b9a8c71b-0d6b-43ae-9af8-53dc254d84e0}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\ExternalWrapper.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\FFSessionHandler.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\prebuilt\ff36\include\IOOPHM.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\JavaObject.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\JSRunner.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\ModuleOOPHM.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\mozincludes.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\Preferences.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\RootedObject.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\SessionData.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\XpcomDebug.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\AllowedConnections.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\BrowserChannel.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\ByteOrder.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\CheckVersionsMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\ChooseTransportMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\Debug.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\DebugLevel.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\FatalErrorMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\FreeValueMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\HashMap.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\HostChannel.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\InvokeMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\InvokeSpecialMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\LoadJsniMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\LoadModuleMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\Message.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\Platform.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\ProtocolVersionMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\QuitMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\ReturnMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\scoped_ptr\scoped_ptr.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\ServerMethods.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\SessionHandler.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\Socket.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\SwitchTransportMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\Value.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\WINNT_x86-msvc\include\js-config.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jsapi.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jsautocfg.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jscompat.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jsconfig.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\WINNT_x86-msvc\include\jscpucfg.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\jscpucfg.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\jsinttypes.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jslong.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\jsosdep.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jsotypes.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jspubtd.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jstypes.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jsutil.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\WINNT_x86-msvc\include\mozilla-config.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpconnect\nsAXPCNativeCallContext.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsCOMPtr.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nscore.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nscore.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsCycleCollector.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsDebug.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsError.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\widget\nsEvent.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsICategoryManager.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsIClassInfo.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsIClassInfoImpl.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsIComponentManager.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsID.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsIEnumerator.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsIException.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsIExceptionService.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsIFactory.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsIGenericFactory.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\necko\nsIHttpProtocolHandler.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsIInterfaceInfo.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsIInterfaceInfoManager.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpconnect\nsIJSContextStack.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsIMemory.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsIModule.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\caps\nsIPrincipal.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsIProgrammingLanguage.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\necko\nsIProtocolHandler.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\necko\nsIProxiedProtocolHandler.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpconnect\nsIScriptableInterfaces.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\dom\nsIScriptGlobalObject.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\dom\nsIScriptObjectPrincipal.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\caps\nsISecurityCheckedComponent.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsISerializable.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsIServiceManager.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsISimpleEnumerator.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsISimpleEnumerator.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsISupports.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsISupports.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsISupportsBase.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsISupportsBase.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsISupportsImpl.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsISupportsUtils.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsISupportsUtils.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsIURI.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsIVariant.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpconnect\nsIXPConnect.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsMemory.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\necko\nsNetCID.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\nsrootidl.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsrootidl.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsServiceManagerUtils.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsStringAPI.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsTraceRefcnt.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsXPCOM.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsXPCOMCID.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\nsXPCOMStrings.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\pratom.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\prcpucfg.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\prinrval.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\prlock.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\prlog.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\prlong.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\obsolete\protypes.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\prthread.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\prtime.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\prtypes.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpconnect\xpccomponents.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpconnect\xpcexception.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpconnect\xpcjsid.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\WINNT_x86-msvc\include\xpcom-config.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\xpt_arena.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\xpt_struct.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\xpcom\xptinfo.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-1.9.2\include\js\jsproto.tbl">
-      <Filter>Header Files\gecko</Filter>
-    </None>
-    <None Include="..\xpGwtDevPlugin.def">
-      <Filter>Source Files</Filter>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="..\xpGwtDevPlugin.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\ExternalWrapper.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\FFSessionHandler.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\JavaObject.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\JSRunner.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\ModuleOOPHM.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\Preferences.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\XpcomDebug.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\AllowedConnections.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\CheckVersionsMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\ChooseTransportMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\Debug.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\FatalErrorMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\FreeValueMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\HostChannel.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\InvokeMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\InvokeSpecialMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\LoadJsniMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\LoadModuleMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\ProtocolVersionMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\ReturnMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\ServerMethods.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\Socket.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\SwitchTransportMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/plugins/xpcom/VisualStudio/ff40-xpcom.vcproj b/plugins/xpcom/VisualStudio/ff40-xpcom.vcproj
deleted file mode 100644
index 2821a53..0000000
--- a/plugins/xpcom/VisualStudio/ff40-xpcom.vcproj
+++ /dev/null
@@ -1,845 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="ff40-xpcom"
-	ProjectGUID="{6BF0C2CE-CB0C-421B-A67C-1E448371D24D}"
-	RootNamespace="ff40-xpcom"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Debug40"
-			IntermediateDirectory="Debug40"
-			ConfigurationType="2"
-			UseOfMFC="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff40\include;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\mozilla&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\WINNT_x86-msvc\include&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpconnect&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\WINNT_x86-msvc\include&quot;"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF4;GECKO_VERSION=2000"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				TreatWChar_tAsBuiltInType="false"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib Advapi32.lib xpcomglue_s.lib xpcom.lib nspr4.lib mozalloc.lib xul.lib mozjs.lib"
-				ShowProgress="2"
-				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff40\xpGwtDevPlugin.dll"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\WINNT_x86-msvc\lib&quot;"
-				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
-				SubSystem="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(IntDir)\$(TargetName).lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Release40"
-			IntermediateDirectory="Release40"
-			ConfigurationType="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="3"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff40\include;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\mozilla&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\WINNT_x86-msvc\include&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpconnect&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\WINNT_x86-msvc\include&quot;"
-				PreprocessorDefinitions="WIN32;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF4;GECKO_VERSION=2000;$(NOINHERIT)"
-				ExceptionHandling="1"
-				RuntimeLibrary="0"
-				TreatWChar_tAsBuiltInType="false"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib Advapi32.lib xpcomglue_s.lib xpcom.lib nspr4.lib mozalloc.lib xul.lib mozjs.lib"
-				ShowProgress="2"
-				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff40\xpGwtDevPlugin.dll"
-				LinkIncremental="0"
-				AdditionalLibraryDirectories="&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\WINNT_x86-msvc\lib&quot;"
-				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(IntDir)\$(TargetName).lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\ExternalWrapper.h"
-				>
-			</File>
-			<File
-				RelativePath="..\FFSessionHandler.h"
-				>
-			</File>
-			<File
-				RelativePath="..\prebuilt\ff40\include\IOOPHM.h"
-				>
-			</File>
-			<File
-				RelativePath="..\JavaObject.h"
-				>
-			</File>
-			<File
-				RelativePath="..\JSRunner.h"
-				>
-			</File>
-			<File
-				RelativePath="..\mozincludes.h"
-				>
-			</File>
-			<File
-				RelativePath="..\Preferences.h"
-				>
-			</File>
-			<File
-				RelativePath="..\RootedObject.h"
-				>
-			</File>
-			<File
-				RelativePath="..\SessionData.h"
-				>
-			</File>
-			<File
-				RelativePath="..\XpcomDebug.h"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\common\AllowedConnections.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\BrowserChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ByteOrder.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\CheckVersionsMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ChooseTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Debug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\DebugLevel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FatalErrorMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FreeValueMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HashMap.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HostChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeSpecialMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadJsniMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadModuleMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Message.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Platform.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ProtocolVersionMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\QuitMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ReturnMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\scoped_ptr\scoped_ptr.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ServerMethods.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SessionHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Socket.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SwitchTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Value.h"
-					>
-				</File>
-			</Filter>
-			<Filter
-				Name="gecko"
-				>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\WINNT_x86-msvc\include\js-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jsapi.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jsautocfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jscompat.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jsconfig.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\WINNT_x86-msvc\include\jscpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\jscpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\jsinttypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jslong.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\jsosdep.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jsotypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jsproto.tbl"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jspubtd.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jstypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\WINNT_x86-msvc\include\mozilla-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpconnect\nsAXPCNativeCallContext.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsCOMPtr.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nscore.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nscore.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsCycleCollector.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsDebug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsError.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\widget\nsEvent.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsICategoryManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsIClassInfo.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsIClassInfoImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsIComponentManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsIEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsIException.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsIExceptionService.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsIFactory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsIGenericFactory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\necko\nsIHttpProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsIInterfaceInfo.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsIInterfaceInfoManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpconnect\nsIJSContextStack.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsIMemory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsIModule.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\caps\nsIPrincipal.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsIProgrammingLanguage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\necko\nsIProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\necko\nsIProxiedProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpconnect\nsIScriptableInterfaces.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\dom\nsIScriptGlobalObject.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\dom\nsIScriptObjectPrincipal.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\caps\nsISecurityCheckedComponent.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsISerializable.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsIServiceManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsISimpleEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsISimpleEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsISupports.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsISupports.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsISupportsBase.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsISupportsBase.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsISupportsImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsISupportsUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsISupportsUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsIURI.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsIVariant.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpconnect\nsIXPConnect.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsMemory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\necko\nsNetCID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsrootidl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsrootidl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsServiceManagerUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsStringAPI.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsTraceRefcnt.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsXPCOM.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsXPCOMCID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsXPCOMStrings.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\pratom.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\prcpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\prinrval.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\prlock.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\prlog.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\prlong.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\obsolete\protypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\prthread.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\prtime.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\prtypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpconnect\xpccomponents.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpconnect\xpcexception.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpconnect\xpcjsid.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\WINNT_x86-msvc\include\xpcom-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\xpt_arena.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\xpt_struct.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\xptinfo.h"
-					>
-				</File>
-			</Filter>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-			<File
-				RelativePath="..\xpGwtDevPlugin.rc"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\ExternalWrapper.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\FFSessionHandler.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\JavaObject.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\JSRunner.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\ModuleOOPHM.cpp"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						GeneratePreprocessedFile="0"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\Preferences.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\XpcomDebug.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\xpGwtDevPlugin.def"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\common\AllowedConnections.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\CheckVersionsMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ChooseTransportMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Debug.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FatalErrorMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FreeValueMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HostChannel.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeSpecialMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadJsniMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadModuleMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ProtocolVersionMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ReturnMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ServerMethods.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Socket.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SwitchTransportMessage.cpp"
-					>
-				</File>
-			</Filter>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/plugins/xpcom/VisualStudio/ff40-xpcom.vcxproj b/plugins/xpcom/VisualStudio/ff40-xpcom.vcxproj
deleted file mode 100644
index 97a2154..0000000
--- a/plugins/xpcom/VisualStudio/ff40-xpcom.vcxproj
+++ /dev/null
@@ -1,277 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{6BF0C2CE-CB0C-421B-A67C-1E448371D24D}</ProjectGuid>
-    <RootNamespace>ff40-xpcom</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>Static</UseOfMfc>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug40\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug40\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release40\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release40\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\common;..\prebuilt\ff40\include;..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\WINNT_x86-msvc\include;..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include;..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\mozilla;..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpconnect;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF4;GECKO_VERSION=2000;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <ResourceCompile>
-      <ResourceOutputFileName>$(IntDir)$(TargetName).res</ResourceOutputFileName>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>ws2_32.lib;Advapi32.lib;xpcomglue_s.lib;xpcom.lib;nspr4.lib;mozalloc.lib;xul.lib;mozjs.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <ShowProgress>LinkVerboseLib</ShowProgress>
-      <OutputFile>$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff40\xpGwtDevPlugin.dll</OutputFile>
-      <AdditionalLibraryDirectories>..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\WINNT_x86-msvc\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ModuleDefinitionFile>$(ProjectDir)\..\xpGwtDevPlugin.def</ModuleDefinitionFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\common;..\prebuilt\ff40\include;..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\WINNT_x86-msvc\include;..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include;..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\mozilla;..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpconnect;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF4;GECKO_VERSION=2000</PreprocessorDefinitions>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <ResourceCompile>
-      <ResourceOutputFileName>$(IntDir)$(TargetName).res</ResourceOutputFileName>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>ws2_32.lib;Advapi32.lib;xpcomglue_s.lib;xpcom.lib;nspr4.lib;mozalloc.lib;xul.lib;mozjs.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <ShowProgress>LinkVerboseLib</ShowProgress>
-      <OutputFile>$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff40\xpGwtDevPlugin.dll</OutputFile>
-      <AdditionalLibraryDirectories>..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\WINNT_x86-msvc\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ModuleDefinitionFile>$(ProjectDir)\..\xpGwtDevPlugin.def</ModuleDefinitionFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClInclude Include="..\ExternalWrapper.h" />
-    <ClInclude Include="..\FFSessionHandler.h" />
-    <ClInclude Include="..\prebuilt\ff40\include\IOOPHM.h" />
-    <ClInclude Include="..\JavaObject.h" />
-    <ClInclude Include="..\JSRunner.h" />
-    <ClInclude Include="..\mozincludes.h" />
-    <ClInclude Include="..\Preferences.h" />
-    <ClInclude Include="..\RootedObject.h" />
-    <ClInclude Include="..\SessionData.h" />
-    <ClInclude Include="..\XpcomDebug.h" />
-    <ClInclude Include="..\..\common\AllowedConnections.h" />
-    <ClInclude Include="..\..\common\BrowserChannel.h" />
-    <ClInclude Include="..\..\common\ByteOrder.h" />
-    <ClInclude Include="..\..\common\CheckVersionsMessage.h" />
-    <ClInclude Include="..\..\common\ChooseTransportMessage.h" />
-    <ClInclude Include="..\..\common\Debug.h" />
-    <ClInclude Include="..\..\common\DebugLevel.h" />
-    <ClInclude Include="..\..\common\FatalErrorMessage.h" />
-    <ClInclude Include="..\..\common\FreeValueMessage.h" />
-    <ClInclude Include="..\..\common\HashMap.h" />
-    <ClInclude Include="..\..\common\HostChannel.h" />
-    <ClInclude Include="..\..\common\InvokeMessage.h" />
-    <ClInclude Include="..\..\common\InvokeSpecialMessage.h" />
-    <ClInclude Include="..\..\common\LoadJsniMessage.h" />
-    <ClInclude Include="..\..\common\LoadModuleMessage.h" />
-    <ClInclude Include="..\..\common\Message.h" />
-    <ClInclude Include="..\..\common\Platform.h" />
-    <ClInclude Include="..\..\common\ProtocolVersionMessage.h" />
-    <ClInclude Include="..\..\common\QuitMessage.h" />
-    <ClInclude Include="..\..\common\ReturnMessage.h" />
-    <ClInclude Include="..\..\common\scoped_ptr\scoped_ptr.h" />
-    <ClInclude Include="..\..\common\ServerMethods.h" />
-    <ClInclude Include="..\..\common\SessionHandler.h" />
-    <ClInclude Include="..\..\common\Socket.h" />
-    <ClInclude Include="..\..\common\SwitchTransportMessage.h" />
-    <ClInclude Include="..\..\common\Value.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\WINNT_x86-msvc\include\js-config.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jsapi.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jsautocfg.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jscompat.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jsconfig.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\WINNT_x86-msvc\include\jscpucfg.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\jscpucfg.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\jsinttypes.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jslong.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\jsosdep.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jsotypes.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jspubtd.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jstypes.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jsutil.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\WINNT_x86-msvc\include\mozilla-config.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpconnect\nsAXPCNativeCallContext.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsCOMPtr.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nscore.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nscore.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsCycleCollector.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsDebug.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsError.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\widget\nsEvent.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsICategoryManager.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsIClassInfo.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsIClassInfoImpl.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsIComponentManager.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsID.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsIEnumerator.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsIException.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsIExceptionService.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsIFactory.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsIGenericFactory.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\necko\nsIHttpProtocolHandler.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsIInterfaceInfo.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsIInterfaceInfoManager.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpconnect\nsIJSContextStack.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsIMemory.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsIModule.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\caps\nsIPrincipal.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsIProgrammingLanguage.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\necko\nsIProtocolHandler.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\necko\nsIProxiedProtocolHandler.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpconnect\nsIScriptableInterfaces.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\dom\nsIScriptGlobalObject.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\dom\nsIScriptObjectPrincipal.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\caps\nsISecurityCheckedComponent.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsISerializable.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsIServiceManager.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsISimpleEnumerator.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsISimpleEnumerator.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsISupports.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsISupports.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsISupportsBase.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsISupportsBase.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsISupportsImpl.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsISupportsUtils.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsISupportsUtils.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsIURI.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsIVariant.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpconnect\nsIXPConnect.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsMemory.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\necko\nsNetCID.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsrootidl.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsrootidl.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsServiceManagerUtils.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsStringAPI.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsTraceRefcnt.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsXPCOM.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsXPCOMCID.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsXPCOMStrings.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\pratom.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\prcpucfg.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\prinrval.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\prlock.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\prlog.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\prlong.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\obsolete\protypes.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\prthread.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\prtime.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\prtypes.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpconnect\xpccomponents.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpconnect\xpcexception.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpconnect\xpcjsid.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\WINNT_x86-msvc\include\xpcom-config.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\xpt_arena.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\xpt_struct.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\xptinfo.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jsproto.tbl" />
-    <None Include="..\xpGwtDevPlugin.def" />
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="..\xpGwtDevPlugin.rc" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\ExternalWrapper.cpp" />
-    <ClCompile Include="..\FFSessionHandler.cpp" />
-    <ClCompile Include="..\JavaObject.cpp" />
-    <ClCompile Include="..\JSRunner.cpp" />
-    <ClCompile Include="..\ModuleOOPHM.cpp">
-      <PreprocessToFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</PreprocessToFile>
-      <PreprocessSuppressLineNumbers Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</PreprocessSuppressLineNumbers>
-    </ClCompile>
-    <ClCompile Include="..\Preferences.cpp" />
-    <ClCompile Include="..\XpcomDebug.cpp" />
-    <ClCompile Include="..\..\common\AllowedConnections.cpp" />
-    <ClCompile Include="..\..\common\CheckVersionsMessage.cpp" />
-    <ClCompile Include="..\..\common\ChooseTransportMessage.cpp" />
-    <ClCompile Include="..\..\common\Debug.cpp" />
-    <ClCompile Include="..\..\common\FatalErrorMessage.cpp" />
-    <ClCompile Include="..\..\common\FreeValueMessage.cpp" />
-    <ClCompile Include="..\..\common\HostChannel.cpp" />
-    <ClCompile Include="..\..\common\InvokeMessage.cpp" />
-    <ClCompile Include="..\..\common\InvokeSpecialMessage.cpp" />
-    <ClCompile Include="..\..\common\LoadJsniMessage.cpp" />
-    <ClCompile Include="..\..\common\LoadModuleMessage.cpp" />
-    <ClCompile Include="..\..\common\ProtocolVersionMessage.cpp" />
-    <ClCompile Include="..\..\common\ReturnMessage.cpp" />
-    <ClCompile Include="..\..\common\ServerMethods.cpp" />
-    <ClCompile Include="..\..\common\Socket.cpp" />
-    <ClCompile Include="..\..\common\SwitchTransportMessage.cpp" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/plugins/xpcom/VisualStudio/ff40-xpcom.vcxproj.filters b/plugins/xpcom/VisualStudio/ff40-xpcom.vcxproj.filters
deleted file mode 100644
index 3b0a31b..0000000
--- a/plugins/xpcom/VisualStudio/ff40-xpcom.vcxproj.filters
+++ /dev/null
@@ -1,484 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Header Files\common">
-      <UniqueIdentifier>{a7c29063-75f8-42b1-965f-a05c1216d850}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Header Files\gecko">
-      <UniqueIdentifier>{5a35bded-1db6-48ba-ae1a-efd9f28c578f}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Resource Files">
-      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
-      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx</Extensions>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Source Files\common">
-      <UniqueIdentifier>{155aa627-d60d-49af-9953-f150d540f110}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\ExternalWrapper.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\FFSessionHandler.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\prebuilt\ff40\include\IOOPHM.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\JavaObject.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\JSRunner.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\mozincludes.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\Preferences.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\RootedObject.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\SessionData.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\XpcomDebug.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\AllowedConnections.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\BrowserChannel.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\ByteOrder.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\CheckVersionsMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\ChooseTransportMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\Debug.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\DebugLevel.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\FatalErrorMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\FreeValueMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\HashMap.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\HostChannel.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\InvokeMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\InvokeSpecialMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\LoadJsniMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\LoadModuleMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\Message.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\Platform.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\ProtocolVersionMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\QuitMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\ReturnMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\scoped_ptr\scoped_ptr.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\ServerMethods.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\SessionHandler.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\Socket.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\SwitchTransportMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\Value.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\WINNT_x86-msvc\include\js-config.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jsapi.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jsautocfg.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jscompat.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jsconfig.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\WINNT_x86-msvc\include\jscpucfg.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\jscpucfg.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\jsinttypes.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jslong.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\jsosdep.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jsotypes.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jspubtd.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jstypes.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jsutil.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\WINNT_x86-msvc\include\mozilla-config.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpconnect\nsAXPCNativeCallContext.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsCOMPtr.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nscore.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nscore.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsCycleCollector.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsDebug.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsError.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\widget\nsEvent.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsICategoryManager.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsIClassInfo.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsIClassInfoImpl.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsIComponentManager.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsID.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsIEnumerator.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsIException.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsIExceptionService.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsIFactory.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsIGenericFactory.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\necko\nsIHttpProtocolHandler.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsIInterfaceInfo.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsIInterfaceInfoManager.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpconnect\nsIJSContextStack.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsIMemory.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsIModule.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\caps\nsIPrincipal.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsIProgrammingLanguage.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\necko\nsIProtocolHandler.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\necko\nsIProxiedProtocolHandler.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpconnect\nsIScriptableInterfaces.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\dom\nsIScriptGlobalObject.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\dom\nsIScriptObjectPrincipal.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\caps\nsISecurityCheckedComponent.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsISerializable.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsIServiceManager.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsISimpleEnumerator.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsISimpleEnumerator.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsISupports.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsISupports.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsISupportsBase.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsISupportsBase.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsISupportsImpl.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsISupportsUtils.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsISupportsUtils.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsIURI.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsIVariant.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpconnect\nsIXPConnect.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsMemory.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\necko\nsNetCID.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\nsrootidl.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsrootidl.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsServiceManagerUtils.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsStringAPI.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsTraceRefcnt.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsXPCOM.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsXPCOMCID.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\nsXPCOMStrings.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\pratom.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\prcpucfg.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\prinrval.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\prlock.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\prlog.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\prlong.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\obsolete\protypes.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\prthread.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\prtime.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\prtypes.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpconnect\xpccomponents.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpconnect\xpcexception.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpconnect\xpcjsid.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\WINNT_x86-msvc\include\xpcom-config.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\xpt_arena.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\xpt_struct.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\xpcom\xptinfo.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-2.0.0\include\js\jsproto.tbl">
-      <Filter>Header Files\gecko</Filter>
-    </None>
-    <None Include="..\xpGwtDevPlugin.def">
-      <Filter>Source Files</Filter>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="..\xpGwtDevPlugin.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\ExternalWrapper.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\FFSessionHandler.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\JavaObject.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\JSRunner.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\ModuleOOPHM.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\Preferences.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\XpcomDebug.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\AllowedConnections.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\CheckVersionsMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\ChooseTransportMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\Debug.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\FatalErrorMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\FreeValueMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\HostChannel.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\InvokeMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\InvokeSpecialMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\LoadJsniMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\LoadModuleMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\ProtocolVersionMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\ReturnMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\ServerMethods.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\Socket.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\SwitchTransportMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/plugins/xpcom/VisualStudio/ff50-xpcom.vcproj b/plugins/xpcom/VisualStudio/ff50-xpcom.vcproj
deleted file mode 100644
index 6071520..0000000
--- a/plugins/xpcom/VisualStudio/ff50-xpcom.vcproj
+++ /dev/null
@@ -1,845 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="ff50-xpcom"
-	ProjectGUID="{6BF0C2CE-CB0C-421B-A67C-1E448371D24D}"
-	RootNamespace="ff50-xpcom"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Debug50"
-			IntermediateDirectory="Debug50"
-			ConfigurationType="2"
-			UseOfMFC="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff50\include;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\mozilla&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\WINNT_x86-msvc\include&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpconnect&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\WINNT_x86-msvc\include&quot;"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF4;GECKO_VERSION=2000"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				TreatWChar_tAsBuiltInType="false"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib Advapi32.lib xpcomglue_s.lib xpcom.lib nspr4.lib mozalloc.lib xul.lib mozjs.lib"
-				ShowProgress="2"
-				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff50\xpGwtDevPlugin.dll"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\WINNT_x86-msvc\lib&quot;"
-				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
-				SubSystem="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(IntDir)\$(TargetName).lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Release50"
-			IntermediateDirectory="Release50"
-			ConfigurationType="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="3"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff50\include;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\mozilla&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\WINNT_x86-msvc\include&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpconnect&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\WINNT_x86-msvc\include&quot;"
-				PreprocessorDefinitions="WIN32;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF4;GECKO_VERSION=2000;$(NOINHERIT)"
-				ExceptionHandling="1"
-				RuntimeLibrary="0"
-				TreatWChar_tAsBuiltInType="false"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib Advapi32.lib xpcomglue_s.lib xpcom.lib nspr4.lib mozalloc.lib xul.lib mozjs.lib"
-				ShowProgress="2"
-				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff50\xpGwtDevPlugin.dll"
-				LinkIncremental="0"
-				AdditionalLibraryDirectories="&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\WINNT_x86-msvc\lib&quot;"
-				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(IntDir)\$(TargetName).lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\ExternalWrapper.h"
-				>
-			</File>
-			<File
-				RelativePath="..\FFSessionHandler.h"
-				>
-			</File>
-			<File
-				RelativePath="..\prebuilt\ff50\include\IOOPHM.h"
-				>
-			</File>
-			<File
-				RelativePath="..\JavaObject.h"
-				>
-			</File>
-			<File
-				RelativePath="..\JSRunner.h"
-				>
-			</File>
-			<File
-				RelativePath="..\mozincludes.h"
-				>
-			</File>
-			<File
-				RelativePath="..\Preferences.h"
-				>
-			</File>
-			<File
-				RelativePath="..\RootedObject.h"
-				>
-			</File>
-			<File
-				RelativePath="..\SessionData.h"
-				>
-			</File>
-			<File
-				RelativePath="..\XpcomDebug.h"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\common\AllowedConnections.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\BrowserChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ByteOrder.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\CheckVersionsMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ChooseTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Debug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\DebugLevel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FatalErrorMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FreeValueMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HashMap.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HostChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeSpecialMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadJsniMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadModuleMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Message.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Platform.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ProtocolVersionMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\QuitMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ReturnMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\scoped_ptr\scoped_ptr.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ServerMethods.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SessionHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Socket.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SwitchTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Value.h"
-					>
-				</File>
-			</Filter>
-			<Filter
-				Name="gecko"
-				>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\WINNT_x86-msvc\include\js-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jsapi.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jsautocfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jscompat.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jsconfig.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\WINNT_x86-msvc\include\jscpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\jscpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\jsinttypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jslong.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\jsosdep.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jsotypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jsproto.tbl"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jspubtd.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jstypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\WINNT_x86-msvc\include\mozilla-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpconnect\nsAXPCNativeCallContext.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsCOMPtr.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nscore.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nscore.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsCycleCollector.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsDebug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsError.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\widget\nsEvent.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsICategoryManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsIClassInfo.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsIClassInfoImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsIComponentManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsIEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsIException.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsIExceptionService.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsIFactory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsIGenericFactory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\necko\nsIHttpProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsIInterfaceInfo.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsIInterfaceInfoManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpconnect\nsIJSContextStack.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsIMemory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsIModule.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\caps\nsIPrincipal.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsIProgrammingLanguage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\necko\nsIProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\necko\nsIProxiedProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpconnect\nsIScriptableInterfaces.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\dom\nsIScriptGlobalObject.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\dom\nsIScriptObjectPrincipal.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\caps\nsISecurityCheckedComponent.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsISerializable.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsIServiceManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsISimpleEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsISimpleEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsISupports.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsISupports.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsISupportsBase.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsISupportsBase.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsISupportsImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsISupportsUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsISupportsUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsIURI.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsIVariant.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpconnect\nsIXPConnect.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsMemory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\necko\nsNetCID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsrootidl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsrootidl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsServiceManagerUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsStringAPI.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsTraceRefcnt.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsXPCOM.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsXPCOMCID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsXPCOMStrings.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\pratom.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\prcpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\prinrval.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\prlock.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\prlog.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\prlong.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\obsolete\protypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\prthread.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\prtime.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\prtypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpconnect\xpccomponents.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpconnect\xpcexception.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpconnect\xpcjsid.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\WINNT_x86-msvc\include\xpcom-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\xpt_arena.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\xpt_struct.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\xptinfo.h"
-					>
-				</File>
-			</Filter>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-			<File
-				RelativePath="..\xpGwtDevPlugin.rc"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\ExternalWrapper.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\FFSessionHandler.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\JavaObject.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\JSRunner.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\ModuleOOPHM.cpp"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						GeneratePreprocessedFile="0"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\Preferences.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\XpcomDebug.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\xpGwtDevPlugin.def"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\common\AllowedConnections.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\CheckVersionsMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ChooseTransportMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Debug.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FatalErrorMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FreeValueMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HostChannel.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeSpecialMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadJsniMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadModuleMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ProtocolVersionMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ReturnMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ServerMethods.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Socket.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SwitchTransportMessage.cpp"
-					>
-				</File>
-			</Filter>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/plugins/xpcom/VisualStudio/ff50-xpcom.vcxproj b/plugins/xpcom/VisualStudio/ff50-xpcom.vcxproj
deleted file mode 100644
index 8db2270..0000000
--- a/plugins/xpcom/VisualStudio/ff50-xpcom.vcxproj
+++ /dev/null
@@ -1,277 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{58AE040D-01CC-4E4A-AE98-BEDE56480AE9}</ProjectGuid>
-    <RootNamespace>ff50-xpcom</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>Static</UseOfMfc>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug50\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug50\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release50\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release50\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\common;..\prebuilt\ff50\include;..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\WINNT_x86-msvc\include;..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include;..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\mozilla;..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpconnect;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF4;GECKO_VERSION=2000;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <ResourceCompile>
-      <ResourceOutputFileName>$(IntDir)$(TargetName).res</ResourceOutputFileName>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>ws2_32.lib;Advapi32.lib;xpcomglue_s.lib;xpcom.lib;nspr4.lib;mozalloc.lib;xul.lib;mozjs.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <ShowProgress>LinkVerboseLib</ShowProgress>
-      <OutputFile>$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff50\xpGwtDevPlugin.dll</OutputFile>
-      <AdditionalLibraryDirectories>..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\WINNT_x86-msvc\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ModuleDefinitionFile>$(ProjectDir)\..\xpGwtDevPlugin.def</ModuleDefinitionFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>Full</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\common;..\prebuilt\ff50\include;..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\WINNT_x86-msvc\include;..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include;..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\mozilla;..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpconnect;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF4;GECKO_VERSION=2000</PreprocessorDefinitions>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <ResourceCompile>
-      <ResourceOutputFileName>$(IntDir)$(TargetName).res</ResourceOutputFileName>
-    </ResourceCompile>
-    <Link>
-      <AdditionalDependencies>ws2_32.lib;Advapi32.lib;xpcomglue_s.lib;xpcom.lib;nspr4.lib;mozalloc.lib;xul.lib;mozjs.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <ShowProgress>LinkVerboseLib</ShowProgress>
-      <OutputFile>$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff50\xpGwtDevPlugin.dll</OutputFile>
-      <AdditionalLibraryDirectories>..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\WINNT_x86-msvc\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ModuleDefinitionFile>$(ProjectDir)\..\xpGwtDevPlugin.def</ModuleDefinitionFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClInclude Include="..\ExternalWrapper.h" />
-    <ClInclude Include="..\FFSessionHandler.h" />
-    <ClInclude Include="..\prebuilt\ff50\include\IOOPHM.h" />
-    <ClInclude Include="..\JavaObject.h" />
-    <ClInclude Include="..\JSRunner.h" />
-    <ClInclude Include="..\mozincludes.h" />
-    <ClInclude Include="..\Preferences.h" />
-    <ClInclude Include="..\RootedObject.h" />
-    <ClInclude Include="..\SessionData.h" />
-    <ClInclude Include="..\XpcomDebug.h" />
-    <ClInclude Include="..\..\common\AllowedConnections.h" />
-    <ClInclude Include="..\..\common\BrowserChannel.h" />
-    <ClInclude Include="..\..\common\ByteOrder.h" />
-    <ClInclude Include="..\..\common\CheckVersionsMessage.h" />
-    <ClInclude Include="..\..\common\ChooseTransportMessage.h" />
-    <ClInclude Include="..\..\common\Debug.h" />
-    <ClInclude Include="..\..\common\DebugLevel.h" />
-    <ClInclude Include="..\..\common\FatalErrorMessage.h" />
-    <ClInclude Include="..\..\common\FreeValueMessage.h" />
-    <ClInclude Include="..\..\common\HashMap.h" />
-    <ClInclude Include="..\..\common\HostChannel.h" />
-    <ClInclude Include="..\..\common\InvokeMessage.h" />
-    <ClInclude Include="..\..\common\InvokeSpecialMessage.h" />
-    <ClInclude Include="..\..\common\LoadJsniMessage.h" />
-    <ClInclude Include="..\..\common\LoadModuleMessage.h" />
-    <ClInclude Include="..\..\common\Message.h" />
-    <ClInclude Include="..\..\common\Platform.h" />
-    <ClInclude Include="..\..\common\ProtocolVersionMessage.h" />
-    <ClInclude Include="..\..\common\QuitMessage.h" />
-    <ClInclude Include="..\..\common\ReturnMessage.h" />
-    <ClInclude Include="..\..\common\scoped_ptr\scoped_ptr.h" />
-    <ClInclude Include="..\..\common\ServerMethods.h" />
-    <ClInclude Include="..\..\common\SessionHandler.h" />
-    <ClInclude Include="..\..\common\Socket.h" />
-    <ClInclude Include="..\..\common\SwitchTransportMessage.h" />
-    <ClInclude Include="..\..\common\Value.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\WINNT_x86-msvc\include\js-config.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jsapi.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jsautocfg.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jscompat.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jsconfig.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\WINNT_x86-msvc\include\jscpucfg.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\jscpucfg.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\jsinttypes.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jslong.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\jsosdep.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jsotypes.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jspubtd.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jstypes.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jsutil.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\WINNT_x86-msvc\include\mozilla-config.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpconnect\nsAXPCNativeCallContext.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsCOMPtr.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nscore.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nscore.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsCycleCollector.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsDebug.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsError.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\widget\nsEvent.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsICategoryManager.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsIClassInfo.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsIClassInfoImpl.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsIComponentManager.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsID.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsIEnumerator.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsIException.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsIExceptionService.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsIFactory.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsIGenericFactory.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\necko\nsIHttpProtocolHandler.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsIInterfaceInfo.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsIInterfaceInfoManager.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpconnect\nsIJSContextStack.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsIMemory.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsIModule.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\caps\nsIPrincipal.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsIProgrammingLanguage.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\necko\nsIProtocolHandler.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\necko\nsIProxiedProtocolHandler.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpconnect\nsIScriptableInterfaces.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\dom\nsIScriptGlobalObject.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\dom\nsIScriptObjectPrincipal.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\caps\nsISecurityCheckedComponent.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsISerializable.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsIServiceManager.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsISimpleEnumerator.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsISimpleEnumerator.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsISupports.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsISupports.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsISupportsBase.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsISupportsBase.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsISupportsImpl.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsISupportsUtils.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsISupportsUtils.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsIURI.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsIVariant.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpconnect\nsIXPConnect.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsMemory.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\necko\nsNetCID.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsrootidl.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsrootidl.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsServiceManagerUtils.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsStringAPI.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsTraceRefcnt.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsXPCOM.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsXPCOMCID.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsXPCOMStrings.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\pratom.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\prcpucfg.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\prinrval.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\prlock.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\prlog.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\prlong.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\obsolete\protypes.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\prthread.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\prtime.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\prtypes.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpconnect\xpccomponents.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpconnect\xpcexception.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpconnect\xpcjsid.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\WINNT_x86-msvc\include\xpcom-config.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\xpt_arena.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\xpt_struct.h" />
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\xptinfo.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jsproto.tbl" />
-    <None Include="..\xpGwtDevPlugin.def" />
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="..\xpGwtDevPlugin.rc" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\ExternalWrapper.cpp" />
-    <ClCompile Include="..\FFSessionHandler.cpp" />
-    <ClCompile Include="..\JavaObject.cpp" />
-    <ClCompile Include="..\JSRunner.cpp" />
-    <ClCompile Include="..\ModuleOOPHM.cpp">
-      <PreprocessToFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</PreprocessToFile>
-      <PreprocessSuppressLineNumbers Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</PreprocessSuppressLineNumbers>
-    </ClCompile>
-    <ClCompile Include="..\Preferences.cpp" />
-    <ClCompile Include="..\XpcomDebug.cpp" />
-    <ClCompile Include="..\..\common\AllowedConnections.cpp" />
-    <ClCompile Include="..\..\common\CheckVersionsMessage.cpp" />
-    <ClCompile Include="..\..\common\ChooseTransportMessage.cpp" />
-    <ClCompile Include="..\..\common\Debug.cpp" />
-    <ClCompile Include="..\..\common\FatalErrorMessage.cpp" />
-    <ClCompile Include="..\..\common\FreeValueMessage.cpp" />
-    <ClCompile Include="..\..\common\HostChannel.cpp" />
-    <ClCompile Include="..\..\common\InvokeMessage.cpp" />
-    <ClCompile Include="..\..\common\InvokeSpecialMessage.cpp" />
-    <ClCompile Include="..\..\common\LoadJsniMessage.cpp" />
-    <ClCompile Include="..\..\common\LoadModuleMessage.cpp" />
-    <ClCompile Include="..\..\common\ProtocolVersionMessage.cpp" />
-    <ClCompile Include="..\..\common\ReturnMessage.cpp" />
-    <ClCompile Include="..\..\common\ServerMethods.cpp" />
-    <ClCompile Include="..\..\common\Socket.cpp" />
-    <ClCompile Include="..\..\common\SwitchTransportMessage.cpp" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/plugins/xpcom/VisualStudio/ff50-xpcom.vcxproj.filters b/plugins/xpcom/VisualStudio/ff50-xpcom.vcxproj.filters
deleted file mode 100644
index 0bd143e..0000000
--- a/plugins/xpcom/VisualStudio/ff50-xpcom.vcxproj.filters
+++ /dev/null
@@ -1,484 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Header Files\common">
-      <UniqueIdentifier>{a7c29063-75f8-42b1-965f-a05c1216d850}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Header Files\gecko">
-      <UniqueIdentifier>{5a35bded-1db6-48ba-ae1a-efd9f28c578f}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Resource Files">
-      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
-      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx</Extensions>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Source Files\common">
-      <UniqueIdentifier>{155aa627-d60d-49af-9953-f150d540f110}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\ExternalWrapper.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\FFSessionHandler.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\prebuilt\ff40\include\IOOPHM.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\JavaObject.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\JSRunner.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\mozincludes.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\Preferences.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\RootedObject.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\SessionData.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\XpcomDebug.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\AllowedConnections.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\BrowserChannel.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\ByteOrder.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\CheckVersionsMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\ChooseTransportMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\Debug.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\DebugLevel.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\FatalErrorMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\FreeValueMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\HashMap.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\HostChannel.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\InvokeMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\InvokeSpecialMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\LoadJsniMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\LoadModuleMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\Message.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\Platform.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\ProtocolVersionMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\QuitMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\ReturnMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\scoped_ptr\scoped_ptr.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\ServerMethods.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\SessionHandler.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\Socket.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\SwitchTransportMessage.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\common\Value.h">
-      <Filter>Header Files\common</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\WINNT_x86-msvc\include\js-config.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jsapi.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jsautocfg.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jscompat.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jsconfig.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\WINNT_x86-msvc\include\jscpucfg.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\jscpucfg.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\jsinttypes.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jslong.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\jsosdep.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jsotypes.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jspubtd.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jstypes.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jsutil.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\WINNT_x86-msvc\include\mozilla-config.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpconnect\nsAXPCNativeCallContext.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsCOMPtr.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nscore.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nscore.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsCycleCollector.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsDebug.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsError.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\widget\nsEvent.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsICategoryManager.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsIClassInfo.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsIClassInfoImpl.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsIComponentManager.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsID.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsIEnumerator.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsIException.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsIExceptionService.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsIFactory.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsIGenericFactory.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\necko\nsIHttpProtocolHandler.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsIInterfaceInfo.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsIInterfaceInfoManager.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpconnect\nsIJSContextStack.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsIMemory.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsIModule.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\caps\nsIPrincipal.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsIProgrammingLanguage.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\necko\nsIProtocolHandler.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\necko\nsIProxiedProtocolHandler.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpconnect\nsIScriptableInterfaces.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\dom\nsIScriptGlobalObject.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\dom\nsIScriptObjectPrincipal.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\caps\nsISecurityCheckedComponent.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsISerializable.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsIServiceManager.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsISimpleEnumerator.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsISimpleEnumerator.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsISupports.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsISupports.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsISupportsBase.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsISupportsBase.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsISupportsImpl.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsISupportsUtils.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsISupportsUtils.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsIURI.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsIVariant.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpconnect\nsIXPConnect.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsMemory.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\necko\nsNetCID.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\nsrootidl.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsrootidl.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsServiceManagerUtils.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsStringAPI.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsTraceRefcnt.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsXPCOM.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsXPCOMCID.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\nsXPCOMStrings.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\pratom.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\prcpucfg.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\prinrval.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\prlock.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\prlog.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\prlong.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\obsolete\protypes.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\prthread.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\prtime.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\prtypes.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpconnect\xpccomponents.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpconnect\xpcexception.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpconnect\xpcjsid.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\WINNT_x86-msvc\include\xpcom-config.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\xpt_arena.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\xpt_struct.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\xpcom\xptinfo.h">
-      <Filter>Header Files\gecko</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="..\..\..\..\plugin-sdks\gecko-sdks\gecko-5.0.0\include\js\jsproto.tbl">
-      <Filter>Header Files\gecko</Filter>
-    </None>
-    <None Include="..\xpGwtDevPlugin.def">
-      <Filter>Source Files</Filter>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="..\xpGwtDevPlugin.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\ExternalWrapper.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\FFSessionHandler.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\JavaObject.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\JSRunner.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\ModuleOOPHM.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\Preferences.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\XpcomDebug.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\AllowedConnections.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\CheckVersionsMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\ChooseTransportMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\Debug.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\FatalErrorMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\FreeValueMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\HostChannel.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\InvokeMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\InvokeSpecialMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\LoadJsniMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\LoadModuleMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\ProtocolVersionMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\ReturnMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\ServerMethods.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\Socket.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\common\SwitchTransportMessage.cpp">
-      <Filter>Source Files\common</Filter>
-    </ClCompile>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/plugins/xpcom/VisualStudio/ff60-xpcom.vcproj b/plugins/xpcom/VisualStudio/ff60-xpcom.vcproj
deleted file mode 100755
index fe269c3..0000000
--- a/plugins/xpcom/VisualStudio/ff60-xpcom.vcproj
+++ /dev/null
@@ -1,845 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="ff60-xpcom"
-	ProjectGUID="{6BF0C2CE-CB0C-421B-A67C-1E448371D24D}"
-	RootNamespace="ff60-xpcom"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Debug60"
-			IntermediateDirectory="Debug60"
-			ConfigurationType="2"
-			UseOfMFC="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff60\include;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\mozilla&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\WINNT_x86-msvc\include&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\xpconnect&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\WINNT_x86-msvc\include&quot;"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF4;GECKO_VERSION=2000"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				TreatWChar_tAsBuiltInType="false"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib Advapi32.lib xpcomglue_s.lib xpcom.lib nspr4.lib mozalloc.lib xul.lib mozjs.lib"
-				ShowProgress="2"
-				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff60\xpGwtDevPlugin.dll"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\WINNT_x86-msvc\lib&quot;"
-				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
-				SubSystem="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(IntDir)\$(TargetName).lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Release60"
-			IntermediateDirectory="Release60"
-			ConfigurationType="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="3"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff60\include;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\mozilla&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\WINNT_x86-msvc\include&quot;;&quot;..\..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\xpconnect&quot;"
-				PreprocessorDefinitions="WIN32;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF4;GECKO_VERSION=2000;$(NOINHERIT)"
-				ExceptionHandling="1"
-				RuntimeLibrary="0"
-				TreatWChar_tAsBuiltInType="false"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib Advapi32.lib xpcomglue_s.lib xpcom.lib nspr4.lib mozalloc.lib xul.lib mozjs.lib"
-				ShowProgress="2"
-				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff60\xpGwtDevPlugin.dll"
-				LinkIncremental="0"
-				AdditionalLibraryDirectories="&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\WINNT_x86-msvc\lib&quot;"
-				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(IntDir)\$(TargetName).lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\ExternalWrapper.h"
-				>
-			</File>
-			<File
-				RelativePath="..\FFSessionHandler.h"
-				>
-			</File>
-			<File
-				RelativePath="..\prebuilt\ff60\include\IOOPHM.h"
-				>
-			</File>
-			<File
-				RelativePath="..\JavaObject.h"
-				>
-			</File>
-			<File
-				RelativePath="..\JSRunner.h"
-				>
-			</File>
-			<File
-				RelativePath="..\mozincludes.h"
-				>
-			</File>
-			<File
-				RelativePath="..\Preferences.h"
-				>
-			</File>
-			<File
-				RelativePath="..\RootedObject.h"
-				>
-			</File>
-			<File
-				RelativePath="..\SessionData.h"
-				>
-			</File>
-			<File
-				RelativePath="..\XpcomDebug.h"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\common\AllowedConnections.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\BrowserChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ByteOrder.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\CheckVersionsMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ChooseTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Debug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\DebugLevel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FatalErrorMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FreeValueMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HashMap.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HostChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeSpecialMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadJsniMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadModuleMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Message.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Platform.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ProtocolVersionMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\QuitMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ReturnMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\scoped_ptr\scoped_ptr.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ServerMethods.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SessionHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Socket.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SwitchTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Value.h"
-					>
-				</File>
-			</Filter>
-			<Filter
-				Name="gecko"
-				>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\WINNT_x86-msvc\include\js-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\js\jsapi.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\js\jsautocfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\js\jscompat.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\js\jsconfig.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\WINNT_x86-msvc\include\jscpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\jscpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\jsinttypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\js\jslong.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\jsosdep.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\js\jsotypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\js\jsproto.tbl"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\js\jspubtd.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\js\jstypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\WINNT_x86-msvc\include\mozilla-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\xpconnect\nsAXPCNativeCallContext.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\nsCOMPtr.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\nscore.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\xpcom\nscore.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\nsCycleCollector.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\nsDebug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\nsError.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\widget\nsEvent.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\nsICategoryManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\nsIClassInfo.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\nsIClassInfoImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\nsIComponentManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\nsID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\xpcom\nsIEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\xpcom\nsIException.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\xpcom\nsIExceptionService.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\nsIFactory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\nsIGenericFactory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\necko\nsIHttpProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\xpcom\nsIInterfaceInfo.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\xpcom\nsIInterfaceInfoManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\xpconnect\nsIJSContextStack.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\nsIMemory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\nsIModule.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\caps\nsIPrincipal.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\nsIProgrammingLanguage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\necko\nsIProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\necko\nsIProxiedProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\xpconnect\nsIScriptableInterfaces.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\dom\nsIScriptGlobalObject.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\dom\nsIScriptObjectPrincipal.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\caps\nsISecurityCheckedComponent.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\xpcom\nsISerializable.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\nsIServiceManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\xpcom\nsISimpleEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\nsISimpleEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\xpcom\nsISupports.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\nsISupports.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\xpcom\nsISupportsBase.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\nsISupportsBase.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\nsISupportsImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\xpcom\nsISupportsUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\nsISupportsUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\nsIURI.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\xpcom\nsIVariant.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\xpconnect\nsIXPConnect.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\nsMemory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\necko\nsNetCID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\nsrootidl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\xpcom\nsrootidl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\nsServiceManagerUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\nsStringAPI.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\nsTraceRefcnt.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\nsXPCOM.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\nsXPCOMCID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\nsXPCOMStrings.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\pratom.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\prcpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\prinrval.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\prlock.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\prlog.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\prlong.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\obsolete\protypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\prthread.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\prtime.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\prtypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\xpconnect\xpccomponents.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\xpconnect\xpcexception.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\xpconnect\xpcjsid.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\WINNT_x86-msvc\include\xpcom-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\xpcom\xpt_arena.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\xpcom\xpt_struct.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-6.0.0\include\xpcom\xptinfo.h"
-					>
-				</File>
-			</Filter>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-			<File
-				RelativePath="..\xpGwtDevPlugin.rc"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\ExternalWrapper.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\FFSessionHandler.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\JavaObject.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\JSRunner.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\ModuleOOPHM.cpp"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						GeneratePreprocessedFile="0"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\Preferences.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\XpcomDebug.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\xpGwtDevPlugin.def"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\common\AllowedConnections.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\CheckVersionsMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ChooseTransportMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Debug.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FatalErrorMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FreeValueMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HostChannel.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeSpecialMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadJsniMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadModuleMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ProtocolVersionMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ReturnMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ServerMethods.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Socket.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SwitchTransportMessage.cpp"
-					>
-				</File>
-			</Filter>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/plugins/xpcom/VisualStudio/ff70-xpcom.vcproj b/plugins/xpcom/VisualStudio/ff70-xpcom.vcproj
deleted file mode 100755
index d4f64e3..0000000
--- a/plugins/xpcom/VisualStudio/ff70-xpcom.vcproj
+++ /dev/null
@@ -1,845 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="ff70-xpcom"
-	ProjectGUID="{6BF0C2CE-CB0C-421B-A67C-1E448371D24D}"
-	RootNamespace="ff70-xpcom"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Debug70"
-			IntermediateDirectory="Debug70"
-			ConfigurationType="2"
-			UseOfMFC="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff70\include;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\mozilla&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\WINNT_x86-msvc\include&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\xpconnect&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\WINNT_x86-msvc\include&quot;"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF4;GECKO_VERSION=2000"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				TreatWChar_tAsBuiltInType="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib Advapi32.lib xpcomglue_s.lib xpcom.lib nspr4.lib mozalloc.lib xul.lib mozjs.lib"
-				ShowProgress="2"
-				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff70\xpGwtDevPlugin.dll"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\WINNT_x86-msvc\lib&quot;"
-				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
-				SubSystem="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(IntDir)\$(TargetName).lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Release70"
-			IntermediateDirectory="Release70"
-			ConfigurationType="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="3"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff70\include;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\mozilla&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\WINNT_x86-msvc\include&quot;;&quot;..\..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\xpconnect&quot;"
-				PreprocessorDefinitions="WIN32;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF4;GECKO_VERSION=2000;$(NOINHERIT)"
-				ExceptionHandling="1"
-				RuntimeLibrary="0"
-				TreatWChar_tAsBuiltInType="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib Advapi32.lib xpcomglue_s.lib xpcom.lib nspr4.lib mozalloc.lib xul.lib mozjs.lib"
-				ShowProgress="2"
-				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff70\xpGwtDevPlugin.dll"
-				LinkIncremental="0"
-				AdditionalLibraryDirectories="&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\WINNT_x86-msvc\lib&quot;"
-				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(IntDir)\$(TargetName).lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\ExternalWrapper.h"
-				>
-			</File>
-			<File
-				RelativePath="..\FFSessionHandler.h"
-				>
-			</File>
-			<File
-				RelativePath="..\prebuilt\ff70\include\IOOPHM.h"
-				>
-			</File>
-			<File
-				RelativePath="..\JavaObject.h"
-				>
-			</File>
-			<File
-				RelativePath="..\JSRunner.h"
-				>
-			</File>
-			<File
-				RelativePath="..\mozincludes.h"
-				>
-			</File>
-			<File
-				RelativePath="..\Preferences.h"
-				>
-			</File>
-			<File
-				RelativePath="..\RootedObject.h"
-				>
-			</File>
-			<File
-				RelativePath="..\SessionData.h"
-				>
-			</File>
-			<File
-				RelativePath="..\XpcomDebug.h"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\common\AllowedConnections.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\BrowserChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ByteOrder.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\CheckVersionsMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ChooseTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Debug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\DebugLevel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FatalErrorMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FreeValueMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HashMap.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HostChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeSpecialMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadJsniMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadModuleMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Message.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Platform.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ProtocolVersionMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\QuitMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ReturnMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\scoped_ptr\scoped_ptr.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ServerMethods.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SessionHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Socket.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SwitchTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Value.h"
-					>
-				</File>
-			</Filter>
-			<Filter
-				Name="gecko"
-				>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\WINNT_x86-msvc\include\js-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\js\jsapi.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\js\jsautocfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\js\jscompat.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\js\jsconfig.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\WINNT_x86-msvc\include\jscpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\jscpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\jsinttypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\js\jslong.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\jsosdep.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\js\jsotypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\js\jsproto.tbl"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\js\jspubtd.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\js\jstypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\WINNT_x86-msvc\include\mozilla-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\xpconnect\nsAXPCNativeCallContext.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\nsCOMPtr.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\nscore.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\xpcom\nscore.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\nsCycleCollector.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\nsDebug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\nsError.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\widget\nsEvent.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\nsICategoryManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\nsIClassInfo.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\nsIClassInfoImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\nsIComponentManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\nsID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\xpcom\nsIEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\xpcom\nsIException.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\xpcom\nsIExceptionService.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\nsIFactory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\nsIGenericFactory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\necko\nsIHttpProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\xpcom\nsIInterfaceInfo.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\xpcom\nsIInterfaceInfoManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\xpconnect\nsIJSContextStack.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\nsIMemory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\nsIModule.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\caps\nsIPrincipal.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\nsIProgrammingLanguage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\necko\nsIProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\necko\nsIProxiedProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\xpconnect\nsIScriptableInterfaces.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\dom\nsIScriptGlobalObject.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\dom\nsIScriptObjectPrincipal.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\caps\nsISecurityCheckedComponent.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\xpcom\nsISerializable.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\nsIServiceManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\xpcom\nsISimpleEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\nsISimpleEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\xpcom\nsISupports.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\nsISupports.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\xpcom\nsISupportsBase.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\nsISupportsBase.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\nsISupportsImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\xpcom\nsISupportsUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\nsISupportsUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\nsIURI.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\xpcom\nsIVariant.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\xpconnect\nsIXPConnect.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\nsMemory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\necko\nsNetCID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\nsrootidl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\xpcom\nsrootidl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\nsServiceManagerUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\nsStringAPI.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\nsTraceRefcnt.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\nsXPCOM.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\nsXPCOMCID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\nsXPCOMStrings.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\pratom.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\prcpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\prinrval.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\prlock.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\prlog.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\prlong.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\obsolete\protypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\prthread.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\prtime.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\prtypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\xpconnect\xpccomponents.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\xpconnect\xpcexception.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\xpconnect\xpcjsid.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\WINNT_x86-msvc\include\xpcom-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\xpcom\xpt_arena.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\xpcom\xpt_struct.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-7.0.0\include\xpcom\xptinfo.h"
-					>
-				</File>
-			</Filter>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-			<File
-				RelativePath="..\xpGwtDevPlugin.rc"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\ExternalWrapper.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\FFSessionHandler.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\JavaObject.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\JSRunner.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\ModuleOOPHM.cpp"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						GeneratePreprocessedFile="0"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\Preferences.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\XpcomDebug.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\xpGwtDevPlugin.def"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\common\AllowedConnections.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\CheckVersionsMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ChooseTransportMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Debug.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FatalErrorMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FreeValueMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HostChannel.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeSpecialMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadJsniMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadModuleMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ProtocolVersionMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ReturnMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ServerMethods.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Socket.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SwitchTransportMessage.cpp"
-					>
-				</File>
-			</Filter>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/plugins/xpcom/VisualStudio/ff80-xpcom.vcproj b/plugins/xpcom/VisualStudio/ff80-xpcom.vcproj
deleted file mode 100755
index a007fbd..0000000
--- a/plugins/xpcom/VisualStudio/ff80-xpcom.vcproj
+++ /dev/null
@@ -1,845 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="ff80-xpcom"
-	ProjectGUID="{6BF0C2CE-CB0C-421B-A67C-1E448371D24D}"
-	RootNamespace="ff80-xpcom"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Debug80"
-			IntermediateDirectory="Debug80"
-			ConfigurationType="2"
-			UseOfMFC="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff80\include;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\mozilla&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\WINNT_x86-msvc\include&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\xpconnect&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\WINNT_x86-msvc\include&quot;"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF8;GECKO_VERSION=8000"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				TreatWChar_tAsBuiltInType="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib Advapi32.lib xpcomglue_s.lib xpcom.lib nspr4.lib mozalloc.lib xul.lib mozjs.lib"
-				ShowProgress="2"
-				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff80\xpGwtDevPlugin.dll"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\WINNT_x86-msvc\lib&quot;"
-				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
-				SubSystem="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(IntDir)\$(TargetName).lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Release80"
-			IntermediateDirectory="Release80"
-			ConfigurationType="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="3"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff80\include;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\mozilla&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\WINNT_x86-msvc\include&quot;;&quot;..\..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\xpconnect&quot;"
-				PreprocessorDefinitions="WIN32;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF8;GECKO_VERSION=8000;$(NOINHERIT)"
-				ExceptionHandling="1"
-				RuntimeLibrary="0"
-				TreatWChar_tAsBuiltInType="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib Advapi32.lib xpcomglue_s.lib xpcom.lib nspr4.lib mozalloc.lib xul.lib mozjs.lib"
-				ShowProgress="2"
-				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff80\xpGwtDevPlugin.dll"
-				LinkIncremental="0"
-				AdditionalLibraryDirectories="&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\WINNT_x86-msvc\lib&quot;"
-				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(IntDir)\$(TargetName).lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\ExternalWrapper.h"
-				>
-			</File>
-			<File
-				RelativePath="..\FFSessionHandler.h"
-				>
-			</File>
-			<File
-				RelativePath="..\prebuilt\ff80\include\IOOPHM.h"
-				>
-			</File>
-			<File
-				RelativePath="..\JavaObject.h"
-				>
-			</File>
-			<File
-				RelativePath="..\JSRunner.h"
-				>
-			</File>
-			<File
-				RelativePath="..\mozincludes.h"
-				>
-			</File>
-			<File
-				RelativePath="..\Preferences.h"
-				>
-			</File>
-			<File
-				RelativePath="..\RootedObject.h"
-				>
-			</File>
-			<File
-				RelativePath="..\SessionData.h"
-				>
-			</File>
-			<File
-				RelativePath="..\XpcomDebug.h"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\common\AllowedConnections.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\BrowserChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ByteOrder.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\CheckVersionsMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ChooseTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Debug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\DebugLevel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FatalErrorMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FreeValueMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HashMap.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HostChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeSpecialMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadJsniMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadModuleMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Message.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Platform.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ProtocolVersionMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\QuitMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ReturnMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\scoped_ptr\scoped_ptr.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ServerMethods.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SessionHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Socket.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SwitchTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Value.h"
-					>
-				</File>
-			</Filter>
-			<Filter
-				Name="gecko"
-				>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\WINNT_x86-msvc\include\js-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\js\jsapi.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\js\jsautocfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\js\jscompat.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\js\jsconfig.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\WINNT_x86-msvc\include\jscpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\jscpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\jsinttypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\js\jslong.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\jsosdep.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\js\jsotypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\js\jsproto.tbl"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\js\jspubtd.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\js\jstypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\WINNT_x86-msvc\include\mozilla-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\xpconnect\nsAXPCNativeCallContext.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\nsCOMPtr.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\nscore.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\xpcom\nscore.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\nsCycleCollector.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\nsDebug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\nsError.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\widget\nsEvent.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\nsICategoryManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\nsIClassInfo.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\nsIClassInfoImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\nsIComponentManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\nsID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\xpcom\nsIEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\xpcom\nsIException.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\xpcom\nsIExceptionService.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\nsIFactory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\nsIGenericFactory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\necko\nsIHttpProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\xpcom\nsIInterfaceInfo.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\xpcom\nsIInterfaceInfoManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\xpconnect\nsIJSContextStack.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\nsIMemory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\nsIModule.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\caps\nsIPrincipal.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\nsIProgrammingLanguage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\necko\nsIProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\necko\nsIProxiedProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\xpconnect\nsIScriptableInterfaces.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\dom\nsIScriptGlobalObject.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\dom\nsIScriptObjectPrincipal.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\caps\nsISecurityCheckedComponent.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\xpcom\nsISerializable.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\nsIServiceManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\xpcom\nsISimpleEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\nsISimpleEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\xpcom\nsISupports.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\nsISupports.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\xpcom\nsISupportsBase.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\nsISupportsBase.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\nsISupportsImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\xpcom\nsISupportsUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\nsISupportsUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\nsIURI.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\xpcom\nsIVariant.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\xpconnect\nsIXPConnect.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\nsMemory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\necko\nsNetCID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\nsrootidl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\xpcom\nsrootidl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\nsServiceManagerUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\nsStringAPI.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\nsTraceRefcnt.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\nsXPCOM.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\nsXPCOMCID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\nsXPCOMStrings.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\pratom.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\prcpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\prinrval.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\prlock.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\prlog.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\prlong.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\obsolete\protypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\prthread.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\prtime.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\prtypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\xpconnect\xpccomponents.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\xpconnect\xpcexception.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\xpconnect\xpcjsid.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\WINNT_x86-msvc\include\xpcom-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\xpcom\xpt_arena.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\xpcom\xpt_struct.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-8.0.0\include\xpcom\xptinfo.h"
-					>
-				</File>
-			</Filter>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-			<File
-				RelativePath="..\xpGwtDevPlugin.rc"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\ExternalWrapper.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\FFSessionHandler.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\JavaObject.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\JSRunner.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\ModuleOOPHM.cpp"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						GeneratePreprocessedFile="0"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\Preferences.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\XpcomDebug.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\xpGwtDevPlugin.def"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\common\AllowedConnections.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\CheckVersionsMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ChooseTransportMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Debug.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FatalErrorMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FreeValueMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HostChannel.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeSpecialMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadJsniMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadModuleMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ProtocolVersionMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ReturnMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ServerMethods.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Socket.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SwitchTransportMessage.cpp"
-					>
-				</File>
-			</Filter>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/plugins/xpcom/VisualStudio/ff90-xpcom.vcproj b/plugins/xpcom/VisualStudio/ff90-xpcom.vcproj
deleted file mode 100755
index 51ee65c..0000000
--- a/plugins/xpcom/VisualStudio/ff90-xpcom.vcproj
+++ /dev/null
@@ -1,845 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="ff90-xpcom"
-	ProjectGUID="{6BF0C2CE-CB0C-421B-A67C-1E448371D24D}"
-	RootNamespace="ff90-xpcom"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Debug90"
-			IntermediateDirectory="Debug90"
-			ConfigurationType="2"
-			UseOfMFC="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff90\include;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\mozilla&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\WINNT_x86-msvc\include&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpconnect&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\WINNT_x86-msvc\include&quot;"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF8;GECKO_VERSION=9000"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				TreatWChar_tAsBuiltInType="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib Advapi32.lib xpcomglue_s.lib xpcom.lib nspr4.lib mozalloc.lib xul.lib mozjs.lib"
-				ShowProgress="2"
-				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff90\xpGwtDevPlugin.dll"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\WINNT_x86-msvc\lib&quot;"
-				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
-				SubSystem="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(IntDir)\$(TargetName).lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Release90"
-			IntermediateDirectory="Release90"
-			ConfigurationType="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="3"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff90\include;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\mozilla&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\WINNT_x86-msvc\include&quot;;&quot;..\..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpconnect&quot;"
-				PreprocessorDefinitions="WIN32;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF8;GECKO_VERSION=9000;$(NOINHERIT)"
-				ExceptionHandling="1"
-				RuntimeLibrary="0"
-				TreatWChar_tAsBuiltInType="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib Advapi32.lib xpcomglue_s.lib xpcom.lib nspr4.lib mozalloc.lib xul.lib mozjs.lib"
-				ShowProgress="2"
-				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff90\xpGwtDevPlugin.dll"
-				LinkIncremental="0"
-				AdditionalLibraryDirectories="&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\WINNT_x86-msvc\lib&quot;"
-				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				ImportLibrary="$(IntDir)\$(TargetName).lib"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\ExternalWrapper.h"
-				>
-			</File>
-			<File
-				RelativePath="..\FFSessionHandler.h"
-				>
-			</File>
-			<File
-				RelativePath="..\prebuilt\ff90\include\IOOPHM.h"
-				>
-			</File>
-			<File
-				RelativePath="..\JavaObject.h"
-				>
-			</File>
-			<File
-				RelativePath="..\JSRunner.h"
-				>
-			</File>
-			<File
-				RelativePath="..\mozincludes.h"
-				>
-			</File>
-			<File
-				RelativePath="..\Preferences.h"
-				>
-			</File>
-			<File
-				RelativePath="..\RootedObject.h"
-				>
-			</File>
-			<File
-				RelativePath="..\SessionData.h"
-				>
-			</File>
-			<File
-				RelativePath="..\XpcomDebug.h"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\common\AllowedConnections.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\BrowserChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ByteOrder.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\CheckVersionsMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ChooseTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Debug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\DebugLevel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FatalErrorMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FreeValueMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HashMap.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HostChannel.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeSpecialMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadJsniMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadModuleMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Message.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Platform.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ProtocolVersionMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\QuitMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ReturnMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\scoped_ptr\scoped_ptr.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ServerMethods.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SessionHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Socket.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SwitchTransportMessage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Value.h"
-					>
-				</File>
-			</Filter>
-			<Filter
-				Name="gecko"
-				>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\WINNT_x86-msvc\include\js-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\js\jsapi.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\js\jsautocfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\js\jscompat.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\js\jsconfig.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\WINNT_x86-msvc\include\jscpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\jscpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\jsinttypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\js\jslong.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\jsosdep.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\js\jsotypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\js\jsproto.tbl"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\js\jspubtd.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\js\jstypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\js\jsutil.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\WINNT_x86-msvc\include\mozilla-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpconnect\nsAXPCNativeCallContext.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsCOMPtr.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nscore.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\nscore.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsCycleCollector.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsDebug.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsError.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\widget\nsEvent.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsICategoryManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsIClassInfo.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsIClassInfoImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsIComponentManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\nsIEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\nsIException.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\nsIExceptionService.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsIFactory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsIGenericFactory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\necko\nsIHttpProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\nsIInterfaceInfo.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\nsIInterfaceInfoManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpconnect\nsIJSContextStack.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsIMemory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsIModule.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\caps\nsIPrincipal.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsIProgrammingLanguage.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\necko\nsIProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\necko\nsIProxiedProtocolHandler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpconnect\nsIScriptableInterfaces.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\dom\nsIScriptGlobalObject.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\dom\nsIScriptObjectPrincipal.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\caps\nsISecurityCheckedComponent.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\nsISerializable.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsIServiceManager.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\nsISimpleEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsISimpleEnumerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\nsISupports.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsISupports.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\nsISupportsBase.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsISupportsBase.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsISupportsImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\nsISupportsUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsISupportsUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsIURI.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\nsIVariant.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpconnect\nsIXPConnect.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsMemory.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\necko\nsNetCID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsrootidl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\nsrootidl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsServiceManagerUtils.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsStringAPI.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsTraceRefcnt.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsXPCOM.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsXPCOMCID.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsXPCOMStrings.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\pratom.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\prcpucfg.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\prinrval.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\prlock.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\prlog.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\prlong.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\obsolete\protypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\prthread.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\prtime.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\prtypes.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpconnect\xpccomponents.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpconnect\xpcexception.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpconnect\xpcjsid.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\WINNT_x86-msvc\include\xpcom-config.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\xpt_arena.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\xpt_struct.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\xptinfo.h"
-					>
-				</File>
-			</Filter>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-			<File
-				RelativePath="..\xpGwtDevPlugin.rc"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\ExternalWrapper.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\FFSessionHandler.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\JavaObject.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\JSRunner.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\ModuleOOPHM.cpp"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						GeneratePreprocessedFile="0"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\Preferences.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\XpcomDebug.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\xpGwtDevPlugin.def"
-				>
-			</File>
-			<Filter
-				Name="common"
-				>
-				<File
-					RelativePath="..\..\common\AllowedConnections.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\CheckVersionsMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ChooseTransportMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Debug.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FatalErrorMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\FreeValueMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\HostChannel.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\InvokeSpecialMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadJsniMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\LoadModuleMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ProtocolVersionMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ReturnMessage.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\ServerMethods.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\Socket.cpp"
-					>
-				</File>
-				<File
-					RelativePath="..\..\common\SwitchTransportMessage.cpp"
-					>
-				</File>
-			</Filter>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/plugins/xpcom/XpcomDebug.cpp b/plugins/xpcom/XpcomDebug.cpp
deleted file mode 100644
index eddc15b..0000000
--- a/plugins/xpcom/XpcomDebug.cpp
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include <cstring>
-
-#include "XpcomDebug.h"
-#include "JavaObject.h"
-
-#ifdef _WINDOWS
-// avoid deprecation warnings for strncpy
-#define strncpy(d,s,c) strncpy_s((d),(c),(s),(c))
-
-#include <cstdarg>
-inline int snprintf(char* buf, size_t buflen, const char* fmt, ...) {
-  va_list args;
-  va_start(args, fmt);
-  int n = _vsnprintf_s(buf, buflen, buflen, fmt, args);
-  va_end(args);
-  return n;
-}
-
-#endif
-
-std::string dumpJsVal(JSContext* ctx, jsval v) {
-  char buf[70];
-  if (JSVAL_IS_VOID(v)) {
-    strncpy(buf, "undef", sizeof(buf));
-  } else if (JSVAL_IS_NULL(v)) {
-    strncpy(buf, "null", sizeof(buf));
-#ifdef JSVAL_IS_OBJECT
-  } else if (JSVAL_IS_OBJECT(v)) {
-#else
-  } else if (!JSVAL_IS_PRIMITIVE(v)) {
-#endif
-    JSObject* obj = JSVAL_TO_OBJECT(v);
-    if (JavaObject::isJavaObject(ctx, obj)) {
-      int oid = JavaObject::getObjectId(ctx, obj);
-      snprintf(buf, sizeof(buf), "JavaObj(%d)", oid);
-    } else {
-      JSClass* jsClass = JS_GET_CLASS(ctx, obj);
-      const char* name = jsClass->name ? jsClass->name : "<null>";
-      snprintf(buf, sizeof(buf), "Object(%.20s @ %p)", name, obj);
-    }
-  } else if (JSVAL_IS_INT(v)) {
-    snprintf(buf, sizeof(buf), "int(%d)", JSVAL_TO_INT(v));
-  } else if (JSVAL_IS_DOUBLE(v)) {
-    double d;
-#if GECKO_VERSION < 2000
-    d= *JSVAL_TO_DOUBLE(v);
-#else
-    d = JSVAL_TO_DOUBLE(v);
-#endif //GECKO_VERSION
-    snprintf(buf, sizeof(buf), "double(%lf)", d);
-  } else if (JSVAL_IS_STRING(v)) {
-    JSString* str = JSVAL_TO_STRING(v);
-
-    size_t len = JS_GetStringEncodingLength(ctx, str);
-
-    const char* continued = "";
-    if (len > 20) {
-      len = 20;
-      continued = "...";
-    }
-    // TODO: trashes Unicode
-    snprintf(buf, sizeof(buf), "string(%.*s%s)", static_cast<int>(len),
-        JS_EncodeString(ctx, str), continued);
-  } else if (JSVAL_IS_BOOLEAN(v)) {
-    snprintf(buf, sizeof(buf), "bool(%s)", JSVAL_TO_BOOLEAN(v) ? "true"
-        : " false");
-  } else {
-    // TODO(acleung): When we run into this, use the other api to figure out what v is.
-    // snprintf(buf, sizeof(buf), "unknown(%08x)", (unsigned) v);
-  }
-  buf[sizeof(buf) - 1] = 0;
-  return std::string(buf);
-}
diff --git a/plugins/xpcom/XpcomDebug.h b/plugins/xpcom/XpcomDebug.h
deleted file mode 100644
index 4296ad2..0000000
--- a/plugins/xpcom/XpcomDebug.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef _H_XpcomDebug
-#define _H_XpcomDebug
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed 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.
- */
-
-#include <string>
-
-#include "mozincludes.h"
-#include "jsapi.h"
-
-std::string dumpJsVal(JSContext* ctx, jsval v);
-
-#endif
diff --git a/plugins/xpcom/getversion b/plugins/xpcom/getversion
deleted file mode 100755
index 7557e49..0000000
--- a/plugins/xpcom/getversion
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-# Wrapper to prevent failure if svnversion isn't available
-
-V=`svnversion ${PWD}/.. 2>/dev/null`
-if [ $? -gt 0 -o -z "$V" ]
-then
-  V='?'
-fi
-echo $V
-exit 0
diff --git a/plugins/xpcom/install-template.rdf b/plugins/xpcom/install-template.rdf
deleted file mode 100644
index 81b8307..0000000
--- a/plugins/xpcom/install-template.rdf
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0"?>
-<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-     xmlns:em="http://www.mozilla.org/2004/em-rdf#">
-
-  <Description about="urn:mozilla:install-manifest">
-    <em:id>gwt-dev-plugin@google.com</em:id>
-    <em:name>Google Web Toolkit Developer Plugin for Firefox</em:name>
-    <em:version>GWT_DEV_PLUGIN_VERSION</em:version>
-    <em:type>2</em:type>
-    <em:unpack>true</em:unpack>
-    <em:targetApplication>
-      <Description>
-        <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
-        <em:minVersion>3.0</em:minVersion>
-        <em:maxVersion>16.0.*</em:maxVersion>
-      </Description>
-
-    <!-- TODO: This seems to break Firefox 3.6. With this on, FF gets into a
-               infinity loop of requiring to restart. I suspect it is a bug
-               in that version that was fixed in later version.
-    <em:strictCompatibility>true</em:strictCompatibility>
-    -->
-
-    </em:targetApplication>
-
-    <!-- Front End MetaData -->
-    <em:description>A plugin to support GWT development-mode in XPCOM-based browsers</em:description>
-    <em:creator>Google, Inc.</em:creator>
-    <em:homepageURL>http://code.google.com/webtoolkit/</em:homepageURL>
-    <em:iconURL>chrome://gwt-dev-plugin/skin/icon.png</em:iconURL>
-
-    <em:targetPlatform>Linux_x86-gcc3</em:targetPlatform>
-    <em:targetPlatform>Linux_x86_64-gcc3</em:targetPlatform>
-    <em:targetPlatform>WINNT_x86-msvc</em:targetPlatform>
-    <em:targetPlatform>Darwin_x86-gcc3</em:targetPlatform>
-    <em:targetPlatform>Darwin_x86_64-gcc3</em:targetPlatform>
-    <em:targetPlatform>Darwin_ppc-gcc3</em:targetPlatform>
-
-    <em:optionsURL>chrome://gwt-dev-plugin/content/options.xul</em:optionsURL>
-
-    <!-- updates, see http://developer.mozilla.org/en/docs/Extension_Versioning%2C_Update_and_Compatibility#Update_RDF_Format -->
-    <em:updateURL><![CDATA[https://dl-ssl.google.com/gwt/plugins/firefox/gwt-dev-plugin-updates.rdf?guid=%ITEM_ID%&version=%ITEM_VERSION%&application=%APP_ID%&appversion=%APP_VERSION%&locale=%APP_LOCALE%&os=%APP_OS%&abi=%APP_ABI%]]></em:updateURL>
-
-    <!-- TODO
-    # replace default about dialog
-    <em:aboutURL>chrome://gwt-dmp/content/about.xul</em:aboutURL>
-
-    # more platforms - any others?
-    <em:targetPlatform>SunOS_sparc-sunc</em:targetPlatform>
-    <em:targetPlatform>SunOS_x86-sunc</em:targetPlatform>
-    <em:targetPlatform>SunOS_x86_64-sunc</em:targetPlatform>
-    <em:targetPlatform>FreeBSD_x86-gcc3</em:targetPlatform>
-    <em:targetPlatform>FreeBSD_x86_64-gcc3</em:targetPlatform>
-    -->
-
-  </Description>
-</RDF>
diff --git a/plugins/xpcom/mozincludes.h b/plugins/xpcom/mozincludes.h
deleted file mode 100755
index 80961cc..0000000
--- a/plugins/xpcom/mozincludes.h
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifndef _H_mozincludes
-#define _H_mozincludes
-
-// Defines private prototypes for copy constructor and assigment operator. Do
-// not implement these methods.
-#define DISALLOW_EVIL_CONSTRUCTORS(CLASS) \
- private:                                 \
-  CLASS(const CLASS&);                    \
-  CLASS& operator=(const CLASS&)
-
-#include "xpcom-config.h"
-#include "mozilla-config.h"
-
-// See https://developer.mozilla.org/en/SpiderMonkey/1.8.8
-#if GECKO_VERSION >= 13000
-
-// See https://bugzilla.mozilla.org/show_bug.cgi?id=417710
-//     https://bugzilla.mozilla.org/show_bug.cgi?id=723517 
-#define JS_GET_CLASS(cx, obj) JS_GetClass(obj)
-#define MOZ_JS_SetPrivate(cx, obj, data) JS_SetPrivate(obj, data)
-#define MOZ_JS_SetReservedSlot(cx, obj, index, v) JS_SetReservedSlot(obj, index, v)
-#define uintN unsigned int
-#define intN int
-#define jsdouble double
-#else
-#define MOZ_JS_SetPrivate(cx, obj, data) JS_SetPrivate(cx, obj, data)
-#define MOZ_JS_SetReservedSlot(cx, obj, index, v) JS_SetReservedSlot(cx, obj, index, v)
-#endif
-
-#endif
diff --git a/plugins/xpcom/prebuilt/LICENSE.txt b/plugins/xpcom/prebuilt/LICENSE.txt
deleted file mode 100644
index 326366d..0000000
--- a/plugins/xpcom/prebuilt/LICENSE.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-Copyright 2008 Google Inc.
-
-Licensed 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.
diff --git a/plugins/xpcom/prebuilt/README.txt b/plugins/xpcom/prebuilt/README.txt
deleted file mode 100644
index 6f54ad5..0000000
--- a/plugins/xpcom/prebuilt/README.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Files common to all platforms should be placed under extension/...
-Files for FF1.5/2 should go under extension-ff2/...
-Files for FF3 should go under extension-ff3/...
-
-Files such as headers that need to be supplied pre-generated should be under
-ff2/ff3.
diff --git a/plugins/xpcom/prebuilt/extension/chrome.manifest b/plugins/xpcom/prebuilt/extension/chrome.manifest
deleted file mode 100644
index bd114d1..0000000
--- a/plugins/xpcom/prebuilt/extension/chrome.manifest
+++ /dev/null
@@ -1,99 +0,0 @@
-content gwt-dev-plugin content/
-skin gwt-dev-plugin classic/1.0 skin/
-
-# This file is parsed top to bottom. List the lowest versions first
-
-# Firefox 4
-binary-component lib/Linux_x86_64-gcc3/ff40/libgwt_dev_ff40.so ABI=Linux_x86_64-gcc3 appversion<=4.0.*
-binary-component lib/Linux_x86-gcc3/ff40/libgwt_dev_ff40.so ABI=Linux_x86-gcc3 appversion<=4.0.*
-binary-component lib/Darwin-gcc3/ff40/libgwt_dev_ff40.dylib ABI=Darwin_x86_64-gcc3 appversion<=4.0.*
-binary-component lib/Darwin-gcc3/ff40/libgwt_dev_ff40.dylib ABI=Darwin_x86-gcc3 appversion<=4.0.*
-binary-component lib/WINNT_x86-msvc/ff40/xpGwtDevPlugin.dll ABI=WINNT_x86-msvc appversion<=4.0.*
-
-# Firefox 5
-binary-component lib/Linux_x86_64-gcc3/ff50/libgwt_dev_ff50.so ABI=Linux_x86_64-gcc3 appversion<=5.0.*
-binary-component lib/Linux_x86-gcc3/ff50/libgwt_dev_ff50.so ABI=Linux_x86-gcc3 appversion<=5.0.*
-binary-component lib/Darwin-gcc3/ff50/libgwt_dev_ff50.dylib ABI=Darwin_x86_64-gcc3 appversion<=5.0.*
-binary-component lib/Darwin-gcc3/ff50/libgwt_dev_ff50.dylib ABI=Darwin_x86-gcc3 appversion<=5.0.*
-binary-component lib/WINNT_x86-msvc/ff50/xpGwtDevPlugin.dll ABI=WINNT_x86-msvc appversion<=5.0.*
-
-# Firefox 6
-binary-component lib/Linux_x86_64-gcc3/ff60/libgwt_dev_ff60.so ABI=Linux_x86_64-gcc3 appversion<=6.0.*
-binary-component lib/Linux_x86-gcc3/ff60/libgwt_dev_ff60.so ABI=Linux_x86-gcc3 appversion<=6.0.*
-binary-component lib/Darwin-gcc3/ff60/libgwt_dev_ff60.dylib ABI=Darwin_x86_64-gcc3 appversion<=6.0.*
-binary-component lib/Darwin-gcc3/ff60/libgwt_dev_ff60.dylib ABI=Darwin_x86-gcc3 appversion<=6.0.*
-binary-component lib/WINNT_x86-msvc/ff60/xpGwtDevPlugin.dll ABI=WINNT_x86-msvc appversion<=6.0.*
-
-# Firefox 7
-binary-component lib/Linux_x86_64-gcc3/ff70/libgwt_dev_ff70.so ABI=Linux_x86_64-gcc3 appversion<=7.0.*
-binary-component lib/Linux_x86-gcc3/ff70/libgwt_dev_ff70.so ABI=Linux_x86-gcc3 appversion<=7.0.*
-binary-component lib/Darwin-gcc3/ff70/libgwt_dev_ff70.dylib ABI=Darwin_x86_64-gcc3 appversion<=7.0.*
-binary-component lib/Darwin-gcc3/ff70/libgwt_dev_ff70.dylib ABI=Darwin_x86-gcc3 appversion<=7.0.*
-binary-component lib/WINNT_x86-msvc/ff70/xpGwtDevPlugin.dll ABI=WINNT_x86-msvc appversion<=7.0.*
-
-# Firefox 8
-binary-component lib/Linux_x86_64-gcc3/ff80/libgwt_dev_ff80.so ABI=Linux_x86_64-gcc3 appversion<=8.0.*
-binary-component lib/Linux_x86-gcc3/ff80/libgwt_dev_ff80.so ABI=Linux_x86-gcc3 appversion<=8.0.*
-binary-component lib/Darwin-gcc3/ff80/libgwt_dev_ff80.dylib ABI=Darwin_x86_64-gcc3 appversion<=8.0.*
-binary-component lib/Darwin-gcc3/ff80/libgwt_dev_ff80.dylib ABI=Darwin_x86-gcc3 appversion<=8.0.*
-binary-component lib/WINNT_x86-msvc/ff80/xpGwtDevPlugin.dll ABI=WINNT_x86-msvc appversion<=8.0.*
-
-# Firefox 9
-binary-component lib/Linux_x86_64-gcc3/ff90/libgwt_dev_ff90.so ABI=Linux_x86_64-gcc3 appversion<=9.0.*
-binary-component lib/Linux_x86-gcc3/ff90/libgwt_dev_ff90.so ABI=Linux_x86-gcc3 appversion<=9.0.*
-binary-component lib/Darwin-gcc3/ff90/libgwt_dev_ff90.dylib ABI=Darwin_x86_64-gcc3 appversion<=9.0.*
-binary-component lib/Darwin-gcc3/ff90/libgwt_dev_ff90.dylib ABI=Darwin_x86-gcc3 appversion<=9.0.*
-binary-component lib/WINNT_x86-msvc/ff90/xpGwtDevPlugin.dll ABI=WINNT_x86-msvc appversion<=9.0.*
-
-# Firefox 10
-binary-component lib/Linux_x86_64-gcc3/ff100/libgwt_dev_ff100.so ABI=Linux_x86_64-gcc3 appversion<=10.0.*
-binary-component lib/Linux_x86-gcc3/ff100/libgwt_dev_ff100.so ABI=Linux_x86-gcc3 appversion<=10.0.*
-binary-component lib/Darwin-gcc3/ff100/libgwt_dev_ff100.dylib ABI=Darwin_x86_64-gcc3 appversion<=10.0.*
-binary-component lib/Darwin-gcc3/ff100/libgwt_dev_ff100.dylib ABI=Darwin_x86-gcc3 appversion<=10.0.*
-binary-component lib/WINNT_x86-msvc/ff100/xpGwtDevPlugin.dll ABI=WINNT_x86-msvc appversion<=10.0.*
-
-# Firefox 11
-binary-component lib/Linux_x86_64-gcc3/ff110/libgwt_dev_ff110.so ABI=Linux_x86_64-gcc3 appversion<=11.0.*
-binary-component lib/Linux_x86-gcc3/ff110/libgwt_dev_ff110.so ABI=Linux_x86-gcc3 appversion<=11.0.*
-binary-component lib/Darwin-gcc3/ff110/libgwt_dev_ff110.dylib ABI=Darwin_x86_64-gcc3 appversion<=11.0.*
-binary-component lib/Darwin-gcc3/ff110/libgwt_dev_ff110.dylib ABI=Darwin_x86-gcc3 appversion<=11.0.*
-binary-component lib/WINNT_x86-msvc/ff110/xpGwtDevPlugin.dll ABI=WINNT_x86-msvc appversion<=11.0.*
-
-# Firefox 12
-binary-component lib/Linux_x86_64-gcc3/ff120/libgwt_dev_ff120.so ABI=Linux_x86_64-gcc3 appversion<=12.0.*
-binary-component lib/Linux_x86-gcc3/ff120/libgwt_dev_ff120.so ABI=Linux_x86-gcc3 appversion<=12.0.*
-binary-component lib/Darwin-gcc3/ff120/libgwt_dev_ff120.dylib ABI=Darwin_x86_64-gcc3 appversion<=12.0.*
-binary-component lib/Darwin-gcc3/ff120/libgwt_dev_ff120.dylib ABI=Darwin_x86-gcc3 appversion<=12.0.*
-binary-component lib/WINNT_x86-msvc/ff120/xpGwtDevPlugin.dll ABI=WINNT_x86-msvc appversion<=12.0.*
-
-# Firefox 13
-binary-component lib/Linux_x86_64-gcc3/ff130/libgwt_dev_ff130.so ABI=Linux_x86_64-gcc3 appversion<=13.0.*
-binary-component lib/Linux_x86-gcc3/ff130/libgwt_dev_ff130.so ABI=Linux_x86-gcc3 appversion<=13.0.*
-binary-component lib/Darwin-gcc3/ff130/libgwt_dev_ff130.dylib ABI=Darwin_x86_64-gcc3 appversion<=13.0.*
-binary-component lib/Darwin-gcc3/ff130/libgwt_dev_ff130.dylib ABI=Darwin_x86-gcc3 appversion<=13.0.*
-binary-component lib/WINNT_x86-msvc/ff130/xpGwtDevPlugin.dll ABI=WINNT_x86-msvc appversion<=13.0.*
-
-# Firefox 14
-binary-component lib/Linux_x86_64-gcc3/ff140/libgwt_dev_ff140.so ABI=Linux_x86_64-gcc3 appversion<=14.0.*
-binary-component lib/Linux_x86-gcc3/ff140/libgwt_dev_ff140.so ABI=Linux_x86-gcc3 appversion<=14.0.*
-binary-component lib/Darwin-gcc3/ff140/libgwt_dev_ff140.dylib ABI=Darwin_x86_64-gcc3 appversion<=14.0.*
-binary-component lib/Darwin-gcc3/ff140/libgwt_dev_ff140.dylib ABI=Darwin_x86-gcc3 appversion<=14.0.*
-binary-component lib/WINNT_x86-msvc/ff140/xpGwtDevPlugin.dll ABI=WINNT_x86-msvc appversion<=14.0.*
-
-# Firefox 15
-binary-component lib/Linux_x86_64-gcc3/ff150/libgwt_dev_ff150.so ABI=Linux_x86_64-gcc3 appversion<=15.0.*
-binary-component lib/Linux_x86-gcc3/ff150/libgwt_dev_ff150.so ABI=Linux_x86-gcc3 appversion<=15.0.*
-binary-component lib/WINNT_x86-msvc/ff150/xpGwtDevPlugin.dll ABI=WINNT_x86-msvc appversion<=15.0.*
-binary-component lib/Darwin-gcc3/ff150/libgwt_dev_ff150.dylib ABI=Darwin_x86_64-gcc3 appversion<=15.0.*
-binary-component lib/Darwin-gcc3/ff150/libgwt_dev_ff150.dylib ABI=Darwin_x86-gcc3 appversion<=15.0.*
-
-# Firefox 16
-binary-component lib/Linux_x86_64-gcc3/ff160/libgwt_dev_ff160.so ABI=Linux_x86_64-gcc3 appversion<=16.0.*
-binary-component lib/Linux_x86-gcc3/ff160/libgwt_dev_ff160.so ABI=Linux_x86-gcc3 appversion<=16.0.*
-binary-component lib/WINNT_x86-msvc/ff160/xpGwtDevPlugin.dll ABI=WINNT_x86-msvc appversion<=16.0.*
-binary-component lib/Darwin-gcc3/ff160/libgwt_dev_ff160.dylib ABI=Darwin_x86_64-gcc3 appversion<=16.0.*
-binary-component lib/Darwin-gcc3/ff160/libgwt_dev_ff160.dylib ABI=Darwin_x86-gcc3 appversion<=16.0.*
-
-
-interfaces components/IOOPHM.xpt
-contract @gwt.google.com/ExternalWrapper;1 {028DD88B-6D65-401D-AAFD-17E497D15D09}
diff --git a/plugins/xpcom/prebuilt/extension/components/IOOPHM.xpt b/plugins/xpcom/prebuilt/extension/components/IOOPHM.xpt
deleted file mode 100644
index 683c881..0000000
--- a/plugins/xpcom/prebuilt/extension/components/IOOPHM.xpt
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/components/stub.js b/plugins/xpcom/prebuilt/extension/components/stub.js
deleted file mode 100644
index 8df702b..0000000
--- a/plugins/xpcom/prebuilt/extension/components/stub.js
+++ /dev/null
@@ -1,115 +0,0 @@
-// Copyright 2009, Google Inc.
-//
-// Redistribution and use in source and binary forms, with or without 
-// modification, are permitted provided that the following conditions are met:
-//
-//  1. Redistributions of source code must retain the above copyright notice, 
-//   this list of conditions and the following disclaimer.
-//  2. Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-//  3. Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
-// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
-// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
-// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Our binary is compiled against different versions of the Gecko SDK for
-// different versions of Firefox. But we want a single XPI so that users can
-// switch between versions of Firefox without having to change their Gears
-// version.
-
-// This JavaScript file is detected and loaded by Gecko when our extension is
-// installed. We then use nsIComponentRegistrar to tell Gecko where our real
-// components are located, depending on what version of Firefox we detect we are
-// running in.
-
-// NOTE: This file is only used pre Gecko 2.0 (FF4). The registration mechanism
-// in Gecko 2.0 allows the chrome.manifest to indicate the appropriate binary
-// component for each ABI.
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-// Detect which version of our lib we should use.
-function getLibFileName() {
-  var appInfo = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULAppInfo);
-  var geckoVersion = appInfo.platformVersion.substring(0, 3);
-
-  if (geckoVersion == "1.8") {
-    return "ff2";
-  }
-
-  if (geckoVersion.substring(0, 3) == "1.9") {
-    var firefoxVersion = appInfo.version.substring(0, 3);
-
-    if (firefoxVersion == "3.0") {
-      if (isFedora()) {
-        return "ff3+";
-      }
-      return "ff3";
-    }
-
-    if (firefoxVersion == "3.5") {
-      return "ff35";
-    }
-
-    if (firefoxVersion == "3.6") {
-      return "ff36";
-    }
-
-    if (firefoxVersion == "3.7" || firefoxVersion == "4.0") {
-      return "ff40";
-    }
-
-    throw "Unsupported Firefox version: " + firefoxVersion;
-  }
-
-  throw "Unsupported Gecko version: " + geckoVersion;
-}
-
-function getPlatform() {
-  var runtime = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULRuntime);
-
-  if (runtime.OS == "Darwin") {
-    return runtime.OS + "-gcc3";
-  }
-
-  return runtime.OS + "_" + runtime.XPCOMABI;
-}
-
-function isFedora() {
-  var navigator = Cc["@mozilla.org/network/protocol;1?name=http"].
-    getService(Ci.nsIHttpProtocolHandler);
-
-  return navigator.userAgent.indexOf("Fedora") != -1;
-}
-
-// This function is called by Firefox at installation time.
-function NSGetModule() {
-  return {
-    registerSelf: function(compMgr, location, loaderStr, type) {
-      var libFile = location.parent.parent;
-      libFile.append("lib");
-      libFile.append(getPlatform());
-      libFile.append(getLibFileName());
-
-      // Note: we register a directory instead of an individual file because
-      // Gecko will only load components with a specific file name pattern. We 
-      // don't want this file to have to know about that. Luckily, if you
-      // register a directory, Gecko will look inside the directory for files
-      // to load.
-      var compMgr = compMgr.QueryInterface(Ci.nsIComponentRegistrar);
-      compMgr.autoRegister(libFile);
-    }
-  }
-}
diff --git a/plugins/xpcom/prebuilt/extension/content/options.xul b/plugins/xpcom/prebuilt/extension/content/options.xul
deleted file mode 100644
index 202844e..0000000
--- a/plugins/xpcom/prebuilt/extension/content/options.xul
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
-
-<dialog buttons="accept"
-     id="gwt-dev-prefs"
-     title="GWT Developer Plugin Options"
-     onload="GwtDeveloperPlugin.onload()"
-     ondialogaccept="return true;"
-     xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-
-<script type="application/x-javascript"
-    src="chrome://gwt-dev-plugin/content/prefScript.js"/>
-
-<vbox flex="1">
-
-  <groupbox flex="1">
-    <caption>
-      <hbox>
-        <image src="chrome://gwt-dev-plugin/skin/warning.png"/>
-        <label value="Security Restrictions" style="font-weight: bold"/>
-      </hbox>
-    </caption>
-    <description width="55em">
-      The GWT Developer Plugin will open a TCP/IP connection to an
-      arbitrary host/port at the request of a web page.  To minimize security
-      risks, by default it will only connect to the local machine.  To allow
-      cross-machine debugging, you can add exceptions here -- include the exact
-      host name of the web and code server you will use for debugging, but do not
-      include any you do not trust.
-    </description>
-  </groupbox>
-
-  <hbox align="top" flex="1">
-    <hbox align="center" flex="1">
-      <label control="hostname" value="Host name: "/>
-      <textbox id="hostname" maxlength="40" flex="1"/>
-    </hbox>
-    <hbox align="center" flex="1">
-      <label control="codeserver" value="Code server: "/>
-      <textbox id="codeserver" maxlength="40" flex="1"/>
-    </hbox>
-    <radiogroup id="incexc">
-      <radio id="include" label="Include" selected="true"/>
-      <radio id="exclude" label="Exclude"/>
-    </radiogroup>
-    <button id="addButton" label="Add Entry" oncommand="GwtDeveloperPlugin.addEntry()"/>
-  </hbox>
-
-  <listbox id="accessListListbox" rows="5">
-    <listhead>
-      <listheader label="Inc/Exc"/>
-      <listheader label="Host Name"/>
-      <listheader label="Code Server"/>
-    </listhead>
-    <listcols>
-      <listcol/>
-      <listcol flex="1"/>
-      <listcol flex="1"/>
-    </listcols>
-  </listbox>
-
-  <hbox>
-    <button id="removeButton" label="Remove Selected"
-        oncommand="GwtDeveloperPlugin.removeEntry()"/>
-    <!-- TODO(jat): add move up/down buttons -->
-  </hbox>
-
-</vbox>
-
-</dialog>
diff --git a/plugins/xpcom/prebuilt/extension/content/prefScript.js b/plugins/xpcom/prebuilt/extension/content/prefScript.js
deleted file mode 100644
index deb34e9..0000000
--- a/plugins/xpcom/prebuilt/extension/content/prefScript.js
+++ /dev/null
@@ -1,115 +0,0 @@
-var GwtDeveloperPlugin = {
-
-// Add a new entry when the Add Entry button is clicked.
-addEntry: function() {
-  var prefs = this.getAccessList();
-  var hostname = document.getElementById("hostname").value;
-  if (!hostname || hostname.length == 0) {
-    alert("No host name provided");
-    return;
-  }
-  if (hostname.indexOf(",") >=0 || hostname.indexOf("!") >= 0 || hostname.indexOf("/") >= 0) {
-    alert("Host name must not contain ',', '!', or '/'");
-    return;
-  }
-  var codeserver = document.getElementById("codeserver").value;
-  if (!codeserver || codeserver.length == 0) {
-    alert("No code server provided");
-    return;
-  }
-  if (codeserver.indexOf(",") >=0 || codeserver.indexOf("!") >= 0 || codeserver.indexOf("/") >= 0) {
-    alert("Code server must not contain ',', '!', or '/'");
-    return;
-  }
-  var exclude = document.getElementById("exclude");
-  var incText;
-  var prefix = "";
-  if (exclude.selected) {
-    incText = "Exclude";
-    prefix = "!";
-  } else {
-    incText = "Include";
-  }
-  var listboxEntry = this.makeLBE(incText, hostname, codeserver);
-  var prefsEntry = prefix + hostname + '/' + codeserver;
-  var listbox = document.getElementById("accessListListbox");
-  listbox.appendChild(listboxEntry);
-  prefs.push(prefsEntry.toString());
-  this.saveAccessList(prefs);
-},
-
-// Remove the selected entry when the Remove Entry button is clicked.
-removeEntry: function() {
-  var listbox = document.getElementById("accessListListbox");
-  var idx = listbox.selectedIndex;
-  if (idx >= 0) {
-    listbox.removeItemAt(idx);
-    var prefs = this.getAccessList();
-    prefs.splice(idx, 1);
-    this.saveAccessList(prefs);
-  }
-},
-
-// Populate the listbox when the dialog window is loaded
-onload: function() {
-  var listbox = document.getElementById("accessListListbox");
-  var prefs = this.getAccessList();
-  for (var i = 0 ; i < prefs.length; ++i) {
-    var pref = prefs[i];
-    var hostname = pref;
-    var incexc = "Include";
-    if (pref.length > 0 && pref.charAt(0) == "!") {
-      hostname = hostname.substr(1);
-      incexc = "Exclude";
-    }  
-    var codeserver = "localhost";
-    var slash = hostname.indexOf("/");
-    if( slash >= 0 )
-    {
-      codeserver = hostname.substr(slash+1);
-      hostname   = hostname.substr(0,slash);
-    }
-    var listboxEntry = this.makeLBE(incexc, hostname, codeserver);
-    listbox.appendChild(listboxEntry);
-  }
-},
-
-// Internal - create a entry for the list box
-makeLBE: function(inc, hostname, codeserver) {
-  var listboxEntry = document.createElement("listitem");
-  var lbeInc = document.createElement("listcell");
-  lbeInc.setAttribute("label", inc);
-  listboxEntry.appendChild(lbeInc);
-  var lbeHost = document.createElement("listcell");
-  lbeHost.setAttribute("label", hostname);
-  listboxEntry.appendChild(lbeHost);
-  var lbeCode = document.createElement("listcell");
-  lbeCode.setAttribute("label", codeserver);
-  listboxEntry.appendChild(lbeCode);
-  return listboxEntry;
-},
-
-// Internal - load the access list from the gwt-dev-plugin.accessList
-// preference
-getAccessList: function() {
-  var prefServ = Components.classes["@mozilla.org/preferences-service;1"]
-                  .getService(Components.interfaces.nsIPrefService);
-  var prefs = prefServ.getBranch("gwt-dev-plugin.");
-  var pref = prefs.getCharPref("accessList");
-  if (!pref) {
-    return [];
-  }
-  return pref.split(",");
-},
-
-// Internal - save the access list to the gwt-dev-plugin.accessList
-// preference
-saveAccessList: function(list) {
-  var prefServ = Components.classes["@mozilla.org/preferences-service;1"]
-                  .getService(Components.interfaces.nsIPrefService);
-  var prefs = prefServ.getBranch("gwt-dev-plugin.");
-  prefs.setCharPref("accessList", list.join(","));
-  prefServ.savePrefFile(null);
-}
-
-};
diff --git a/plugins/xpcom/prebuilt/extension/defaults/preferences/defaults.js b/plugins/xpcom/prebuilt/extension/defaults/preferences/defaults.js
deleted file mode 100644
index 29b3f76..0000000
--- a/plugins/xpcom/prebuilt/extension/defaults/preferences/defaults.js
+++ /dev/null
@@ -1 +0,0 @@
-pref("gwt-dev-plugin.accessList", "");
diff --git a/plugins/xpcom/prebuilt/extension/icon.png b/plugins/xpcom/prebuilt/extension/icon.png
deleted file mode 100644
index 7ba8270..0000000
--- a/plugins/xpcom/prebuilt/extension/icon.png
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff100/libgwt_dev_ff100.dylib b/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff100/libgwt_dev_ff100.dylib
deleted file mode 100755
index 5d29200..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff100/libgwt_dev_ff100.dylib
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff110/libgwt_dev_ff110.dylib b/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff110/libgwt_dev_ff110.dylib
deleted file mode 100755
index 2d7b35f..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff110/libgwt_dev_ff110.dylib
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff120/libgwt_dev_ff120.dylib b/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff120/libgwt_dev_ff120.dylib
deleted file mode 100755
index 68599c2..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff120/libgwt_dev_ff120.dylib
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff130/libgwt_dev_ff130.dylib b/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff130/libgwt_dev_ff130.dylib
deleted file mode 100755
index 03501fa..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff130/libgwt_dev_ff130.dylib
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff140/libgwt_dev_ff140.dylib b/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff140/libgwt_dev_ff140.dylib
deleted file mode 100755
index 7d621cc..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff140/libgwt_dev_ff140.dylib
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff150/libgwt_dev_ff150.dylib b/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff150/libgwt_dev_ff150.dylib
deleted file mode 100755
index 010c13a..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff150/libgwt_dev_ff150.dylib
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff160/libgwt_dev_ff160.dylib b/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff160/libgwt_dev_ff160.dylib
deleted file mode 100755
index ae1b58d8..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff160/libgwt_dev_ff160.dylib
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff3/libgwt_dev_ff3.dylib b/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff3/libgwt_dev_ff3.dylib
deleted file mode 100755
index a51473a..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff3/libgwt_dev_ff3.dylib
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff35/libgwt_dev_ff35.dylib b/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff35/libgwt_dev_ff35.dylib
deleted file mode 100755
index 2226927..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff35/libgwt_dev_ff35.dylib
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff36/libgwt_dev_ff36.dylib b/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff36/libgwt_dev_ff36.dylib
deleted file mode 100755
index d030ed1..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff36/libgwt_dev_ff36.dylib
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff40/libgwt_dev_ff40.dylib b/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff40/libgwt_dev_ff40.dylib
deleted file mode 100755
index daeaab3..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff40/libgwt_dev_ff40.dylib
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff50/libgwt_dev_ff50.dylib b/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff50/libgwt_dev_ff50.dylib
deleted file mode 100755
index 6998a72..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff50/libgwt_dev_ff50.dylib
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff60/libgwt_dev_ff60.dylib b/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff60/libgwt_dev_ff60.dylib
deleted file mode 100755
index 507b1cf..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff60/libgwt_dev_ff60.dylib
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff70/libgwt_dev_ff70.dylib b/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff70/libgwt_dev_ff70.dylib
deleted file mode 100755
index 5905200..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff70/libgwt_dev_ff70.dylib
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff80/libgwt_dev_ff80.dylib b/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff80/libgwt_dev_ff80.dylib
deleted file mode 100755
index 52ffe0d..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff80/libgwt_dev_ff80.dylib
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff90/libgwt_dev_ff90.dylib b/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff90/libgwt_dev_ff90.dylib
deleted file mode 100755
index 8b6b066..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff90/libgwt_dev_ff90.dylib
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff100/libgwt_dev_ff100.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff100/libgwt_dev_ff100.so
deleted file mode 100755
index 5cf9327..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff100/libgwt_dev_ff100.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff110/libgwt_dev_ff110.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff110/libgwt_dev_ff110.so
deleted file mode 100755
index 868bc12..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff110/libgwt_dev_ff110.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff120/libgwt_dev_ff120.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff120/libgwt_dev_ff120.so
deleted file mode 100755
index 38ca71c..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff120/libgwt_dev_ff120.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff130/libgwt_dev_ff130.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff130/libgwt_dev_ff130.so
deleted file mode 100755
index 7aca049..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff130/libgwt_dev_ff130.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff140/libgwt_dev_ff140.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff140/libgwt_dev_ff140.so
deleted file mode 100755
index ea9ebdb..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff140/libgwt_dev_ff140.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff150/libgwt_dev_ff150.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff150/libgwt_dev_ff150.so
deleted file mode 100755
index 3edb34f..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff150/libgwt_dev_ff150.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff160/libgwt_dev_ff160.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff160/libgwt_dev_ff160.so
deleted file mode 100755
index 9a29135..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff160/libgwt_dev_ff160.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff3+/libgwt_dev_ff3+.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff3+/libgwt_dev_ff3+.so
deleted file mode 100755
index 68135ba..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff3+/libgwt_dev_ff3+.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff3/libgwt_dev_ff3.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff3/libgwt_dev_ff3.so
deleted file mode 100755
index c467d43..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff3/libgwt_dev_ff3.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff35/libgwt_dev_ff35.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff35/libgwt_dev_ff35.so
deleted file mode 100755
index 8fd8729..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff35/libgwt_dev_ff35.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff36/libgwt_dev_ff36.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff36/libgwt_dev_ff36.so
deleted file mode 100755
index b54bcdc..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff36/libgwt_dev_ff36.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff40/libgwt_dev_ff40.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff40/libgwt_dev_ff40.so
deleted file mode 100755
index 362cf1a..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff40/libgwt_dev_ff40.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff50/libgwt_dev_ff50.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff50/libgwt_dev_ff50.so
deleted file mode 100755
index 34d0f56..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff50/libgwt_dev_ff50.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff60/libgwt_dev_ff60.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff60/libgwt_dev_ff60.so
deleted file mode 100755
index 3418aa6..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff60/libgwt_dev_ff60.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff70/libgwt_dev_ff70.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff70/libgwt_dev_ff70.so
deleted file mode 100755
index 58b452f..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff70/libgwt_dev_ff70.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff80/libgwt_dev_ff80.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff80/libgwt_dev_ff80.so
deleted file mode 100755
index fa6a37f..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff80/libgwt_dev_ff80.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff90/libgwt_dev_ff90.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff90/libgwt_dev_ff90.so
deleted file mode 100755
index 820b2b2..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff90/libgwt_dev_ff90.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff100/libgwt_dev_ff100.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff100/libgwt_dev_ff100.so
deleted file mode 100755
index c482702..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff100/libgwt_dev_ff100.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff110/libgwt_dev_ff110.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff110/libgwt_dev_ff110.so
deleted file mode 100755
index c612e7a..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff110/libgwt_dev_ff110.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff120/libgwt_dev_ff120.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff120/libgwt_dev_ff120.so
deleted file mode 100755
index 65df393..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff120/libgwt_dev_ff120.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff130/libgwt_dev_ff130.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff130/libgwt_dev_ff130.so
deleted file mode 100755
index cead4df..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff130/libgwt_dev_ff130.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff140/libgwt_dev_ff140.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff140/libgwt_dev_ff140.so
deleted file mode 100755
index 48ab7ee..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff140/libgwt_dev_ff140.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff150/libgwt_dev_ff150.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff150/libgwt_dev_ff150.so
deleted file mode 100755
index ae46bd8..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff150/libgwt_dev_ff150.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff160/libgwt_dev_ff160.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff160/libgwt_dev_ff160.so
deleted file mode 100755
index 3296f0f..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff160/libgwt_dev_ff160.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff3+/libgwt_dev_ff3+.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff3+/libgwt_dev_ff3+.so
deleted file mode 100755
index 5751ab2..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff3+/libgwt_dev_ff3+.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff3/libgwt_dev_ff3.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff3/libgwt_dev_ff3.so
deleted file mode 100755
index 4f4471f..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff3/libgwt_dev_ff3.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff35/libgwt_dev_ff35.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff35/libgwt_dev_ff35.so
deleted file mode 100755
index 29ff650..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff35/libgwt_dev_ff35.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff36/libgwt_dev_ff36.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff36/libgwt_dev_ff36.so
deleted file mode 100755
index f36c567..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff36/libgwt_dev_ff36.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff40/libgwt_dev_ff40.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff40/libgwt_dev_ff40.so
deleted file mode 100755
index cd8368b..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff40/libgwt_dev_ff40.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff50/libgwt_dev_ff50.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff50/libgwt_dev_ff50.so
deleted file mode 100755
index a54dc00..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff50/libgwt_dev_ff50.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff60/libgwt_dev_ff60.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff60/libgwt_dev_ff60.so
deleted file mode 100755
index 24bba4e..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff60/libgwt_dev_ff60.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff70/libgwt_dev_ff70.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff70/libgwt_dev_ff70.so
deleted file mode 100755
index ac3f55e..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff70/libgwt_dev_ff70.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff80/libgwt_dev_ff80.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff80/libgwt_dev_ff80.so
deleted file mode 100755
index 3ea691d..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff80/libgwt_dev_ff80.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff90/libgwt_dev_ff90.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff90/libgwt_dev_ff90.so
deleted file mode 100755
index 87d66a9..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff90/libgwt_dev_ff90.so
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff100/xpGwtDevPlugin.dll b/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff100/xpGwtDevPlugin.dll
deleted file mode 100755
index c174d65..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff100/xpGwtDevPlugin.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff110/xpGwtDevPlugin.dll b/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff110/xpGwtDevPlugin.dll
deleted file mode 100755
index 351b046..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff110/xpGwtDevPlugin.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff120/xpGwtDevPlugin.dll b/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff120/xpGwtDevPlugin.dll
deleted file mode 100755
index d23f4f7..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff120/xpGwtDevPlugin.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff130/xpGwtDevPlugin.dll b/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff130/xpGwtDevPlugin.dll
deleted file mode 100755
index 5b55c0b..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff130/xpGwtDevPlugin.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff140/xpGwtDevPlugin.dll b/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff140/xpGwtDevPlugin.dll
deleted file mode 100755
index 5a0ed7f..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff140/xpGwtDevPlugin.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff150/xpGwtDevPlugin.dll b/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff150/xpGwtDevPlugin.dll
deleted file mode 100755
index 63684a0..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff150/xpGwtDevPlugin.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff160/xpGwtDevPlugin.dll b/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff160/xpGwtDevPlugin.dll
deleted file mode 100755
index cef19b3..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff160/xpGwtDevPlugin.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff3/xpGwtDevPlugin.dll b/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff3/xpGwtDevPlugin.dll
deleted file mode 100755
index cd065b0..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff3/xpGwtDevPlugin.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff35/xpGwtDevPlugin.dll b/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff35/xpGwtDevPlugin.dll
deleted file mode 100755
index 9396adf..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff35/xpGwtDevPlugin.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff36/xpGwtDevPlugin.dll b/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff36/xpGwtDevPlugin.dll
deleted file mode 100755
index 5ef91b3..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff36/xpGwtDevPlugin.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff40/xpGwtDevPlugin.dll b/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff40/xpGwtDevPlugin.dll
deleted file mode 100755
index b8b0ee5..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff40/xpGwtDevPlugin.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff50/xpGwtDevPlugin.dll b/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff50/xpGwtDevPlugin.dll
deleted file mode 100755
index 7f517e2..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff50/xpGwtDevPlugin.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff60/xpGwtDevPlugin.dll b/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff60/xpGwtDevPlugin.dll
deleted file mode 100755
index 3ef13fb..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff60/xpGwtDevPlugin.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff70/xpGwtDevPlugin.dll b/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff70/xpGwtDevPlugin.dll
deleted file mode 100755
index 0b72e7c..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff70/xpGwtDevPlugin.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff80/xpGwtDevPlugin.dll b/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff80/xpGwtDevPlugin.dll
deleted file mode 100755
index 38aaa82..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff80/xpGwtDevPlugin.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff90/xpGwtDevPlugin.dll b/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff90/xpGwtDevPlugin.dll
deleted file mode 100755
index bcf7476..0000000
--- a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff90/xpGwtDevPlugin.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/skin/README.txt b/plugins/xpcom/prebuilt/extension/skin/README.txt
deleted file mode 100644
index 7d212f0..0000000
--- a/plugins/xpcom/prebuilt/extension/skin/README.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-warning.png generated from public domain SVG file found at
-  http://www.wowwiki.com/File:Icon-warning.svg
diff --git a/plugins/xpcom/prebuilt/extension/skin/icon.png b/plugins/xpcom/prebuilt/extension/skin/icon.png
deleted file mode 100644
index 7ba8270..0000000
--- a/plugins/xpcom/prebuilt/extension/skin/icon.png
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/skin/warning.png b/plugins/xpcom/prebuilt/extension/skin/warning.png
deleted file mode 100644
index 55a203b..0000000
--- a/plugins/xpcom/prebuilt/extension/skin/warning.png
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/ff100/include/IOOPHM.h b/plugins/xpcom/prebuilt/ff100/include/IOOPHM.h
deleted file mode 100644
index e37792d..0000000
--- a/plugins/xpcom/prebuilt/ff100/include/IOOPHM.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * DO NOT EDIT.  THIS FILE IS GENERATED FROM IOOPHM.idl
- */
-
-#ifndef __gen_IOOPHM_h__
-#define __gen_IOOPHM_h__
-
-
-#ifndef __gen_nsISupports_h__
-#include "nsISupports.h"
-#endif
-
-/* For IDL files that don't want to include root IDL files. */
-#ifndef NS_NO_VTABLE
-#define NS_NO_VTABLE
-#endif
-class nsIDOMWindow; /* forward declaration */
-
-
-/* starting interface:    IOOPHM */
-#define IOOPHM_IID_STR "90cef17b-c3fe-4251-af68-4381b3d938a0"
-
-#define IOOPHM_IID \
-  {0x90cef17b, 0xc3fe, 0x4251, \
-    { 0xaf, 0x68, 0x43, 0x81, 0xb3, 0xd9, 0x38, 0xa0 }}
-
-class NS_NO_VTABLE NS_SCRIPTABLE IOOPHM : public nsISupports {
- public: 
-
-  NS_DECLARE_STATIC_IID_ACCESSOR(IOOPHM_IID)
-
-  /* boolean init (in nsIDOMWindow window); */
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM) = 0;
-
-  /* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM) = 0;
-
-};
-
-  NS_DEFINE_STATIC_IID_ACCESSOR(IOOPHM, IOOPHM_IID)
-
-/* Use this macro when declaring classes that implement this interface. */
-#define NS_DECL_IOOPHM \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM); \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM); 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object. */
-#define NS_FORWARD_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM) { return _to Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM) { return _to Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
-#define NS_FORWARD_SAFE_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-#if 0
-/* Use the code below as a template for the implementation class for this interface. */
-
-/* Header file */
-class _MYCLASS_ : public IOOPHM
-{
-public:
-  NS_DECL_ISUPPORTS
-  NS_DECL_IOOPHM
-
-  _MYCLASS_();
-
-private:
-  ~_MYCLASS_();
-
-protected:
-  /* additional members */
-};
-
-/* Implementation file */
-NS_IMPL_ISUPPORTS1(_MYCLASS_, IOOPHM)
-
-_MYCLASS_::_MYCLASS_()
-{
-  /* member initializers and constructor code */
-}
-
-_MYCLASS_::~_MYCLASS_()
-{
-  /* destructor code */
-}
-
-/* boolean init (in nsIDOMWindow window); */
-NS_IMETHODIMP _MYCLASS_::Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-NS_IMETHODIMP _MYCLASS_::Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* End of implementation class template. */
-#endif
-
-
-#endif /* __gen_IOOPHM_h__ */
diff --git a/plugins/xpcom/prebuilt/ff110/include/IOOPHM.h b/plugins/xpcom/prebuilt/ff110/include/IOOPHM.h
deleted file mode 100644
index e37792d..0000000
--- a/plugins/xpcom/prebuilt/ff110/include/IOOPHM.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * DO NOT EDIT.  THIS FILE IS GENERATED FROM IOOPHM.idl
- */
-
-#ifndef __gen_IOOPHM_h__
-#define __gen_IOOPHM_h__
-
-
-#ifndef __gen_nsISupports_h__
-#include "nsISupports.h"
-#endif
-
-/* For IDL files that don't want to include root IDL files. */
-#ifndef NS_NO_VTABLE
-#define NS_NO_VTABLE
-#endif
-class nsIDOMWindow; /* forward declaration */
-
-
-/* starting interface:    IOOPHM */
-#define IOOPHM_IID_STR "90cef17b-c3fe-4251-af68-4381b3d938a0"
-
-#define IOOPHM_IID \
-  {0x90cef17b, 0xc3fe, 0x4251, \
-    { 0xaf, 0x68, 0x43, 0x81, 0xb3, 0xd9, 0x38, 0xa0 }}
-
-class NS_NO_VTABLE NS_SCRIPTABLE IOOPHM : public nsISupports {
- public: 
-
-  NS_DECLARE_STATIC_IID_ACCESSOR(IOOPHM_IID)
-
-  /* boolean init (in nsIDOMWindow window); */
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM) = 0;
-
-  /* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM) = 0;
-
-};
-
-  NS_DEFINE_STATIC_IID_ACCESSOR(IOOPHM, IOOPHM_IID)
-
-/* Use this macro when declaring classes that implement this interface. */
-#define NS_DECL_IOOPHM \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM); \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM); 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object. */
-#define NS_FORWARD_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM) { return _to Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM) { return _to Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
-#define NS_FORWARD_SAFE_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-#if 0
-/* Use the code below as a template for the implementation class for this interface. */
-
-/* Header file */
-class _MYCLASS_ : public IOOPHM
-{
-public:
-  NS_DECL_ISUPPORTS
-  NS_DECL_IOOPHM
-
-  _MYCLASS_();
-
-private:
-  ~_MYCLASS_();
-
-protected:
-  /* additional members */
-};
-
-/* Implementation file */
-NS_IMPL_ISUPPORTS1(_MYCLASS_, IOOPHM)
-
-_MYCLASS_::_MYCLASS_()
-{
-  /* member initializers and constructor code */
-}
-
-_MYCLASS_::~_MYCLASS_()
-{
-  /* destructor code */
-}
-
-/* boolean init (in nsIDOMWindow window); */
-NS_IMETHODIMP _MYCLASS_::Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-NS_IMETHODIMP _MYCLASS_::Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* End of implementation class template. */
-#endif
-
-
-#endif /* __gen_IOOPHM_h__ */
diff --git a/plugins/xpcom/prebuilt/ff120/include/IOOPHM.h b/plugins/xpcom/prebuilt/ff120/include/IOOPHM.h
deleted file mode 100644
index e37792d..0000000
--- a/plugins/xpcom/prebuilt/ff120/include/IOOPHM.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * DO NOT EDIT.  THIS FILE IS GENERATED FROM IOOPHM.idl
- */
-
-#ifndef __gen_IOOPHM_h__
-#define __gen_IOOPHM_h__
-
-
-#ifndef __gen_nsISupports_h__
-#include "nsISupports.h"
-#endif
-
-/* For IDL files that don't want to include root IDL files. */
-#ifndef NS_NO_VTABLE
-#define NS_NO_VTABLE
-#endif
-class nsIDOMWindow; /* forward declaration */
-
-
-/* starting interface:    IOOPHM */
-#define IOOPHM_IID_STR "90cef17b-c3fe-4251-af68-4381b3d938a0"
-
-#define IOOPHM_IID \
-  {0x90cef17b, 0xc3fe, 0x4251, \
-    { 0xaf, 0x68, 0x43, 0x81, 0xb3, 0xd9, 0x38, 0xa0 }}
-
-class NS_NO_VTABLE NS_SCRIPTABLE IOOPHM : public nsISupports {
- public: 
-
-  NS_DECLARE_STATIC_IID_ACCESSOR(IOOPHM_IID)
-
-  /* boolean init (in nsIDOMWindow window); */
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM) = 0;
-
-  /* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM) = 0;
-
-};
-
-  NS_DEFINE_STATIC_IID_ACCESSOR(IOOPHM, IOOPHM_IID)
-
-/* Use this macro when declaring classes that implement this interface. */
-#define NS_DECL_IOOPHM \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM); \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM); 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object. */
-#define NS_FORWARD_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM) { return _to Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM) { return _to Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
-#define NS_FORWARD_SAFE_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-#if 0
-/* Use the code below as a template for the implementation class for this interface. */
-
-/* Header file */
-class _MYCLASS_ : public IOOPHM
-{
-public:
-  NS_DECL_ISUPPORTS
-  NS_DECL_IOOPHM
-
-  _MYCLASS_();
-
-private:
-  ~_MYCLASS_();
-
-protected:
-  /* additional members */
-};
-
-/* Implementation file */
-NS_IMPL_ISUPPORTS1(_MYCLASS_, IOOPHM)
-
-_MYCLASS_::_MYCLASS_()
-{
-  /* member initializers and constructor code */
-}
-
-_MYCLASS_::~_MYCLASS_()
-{
-  /* destructor code */
-}
-
-/* boolean init (in nsIDOMWindow window); */
-NS_IMETHODIMP _MYCLASS_::Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-NS_IMETHODIMP _MYCLASS_::Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* End of implementation class template. */
-#endif
-
-
-#endif /* __gen_IOOPHM_h__ */
diff --git a/plugins/xpcom/prebuilt/ff130/include/IOOPHM.h b/plugins/xpcom/prebuilt/ff130/include/IOOPHM.h
deleted file mode 100644
index e37792d..0000000
--- a/plugins/xpcom/prebuilt/ff130/include/IOOPHM.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * DO NOT EDIT.  THIS FILE IS GENERATED FROM IOOPHM.idl
- */
-
-#ifndef __gen_IOOPHM_h__
-#define __gen_IOOPHM_h__
-
-
-#ifndef __gen_nsISupports_h__
-#include "nsISupports.h"
-#endif
-
-/* For IDL files that don't want to include root IDL files. */
-#ifndef NS_NO_VTABLE
-#define NS_NO_VTABLE
-#endif
-class nsIDOMWindow; /* forward declaration */
-
-
-/* starting interface:    IOOPHM */
-#define IOOPHM_IID_STR "90cef17b-c3fe-4251-af68-4381b3d938a0"
-
-#define IOOPHM_IID \
-  {0x90cef17b, 0xc3fe, 0x4251, \
-    { 0xaf, 0x68, 0x43, 0x81, 0xb3, 0xd9, 0x38, 0xa0 }}
-
-class NS_NO_VTABLE NS_SCRIPTABLE IOOPHM : public nsISupports {
- public: 
-
-  NS_DECLARE_STATIC_IID_ACCESSOR(IOOPHM_IID)
-
-  /* boolean init (in nsIDOMWindow window); */
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM) = 0;
-
-  /* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM) = 0;
-
-};
-
-  NS_DEFINE_STATIC_IID_ACCESSOR(IOOPHM, IOOPHM_IID)
-
-/* Use this macro when declaring classes that implement this interface. */
-#define NS_DECL_IOOPHM \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM); \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM); 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object. */
-#define NS_FORWARD_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM) { return _to Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM) { return _to Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
-#define NS_FORWARD_SAFE_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-#if 0
-/* Use the code below as a template for the implementation class for this interface. */
-
-/* Header file */
-class _MYCLASS_ : public IOOPHM
-{
-public:
-  NS_DECL_ISUPPORTS
-  NS_DECL_IOOPHM
-
-  _MYCLASS_();
-
-private:
-  ~_MYCLASS_();
-
-protected:
-  /* additional members */
-};
-
-/* Implementation file */
-NS_IMPL_ISUPPORTS1(_MYCLASS_, IOOPHM)
-
-_MYCLASS_::_MYCLASS_()
-{
-  /* member initializers and constructor code */
-}
-
-_MYCLASS_::~_MYCLASS_()
-{
-  /* destructor code */
-}
-
-/* boolean init (in nsIDOMWindow window); */
-NS_IMETHODIMP _MYCLASS_::Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-NS_IMETHODIMP _MYCLASS_::Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* End of implementation class template. */
-#endif
-
-
-#endif /* __gen_IOOPHM_h__ */
diff --git a/plugins/xpcom/prebuilt/ff140/include/IOOPHM.h b/plugins/xpcom/prebuilt/ff140/include/IOOPHM.h
deleted file mode 100644
index e37792d..0000000
--- a/plugins/xpcom/prebuilt/ff140/include/IOOPHM.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * DO NOT EDIT.  THIS FILE IS GENERATED FROM IOOPHM.idl
- */
-
-#ifndef __gen_IOOPHM_h__
-#define __gen_IOOPHM_h__
-
-
-#ifndef __gen_nsISupports_h__
-#include "nsISupports.h"
-#endif
-
-/* For IDL files that don't want to include root IDL files. */
-#ifndef NS_NO_VTABLE
-#define NS_NO_VTABLE
-#endif
-class nsIDOMWindow; /* forward declaration */
-
-
-/* starting interface:    IOOPHM */
-#define IOOPHM_IID_STR "90cef17b-c3fe-4251-af68-4381b3d938a0"
-
-#define IOOPHM_IID \
-  {0x90cef17b, 0xc3fe, 0x4251, \
-    { 0xaf, 0x68, 0x43, 0x81, 0xb3, 0xd9, 0x38, 0xa0 }}
-
-class NS_NO_VTABLE NS_SCRIPTABLE IOOPHM : public nsISupports {
- public: 
-
-  NS_DECLARE_STATIC_IID_ACCESSOR(IOOPHM_IID)
-
-  /* boolean init (in nsIDOMWindow window); */
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM) = 0;
-
-  /* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM) = 0;
-
-};
-
-  NS_DEFINE_STATIC_IID_ACCESSOR(IOOPHM, IOOPHM_IID)
-
-/* Use this macro when declaring classes that implement this interface. */
-#define NS_DECL_IOOPHM \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM); \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM); 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object. */
-#define NS_FORWARD_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM) { return _to Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM) { return _to Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
-#define NS_FORWARD_SAFE_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-#if 0
-/* Use the code below as a template for the implementation class for this interface. */
-
-/* Header file */
-class _MYCLASS_ : public IOOPHM
-{
-public:
-  NS_DECL_ISUPPORTS
-  NS_DECL_IOOPHM
-
-  _MYCLASS_();
-
-private:
-  ~_MYCLASS_();
-
-protected:
-  /* additional members */
-};
-
-/* Implementation file */
-NS_IMPL_ISUPPORTS1(_MYCLASS_, IOOPHM)
-
-_MYCLASS_::_MYCLASS_()
-{
-  /* member initializers and constructor code */
-}
-
-_MYCLASS_::~_MYCLASS_()
-{
-  /* destructor code */
-}
-
-/* boolean init (in nsIDOMWindow window); */
-NS_IMETHODIMP _MYCLASS_::Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-NS_IMETHODIMP _MYCLASS_::Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* End of implementation class template. */
-#endif
-
-
-#endif /* __gen_IOOPHM_h__ */
diff --git a/plugins/xpcom/prebuilt/ff150/include/IOOPHM.h b/plugins/xpcom/prebuilt/ff150/include/IOOPHM.h
deleted file mode 100644
index e37792d..0000000
--- a/plugins/xpcom/prebuilt/ff150/include/IOOPHM.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * DO NOT EDIT.  THIS FILE IS GENERATED FROM IOOPHM.idl
- */
-
-#ifndef __gen_IOOPHM_h__
-#define __gen_IOOPHM_h__
-
-
-#ifndef __gen_nsISupports_h__
-#include "nsISupports.h"
-#endif
-
-/* For IDL files that don't want to include root IDL files. */
-#ifndef NS_NO_VTABLE
-#define NS_NO_VTABLE
-#endif
-class nsIDOMWindow; /* forward declaration */
-
-
-/* starting interface:    IOOPHM */
-#define IOOPHM_IID_STR "90cef17b-c3fe-4251-af68-4381b3d938a0"
-
-#define IOOPHM_IID \
-  {0x90cef17b, 0xc3fe, 0x4251, \
-    { 0xaf, 0x68, 0x43, 0x81, 0xb3, 0xd9, 0x38, 0xa0 }}
-
-class NS_NO_VTABLE NS_SCRIPTABLE IOOPHM : public nsISupports {
- public: 
-
-  NS_DECLARE_STATIC_IID_ACCESSOR(IOOPHM_IID)
-
-  /* boolean init (in nsIDOMWindow window); */
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM) = 0;
-
-  /* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM) = 0;
-
-};
-
-  NS_DEFINE_STATIC_IID_ACCESSOR(IOOPHM, IOOPHM_IID)
-
-/* Use this macro when declaring classes that implement this interface. */
-#define NS_DECL_IOOPHM \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM); \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM); 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object. */
-#define NS_FORWARD_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM) { return _to Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM) { return _to Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
-#define NS_FORWARD_SAFE_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-#if 0
-/* Use the code below as a template for the implementation class for this interface. */
-
-/* Header file */
-class _MYCLASS_ : public IOOPHM
-{
-public:
-  NS_DECL_ISUPPORTS
-  NS_DECL_IOOPHM
-
-  _MYCLASS_();
-
-private:
-  ~_MYCLASS_();
-
-protected:
-  /* additional members */
-};
-
-/* Implementation file */
-NS_IMPL_ISUPPORTS1(_MYCLASS_, IOOPHM)
-
-_MYCLASS_::_MYCLASS_()
-{
-  /* member initializers and constructor code */
-}
-
-_MYCLASS_::~_MYCLASS_()
-{
-  /* destructor code */
-}
-
-/* boolean init (in nsIDOMWindow window); */
-NS_IMETHODIMP _MYCLASS_::Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-NS_IMETHODIMP _MYCLASS_::Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* End of implementation class template. */
-#endif
-
-
-#endif /* __gen_IOOPHM_h__ */
diff --git a/plugins/xpcom/prebuilt/ff160/include/IOOPHM.h b/plugins/xpcom/prebuilt/ff160/include/IOOPHM.h
deleted file mode 100644
index e37792d..0000000
--- a/plugins/xpcom/prebuilt/ff160/include/IOOPHM.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * DO NOT EDIT.  THIS FILE IS GENERATED FROM IOOPHM.idl
- */
-
-#ifndef __gen_IOOPHM_h__
-#define __gen_IOOPHM_h__
-
-
-#ifndef __gen_nsISupports_h__
-#include "nsISupports.h"
-#endif
-
-/* For IDL files that don't want to include root IDL files. */
-#ifndef NS_NO_VTABLE
-#define NS_NO_VTABLE
-#endif
-class nsIDOMWindow; /* forward declaration */
-
-
-/* starting interface:    IOOPHM */
-#define IOOPHM_IID_STR "90cef17b-c3fe-4251-af68-4381b3d938a0"
-
-#define IOOPHM_IID \
-  {0x90cef17b, 0xc3fe, 0x4251, \
-    { 0xaf, 0x68, 0x43, 0x81, 0xb3, 0xd9, 0x38, 0xa0 }}
-
-class NS_NO_VTABLE NS_SCRIPTABLE IOOPHM : public nsISupports {
- public: 
-
-  NS_DECLARE_STATIC_IID_ACCESSOR(IOOPHM_IID)
-
-  /* boolean init (in nsIDOMWindow window); */
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM) = 0;
-
-  /* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM) = 0;
-
-};
-
-  NS_DEFINE_STATIC_IID_ACCESSOR(IOOPHM, IOOPHM_IID)
-
-/* Use this macro when declaring classes that implement this interface. */
-#define NS_DECL_IOOPHM \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM); \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM); 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object. */
-#define NS_FORWARD_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM) { return _to Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM) { return _to Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
-#define NS_FORWARD_SAFE_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-#if 0
-/* Use the code below as a template for the implementation class for this interface. */
-
-/* Header file */
-class _MYCLASS_ : public IOOPHM
-{
-public:
-  NS_DECL_ISUPPORTS
-  NS_DECL_IOOPHM
-
-  _MYCLASS_();
-
-private:
-  ~_MYCLASS_();
-
-protected:
-  /* additional members */
-};
-
-/* Implementation file */
-NS_IMPL_ISUPPORTS1(_MYCLASS_, IOOPHM)
-
-_MYCLASS_::_MYCLASS_()
-{
-  /* member initializers and constructor code */
-}
-
-_MYCLASS_::~_MYCLASS_()
-{
-  /* destructor code */
-}
-
-/* boolean init (in nsIDOMWindow window); */
-NS_IMETHODIMP _MYCLASS_::Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-NS_IMETHODIMP _MYCLASS_::Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* End of implementation class template. */
-#endif
-
-
-#endif /* __gen_IOOPHM_h__ */
diff --git a/plugins/xpcom/prebuilt/ff3+/include/IOOPHM.h b/plugins/xpcom/prebuilt/ff3+/include/IOOPHM.h
deleted file mode 100644
index 169598e..0000000
--- a/plugins/xpcom/prebuilt/ff3+/include/IOOPHM.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * DO NOT EDIT.  THIS FILE IS GENERATED FROM IOOPHM.idl
- */
-
-#ifndef __gen_IOOPHM_h__
-#define __gen_IOOPHM_h__
-
-
-#ifndef __gen_nsISupports_h__
-#include "nsISupports.h"
-#endif
-
-/* For IDL files that don't want to include root IDL files. */
-#ifndef NS_NO_VTABLE
-#define NS_NO_VTABLE
-#endif
-class nsIDOMWindow; /* forward declaration */
-
-
-/* starting interface:    IOOPHM */
-#define IOOPHM_IID_STR "90cef17b-c3fe-4251-af68-4381b3d938a0"
-
-#define IOOPHM_IID \
-  {0x90cef17b, 0xc3fe, 0x4251, \
-    { 0xaf, 0x68, 0x43, 0x81, 0xb3, 0xd9, 0x38, 0xa0 }}
-
-class NS_NO_VTABLE NS_SCRIPTABLE IOOPHM : public nsISupports {
- public: 
-
-  NS_DECLARE_STATIC_IID_ACCESSOR(IOOPHM_IID)
-
-  /* boolean init (in nsIDOMWindow window); */
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval) = 0;
-
-  /* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval) = 0;
-
-};
-
-  NS_DEFINE_STATIC_IID_ACCESSOR(IOOPHM, IOOPHM_IID)
-
-/* Use this macro when declaring classes that implement this interface. */
-#define NS_DECL_IOOPHM \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval); \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval); 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object. */
-#define NS_FORWARD_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval) { return _to Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval) { return _to Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
-#define NS_FORWARD_SAFE_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-#if 0
-/* Use the code below as a template for the implementation class for this interface. */
-
-/* Header file */
-class _MYCLASS_ : public IOOPHM
-{
-public:
-  NS_DECL_ISUPPORTS
-  NS_DECL_IOOPHM
-
-  _MYCLASS_();
-
-private:
-  ~_MYCLASS_();
-
-protected:
-  /* additional members */
-};
-
-/* Implementation file */
-NS_IMPL_ISUPPORTS1(_MYCLASS_, IOOPHM)
-
-_MYCLASS_::_MYCLASS_()
-{
-  /* member initializers and constructor code */
-}
-
-_MYCLASS_::~_MYCLASS_()
-{
-  /* destructor code */
-}
-
-/* boolean init (in nsIDOMWindow window); */
-NS_IMETHODIMP _MYCLASS_::Init(nsIDOMWindow *window, PRBool *_retval)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-NS_IMETHODIMP _MYCLASS_::Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* End of implementation class template. */
-#endif
-
-
-#endif /* __gen_IOOPHM_h__ */
diff --git a/plugins/xpcom/prebuilt/ff3/include/IOOPHM.h b/plugins/xpcom/prebuilt/ff3/include/IOOPHM.h
deleted file mode 100644
index 169598e..0000000
--- a/plugins/xpcom/prebuilt/ff3/include/IOOPHM.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * DO NOT EDIT.  THIS FILE IS GENERATED FROM IOOPHM.idl
- */
-
-#ifndef __gen_IOOPHM_h__
-#define __gen_IOOPHM_h__
-
-
-#ifndef __gen_nsISupports_h__
-#include "nsISupports.h"
-#endif
-
-/* For IDL files that don't want to include root IDL files. */
-#ifndef NS_NO_VTABLE
-#define NS_NO_VTABLE
-#endif
-class nsIDOMWindow; /* forward declaration */
-
-
-/* starting interface:    IOOPHM */
-#define IOOPHM_IID_STR "90cef17b-c3fe-4251-af68-4381b3d938a0"
-
-#define IOOPHM_IID \
-  {0x90cef17b, 0xc3fe, 0x4251, \
-    { 0xaf, 0x68, 0x43, 0x81, 0xb3, 0xd9, 0x38, 0xa0 }}
-
-class NS_NO_VTABLE NS_SCRIPTABLE IOOPHM : public nsISupports {
- public: 
-
-  NS_DECLARE_STATIC_IID_ACCESSOR(IOOPHM_IID)
-
-  /* boolean init (in nsIDOMWindow window); */
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval) = 0;
-
-  /* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval) = 0;
-
-};
-
-  NS_DEFINE_STATIC_IID_ACCESSOR(IOOPHM, IOOPHM_IID)
-
-/* Use this macro when declaring classes that implement this interface. */
-#define NS_DECL_IOOPHM \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval); \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval); 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object. */
-#define NS_FORWARD_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval) { return _to Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval) { return _to Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
-#define NS_FORWARD_SAFE_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-#if 0
-/* Use the code below as a template for the implementation class for this interface. */
-
-/* Header file */
-class _MYCLASS_ : public IOOPHM
-{
-public:
-  NS_DECL_ISUPPORTS
-  NS_DECL_IOOPHM
-
-  _MYCLASS_();
-
-private:
-  ~_MYCLASS_();
-
-protected:
-  /* additional members */
-};
-
-/* Implementation file */
-NS_IMPL_ISUPPORTS1(_MYCLASS_, IOOPHM)
-
-_MYCLASS_::_MYCLASS_()
-{
-  /* member initializers and constructor code */
-}
-
-_MYCLASS_::~_MYCLASS_()
-{
-  /* destructor code */
-}
-
-/* boolean init (in nsIDOMWindow window); */
-NS_IMETHODIMP _MYCLASS_::Init(nsIDOMWindow *window, PRBool *_retval)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-NS_IMETHODIMP _MYCLASS_::Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* End of implementation class template. */
-#endif
-
-
-#endif /* __gen_IOOPHM_h__ */
diff --git a/plugins/xpcom/prebuilt/ff35/include/IOOPHM.h b/plugins/xpcom/prebuilt/ff35/include/IOOPHM.h
deleted file mode 100644
index 0e7be5d..0000000
--- a/plugins/xpcom/prebuilt/ff35/include/IOOPHM.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * DO NOT EDIT.  THIS FILE IS GENERATED FROM IOOPHM.idl
- */
-
-#ifndef __gen_IOOPHM_h__
-#define __gen_IOOPHM_h__
-
-
-#ifndef __gen_nsISupports_h__
-#include "nsISupports.h"
-#endif
-
-/* For IDL files that don't want to include root IDL files. */
-#ifndef NS_NO_VTABLE
-#define NS_NO_VTABLE
-#endif
-class nsIDOMWindow; /* forward declaration */
-
-
-/* starting interface:    IOOPHM */
-#define IOOPHM_IID_STR "90cef17b-c3fe-4251-af68-4381b3d938a0"
-
-#define IOOPHM_IID \
-  {0x90cef17b, 0xc3fe, 0x4251, \
-    { 0xaf, 0x68, 0x43, 0x81, 0xb3, 0xd9, 0x38, 0xa0 }}
-
-class NS_NO_VTABLE NS_SCRIPTABLE IOOPHM : public nsISupports {
- public: 
-
-  NS_DECLARE_STATIC_IID_ACCESSOR(IOOPHM_IID)
-
-  /* boolean init (in nsIDOMWindow window); */
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM) = 0;
-
-  /* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM) = 0;
-
-};
-
-  NS_DEFINE_STATIC_IID_ACCESSOR(IOOPHM, IOOPHM_IID)
-
-/* Use this macro when declaring classes that implement this interface. */
-#define NS_DECL_IOOPHM \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM); \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM); 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object. */
-#define NS_FORWARD_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM) { return _to Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM) { return _to Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
-#define NS_FORWARD_SAFE_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-#if 0
-/* Use the code below as a template for the implementation class for this interface. */
-
-/* Header file */
-class _MYCLASS_ : public IOOPHM
-{
-public:
-  NS_DECL_ISUPPORTS
-  NS_DECL_IOOPHM
-
-  _MYCLASS_();
-
-private:
-  ~_MYCLASS_();
-
-protected:
-  /* additional members */
-};
-
-/* Implementation file */
-NS_IMPL_ISUPPORTS1(_MYCLASS_, IOOPHM)
-
-_MYCLASS_::_MYCLASS_()
-{
-  /* member initializers and constructor code */
-}
-
-_MYCLASS_::~_MYCLASS_()
-{
-  /* destructor code */
-}
-
-/* boolean init (in nsIDOMWindow window); */
-NS_IMETHODIMP _MYCLASS_::Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-NS_IMETHODIMP _MYCLASS_::Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* End of implementation class template. */
-#endif
-
-
-#endif /* __gen_IOOPHM_h__ */
diff --git a/plugins/xpcom/prebuilt/ff36/include/IOOPHM.h b/plugins/xpcom/prebuilt/ff36/include/IOOPHM.h
deleted file mode 100644
index 0e7be5d..0000000
--- a/plugins/xpcom/prebuilt/ff36/include/IOOPHM.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * DO NOT EDIT.  THIS FILE IS GENERATED FROM IOOPHM.idl
- */
-
-#ifndef __gen_IOOPHM_h__
-#define __gen_IOOPHM_h__
-
-
-#ifndef __gen_nsISupports_h__
-#include "nsISupports.h"
-#endif
-
-/* For IDL files that don't want to include root IDL files. */
-#ifndef NS_NO_VTABLE
-#define NS_NO_VTABLE
-#endif
-class nsIDOMWindow; /* forward declaration */
-
-
-/* starting interface:    IOOPHM */
-#define IOOPHM_IID_STR "90cef17b-c3fe-4251-af68-4381b3d938a0"
-
-#define IOOPHM_IID \
-  {0x90cef17b, 0xc3fe, 0x4251, \
-    { 0xaf, 0x68, 0x43, 0x81, 0xb3, 0xd9, 0x38, 0xa0 }}
-
-class NS_NO_VTABLE NS_SCRIPTABLE IOOPHM : public nsISupports {
- public: 
-
-  NS_DECLARE_STATIC_IID_ACCESSOR(IOOPHM_IID)
-
-  /* boolean init (in nsIDOMWindow window); */
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM) = 0;
-
-  /* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM) = 0;
-
-};
-
-  NS_DEFINE_STATIC_IID_ACCESSOR(IOOPHM, IOOPHM_IID)
-
-/* Use this macro when declaring classes that implement this interface. */
-#define NS_DECL_IOOPHM \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM); \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM); 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object. */
-#define NS_FORWARD_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM) { return _to Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM) { return _to Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
-#define NS_FORWARD_SAFE_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-#if 0
-/* Use the code below as a template for the implementation class for this interface. */
-
-/* Header file */
-class _MYCLASS_ : public IOOPHM
-{
-public:
-  NS_DECL_ISUPPORTS
-  NS_DECL_IOOPHM
-
-  _MYCLASS_();
-
-private:
-  ~_MYCLASS_();
-
-protected:
-  /* additional members */
-};
-
-/* Implementation file */
-NS_IMPL_ISUPPORTS1(_MYCLASS_, IOOPHM)
-
-_MYCLASS_::_MYCLASS_()
-{
-  /* member initializers and constructor code */
-}
-
-_MYCLASS_::~_MYCLASS_()
-{
-  /* destructor code */
-}
-
-/* boolean init (in nsIDOMWindow window); */
-NS_IMETHODIMP _MYCLASS_::Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-NS_IMETHODIMP _MYCLASS_::Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* End of implementation class template. */
-#endif
-
-
-#endif /* __gen_IOOPHM_h__ */
diff --git a/plugins/xpcom/prebuilt/ff40/include/IOOPHM.h b/plugins/xpcom/prebuilt/ff40/include/IOOPHM.h
deleted file mode 100644
index 0e7be5d..0000000
--- a/plugins/xpcom/prebuilt/ff40/include/IOOPHM.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * DO NOT EDIT.  THIS FILE IS GENERATED FROM IOOPHM.idl
- */
-
-#ifndef __gen_IOOPHM_h__
-#define __gen_IOOPHM_h__
-
-
-#ifndef __gen_nsISupports_h__
-#include "nsISupports.h"
-#endif
-
-/* For IDL files that don't want to include root IDL files. */
-#ifndef NS_NO_VTABLE
-#define NS_NO_VTABLE
-#endif
-class nsIDOMWindow; /* forward declaration */
-
-
-/* starting interface:    IOOPHM */
-#define IOOPHM_IID_STR "90cef17b-c3fe-4251-af68-4381b3d938a0"
-
-#define IOOPHM_IID \
-  {0x90cef17b, 0xc3fe, 0x4251, \
-    { 0xaf, 0x68, 0x43, 0x81, 0xb3, 0xd9, 0x38, 0xa0 }}
-
-class NS_NO_VTABLE NS_SCRIPTABLE IOOPHM : public nsISupports {
- public: 
-
-  NS_DECLARE_STATIC_IID_ACCESSOR(IOOPHM_IID)
-
-  /* boolean init (in nsIDOMWindow window); */
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM) = 0;
-
-  /* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM) = 0;
-
-};
-
-  NS_DEFINE_STATIC_IID_ACCESSOR(IOOPHM, IOOPHM_IID)
-
-/* Use this macro when declaring classes that implement this interface. */
-#define NS_DECL_IOOPHM \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM); \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM); 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object. */
-#define NS_FORWARD_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM) { return _to Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM) { return _to Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
-#define NS_FORWARD_SAFE_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-#if 0
-/* Use the code below as a template for the implementation class for this interface. */
-
-/* Header file */
-class _MYCLASS_ : public IOOPHM
-{
-public:
-  NS_DECL_ISUPPORTS
-  NS_DECL_IOOPHM
-
-  _MYCLASS_();
-
-private:
-  ~_MYCLASS_();
-
-protected:
-  /* additional members */
-};
-
-/* Implementation file */
-NS_IMPL_ISUPPORTS1(_MYCLASS_, IOOPHM)
-
-_MYCLASS_::_MYCLASS_()
-{
-  /* member initializers and constructor code */
-}
-
-_MYCLASS_::~_MYCLASS_()
-{
-  /* destructor code */
-}
-
-/* boolean init (in nsIDOMWindow window); */
-NS_IMETHODIMP _MYCLASS_::Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-NS_IMETHODIMP _MYCLASS_::Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* End of implementation class template. */
-#endif
-
-
-#endif /* __gen_IOOPHM_h__ */
diff --git a/plugins/xpcom/prebuilt/ff50/include/IOOPHM.h b/plugins/xpcom/prebuilt/ff50/include/IOOPHM.h
deleted file mode 100644
index 0e7be5d..0000000
--- a/plugins/xpcom/prebuilt/ff50/include/IOOPHM.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * DO NOT EDIT.  THIS FILE IS GENERATED FROM IOOPHM.idl
- */
-
-#ifndef __gen_IOOPHM_h__
-#define __gen_IOOPHM_h__
-
-
-#ifndef __gen_nsISupports_h__
-#include "nsISupports.h"
-#endif
-
-/* For IDL files that don't want to include root IDL files. */
-#ifndef NS_NO_VTABLE
-#define NS_NO_VTABLE
-#endif
-class nsIDOMWindow; /* forward declaration */
-
-
-/* starting interface:    IOOPHM */
-#define IOOPHM_IID_STR "90cef17b-c3fe-4251-af68-4381b3d938a0"
-
-#define IOOPHM_IID \
-  {0x90cef17b, 0xc3fe, 0x4251, \
-    { 0xaf, 0x68, 0x43, 0x81, 0xb3, 0xd9, 0x38, 0xa0 }}
-
-class NS_NO_VTABLE NS_SCRIPTABLE IOOPHM : public nsISupports {
- public: 
-
-  NS_DECLARE_STATIC_IID_ACCESSOR(IOOPHM_IID)
-
-  /* boolean init (in nsIDOMWindow window); */
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM) = 0;
-
-  /* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM) = 0;
-
-};
-
-  NS_DEFINE_STATIC_IID_ACCESSOR(IOOPHM, IOOPHM_IID)
-
-/* Use this macro when declaring classes that implement this interface. */
-#define NS_DECL_IOOPHM \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM); \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM); 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object. */
-#define NS_FORWARD_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM) { return _to Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM) { return _to Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
-#define NS_FORWARD_SAFE_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-#if 0
-/* Use the code below as a template for the implementation class for this interface. */
-
-/* Header file */
-class _MYCLASS_ : public IOOPHM
-{
-public:
-  NS_DECL_ISUPPORTS
-  NS_DECL_IOOPHM
-
-  _MYCLASS_();
-
-private:
-  ~_MYCLASS_();
-
-protected:
-  /* additional members */
-};
-
-/* Implementation file */
-NS_IMPL_ISUPPORTS1(_MYCLASS_, IOOPHM)
-
-_MYCLASS_::_MYCLASS_()
-{
-  /* member initializers and constructor code */
-}
-
-_MYCLASS_::~_MYCLASS_()
-{
-  /* destructor code */
-}
-
-/* boolean init (in nsIDOMWindow window); */
-NS_IMETHODIMP _MYCLASS_::Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-NS_IMETHODIMP _MYCLASS_::Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* End of implementation class template. */
-#endif
-
-
-#endif /* __gen_IOOPHM_h__ */
diff --git a/plugins/xpcom/prebuilt/ff60/include/IOOPHM.h b/plugins/xpcom/prebuilt/ff60/include/IOOPHM.h
deleted file mode 100644
index 0e7be5d..0000000
--- a/plugins/xpcom/prebuilt/ff60/include/IOOPHM.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * DO NOT EDIT.  THIS FILE IS GENERATED FROM IOOPHM.idl
- */
-
-#ifndef __gen_IOOPHM_h__
-#define __gen_IOOPHM_h__
-
-
-#ifndef __gen_nsISupports_h__
-#include "nsISupports.h"
-#endif
-
-/* For IDL files that don't want to include root IDL files. */
-#ifndef NS_NO_VTABLE
-#define NS_NO_VTABLE
-#endif
-class nsIDOMWindow; /* forward declaration */
-
-
-/* starting interface:    IOOPHM */
-#define IOOPHM_IID_STR "90cef17b-c3fe-4251-af68-4381b3d938a0"
-
-#define IOOPHM_IID \
-  {0x90cef17b, 0xc3fe, 0x4251, \
-    { 0xaf, 0x68, 0x43, 0x81, 0xb3, 0xd9, 0x38, 0xa0 }}
-
-class NS_NO_VTABLE NS_SCRIPTABLE IOOPHM : public nsISupports {
- public: 
-
-  NS_DECLARE_STATIC_IID_ACCESSOR(IOOPHM_IID)
-
-  /* boolean init (in nsIDOMWindow window); */
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM) = 0;
-
-  /* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM) = 0;
-
-};
-
-  NS_DEFINE_STATIC_IID_ACCESSOR(IOOPHM, IOOPHM_IID)
-
-/* Use this macro when declaring classes that implement this interface. */
-#define NS_DECL_IOOPHM \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM); \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM); 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object. */
-#define NS_FORWARD_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM) { return _to Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM) { return _to Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
-#define NS_FORWARD_SAFE_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-#if 0
-/* Use the code below as a template for the implementation class for this interface. */
-
-/* Header file */
-class _MYCLASS_ : public IOOPHM
-{
-public:
-  NS_DECL_ISUPPORTS
-  NS_DECL_IOOPHM
-
-  _MYCLASS_();
-
-private:
-  ~_MYCLASS_();
-
-protected:
-  /* additional members */
-};
-
-/* Implementation file */
-NS_IMPL_ISUPPORTS1(_MYCLASS_, IOOPHM)
-
-_MYCLASS_::_MYCLASS_()
-{
-  /* member initializers and constructor code */
-}
-
-_MYCLASS_::~_MYCLASS_()
-{
-  /* destructor code */
-}
-
-/* boolean init (in nsIDOMWindow window); */
-NS_IMETHODIMP _MYCLASS_::Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-NS_IMETHODIMP _MYCLASS_::Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* End of implementation class template. */
-#endif
-
-
-#endif /* __gen_IOOPHM_h__ */
diff --git a/plugins/xpcom/prebuilt/ff70/include/IOOPHM.h b/plugins/xpcom/prebuilt/ff70/include/IOOPHM.h
deleted file mode 100644
index 0e7be5d..0000000
--- a/plugins/xpcom/prebuilt/ff70/include/IOOPHM.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * DO NOT EDIT.  THIS FILE IS GENERATED FROM IOOPHM.idl
- */
-
-#ifndef __gen_IOOPHM_h__
-#define __gen_IOOPHM_h__
-
-
-#ifndef __gen_nsISupports_h__
-#include "nsISupports.h"
-#endif
-
-/* For IDL files that don't want to include root IDL files. */
-#ifndef NS_NO_VTABLE
-#define NS_NO_VTABLE
-#endif
-class nsIDOMWindow; /* forward declaration */
-
-
-/* starting interface:    IOOPHM */
-#define IOOPHM_IID_STR "90cef17b-c3fe-4251-af68-4381b3d938a0"
-
-#define IOOPHM_IID \
-  {0x90cef17b, 0xc3fe, 0x4251, \
-    { 0xaf, 0x68, 0x43, 0x81, 0xb3, 0xd9, 0x38, 0xa0 }}
-
-class NS_NO_VTABLE NS_SCRIPTABLE IOOPHM : public nsISupports {
- public: 
-
-  NS_DECLARE_STATIC_IID_ACCESSOR(IOOPHM_IID)
-
-  /* boolean init (in nsIDOMWindow window); */
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM) = 0;
-
-  /* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM) = 0;
-
-};
-
-  NS_DEFINE_STATIC_IID_ACCESSOR(IOOPHM, IOOPHM_IID)
-
-/* Use this macro when declaring classes that implement this interface. */
-#define NS_DECL_IOOPHM \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM); \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM); 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object. */
-#define NS_FORWARD_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM) { return _to Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM) { return _to Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
-#define NS_FORWARD_SAFE_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-#if 0
-/* Use the code below as a template for the implementation class for this interface. */
-
-/* Header file */
-class _MYCLASS_ : public IOOPHM
-{
-public:
-  NS_DECL_ISUPPORTS
-  NS_DECL_IOOPHM
-
-  _MYCLASS_();
-
-private:
-  ~_MYCLASS_();
-
-protected:
-  /* additional members */
-};
-
-/* Implementation file */
-NS_IMPL_ISUPPORTS1(_MYCLASS_, IOOPHM)
-
-_MYCLASS_::_MYCLASS_()
-{
-  /* member initializers and constructor code */
-}
-
-_MYCLASS_::~_MYCLASS_()
-{
-  /* destructor code */
-}
-
-/* boolean init (in nsIDOMWindow window); */
-NS_IMETHODIMP _MYCLASS_::Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-NS_IMETHODIMP _MYCLASS_::Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* End of implementation class template. */
-#endif
-
-
-#endif /* __gen_IOOPHM_h__ */
diff --git a/plugins/xpcom/prebuilt/ff80/include/IOOPHM.h b/plugins/xpcom/prebuilt/ff80/include/IOOPHM.h
deleted file mode 100644
index 0e7be5d..0000000
--- a/plugins/xpcom/prebuilt/ff80/include/IOOPHM.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * DO NOT EDIT.  THIS FILE IS GENERATED FROM IOOPHM.idl
- */
-
-#ifndef __gen_IOOPHM_h__
-#define __gen_IOOPHM_h__
-
-
-#ifndef __gen_nsISupports_h__
-#include "nsISupports.h"
-#endif
-
-/* For IDL files that don't want to include root IDL files. */
-#ifndef NS_NO_VTABLE
-#define NS_NO_VTABLE
-#endif
-class nsIDOMWindow; /* forward declaration */
-
-
-/* starting interface:    IOOPHM */
-#define IOOPHM_IID_STR "90cef17b-c3fe-4251-af68-4381b3d938a0"
-
-#define IOOPHM_IID \
-  {0x90cef17b, 0xc3fe, 0x4251, \
-    { 0xaf, 0x68, 0x43, 0x81, 0xb3, 0xd9, 0x38, 0xa0 }}
-
-class NS_NO_VTABLE NS_SCRIPTABLE IOOPHM : public nsISupports {
- public: 
-
-  NS_DECLARE_STATIC_IID_ACCESSOR(IOOPHM_IID)
-
-  /* boolean init (in nsIDOMWindow window); */
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM) = 0;
-
-  /* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM) = 0;
-
-};
-
-  NS_DEFINE_STATIC_IID_ACCESSOR(IOOPHM, IOOPHM_IID)
-
-/* Use this macro when declaring classes that implement this interface. */
-#define NS_DECL_IOOPHM \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM); \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM); 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object. */
-#define NS_FORWARD_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM) { return _to Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM) { return _to Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
-#define NS_FORWARD_SAFE_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-#if 0
-/* Use the code below as a template for the implementation class for this interface. */
-
-/* Header file */
-class _MYCLASS_ : public IOOPHM
-{
-public:
-  NS_DECL_ISUPPORTS
-  NS_DECL_IOOPHM
-
-  _MYCLASS_();
-
-private:
-  ~_MYCLASS_();
-
-protected:
-  /* additional members */
-};
-
-/* Implementation file */
-NS_IMPL_ISUPPORTS1(_MYCLASS_, IOOPHM)
-
-_MYCLASS_::_MYCLASS_()
-{
-  /* member initializers and constructor code */
-}
-
-_MYCLASS_::~_MYCLASS_()
-{
-  /* destructor code */
-}
-
-/* boolean init (in nsIDOMWindow window); */
-NS_IMETHODIMP _MYCLASS_::Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-NS_IMETHODIMP _MYCLASS_::Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* End of implementation class template. */
-#endif
-
-
-#endif /* __gen_IOOPHM_h__ */
diff --git a/plugins/xpcom/prebuilt/ff90/include/IOOPHM.h b/plugins/xpcom/prebuilt/ff90/include/IOOPHM.h
deleted file mode 100644
index 0e7be5d..0000000
--- a/plugins/xpcom/prebuilt/ff90/include/IOOPHM.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * DO NOT EDIT.  THIS FILE IS GENERATED FROM IOOPHM.idl
- */
-
-#ifndef __gen_IOOPHM_h__
-#define __gen_IOOPHM_h__
-
-
-#ifndef __gen_nsISupports_h__
-#include "nsISupports.h"
-#endif
-
-/* For IDL files that don't want to include root IDL files. */
-#ifndef NS_NO_VTABLE
-#define NS_NO_VTABLE
-#endif
-class nsIDOMWindow; /* forward declaration */
-
-
-/* starting interface:    IOOPHM */
-#define IOOPHM_IID_STR "90cef17b-c3fe-4251-af68-4381b3d938a0"
-
-#define IOOPHM_IID \
-  {0x90cef17b, 0xc3fe, 0x4251, \
-    { 0xaf, 0x68, 0x43, 0x81, 0xb3, 0xd9, 0x38, 0xa0 }}
-
-class NS_NO_VTABLE NS_SCRIPTABLE IOOPHM : public nsISupports {
- public: 
-
-  NS_DECLARE_STATIC_IID_ACCESSOR(IOOPHM_IID)
-
-  /* boolean init (in nsIDOMWindow window); */
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM) = 0;
-
-  /* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM) = 0;
-
-};
-
-  NS_DEFINE_STATIC_IID_ACCESSOR(IOOPHM, IOOPHM_IID)
-
-/* Use this macro when declaring classes that implement this interface. */
-#define NS_DECL_IOOPHM \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM); \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM); 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object. */
-#define NS_FORWARD_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM) { return _to Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM) { return _to Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
-#define NS_FORWARD_SAFE_IOOPHM(_to) \
-  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Init(window, _retval); } \
-  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
-
-#if 0
-/* Use the code below as a template for the implementation class for this interface. */
-
-/* Header file */
-class _MYCLASS_ : public IOOPHM
-{
-public:
-  NS_DECL_ISUPPORTS
-  NS_DECL_IOOPHM
-
-  _MYCLASS_();
-
-private:
-  ~_MYCLASS_();
-
-protected:
-  /* additional members */
-};
-
-/* Implementation file */
-NS_IMPL_ISUPPORTS1(_MYCLASS_, IOOPHM)
-
-_MYCLASS_::_MYCLASS_()
-{
-  /* member initializers and constructor code */
-}
-
-_MYCLASS_::~_MYCLASS_()
-{
-  /* destructor code */
-}
-
-/* boolean init (in nsIDOMWindow window); */
-NS_IMETHODIMP _MYCLASS_::Init(nsIDOMWindow *window, PRBool *_retval NS_OUTPARAM)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
-NS_IMETHODIMP _MYCLASS_::Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, PRBool *_retval NS_OUTPARAM)
-{
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-/* End of implementation class template. */
-#endif
-
-
-#endif /* __gen_IOOPHM_h__ */
diff --git a/plugins/xpcom/prebuilt/gwt-dev-plugin.xpi b/plugins/xpcom/prebuilt/gwt-dev-plugin.xpi
deleted file mode 100644
index 75ad0ad..0000000
--- a/plugins/xpcom/prebuilt/gwt-dev-plugin.xpi
+++ /dev/null
Binary files differ
diff --git a/plugins/xpcom/prebuilt/update.rdf b/plugins/xpcom/prebuilt/update.rdf
deleted file mode 100644
index 03ea059..0000000
--- a/plugins/xpcom/prebuilt/update.rdf
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-         xmlns:em="http://www.mozilla.org/2004/em-rdf#">
-
-  <RDF:Description about="urn:mozilla:extension:gwt-dev-plugin@google.com">
-    <em:updates>
-      <RDF:Seq>
-
-        <RDF:li>
-          <RDF:Description>
-            <em:version>0.9.6553M.20091030005401</em:version>
-            <em:targetApplication>
-              <Description>
-                <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
-                <em:minVersion>3.0</em:minVersion>
-                <em:maxVersion>16.0.*</em:maxVersion>
-                <em:updateLink>https://dl-ssl.google.com/gwt/plugins/firefox/gwt-dev-plugin.xpi</em:updateLink>
-                <em:updateInfoURL>https://dl-ssl.google.com/gwt/plugins/firefox/gwt-dev-plugin-info.xhtml?locale=%APP_LOCALE%</em:updateInfoURL>
-
-              </Description>
-            </em:targetApplication>
-          </RDF:Description>
-        </RDF:li>
-
-      </RDF:Seq>
-    </em:updates>
-  </RDF:Description>
-</RDF:RDF>
diff --git a/plugins/xpcom/xpGwtDevPlugin.def b/plugins/xpcom/xpGwtDevPlugin.def
deleted file mode 100644
index b3e5034..0000000
--- a/plugins/xpcom/xpGwtDevPlugin.def
+++ /dev/null
@@ -1,3 +0,0 @@
-LIBRARY xpGwtDevPlugin
-
-EXPORTS
diff --git a/plugins/xpcom/xpGwtDevPlugin.rc b/plugins/xpcom/xpGwtDevPlugin.rc
deleted file mode 100644
index de20962..0000000
--- a/plugins/xpcom/xpGwtDevPlugin.rc
+++ /dev/null
@@ -1,71 +0,0 @@
-#define APSTUDIO_READONLY_SYMBOLS
-#include "windows.h"
-#undef APSTUDIO_READONLY_SYMBOLS
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-#ifdef _WIN32
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-#pragma code_page(1252)
-#endif
-
-1 VERSIONINFO
-  FILEVERSION 0,9,0,0
-  PRODUCTVERSION 0,9,0,0
-  FILEFLAGSMASK 0x3fL
-#ifdef _DEBUG
-  FILEFLAGS 0x1L
-#else
-  FILEFLAGS 0x0L
-#endif
-  FILEOS 0x40004L
-  FILETYPE 0x2L
-  FILESUBTYPE 0x0L
-BEGIN
-  BLOCK "StringFileInfo"
-  BEGIN
-  	BLOCK "040904e4"
-  	BEGIN
-  	  VALUE "CompanyName", 		"Google Inc"
-  	  VALUE "FileDescription",	"GWT Developer Plugin (XPCOM)"
-#if 0
-  	  VALUE "FileExtents",		""
-#endif
-  	  VALUE "FileOpenName",		"Plugin to allow debugging of GWT applications in development mode."
-  	  VALUE "FileVersion",		"0.1a"
-  	  VALUE "InternalName",		"GWT Developer Plugin (XPCOM)"
-  	  VALUE "LegalCopyright",	"Copyright © 2008 Google Inc.  Licensed under Apache 2.0 license."
-  	  VALUE "MIMEType",			"application/x-gwt-hosted-mode"
-  	  VALUE "OriginalFilename",	"xpGwtDevPlugin.dll"
-  	  VALUE "ProductName",		"GWT Developer Plugin (XPCOM)"
-  	  VALUE "ProductVersion",	"0.9.0.0"
-  	END
-  END
-  BLOCK "VarFileInfo"
-  BEGIN
-    VALUE "Translation", 0x409, 1252
-  END
-END
-
-#ifdef APSTUDIO_INVOKED
-1 TEXTINCLUDE
-BEGIN
-  "resource.h\0"
-END
-
-2 TEXTINCLUDE
-BEGIN
-  "#include ""windows.h""\r\n"
-  "\0"
-END
-
-3 TEXTINCLUDE
-BEGIN
-  "\r\n"
-  "\0"
-END
-
-#endif
-
-#else
-
-#endif
diff --git a/reference/dispatch/Dispatch.gwt.xml b/reference/dispatch/Dispatch.gwt.xml
deleted file mode 100644
index fa1c708..0000000
--- a/reference/dispatch/Dispatch.gwt.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE document SYSTEM
-    "http://google-web-toolkit.googlecode.com/svn/releases/1.5/distro-source/core/src/gwt-module.dtd">
-<module>
-  <inherits name='com.google.gwt.user.User' />
-  <entry-point class='kellegous.client.Dispatch' />
-</module>
diff --git a/reference/dispatch/client/Dispatch.java b/reference/dispatch/client/Dispatch.java
deleted file mode 100644
index cac6f18..0000000
--- a/reference/dispatch/client/Dispatch.java
+++ /dev/null
@@ -1,143 +0,0 @@
-package kellegous.client;
-
-import com.google.gwt.core.client.Duration;
-import com.google.gwt.core.client.EntryPoint;
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.dom.client.DivElement;
-import com.google.gwt.dom.client.Document;
-import com.google.gwt.user.client.Command;
-import com.google.gwt.user.client.Event;
-import com.google.gwt.user.client.EventListener;
-
-public class Dispatch implements EntryPoint {
-  private static native Event createMockEvent() /*-{
-    return { type: "click" };
-  }-*/;
-
-  private static double[] runTrial(int numberOfObservers,
-      int numberOfIterations, int numberOfSamples) {
-    final double[] results = new double[numberOfSamples];
-    final EventListener subject = Subject.create(numberOfObservers);
-    final Event event = createMockEvent();
-    for (int j = 0; j < numberOfSamples; ++j) {
-      final Duration d = new Duration();
-      for (int i = 0; i < numberOfIterations; ++i) {
-        subject.onBrowserEvent(event);
-      }
-      results[j] = d.elapsedMillis();
-    }
-    return results;
-  }
-
-  private static native void schedule(Command command) /*-{
-    $wnd.setTimeout(function() {
-      command.@com.google.gwt.user.client.Command::execute()();
-    }, 0);
-  }-*/;
-
-  // t-distribution for p = 0.05 (used to compute 95% confidence intervals).
-  // This table is based at df = 2.
-  private final static double[] TDIST = new double[] {
-      4.3027, 3.1824, 2.7765, 2.5706, 2.4469, 2.3646, 2.3060, 2.2622, 2.2281,
-      2.2010, 2.1788, 2.1604, 2.1448, 2.1315, 2.1199, 2.1098, 2.1009, 2.0930,
-      2.0860, 2.0796, 2.0739, 2.0687, 2.0639, 2.0595, 2.0555, 2.0518, 2.0484,
-      2.0452, 2.0423, 2.0395, 2.0369, 2.0345, 2.0322, 2.0301, 2.0281, 2.0262,
-      2.0244, 2.0227, 2.0211, 2.0195, 2.0181, 2.0167, 2.0154, 2.0141, 2.0129,
-      2.0117, 2.0106, 2.0096, 2.0086, 2.0076, 2.0066, 2.0057, 2.0049, 2.0040,
-      2.0032, 2.0025, 2.0017, 2.0010, 2.0003, 1.9996, 1.9990, 1.9983, 1.9977,
-      1.9971, 1.9966, 1.9960, 1.9955, 1.9949, 1.9944, 1.9939, 1.9935, 1.9930,
-      1.9925, 1.9921, 1.9917, 1.9913, 1.9908, 1.9905, 1.9901, 1.9897, 1.9893,
-      1.9890, 1.9886, 1.9883, 1.9879, 1.9876, 1.9873, 1.9870, 1.9867, 1.9864,
-      1.9861, 1.9858, 1.9855, 1.9852, 1.9850, 1.9847, 1.9845, 1.9842, 1.9840};
-
-  private static double computeT(int df) {
-    return TDIST[df - 2];
-  }
-
-  private static double computeMean(double[] s) {
-    double sum = 0.0;
-    final int n = s.length;
-    for (int i = 0; i < n; ++i) {
-      sum += s[i];
-    }
-    return sum / n;
-  }
-
-  private static double computeStandardError(double[] data, double mean) {
-    final int n = data.length;
-    double sum = 0.0;
-    for (int i = 0; i < n; ++i) {
-      final double d = data[i] - mean;
-      sum += d * d;
-    }
-
-    return Math.sqrt(sum / n) / Math.sqrt(n);
-  }
-
-  private static class Stats {
-    private final double mean, upper, lower;
-
-    Stats(double[] data) {
-      mean = computeMean(data);
-      final double error = computeStandardError(data, mean);
-      final double t = computeT(data.length - 1);
-      upper = mean + t * error;
-      lower = mean - t * error;
-    }
-
-    @Override
-    public String toString() {
-      return mean + ", " + lower + ", " + upper;
-    }
-  }
-
-  public static class Runner {
-    private int n;
-    private final int max, numIterations, numSamples;
-    private Stats[] results;
-
-    Runner(int min, int max, int numIterations, int numSamples) {
-      n = min;
-      this.max = max;
-      this.numIterations = numIterations;
-      this.numSamples = numSamples;
-      results = new Stats[max - min + 1];
-    }
-
-    void finish() {
-      final Document document = Document.get();
-      final DivElement root = document.createDivElement();
-      document.getBody().appendChild(root);
-      for (int i = 0, n = results.length; i < n; ++i) {
-        final DivElement div = document.createDivElement();
-        root.appendChild(div);
-        div.setInnerText("" + results[i].toString());
-      }
-    }
-
-    void next() {
-      schedule(new Command() {
-        public void execute() {
-          final double[] results = runTrial(n, numIterations, numSamples);
-          Runner.this.results[n] = new Stats(results);
-          if (++n <= max) {
-            next();
-          } else {
-            finish();
-          }
-        }
-      });
-    }
-
-    void run() {
-      next();
-    }
-  }
-
-  public void onModuleLoad() {
-    // Don't run this in hosted mode.
-    if (GWT.isScript()) {
-      new Runner(0, 10, 10000, 20).run();
-    }
-  }
-}
diff --git a/reference/dispatch/client/Subject.java b/reference/dispatch/client/Subject.java
deleted file mode 100644
index fc21bee..0000000
--- a/reference/dispatch/client/Subject.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package kellegous.client;
-
-import com.google.gwt.user.client.EventListener;
-import com.google.gwt.user.client.ui.Button;
-import com.google.gwt.user.client.ui.ClickListener;
-import com.google.gwt.user.client.ui.Widget;
-
-public class Subject {
-  public static EventListener create(int numberOfObserver) {
-    final Button subject = new Button("a button");
-    for (int i = 0; i < numberOfObserver; ++i) {
-      subject.addClickListener(new ClickListener() {
-        private int count = 0;
-
-        public void onClick(Widget sender) {
-          count++;
-        }
-      });
-    }
-    return subject;
-  }
-}
diff --git a/reference/dispatch/public/Dispatch.html b/reference/dispatch/public/Dispatch.html
deleted file mode 100644
index e87c244..0000000
--- a/reference/dispatch/public/Dispatch.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-  <head>
-    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
-    <title>Dispatch5</title>
-    <script type="text/javascript" language="javascript" src="kellegous.Dispatch.nocache.js"></script>
-  </head>
-  <body>
-  </body>
-</html>
diff --git a/reference/html-encyclopedia/FieldSet.html b/reference/html-encyclopedia/FieldSet.html
deleted file mode 100644
index 53c5f9a..0000000
--- a/reference/html-encyclopedia/FieldSet.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<html>
-<body>
-
-<h1>Fieldset examples</h1>
-
-<h2>Fieldsets take HTML captions</h2>
-Everything below is confirmed to work in FF 1.5, FF 2.0, IE 6, IE 7, Safari 3.1
-
-<fieldset>
-  <legend><b>Bold</b> is supported</legend>
-  <button>Button</button>
-</fieldset>
-
-<fieldset>
-  <legend><u>Underline</u> is supported</legend>
-  <button>Button</button>
-</fieldset>
-
-<fieldset>
-  <legend><button>Buttons</button> are supported</legend>
-  <button>Button</button>
-</fieldset>
-
-<fieldset>
-  <legend><img src="http://www.google.com/images/logo.gif"> (images are supported)</legend>
-  <button>Button</button>
-</fieldset>
-
-<fieldset>
-  <legend>
-    <table>
-      <tr><td colspan="2">Tables work</td></tr>
-      <tr><td>row 1, col 1</td><td>row 1, col 2</td></tr>
-      <tr><td>row 2, col 1</td><td>row 2, col 2</td></tr>
-    </table>
-  </legend>
-  <button>Button</button>
-</fieldset>
-  
-<fieldset>
-  <legend>
-    <span><input id="mycheckbox" type="checkbox"><label for="mycheckbox">GWT-structured checkboxes work</label></span>
-  </legend>
-  <button>Button</button>
-</fieldset>
-  
-<h2>Fieldsets without a &lt;legend&gt; element shows no gap</h2>
-<fieldset>
-  <button>Button</button>
-</fieldset>
-
-<h2>Fieldsets with an empty &lt;legend&gt; element show a gap in some browsers</h2>
-<fieldset>
-  <legend></legend>
-  <button>Button</button>
-</fieldset>
-
-</body>
-</html>
-
diff --git a/user/build.xml b/user/build.xml
index 3290ba5..d49f25f 100755
--- a/user/build.xml
+++ b/user/build.xml
@@ -35,7 +35,7 @@
   <property name="gwt.tck.testcase.dev.includes" value="com/google/gwt/validation/tck/**/*GwtSuite.class" />
   <property name="gwt.tct.testcase.dev.excludes" value="" />
 
-  <property name="gwt.nongwt.testcase.includes" value="com/google/gwt/dev/jjs/GwtAstBuilderTest.class" />
+  <property name="gwt.nongwt.testcase.includes" value="**/*SuiteNoBrowser.class" />
   <property name="gwt.nongwt.testcase.excludes" value="" />
 
   <!--
diff --git a/user/src/com/google/gwt/animation/Animation.gwt.xml b/user/src/com/google/gwt/animation/Animation.gwt.xml
index bc2a47c..8fd4427 100644
--- a/user/src/com/google/gwt/animation/Animation.gwt.xml
+++ b/user/src/com/google/gwt/animation/Animation.gwt.xml
@@ -32,11 +32,13 @@
   <replace-with class="com.google.gwt.animation.client.AnimationSchedulerImplMozilla">
     <when-type-is class="com.google.gwt.animation.client.AnimationScheduler"/>
     <when-property-is name="user.agent" value="gecko1_8"/>
+    <when-property-is name="webApiUsage" value="modern"/>
   </replace-with>
 
   <!-- Implementation based on webkitRequestAnimationFrame -->
   <replace-with class="com.google.gwt.animation.client.AnimationSchedulerImplWebkit">
     <when-type-is class="com.google.gwt.animation.client.AnimationScheduler"/>
     <when-property-is name="user.agent" value="safari"/>
+    <when-property-is name="webApiUsage" value="modern"/>
   </replace-with>
 </module>
diff --git a/user/src/com/google/gwt/animation/client/Animation.java b/user/src/com/google/gwt/animation/client/Animation.java
index cf3530e..800d1fb 100644
--- a/user/src/com/google/gwt/animation/client/Animation.java
+++ b/user/src/com/google/gwt/animation/client/Animation.java
@@ -242,8 +242,10 @@
    * 
    * The value of progress is between 0.0 and 1.0 (inclusive) (unless you
    * override the {@link #interpolate(double)} method to provide a wider range
-   * of values). You can override {@link #onStart()} and {@link #onComplete()}
-   * to perform setup and tear down procedures.
+   * of values). There is no guarantee that {@link #onUpdate(double)} is called 
+   * with 0.0 or 1.0. 
+   * If you need to perform setup or tear down procedures, you can override 
+   * {@link #onStart()} and {@link #onComplete()}.
    * 
    * @param progress a double, normally between 0.0 and 1.0 (inclusive)
    */
diff --git a/user/src/com/google/gwt/core/CrossSiteIframeLinker.gwt.xml b/user/src/com/google/gwt/core/CrossSiteIframeLinker.gwt.xml
index b988b19..1c45f9d 100644
--- a/user/src/com/google/gwt/core/CrossSiteIframeLinker.gwt.xml
+++ b/user/src/com/google/gwt/core/CrossSiteIframeLinker.gwt.xml
@@ -23,7 +23,17 @@
   <define-configuration-property name="installScriptJs" is-multi-valued="false" />
   <define-configuration-property name="installCode" is-multi-valued="false" />
   <define-configuration-property name="computeScriptBaseJs" is-multi-valued="false" />
-
+  <!--
+     - Determines whether the GWT compiler generates cache.js files
+     - that end with a comment pointing to a sourcemap file, to support source-level
+     - debugging in browsers.
+     - Specification: http://goo.gl/ZQ3V3
+     - Takes on the following values:
+     - if false, no sourcemap URL declarations are included at the end of the primary fragment script
+     - if true, a relative URL to the standard sourcemap for the primary fragment is included
+     - else the value is assumed to be a custom URL -->
+  <define-configuration-property name="includeSourceMapUrl" is-multi-valued="false"/>
+  <set-configuration-property name="includeSourceMapUrl" value="false"/>
   <set-configuration-property name="xsiframe.failIfScriptTag" value="TRUE"/> 
 
   <replace-with class="com.google.gwt.core.client.impl.ScriptTagLoadingStrategy">
@@ -31,4 +41,6 @@
       class="com.google.gwt.core.client.impl.AsyncFragmentLoader.LoadingStrategy" />
     <when-linker-added name="xsiframe" />
   </replace-with>
+
+
 </module>
diff --git a/user/src/com/google/gwt/core/client/ScriptInjector.java b/user/src/com/google/gwt/core/client/ScriptInjector.java
index 4c08242..d07ad4a 100644
--- a/user/src/com/google/gwt/core/client/ScriptInjector.java
+++ b/user/src/com/google/gwt/core/client/ScriptInjector.java
@@ -119,6 +119,7 @@
    */
   public static class FromUrl {
     private Callback<Void, Exception> callback;
+    private boolean removeTag = false;
     private final String scriptUrl;
     private JavaScriptObject window;
 
@@ -139,8 +140,8 @@
       assert doc != null;
       JavaScriptObject scriptElement = nativeMakeScriptElement(doc);
       assert scriptElement != null;
-      if (callback != null) {
-        attachListeners(scriptElement, callback);
+      if (callback != null || removeTag) {
+        attachListeners(scriptElement, callback, removeTag);
       }
       nativeSetSrc(scriptElement, scriptUrl);
       nativeAttachToHead(doc, scriptElement);
@@ -175,6 +176,19 @@
     }
 
     /**
+     * @param removeTag If true, remove the tag after the script finishes
+     *          loading. This shrinks the DOM, possibly at the expense of
+     *          readability if you are debugging javaScript.
+     *
+     *          Default value is {@code false}, but this may change in a future
+     *          release.
+     */
+    public FromUrl setRemoveTag(boolean removeTag) {
+      this.removeTag = removeTag;
+      return this;
+    }
+
+    /**
      * This call allows you to specify which DOM window object to install the
      * script tag in. To install into the Top level window call
      * 
@@ -243,20 +257,27 @@
    * @param callback callback that runs when the script is loaded and parsed.
    */
   private static native void attachListeners(JavaScriptObject scriptElement,
-      Callback<Void, Exception> callback) /*-{
+      Callback<Void, Exception> callback, boolean removeTag) /*-{
     function clearCallbacks() {
       scriptElement.onerror = scriptElement.onreadystatechange = scriptElement.onload = function() {
       };
+      if (removeTag) {
+        @com.google.gwt.core.client.ScriptInjector::nativeRemove(Lcom/google/gwt/core/client/JavaScriptObject;)(scriptElement);
+      }
     }
     scriptElement.onload = $entry(function() {
       clearCallbacks();
-      callback.@com.google.gwt.core.client.Callback::onSuccess(Ljava/lang/Object;)(null);
+      if (callback) {
+        callback.@com.google.gwt.core.client.Callback::onSuccess(Ljava/lang/Object;)(null);
+      }
     });
-    // or possibly more portable script_tag.addEventListener('error', function(){...}, true); 
+    // or possibly more portable script_tag.addEventListener('error', function(){...}, true);
     scriptElement.onerror = $entry(function() {
       clearCallbacks();
-      var ex = @com.google.gwt.core.client.CodeDownloadException::new(Ljava/lang/String;)("onerror() called.");
-      callback.@com.google.gwt.core.client.Callback::onFailure(Ljava/lang/Object;)(ex)
+      if (callback) {
+        var ex = @com.google.gwt.core.client.CodeDownloadException::new(Ljava/lang/String;)("onerror() called.");
+        callback.@com.google.gwt.core.client.Callback::onFailure(Ljava/lang/Object;)(ex);
+      }
     });
     scriptElement.onreadystatechange = $entry(function() {
       if (scriptElement.readyState == 'complete' || scriptElement.readyState == 'loaded') {
diff --git a/user/src/com/google/gwt/core/client/impl/Impl.java b/user/src/com/google/gwt/core/client/impl/Impl.java
index 5a224dd..f94faea 100644
--- a/user/src/com/google/gwt/core/client/impl/Impl.java
+++ b/user/src/com/google/gwt/core/client/impl/Impl.java
@@ -184,11 +184,11 @@
   }-*/;
 
   private static native Object apply(Object jsFunction, Object thisObj,
-      Object arguments) /*-{
+      Object args) /*-{
     if (@com.google.gwt.core.client.GWT::isScript()()) {
-      return jsFunction.apply(thisObj, arguments);
+      return jsFunction.apply(thisObj, args);
     } else {
-      var _ = jsFunction.apply(thisObj, arguments);
+      var _ = jsFunction.apply(thisObj, args);
       if (_ != null) {
         // Wrap for Development Mode
         _ = Object(_);
diff --git a/user/src/com/google/gwt/core/client/impl/SchedulerImpl.java b/user/src/com/google/gwt/core/client/impl/SchedulerImpl.java
index fd76da9..14d4381 100644
--- a/user/src/com/google/gwt/core/client/impl/SchedulerImpl.java
+++ b/user/src/com/google/gwt/core/client/impl/SchedulerImpl.java
@@ -149,55 +149,7 @@
     return queue;
   }
 
-  /**
-   * Execute a list of Tasks that hold RepeatingCommands.
-   * 
-   * @return A replacement array that is possibly a shorter copy of
-   *         <code>tasks</code>
-   */
-  private static JsArray<Task> runRepeatingTasks(JsArray<Task> tasks) {
-    assert tasks != null : "tasks";
 
-    int length = tasks.length();
-    if (length == 0) {
-      return null;
-    }
-
-    boolean canceledSomeTasks = false;
-    double start = Duration.currentTimeMillis();
-
-    while (Duration.currentTimeMillis() - start < TIME_SLICE) {
-      for (int i = 0; i < length; i++) {
-        assert tasks.length() == length : "Working array length changed "
-            + tasks.length() + " != " + length;
-        Task t = tasks.get(i);
-        if (t == null) {
-          continue;
-        }
-
-        assert t.isRepeating() : "Found a non-repeating Task";
-
-        if (!t.executeRepeating()) {
-          tasks.set(i, null);
-          canceledSomeTasks = true;
-        }
-      }
-    }
-
-    if (canceledSomeTasks) {
-      JsArray<Task> newTasks = createQueue();
-      // Remove tombstones
-      for (int i = 0; i < length; i++) {
-        if (tasks.get(i) != null) {
-          newTasks.push(tasks.get(i));
-        }
-      }
-      assert newTasks.length() < length;
-      return newTasks.length() == 0 ? null : newTasks;
-    } else {
-      return tasks;
-    }
-  }
 
   /**
    * Execute a list of Tasks that hold both ScheduledCommands and
@@ -374,6 +326,13 @@
   }
 
   /**
+   * there for testing
+   */
+  Duration createDuration() {
+    return new Duration();
+  }
+
+  /**
    * Called by Flusher.
    */
   void flushPostEventPumpCommands() {
@@ -412,4 +371,59 @@
       scheduleFixedDelayImpl(rescue, RESCUE_DELAY);
     }
   }
+
+  /**
+   * Execute a list of Tasks that hold RepeatingCommands.
+   *
+   * @return A replacement array that is possibly a shorter copy of <code>tasks</code>
+   */
+  private JsArray<Task> runRepeatingTasks(JsArray<Task> tasks) {
+    assert tasks != null : "tasks";
+
+    int length = tasks.length();
+    if (length == 0) {
+      return null;
+    }
+
+    boolean canceledSomeTasks = false;
+
+    Duration duration = createDuration();
+    while (duration.elapsedMillis() < TIME_SLICE) {
+      boolean executedSomeTask = false;
+      for (int i = 0; i < length; i++) {
+        assert tasks.length() == length : "Working array length changed " + tasks.length() + " != "
+            + length;
+        Task t = tasks.get(i);
+        if (t == null) {
+          continue;
+        }
+        executedSomeTask = true;
+
+        assert t.isRepeating() : "Found a non-repeating Task";
+
+        if (!t.executeRepeating()) {
+          tasks.set(i, null);
+          canceledSomeTasks = true;
+        }
+      }
+      if (!executedSomeTask) {
+        // no work left to do, break to avoid busy waiting until TIME_SLICE is reached
+        break;
+      }
+    }
+
+    if (canceledSomeTasks) {
+      JsArray<Task> newTasks = createQueue();
+      // Remove tombstones
+      for (int i = 0; i < length; i++) {
+        if (tasks.get(i) != null) {
+          newTasks.push(tasks.get(i));
+        }
+      }
+      assert newTasks.length() < length;
+      return newTasks.length() == 0 ? null : newTasks;
+    } else {
+      return tasks;
+    }
+  }
 }
diff --git a/user/src/com/google/gwt/core/client/impl/ScriptTagLoadingStrategy.java b/user/src/com/google/gwt/core/client/impl/ScriptTagLoadingStrategy.java
index 6b2b97e..1e88bf5 100644
--- a/user/src/com/google/gwt/core/client/impl/ScriptTagLoadingStrategy.java
+++ b/user/src/com/google/gwt/core/client/impl/ScriptTagLoadingStrategy.java
@@ -15,7 +15,8 @@
  */
 package com.google.gwt.core.client.impl;
 
-import com.google.gwt.core.client.JavaScriptObject;
+import com.google.gwt.core.client.Callback;
+import com.google.gwt.core.client.ScriptInjector;
 import com.google.gwt.core.client.impl.AsyncFragmentLoader.HttpDownloadFailure;
 
 /**
@@ -23,10 +24,8 @@
  * therefore cross site compatible. Note that if this strategy is used, the
  * deferred fragments must be wrapped in a callback called runAsyncCallbackX()
  * where X is the fragment number.
- * 
+ *
  * This is the default strategy for the CrossSiteIframeLinker.
- * 
- * TODO(unnurg): Try to use the ScriptInjector here
  */
 
 public class ScriptTagLoadingStrategy extends LoadingStrategyBase {
@@ -37,96 +36,57 @@
   protected static class ScriptTagDownloadStrategy implements DownloadStrategy {
     @Override
     public void tryDownload(final RequestData request) {
-      int fragment = request.getFragment();
-      JavaScriptObject scriptTag = createScriptTag(request.getUrl());
-      setOnSuccess(fragment, onSuccess(fragment, scriptTag, request));
-      setOnFailure(scriptTag, onFailure(fragment, scriptTag, request));
-      installScriptTag(scriptTag);
+      setAsyncCallback(request.getFragment(), request);
+
+      ScriptInjector.fromUrl(request.getUrl()).setRemoveTag(true).setCallback(
+        new Callback<Void, Exception>() {
+          @Override
+          public void onFailure(Exception reason) {
+            cleanup(request);
+          }
+
+          @Override
+          public void onSuccess(Void result) {
+            cleanup(request);
+          }
+      }).inject();
     }
   }
-  
-  protected static void callOnLoadError(RequestData request) {
-    request.onLoadError(new HttpDownloadFailure(request.getUrl(), 404,
-      "Script Tag Failure - no status available"), true);
+
+  private static void asyncCallback(RequestData request, String code) {
+    boolean firstTimeCalled = clearAsyncCallback(request.getFragment());
+    if (firstTimeCalled) {
+      request.tryInstall(code);
+    }
   }
 
-  private static native boolean clearCallbacksAndRemoveTag(
-      int fragment, JavaScriptObject scriptTag) /*-{
-    if (scriptTag.parentNode == null) {
-      // onSuccess or onFailure must have already been called.
+  private static void cleanup(RequestData request) {
+    boolean neverCalled = clearAsyncCallback(request.getFragment());
+    if (neverCalled) {
+      request.onLoadError(new HttpDownloadFailure(request.getUrl(), 404,
+        "Script Tag Failure - no status available"), true);
+    }
+  }
+
+  /**
+   * Returns true if the callback existed.
+   */
+  private static native boolean clearAsyncCallback(int fragment) /*-{
+    if (!__gwtModuleFunction['runAsyncCallback' + fragment]) {
       return false;
     }
-    var head = document.getElementsByTagName('head').item(0);
-    @com.google.gwt.core.client.impl.ScriptTagLoadingStrategy::clearOnSuccess(I)(fragment);
-    @com.google.gwt.core.client.impl.ScriptTagLoadingStrategy::clearOnFailure(Lcom/google/gwt/core/client/JavaScriptObject;)(
-      scriptTag);
-    head.removeChild(scriptTag);
+    delete __gwtModuleFunction['runAsyncCallback' + fragment];
     return true;
   }-*/;
-  
-  private static native void clearOnFailure(JavaScriptObject scriptTag) /*-{
-    scriptTag.onerror = scriptTag.onload = scriptTag.onreadystatechange = function(){};
-  }-*/;
 
-  private static native void clearOnSuccess(int fragment) /*-{
-    delete __gwtModuleFunction['runAsyncCallback' + fragment];
-  }-*/;
-  
-  private static native JavaScriptObject createScriptTag(String url) /*-{
-    var head = document.getElementsByTagName('head').item(0);
-    var scriptTag = document.createElement('script');
-    scriptTag.src = url;
-    return scriptTag;
-  }-*/;
-
-  private static native void installScriptTag(JavaScriptObject scriptTag) /*-{
-    var head = document.getElementsByTagName('head').item(0);
-    head.appendChild(scriptTag);
-  }-*/;
-
-  private static native JavaScriptObject onFailure(
-      int fragment, JavaScriptObject scriptTag, RequestData request) /*-{
-    return function() {
-      if (@com.google.gwt.core.client.impl.ScriptTagLoadingStrategy::clearCallbacksAndRemoveTag(ILcom/google/gwt/core/client/JavaScriptObject;)(
-        fragment, scriptTag)) {
-        @com.google.gwt.core.client.impl.ScriptTagLoadingStrategy::callOnLoadError(Lcom/google/gwt/core/client/impl/LoadingStrategyBase$RequestData;)(
-          request)
-      }
-    }
-  }-*/;
-  
-  private static native JavaScriptObject onSuccess(int fragment,
-      JavaScriptObject scriptTag, RequestData request) /*-{
-    return function(code, instance) {
-      if (@com.google.gwt.core.client.impl.ScriptTagLoadingStrategy::clearCallbacksAndRemoveTag(ILcom/google/gwt/core/client/JavaScriptObject;)(
-        fragment, scriptTag)) {
-        request.@com.google.gwt.core.client.impl.LoadingStrategyBase.RequestData::tryInstall(Ljava/lang/String;)(
-          code);
-      }
-    }
-  }-*/;
-  
-  private static native void setOnFailure(JavaScriptObject script,
-      JavaScriptObject callback) /*-{
-    script.onerror = function() {
-      callback();
-    }
-    script.onload = function() {
-      callback();
-    }
-    script.onreadystatechange = function () {
-      if (script.readyState == 'loaded' || script.readyState == 'complete') {
-        script.onreadystatechange = function () { }
-        callback();
-      }
-    }
-  }-*/;
-  
-  private static native void setOnSuccess(int fragment, JavaScriptObject callback) /*-{
-    __gwtModuleFunction['runAsyncCallback'+fragment] = callback;
+  private static native void setAsyncCallback(int fragment, RequestData request) /*-{
+    __gwtModuleFunction['runAsyncCallback' + fragment] = $entry(function(code, instance) {
+      @com.google.gwt.core.client.impl.ScriptTagLoadingStrategy::asyncCallback(Lcom/google/gwt/core/client/impl/LoadingStrategyBase$RequestData;Ljava/lang/String;)(
+        request, code);
+    });
   }-*/;
 
   public ScriptTagLoadingStrategy() {
     super(new ScriptTagDownloadStrategy());
-  } 
+  }
 }
diff --git a/user/src/com/google/gwt/core/client/impl/StackTraceCreator.java b/user/src/com/google/gwt/core/client/impl/StackTraceCreator.java
index 6b4924a..faff5a5 100644
--- a/user/src/com/google/gwt/core/client/impl/StackTraceCreator.java
+++ b/user/src/com/google/gwt/core/client/impl/StackTraceCreator.java
@@ -338,9 +338,16 @@
 
       index = toReturn.indexOf("(");
       if (index == -1) {
-        // No bracketed items found, hence no function name available
-        location = toReturn;
-        toReturn = "";
+        // No bracketed items found, try '@' (used by iOS).
+        index = toReturn.indexOf("@");
+        if (index == -1) {
+          // No bracketed items nor '@' found, hence no function name available
+          location = toReturn;
+          toReturn = "";
+        } else {
+          location = toReturn.substring(index + 1).trim();
+          toReturn = toReturn.substring(0, index).trim();
+        }
       } else {
         // Bracketed items found: strip them off, parse location info
         int closeParen = toReturn.indexOf(")", index);
diff --git a/user/src/com/google/gwt/dom/client/DOMImplMozilla.java b/user/src/com/google/gwt/dom/client/DOMImplMozilla.java
index 6b306fc..5dd8343 100644
--- a/user/src/com/google/gwt/dom/client/DOMImplMozilla.java
+++ b/user/src/com/google/gwt/dom/client/DOMImplMozilla.java
@@ -141,14 +141,22 @@
 
   @Override
   public native int getBodyOffsetLeft(Document doc) /*-{
-    var style = $wnd.getComputedStyle(doc.documentElement, '');
-    return parseInt(style.marginLeft) + parseInt(style.borderLeftWidth);
+    var style = $wnd.getComputedStyle(doc.documentElement, null);
+    if (style == null) {
+      // Works around https://bugzilla.mozilla.org/show_bug.cgi?id=548397
+      return 0;
+    }
+    return parseInt(style.marginLeft, 10) + parseInt(style.borderLeftWidth, 10);
   }-*/;
 
   @Override
   public native int getBodyOffsetTop(Document doc) /*-{
-    var style = $wnd.getComputedStyle(doc.documentElement, '');
-    return parseInt(style.marginTop) + parseInt(style.borderTopWidth);
+    var style = $wnd.getComputedStyle(doc.documentElement, null);
+    if (style == null) {
+      // Works around https://bugzilla.mozilla.org/show_bug.cgi?id=548397
+      return 0;
+    }
+    return parseInt(style.marginTop, 10) + parseInt(style.borderTopWidth, 10);
   }-*/;
 
   @Override
diff --git a/user/src/com/google/gwt/dom/client/Element.java b/user/src/com/google/gwt/dom/client/Element.java
index 258d3d3..7d1fd5b 100644
--- a/user/src/com/google/gwt/dom/client/Element.java
+++ b/user/src/com/google/gwt/dom/client/Element.java
@@ -85,9 +85,10 @@
    * present, this method has no effect.
    * 
    * @param className the class name to be added
+   * @return <code>true</code> if this element did not already have the specified class name
    * @see #setClassName(String)
    */
-  public final void addClassName(String className) {
+  public final boolean addClassName(String className) {
     assert (className != null) : "Unexpectedly null class name";
 
     className = className.trim();
@@ -95,28 +96,18 @@
 
     // Get the current style string.
     String oldClassName = getClassName();
-    int idx = oldClassName.indexOf(className);
-
-    // Calculate matching index.
-    while (idx != -1) {
-      if (idx == 0 || oldClassName.charAt(idx - 1) == ' ') {
-        int last = idx + className.length();
-        int lastPos = oldClassName.length();
-        if ((last == lastPos)
-            || ((last < lastPos) && (oldClassName.charAt(last) == ' '))) {
-          break;
-        }
-      }
-      idx = oldClassName.indexOf(className, idx + 1);
-    }
+    int idx = indexOfName(oldClassName, className);
 
     // Only add the style if it's not already present.
     if (idx == -1) {
       if (oldClassName.length() > 0) {
-        oldClassName += " ";
+        setClassName(oldClassName + " " + className);
+      } else {
+        setClassName(className);
       }
-      setClassName(oldClassName + className);
+      return true;
     }
+    return false;
   }
 
   /**
@@ -528,10 +519,11 @@
    * Removes a name from this element's class property. If the name is not
    * present, this method has no effect.
    * 
-   * @param className the class name to be added
+   * @param className the class name to be removed
+   * @return <code>true</code> if this element had the specified class name
    * @see #setClassName(String)
    */
-  public final void removeClassName(String className) {
+  public final boolean removeClassName(String className) {
     assert (className != null) : "Unexpectedly null class name";
 
     className = className.trim();
@@ -539,20 +531,7 @@
 
     // Get the current style string.
     String oldStyle = getClassName();
-    int idx = oldStyle.indexOf(className);
-
-    // Calculate matching index.
-    while (idx != -1) {
-      if (idx == 0 || oldStyle.charAt(idx - 1) == ' ') {
-        int last = idx + className.length();
-        int lastPos = oldStyle.length();
-        if ((last == lastPos)
-            || ((last < lastPos) && (oldStyle.charAt(last) == ' '))) {
-          break;
-        }
-      }
-      idx = oldStyle.indexOf(className, idx + 1);
-    }
+    int idx = indexOfName(oldStyle, className);
 
     // Don't try to remove the style if it's not there.
     if (idx != -1) {
@@ -571,7 +550,35 @@
       }
 
       setClassName(newClassName);
+      return true;
     }
+    return false;
+  }
+
+  /**
+   * Returns the index of the first occurrence of name in a space-separated list of names,
+   * or -1 if not found.
+   *
+   * @param nameList list of space delimited names
+   * @param name a non-empty string.  Should be already trimmed.
+   */
+  static int indexOfName(String nameList, String name) {
+    int idx = nameList.indexOf(name);
+
+    // Calculate matching index.
+    while (idx != -1) {
+      if (idx == 0 || nameList.charAt(idx - 1) == ' ') {
+        int last = idx + name.length();
+        int lastPos = nameList.length();
+        if ((last == lastPos)
+            || ((last < lastPos) && (nameList.charAt(last) == ' '))) {
+          break;
+        }
+      }
+      idx = nameList.indexOf(name, idx + 1);
+    }
+
+    return idx;
   }
 
   /**
diff --git a/user/src/com/google/gwt/dom/client/Style.java b/user/src/com/google/gwt/dom/client/Style.java
index 29cbc81..414483b 100644
--- a/user/src/com/google/gwt/dom/client/Style.java
+++ b/user/src/com/google/gwt/dom/client/Style.java
@@ -1153,7 +1153,7 @@
   }
 
   /**
-   * Clear the font-size css property.
+   * Clear the float css property.
    */
   public final void clearFloat() {
     clearProperty(DOMImpl.impl.cssFloatPropertyName());
diff --git a/user/src/com/google/gwt/editor/client/adapters/EditorSource.java b/user/src/com/google/gwt/editor/client/adapters/EditorSource.java
index 6a1d779..e2991fa 100644
--- a/user/src/com/google/gwt/editor/client/adapters/EditorSource.java
+++ b/user/src/com/google/gwt/editor/client/adapters/EditorSource.java
@@ -22,7 +22,7 @@
 
 /**
  * An entity capable of creating and destroying instances of Editors. This type
- * is used by Editors which operate on ordered data, sich as {@link ListEditor}.
+ * is used by Editors which operate on ordered data, such as {@link ListEditor}.
  * 
  * @param <E> the type of Editor required
  * @see com.google.gwt.editor.client.testing.FakeEditorSource
@@ -45,6 +45,7 @@
    * @return a List of {@link Editor}s of type E
    */
   public List<E> create(int count, int index) {
+    assert index >= 0;
     List<E> toReturn = new ArrayList<E>(count);
     for (int i = 0; i < count; i++) {
       toReturn.add(create(index + i));
@@ -53,6 +54,22 @@
   }
 
   /**
+   * Creates a temporary sub-Editor to use for traversal.
+   * <p>
+   * For backwards compatibility with GWT 2.5.0 and earlier, the default implementation calls
+   * {@code create(0)} and {@link #dispose(Editor) disposes} the editor right away.
+   * 
+   * @return an {@link Editor} of type E
+   * @see ListEditor#createEditorForTraversal()
+   * @see com.google.gwt.editor.client.EditorContext#traverseSyntheticCompositeEditor
+   */
+  public E createEditorForTraversal() {
+    E toReturn = create(0);
+    dispose(toReturn);
+    return toReturn;
+  }
+
+  /**
    * Called when an Editor no longer requires a sub-Editor. The default
    * implementation is a no-op.
    *
@@ -68,5 +85,6 @@
    * @param index the index of the Editor
    */
   public void setIndex(E editor, int index) {
+    assert index >= 0;
   }
 }
\ No newline at end of file
diff --git a/user/src/com/google/gwt/editor/client/adapters/HasDataEditor.java b/user/src/com/google/gwt/editor/client/adapters/HasDataEditor.java
index f2bb40f..a2a781f 100644
--- a/user/src/com/google/gwt/editor/client/adapters/HasDataEditor.java
+++ b/user/src/com/google/gwt/editor/client/adapters/HasDataEditor.java
@@ -35,21 +35,30 @@
 
     @Override
     public IndexedEditor<T> create(int index) {
+      assert index >= 0;
       return new IndexedEditor<T>(index, data);
     }
 
     @Override
+    public LeafValueEditor<T> createEditorForTraversal() {
+      return new IndexedEditor<T>(-1, null);
+    }
+
+    @Override
     public void dispose(LeafValueEditor<T> subEditor) {
+      // We use a negative index as flag in createEditorForTraversal
+      assert ((IndexedEditor<T>) subEditor).index >= 0;
       data.setRowCount(data.getRowCount() - 1);
     }
 
     @Override
     public void setIndex(LeafValueEditor<T> editor, int index) {
+      assert index >= 0;
       ((IndexedEditor<T>) editor).setIndex(index);
     }
   }
 
-  static class IndexedEditor<Q> implements LeafValueEditor<Q> {
+  private static class IndexedEditor<Q> implements LeafValueEditor<Q> {
     private int index;
     private Q value;
     private final HasData<Q> data;
@@ -59,22 +68,27 @@
       this.data = data;
     }
 
+    @Override
     public Q getValue() {
       return value;
     }
 
-    public void setIndex(int index) {
-      this.index = index;
-      push();
-    }
-
+    @Override
     public void setValue(Q value) {
       this.value = value;
       push();
     }
 
+    void setIndex(int index) {
+      assert index >= 0;
+      this.index = index;
+      push();
+    }
+
     private void push() {
-      data.setRowData(index, Collections.singletonList(value));
+      if (data != null) {
+        data.setRowData(index, Collections.singletonList(value));
+      }
     }
   }
 
@@ -92,7 +106,7 @@
   /**
    * Prevent subclassing.
    */
-  HasDataEditor(HasData<T> data) {
+  private HasDataEditor(HasData<T> data) {
     super(new HasDataEditorSource<T>(data));
   }
 }
diff --git a/user/src/com/google/gwt/editor/client/adapters/ListEditor.java b/user/src/com/google/gwt/editor/client/adapters/ListEditor.java
index 262ad66..0befca9 100644
--- a/user/src/com/google/gwt/editor/client/adapters/ListEditor.java
+++ b/user/src/com/google/gwt/editor/client/adapters/ListEditor.java
@@ -66,9 +66,7 @@
    * @return an {@link Editor} of type E
    */
   public E createEditorForTraversal() {
-    E toReturn = editorSource.create(0);
-    editorSource.dispose(toReturn);
-    return toReturn;
+    return editorSource.createEditorForTraversal();
   }
 
   public void flush() {
diff --git a/user/src/com/google/gwt/editor/client/impl/ErrorCollector.java b/user/src/com/google/gwt/editor/client/impl/ErrorCollector.java
index a51c62a..742e180 100644
--- a/user/src/com/google/gwt/editor/client/impl/ErrorCollector.java
+++ b/user/src/com/google/gwt/editor/client/impl/ErrorCollector.java
@@ -1,12 +1,12 @@
 /*
  * Copyright 2011 Google Inc.
- * 
+ *
  * Licensed 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
@@ -57,10 +57,14 @@
       // Get the enclosing error domain
       List<EditorError> tryConsume = errorStack.pop();
       int prefixLength = ctx.getAbsolutePath().length();
-      // Remove trailing dot in non-empty paths
-      prefixLength = prefixLength == 0 ? 0 : prefixLength + 1;
       for (EditorError error : tryConsume) {
-        ((SimpleError) error).setPathPrefixLength(prefixLength);
+        if ((prefixLength > 0) && (prefixLength < error.getAbsolutePath().length())) {
+          // Remove trailing dot
+          ((SimpleError) error).setPathPrefixLength(prefixLength + 1);
+        } else {
+          assert prefixLength == 0 || error.getAbsolutePath().equals(ctx.getAbsolutePath());
+          ((SimpleError) error).setPathPrefixLength(prefixLength);
+        }
       }
       /*
        * Pass collected errors to the editor. Must pass empty error collection
diff --git a/user/src/com/google/gwt/editor/client/testing/FakeEditorSource.java b/user/src/com/google/gwt/editor/client/testing/FakeEditorSource.java
index 073aec3..5deff76 100644
--- a/user/src/com/google/gwt/editor/client/testing/FakeEditorSource.java
+++ b/user/src/com/google/gwt/editor/client/testing/FakeEditorSource.java
@@ -48,6 +48,11 @@
   }
 
   @Override
+  public FakeLeafValueEditor<T> createEditorForTraversal() {
+    return new FakeLeafValueEditor<T>();
+  }
+
+  @Override
   public void dispose(FakeLeafValueEditor<T> subEditor) {
     lastKnownPosition.put(subEditor, DISPOSED);
   }
diff --git a/user/src/com/google/gwt/event/dom/client/HandlesAllTouchEvents.java b/user/src/com/google/gwt/event/dom/client/HandlesAllTouchEvents.java
index 1c8ea00..c183fe2 100644
--- a/user/src/com/google/gwt/event/dom/client/HandlesAllTouchEvents.java
+++ b/user/src/com/google/gwt/event/dom/client/HandlesAllTouchEvents.java
@@ -17,10 +17,10 @@
 package com.google.gwt.event.dom.client;
 
 /**
- * Receiver used to handle all mouse events at once.
+ * Receiver used to handle all touch events at once.
  *
  * WARNING, PLEASE READ: As this class is intended for developers who wish to
- * handle all mouse events in GWT, new mouse handler interfaces will be added to
+ * handle all touch events in GWT, new touch handler interfaces will be added to
  * it. Therefore, updates to GWT could cause breaking API changes.
  *
  */
diff --git a/user/src/com/google/gwt/event/shared/testing/CountingEventBus.java b/user/src/com/google/gwt/event/shared/testing/CountingEventBus.java
index b0aa76b..bf102ab 100644
--- a/user/src/com/google/gwt/event/shared/testing/CountingEventBus.java
+++ b/user/src/com/google/gwt/event/shared/testing/CountingEventBus.java
@@ -76,7 +76,27 @@
     castFireEventFromSource(event, source);
   }
 
+  /**
+   * How many handlers are registered for the given {@code type}.
+   *
+   * @deprecated Please use {@code getHandlerCount}.
+   */
   public int getCount(GwtEvent.Type<?> type) {
     return real.getCount(type);
   }
+
+  /**
+   * How many events have fired for the given {@code type}. These events may not have been
+   * passed to any handlers.
+   */
+  public int getFiredCount(Type<?> type) {
+    return real.getFiredCount(type);
+  }
+
+  /**
+   * How many handlers are registered for the given {@code type}.
+   */
+  public int getHandlerCount(Type<?> type) {
+    return real.getHandlerCount(type);
+  }
 }
diff --git a/user/src/com/google/gwt/http/HTTP.gwt.xml b/user/src/com/google/gwt/http/HTTP.gwt.xml
index c212dd4..4d2da5b 100644
--- a/user/src/com/google/gwt/http/HTTP.gwt.xml
+++ b/user/src/com/google/gwt/http/HTTP.gwt.xml
@@ -24,4 +24,13 @@
 	<!-- Inheriting User module for Window and Timer. These should be factored
 	     out of User soon. -->
 	<inherits name="com.google.gwt.user.User"/>
+
+	<replace-with class="com.google.gwt.http.client.Request.RequestImplIE6To9">
+		<when-type-is class="com.google.gwt.http.client.Request.RequestImpl" />
+		<any>
+			<when-property-is name="user.agent" value="ie6" />
+			<when-property-is name="user.agent" value="ie8" />
+			<when-property-is name="user.agent" value="ie9" />
+		</any>
+	</replace-with>
 </module>
diff --git a/user/src/com/google/gwt/http/client/Request.java b/user/src/com/google/gwt/http/client/Request.java
index 212b13f..12608c5 100644
--- a/user/src/com/google/gwt/http/client/Request.java
+++ b/user/src/com/google/gwt/http/client/Request.java
@@ -15,6 +15,7 @@
  */
 package com.google.gwt.http.client;
 
+import com.google.gwt.core.shared.GWT;
 import com.google.gwt.user.client.Timer;
 import com.google.gwt.xhr.client.XMLHttpRequest;
 
@@ -32,6 +33,63 @@
 public class Request {
 
   /**
+   * Native implementation associated with {@link Request}. User classes should not use this class
+   * directly.
+   */
+  static class RequestImpl {
+
+    /**
+     * Creates a {@link Response} instance for the given JavaScript XmlHttpRequest object.
+     *
+     * @param xmlHttpRequest xmlHttpRequest object for which we need a response
+     * @return a {@link Response} object instance
+     */
+    Response createResponse(final XMLHttpRequest xmlHttpRequest) {
+      return new ResponseImpl(xmlHttpRequest);
+    }
+  }
+
+  /**
+   * Special {@link RequestImpl} for IE6-9 to work around some IE specialities.
+   */
+  static class RequestImplIE6To9 extends RequestImpl {
+
+    @Override
+    Response createResponse(XMLHttpRequest xmlHttpRequest) {
+      return new ResponseImpl(xmlHttpRequest) {
+
+        @Override
+        public int getStatusCode() {
+          /*
+           * http://code.google.com/p/google-web-toolkit/issues/detail?id=5031
+           *
+           * The XMLHTTPRequest object in IE will return a status code of 1223 and drop some
+           * response headers if the server returns a HTTP/204.
+           *
+           * This issue is fixed in IE10.
+           */
+          int statusCode = super.getStatusCode();
+          return (statusCode == 1223) ? SC_NO_CONTENT : statusCode;
+        }
+      };
+    }
+  }
+
+  /*
+   * Although Request is a client-side class, it's a transitive dependency of
+   * some GWT servlet code.  Because GWT.create() isn't safe to call on the
+   * server, we use the "Initialization On Demand Holder" idiom to lazily
+   * initialize the RequestImpl.
+   */
+  private static class ImplHolder {
+    private static final RequestImpl impl = GWT.create(RequestImpl.class);
+
+    public static RequestImpl get() {
+      return impl;
+    }
+  }
+
+  /**
    * Creates a {@link Response} instance for the given JavaScript XmlHttpRequest
    * object.
    * 
@@ -39,94 +97,7 @@
    * @return a {@link Response} object instance
    */
   private static Response createResponse(final XMLHttpRequest xmlHttpRequest) {
-    assert (isResponseReady(xmlHttpRequest));
-    Response response = new Response() {
-      @Override
-      public String getHeader(String header) {
-        StringValidator.throwIfEmptyOrNull("header", header);
-
-        return xmlHttpRequest.getResponseHeader(header);
-      }
-
-      @Override
-      public Header[] getHeaders() {
-        return Request.getHeaders(xmlHttpRequest);
-      }
-
-      @Override
-      public String getHeadersAsString() {
-        return xmlHttpRequest.getAllResponseHeaders();
-      }
-
-      @Override
-      public int getStatusCode() {
-        return xmlHttpRequest.getStatus();
-      }
-
-      @Override
-      public String getStatusText() {
-        return xmlHttpRequest.getStatusText();
-      }
-
-      @Override
-      public String getText() {
-        return xmlHttpRequest.getResponseText();
-      }
-    };
-    return response;
-  }
-
-  /**
-   * Returns an array of headers built by parsing the string of headers returned
-   * by the JavaScript <code>XmlHttpRequest</code> object.
-   * 
-   * @param xmlHttpRequest
-   * @return array of Header items
-   */
-  private static Header[] getHeaders(XMLHttpRequest xmlHttp) {
-    String allHeaders = xmlHttp.getAllResponseHeaders();
-    String[] unparsedHeaders = allHeaders.split("\n");
-    Header[] parsedHeaders = new Header[unparsedHeaders.length];
-
-    for (int i = 0, n = unparsedHeaders.length; i < n; ++i) {
-      String unparsedHeader = unparsedHeaders[i];
-
-      if (unparsedHeader.length() == 0) {
-        continue;
-      }
-
-      int endOfNameIdx = unparsedHeader.indexOf(':');
-      if (endOfNameIdx < 0) {
-        continue;
-      }
-
-      final String name = unparsedHeader.substring(0, endOfNameIdx).trim();
-      final String value = unparsedHeader.substring(endOfNameIdx + 1).trim();
-      Header header = new Header() {
-        @Override
-        public String getName() {
-          return name;
-        }
-
-        @Override
-        public String getValue() {
-          return value;
-        }
-
-        @Override
-        public String toString() {
-          return name + " : " + value;
-        }
-      };
-
-      parsedHeaders[i] = header;
-    }
-
-    return parsedHeaders;
-  }
-
-  private static boolean isResponseReady(XMLHttpRequest xhr) {
-    return xhr.getReadyState() == XMLHttpRequest.DONE;
+    return ImplHolder.get().createResponse(xmlHttpRequest);
   }
 
   /**
diff --git a/user/src/com/google/gwt/http/client/RequestBuilder.java b/user/src/com/google/gwt/http/client/RequestBuilder.java
index 27685cd..3168a8d 100644
--- a/user/src/com/google/gwt/http/client/RequestBuilder.java
+++ b/user/src/com/google/gwt/http/client/RequestBuilder.java
@@ -91,6 +91,11 @@
   private final String httpMethod;
 
   /**
+   * Whether to include credentials for a Cross Origin Request.
+   */
+  private boolean includeCredentials;
+
+  /**
    * Password to use when opening a JavaScript XmlHttpRequest object.
    */
   private String password;
@@ -355,6 +360,15 @@
   }
 
   /**
+   * Sets whether the cross origin request will include credentials.
+   *
+   * @param withCredentials whether to include credentials in XHR
+   */
+  public void setIncludeCredentials(boolean includeCredentials) {
+    this.includeCredentials = includeCredentials;
+  }
+
+  /**
    * Sends an HTTP request based on the current builder configuration. If no
    * request headers have been set, the header "Content-Type" will be used with
    * a value of "text/plain; charset=utf-8".
@@ -384,6 +398,9 @@
     }
 
     setHeaders(xmlHttpRequest);
+    if (includeCredentials) {
+      xmlHttpRequest.setWithCredentials(true);
+    }
 
     final Request request = new Request(xmlHttpRequest, timeoutMillis, callback);
 
diff --git a/user/src/com/google/gwt/http/client/ResponseImpl.java b/user/src/com/google/gwt/http/client/ResponseImpl.java
new file mode 100644
index 0000000..8927aef
--- /dev/null
+++ b/user/src/com/google/gwt/http/client/ResponseImpl.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2008 Google Inc.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.http.client;
+
+import com.google.gwt.xhr.client.XMLHttpRequest;
+
+/**
+ * A {@link Response} implementation based on a {@link XMLHttpRequest}.
+ */
+class ResponseImpl extends Response {
+
+  private final XMLHttpRequest xmlHttpRequest;
+
+  public ResponseImpl(XMLHttpRequest xmlHttpRequest) {
+    this.xmlHttpRequest = xmlHttpRequest;
+
+    assert isResponseReady();
+  }
+
+  @Override
+  public String getHeader(String header) {
+    StringValidator.throwIfEmptyOrNull("header", header);
+
+    return xmlHttpRequest.getResponseHeader(header);
+  }
+
+  @Override
+  public Header[] getHeaders() {
+    String allHeaders = xmlHttpRequest.getAllResponseHeaders();
+    String[] unparsedHeaders = allHeaders.split("\n");
+    Header[] parsedHeaders = new Header[unparsedHeaders.length];
+
+    for (int i = 0, n = unparsedHeaders.length; i < n; ++i) {
+      String unparsedHeader = unparsedHeaders[i];
+
+      if (unparsedHeader.length() == 0) {
+        continue;
+      }
+
+      int endOfNameIdx = unparsedHeader.indexOf(':');
+      if (endOfNameIdx < 0) {
+        continue;
+      }
+
+      final String name = unparsedHeader.substring(0, endOfNameIdx).trim();
+      final String value = unparsedHeader.substring(endOfNameIdx + 1).trim();
+      Header header = new Header() {
+        @Override
+        public String getName() {
+          return name;
+        }
+
+        @Override
+        public String getValue() {
+          return value;
+        }
+
+        @Override
+        public String toString() {
+          return name + " : " + value;
+        }
+      };
+
+      parsedHeaders[i] = header;
+    }
+
+    return parsedHeaders;
+  }
+
+  @Override
+  public String getHeadersAsString() {
+    return xmlHttpRequest.getAllResponseHeaders();
+  }
+
+  @Override
+  public int getStatusCode() {
+    return xmlHttpRequest.getStatus();
+  }
+
+  @Override
+  public String getStatusText() {
+    return xmlHttpRequest.getStatusText();
+  }
+
+  @Override
+  public String getText() {
+    return xmlHttpRequest.getResponseText();
+  }
+
+  private boolean isResponseReady() {
+    return xmlHttpRequest.getReadyState() == XMLHttpRequest.DONE;
+  }
+}
diff --git a/user/src/com/google/gwt/i18n/client/Messages.java b/user/src/com/google/gwt/i18n/client/Messages.java
index d442349..22d93a1 100644
--- a/user/src/com/google/gwt/i18n/client/Messages.java
+++ b/user/src/com/google/gwt/i18n/client/Messages.java
@@ -129,17 +129,17 @@
  * &#64;DefaultLocale("en_US")
  * public interface MyMessages extends Messages {
  *   &#64;Key("1234")
- *   &#64;DefaultText("This is a plain string.")
+ *   &#64;DefaultMessage("This is a plain string.")
  *   String oneTwoThreeFour();
  *   
- *   &#64;DefaultText("You have {0} widgets")
+ *   &#64;DefaultMessage("You have {0} widgets")
  *   &#64;PluralText({"one", "You have one widget")
  *   String widgetCount(&#64;PluralCount int count);
  *   
- *   &#64;DefaultText("No reference to the argument")
+ *   &#64;DefaultMessage("No reference to the argument")
  *   String optionalArg(&#64;Optional String ignored);
  *   
- *   &#64;DefaultText("Your cart total is {0,number,currency}")
+ *   &#64;DefaultMessage("Your cart total is {0,number,currency}")
  *   &#64;Description("The total value of the items in the shopping cart in local currency")
  *   String totalAmount(&#64;Example("$5.00") double amount);
  *   
diff --git a/user/src/com/google/gwt/i18n/client/TimeZoneInfo.java b/user/src/com/google/gwt/i18n/client/TimeZoneInfo.java
index a0ab0a3..60d85e3 100644
--- a/user/src/com/google/gwt/i18n/client/TimeZoneInfo.java
+++ b/user/src/com/google/gwt/i18n/client/TimeZoneInfo.java
@@ -19,6 +19,7 @@
 import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.core.client.JsArrayInteger;
 import com.google.gwt.core.client.JsArrayString;
+import com.google.gwt.core.client.JsonUtils;
 
 /**
  * A JavaScript Overlay type on top of the JSON data describing everything we
@@ -38,13 +39,9 @@
    * @return a TimeZoneInfo object made from the supplied JSON.
    */
   public static TimeZoneInfo buildTimeZoneData(String json) {
-    return (TimeZoneInfo) eval(json);
+    return JsonUtils.safeEval(json);
   }
   
-  private static native JavaScriptObject eval(String json) /*-{
-    return eval("(" + json + ")");
-  }-*/;
-  
   protected TimeZoneInfo() { }
   
   public final native String getID() /*-{ return this.id; }-*/;
diff --git a/user/src/com/google/gwt/i18n/client/constants/CurrencyExtra.properties b/user/src/com/google/gwt/i18n/client/constants/CurrencyExtra.properties
index 35c09a4..6b5547f 100644
--- a/user/src/com/google/gwt/i18n/client/constants/CurrencyExtra.properties
+++ b/user/src/com/google/gwt/i18n/client/constants/CurrencyExtra.properties
@@ -151,7 +151,7 @@
 QAR = |||Rial
 RON = |||RON
 RSD = |||din
-RUB = руб|||Rup
+RUB = руб.|||руб.
 RWF = |||RF
 SAR = SR|||Rial
 SBD = |||$
diff --git a/user/src/com/google/gwt/i18n/client/impl/plurals/DefaultRule_1_paucal_n.java b/user/src/com/google/gwt/i18n/client/impl/plurals/DefaultRule_1_paucal_n.java
index 7f43656..8bb77b7 100644
--- a/user/src/com/google/gwt/i18n/client/impl/plurals/DefaultRule_1_paucal_n.java
+++ b/user/src/com/google/gwt/i18n/client/impl/plurals/DefaultRule_1_paucal_n.java
@@ -19,8 +19,13 @@
 import com.google.gwt.i18n.client.PluralRule.PluralForm;
 
 /**
- * Common plural rule for languages that have 1, few, and other forms.
- * 
+ * Common plural rule for languages that have singular, two plural forms
+ * (based on the units and tens digits) and a fractional form ("other").
+ *
+ * Polish is the only language that uses this plural rule.
+ *
+ * Note: Perhaps this class should have been named: DefaultRule_1_x234_n
+ *
  * @see DefaultRule_0_1_2_n
  * @see DefaultRule_0_1_n
  * @see DefaultRule_01_n
@@ -35,16 +40,18 @@
     return new PluralForm[] {
         new PluralForm("other", "Default plural form"),
         new PluralForm("one", "Count is 1"),
-        new PluralForm("paucal", "Count ends in 2-4 but not 12-14 or 22-24"),
+        new PluralForm("few", "Count ends in 2-4 but not 12-14"),
+        new PluralForm("many", "Count is not 1 and does not end in 2-4 except 12-14"),
     };
   }
 
   public static int select(int n) {
     /*
-     * For Polish, numbers that end in 2-4, except 12-14 and 22-24, have a special plural form.
+     * This method will only return a 1, 2, or 3 ("one", "few", or "many").
+     * This method will never return 0 because "other" is the fractional form.
      */
     return n == 1 ? 1
-        : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 > 29) ? 2
-        : 0;
+        : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 > 20) ? 2
+        : 3;
   }
 }
diff --git a/user/src/com/google/gwt/i18n/rebind/AnnotationsResource.java b/user/src/com/google/gwt/i18n/rebind/AnnotationsResource.java
index 8fde38c..90ee633 100644
--- a/user/src/com/google/gwt/i18n/rebind/AnnotationsResource.java
+++ b/user/src/com/google/gwt/i18n/rebind/AnnotationsResource.java
@@ -335,7 +335,7 @@
     if (!isConstants) {
       if (constantsCount > 0) {
         throw new AnnotationsError(
-            "@Default*Value is not permitted on a Messages interface; see @DefaultText");
+            "@Default*Value is not permitted on a Messages interface; see @DefaultMessage");
       }
       if (defaultText != null) {
         return defaultText.value();
@@ -343,7 +343,7 @@
     } else {
       if (defaultText != null) {
         throw new AnnotationsError(
-            "@DefaultText is not permitted on a Constants interface; see @Default*Value");
+            "@DefaultMessage is not permitted on a Constants interface; see @Default*Value");
       }
       if (constantsCount > 1) {
         throw new AnnotationsError(
diff --git a/user/src/com/google/gwt/i18n/shared/DateTimeFormat.java b/user/src/com/google/gwt/i18n/shared/DateTimeFormat.java
index 7996850..471314d 100644
--- a/user/src/com/google/gwt/i18n/shared/DateTimeFormat.java
+++ b/user/src/com/google/gwt/i18n/shared/DateTimeFormat.java
@@ -1473,7 +1473,7 @@
       if (part.count > 0) {
         if (abutPat < 0 && part.abutStart) {
           abutPat = i;
-          abutStart = start;
+          abutStart = parsePos[0];
           abutPass = 0;
         }
 
diff --git a/user/src/com/google/gwt/junit/client/impl/JUnitHost.java b/user/src/com/google/gwt/junit/client/impl/JUnitHost.java
index 711b6da..9d82121 100644
--- a/user/src/com/google/gwt/junit/client/impl/JUnitHost.java
+++ b/user/src/com/google/gwt/junit/client/impl/JUnitHost.java
@@ -146,13 +146,22 @@
     public boolean equals(Object o) {
       if (o instanceof TestInfo) {
         TestInfo other = (TestInfo) o;
-        return getTestModule().equals(other.getTestModule())
-            && getTestClass().equals(other.getTestClass())
-            && getTestMethod().equals(other.getTestMethod());
+        return equals(testModule, other.testModule)
+            && equals(testClass, other.testClass)
+            && equals(testMethod, other.testMethod);
       }
       return false;
     }
 
+    /*
+     * Helper method for TestInfo.equals.
+     *
+     * TODO: Replace with Objects.equals() once we can rely on JDK7.
+     */
+    private static boolean equals(Object a, Object b) {
+      return a == null ? b == null : a.equals(b);
+    }
+
     public String getTestClass() {
       return testClass;
     }
diff --git a/user/src/com/google/gwt/junit/public/junit-standards.html b/user/src/com/google/gwt/junit/public/junit-standards.html
index 490ee0c..0d6fe07 100644
--- a/user/src/com/google/gwt/junit/public/junit-standards.html
+++ b/user/src/com/google/gwt/junit/public/junit-standards.html
@@ -47,12 +47,12 @@
 }
 
 function loadSelectionScript() {
-  var moduleName = document.location.href;
+  var moduleName = location.pathname;
   var pos = moduleName.lastIndexOf('/');
   moduleName = moduleName.substr(0, pos);
   pos = moduleName.lastIndexOf('/');
   moduleName = moduleName.substr(pos + 1);
-  document.write("<script language='javascript' src='" + moduleName + ".nocache.js'><\/script>");
+  document.write('<script language="javascript" src="' + encodeURIComponent(moduleName) + '.nocache.js"><\/script>');
 }
 loadSelectionScript();
 -->
diff --git a/user/src/com/google/gwt/junit/public/junit.html b/user/src/com/google/gwt/junit/public/junit.html
index efb2d26..e58ebce 100644
--- a/user/src/com/google/gwt/junit/public/junit.html
+++ b/user/src/com/google/gwt/junit/public/junit.html
@@ -45,12 +45,12 @@
 }
 
 function loadSelectionScript() {
-  var moduleName = document.location.href;
+  var moduleName = location.pathname;
   var pos = moduleName.lastIndexOf('/');
   moduleName = moduleName.substr(0, pos);
   pos = moduleName.lastIndexOf('/');
   moduleName = moduleName.substr(pos + 1);
-  document.write("<script language='javascript' src='" + moduleName + ".nocache.js'></script>");
+  document.write('<script language="javascript" src="' + encodeURIComponent(moduleName) + '.nocache.js"><\/script>');
 }
 loadSelectionScript();
 -->
diff --git a/user/src/com/google/gwt/logging/server/StackTraceDeobfuscator.java b/user/src/com/google/gwt/logging/server/StackTraceDeobfuscator.java
index 18567f8..59bef01 100644
--- a/user/src/com/google/gwt/logging/server/StackTraceDeobfuscator.java
+++ b/user/src/com/google/gwt/logging/server/StackTraceDeobfuscator.java
@@ -27,8 +27,11 @@
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Map;
 import java.util.Scanner;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.logging.LogRecord;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -49,39 +52,109 @@
  */
 public class StackTraceDeobfuscator {
 
-  private static class SymbolMap extends HashMap<String, String> {
+  /**
+   * A cache that maps obfuscated symbols to arbitrary non-null string values.
+   * The cache can assume each (strongName, symbol) pair always maps to the
+   * same value (never goes invalid), but must treat data as an opaque string.
+   */
+  private static class SymbolCache {
+    // TODO(srogoff): This SymbolCache implementation never drops old entries. If clients ever need
+    // to cap memory usage even with lazy loading, consider making SymbolCache an interface.
+    // This could allow clients to pass their own implementation to the StackTraceDeobfuscator
+    // constructor, backed by a Guava Cache or other entry-evicting mapping.
+
+    private final ConcurrentHashMap<String, HashMap<String, String>> symbolMaps;
+
+    SymbolCache() {
+      symbolMaps = new ConcurrentHashMap<String, HashMap<String, String>>();
+    }
+
+    /**
+     * Adds some symbol data to the cache for the given strong name.
+     */
+    void putAll(String strongName, Map<String, String> symbolMap) {
+      if (strongName == null || symbolMap.size() == 0) {
+        return;
+      }
+      symbolMaps.putIfAbsent(strongName, new HashMap<String, String>());
+      HashMap<String, String> existingMap = symbolMaps.get(strongName);
+      synchronized (existingMap) {
+        existingMap.putAll(symbolMap);
+      }
+    }
+
+    /**
+     * Returns the data for each of the specified symbols that's currently cached for the
+     * given strong name. There will be no entry for symbols that are not in the cache.
+     * If none of the symbols are cached, an empty Map is returned.
+     */
+    Map<String, String> getAll(String strongName, Set<String> symbols) {
+      Map<String, String> toReturn = new HashMap<String, String>();
+      if (strongName == null || !symbolMaps.containsKey(strongName) || symbols.isEmpty()) {
+        return toReturn;
+      }
+      HashMap<String, String> existingMap = symbolMaps.get(strongName);
+      synchronized (existingMap) {
+        for (String symbol : symbols) {
+          if (existingMap.containsKey(symbol)) {
+            toReturn.put(symbol, existingMap.get(symbol));
+          }
+        }
+      }
+      return toReturn;
+    }
   }
 
   // From JsniRef class, which is in gwt-dev and so can't be accessed here
   // TODO(unnurg) once there is a place for shared code, move this to there.
-  private static Pattern JsniRefPattern =
+  private static final Pattern JsniRefPattern =
       Pattern.compile("@?([^:]+)::([^(]+)(\\((.*)\\))?");
 
   // The javadoc for StackTraceElement.getLineNumber() says it returns -1 when
   // the line number is unavailable
   private static final int LINE_NUMBER_UNKNOWN = -1;
 
-  Pattern fragmentIdPattern = Pattern.compile(".*(\\d+)\\.js");
+  // Data to store in the symbol cache if no symbol data can be found on disk.
+  private static final String SYMBOL_DATA_UNKNOWN = "";
+
+  final Pattern fragmentIdPattern = Pattern.compile(".*(\\d+)\\.js");
+
+  private final boolean lazyLoad;
 
   protected File symbolMapsDirectory;
 
   // Map of strongName + fragmentId to sourceMap
-  private Map<String, SourceMapping> sourceMaps =
+  private final Map<String, SourceMapping> sourceMaps =
       new HashMap<String, SourceMapping>();
 
-  private Map<String, SymbolMap> symbolMaps =
-      new HashMap<String, SymbolMap>();
+  private final SymbolCache symbolCache = new SymbolCache();
 
   /**
-   * Constructor, which takes a <code>symbolMaps</code> directory as its argument. Symbol maps are
+   * Creates a deobfuscator that loads symbol map files from the given directory. Symbol maps are
    * generated into the location specified by the GWT compiler <code>-deploy</code> command line
    * argument.
    *
-   * @param symbolMapsDirectory the <code>symbolMaps</code> directory with, or without trailing
+   * @param symbolMapsDirectory the <code>symbolMaps</code> directory, with or without trailing
    *                            directory separator character
    */
   public StackTraceDeobfuscator(String symbolMapsDirectory) {
     setSymbolMapsDirectory(symbolMapsDirectory);
+    this.lazyLoad = false;
+  }
+
+  /**
+   * Creates a deobfuscator that loads symbol map files from the given directory. Symbol maps are
+   * generated into the location specified by the GWT compiler <code>-deploy</code> command line
+   * argument.
+   *
+   * @param symbolMapsDirectory the <code>symbolMaps</code> directory, with or without trailing
+   *                            directory separator character
+   * @param lazyLoad if true, only symbols requested to be deobfuscated are cached. This provides
+   *                 a large memory savings at the expense of occasional extra disk reads.
+   */
+  public StackTraceDeobfuscator(String symbolMapsDirectory, boolean lazyLoad) {
+    setSymbolMapsDirectory(symbolMapsDirectory);
+    this.lazyLoad = lazyLoad;
   }
 
   /**
@@ -107,6 +180,13 @@
    */
   public StackTraceElement[] deobfuscateStackTrace(
       StackTraceElement[] st, String strongName) {
+    // Warm the symbol cache for all symbols in this stack trace.
+    Set<String> requiredSymbols = new HashSet<String>();
+    for (StackTraceElement ste : st) {
+      requiredSymbols.add(ste.getMethodName());
+    }
+    loadSymbolMap(strongName, requiredSymbols);
+
     StackTraceElement[] newSt = new StackTraceElement[st.length];
     for (int i = 0; i < st.length; i++) {
       newSt[i] = resymbolize(st[i], strongName);
@@ -128,7 +208,7 @@
   }
 
   /**
-   * Best effort resymbolization of a a single stack trace element.
+   * Best effort resymbolization of a single stack trace element.
    *
    * @param ste        the stack trace element to resymbolize
    * @param strongName the GWT permutation strong name
@@ -143,8 +223,7 @@
     int fragmentId = -1;
 
     String steFilename = ste.getFileName();
-    SymbolMap map = loadSymbolMap(strongName);
-    String symbolData = map == null ? null : map.get(ste.getMethodName());
+    String symbolData = loadOneSymbol(strongName, ste.getMethodName());
 
     boolean sourceMapCapable = false;
 
@@ -163,7 +242,7 @@
     }
 
     // first use symbolMap, then refine via sourceMap if possible
-    if (symbolData != null) {
+    if (!symbolData.isEmpty()) {
       // jsniIdent, className, memberName, sourceUri, sourceLine, fragmentId
       String[] parts = symbolData.split(",");
       if (parts.length == 6) {
@@ -289,36 +368,60 @@
     return new Scanner(stream).useDelimiter("\\A").next();
   }
 
-  private SymbolMap loadSymbolMap(
-      String strongName) {
-    SymbolMap toReturn = symbolMaps.get(strongName);
-    if (toReturn != null) {
+  private String loadOneSymbol(String strongName, String symbol) {
+    Set<String> symbolSet = new HashSet<String>();
+    symbolSet.add(symbol);
+    Map<String, String> symbolMap = loadSymbolMap(strongName, symbolSet);
+    return symbolMap.get(symbol);
+  }
+
+  /**
+   * Returns a symbol map for the given strong name containing symbol data for
+   * all of the given required symbols. First checks the symbol cache, then
+   * reads from disk if any symbol is missing. If a symbol cannot be loaded for
+   * some reason, it will be mapped to empty string.
+   */
+  private Map<String, String> loadSymbolMap(
+      String strongName, Set<String> requiredSymbols) {
+    Map<String, String> toReturn = symbolCache.getAll(strongName, requiredSymbols);
+    if (toReturn.size() == requiredSymbols.size()) {
       return toReturn;
     }
-    toReturn = new SymbolMap();
+
+    Set<String> symbolsLeftToFind = new HashSet<String>(requiredSymbols);
+    toReturn = new HashMap<String, String>();
     String line;
 
     try {
       BufferedReader bin = new BufferedReader(
           new InputStreamReader(getSymbolMapInputStream(strongName)));
       try {
-        while ((line = bin.readLine()) != null) {
+        while ((line = bin.readLine()) != null && (symbolsLeftToFind.size() > 0 || !lazyLoad)) {
           if (line.charAt(0) == '#') {
             continue;
           }
           int idx = line.indexOf(',');
-          toReturn.put(new String(line.substring(0, idx)),
-              line.substring(idx + 1));
+          String symbol = line.substring(0, idx);
+          String symbolData = line.substring(idx + 1);
+          if (requiredSymbols.contains(symbol) || !lazyLoad) {
+            symbolsLeftToFind.remove(symbol);
+            toReturn.put(symbol, symbolData);
+          }
         }
       } finally {
         bin.close();
       }
     } catch (IOException e) {
-      //  use empty symbol map to avoid repeated lookups
-      toReturn = new SymbolMap();
+      // If the symbol map isn't found or there's an I/O error reading the file, the returned
+      // mapping may contain some or all empty data (see below).
+    }
+    for (String symbol : symbolsLeftToFind) {
+      // Store the empty string in the symbolCache to show we actually looked on disk and couldn't
+      // find the symbols. This avoids reading disk repeatedly for symbols that can't be translated.
+      toReturn.put(symbol, SYMBOL_DATA_UNKNOWN);
     }
 
-    symbolMaps.put(strongName, toReturn);
+    symbolCache.putAll(strongName, toReturn);
     return toReturn;
   }
 
diff --git a/user/src/com/google/gwt/resources/css/CssGenerationVisitor.java b/user/src/com/google/gwt/resources/css/CssGenerationVisitor.java
index da35a2d..cc3065a 100644
--- a/user/src/com/google/gwt/resources/css/CssGenerationVisitor.java
+++ b/user/src/com/google/gwt/resources/css/CssGenerationVisitor.java
@@ -185,9 +185,16 @@
 
   @Override
   public boolean visit(CssMediaRule x, Context ctx) {
-    out.print("@MEDIA");
+    out.print("@media");
+    boolean isFirst = true;
     for (String m : x.getMedias()) {
-      out.print(" " + m);
+      if (isFirst) {
+        out.print(" ");
+        isFirst = false;
+      } else {
+        comma();
+      }
+      out.print(m);
     }
     spaceOpt();
     out.print("{");
diff --git a/user/src/com/google/gwt/resources/css/ast/CssNodeCloner.java b/user/src/com/google/gwt/resources/css/ast/CssNodeCloner.java
index bffbd36..1620fe7 100644
--- a/user/src/com/google/gwt/resources/css/ast/CssNodeCloner.java
+++ b/user/src/com/google/gwt/resources/css/ast/CssNodeCloner.java
@@ -180,7 +180,7 @@
   @Override
   public boolean visit(CssMediaRule x, Context ctx) {
     CssMediaRule newRule = new CssMediaRule();
-    newRule.getMedias().addAll(newRule.getMedias());
+    newRule.getMedias().addAll(x.getMedias());
 
     pushNodes(newRule);
     return true;
diff --git a/user/src/com/google/gwt/resources/ext/ResourceGeneratorUtil.java b/user/src/com/google/gwt/resources/ext/ResourceGeneratorUtil.java
index 3d3442a..59007b5 100644
--- a/user/src/com/google/gwt/resources/ext/ResourceGeneratorUtil.java
+++ b/user/src/com/google/gwt/resources/ext/ResourceGeneratorUtil.java
@@ -498,7 +498,7 @@
         if (resourceURL == null) {
           error = true;
           logger.log(TreeLogger.ERROR, "Resource " + resource
-              + " not found. Is the name specified as Class.getResource()"
+              + " not found. Is the name specified as ClassLoader.getResource()"
               + " would expect?");
         }
 
diff --git a/user/src/com/google/gwt/resources/rg/CssObfuscationStyle.java b/user/src/com/google/gwt/resources/rg/CssObfuscationStyle.java
index 6e61e38..d46fe93 100644
--- a/user/src/com/google/gwt/resources/rg/CssObfuscationStyle.java
+++ b/user/src/com/google/gwt/resources/rg/CssObfuscationStyle.java
@@ -23,6 +23,7 @@
  */
 public enum CssObfuscationStyle {
   VERBOSE (true, false, true, true),
+  DEBUG (true, false, true, false),
   STABLE_FULL_CLASSNAME (true, true, true, true),
   STABLE_SHORT_CLASSNAME (true, true, true, false),
   STABLE_NO_CLASSNAME (true, true, false, false),
@@ -31,6 +32,8 @@
   static CssObfuscationStyle getObfuscationStyle(String name) {
     if (name.equalsIgnoreCase("pretty")) {
       return VERBOSE;
+    } else if (name.equalsIgnoreCase("debug")) {
+      return DEBUG;
     } else if (name.equalsIgnoreCase("stable")) {
       return STABLE_FULL_CLASSNAME;
     } else if (name.equalsIgnoreCase("stable-shorttype")) {
diff --git a/user/src/com/google/gwt/resources/rg/ImageBundleBuilder.java b/user/src/com/google/gwt/resources/rg/ImageBundleBuilder.java
index 429acfa..931d2b2 100644
--- a/user/src/com/google/gwt/resources/rg/ImageBundleBuilder.java
+++ b/user/src/com/google/gwt/resources/rg/ImageBundleBuilder.java
@@ -24,6 +24,7 @@
 import org.w3c.dom.Node;
 
 import java.awt.Graphics2D;
+import java.awt.RenderingHints;
 import java.awt.geom.AffineTransform;
 import java.awt.image.BufferedImage;
 import java.io.ByteArrayOutputStream;
@@ -538,6 +539,8 @@
     Graphics2D g2d = bundledImage.createGraphics();
     createGraphicsEvent.end();
 
+    setBetterRenderingQuality(g2d);
+
     g2d.drawImage(rect.getImage(), rect.transform(), null);
     g2d.dispose();
 
@@ -593,6 +596,13 @@
     return b / gcd(a, b) * a;
   }
 
+  private static void setBetterRenderingQuality(Graphics2D g2d) {
+    g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
+        RenderingHints.VALUE_INTERPOLATION_BICUBIC);
+    g2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION,
+        RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
+  }
+
   private final Map<String, ImageRect> imageNameToImageRectMap = new HashMap<String, ImageRect>();
 
   public ImageBundleBuilder() {
@@ -818,6 +828,9 @@
     SpeedTracerLogger.Event graphicsEvent = SpeedTracerLogger.start(CompilerEventType.GRAPHICS_INIT,
         "java.awt.headless", System.getProperty("java.awt.headless"));
     Graphics2D g2d = bundledImage.createGraphics();
+
+    setBetterRenderingQuality(g2d);
+
     graphicsEvent.end();
 
     for (ImageRect imageRect : imageRects) {
diff --git a/user/src/com/google/gwt/uibinder/rebind/FieldManager.java b/user/src/com/google/gwt/uibinder/rebind/FieldManager.java
index 706c6ec..10456e5 100644
--- a/user/src/com/google/gwt/uibinder/rebind/FieldManager.java
+++ b/user/src/com/google/gwt/uibinder/rebind/FieldManager.java
@@ -335,7 +335,8 @@
   public FieldWriter require(String fieldName) {
     FieldWriter fieldWriter = lookup(fieldName);
     if (fieldWriter == null) {
-      throw new RuntimeException("The required field %s doesn't exist.");
+      throw new RuntimeException(String.format("The required field \"%s\" doesn't exist.",
+          fieldName));
     }
     return fieldWriter;
   }
diff --git a/user/src/com/google/gwt/user/cellview/client/AbstractCellTable.java b/user/src/com/google/gwt/user/cellview/client/AbstractCellTable.java
index bc3d7cb..91e2c6d 100644
--- a/user/src/com/google/gwt/user/cellview/client/AbstractCellTable.java
+++ b/user/src/com/google/gwt/user/cellview/client/AbstractCellTable.java
@@ -1793,6 +1793,16 @@
     {
       Element maybeTableCell = null;
       Element cur = target;
+
+      /*
+       * If an event happens in the TD element but outside the cell's div, we want 
+       * to handle it as if it happened within the table cell.
+       */
+      if (TableCellElement.TAG_TD.equalsIgnoreCase(cur.getTagName()) && 
+          tableBuilder.isColumn(cur.getFirstChildElement())) {
+        cur = cur.getFirstChildElement();
+      }
+      
       while (cur != null && targetTableSection == null) {
         /*
          * Found the table section. Return the most recent cell element that we
diff --git a/user/src/com/google/gwt/user/cellview/client/AbstractCellTableBuilder.java b/user/src/com/google/gwt/user/cellview/client/AbstractCellTableBuilder.java
index 0e4fde0..e1da850 100644
--- a/user/src/com/google/gwt/user/cellview/client/AbstractCellTableBuilder.java
+++ b/user/src/com/google/gwt/user/cellview/client/AbstractCellTableBuilder.java
@@ -254,10 +254,20 @@
     TableRowBuilder row = tbody.startTR();
     row.attribute(ROW_ATTRIBUTE, rowIndex);
     row.attribute(SUBROW_ATTRIBUTE, subrowIndex);
+    addRowAttributes(row);
     subrowIndex++;
     return row;
   }
-    
+
+  /**
+   * Hook for subclasses to add their own attributes to each row in the table.
+   * The default does nothing.
+   *
+   * @param row the row element
+   */
+  protected void addRowAttributes(TableRowBuilder row) {
+  }
+
   /**
    * Build zero or more table rows for the specified row value.
    * 
diff --git a/user/src/com/google/gwt/user/cellview/client/CellWidget.java b/user/src/com/google/gwt/user/cellview/client/CellWidget.java
index a3bb819..f644cde 100644
--- a/user/src/com/google/gwt/user/cellview/client/CellWidget.java
+++ b/user/src/com/google/gwt/user/cellview/client/CellWidget.java
@@ -35,6 +35,8 @@
 import com.google.gwt.view.client.HasKeyProvider;
 import com.google.gwt.view.client.ProvidesKey;
 
+import java.util.Set;
+
 /**
  * A {@link Widget} that wraps a {@link Cell}.
  * 
@@ -193,7 +195,8 @@
 
     // Forward the event to the cell.
     String eventType = event.getType();
-    if (cell.getConsumedEvents().contains(eventType)) {
+    Set<String> consumedEvents = cell.getConsumedEvents();
+    if (consumedEvents != null && consumedEvents.contains(eventType)) {
       cell.onBrowserEvent(createContext(), getElement(), value, event, valueUpdater);
     }
   }
diff --git a/user/src/com/google/gwt/user/cellview/client/SimplePager.java b/user/src/com/google/gwt/user/cellview/client/SimplePager.java
index 3645a00..14499c2 100644
--- a/user/src/com/google/gwt/user/cellview/client/SimplePager.java
+++ b/user/src/com/google/gwt/user/cellview/client/SimplePager.java
@@ -260,7 +260,6 @@
    * @param location the location of the text relative to the buttons
    */
   @UiConstructor
-  // Hack for Google I/O demo
   public SimplePager(TextLocation location) {
     this(location, getDefaultResources(), true, DEFAULT_FAST_FORWARD_ROWS,
         false);
diff --git a/user/src/com/google/gwt/user/client/Window.java b/user/src/com/google/gwt/user/client/Window.java
index aec4a14..68eec21 100644
--- a/user/src/com/google/gwt/user/client/Window.java
+++ b/user/src/com/google/gwt/user/client/Window.java
@@ -118,7 +118,7 @@
    * 
    */
   public static class Location {
-    private static Map<String, String> paramMap;
+    private static String cachedQueryString = "";
     private static Map<String, List<String>> listParamMap;
 
     /**
@@ -206,24 +206,28 @@
      * returned.
      * 
      * @param name the name of the URL's parameter
-     * @return the value of the URL's parameter
+     * @return the value of the URL's parameter, or null if missing
      */
     public static String getParameter(String name) {
-      ensureParameterMap();
-      return paramMap.get(name);
+      ensureListParameterMap();
+      List<String> paramsForName = listParamMap.get(name);
+      if (paramsForName == null) {
+        return null;
+      } else {
+        return paramsForName.get(paramsForName.size() - 1);
+      }
     }
 
     /**
-     * Returns a Map of the URL query parameters for the host page; since
-     * changing the map would not change the window's location, the map returned
-     * is immutable.
+     * Returns an immutable Map of the URL query parameters for the host page
+     * at the time this method was called.
+     * Any changes to the window's location will be reflected in the result
+     * of subsequent calls.
      * 
      * @return a map from URL query parameter names to a list of values
      */
     public static Map<String, List<String>> getParameterMap() {
-      if (listParamMap == null) {
-        listParamMap = buildListParamMap(getQueryString());
-      }
+      ensureListParameterMap();
       return listParamMap;
     }
 
@@ -316,21 +320,12 @@
       return out;
     }
 
-    private static void ensureParameterMap() {
-      if (paramMap == null) {
-        paramMap = new HashMap<String, String>();
-        String queryString = getQueryString();
-        if (queryString != null && queryString.length() > 1) {
-          String qs = queryString.substring(1);
-          for (String kvPair : qs.split("&")) {
-            String[] kv = kvPair.split("=", 2);
-            if (kv.length > 1) {
-              paramMap.put(kv[0], URL.decodeQueryString(kv[1]));
-            } else {
-              paramMap.put(kv[0], "");
-            }
-          }
-        }
+    private static void ensureListParameterMap() {
+      final String currentQueryString = getQueryString();
+      if (listParamMap == null ||
+          !cachedQueryString.equals(currentQueryString)) {
+        listParamMap = buildListParamMap(currentQueryString);
+        cachedQueryString = currentQueryString;
       }
     }
 
@@ -771,8 +766,8 @@
    * defined. The top left corner will not be moved (it stays in its original
    * coordinates).
    * <p>
-   * NOTE: In Chrome, this method only works with windows created by
-   * Window.open().
+   * NOTE: In most modern browsers, this method only works with windows created
+   * by Window.open() with a supplied width and height.
    * </p>
    *
    * @param width A positive or a negative number that specifies how many pixels
@@ -787,8 +782,8 @@
   /**
    * Resizes the window to the specified width and height.
    * <p>
-   * NOTE: In Chrome, this method only works with windows created by
-   * Window.open().
+   * NOTE: In most modern browsers, this method only works with windows created
+   * by Window.open() with a supplied width and height.
    * </p>
    *
    * @param width The width of the window, in pixels
diff --git a/user/src/com/google/gwt/user/client/rpc/core/java/util/Arrays.java b/user/src/com/google/gwt/user/client/rpc/core/java/util/Arrays.java
index 2c41d4a..3ffb204 100644
--- a/user/src/com/google/gwt/user/client/rpc/core/java/util/Arrays.java
+++ b/user/src/com/google/gwt/user/client/rpc/core/java/util/Arrays.java
@@ -15,7 +15,7 @@
  */
 package com.google.gwt.user.client.rpc.core.java.util;
 
-import com.google.gwt.core.client.GWT;
+import com.google.gwt.core.shared.GWT;
 import com.google.gwt.user.client.rpc.CustomFieldSerializer;
 import com.google.gwt.user.client.rpc.SerializationException;
 import com.google.gwt.user.client.rpc.SerializationStreamReader;
diff --git a/user/src/com/google/gwt/user/client/rpc/impl/SerializerBase.java b/user/src/com/google/gwt/user/client/rpc/impl/SerializerBase.java
index 5174790..20e67b6 100644
--- a/user/src/com/google/gwt/user/client/rpc/impl/SerializerBase.java
+++ b/user/src/com/google/gwt/user/client/rpc/impl/SerializerBase.java
@@ -15,7 +15,7 @@
  */
 package com.google.gwt.user.client.rpc.impl;
 
-import com.google.gwt.core.client.GWT;
+import com.google.gwt.core.shared.GWT;
 import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.core.client.JsArray;
 import com.google.gwt.core.client.JsArrayString;
diff --git a/user/src/com/google/gwt/user/client/ui/CustomScrollPanel.java b/user/src/com/google/gwt/user/client/ui/CustomScrollPanel.java
index 4f5a9b3..8b62d94 100644
--- a/user/src/com/google/gwt/user/client/ui/CustomScrollPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/CustomScrollPanel.java
@@ -557,7 +557,7 @@
    * corner.
    * 
    * <p>
-   * In RTL, the vertical scrollbar appears on the right.
+   * In RTL, the vertical scrollbar appears on the left.
    */
   private void maybeUpdateScrollbars() {
     if (!isAttached()) {
diff --git a/user/src/com/google/gwt/user/client/ui/DeckPanel.java b/user/src/com/google/gwt/user/client/ui/DeckPanel.java
index 393a1ed..919f5a8 100644
--- a/user/src/com/google/gwt/user/client/ui/DeckPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/DeckPanel.java
@@ -266,9 +266,9 @@
   }
 
   /**
-   * Gets the index of the currently-visible widget.
+   * Gets the index of the currently-visible widget, if any.
    * 
-   * @return the visible widget's index
+   * @return the visible widget's index, or -1 if there is no such widget
    */
   public int getVisibleWidget() {
     return getWidgetIndex(visibleWidget);
diff --git a/user/src/com/google/gwt/user/client/ui/NamedFrame.java b/user/src/com/google/gwt/user/client/ui/NamedFrame.java
index 9fe635b..fb65033 100644
--- a/user/src/com/google/gwt/user/client/ui/NamedFrame.java
+++ b/user/src/com/google/gwt/user/client/ui/NamedFrame.java
@@ -38,8 +38,10 @@
   interface IFrameTemplate extends SafeHtmlTemplates {
     static final IFrameTemplate INSTANCE = GWT.create(IFrameTemplate.class);
 
-    @Template("<iframe src='{0}' name='{1}'>")
-    SafeHtml get(String src, String name);
+    // Setting a src prevents mixed-content warnings.
+    // http://weblogs.asp.net/bleroy/archive/2005/08/09/how-to-put-a-div-over-a-select-in-ie.aspx
+    @Template("<iframe src=\"javascript:''\" name='{0}'>")
+    SafeHtml get(String name);
   }
 
   // Used inside JSNI, so please don't delete this field just because
@@ -53,9 +55,8 @@
   }
 
   /**
-   * Creates an HTML IFRAME element with a src and name.
+   * Creates an HTML IFRAME element with a name.
    * 
-   * @param src the src of the frame
    * @param name the name of the frame, which must contain at least one
    *          non-whitespace character and must not contain reserved HTML markup
    *          characters such as '<code>&lt;</code>', '<code>&gt;</code>',
@@ -63,7 +64,7 @@
    * @return the newly-created element
    * @throws IllegalArgumentException if the supplied name is not allowed 
    */
-  private static IFrameElement createIFrame(String src, String name) {
+  private static IFrameElement createIFrame(String name) {
     if (name == null || !isValidName(name.trim())) {
       throw new IllegalArgumentException(
           "expecting one or more non-whitespace chars with no '<', '>', or '&'");
@@ -72,7 +73,7 @@
     // Use innerHTML to implicitly create the <iframe>. This is necessary
     // because most browsers will not respect a dynamically-set iframe name.
     Element div = DOM.createDiv();
-    div.setInnerSafeHtml(IFrameTemplate.INSTANCE.get(src, name));
+    div.setInnerSafeHtml(IFrameTemplate.INSTANCE.get(name));
     return div.getFirstChild().cast();
   }
 
@@ -101,9 +102,7 @@
    */
   @UiConstructor
   public NamedFrame(String name) {
-    // Setting a src prevents mixed-content warnings.
-    // http://weblogs.asp.net/bleroy/archive/2005/08/09/how-to-put-a-div-over-a-select-in-ie.aspx
-    super(createIFrame("javascript:''", name));
+    super(createIFrame(name));
     setStyleName(DEFAULT_STYLENAME);
   }
 
diff --git a/user/src/com/google/gwt/user/client/ui/PopupPanel.java b/user/src/com/google/gwt/user/client/ui/PopupPanel.java
index 2434496..ddcad33 100644
--- a/user/src/com/google/gwt/user/client/ui/PopupPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/PopupPanel.java
@@ -904,7 +904,7 @@
    * popup. The callback allows positioning to be performed based on the
    * offsetWidth and offsetHeight of the popup, which are normally not available
    * until the popup is showing. By positioning the popup before it is shown,
-   * the the popup will not jump from its original position to the new position.
+   * the popup will not jump from its original position to the new position.
    *
    * @param callback the callback to set the position of the popup
    * @see PositionCallback#setPosition(int offsetWidth, int offsetHeight)
diff --git a/user/src/com/google/gwt/user/client/ui/PrefixTree.java b/user/src/com/google/gwt/user/client/ui/PrefixTree.java
index 302b696..55d97f1 100644
--- a/user/src/com/google/gwt/user/client/ui/PrefixTree.java
+++ b/user/src/com/google/gwt/user/client/ui/PrefixTree.java
@@ -365,7 +365,7 @@
 
   /**
    * Retrieve suggestions from the PrefixTree. The number of items returned from
-   * getSuggesstions may slightly exceed <code>limit</code> so that all
+   * getSuggestions may slightly exceed <code>limit</code> so that all
    * suffixes and partial stems will be returned. This prevents the search space
    * from changing size if the PrefixTree is used in an interactive manner.
    * <br/> The returned List is guaranteed to be safe; changing its contents
diff --git a/user/src/com/google/gwt/user/client/ui/ResizeComposite.java b/user/src/com/google/gwt/user/client/ui/ResizeComposite.java
index 7d0bab3..1054249 100644
--- a/user/src/com/google/gwt/user/client/ui/ResizeComposite.java
+++ b/user/src/com/google/gwt/user/client/ui/ResizeComposite.java
@@ -26,7 +26,7 @@
   @Override
   protected void initWidget(Widget widget) {
     assert widget instanceof RequiresResize :
-      "LayoutComposite requires that its wrapped widget implement RequiresResize";
+      "ResizeComposite requires that its wrapped widget implement RequiresResize";
     super.initWidget(widget);
   }
 
diff --git a/user/src/com/google/gwt/user/client/ui/ResizeLayoutPanel.java b/user/src/com/google/gwt/user/client/ui/ResizeLayoutPanel.java
index 2f4dac6..49f1278 100644
--- a/user/src/com/google/gwt/user/client/ui/ResizeLayoutPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/ResizeLayoutPanel.java
@@ -140,6 +140,7 @@
       expandable.getStyle().setHeight(100.0, Unit.PCT);
       expandable.getStyle().setWidth(100.0, Unit.PCT);
       expandable.getStyle().setOverflow(Overflow.SCROLL);
+      expandable.getStyle().setZIndex(-1);
       elem.appendChild(expandable);
       expandableInner = Document.get().createDivElement().cast();
       expandable.appendChild(expandableInner);
@@ -160,6 +161,7 @@
       collapsible.getStyle().setHeight(100.0, Unit.PCT);
       collapsible.getStyle().setWidth(100.0, Unit.PCT);
       collapsible.getStyle().setOverflow(Overflow.SCROLL);
+      collapsible.getStyle().setZIndex(-1);
       elem.appendChild(collapsible);
       collapsibleInner = Document.get().createDivElement().cast();
       collapsibleInner.getStyle().setWidth(200, Unit.PCT);
diff --git a/user/src/com/google/gwt/user/client/ui/SplitLayoutPanel.java b/user/src/com/google/gwt/user/client/ui/SplitLayoutPanel.java
index 6cb8462..a0acd62 100644
--- a/user/src/com/google/gwt/user/client/ui/SplitLayoutPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/SplitLayoutPanel.java
@@ -141,7 +141,7 @@
           mouseDown = false;
 
           glassElem.removeFromParent();
-          
+
           // Handle double-clicks.
           // Fake them since the double-click event aren't fired.
           if (this.toggleDisplayAllowed) {
@@ -377,6 +377,16 @@
     return false;
   }
 
+  @Override
+  public void setWidgetHidden(Widget widget, boolean hidden) {
+    super.setWidgetHidden(widget, hidden);
+    Splitter splitter = getAssociatedSplitter(widget);
+    if (splitter != null) {
+      // The splitter is null for the center element.
+      super.setWidgetHidden(splitter, hidden);
+    }
+  }
+
   /**
    * Sets the minimum allowable size for the given widget.
    *
diff --git a/user/src/com/google/gwt/user/client/ui/Tree.java b/user/src/com/google/gwt/user/client/ui/Tree.java
index a83796c..5d062a5 100644
--- a/user/src/com/google/gwt/user/client/ui/Tree.java
+++ b/user/src/com/google/gwt/user/client/ui/Tree.java
@@ -243,6 +243,8 @@
 
   private TreeItem root;
 
+  private boolean scrollOnSelectEnabled = true;
+  
   private boolean useLeafImages;
 
   /**
@@ -635,6 +637,13 @@
     return isAnimationEnabled;
   }
 
+  /**
+   * Determines whether selecting a tree item will scroll it into view.
+   */
+  public boolean isScrollOnSelectEnabled() {
+    return scrollOnSelectEnabled;
+  }
+  
   @Override
   public Iterator<Widget> iterator() {
     final Widget[] widgets = new Widget[childWidgets.size()];
@@ -853,6 +862,14 @@
   }
 
   /**
+   * Enable or disable scrolling a tree item into view when it is selected. Scrolling into view is
+   * enabled by default.
+   */
+  public void setScrollOnSelectEnabled(boolean enable) {
+    scrollOnSelectEnabled = enable;
+  }
+  
+  /**
    * Selects a specified item.
    *
    * @param item the item to be selected, or <code>null</code> to deselect all
@@ -1221,35 +1238,39 @@
     Focusable focusableWidget = curSelection.getFocusable();
     if (focusableWidget != null) {
       focusableWidget.setFocus(true);
-      DOM.scrollIntoView(((Widget) focusableWidget).getElement());
-    } else {
-      // Get the location and size of the given item's content element relative
-      // to the tree.
-      Element selectedElem = curSelection.getContentElem();
-      int containerLeft = getAbsoluteLeft();
-      int containerTop = getAbsoluteTop();
-
-      int left = DOM.getAbsoluteLeft(selectedElem) - containerLeft;
-      int top = DOM.getAbsoluteTop(selectedElem) - containerTop;
-      int width = DOM.getElementPropertyInt(selectedElem, "offsetWidth");
-      int height = DOM.getElementPropertyInt(selectedElem, "offsetHeight");
-
-      // If the item is not visible, quite here
-      if (width == 0 || height == 0) {
-        DOM.setIntStyleAttribute(focusable, "left", 0);
-        DOM.setIntStyleAttribute(focusable, "top", 0);
-        return;
+      if (scrollOnSelectEnabled) {
+        DOM.scrollIntoView(((Widget) focusableWidget).getElement());
       }
+    } else {
+      if (scrollOnSelectEnabled) {
+        // Get the location and size of the given item's content element relative
+        // to the tree.
+        Element selectedElem = curSelection.getContentElem();
+        int containerLeft = getAbsoluteLeft();
+        int containerTop = getAbsoluteTop();
+  
+        int left = DOM.getAbsoluteLeft(selectedElem) - containerLeft;
+        int top = DOM.getAbsoluteTop(selectedElem) - containerTop;
+        int width = DOM.getElementPropertyInt(selectedElem, "offsetWidth");
+        int height = DOM.getElementPropertyInt(selectedElem, "offsetHeight");
 
-      // Set the focusable element's position and size to exactly underlap the
-      // item's content element.
-      DOM.setStyleAttribute(focusable, "left", left + "px");
-      DOM.setStyleAttribute(focusable, "top", top + "px");
-      DOM.setStyleAttribute(focusable, "width", width + "px");
-      DOM.setStyleAttribute(focusable, "height", height + "px");
-
-      // Scroll it into view.
-      DOM.scrollIntoView(focusable);
+        // If the item is not visible, quite here
+        if (width == 0 || height == 0) {
+          DOM.setIntStyleAttribute(focusable, "left", 0);
+          DOM.setIntStyleAttribute(focusable, "top", 0);
+          return;
+        }
+  
+        // Set the focusable element's position and size to exactly underlap the
+        // item's content element.
+        DOM.setStyleAttribute(focusable, "left", left + "px");
+        DOM.setStyleAttribute(focusable, "top", top + "px");
+        DOM.setStyleAttribute(focusable, "width", width + "px");
+        DOM.setStyleAttribute(focusable, "height", height + "px");
+  
+        // Scroll it into view.
+        DOM.scrollIntoView(focusable);
+      }
 
       // Update ARIA attributes to reflect the information from the
       // newly-selected item.
diff --git a/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplMozilla.java b/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplMozilla.java
index 3593855..fe3bbcb 100644
--- a/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplMozilla.java
+++ b/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplMozilla.java
@@ -27,6 +27,11 @@
   boolean isFirstFocus;
 
   @Override
+  public String getBackColor() {
+    return queryCommandValue("HiliteColor");
+  }
+
+  @Override
   public native void initElement() /*-{
     // Mozilla doesn't allow designMode to be set reliably until the iframe is
     // fully loaded.
diff --git a/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplStandard.java b/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplStandard.java
index 67a6737..28aea46 100644
--- a/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplStandard.java
+++ b/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplStandard.java
@@ -95,11 +95,15 @@
     var _this = this;
     _this.@com.google.gwt.user.client.ui.impl.RichTextAreaImplStandard::onElementInitializing()();
     setTimeout($entry(function() {
-      // Turn on design mode.
-      _this.@com.google.gwt.user.client.ui.impl.RichTextAreaImpl::elem.contentWindow.document.designMode = 'On';
+      // We need to check to see if the content window still is there. It might not be if the RTA
+      // first was attached to the DOM and then quickly was removed before the timeout fired.
+      if (_this.@com.google.gwt.user.client.ui.impl.RichTextAreaImpl::elem.contentWindow != null) {
+        // Turn on design mode.
+        _this.@com.google.gwt.user.client.ui.impl.RichTextAreaImpl::elem.contentWindow.document.designMode = 'On';
 
-      // Send notification that the iframe has reached design mode.
-      _this.@com.google.gwt.user.client.ui.impl.RichTextAreaImplStandard::onElementInitialized()();
+        // Send notification that the iframe has reached design mode.
+        _this.@com.google.gwt.user.client.ui.impl.RichTextAreaImplStandard::onElementInitialized()();
+      }
     }), 1);
   }-*/;
 
diff --git a/user/src/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilder.java b/user/src/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilder.java
index f49e003..29bfa07 100644
--- a/user/src/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilder.java
+++ b/user/src/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilder.java
@@ -114,18 +114,7 @@
  */
 public class SerializableTypeOracleBuilder {
 
-  class TypeInfoComputed {
-    /**
-     * <code>true</code> if the type is assignable to {@link IsSerializable} or
-     * {@link java.io.Serializable Serializable}.
-     */
-    private final boolean autoSerializable;
-
-    /**
-     * <code>true</code> if the this type directly implements one of the marker
-     * interfaces.
-     */
-    private final boolean directlyImplementsMarker;
+  static class TypeInfoComputed {
 
     /**
      * <code>true</code> if the type is automatically or manually serializable
@@ -145,10 +134,10 @@
     private boolean instantiableSubtypes;
 
     /**
-     * All instantiable types found when this type was quaried, including the
-     * type itself.
+     * All instantiable types found when this type was queried, including the
+     * type itself. (Null until calculated.)
      */
-    private Set<JClassType> instantiableTypes = new HashSet<JClassType>();
+    private Set<JClassType> instantiableTypes;
 
     /**
      * Custom field serializer or <code>null</code> if there isn't one.
@@ -176,38 +165,19 @@
      */
     private final JType type;
 
-    public TypeInfoComputed(JType type, TypePath path) {
+    private TypeInfoComputed(JType type, TypePath path, TypeOracle typeOracle) {
       this.type = type;
       this.path = path;
       if (type instanceof JClassType) {
         JClassType typeClass = (JClassType) type;
-        autoSerializable = SerializableTypeOracleBuilder.isAutoSerializable(typeClass);
         manualSerializer = findCustomFieldSerializer(typeOracle, typeClass);
-        directlyImplementsMarker = directlyImplementsMarkerInterface(typeClass);
         maybeEnhanced = hasJdoAnnotation(typeClass) || hasJpaAnnotation(typeClass);
       } else {
-        autoSerializable = false;
         manualSerializer = null;
-        directlyImplementsMarker = false;
         maybeEnhanced = false;
       }
     }
 
-    /**
-     * Returns the internal set of instantiable types for this TIC.
-     * Modifications to this set are immediately recorded into the TIC as well.
-     * TODO(spoon) maybe pass the TIC around instead of the set? then there
-     * could be addInstantiableType(JClassType) instead of speccing this to be
-     * mutable.
-     */
-    public Set<JClassType> getInstantiableTypes() {
-      return instantiableTypes;
-    }
-
-    public JClassType getManualSerializer() {
-      return manualSerializer;
-    }
-
     public TypePath getPath() {
       return path;
     }
@@ -217,19 +187,7 @@
     }
 
     public boolean hasInstantiableSubtypes() {
-      return isInstantiable() || instantiableSubtypes || isPendingInstantiable();
-    }
-
-    public boolean isAutoSerializable() {
-      return autoSerializable;
-    }
-
-    public boolean isDeclaredSerializable() {
-      return autoSerializable || isManuallySerializable();
-    }
-
-    public boolean isDirectlySerializable() {
-      return directlyImplementsMarker || isManuallySerializable();
+      return instantiable || instantiableSubtypes || state == TypeState.CHECK_IN_PROGRESS;
     }
 
     public boolean isDone() {
@@ -850,29 +808,40 @@
       if (!entrySucceeded) {
         problems.report(logger, TreeLogger.ERROR, TreeLogger.INFO);
       } else {
-        if (problems.hasFatalProblems()) {
-          entrySucceeded = false;
-          problems.reportFatalProblems(logger, TreeLogger.ERROR);
-        }
-        // if entrySucceeded, there may still be "warning" problems, but too
-        // often they're expected (e.g. non-instantiable subtypes of List), so
-        // we log them at DEBUG.
-        // TODO(fabbott): we could blacklist or graylist those types here, so
-        // instantiation during code generation would flag them for us.
-        problems.report(logger, TreeLogger.DEBUG, TreeLogger.DEBUG);
+        maybeReport(logger, problems);
       }
-
-      allSucceeded &= entrySucceeded;
+      allSucceeded &= entrySucceeded & !problems.hasFatalProblems();
     }
 
     if (!allSucceeded) {
       throw new UnableToCompleteException();
     }
+    assertNothingPending();
 
-    for (TypeInfoComputed tic : typeToTypeInfoComputed.values()) {
-      assert (!tic.isPendingInstantiable());
+    // Add covariant arrays in a separate pass. We want to ensure that nothing is pending
+    // so that the leaf type's instantiableTypes variable is ready (if it's computed at all)
+    // and all of the leaf's subtypes are ready.
+    // (Copy values to avoid concurrent modification.)
+    List<TypeInfoComputed> ticsToCheck = new ArrayList<TypeInfoComputed>();
+    ticsToCheck.addAll(typeToTypeInfoComputed.values());
+    for (TypeInfoComputed tic : ticsToCheck) {
+      JArrayType type = tic.getType().isArray();
+      if (type != null && tic.instantiable) {
+        ProblemReport problems = new ProblemReport();
+        problems.setContextType(type);
+
+        markArrayTypes(logger, type, tic.getPath(), problems);
+
+        maybeReport(logger, problems);
+        allSucceeded &= !problems.hasFatalProblems();
+      }
     }
 
+    if (!allSucceeded) {
+      throw new UnableToCompleteException();
+    }
+    assertNothingPending();
+
     pruneUnreachableTypes();
 
     logReachableTypes(logger);
@@ -943,7 +912,7 @@
       ProblemReport problems) {
     assert (type != null);
     if (type.isPrimitive() != null) {
-      TypeInfoComputed tic = getTypeInfoComputed(type, path, true);
+      TypeInfoComputed tic = ensureTypeInfoComputed(type, path);
       tic.setInstantiableSubtypes(true);
       tic.setInstantiable(false);
       return tic;
@@ -953,7 +922,7 @@
 
     JClassType classType = (JClassType) type;
 
-    TypeInfoComputed tic = getTypeInfoComputed(classType, path, false);
+    TypeInfoComputed tic = typeToTypeInfoComputed.get(classType);
     if (tic != null && tic.isDone()) {
       // we have an answer already; use it.
       return tic;
@@ -974,7 +943,7 @@
        * caller's responsibility to deal with it. We assume that it is
        * indirectly instantiable here.
        */
-      tic = getTypeInfoComputed(classType, path, true);
+      tic = ensureTypeInfoComputed(classType, path);
       tic.setInstantiableSubtypes(true);
       tic.setInstantiable(false);
       return tic;
@@ -988,7 +957,7 @@
             computeTypeInstantiability(localLogger, bound, path, problems)
                 .hasInstantiableSubtypes();
       }
-      tic = getTypeInfoComputed(classType, path, true);
+      tic = ensureTypeInfoComputed(classType, path);
       tic.setInstantiableSubtypes(success);
       tic.setInstantiable(false);
       return tic;
@@ -997,7 +966,7 @@
     JArrayType isArray = classType.isArray();
     if (isArray != null) {
       TypeInfoComputed arrayTic = checkArrayInstantiable(localLogger, isArray, path, problems);
-      assert getTypeInfoComputed(classType, path, false) != null;
+      assert typeToTypeInfoComputed.get(classType) != null;
       return arrayTic;
     }
 
@@ -1009,7 +978,7 @@
        */
       problems.add(classType, "In order to produce smaller client-side code, 'Object' is not "
           + "allowed; please use a more specific type", Priority.DEFAULT);
-      tic = getTypeInfoComputed(classType, path, true);
+      tic = ensureTypeInfoComputed(classType, path);
       tic.setInstantiable(false);
       return tic;
     }
@@ -1028,13 +997,16 @@
 
     // TreeLogger subtypesLogger = localLogger.branch(TreeLogger.DEBUG,
     // "Analyzing subclasses:", null);
-    tic = getTypeInfoComputed(classType, path, true);
+    tic = ensureTypeInfoComputed(classType, path);
+    Set<JClassType> instantiableTypes = new HashSet<JClassType>();
     boolean anySubtypes =
-        checkSubtypes(localLogger, originalType, tic.getInstantiableTypes(), path, problems);
+        checkSubtypes(localLogger, originalType, instantiableTypes, path, problems);
     if (!tic.isDone()) {
       tic.setInstantiableSubtypes(anySubtypes);
       tic.setInstantiable(false);
     }
+    // Don't publish this until complete to ensure nobody depends on partial results.
+    tic.instantiableTypes = instantiableTypes;
     return tic;
   }
 
@@ -1052,10 +1024,16 @@
     return shouldConsiderFieldsForSerialization(type, typeFilter, problems);
   }
 
+  private void assertNothingPending() {
+    if (getClass().desiredAssertionStatus()) {
+      for (TypeInfoComputed tic : typeToTypeInfoComputed.values()) {
+        assert (!tic.isPendingInstantiable());
+      }
+    }
+  }
+
   /**
    * Consider any subtype of java.lang.Object which qualifies for serialization.
-   * 
-   * @param logger
    */
   private void checkAllSubtypesOfObject(TreeLogger logger, TypePath parent, ProblemReport problems) {
     if (alreadyCheckedObject) {
@@ -1091,12 +1069,16 @@
       return checkArrayInstantiable(logger, arrayType, path, problems);
     }
 
-    JClassType leafClass = leafType.isClassOrInterface();
+    TypeInfoComputed tic = ensureTypeInfoComputed(array, path);
+    if (tic.isDone() || tic.isPendingInstantiable()) {
+      return tic;
+    }
+    tic.setPendingInstantiable();
+
     JTypeParameter isLeafTypeParameter = leafType.isTypeParameter();
     if (isLeafTypeParameter != null && !typeParametersInRootTypes.contains(isLeafTypeParameter)) {
       // Don't deal with non root type parameters, but make a TIC entry to
       // save time if it recurs. We assume they're indirectly instantiable.
-      TypeInfoComputed tic = getTypeInfoComputed(array, path, true);
       tic.setInstantiableSubtypes(true);
       tic.setInstantiable(false);
       return tic;
@@ -1105,18 +1087,12 @@
     if (!isAllowedByFilter(array, problems)) {
       // Don't deal with filtered out types either, but make a TIC entry to
       // save time if it recurs. We assume they're not instantiable.
-      TypeInfoComputed tic = getTypeInfoComputed(array, path, true);
       tic.setInstantiable(false);
       return tic;
     }
 
-    TypeInfoComputed tic = getTypeInfoComputed(array, path, true);
-    if (tic.isDone()) {
-      return tic;
-    } else if (tic.isPendingInstantiable()) {
-      return tic;
-    }
-    tic.setPendingInstantiable();
+    // An array is instantiable provided that any leaf subtype is instantiable.
+    // (Ignores the possibility of empty arrays of non-instantiable types.)
 
     TreeLogger branch = logger.branch(TreeLogger.DEBUG, "Analyzing component type:", null);
 
@@ -1124,32 +1100,6 @@
         computeTypeInstantiability(branch, leafType, TypePaths
             .createArrayComponentPath(array, path), problems);
     boolean succeeded = leafTic.hasInstantiableSubtypes();
-    if (succeeded) {
-      if (leafClass == null) {
-        assert leafType.isPrimitive() != null;
-        markArrayTypesInstantiable(leafType, array.getRank(), path);
-      } else {
-        TreeLogger covariantArrayLogger = logger.branch(TreeLogger.DEBUG, "Covariant array types");
-
-        /*
-         * Compute covariant arrays for arrays of reference types.
-         */
-        for (JClassType instantiableType : TypeHierarchyUtils.getAllTypesBetweenRootTypeAndLeaves(
-            leafClass, leafTic.getInstantiableTypes())) {
-          if (!isAccessibleToSerializer(instantiableType)) {
-            // Skip types that are not accessible from a serializer
-            continue;
-          }
-
-          if (covariantArrayLogger.isLoggable(TreeLogger.DEBUG)) {
-            covariantArrayLogger.branch(TreeLogger.DEBUG, getArrayType(typeOracle, array.getRank(),
-                instantiableType).getParameterizedQualifiedSourceName());
-          }
-
-          markArrayTypesInstantiable(instantiableType, array.getRank(), path);
-        }
-      }
-    }
 
     tic.setInstantiable(succeeded);
     return tic;
@@ -1266,7 +1216,7 @@
       }
     }
 
-    TypeInfoComputed tic = getTypeInfoComputed(classOrInterface, parent, true);
+    TypeInfoComputed tic = ensureTypeInfoComputed(classOrInterface, parent);
     return checkDeclaredFields(logger, tic, parent, problems);
   }
 
@@ -1276,7 +1226,7 @@
    */
   private boolean checkSubtypes(TreeLogger logger, JClassType originalType,
       Set<JClassType> instSubtypes, TypePath path, ProblemReport problems) {
-    JClassType baseType = getBaseType(originalType);
+    JRealClassType baseType = getBaseType(originalType);
     TreeLogger computationLogger =
         logger.branch(TreeLogger.DEBUG, "Finding possibly instantiable subtypes");
     List<JClassType> candidates =
@@ -1300,7 +1250,7 @@
       }
 
       TypePath subtypePath = TypePaths.createSubtypePath(path, candidate, originalType);
-      TypeInfoComputed tic = getTypeInfoComputed(candidate, subtypePath, true);
+      TypeInfoComputed tic = ensureTypeInfoComputed(candidate, subtypePath);
       if (tic.isDone()) {
         if (tic.isInstantiable()) {
           anySubtypes = true;
@@ -1329,7 +1279,7 @@
       // Note we are leaving hasInstantiableSubtypes() as false which might be
       // wrong but it is only used by arrays and thus it will never be looked at
       // for this tic.
-      if (instantiable && instSubtypes != null) {
+      if (instantiable) {
         instSubtypes.add(candidate);
       }
     }
@@ -1342,8 +1292,7 @@
    * it is applied to be serializable. As a side effect, populates
    * {@link #typeToTypeInfoComputed} in the same way as
    * {@link #computeTypeInstantiability}.
-   * 
-   * @param logger
+   *
    * @param baseType - The generic type the parameter is on
    * @param paramIndex - The index of the parameter in the generic type
    * @param typeArg - An upper bound on the actual argument being applied to the
@@ -1435,8 +1384,8 @@
   /**
    * Returns the subtypes of a given base type as parameterized by wildcards.
    */
-  private List<JClassType> getPossiblyInstantiableSubtypes(TreeLogger logger, JClassType baseType,
-      ProblemReport problems) {
+  private List<JClassType> getPossiblyInstantiableSubtypes(TreeLogger logger,
+      JRealClassType baseType, ProblemReport problems) {
     assert (baseType == getBaseType(baseType));
 
     List<JClassType> possiblyInstantiableTypes = new ArrayList<JClassType>();
@@ -1487,10 +1436,10 @@
     return possiblyInstantiableTypes;
   }
 
-  private TypeInfoComputed getTypeInfoComputed(JType type, TypePath path, boolean createIfNeeded) {
+  private TypeInfoComputed ensureTypeInfoComputed(JType type, TypePath path) {
     TypeInfoComputed tic = typeToTypeInfoComputed.get(type);
-    if (tic == null && createIfNeeded) {
-      tic = new TypeInfoComputed(type, path);
+    if (tic == null) {
+      tic = new TypeInfoComputed(type, path, typeOracle);
       typeToTypeInfoComputed.put(type, tic);
     }
     return tic;
@@ -1582,11 +1531,81 @@
     for (int rank = 1; rank <= maxRank; ++rank) {
       JArrayType covariantArray = getArrayType(typeOracle, rank, leafType);
 
-      TypeInfoComputed covariantArrayTic = getTypeInfoComputed(covariantArray, path, true);
+      TypeInfoComputed covariantArrayTic = ensureTypeInfoComputed(covariantArray, path);
       covariantArrayTic.setInstantiable(true);
     }
   }
 
+  /**
+   * Marks all covariant and lesser-ranked arrays as instantiable for all leaf types between
+   * the given array's leaf type and its instantiable subtypes. (Note: this adds O(S * R)
+   * array types to the output where S is the number of subtypes and R is the rank.)
+   * Prerequisite: The leaf type's tic and its subtypes must already be created.
+   * @see #checkArrayInstantiable
+   */
+  private void markArrayTypes(TreeLogger logger, JArrayType array, TypePath path,
+      ProblemReport problems) {
+    logger = logger.branch(TreeLogger.DEBUG, "Adding array types for " + array);
+
+    JType leafType = array.getLeafType();
+    JTypeParameter isLeafTypeParameter = leafType.isTypeParameter();
+    if (isLeafTypeParameter != null) {
+      if (typeParametersInRootTypes.contains(isLeafTypeParameter)) {
+        leafType = isLeafTypeParameter.getFirstBound(); // to match computeTypeInstantiability
+      } else {
+        // skip non-root leaf parameters, to match checkArrayInstantiable
+        return;
+      }
+    }
+
+    TypeInfoComputed leafTic = typeToTypeInfoComputed.get(leafType);
+    if (leafTic == null) {
+      problems.add(array, "internal error: leaf type not computed: " +
+          leafType.getQualifiedSourceName(), Priority.FATAL);
+      return;
+    }
+
+    if (leafType.isClassOrInterface() == null) {
+      // Simple case: no covariance, just lower ranks.
+      assert leafType.isPrimitive() != null;
+      markArrayTypesInstantiable(leafType, array.getRank(), path);
+      return;
+    }
+
+    JRealClassType baseClass = getBaseType(leafType.isClassOrInterface());
+
+    TreeLogger covariantArrayLogger =
+        logger.branch(TreeLogger.DEBUG, "Covariant array types:");
+
+    Set<JClassType> instantiableTypes = leafTic.instantiableTypes;
+    if (instantiableTypes == null) {
+      // The types are there (due to a supertype) but the Set wasn't computed, so compute it now.
+      instantiableTypes = new HashSet<JClassType>();
+      List<JClassType> candidates =
+          getPossiblyInstantiableSubtypes(logger, baseClass, problems);
+      for (JClassType candidate : candidates) {
+        TypeInfoComputed tic = typeToTypeInfoComputed.get(candidate);
+        if (tic != null && tic.instantiable) {
+          instantiableTypes.add(candidate);
+        }
+      }
+    }
+    for (JClassType instantiableType : TypeHierarchyUtils.getAllTypesBetweenRootTypeAndLeaves(
+        baseClass, instantiableTypes)) {
+      if (!isAccessibleToSerializer(instantiableType)) {
+        // Skip types that are not accessible from a serializer
+        continue;
+      }
+
+      if (covariantArrayLogger.isLoggable(TreeLogger.DEBUG)) {
+        covariantArrayLogger.branch(TreeLogger.DEBUG, getArrayType(typeOracle, array.getRank(),
+            instantiableType).getParameterizedQualifiedSourceName());
+      }
+
+      markArrayTypesInstantiable(instantiableType, array.getRank(), path);
+    }
+  }
+
   private boolean maybeInstantiable(TreeLogger logger, JClassType type, ProblemReport problems) {
     boolean success =
         canBeInstantiated(type, problems) && shouldConsiderFieldsForSerialization(type, problems);
@@ -1599,6 +1618,21 @@
     return success;
   }
 
+  /**
+   * Report problems if they are fatal or we're debugging.
+   */
+  private void maybeReport(TreeLogger logger, ProblemReport problems) {
+    if (problems.hasFatalProblems()) {
+      problems.reportFatalProblems(logger, TreeLogger.ERROR);
+    }
+    // if entrySucceeded, there may still be "warning" problems, but too
+    // often they're expected (e.g. non-instantiable subtypes of List), so
+    // we log them at DEBUG.
+    // TODO(fabbott): we could blacklist or graylist those types here, so
+    // instantiation during code generation would flag them for us.
+    problems.report(logger, TreeLogger.DEBUG, TreeLogger.DEBUG);
+  }
+
   private boolean mightNotBeExposed(JGenericType baseType, int paramIndex) {
     TypeParameterFlowInfo flowInfo = getFlowInfo(baseType, paramIndex);
     return flowInfo.getMightNotBeExposed() || isManuallySerializable(baseType);
@@ -1619,8 +1653,7 @@
     Set<JType> supersOfInstantiableTypes = new LinkedHashSet<JType>();
     for (TypeInfoComputed tic : typeToTypeInfoComputed.values()) {
       if (tic.isInstantiable() && tic.getType() instanceof JClassType) {
-        JClassType type = (JClassType) tic.getType().getErasedType();
-        JClassType sup = type;
+        JClassType sup = (JClassType) tic.getType().getErasedType();
         while (sup != null) {
           supersOfInstantiableTypes.add(sup.getErasedType());
           sup = sup.getErasedType().getSuperclass();
diff --git a/user/src/com/google/gwt/user/rebind/rpc/SerializationUtils.java b/user/src/com/google/gwt/user/rebind/rpc/SerializationUtils.java
index 17cc6a0..0d6f826 100644
--- a/user/src/com/google/gwt/user/rebind/rpc/SerializationUtils.java
+++ b/user/src/com/google/gwt/user/rebind/rpc/SerializationUtils.java
@@ -18,6 +18,7 @@
 import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.core.ext.typeinfo.JArrayType;
 import com.google.gwt.core.ext.typeinfo.JClassType;
+import com.google.gwt.core.ext.typeinfo.JEnumConstant;
 import com.google.gwt.core.ext.typeinfo.JField;
 import com.google.gwt.core.ext.typeinfo.JParameterizedType;
 import com.google.gwt.core.ext.typeinfo.JPrimitiveType;
@@ -27,6 +28,7 @@
 
 import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashSet;
@@ -268,6 +270,26 @@
     } else if (type.isArray() != null) {
       JArrayType isArray = type.isArray();
       generateSerializationSignature(typeOracle, isArray.getComponentType(), crc);
+    } else if (type.isEnum() != null) {
+      List<JEnumConstant> constants = Arrays.asList(type.isEnum().getEnumConstants());
+      // Make sure the list is sorted; the getEnumConstants contract doesn't guarantees it.
+      Collections.sort(constants, new Comparator<JEnumConstant>() {
+        @Override
+        public int compare(JEnumConstant o1, JEnumConstant o2) {
+          int i1 = o1.getOrdinal();
+          int i2 = o2.getOrdinal();
+          if (i1 < i2) {
+            return -1;
+          } else if (i1 > i2) {
+            return 1;
+          } else {
+            return 0;
+          }
+        }
+      });
+      for (JEnumConstant constant : constants) {
+        crc.update(constant.getName().getBytes(Util.DEFAULT_ENCODING));
+      }
     } else if (type.isClassOrInterface() != null) {
       JClassType isClassOrInterface = type.isClassOrInterface();
       JField[] fields = getSerializableFields(typeOracle, isClassOrInterface);
diff --git a/user/src/com/google/gwt/user/rebind/ui/ImageBundleBuilder.java b/user/src/com/google/gwt/user/rebind/ui/ImageBundleBuilder.java
index 3ad43e9..574a30d 100644
--- a/user/src/com/google/gwt/user/rebind/ui/ImageBundleBuilder.java
+++ b/user/src/com/google/gwt/user/rebind/ui/ImageBundleBuilder.java
@@ -389,7 +389,7 @@
         // before this point.
         logger.log(TreeLogger.ERROR,
             "Resource not found on classpath (is the name specified as "
-                + "Class.getResource() would expect?)", null);
+                + "ClassLoader.getResource() would expect?)", null);
         throw new UnableToCompleteException();
       }
 
diff --git a/user/src/com/google/gwt/user/server/rpc/impl/SerializabilityUtil.java b/user/src/com/google/gwt/user/server/rpc/impl/SerializabilityUtil.java
index 2dd668d..c62f0ec 100644
--- a/user/src/com/google/gwt/user/server/rpc/impl/SerializabilityUtil.java
+++ b/user/src/com/google/gwt/user/server/rpc/impl/SerializabilityUtil.java
@@ -219,25 +219,50 @@
   }
 
   /**
-   * Return the concrete type that a generic type maps to, if known.
+   * Resolve type variables to concrete types if possible. Otherwise, just return
+   * the type variable.
    *
-   * @param genericType The generic type to resolve.
+   * @param unresolved The type to resolve
    * @param resolvedTypes A map of generic types to actual types.
    * @return The actual type, which may be of any subclass of Type.
    */
-  public static Type findActualType(Type genericType,
+  public static Type findActualType(Type unresolved,
       DequeMap<TypeVariable<?>, Type> resolvedTypes) {
-    Type result = genericType;
-    // Look for things that TypeVariables are mapped to, but stop if mapped
-    // to itself. We map a TypeVariable to itself when we wish to explicitly
-    // mark it as unmapped.
-    while (result instanceof TypeVariable<?> &&
-        resolvedTypes.get((TypeVariable<?>) result) != result &&
-        resolvedTypes.get((TypeVariable<?>) result) != null) {
-      result = resolvedTypes.get((TypeVariable<?>) result);
+
+    // Handle simple cases quickly.
+    if (!(unresolved instanceof TypeVariable<?>)) {
+      return unresolved;
+    }
+    TypeVariable<?> var = (TypeVariable<?>) unresolved;
+    Type target = resolvedTypes.get(var);
+    if (target == null || target == var) {
+      return var;
+    }
+    if (!(target instanceof TypeVariable<?>)) {
+      return target;
     }
 
-    return result;
+    // Type variables that point to other type variables might form a cycle, which
+    // means they're all equivalent. Keep track of visited type variables to detect this.
+    Set<TypeVariable<?>> seen = new HashSet<TypeVariable<?>>();
+    seen.add(var);
+    var = (TypeVariable<?>) target;
+    seen.add(var);
+
+    while (true) {
+      target = resolvedTypes.get(var);
+      if (target == null || target == var) {
+        return var;
+      }
+      if (!(target instanceof TypeVariable<?>)) {
+        return target;
+      }
+      var = (TypeVariable<?>) target;
+      if (!seen.add(var)) {
+        // Cycle detected; returning an arbitrary var in the cycle.
+        return var;
+      }
+    }
   }
 
   /**
@@ -870,6 +895,14 @@
       generateSerializationSignature(customSerializer, crc, policy);
     } else if (instanceType.isArray()) {
       generateSerializationSignature(instanceType.getComponentType(), crc, policy);
+    } else if (Enum.class.isAssignableFrom(instanceType) && !Enum.class.equals(instanceType)) {
+      if (!instanceType.isEnum()) {
+        instanceType = instanceType.getSuperclass();
+      }
+      Enum<?>[] constants = instanceType.asSubclass(Enum.class).getEnumConstants();
+      for (Enum<?> constant : constants) {
+        crc.update(constant.name().getBytes(RPCServletUtils.CHARSET_UTF8));
+      }
     } else if (!instanceType.isPrimitive()) {
       Field[] fields = applyFieldSerializationPolicy(instanceType);
       Set<String> clientFieldNames = policy.getClientFieldNamesForEnhancedClass(instanceType);
diff --git a/user/src/com/google/gwt/user/server/rpc/impl/ServerSerializationStreamWriter.java b/user/src/com/google/gwt/user/server/rpc/impl/ServerSerializationStreamWriter.java
index b1df67d..0348bdf 100644
--- a/user/src/com/google/gwt/user/server/rpc/impl/ServerSerializationStreamWriter.java
+++ b/user/src/com/google/gwt/user/server/rpc/impl/ServerSerializationStreamWriter.java
@@ -337,7 +337,6 @@
      * JavaScript Vertical Tab character '\v' into 'v'. As such, we do not use
      * the short form of the unicode escape here.
      */
-    JS_CHARS_ESCAPED['\u0000'] = '0';
     JS_CHARS_ESCAPED['\b'] = 'b';
     JS_CHARS_ESCAPED['\t'] = 't';
     JS_CHARS_ESCAPED['\n'] = 'n';
@@ -503,6 +502,9 @@
       case NON_BREAKING_HYPHEN:
         // This can be expanded into a break followed by a hyphen
         return true;
+      case '\'': case '&': case '<': case '=': case '>':
+        // These can cause HTML content sniffing
+        return true;
       default:
         if (ch < ' ') {
           // Chrome 11 mangles control characters
diff --git a/user/src/com/google/gwt/useragent/UserAgent.gwt.xml b/user/src/com/google/gwt/useragent/UserAgent.gwt.xml
index 16a65ec..3039a35 100644
--- a/user/src/com/google/gwt/useragent/UserAgent.gwt.xml
+++ b/user/src/com/google/gwt/useragent/UserAgent.gwt.xml
@@ -33,6 +33,15 @@
     is-multi-valued="false" />
   <set-configuration-property name="user.agent.runtimeWarning" value="true"/>
 
+  <!--
+    If set to "modern", GWT widgets will sometimes attempt to use new web API's that
+    aren't yet standardized (such as prefixed API's). The "stable" setting turns this off.
+    If recompiling and redeploying your GWT app when someone reports a browser bug would be
+    a problem, you should choose "stable".
+  -->
+  <define-property name="webApiUsage" values="stable,modern"/>
+  <set-property name="webApiUsage" value="modern"/>
+
   <!-- Asserts that the compile time user.agent value matches the runtime -->
   <!-- user.agent value -->
   <entry-point class="com.google.gwt.useragent.client.UserAgentAsserter" />
diff --git a/user/src/com/google/gwt/validation/rebind/GwtSpecificValidatorCreator.java b/user/src/com/google/gwt/validation/rebind/GwtSpecificValidatorCreator.java
index dfcd5a7..4ee9674 100644
--- a/user/src/com/google/gwt/validation/rebind/GwtSpecificValidatorCreator.java
+++ b/user/src/com/google/gwt/validation/rebind/GwtSpecificValidatorCreator.java
@@ -1112,14 +1112,14 @@
   private void writeFieldWrapperMethod(SourceWriter sw, JField field) {
     writeUnsafeNativeLongIfNeeded(sw, field.getType());
 
-    // private native fieldType _fieldName(Bean object) /*-{
+    // private native fieldType _fieldName(com.example.Bean object) /*-{
     sw.print("private native ");
 
     sw.print(field.getType().getQualifiedSourceName());
     sw.print(" ");
     sw.print(toWrapperName(field));
     sw.print("(");
-    sw.print(beanType.getName());
+    sw.print(field.getEnclosingType().getQualifiedSourceName());
     sw.println(" object) /*-{");
     sw.indent();
 
diff --git a/user/src/com/google/gwt/xhr/client/XMLHttpRequest.java b/user/src/com/google/gwt/xhr/client/XMLHttpRequest.java
index d3e4c95..19a1d68 100644
--- a/user/src/com/google/gwt/xhr/client/XMLHttpRequest.java
+++ b/user/src/com/google/gwt/xhr/client/XMLHttpRequest.java
@@ -366,6 +366,18 @@
   }-*/;
 
   /**
+   * Sets withCredentials attribute.
+   * <p>
+   * See <a href="http://www.w3.org/TR/XMLHttpRequest/#the-withcredentials-attribute"
+   * >http://www.w3.org/TR/XMLHttpRequest/#the-withcredentials-attribute</a>.
+   *
+   * @param withCredentials whether to include credentials in XHR
+   */
+  public final native void setWithCredentials(boolean withCredentials) /*-{
+    this.withCredentials = withCredentials;
+  }-*/;
+
+  /**
    * Sets the response type.
    * <p>
    * See <a href="http://www.w3.org/TR/XMLHttpRequest/#the-responsetype-attribute"
diff --git a/user/src/com/google/web/bindery/event/shared/SimpleEventBus.java b/user/src/com/google/web/bindery/event/shared/SimpleEventBus.java
index 7e33728..de48103 100644
--- a/user/src/com/google/web/bindery/event/shared/SimpleEventBus.java
+++ b/user/src/com/google/web/bindery/event/shared/SimpleEventBus.java
@@ -214,7 +214,7 @@
     List<H> l = getHandlerList(type, source);
 
     boolean removed = l.remove(handler);
-    assert removed : "redundant remove call";
+
     if (removed && l.isEmpty()) {
       prune(type, source);
     }
diff --git a/user/src/com/google/web/bindery/requestfactory/server/RequestState.java b/user/src/com/google/web/bindery/requestfactory/server/RequestState.java
index 93e7078..c1d698a 100644
--- a/user/src/com/google/web/bindery/requestfactory/server/RequestState.java
+++ b/user/src/com/google/web/bindery/requestfactory/server/RequestState.java
@@ -157,7 +157,8 @@
   /**
    * EntityCodex support. This method is identical to
    * {@link IdFactory#getHistoryToken(SimpleProxyId)} except that it
-   * base64-encodes the server ids.
+   * base64-encodes the server ids and adds client ids for stable ids
+   * that were ephemeral.
    * <p>
    * XXX: Merge this with AbstsractRequestContext's implementation
    */
@@ -172,6 +173,9 @@
       ref.setStrength(Strength.EPHEMERAL);
       ref.setClientId(stableId.getClientId());
     } else {
+      if (stableId.wasEphemeral()) {
+        ref.setClientId(stableId.getClientId());
+      }
       ref.setServerId(SimpleRequestProcessor.toBase64(stableId.getServerId()));
     }
     return AutoBeanCodex.encode(bean);
diff --git a/user/src/com/google/web/bindery/requestfactory/shared/impl/AbstractRequestContext.java b/user/src/com/google/web/bindery/requestfactory/shared/impl/AbstractRequestContext.java
index c4f68b3..3bcffa3 100644
--- a/user/src/com/google/web/bindery/requestfactory/shared/impl/AbstractRequestContext.java
+++ b/user/src/com/google/web/bindery/requestfactory/shared/impl/AbstractRequestContext.java
@@ -1269,6 +1269,8 @@
       }
       processReturnOperation(id, op, toPropagate);
     }
+
+    assert state.returnedProxies.size() == ops.size();
   }
 
   /**
diff --git a/user/src/com/google/web/bindery/requestfactory/vm/impl/OperationData.java b/user/src/com/google/web/bindery/requestfactory/vm/impl/OperationData.java
index 04225bf..b63feb2 100644
--- a/user/src/com/google/web/bindery/requestfactory/vm/impl/OperationData.java
+++ b/user/src/com/google/web/bindery/requestfactory/vm/impl/OperationData.java
@@ -15,9 +15,6 @@
  */
 package com.google.web.bindery.requestfactory.vm.impl;
 
-import com.google.gwt.dev.asm.Type;
-import com.google.gwt.dev.asm.commons.Method;
-
 /**
  * Describes operations that the client may ask the server to perform.
  */
@@ -32,18 +29,14 @@
       OperationData toReturn = d;
       d = null;
 
+      // Strip return types
       if (toReturn.clientMethodDescriptor != null) {
-        // Strip return types
-        Method noReturn =
-            new Method(toReturn.methodName, Type.VOID_TYPE, Type
-                .getArgumentTypes(toReturn.clientMethodDescriptor));
-        toReturn.clientMethodDescriptor = noReturn.getDescriptor();
+        toReturn.clientMethodDescriptor =
+            OperationKey.stripReturnType(toReturn.clientMethodDescriptor);
       }
       if (toReturn.domainMethodDescriptor != null) {
-        Method noReturn =
-            new Method(toReturn.methodName, Type.VOID_TYPE, Type
-                .getArgumentTypes(toReturn.domainMethodDescriptor));
-        toReturn.domainMethodDescriptor = noReturn.getDescriptor();
+        toReturn.domainMethodDescriptor =
+            OperationKey.stripReturnType(toReturn.domainMethodDescriptor);
       }
 
       return toReturn;
@@ -101,4 +94,4 @@
   public String toString() {
     return getRequestContext() + "::" + getMethodName() + getDomainMethodDescriptor();
   }
-}
\ No newline at end of file
+}
diff --git a/user/src/com/google/web/bindery/requestfactory/vm/impl/OperationKey.java b/user/src/com/google/web/bindery/requestfactory/vm/impl/OperationKey.java
index 87b9d2c..84ea217 100644
--- a/user/src/com/google/web/bindery/requestfactory/vm/impl/OperationKey.java
+++ b/user/src/com/google/web/bindery/requestfactory/vm/impl/OperationKey.java
@@ -15,8 +15,6 @@
  */
 package com.google.web.bindery.requestfactory.vm.impl;
 
-import com.google.gwt.dev.asm.Type;
-import com.google.gwt.dev.asm.commons.Method;
 import com.google.gwt.dev.util.StringKey;
 import com.google.gwt.user.server.Base64Utils;
 
@@ -53,9 +51,13 @@
     }
   }
 
+  static String stripReturnType(String descriptor) {
+    assert descriptor.contains(")") : descriptor + " does not look like a method descriptor";
+    return descriptor.substring(0, descriptor.lastIndexOf(')')) + ")V";
+  }
+
   private static String key(String requestContextBinaryName, String methodName, String descriptor) {
-    Method m = new Method(methodName, Type.VOID_TYPE, Type.getArgumentTypes(descriptor));
-    String raw = requestContextBinaryName + "::" + methodName + m.getDescriptor();
+    String raw = requestContextBinaryName + "::" + methodName + stripReturnType(descriptor);
     return raw.length() >= HASH_LENGTH ? hash(raw) : raw;
   }
 
diff --git a/user/src/com/google/web/bindery/requestfactory/vm/testing/UrlRequestTransport.java b/user/src/com/google/web/bindery/requestfactory/vm/testing/UrlRequestTransport.java
index 06b4f12..183d399 100644
--- a/user/src/com/google/web/bindery/requestfactory/vm/testing/UrlRequestTransport.java
+++ b/user/src/com/google/web/bindery/requestfactory/vm/testing/UrlRequestTransport.java
@@ -19,14 +19,11 @@
 import com.google.web.bindery.requestfactory.shared.RequestTransport;
 import com.google.web.bindery.requestfactory.shared.ServerFailure;
 
-import org.json.Cookie;
-import org.json.JSONException;
-import org.json.JSONObject;
-
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.net.HttpCookie;
 import java.net.HttpURLConnection;
 import java.net.URL;
 import java.util.HashMap;
@@ -97,18 +94,22 @@
       List<String> cookieHeaders = connection.getHeaderFields().get("Set-Cookie");
       if (cookieHeaders != null) {
         for (String header : cookieHeaders) {
+          List<HttpCookie> headerCookies;
           try {
-            JSONObject cookie = Cookie.toJSONObject(header);
-            String name = cookie.getString("name");
-            String value = cookie.getString("value");
-            String domain = cookie.optString("Domain");
+            headerCookies = HttpCookie.parse(header);
+          } catch (IllegalArgumentException e) {
+            // if we can't parse it, ignore it
+            continue;
+          }
+
+          for (HttpCookie cookie : headerCookies) {
+            String domain = cookie.getDomain();
             if (domain == null || url.getHost().endsWith(domain)) {
-              String path = cookie.optString("Path");
+              String path = cookie.getPath();
               if (path == null || url.getPath().startsWith(path)) {
-                cookies.put(name, value);
+                cookies.put(cookie.getName(), cookie.getValue());
               }
             }
-          } catch (JSONException ignored) {
           }
         }
       }
diff --git a/user/super/com/google/gwt/emul/java/lang/Number.java b/user/super/com/google/gwt/emul/java/lang/Number.java
index 04a85e1..ab89197 100644
--- a/user/super/com/google/gwt/emul/java/lang/Number.java
+++ b/user/super/com/google/gwt/emul/java/lang/Number.java
@@ -74,12 +74,12 @@
       6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, // base 22-35
       5 // base 36
     };
-  
+
     /**
      * A table of values radix*maxDigitsForRadix[radix].
      */
     private static final int[] maxDigitsRadixPower = new int[37];
-  
+
     /**
      * The largest number of digits (excluding minus sign and leading zeros) that
      * can fit into a long for a given radix between 2 and 36, inclusive.
@@ -121,12 +121,12 @@
       13, // base 35
       13  // base 36
     };
-  
+
     /**
      * A table of floor(MAX_VALUE / maxDigitsRadixPower).
      */
     private static final long[] maxValueForRadix = new long[37];
-  
+
     static {
       for (int i = 2; i <= 36; i++) {
         maxDigitsRadixPower[i] = (int) Math.pow(i, maxDigitsForRadix[i]);
@@ -183,27 +183,21 @@
    * This function contains common logic for parsing a String as a floating-
    * point number and validating the range.
    */
-  protected static double __parseAndValidateDouble(String s)
-      throws NumberFormatException {
-
-    double toReturn = __parseDouble(s);
-
-    if (__isNaN(toReturn)) {
+  protected static double __parseAndValidateDouble(String s) throws NumberFormatException {
+    if (!__isValidDouble(s)) {
       throw NumberFormatException.forInputString(s);
     }
-
-    return toReturn;
+    return __parseDouble(s);
   }
-  
+
   /**
    * @skip
    * 
    * This function contains common logic for parsing a String in a given radix
    * and validating the result.
    */
-  protected static int __parseAndValidateInt(String s, int radix,
-      int lowerBound, int upperBound) throws NumberFormatException {
-
+  protected static int __parseAndValidateInt(String s, int radix, int lowerBound, int upperBound)
+      throws NumberFormatException {
     if (s == null) {
       throw new NumberFormatException("null");
     }
@@ -229,16 +223,14 @@
 
     return toReturn;
   }
-  
+
   /**
    * @skip
    * 
    * This function contains common logic for parsing a String in a given radix
    * and validating the result.
    */
-  protected static long __parseAndValidateLong(String s, int radix)
-      throws NumberFormatException {
-    
+  protected static long __parseAndValidateLong(String s, int radix) throws NumberFormatException {
     if (s == null) {
       throw new NumberFormatException("null");
     }
@@ -246,6 +238,8 @@
       throw new NumberFormatException("radix " + radix + " out of range");
     }
 
+    final String orig = s;
+
     int length = s.length();
     boolean negative = (length > 0) && (s.charAt(0) == '-');
     if (negative) {
@@ -253,7 +247,7 @@
       length--;
     }
     if (length == 0) {
-      throw NumberFormatException.forInputString(s);
+      throw NumberFormatException.forInputString(orig);
     }
 
     // Strip leading zeros
@@ -261,13 +255,13 @@
       s = s.substring(1);
       length--;
     }
-    
+
     // Immediately eject numbers that are too long -- this avoids more complex
     // overflow handling below
     if (length > __ParseLong.maxLengthForRadix[radix]) {
-      throw NumberFormatException.forInputString(s);
+      throw NumberFormatException.forInputString(orig);
     }
-    
+
     // Validate the digits
     int maxNumericDigit = '0' + Math.min(radix, 10);
     int maxLowerCaseDigit = radix + 'a' - 10;
@@ -283,50 +277,56 @@
       if (c >= 'A' && c < maxUpperCaseDigit) {
         continue;
       }
-      throw NumberFormatException.forInputString(s);
+      throw NumberFormatException.forInputString(orig);
     }
 
     long toReturn = 0;
     int maxDigits = __ParseLong.maxDigitsForRadix[radix];
     long radixPower = __ParseLong.maxDigitsRadixPower[radix];
-    long maxValue = __ParseLong.maxValueForRadix[radix];
-    
+    long minValue = -__ParseLong.maxValueForRadix[radix];
+
     boolean firstTime = true;
     int head = length % maxDigits;
     if (head > 0) {
-      toReturn = __parseInt(s.substring(0, head), radix);
+      // accumulate negative numbers, as -Long.MAX_VALUE == Long.MIN_VALUE + 1
+      // (in other words, -Long.MIN_VALUE overflows, see issue 7308)
+      toReturn = - __parseInt(s.substring(0, head), radix);
       s = s.substring(head);
       length -= head;
       firstTime = false;
     }
-    
+
     while (length >= maxDigits) {
       head = __parseInt(s.substring(0, maxDigits), radix);
       s = s.substring(maxDigits);
       length -= maxDigits;
       if (!firstTime) {
         // Check whether multiplying by radixPower will overflow
-        if (toReturn > maxValue) {
+        if (toReturn < minValue) {
           throw new NumberFormatException(s);
         }
-        toReturn *= radixPower;      
+        toReturn *= radixPower;
       } else {
         firstTime = false;
       }
-      toReturn += head;
+      toReturn -= head;
     }
     
-    // A negative value means we overflowed Long.MAX_VALUE
-    if (toReturn < 0) {
-      throw NumberFormatException.forInputString(s);
+    // A positive value means we overflowed Long.MIN_VALUE
+    if (toReturn > 0) {
+      throw NumberFormatException.forInputString(orig);
     }
     
-    if (negative) {
+    if (!negative) {
       toReturn = -toReturn;
+      // A negative value means we overflowed Long.MAX_VALUE
+      if (toReturn < 0) {
+        throw NumberFormatException.forInputString(orig);
+      }
     }
     return toReturn;
   }
-  
+
   /**
    * @skip
    */
@@ -337,21 +337,26 @@
   /**
    * @skip
    * 
-   * @return The floating-point representation of <code>str</code> or
-   *         <code>Number.NaN</code> if the string does not match
-   *         {@link #floatRegex}.
+   * @param str
+   * @return {@code true} if the string matches {@link #floatRegex}, {@code false} otherwise
    */
-  private static native double __parseDouble(String str) /*-{
+  private static native boolean __isValidDouble(String str) /*-{
     var floatRegex = @java.lang.Number::floatRegex;
     if (!floatRegex) {
       // Disallow '.' with no digits on either side
-      floatRegex = @java.lang.Number::floatRegex = /^\s*[+-]?((\d+\.?\d*)|(\.\d+))([eE][+-]?\d+)?[dDfF]?\s*$/i;
+      floatRegex = @java.lang.Number::floatRegex =
+          /^\s*[+-]?(NaN|Infinity|((\d+\.?\d*)|(\.\d+))([eE][+-]?\d+)?[dDfF]?)\s*$/;
     }
-    if (floatRegex.test(str)) {
-      return parseFloat(str);
-    } else {
-      return Number.NaN;
-    }
+    return floatRegex.test(str);
+  }-*/;
+
+  /**
+   * @skip
+   * 
+   * @return The floating-point representation of <code>str</code>.
+   */
+  private static native double __parseDouble(String str) /*-{
+    return parseFloat(str);
   }-*/;
 
   /**
diff --git a/user/super/com/google/gwt/emul/java/lang/String.java b/user/super/com/google/gwt/emul/java/lang/String.java
index 032e04c..6fab967 100644
--- a/user/super/com/google/gwt/emul/java/lang/String.java
+++ b/user/super/com/google/gwt/emul/java/lang/String.java
@@ -764,10 +764,9 @@
    * TODO(jat): properly handle Java regex syntax
    */
   public native boolean matches(String regex) /*-{
-    var matchObj = new RegExp(regex).exec(this);
-    // if there is no match at all, matchObj will be null 
-    // matchObj[0] is the entire matched string
-    return (matchObj == null) ? false : (this == matchObj[0]);
+    // We surround the regex with '^' and '$' because it must match
+    // the entire string.
+    return new RegExp('^(' + regex + ')$').test(this);
   }-*/;
 
   public int offsetByCodePoints(int index, int codePointOffset) {
diff --git a/user/super/com/google/gwt/emul/java/math/BigDecimal.java b/user/super/com/google/gwt/emul/java/math/BigDecimal.java
index 7cc988b..ffbdfb7 100644
--- a/user/super/com/google/gwt/emul/java/math/BigDecimal.java
+++ b/user/super/com/google/gwt/emul/java/math/BigDecimal.java
@@ -2615,18 +2615,10 @@
         throw new NumberFormatException("For input string: \"" + val + "\"");
       }
     }
-    int counter = 0;
-    boolean wasNonZero = false;
     // Accumulating all digits until a possible decimal point
-    for (; (offset < last) && (val.charAt(offset) != '.')
-        && (val.charAt(offset) != 'e') && (val.charAt(offset) != 'E'); offset++) {
-      if (!wasNonZero) {
-        if (val.charAt(offset) == '0') {
-          counter++;
-        } else {
-          wasNonZero = true;
-        }
-      }
+    while ((offset < last) && (val.charAt(offset) != '.')
+        && (val.charAt(offset) != 'e') && (val.charAt(offset) != 'E')) {
+      offset++;
     }
     unscaledBuffer.append(val, begin, offset);
     // A decimal point was found
@@ -2634,15 +2626,9 @@
       offset++;
       // Accumulating all digits until a possible exponent
       begin = offset;
-      for (; (offset < last) && (val.charAt(offset) != 'e')
-          && (val.charAt(offset) != 'E'); offset++) {
-        if (!wasNonZero) {
-          if (val.charAt(offset) == '0') {
-            counter++;
-          } else {
-            wasNonZero = true;
-          }
-        }
+      while ((offset < last) && (val.charAt(offset) != 'e')
+          && (val.charAt(offset) != 'E')) {
+        offset++;
       }
       scale = offset - begin;
       unscaledBuffer.append(val, begin, offset);
@@ -2681,7 +2667,7 @@
     } else {
       setUnscaledValue(new BigInteger(unscaled));
     }
-    precision = unscaledBuffer.length() - counter;
+    precision = unscaledBuffer.length();
     // Don't count leading zeros in the precision
     for (int i = 0; i < unscaledBuffer.length(); ++i) {
       char ch = unscaledBuffer.charAt(i);
@@ -2690,6 +2676,10 @@
       }
       --precision;
     }
+    // The precision of a zero value is 1
+    if (precision == 0) {
+      precision = 1;
+    }
   }
 
   /**
diff --git a/user/super/com/google/gwt/emul/java/util/AbstractMap.java b/user/super/com/google/gwt/emul/java/util/AbstractMap.java
index 93606f5..bdeb8ee 100644
--- a/user/super/com/google/gwt/emul/java/util/AbstractMap.java
+++ b/user/super/com/google/gwt/emul/java/util/AbstractMap.java
@@ -207,6 +207,7 @@
       K k = entry.getKey();
       if (key == null ? k == null : key.equals(k)) {
         if (remove) {
+          entry = new MapEntryImpl<K, V>(entry.getKey(), entry.getValue());
           iter.remove();
         }
         return entry;
diff --git a/user/super/com/google/gwt/junit/translatable/com/google/gwt/junit/client/impl/GWTRunner.java b/user/super/com/google/gwt/junit/translatable/com/google/gwt/junit/client/impl/GWTRunner.java
index bf2a6bf..b4a1791 100644
--- a/user/super/com/google/gwt/junit/translatable/com/google/gwt/junit/client/impl/GWTRunner.java
+++ b/user/super/com/google/gwt/junit/translatable/com/google/gwt/junit/client/impl/GWTRunner.java
@@ -334,7 +334,8 @@
         builder.setParameter(SESSIONID_QUERY_PARAM,
             String.valueOf(clientInfo.getSessionId()));
       }
-      Window.Location.replace(builder.buildString());
+      // Replace "%3A" with ":" as a hack to support broken DevMode plugins.
+      Window.Location.replace(builder.buildString().replaceAll("%3A", ":"));
       currentBlock = null;
       currentTestIndex = 0;
     }
diff --git a/user/test/com/google/gwt/animation/AnimationApiUsage.gwt.xml b/user/test/com/google/gwt/animation/AnimationApiUsage.gwt.xml
new file mode 100644
index 0000000..b8afd4c
--- /dev/null
+++ b/user/test/com/google/gwt/animation/AnimationApiUsage.gwt.xml
@@ -0,0 +1,19 @@
+<!--                                                                        -->
+<!-- Copyright 2013 Google Inc.                                             -->
+<!-- Licensed under the Apache License, Version 2.0 (the "License"); you    -->
+<!-- may not use this file except in compliance with the License. You may   -->
+<!-- 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. License for the specific language governing permissions and   -->
+<!-- limitations under the License.                                         -->
+
+<!-- Module used to test Animation API usage.                               -->
+<module>
+  <inherits name="com.google.gwt.animation.Animation"/>
+  <set-property name="webApiUsage" value="stable"/>
+</module>
\ No newline at end of file
diff --git a/user/test/com/google/gwt/animation/AnimationSuite.java b/user/test/com/google/gwt/animation/AnimationSuite.java
index ef8551f..8302101 100644
--- a/user/test/com/google/gwt/animation/AnimationSuite.java
+++ b/user/test/com/google/gwt/animation/AnimationSuite.java
@@ -15,6 +15,7 @@
  */
 package com.google.gwt.animation;
 
+import com.google.gwt.animation.client.AnimationApiUsageTest;
 import com.google.gwt.animation.client.AnimationSchedulerImplTimerTest;
 import com.google.gwt.animation.client.AnimationTest;
 
@@ -28,6 +29,7 @@
   public static Test suite() {
     TestSuite suite = new TestSuite("Tests of the animation package");
 
+    suite.addTestSuite(AnimationApiUsageTest.class);
     suite.addTestSuite(AnimationSchedulerImplTimerTest.class);
     suite.addTestSuite(AnimationTest.class);
 
diff --git a/user/test/com/google/gwt/animation/client/AnimationApiUsageTest.java b/user/test/com/google/gwt/animation/client/AnimationApiUsageTest.java
new file mode 100644
index 0000000..27a6c64
--- /dev/null
+++ b/user/test/com/google/gwt/animation/client/AnimationApiUsageTest.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.animation.client;
+
+import com.google.gwt.junit.client.GWTTestCase;
+
+/**
+ * Verifies that we always use timers in 'resistance' mode.
+ */
+public class AnimationApiUsageTest extends GWTTestCase {
+  @Override
+  public String getModuleName() {
+    return "com.google.gwt.animation.AnimationApiUsage";
+  }
+
+  public void testAnimationSchedulerUsesTimer() {
+    AnimationScheduler scheduler = AnimationScheduler.get();
+    assertEquals("Expected timer implementation but got: " + scheduler.getClass().getName(),
+        AnimationSchedulerImplTimer.class, scheduler.getClass());
+  }
+}
diff --git a/user/test/com/google/gwt/canvas/dom/client/Context2dTest.java b/user/test/com/google/gwt/canvas/dom/client/Context2dTest.java
index 49a6aa0..3925bd7 100644
--- a/user/test/com/google/gwt/canvas/dom/client/Context2dTest.java
+++ b/user/test/com/google/gwt/canvas/dom/client/Context2dTest.java
@@ -199,8 +199,8 @@
     }
 
     Context2d context = canvas1.getContext2d();
-    context.setFont("40px Times New Roman");
-    assertEquals("40px Times New Roman", context.getFont());
+    context.setFont("40px \"Times New Roman\"");
+    assertEquals("40px \"Times New Roman\"", context.getFont());
   }
 
   public void testGlobalAlpha() {
diff --git a/user/test/com/google/gwt/core/client/ScriptInjectorTest.java b/user/test/com/google/gwt/core/client/ScriptInjectorTest.java
index 7596688..f245a1c 100644
--- a/user/test/com/google/gwt/core/client/ScriptInjectorTest.java
+++ b/user/test/com/google/gwt/core/client/ScriptInjectorTest.java
@@ -204,7 +204,8 @@
     this.delayTestFinish(TEST_DELAY);
     final String scriptUrl = "script_injector_test4.js";
     assertFalse(nativeTest4Worked());
-    final JavaScriptObject injectedElement = ScriptInjector.fromUrl(scriptUrl).inject();
+    final JavaScriptObject injectedElement =
+        ScriptInjector.fromUrl(scriptUrl).setRemoveTag(false).inject();
 
     // We'll check using a callback in another test. This test will poll to see
     // that the script had an effect.
@@ -242,8 +243,8 @@
     delayTestFinish(TEST_DELAY);
     final String scriptUrl = "script_injector_test5.js";
     assertFalse(nativeTest5Worked());
-    JavaScriptObject injectedElement =
-        ScriptInjector.fromUrl(scriptUrl).setCallback(new Callback<Void, Exception>() {
+    JavaScriptObject injectedElement = ScriptInjector.fromUrl(scriptUrl).setRemoveTag(false)
+        .setCallback(new Callback<Void, Exception>() {
           @Override
           public void onFailure(Exception reason) {
             assertNotNull(reason);
@@ -272,8 +273,8 @@
   public void testInjectUrlTopWindow() {
     final String scriptUrl = "script_injector_test6.js";
     assertFalse(nativeTest6Worked());
-    JavaScriptObject injectedElement =
-        ScriptInjector.fromUrl(scriptUrl).setWindow(ScriptInjector.TOP_WINDOW).inject();
+    JavaScriptObject injectedElement = ScriptInjector.fromUrl(scriptUrl).setRemoveTag(false)
+        .setWindow(ScriptInjector.TOP_WINDOW).inject();
     // We'll check using a callback in another test. This test will poll to see
     // that the script had an effect.
     Scheduler.get().scheduleFixedDelay(new RepeatingCommand() {
@@ -309,8 +310,8 @@
     delayTestFinish(TEST_DELAY);
     final String scriptUrl = "script_injector_test7.js";
     assertFalse(nativeTest7Worked());
-    JavaScriptObject injectedElement =
-        ScriptInjector.fromUrl(scriptUrl).setWindow(ScriptInjector.TOP_WINDOW).setCallback(
+    JavaScriptObject injectedElement = ScriptInjector.fromUrl(scriptUrl).setRemoveTag(false)
+        .setWindow(ScriptInjector.TOP_WINDOW).setCallback(
             new Callback<Void, Exception>() {
 
               @Override
diff --git a/user/test/com/google/gwt/core/client/impl/SchedulerImplTest.java b/user/test/com/google/gwt/core/client/impl/SchedulerImplTest.java
index 47f70ad..86a4abd 100644
--- a/user/test/com/google/gwt/core/client/impl/SchedulerImplTest.java
+++ b/user/test/com/google/gwt/core/client/impl/SchedulerImplTest.java
@@ -15,6 +15,7 @@
  */
 package com.google.gwt.core.client.impl;
 
+import com.google.gwt.core.client.Duration;
 import com.google.gwt.core.client.JsArray;
 import com.google.gwt.core.client.Scheduler.RepeatingCommand;
 import com.google.gwt.core.client.Scheduler.ScheduledCommand;
@@ -75,6 +76,22 @@
     void schedule(ScheduledCommand cmd);
   }
 
+  private static class RepeatingCommandImpl implements RepeatingCommand {
+    private boolean firstTime = true;
+    private boolean commandRanSecondTime = false;
+
+    @Override
+    public boolean execute() {
+      // Command needs to run for the second time to be executed in runScheduledTasks
+      if (firstTime) {
+        firstTime = false;
+        return true;
+      }
+      commandRanSecondTime = true;
+      return false;
+    }
+  }
+
   private static final int TEST_DELAY = 5000;
 
   @Override
@@ -106,6 +123,45 @@
     delayTestFinish(TEST_DELAY);
   }
 
+  /**
+   * This test could potentially timeout since loop in {@link SchedulerImpl#runRepeatingTasks} would
+   * run indefinitely since we are mocking Duration to always return zero.
+   * 
+   * see for details: https://code.google.com/p/google-web-toolkit/issues/detail?id=7307
+   */
+  public void testEarlyBreakIfAllTaskAreFinished() {
+    final SchedulerImpl impl = new SchedulerImpl() {
+      @Override
+      Duration createDuration() {
+        return new Duration() {
+          @Override
+          public int elapsedMillis() {
+            // never expire
+            return 0;
+          }
+        };
+      }
+    };
+
+    final RepeatingCommandImpl command = new RepeatingCommandImpl();
+
+    impl.scheduleIncremental(command);
+
+    impl.scheduleDeferred(new ScheduledCommand() {
+      @Override
+      public void execute() {
+
+        if (command.commandRanSecondTime) {
+          finishTest();
+        } else {
+          impl.scheduleDeferred(this);
+        }
+      }
+    });
+
+    delayTestFinish(TEST_DELAY);
+  }
+
   public void testEntryCommands() {
     final SchedulerImpl impl = new SchedulerImpl();
 
diff --git a/user/test/com/google/gwt/core/client/impl/StackTraceCreatorTest.java b/user/test/com/google/gwt/core/client/impl/StackTraceCreatorTest.java
index e4bfe0d..6b71d59 100644
--- a/user/test/com/google/gwt/core/client/impl/StackTraceCreatorTest.java
+++ b/user/test/com/google/gwt/core/client/impl/StackTraceCreatorTest.java
@@ -192,6 +192,10 @@
         c.extractName(" at Type.functionName (file.js:1:2)"));
     assertEquals("functionName@@file.js:1:2",
         c.extractName(" at Type.functionName [as methodName] (file.js:1:2)"));
+    
+    // iOS style
+    assertEquals("functionName@@file.js:1",
+        c.extractName("functionName@file.js:1"));
   }
 
   public void testFirefox14ExtractName() {
diff --git a/user/test/com/google/gwt/dev/jjs/test/CompilerTest.java b/user/test/com/google/gwt/dev/jjs/test/CompilerTest.java
index e480282..4107144 100644
--- a/user/test/com/google/gwt/dev/jjs/test/CompilerTest.java
+++ b/user/test/com/google/gwt/dev/jjs/test/CompilerTest.java
@@ -16,6 +16,7 @@
 package com.google.gwt.dev.jjs.test;
 
 import com.google.gwt.core.client.JavaScriptException;
+import com.google.gwt.dev.jjs.test.compilertests.MethodNamedSameAsClass;
 import com.google.gwt.junit.client.GWTTestCase;
 
 import junit.framework.Assert;
@@ -951,6 +952,7 @@
             ai = foo;
           }
 
+          @SuppressWarnings("ReturnValueIgnored")
           @Override
           public String toString() {
             // this line used to cause ICE due to no synthetic path to bar
@@ -967,6 +969,14 @@
     assertEquals(result, "foofoofoofoo");
   }
 
+  /**
+   * test for issue 7824.
+   */
+  public void testMethodNamedSameAsClass() {
+    MethodNamedSameAsClass obj = new MethodNamedSameAsClass();
+    obj.MethodNamedSameAsClass();
+  }
+
   public void testNotOptimizations() {
     assertFalse(!true);
     assertTrue(!false);
diff --git a/user/test/com/google/gwt/dev/jjs/test/InnerClassTest.java b/user/test/com/google/gwt/dev/jjs/test/InnerClassTest.java
index 072974a..9b8e651 100644
--- a/user/test/com/google/gwt/dev/jjs/test/InnerClassTest.java
+++ b/user/test/com/google/gwt/dev/jjs/test/InnerClassTest.java
@@ -111,12 +111,90 @@
     }
   }
 
+
+  /**
+   * Used in test {@link #testExtendsNested()}
+   */
+  private static class ESOuter {
+    class ESInner {
+      public int value;
+      public ESInner() {
+        value = 1;
+      }
+      public ESInner(int value) {
+        this.value = value;
+      }
+    }
+
+    public ESInner newESInner() {
+      return new ESInner();
+    }
+  }
+
+  private static class ESInnerSubclass extends ESOuter.ESInner {
+    ESInnerSubclass(ESOuter outer) {
+      outer.super();
+    }
+
+    ESInnerSubclass(int value, ESOuter outer) {
+      outer.super(value);
+    }
+  }
+
+  /**
+   * Used in test {@link #testExtendsNestedWithGenerics()}
+   */
+  private static class ESWGOuter<T> {
+    class ESWGInner {
+      public int value;
+      public ESWGInner() {
+        value = 1;
+      }
+      public ESWGInner(int value) {
+        this.value = value;
+      }
+    }
+
+    public ESWGInner newESWGInner() {
+      return new ESWGInner();
+    }
+  }
+
+  private static class ESWGInnerSubclass extends ESWGOuter<String>.ESWGInner {
+    ESWGInnerSubclass(ESWGOuter<String> outer) {
+      outer.super();
+    }
+
+    ESWGInnerSubclass(int value, ESWGOuter<String> outer) {
+      outer.super(value);
+    }
+  }
+
   private StringBuffer testAppend = new StringBuffer();
 
   public String getModuleName() {
     return "com.google.gwt.dev.jjs.CompilerSuite";
   }
 
+  public void testExtendsNested() {
+    ESOuter o = new ESOuter();
+    assertEquals(1, o.new ESInner().value);
+    assertEquals(2, o.new ESInner(2).value);
+    assertEquals(1, new ESInnerSubclass(o).value);
+    assertEquals(2, new ESInnerSubclass(2, o).value);
+  }
+
+  /**
+   * Test for Issue 7789
+   */
+  public void testExtendsNestedWithGenerics() {
+    ESWGOuter<String> o = new ESWGOuter<String>();
+    assertEquals(1, o.new ESWGInner().value);
+    assertEquals(2, o.new ESWGInner(2).value);
+    assertEquals(1, new ESWGInnerSubclass(o).value);
+    assertEquals(2, new ESWGInnerSubclass(2, o).value);
+  }
+
   public void testInnerClassCtors() {
     P1<?> p1 = new P1<Object>();
     assertEquals(1, p1.value);
diff --git a/user/test/com/google/gwt/dev/jjs/test/JsoTest.java b/user/test/com/google/gwt/dev/jjs/test/JsoTest.java
index 5bf60b0..059d1c9 100644
--- a/user/test/com/google/gwt/dev/jjs/test/JsoTest.java
+++ b/user/test/com/google/gwt/dev/jjs/test/JsoTest.java
@@ -370,7 +370,7 @@
     assertFalse(o instanceof String);
     try {
       String s = (String) o;
-      s.toString();
+      s = s.toString();
       fail("Expected ClassCastException");
     } catch (ClassCastException expected) {
     }
diff --git a/user/test/com/google/gwt/dev/jjs/test/VarargsTest.java b/user/test/com/google/gwt/dev/jjs/test/VarargsTest.java
index 0285390..a615d1f 100644
--- a/user/test/com/google/gwt/dev/jjs/test/VarargsTest.java
+++ b/user/test/com/google/gwt/dev/jjs/test/VarargsTest.java
@@ -28,6 +28,7 @@
     return "com.google.gwt.dev.jjs.CompilerSuite";
   }
 
+  @SuppressWarnings("all")
   public void testNullEmpty() {
     assertNotNull(vararg());
     assertNull(vararg(null));
diff --git a/user/test/com/google/gwt/dev/jjs/test/compilertests/MethodNamedSameAsClass.java b/user/test/com/google/gwt/dev/jjs/test/compilertests/MethodNamedSameAsClass.java
new file mode 100644
index 0000000..bdfe2f8
--- /dev/null
+++ b/user/test/com/google/gwt/dev/jjs/test/compilertests/MethodNamedSameAsClass.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.google.gwt.dev.jjs.test.compilertests;
+
+/**
+ * Test for issue 7824
+ */
+public class MethodNamedSameAsClass {
+  public void MethodNamedSameAsClass() { }
+}
diff --git a/user/test/com/google/gwt/dev/shell/test/MultiModuleTest.java b/user/test/com/google/gwt/dev/shell/test/MultiModuleTest.java
index ff3a48c..8eb5f6f 100644
--- a/user/test/com/google/gwt/dev/shell/test/MultiModuleTest.java
+++ b/user/test/com/google/gwt/dev/shell/test/MultiModuleTest.java
@@ -23,7 +23,6 @@
 import com.google.gwt.user.client.ui.VerticalPanel;
 
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.Map;
 
 /**
@@ -111,14 +110,14 @@
    */
   public void testInnerModules() {
     String url = getURL();
-    Map params = getURLParams(url);
+    Map<String, String> params = getURLParams(url);
     if (!params.containsKey("gwt.junit.testfuncname")) {
       // if this test is being run as a normal JUnit test, return success
       return;
     }
 
     // we were invoked by testMultipleModules, get the frame to load
-    String frameName = (String) params.get("frame");
+    String frameName = params.get("frame");
     
     VerticalPanel panel = new VerticalPanel();
     RootPanel.get().add(panel);
@@ -167,7 +166,7 @@
     
     // build new URL from current one
     String url = getURL();
-    Map params = getURLParams(url);
+    Map<String, String> params = getURLParams(url);
     params.put("frame", "top");
     params.put("gwt.junit.testclassname", MultiModuleTest.class.getName());
     params.put("gwt.junit.testfuncname", "testInnerModules");
@@ -207,7 +206,7 @@
    * @param params a map of parameter names to values
    * @return the revised URL
    */
-  private String buildURL(String url, Map params) {
+  private String buildURL(String url, Map<String, String> params) {
 
     // strip off the query string if present
     int pos = url.indexOf("?");
@@ -225,9 +224,8 @@
     }
 
     // now add the rest of the parameters, excluding gwt.hybrid
-    for (Iterator it = params.entrySet().iterator(); it.hasNext();) {
-      Map.Entry entry = (Map.Entry) it.next();
-      String param = (String) entry.getKey();
+    for (Map.Entry<String, String> entry : params.entrySet()) {
+      String param = entry.getKey();
 
       if (param.equals("gwt.hybrid")) {
         // we already included gwt.hybrid if it was present
@@ -244,7 +242,7 @@
       url += param;
 
       // add the value if necessary
-      String value = (String) entry.getValue();
+      String value = entry.getValue();
       if (value != null) {
         url += "=" + value;
       }
@@ -268,7 +266,7 @@
    */
   private void doneLoading() {
     String url = getURL();
-    Map params = getURLParams(url);
+    Map<String, String> params = getURLParams(url);
     mainPanel.add(new Label("done loading"));
     if (++state == 4) {
       // all tests complete, notify parent
@@ -306,8 +304,8 @@
    * @param url the full or partial (ie, only location.search) URL to parse
    * @return the map of parameter names to values
    */
-  private Map getURLParams(String url) {
-    HashMap map = new HashMap();
+  private Map<String, String> getURLParams(String url) {
+    HashMap<String, String> map = new HashMap<String, String>();
     int pos = url.indexOf("?");
     
     // loop precondition: pos is the index of the next ? or & character in url
@@ -372,7 +370,7 @@
    * 
    * @param frameNumber the number of the frame to replace, starting with 0
    */
-  private void toggleFrame(int frameNumber, String url, Map params) {
+  private void toggleFrame(int frameNumber, String url, Map<String, String> params) {
     params.put("frame", (frameNumber + 1) + (frameB[frameNumber] ? "a" : "b"));
     frame[frameNumber].setUrl(buildURL(url, params));
     frameB[frameNumber] = !frameB[frameNumber];
diff --git a/user/test/com/google/gwt/dom/client/ElementTest.java b/user/test/com/google/gwt/dom/client/ElementTest.java
index f1e1950..a1e6145 100644
--- a/user/test/com/google/gwt/dom/client/ElementTest.java
+++ b/user/test/com/google/gwt/dom/client/ElementTest.java
@@ -40,15 +40,45 @@
     div.setClassName("foo");
     assertEquals("foo", div.getClassName());
 
-    div.addClassName("bar");
+    assertTrue(div.addClassName("bar"));
     assertEquals("foo bar", div.getClassName());
 
-    div.addClassName("baz");
+    assertTrue(div.addClassName("baz"));
+    assertEquals("foo bar baz", div.getClassName());
+
+    assertFalse(div.addClassName("baz"));
     assertEquals("foo bar baz", div.getClassName());
 
     div.replaceClassName("bar", "tintin");
     assertTrue(div.getClassName().contains("tintin"));
     assertFalse(div.getClassName().contains("bar"));
+
+    assertTrue(div.removeClassName("tintin"));
+    assertEquals("foo baz", div.getClassName());
+
+    assertFalse(div.removeClassName("bar"));
+    assertEquals("foo baz", div.getClassName());
+
+    assertTrue(div.removeClassName("baz"));
+    assertEquals("foo", div.getClassName());
+
+    assertTrue(div.removeClassName("foo"));
+    assertEquals("", div.getClassName());
+  }
+
+  public void testIndexOfName() {
+    assertEquals(-1, Element.indexOfName("", "foo"));
+
+    assertEquals(-1, Element.indexOfName("foo", "fo"));
+    assertEquals(-1, Element.indexOfName("foo", "fool"));
+
+    assertEquals(-1, Element.indexOfName("bar fool", "foo"));
+    assertEquals(-1, Element.indexOfName("bar fool baz", "foo"));
+
+    assertEquals(0, Element.indexOfName("foo", "foo"));
+    assertEquals(0, Element.indexOfName("foo bar", "foo"));
+    assertEquals(4, Element.indexOfName("bar foo", "foo"));
+    assertEquals(4, Element.indexOfName("bar foo baz", "foo"));
   }
 
   /**
diff --git a/user/test/com/google/gwt/editor/client/EditorErrorTest.java b/user/test/com/google/gwt/editor/client/EditorErrorTest.java
index 755ebef..0bd7a75 100644
--- a/user/test/com/google/gwt/editor/client/EditorErrorTest.java
+++ b/user/test/com/google/gwt/editor/client/EditorErrorTest.java
@@ -1,12 +1,12 @@
 /*
  * Copyright 2010 Google Inc.
- * 
+ *
  * Licensed 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
@@ -39,25 +39,43 @@
 
     private EditorDelegate<Address> delegate;
 
+    @Override
     public void flush() {
       delegate.recordError("Hello Errors!", null, null);
     }
 
+    @Override
     public void onPropertyChange(String... paths) {
     }
 
+    @Override
     public void setDelegate(EditorDelegate<Address> delegate) {
       this.delegate = delegate;
     }
 
+    @Override
     public void setValue(Address value) {
     }
   }
 
+  class AddressEditorReceivesErrors extends AddressEditor implements
+      HasEditorErrors<Address> {
+    List<EditorError> errors;
+
+    @Override
+    public void showErrors(List<EditorError> errors) {
+      this.errors = errors;
+      for (EditorError error : errors) {
+        error.setConsumed(true);
+      }
+    }
+  }
+
   class PersonEditorReceivesErrors extends PersonEditor implements
       HasEditorErrors<Person> {
     List<EditorError> errors;
 
+    @Override
     public void showErrors(List<EditorError> errors) {
       this.errors = errors;
       for (EditorError error : errors) {
@@ -86,6 +104,7 @@
 
     private List<EditorError> errors;
 
+    @Override
     public void showErrors(List<EditorError> errors) {
       this.errors = errors;
     }
@@ -107,6 +126,7 @@
 
     List<EditorError> errors;
 
+    @Override
     public void showErrors(List<EditorError> errors) {
       this.errors = errors;
     }
@@ -267,7 +287,7 @@
     assertEquals(driver.getErrors().toString(), 8, driver.getErrors().size());
 
     List<EditorError> list = driver.getErrors();
-    
+
     // All the errors w/ addressEditor are collected first
     EditorError error = list.get(0);
     assertEquals("msg1", error.getMessage());
@@ -284,7 +304,7 @@
     assertSame(e4, error.getUserData());
     assertSame(null, error.getValue());
     assertSame(editor.addressEditor, error.getEditor());
-    
+
     error = list.get(2);
     assertEquals("msg6", error.getMessage());
     assertEquals("address.bogusparent.boguschild", error.getAbsolutePath());
@@ -292,7 +312,7 @@
     assertSame(e6, error.getUserData());
     assertSame(null, error.getValue());
     assertSame(editor.addressEditor, error.getEditor());
-    
+
     error = list.get(3);
     assertEquals("msg8", error.getMessage());
     assertEquals("address.", error.getAbsolutePath());
@@ -300,7 +320,7 @@
     assertSame(e8, error.getUserData());
     assertSame(null, error.getValue());
     assertSame(editor.addressEditor, error.getEditor());
-    
+
     // Then the rest of the errors.
     error = list.get(4);
     assertEquals("msg2", error.getMessage());
@@ -309,7 +329,7 @@
     assertSame(e2, error.getUserData());
     assertSame(null, error.getValue());
     assertSame(editor, error.getEditor());
-    
+
     error = list.get(5);
     assertEquals("msg3", error.getMessage());
     assertEquals("address.city", error.getAbsolutePath());
@@ -324,8 +344,8 @@
     assertEquals("address.city.bogus3", error.getPath());
     assertSame(e5, error.getUserData());
     assertSame(null, error.getValue());
-    assertSame(editor.addressEditor.city, error.getEditor());    
-    
+    assertSame(editor.addressEditor.city, error.getEditor());
+
     error = list.get(7);
     assertEquals("msg7", error.getMessage());
     assertEquals(".", error.getAbsolutePath());
@@ -335,6 +355,46 @@
     assertSame(editor, error.getEditor());
   }
 
+  /**
+   * Test for IndexOutOfBoundsException in getPath() when called on a leaf editor error display.
+   *
+   *  The external bug report: http://code.google.com/p/google-web-toolkit/issues/detail?id=5589
+   */
+  public void testSamePathHasError() {
+    PersonEditorReceivesErrors editor = new PersonEditorReceivesErrors();
+    AddressEditorReceivesErrors addressEditor = new AddressEditorReceivesErrors();
+    editor.addressEditor = addressEditor;
+
+    Address a = new Address();
+    Person p = new Person();
+    p.address = a;
+
+    PersonEditorDriver driver = GWT.create(PersonEditorDriver.class);
+    driver.initialize(editor);
+    driver.edit(p);
+    driver.flush();
+
+    driver.setConstraintViolations(
+        Arrays.<ConstraintViolation<?>>asList(createViolation("samePathError", p, "address")));
+    assertEquals(0, driver.getErrors().size());
+
+    assertEquals(0, editor.errors.size());
+
+
+    List<EditorError> list = addressEditor.errors;
+    assertNotNull(list);
+    assertEquals(1, list.size());
+
+    EditorError error = list.get(0);
+    assertNotNull(error);
+    assertEquals("address", error.getAbsolutePath());
+    assertEquals("samePathError", error.getMessage());
+    assertEquals("", error.getPath());
+    assertNotNull(error.getUserData());
+    assertSame(a, error.getValue());
+    assertSame(addressEditor, error.getEditor());
+  }
+
   private <T> ConstraintViolation<T> createViolation(
       String msg, T rootBean, final String path) {
     return new ConstraintViolationImpl.Builder<T>()
diff --git a/user/test/com/google/gwt/editor/client/adapters/HasDataEditorTest.java b/user/test/com/google/gwt/editor/client/adapters/HasDataEditorTest.java
index 9e400fa..8a5481e 100644
--- a/user/test/com/google/gwt/editor/client/adapters/HasDataEditorTest.java
+++ b/user/test/com/google/gwt/editor/client/adapters/HasDataEditorTest.java
@@ -16,6 +16,8 @@
 package com.google.gwt.editor.client.adapters;
 
 import com.google.gwt.core.client.GWT;
+import com.google.gwt.editor.client.EditorContext;
+import com.google.gwt.editor.client.EditorVisitor;
 import com.google.gwt.editor.client.SimpleBeanEditorDriver;
 import com.google.gwt.event.shared.GwtEvent;
 import com.google.gwt.event.shared.HandlerRegistration;
@@ -205,6 +207,26 @@
     assertEquals(expectedValue, editor.getList());
     assertEquals(expectedValue, hasData.getRowData());
   }
+  
+  /**
+   * See <a href="http://code.google.com/p/google-web-toolkit/issues/detail?id=6959">issue 6959</a>
+   */
+  public void testTraverseSyntheticCompositeEditor() {
+    List<Integer> expectedValue = Arrays.asList(1, 2, 3, 4, 5);
+
+    EditorVisitor visitor = new SyntheticVisitor();
+
+    // check that it won't throw
+    driver.accept(visitor);
+
+    driver.edit(expectedValue);
+
+    // Shouldn't affect the editor and HasData
+    driver.accept(visitor);
+
+    assertEquals(expectedValue, editor.getList());
+    assertEquals(expectedValue, hasData.getRowData());
+  }
 
   @Override
   protected void gwtSetUp() throws Exception {
@@ -213,4 +235,14 @@
     driver = GWT.create(HasDataEditorDriver.class);
     driver.initialize(editor);
   }
+
+  /** A visitor that visits synthetic composite editors. */
+  private static class SyntheticVisitor extends EditorVisitor {
+    public <T> boolean visit(EditorContext<T> ctx) {
+      if (ctx.asCompositeEditor() != null) {
+        ctx.traverseSyntheticCompositeEditor(this);
+      }
+      return true;
+    }
+  }
 }
diff --git a/user/test/com/google/gwt/emultest/java/lang/DoubleTest.java b/user/test/com/google/gwt/emultest/java/lang/DoubleTest.java
index ac9adb3..c5a6cc7 100644
--- a/user/test/com/google/gwt/emultest/java/lang/DoubleTest.java
+++ b/user/test/com/google/gwt/emultest/java/lang/DoubleTest.java
@@ -23,6 +23,7 @@
  */
 public class DoubleTest extends GWTTestCase {
 
+  @Override
   public String getModuleName() {
     return "com.google.gwt.emultest.EmulSuite";
   }
@@ -77,7 +78,7 @@
       // Expected behavior
     }
   }
-  
+
   public void testCompare() {
     assertTrue(Double.compare(Double.NaN, Double.NaN) == 0);
     assertTrue(Double.compare(0.0, Double.NaN) < 0);
@@ -88,14 +89,14 @@
     assertTrue(Double.compare(500.0, 3.0) > 0);
     assertTrue(Double.compare(500.0, 500.0) == 0);
   }
-  
+
   public void testCompareTo() {
     Double zero = new Double(0.0);
     Double three = new Double(3.0);
     Double fiveHundred = new Double(500.0);
     Double infinity = new Double(Double.POSITIVE_INFINITY);
     Double nan = new Double(Double.NaN);
-    
+
     assertTrue(nan.compareTo(nan) == 0);
     assertTrue(zero.compareTo(nan) < 0);
     assertTrue(nan.compareTo(infinity) > 0);
@@ -136,7 +137,7 @@
     assertTrue(
         "Can't parse MAX_VALUE",
         Double.MAX_VALUE == Double.parseDouble(String.valueOf(Double.MAX_VALUE)));
-    
+
     // Test that leading and trailing whitespace is ignored
     // Test that both 'e' and 'E' may be used as the exponent delimiter
     assertTrue(2.56789e1 == Double.parseDouble("2.56789e1"));
@@ -151,12 +152,47 @@
     assertTrue(-2.56789e1 == Double.parseDouble("  -2.56789E1"));
     assertTrue(-2.56789e1 == Double.parseDouble("-2.56789e+01   "));
     assertTrue(-2.56789e1 == Double.parseDouble("   -2.56789E1   "));
-    
+
     // Test that a float/double type suffix is allowed
     assertEquals(1.0d, Double.parseDouble("1.0f"), 0.0);
     assertEquals(1.0d, Double.parseDouble("1.0F"), 0.0);
     assertEquals(1.0d, Double.parseDouble("1.0d"), 0.0);
     assertEquals(1.0d, Double.parseDouble("1.0D"), 0.0);
+
+    // Test NaN/Infinity - issue 7713
+    assertTrue(Double.isNaN(Double.parseDouble("+NaN")));
+    assertTrue(Double.isNaN(Double.parseDouble("NaN")));
+    assertTrue(Double.isNaN(Double.parseDouble("-NaN")));
+    assertEquals(Double.POSITIVE_INFINITY, Double.parseDouble("+Infinity"));
+    assertEquals(Double.POSITIVE_INFINITY, Double.parseDouble("Infinity"));
+    assertEquals(Double.NEGATIVE_INFINITY, Double.parseDouble("-Infinity"));
+
+    // check for parsing some invalid values
+    try {
+      Double.parseDouble("nan");
+      fail("Expected NumberFormatException");
+    } catch (NumberFormatException expected) {
+    }
+    try {
+      Double.parseDouble("infinity");
+      fail("Expected NumberFormatException");
+    } catch (NumberFormatException expected) {
+    }
+    try {
+      Double.parseDouble("1.2.3");
+      fail("Expected NumberFormatException");
+    } catch (NumberFormatException expected) {
+    }
+    try {
+      Double.parseDouble("+-1.2");
+      fail("Expected NumberFormatException");
+    } catch (NumberFormatException expected) {
+    }
+    try {
+      Double.parseDouble("1e");
+      fail("Expected NumberFormatException");
+    } catch (NumberFormatException expected) {
+    }
   }
 
   public void testDoubleBits() {
diff --git a/user/test/com/google/gwt/emultest/java/lang/FloatTest.java b/user/test/com/google/gwt/emultest/java/lang/FloatTest.java
index 7c2b559..15c6718 100644
--- a/user/test/com/google/gwt/emultest/java/lang/FloatTest.java
+++ b/user/test/com/google/gwt/emultest/java/lang/FloatTest.java
@@ -93,6 +93,41 @@
 //        Float.parseFloat(String.valueOf(Float.MAX_VALUE)), 1e31);
 //    assertEquals("Can't parse MIN_VALUE", Float.MIN_VALUE,
 //        Float.parseFloat(String.valueOf(Float.MIN_VALUE)), Float.MIN_VALUE);
+
+    // Test NaN/Infinity - issue 7713
+    assertTrue(Float.isNaN(Float.parseFloat("+NaN")));
+    assertTrue(Float.isNaN(Float.parseFloat("NaN")));
+    assertTrue(Float.isNaN(Float.parseFloat("-NaN")));
+    assertEquals(Float.POSITIVE_INFINITY, Float.parseFloat("+Infinity"));
+    assertEquals(Float.POSITIVE_INFINITY, Float.parseFloat("Infinity"));
+    assertEquals(Float.NEGATIVE_INFINITY, Float.parseFloat("-Infinity"));
+
+    // check for parsing some invalid values
+    try {
+      Float.parseFloat("nan");
+      fail("Expected NumberFormatException");
+    } catch (NumberFormatException expected) {
+    }
+    try {
+      Float.parseFloat("infinity");
+      fail("Expected NumberFormatException");
+    } catch (NumberFormatException expected) {
+    }
+    try {
+      Float.parseFloat("1.2.3");
+      fail("Expected NumberFormatException");
+    } catch (NumberFormatException expected) {
+    }
+    try {
+      Float.parseFloat("+-1.2");
+      fail("Expected NumberFormatException");
+    } catch (NumberFormatException expected) {
+    }
+    try {
+      Float.parseFloat("1e");
+      fail("Expected NumberFormatException");
+    } catch (NumberFormatException expected) {
+    }
   }
 
   public void testFloatBits() {
diff --git a/user/test/com/google/gwt/emultest/java/lang/LongTest.java b/user/test/com/google/gwt/emultest/java/lang/LongTest.java
index c307636..f1124f6 100644
--- a/user/test/com/google/gwt/emultest/java/lang/LongTest.java
+++ b/user/test/com/google/gwt/emultest/java/lang/LongTest.java
@@ -93,6 +93,9 @@
     assertEquals(100000000000L, Long.parseLong("100000000000"));
     assertEquals(-100000000000L, Long.parseLong("-100000000000"));
     assertEquals(10L, Long.parseLong("010"));
+    assertEquals(Long.MAX_VALUE, Long.parseLong("" + Long.MAX_VALUE));
+    // Issue 7308
+    assertEquals(Long.MIN_VALUE, Long.parseLong("" + Long.MIN_VALUE));
     try {
       Long.parseLong("10L");
       fail("expected NumberFormatException");
diff --git a/user/test/com/google/gwt/emultest/java/lang/StringTest.java b/user/test/com/google/gwt/emultest/java/lang/StringTest.java
index 2266c08..07b4ebb 100644
--- a/user/test/com/google/gwt/emultest/java/lang/StringTest.java
+++ b/user/test/com/google/gwt/emultest/java/lang/StringTest.java
@@ -424,18 +424,27 @@
     assertEquals("", "".toLowerCase());
   }
 
-  /*
-   * TODO: needs rewriting to avoid compiler optimizations.
-   */
   public void testMatch() {
-    assertFalse("1f", "abbbbcd".matches("b*"));
-    assertFalse("2f", "abbbbcd".matches("b+"));
-    assertTrue("3t", "abbbbcd".matches("ab*bcd"));
-    assertTrue("4t", "abbbbcd".matches("ab+cd"));
-    assertTrue("5t", "abbbbcd".matches("ab+bcd"));
-    assertFalse("6f", "abbbbcd".matches(""));
-    assertTrue("7t", "abbbbcd".matches("a.*d"));
-    assertFalse("8f", "abbbbcd".matches("a.*e"));
+    assertFalse("1f", hideFromCompiler("abbbbcd").matches("b*"));
+    assertFalse("2f", hideFromCompiler("abbbbcd").matches("b+"));
+    assertTrue("3t", hideFromCompiler("abbbbcd").matches("ab*bcd"));
+    assertTrue("4t", hideFromCompiler("abbbbcd").matches("ab+cd"));
+    assertTrue("5t", hideFromCompiler("abbbbcd").matches("ab+bcd"));
+    assertFalse("6f", hideFromCompiler("abbbbcd").matches(""));
+    assertTrue("7t", hideFromCompiler("abbbbcd").matches("a.*d"));
+    assertFalse("8f", hideFromCompiler("abbbbcd").matches("a.*e"));
+    // issue #7736
+    assertTrue("9t.1", hideFromCompiler("").matches("(|none)"));
+    assertTrue("9t.2", hideFromCompiler("none").matches("(|none)"));
+    assertFalse("9f.1", hideFromCompiler("ab").matches("(|none)"));
+    assertFalse("9f.2", hideFromCompiler("anoneb").matches("(|none)"));
+    assertTrue("10t", hideFromCompiler("none").matches("^(|none)$"));
+    assertFalse("10f", hideFromCompiler("abbbbcd").matches("^b*$"));
+    assertTrue("11t.1", hideFromCompiler("").matches("|none"));
+    assertTrue("11t.2", hideFromCompiler("none").matches("|none"));
+    assertFalse("11f.1", hideFromCompiler("ab").matches("|none"));
+    assertFalse("11f.2", hideFromCompiler("anoneb").matches("|none"));
+    assertTrue("12t", hideFromCompiler("none").matches("^|none$"));
   }
 
   /*
diff --git a/user/test/com/google/gwt/emultest/java/math/BigDecimalArithmeticTest.java b/user/test/com/google/gwt/emultest/java/math/BigDecimalArithmeticTest.java
index 981e59a..f3b4a3d 100644
--- a/user/test/com/google/gwt/emultest/java/math/BigDecimalArithmeticTest.java
+++ b/user/test/com/google/gwt/emultest/java/math/BigDecimalArithmeticTest.java
@@ -626,7 +626,7 @@
     BigDecimal aNumber = new BigDecimal(new BigInteger(a), aScale);
     BigDecimal bNumber = BigDecimal.valueOf(0L);
     try {
-      aNumber.divide(bNumber);
+      aNumber = aNumber.divide(bNumber);
       fail("ArithmeticException has not been caught");
     } catch (ArithmeticException e) {
       assertEquals("Improper exception message", "Division by zero",
@@ -645,7 +645,7 @@
     BigDecimal aNumber = new BigDecimal(new BigInteger(a), aScale);
     BigDecimal bNumber = new BigDecimal(new BigInteger(b), bScale);
     try {
-      aNumber.divide(bNumber, 100);
+      aNumber = aNumber.divide(bNumber, 100);
       fail("IllegalArgumentException has not been caught");
     } catch (IllegalArgumentException e) {
       assertEquals("Improper exception message", "Invalid rounding mode",
@@ -664,7 +664,7 @@
     BigDecimal aNumber = new BigDecimal(new BigInteger(a), aScale);
     BigDecimal bNumber = new BigDecimal(new BigInteger(b), bScale);
     try {
-      aNumber.divide(bNumber, BigDecimal.ROUND_UNNECESSARY);
+      aNumber = aNumber.divide(bNumber, BigDecimal.ROUND_UNNECESSARY);
       fail("ArithmeticException has not been caught");
     } catch (ArithmeticException e) {
       assertEquals("Improper exception message", "Rounding necessary",
@@ -735,7 +735,7 @@
     BigDecimal arg1 = new BigDecimal("320.0E+2147483647");
     BigDecimal arg2 = new BigDecimal("6E-2147483647");
     try {
-      arg1.divide(arg2, Integer.MAX_VALUE, RoundingMode.CEILING);
+      arg1 = arg1.divide(arg2, Integer.MAX_VALUE, RoundingMode.CEILING);
       fail("Expected ArithmeticException when dividing with a scale that's too large");
     } catch (ArithmeticException e) {
       // expected behaviour
@@ -1523,17 +1523,20 @@
     
     // 1 digit left of dp, 14 scale + 1
     val = BigDecimal.valueOf(5.43445663479765);
-    val.setScale(val.scale() + 1, RoundingMode.CEILING).round(new
+    val =
+        val.setScale(val.scale() + 1, RoundingMode.CEILING).round(new
         MathContext(1, RoundingMode.CEILING));
 
      // 1 digit left of dp, 13 scale + 2
     val = BigDecimal.valueOf(5.4344566347976);
-    val.setScale(val.scale() + 2, RoundingMode.CEILING).round(new
+    val =
+        val.setScale(val.scale() + 2, RoundingMode.CEILING).round(new
         MathContext(1, RoundingMode.CEILING));
     
     // 2 digits left of dp, 13 scale + 2
     BigDecimal test = BigDecimal.valueOf(12.4344566347976);
-    test.setScale(test.scale() + 1, RoundingMode.CEILING).round(new
+    test =
+        test.setScale(test.scale() + 1, RoundingMode.CEILING).round(new
         MathContext(1, RoundingMode.CEILING));
   }
 
diff --git a/user/test/com/google/gwt/emultest/java/math/BigDecimalCompareTest.java b/user/test/com/google/gwt/emultest/java/math/BigDecimalCompareTest.java
index 794309e..474ce3a 100644
--- a/user/test/com/google/gwt/emultest/java/math/BigDecimalCompareTest.java
+++ b/user/test/com/google/gwt/emultest/java/math/BigDecimalCompareTest.java
@@ -248,6 +248,23 @@
   }
 
   /**
+   * Test identical fraction values with different scales.
+   * http://code.google.com/p/google-web-toolkit/issues/detail?id=7834
+   */
+  public void testFractionScale() {
+    BigDecimal a = new BigDecimal("0.02");
+    BigDecimal b = new BigDecimal("0.02000");
+    assertEquals(0, a.compareTo(b));
+
+    BigDecimal a1 = new BigDecimal("0.029900000000000003");
+    BigDecimal a2 = new BigDecimal("0.0001");
+    a = a1.add(a2);
+    // a is 0.030000000000000003 (0.029900000000000003 + 0.0001)
+    b = new BigDecimal("0.03990");
+    assertEquals(-1, a.compareTo(b));
+  }
+
+  /**
    * hashCode() for equal BigDecimals.
    */
   public void testHashCodeEqual() {
diff --git a/user/test/com/google/gwt/emultest/java/math/BigDecimalConstructorsTest.java b/user/test/com/google/gwt/emultest/java/math/BigDecimalConstructorsTest.java
index aa5765c..15bdee8 100644
--- a/user/test/com/google/gwt/emultest/java/math/BigDecimalConstructorsTest.java
+++ b/user/test/com/google/gwt/emultest/java/math/BigDecimalConstructorsTest.java
@@ -687,11 +687,19 @@
   }
 
   /**
-   * Test second failing example in gwt-java-math issue 4.
+   * Test second failing example in gwt-java-math issue 4 and variations
+   * to validate that precision is calculated correctly when leading zeros
+   * and minus signs are present.
    */
   public void testConstrStringWithLeadingZeros() {
-    BigDecimal value = new BigDecimal("-000.1");
-    assertEquals("bad precision", 1, value.precision());
+    assertEquals("bad precision", 1, new BigDecimal("-000.1").precision());
+    assertEquals("bad precision", 4, new BigDecimal("001234").precision());
+    assertEquals("bad precision", 4, new BigDecimal("-5555").precision());
+    assertEquals("bad precision", 1, new BigDecimal("0").precision());
+    assertEquals("bad precision", 1, new BigDecimal("-0").precision());
+    assertEquals("bad precision", 4, new BigDecimal("001234e3").precision());
+    assertEquals("bad precision", 5, new BigDecimal("00056789e+17").precision());
+    assertEquals("bad precision", 6, new BigDecimal("0900000e-42").precision());
   }
 
   /**
diff --git a/user/test/com/google/gwt/emultest/java/math/BigDecimalConvertTest.java b/user/test/com/google/gwt/emultest/java/math/BigDecimalConvertTest.java
index 0547078..5f5dd96 100644
--- a/user/test/com/google/gwt/emultest/java/math/BigDecimalConvertTest.java
+++ b/user/test/com/google/gwt/emultest/java/math/BigDecimalConvertTest.java
@@ -512,6 +512,7 @@
   /**
    * valueOf(Double.NaN).
    */
+  @SuppressWarnings("ReturnValueIgnored")
   public void testValueOfDoubleNaN() {
     double a = Double.NaN;
     try {
diff --git a/user/test/com/google/gwt/emultest/java/math/BigDecimalScaleOperationsTest.java b/user/test/com/google/gwt/emultest/java/math/BigDecimalScaleOperationsTest.java
index 5323bc7..e1b45fb 100644
--- a/user/test/com/google/gwt/emultest/java/math/BigDecimalScaleOperationsTest.java
+++ b/user/test/com/google/gwt/emultest/java/math/BigDecimalScaleOperationsTest.java
@@ -143,7 +143,7 @@
     int newScale = 18;
     BigDecimal aNumber = new BigDecimal(new BigInteger(a), aScale);
     try {
-      aNumber.setScale(newScale);
+      aNumber = aNumber.setScale(newScale);
       fail("ArithmeticException has not been caught");
     } catch (ArithmeticException e) {
       assertEquals("Improper exception message", "Rounding necessary",
@@ -357,7 +357,7 @@
     int shift = -18;
     BigDecimal aNumber = new BigDecimal(new BigInteger(a), aScale);
     try {
-      aNumber.movePointRight(shift);
+      aNumber = aNumber.movePointRight(shift);
       fail("ArithmeticException has not been caught");
     } catch (ArithmeticException e) {
       assertEquals("Improper exception message", "Underflow", e.getMessage());
diff --git a/user/test/com/google/gwt/emultest/java/math/BigIntegerDivideTest.java b/user/test/com/google/gwt/emultest/java/math/BigIntegerDivideTest.java
index 1e119cb..37f569f 100644
--- a/user/test/com/google/gwt/emultest/java/math/BigIntegerDivideTest.java
+++ b/user/test/com/google/gwt/emultest/java/math/BigIntegerDivideTest.java
@@ -57,7 +57,7 @@
     BigInteger aNumber = new BigInteger(aSign, aBytes);
     BigInteger bNumber = new BigInteger(bSign, bBytes);
     try {
-      aNumber.divide(bNumber);
+      aNumber = aNumber.divide(bNumber);
       fail("ArithmeticException has not been caught");
     } catch (ArithmeticException e) {
       assertEquals("Improper exception message", "BigInteger divide by zero",
@@ -168,7 +168,7 @@
     BigInteger aNumber = new BigInteger(aSign, aBytes);
     BigInteger bNumber = new BigInteger(bSign, bBytes);
     try {
-      aNumber.remainder(bNumber);
+      aNumber = aNumber.remainder(bNumber);
       fail("ArithmeticException has not been caught");
     } catch (ArithmeticException e) {
       assertEquals("Improper exception message", "BigInteger divide by zero",
@@ -266,7 +266,7 @@
     BigInteger aNumber = new BigInteger(aSign, aBytes);
     BigInteger bNumber = BigInteger.ZERO;
     try {
-      aNumber.divide(bNumber);
+      aNumber = aNumber.divide(bNumber);
       fail("ArithmeticException has not been caught");
     } catch (ArithmeticException e) {
       assertEquals("Improper exception message", "BigInteger divide by zero",
@@ -336,7 +336,7 @@
     BigInteger aNumber = new BigInteger(aSign, aBytes);
     BigInteger bNumber = new BigInteger(bSign, bBytes);
     try {
-      aNumber.mod(bNumber);
+      aNumber = aNumber.mod(bNumber);
       fail("ArithmeticException has not been caught");
     } catch (ArithmeticException e) {
       assertEquals("Improper exception message",
diff --git a/user/test/com/google/gwt/emultest/java/math/BigIntegerHashCodeTest.java b/user/test/com/google/gwt/emultest/java/math/BigIntegerHashCodeTest.java
index a107b6b..33bda42 100644
--- a/user/test/com/google/gwt/emultest/java/math/BigIntegerHashCodeTest.java
+++ b/user/test/com/google/gwt/emultest/java/math/BigIntegerHashCodeTest.java
@@ -63,6 +63,7 @@
   /**
    * Test hash codes for the same object.
    */
+  @SuppressWarnings("ReturnValueIgnored")
   public void testSameObject() {
     String value1 = "12378246728727834290276457386374882976782849";
     String value2 = "-5634562095872038262928728727834290276457386374882976782849";
diff --git a/user/test/com/google/gwt/emultest/java/math/BigIntegerModPowTest.java b/user/test/com/google/gwt/emultest/java/math/BigIntegerModPowTest.java
index ce676ff..96fb58f 100644
--- a/user/test/com/google/gwt/emultest/java/math/BigIntegerModPowTest.java
+++ b/user/test/com/google/gwt/emultest/java/math/BigIntegerModPowTest.java
@@ -173,7 +173,7 @@
     BigInteger aNumber = new BigInteger(aSign, aBytes);
     BigInteger modulus = new BigInteger(mSign, mBytes);
     try {
-      aNumber.modInverse(modulus);
+      aNumber = aNumber.modInverse(modulus);
       fail("ArithmeticException has not been caught");
     } catch (ArithmeticException e) {
       assertEquals("Improper exception message",
@@ -234,7 +234,7 @@
     BigInteger aNumber = new BigInteger(aSign, aBytes);
     BigInteger modulus = new BigInteger(mSign, mBytes);
     try {
-      aNumber.modInverse(modulus);
+      aNumber = aNumber.modInverse(modulus);
       fail("ArithmeticException has not been caught");
     } catch (ArithmeticException e) {
       assertEquals("Improper exception message", "BigInteger not invertible.",
@@ -299,7 +299,7 @@
     BigInteger exp = new BigInteger(eSign, eBytes);
     BigInteger modulus = new BigInteger(mSign, mBytes);
     try {
-      aNumber.modPow(exp, modulus);
+      aNumber = aNumber.modPow(exp, modulus);
       fail("ArithmeticException has not been caught");
     } catch (ArithmeticException e) {
       assertEquals("Improper exception message",
diff --git a/user/test/com/google/gwt/emultest/java/math/BigIntegerMultiplyTest.java b/user/test/com/google/gwt/emultest/java/math/BigIntegerMultiplyTest.java
index 06157f4..c9d9eac 100644
--- a/user/test/com/google/gwt/emultest/java/math/BigIntegerMultiplyTest.java
+++ b/user/test/com/google/gwt/emultest/java/math/BigIntegerMultiplyTest.java
@@ -303,7 +303,7 @@
     int exp = -5;
     BigInteger aNumber = new BigInteger(aSign, aBytes);
     try {
-      aNumber.pow(exp);
+      aNumber = aNumber.pow(exp);
       fail("ArithmeticException has not been caught");
     } catch (ArithmeticException e) {
       assertEquals("Improper exception message", "Negative exponent",
diff --git a/user/test/com/google/gwt/emultest/java/math/BigIntegerOperateBitsTest.java b/user/test/com/google/gwt/emultest/java/math/BigIntegerOperateBitsTest.java
index 9ef9e27..6e6d3a8 100644
--- a/user/test/com/google/gwt/emultest/java/math/BigIntegerOperateBitsTest.java
+++ b/user/test/com/google/gwt/emultest/java/math/BigIntegerOperateBitsTest.java
@@ -149,7 +149,7 @@
     int number = -7;
     BigInteger aNumber = new BigInteger(aSign, aBytes);
     try {
-      aNumber.clearBit(number);
+      aNumber = aNumber.clearBit(number);
       fail("ArithmeticException has not been caught");
     } catch (ArithmeticException e) {
       assertEquals("Improper exception message", "Negative bit address",
@@ -459,7 +459,7 @@
     int number = -7;
     BigInteger aNumber = new BigInteger(aSign, aBytes);
     try {
-      aNumber.flipBit(number);
+      aNumber = aNumber.flipBit(number);
       fail("ArithmeticException has not been caught");
     } catch (ArithmeticException e) {
       assertEquals("Improper exception message", "Negative bit address",
@@ -768,7 +768,7 @@
     int number = -7;
     BigInteger aNumber = new BigInteger(aSign, aBytes);
     try {
-      aNumber.setBit(number);
+      aNumber = aNumber.setBit(number);
       fail("ArithmeticException has not been caught");
     } catch (ArithmeticException e) {
       assertEquals("Improper exception message", "Negative bit address",
diff --git a/user/test/com/google/gwt/emultest/java/util/ComparatorTest.java b/user/test/com/google/gwt/emultest/java/util/ComparatorTest.java
index 939e75e..e46d534 100644
--- a/user/test/com/google/gwt/emultest/java/util/ComparatorTest.java
+++ b/user/test/com/google/gwt/emultest/java/util/ComparatorTest.java
@@ -25,12 +25,12 @@
  * TODO: document me.
  */
 public class ComparatorTest extends TestComparator {
-  public Comparator makeComparator() {
+  public Comparator<Object> makeComparator() {
     return new DummyComparator();
   }
 
-  public List getComparableObjectsOrdered() {
-    List l = new ArrayList();
+  public List<Object> getComparableObjectsOrdered() {
+    List<Object> l = new ArrayList<Object>();
     l.add("x");
     l.add("y");
     l.add("z");
@@ -41,7 +41,7 @@
 /**
  * List comparator for testing.
  */
-class DummyComparator implements Comparator {
+class DummyComparator implements Comparator<Object> {
   /**
    * Compares returns reverse hash order.
    */
diff --git a/user/test/com/google/gwt/emultest/java/util/HashMapTest.java b/user/test/com/google/gwt/emultest/java/util/HashMapTest.java
index 2f7be81..2b78350 100644
--- a/user/test/com/google/gwt/emultest/java/util/HashMapTest.java
+++ b/user/test/com/google/gwt/emultest/java/util/HashMapTest.java
@@ -25,12 +25,10 @@
 import java.util.Map;
 import java.util.NoSuchElementException;
 import java.util.Set;
-import java.util.Map.Entry;
 
 /**
  * Tests <code>HashMap</code>.
  */
-@SuppressWarnings("unchecked")
 public class HashMapTest extends TestMap {
   private static final int CAPACITY_16 = 16;
   private static final int CAPACITY_NEG_ONE_HALF = -1;
@@ -90,7 +88,7 @@
   private static final String VALUE_TEST_REMOVE = KEY_TEST_REMOVE + " - value";
   private static final String VALUE_VAL = "value";
 
-  private static void assertEmptyIterator(Iterator it) {
+  private static void assertEmptyIterator(Iterator<?> it) {
     assertNotNull(it);
     assertFalse(it.hasNext());
     try {
@@ -105,7 +103,7 @@
    * 
    * @param hashMap
    */
-  private static void checkEmptyHashMapAssumptions(HashMap hashMap) {
+  private static void checkEmptyHashMapAssumptions(HashMap<?, ?> hashMap) {
     assertNotNull(hashMap);
     assertTrue(hashMap.isEmpty());
 
@@ -130,7 +128,7 @@
   }
 
   public void testAddEqualKeys() {
-    final HashMap expected = new HashMap();
+    final HashMap<Number, Object> expected = new HashMap<Number, Object>();
     assertEquals(expected.size(), 0);
     iterateThrough(expected);
     expected.put(new Long(45), new Object());
@@ -143,7 +141,7 @@
   }
 
   public void testAddWatch() {
-    HashMap m = new HashMap();
+    HashMap<String, String> m = new HashMap<String, String>();
     m.put("watch", "watch");
     assertEquals(m.get("watch"), "watch");
   }
@@ -152,7 +150,7 @@
    * Test method for 'java.util.HashMap.clear()'
    */
   public void testClear() {
-    HashMap hashMap = new HashMap();
+    HashMap<String, String> hashMap = new HashMap<String, String>();
     checkEmptyHashMapAssumptions(hashMap);
 
     hashMap.put("Hello", "Bye");
@@ -168,11 +166,10 @@
    * Test method for 'java.util.HashMap.clone()'
    */
   public void testClone() {
-    HashMap srcMap = new HashMap();
+    HashMap<String, String> srcMap = new HashMap<String, String>();
     checkEmptyHashMapAssumptions(srcMap);
 
-    // Check empty clone behavior
-    HashMap dstMap = (HashMap) srcMap.clone();
+    HashMap<String, String> dstMap = cloneMap(srcMap);
     assertNotNull(dstMap);
     assertEquals(dstMap.size(), srcMap.size());
     // assertTrue(dstMap.values().toArray().equals(srcMap.values().toArray()));
@@ -183,7 +180,7 @@
     srcMap.put(KEY_1, VALUE_1);
     srcMap.put(KEY_2, VALUE_2);
     srcMap.put(KEY_3, VALUE_3);
-    dstMap = (HashMap) srcMap.clone();
+    dstMap = cloneMap(srcMap);
     assertNotNull(dstMap);
     assertEquals(dstMap.size(), srcMap.size());
 
@@ -196,7 +193,7 @@
    * Test method for 'java.util.HashMap.containsKey(Object)'
    */
   public void testContainsKey() {
-    HashMap hashMap = new HashMap();
+    HashMap<String, Integer> hashMap = new HashMap<String, Integer>();
     checkEmptyHashMapAssumptions(hashMap);
 
     assertFalse(hashMap.containsKey(KEY_TEST_CONTAINS_KEY));
@@ -213,7 +210,7 @@
    * Test method for 'java.util.HashMap.containsValue(Object)'
    */
   public void testContainsValue() {
-    HashMap hashMap = new HashMap();
+    HashMap<String, Integer> hashMap = new HashMap<String, Integer>();
     checkEmptyHashMapAssumptions(hashMap);
 
     assertFalse("check contains of empty map",
@@ -233,18 +230,18 @@
    * Test method for 'java.util.HashMap.entrySet()'
    */
   public void testEntrySet() {
-    HashMap hashMap = new HashMap();
+    HashMap<String, String> hashMap = new HashMap<String, String>();
     checkEmptyHashMapAssumptions(hashMap);
 
-    Set entrySet = hashMap.entrySet();
+    Set<Map.Entry<String, String>> entrySet = hashMap.entrySet();
     assertNotNull(entrySet);
 
     // Check that the entry set looks right
     hashMap.put(KEY_TEST_ENTRY_SET, VALUE_TEST_ENTRY_SET_1);
     entrySet = hashMap.entrySet();
     assertEquals(entrySet.size(), SIZE_ONE);
-    Iterator itSet = entrySet.iterator();
-    Map.Entry entry = (Map.Entry) itSet.next();
+    Iterator<Map.Entry<String, String>> itSet = entrySet.iterator();
+    Map.Entry<String, String> entry = itSet.next();
     assertEquals(entry.getKey(), KEY_TEST_ENTRY_SET);
     assertEquals(entry.getValue(), VALUE_TEST_ENTRY_SET_1);
     assertEmptyIterator(itSet);
@@ -254,7 +251,7 @@
     entrySet = hashMap.entrySet();
     assertEquals(entrySet.size(), SIZE_ONE);
     itSet = entrySet.iterator();
-    entry = (Map.Entry) itSet.next();
+    entry = itSet.next();
     assertEquals(entry.getKey(), KEY_TEST_ENTRY_SET);
     assertEquals(entry.getValue(), VALUE_TEST_ENTRY_SET_2);
     assertEmptyIterator(itSet);
@@ -268,16 +265,16 @@
    * Used to test the entrySet entry's set method.
    */
   public void testEntrySetEntrySetterNonString() {
-    HashMap hashMap = new HashMap();
+    HashMap<Integer, Integer> hashMap = new HashMap<Integer, Integer>();
     hashMap.put(1, 2);
-    Set entrySet = hashMap.entrySet();
-    Entry entry = (Entry) entrySet.iterator().next();
+    Set<Map.Entry<Integer, Integer>> entrySet = hashMap.entrySet();
+    Map.Entry<Integer, Integer> entry = entrySet.iterator().next();
 
     entry.setValue(3);
-    assertEquals(3, hashMap.get(1));
+    assertEquals(3, hashMap.get(1).intValue());
 
     hashMap.put(1, 4);
-    assertEquals(4, entry.getValue());
+    assertEquals(4, entry.getValue().intValue());
 
     assertEquals(1, hashMap.size());
   }
@@ -286,16 +283,16 @@
    * Used to test the entrySet entry's set method.
    */
   public void testEntrySetEntrySetterNull() {
-    HashMap hashMap = new HashMap();
+    HashMap<String, Integer> hashMap = new HashMap<String, Integer>();
     hashMap.put(null, 2);
-    Set entrySet = hashMap.entrySet();
-    Entry entry = (Entry) entrySet.iterator().next();
+    Set<Map.Entry<String, Integer>> entrySet = hashMap.entrySet();
+    Map.Entry<String, Integer> entry = entrySet.iterator().next();
 
     entry.setValue(3);
-    assertEquals(3, hashMap.get(null));
+    assertEquals(3, hashMap.get(null).intValue());
 
     hashMap.put(null, 4);
-    assertEquals(4, entry.getValue());
+    assertEquals(4, entry.getValue().intValue());
 
     assertEquals(1, hashMap.size());
   }
@@ -304,10 +301,10 @@
    * Used to test the entrySet entry's set method.
    */
   public void testEntrySetEntrySetterString() {
-    HashMap hashMap = new HashMap();
+    HashMap<String, String> hashMap = new HashMap<String, String>();
     hashMap.put("A", "B");
-    Set entrySet = hashMap.entrySet();
-    Entry entry = (Entry) entrySet.iterator().next();
+    Set<Map.Entry<String, String>> entrySet = hashMap.entrySet();
+    Map.Entry<String, String> entry = entrySet.iterator().next();
 
     entry.setValue("C");
     assertEquals("C", hashMap.get("A"));
@@ -322,12 +319,12 @@
    * Used to test the entrySet remove method.
    */
   public void testEntrySetRemove() {
-    HashMap hashMap = new HashMap();
+    HashMap<String, String> hashMap = new HashMap<String, String>();
     hashMap.put("A", "B");
-    HashMap dummy = new HashMap();
+    HashMap<String, String> dummy = new HashMap<String, String>();
     dummy.put("A", "b");
-    Entry bogus = (Entry) dummy.entrySet().iterator().next();
-    Set entrySet = hashMap.entrySet();
+    Map.Entry<String, String> bogus = dummy.entrySet().iterator().next();
+    Set<Map.Entry<String, String>> entrySet = hashMap.entrySet();
     boolean removed = entrySet.remove(bogus);
     assertEquals(removed, false);
     assertEquals(hashMap.get("A"), "B");
@@ -337,18 +334,23 @@
    * Test method for 'java.util.AbstractMap.equals(Object)'
    */
   public void testEquals() {
-    HashMap hashMap = new HashMap();
+    HashMap<String, String> hashMap = new HashMap<String, String>();
     checkEmptyHashMapAssumptions(hashMap);
 
     hashMap.put(KEY_KEY, VALUE_VAL);
 
-    HashMap copyMap = (HashMap) hashMap.clone();
+    HashMap<String, String> copyMap = cloneMap(hashMap);
 
     assertTrue(hashMap.equals(copyMap));
     hashMap.put(VALUE_VAL, KEY_KEY);
     assertFalse(hashMap.equals(copyMap));
   }
 
+  @SuppressWarnings("unchecked")
+  private HashMap<String, String> cloneMap(HashMap<String, String> hashMap) {
+    return (HashMap<String, String>) hashMap.clone();
+  }
+
   /*
    * Test method for 'java.lang.Object.finalize()'.
    */
@@ -360,7 +362,7 @@
    * Test method for 'java.util.HashMap.get(Object)'.
    */
   public void testGet() {
-    HashMap hashMap = new HashMap();
+    HashMap<String, String> hashMap = new HashMap<String, String>();
     checkEmptyHashMapAssumptions(hashMap);
 
     assertNull(hashMap.get(KEY_TEST_GET));
@@ -379,7 +381,7 @@
    * Test method for 'java.util.AbstractMap.hashCode()'.
    */
   public void testHashCode() {
-    HashMap hashMap = new HashMap();
+    HashMap<String, String> hashMap = new HashMap<String, String>();
     checkEmptyHashMapAssumptions(hashMap);
 
     // Check that hashCode changes
@@ -394,7 +396,7 @@
    * Test method for 'java.util.HashMap.HashMap()'.
    */
   public void testHashMap() {
-    HashMap hashMap = new HashMap();
+    HashMap<String, String> hashMap = new HashMap<String, String>();
     checkEmptyHashMapAssumptions(hashMap);
   }
 
@@ -402,13 +404,13 @@
    * Test method for 'java.util.HashMap.HashMap(int)'
    */
   public void testHashMapInt() {
-    HashMap hashMap = new HashMap(CAPACITY_16);
+    HashMap<String, String> hashMap = new HashMap<String, String>(CAPACITY_16);
     checkEmptyHashMapAssumptions(hashMap);
 
     // TODO(mmendez): how do we verify capacity?
     boolean failed = true;
     try {
-      new HashMap(-SIZE_ONE);
+      new HashMap<String, String>(-SIZE_ONE);
     } catch (Throwable ex) {
       if (ex instanceof IllegalArgumentException) {
         failed = false;
@@ -419,7 +421,7 @@
       fail("Failure testing new HashMap(-1)");
     }
 
-    HashMap zeroSizedHashMap = new HashMap(0);
+    HashMap<String, String> zeroSizedHashMap = new HashMap<String, String>(0);
     assertNotNull(zeroSizedHashMap);
   }
 
@@ -427,8 +429,8 @@
    * Test method for 'java.util.HashMap.HashMap(int, float)'
    */
   public void testHashMapIntFloat() {
-
-    HashMap hashMap = new HashMap(CAPACITY_16, LOAD_FACTOR_ONE_HALF);
+    HashMap<String, String> hashMap =
+        new HashMap<String, String>(CAPACITY_16, LOAD_FACTOR_ONE_HALF);
     checkEmptyHashMapAssumptions(hashMap);
 
     // TODO(mmendez): how do we verify capacity and load factor?
@@ -436,7 +438,7 @@
     // Test new HashMap(-1, 0.0F)
     boolean failed = true;
     try {
-      new HashMap(CAPACITY_NEG_ONE_HALF, LOAD_FACTOR_ZERO);
+      new HashMap<String, String>(CAPACITY_NEG_ONE_HALF, LOAD_FACTOR_ZERO);
     } catch (Throwable ex) {
       if (ex instanceof IllegalArgumentException) {
         failed = false;
@@ -450,7 +452,7 @@
     // Test new HashMap(0, -1.0F)
     failed = true;
     try {
-      new HashMap(CAPACITY_ZERO, LOAD_FACTOR_NEG_ONE);
+      new HashMap<String, String>(CAPACITY_ZERO, LOAD_FACTOR_NEG_ONE);
     } catch (Throwable ex) {
       if (ex instanceof IllegalArgumentException) {
         failed = false;
@@ -462,7 +464,7 @@
     }
 
     // Test new HashMap(0,0F);
-    hashMap = new HashMap(CAPACITY_ZERO, LOAD_FACTOR_ONE_TENTH);
+    hashMap = new HashMap<String, String>(CAPACITY_ZERO, LOAD_FACTOR_ONE_TENTH);
     assertNotNull(hashMap);
   }
 
@@ -470,7 +472,7 @@
    * Test method for 'java.util.HashMap.HashMap(Map)'
    */
   public void testHashMapMap() {
-    HashMap srcMap = new HashMap();
+    HashMap<Integer, Integer> srcMap = new HashMap<Integer, Integer>();
     assertNotNull(srcMap);
     checkEmptyHashMapAssumptions(srcMap);
 
@@ -478,16 +480,16 @@
     srcMap.put(INTEGER_2, INTEGER_22);
     srcMap.put(INTEGER_3, INTEGER_33);
 
-    HashMap hashMap = new HashMap(srcMap);
+    HashMap<Integer, Integer> hashMap = new HashMap<Integer, Integer>(srcMap);
     assertFalse(hashMap.isEmpty());
     assertTrue(hashMap.size() == SIZE_THREE);
 
-    Collection valColl = hashMap.values();
+    Collection<Integer> valColl = hashMap.values();
     assertTrue(valColl.contains(INTEGER_11));
     assertTrue(valColl.contains(INTEGER_22));
     assertTrue(valColl.contains(INTEGER_33));
 
-    Collection keyColl = hashMap.keySet();
+    Collection<Integer> keyColl = hashMap.keySet();
     assertTrue(keyColl.contains(INTEGER_1));
     assertTrue(keyColl.contains(INTEGER_2));
     assertTrue(keyColl.contains(INTEGER_3));
@@ -497,10 +499,10 @@
    * Test method for 'java.util.AbstractMap.isEmpty()'
    */
   public void testIsEmpty() {
-    HashMap srcMap = new HashMap();
+    HashMap<String, String> srcMap = new HashMap<String, String>();
     checkEmptyHashMapAssumptions(srcMap);
 
-    HashMap dstMap = new HashMap();
+    HashMap<String, String> dstMap = new HashMap<String, String>();
     checkEmptyHashMapAssumptions(dstMap);
 
     dstMap.putAll(srcMap);
@@ -515,7 +517,7 @@
   }
 
   public void testKeysConflict() {
-    HashMap hashMap = new HashMap();
+    HashMap<Object, String> hashMap = new HashMap<Object, String>();
 
     hashMap.put(STRING_ZERO_KEY, STRING_ZERO_VALUE);
     hashMap.put(INTEGER_ZERO_KEY, INTEGER_ZERO_VALUE);
@@ -542,10 +544,10 @@
    * Test method for 'java.util.HashMap.keySet()'
    */
   public void testKeySet() {
-    HashMap hashMap = new HashMap();
+    HashMap<String, String> hashMap = new HashMap<String, String>();
     checkEmptyHashMapAssumptions(hashMap);
 
-    Set keySet = hashMap.keySet();
+    Set<String> keySet = hashMap.keySet();
     assertNotNull(keySet);
     assertTrue(keySet.isEmpty());
     assertTrue(keySet.size() == 0);
@@ -589,7 +591,7 @@
    * Test method for 'java.util.HashMap.put(Object, Object)'
    */
   public void testPut() {
-    HashMap hashMap = new HashMap();
+    HashMap<String, String> hashMap = new HashMap<String, String>();
     checkEmptyHashMapAssumptions(hashMap);
 
     assertNull(hashMap.put(KEY_TEST_PUT, VALUE_TEST_PUT_1));
@@ -602,7 +604,7 @@
    * Test method for 'java.util.HashMap.putAll(Map)'.
    */
   public void testPutAll() {
-    HashMap srcMap = new HashMap();
+    HashMap<String, String> srcMap = new HashMap<String, String>();
     checkEmptyHashMapAssumptions(srcMap);
 
     srcMap.put(KEY_1, VALUE_1);
@@ -610,7 +612,7 @@
     srcMap.put(KEY_3, VALUE_3);
 
     // Make sure that the data is copied correctly
-    HashMap dstMap = new HashMap();
+    HashMap<String, String> dstMap = new HashMap<String, String>();
     checkEmptyHashMapAssumptions(dstMap);
 
     dstMap.putAll(srcMap);
@@ -632,7 +634,7 @@
 
     // Check that an empty map does not blow away the contents of the
     // destination map
-    HashMap emptyMap = new HashMap();
+    HashMap<String, String> emptyMap = new HashMap<String, String>();
     checkEmptyHashMapAssumptions(emptyMap);
     dstMap.putAll(emptyMap);
     assertTrue(dstMap.size() == srcMap.size());
@@ -667,7 +669,7 @@
    * Test method for 'java.util.HashMap.remove(Object)'.
    */
   public void testRemove() {
-    HashMap hashMap = new HashMap();
+    HashMap<String, String> hashMap = new HashMap<String, String>();
     checkEmptyHashMapAssumptions(hashMap);
 
     assertNull(hashMap.remove(null));
@@ -683,7 +685,7 @@
    * Test method for 'java.util.HashMap.size()'.
    */
   public void testSize() {
-    HashMap hashMap = new HashMap();
+    HashMap<String, String> hashMap = new HashMap<String, String>();
     checkEmptyHashMapAssumptions(hashMap);
 
     // Test size behavior on put
@@ -707,7 +709,7 @@
     hashMap.put(KEY_1, VALUE_1);
     hashMap.put(KEY_2, VALUE_2);
     hashMap.put(KEY_3, VALUE_3);
-    HashMap srcMap = new HashMap(hashMap);
+    HashMap<String, String> srcMap = new HashMap<String, String>(hashMap);
     hashMap.putAll(srcMap);
     assertEquals(hashMap.size(), SIZE_THREE);
 
@@ -720,7 +722,7 @@
    * Test method for 'java.util.AbstractMap.toString()'.
    */
   public void testToString() {
-    HashMap hashMap = new HashMap();
+    HashMap<String, String> hashMap = new HashMap<String, String>();
     checkEmptyHashMapAssumptions(hashMap);
     hashMap.put(KEY_KEY, VALUE_VAL);
     String entryString = makeEntryString(KEY_KEY, VALUE_VAL);
@@ -731,33 +733,33 @@
    * Test method for 'java.util.AbstractMap.values()'.
    */
   public void testValues() {
-    HashMap hashMap = new HashMap();
+    HashMap<String, String> hashMap = new HashMap<String, String>();
     checkEmptyHashMapAssumptions(hashMap);
 
     assertNotNull(hashMap.values());
 
     hashMap.put(KEY_KEY, VALUE_VAL);
 
-    Collection valColl = hashMap.values();
+    Collection<String> valColl = hashMap.values();
     assertNotNull(valColl);
     assertEquals(valColl.size(), SIZE_ONE);
 
-    Iterator itVal = valColl.iterator();
-    String val = (String) itVal.next();
+    Iterator<String> itVal = valColl.iterator();
+    String val = itVal.next();
     assertEquals(val, VALUE_VAL);
   }
 
+  @SuppressWarnings("rawtypes")
   @Override
   protected Map makeEmptyMap() {
     return new HashMap();
   }
 
-  private Iterator iterateThrough(final HashMap expected) {
-    Iterator iter = expected.entrySet().iterator();
+  private void iterateThrough(final HashMap<?, ?> expected) {
+    Iterator<?> iter = expected.entrySet().iterator();
     for (int i = 0; i < expected.size(); i++) {
       iter.next();
     }
-    return iter;
   }
 
   private String makeEntryString(final String key, final String value) {
diff --git a/user/test/com/google/gwt/emultest/java/util/HashSetTest.java b/user/test/com/google/gwt/emultest/java/util/HashSetTest.java
index 65c7e5a..0a0b793 100644
--- a/user/test/com/google/gwt/emultest/java/util/HashSetTest.java
+++ b/user/test/com/google/gwt/emultest/java/util/HashSetTest.java
@@ -32,21 +32,23 @@
   }
 
   public void testAddingKeys() {
-    Map map = new HashMap();
-    Set keys = new HashSet(map.keySet());
+    Map<Object, Object> map = new HashMap<Object, Object>();
+    Set<Object> keys = new HashSet<Object>(map.keySet());
     keys.add(new Object()); // Throws exception in IE6 (web-mode) but not GWT
   }
 
   public void testAddWatch() {
-    HashSet s = new HashSet();
+    HashSet<String> s = new HashSet<String>();
     s.add("watch");
     assertTrue(s.contains("watch"));
   }
 
+  @SuppressWarnings("rawtypes")
   protected Set makeEmptySet() {
     return new HashSet();
   }
 
+  @SuppressWarnings("rawtypes")
   public Object makeObject() {
     return new HashSet();
   }
diff --git a/user/test/com/google/gwt/emultest/java/util/IdentityHashMapTest.java b/user/test/com/google/gwt/emultest/java/util/IdentityHashMapTest.java
index cea9f19..4ad811a 100644
--- a/user/test/com/google/gwt/emultest/java/util/IdentityHashMapTest.java
+++ b/user/test/com/google/gwt/emultest/java/util/IdentityHashMapTest.java
@@ -24,12 +24,13 @@
 import java.util.IdentityHashMap;
 import java.util.Iterator;
 import java.util.Map;
-import java.util.Set;
 import java.util.Map.Entry;
+import java.util.Set;
 
 /**
  * Tests <code>IdentityHashMap</code>.
  */
+@SuppressWarnings({"unchecked", "rawtypes"})
 public class IdentityHashMapTest extends TestMap {
 
   /**
@@ -49,8 +50,6 @@
   }
 
   private static final int CAPACITY_16 = 16;
-  private static final int CAPACITY_NEG_ONE_HALF = -1;
-  private static final int CAPACITY_ZERO = 0;
   private static final Integer INTEGER_1 = new Integer(1);
   private static final Integer INTEGER_11 = new Integer(11);
   private static final Integer INTEGER_2 = new Integer(2);
@@ -71,10 +70,6 @@
   private static final String KEY_TEST_KEY_SET = "testKeySet";
   private static final String KEY_TEST_PUT = "testPut";
   private static final String KEY_TEST_REMOVE = "testRemove";
-  private static final float LOAD_FACTOR_NEG_ONE = -1.0F;
-  private static final float LOAD_FACTOR_ONE_HALF = 0.5F;
-  private static final float LOAD_FACTOR_ONE_TENTH = 0.1F;
-  private static final float LOAD_FACTOR_ZERO = 0.0F;
   private static final Object ODD_ZERO_KEY = new Object() {
     public int hashCode() {
       return 0;
diff --git a/user/test/com/google/gwt/emultest/java/util/LinkedHashMapTest.java b/user/test/com/google/gwt/emultest/java/util/LinkedHashMapTest.java
index ed8c804..1d06fd5 100644
--- a/user/test/com/google/gwt/emultest/java/util/LinkedHashMapTest.java
+++ b/user/test/com/google/gwt/emultest/java/util/LinkedHashMapTest.java
@@ -21,10 +21,10 @@
 
 import java.util.Collection;
 import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-import java.util.Map.Entry;
 import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
 
 /**
  * Tests <code>LinkedHashMap</code>.
@@ -119,8 +119,7 @@
    * 
    * @param hashMap
    */
-  @SuppressWarnings("unchecked") // raw LinkedHashMap
-  private static void checkEmptyLinkedHashMapAssumptions(LinkedHashMap hashMap) {
+  private static void checkEmptyLinkedHashMapAssumptions(LinkedHashMap<?, ?> hashMap) {
     assertNotNull(hashMap);
     assertTrue(hashMap.isEmpty());
 
@@ -754,12 +753,11 @@
    * @param hashMap the LinkedHashMap to be copied
    * @return the copy
    */
-  @SuppressWarnings("unchecked") // raw LinkedHashMap
-  private LinkedHashMap cloneLinkedHashMap(LinkedHashMap hashMap) {
+  private <K, V> LinkedHashMap<K, V> cloneLinkedHashMap(LinkedHashMap<K, V> hashMap) {
     if (GWT.isScript()) {
-      return new LinkedHashMap(hashMap);
+      return new LinkedHashMap<K, V>(hashMap);
     } else {
-      LinkedHashMap m = new LinkedHashMap();
+      LinkedHashMap<K, V> m = new LinkedHashMap<K, V>();
       m.putAll(hashMap);
       return m;
     }
diff --git a/user/test/com/google/gwt/emultest/java/util/StackProfile.java b/user/test/com/google/gwt/emultest/java/util/StackProfile.java
index fa941c9..e755168 100644
--- a/user/test/com/google/gwt/emultest/java/util/StackProfile.java
+++ b/user/test/com/google/gwt/emultest/java/util/StackProfile.java
@@ -45,7 +45,7 @@
   }
 
   public void addTiming(int num) {
-    Stack s = new Stack();
+    Stack<String> s = new Stack<String>();
     resetTimer();
     for (int i = 0; i < num; i++) {
       s.push("item" + i);
diff --git a/user/test/com/google/gwt/emultest/java/util/StackTest.java b/user/test/com/google/gwt/emultest/java/util/StackTest.java
index 28e3930..bcc1070 100644
--- a/user/test/com/google/gwt/emultest/java/util/StackTest.java
+++ b/user/test/com/google/gwt/emultest/java/util/StackTest.java
@@ -25,12 +25,129 @@
  */
 public class StackTest extends GWTTestCase {
 
-  public static final int TEST_SEARCH_SIZE = 10;
-  public static final int TEST_SIZE = 10;
-  public static Stack testStack = new Stack();
+  private static final int TEST_SEARCH_SIZE = 10;
+  private static final int TEST_SIZE = 10;
+
+  /** Sets module name so that javascript compiler can operate. */
+  public String getModuleName() {
+    return "com.google.gwt.emultest.EmulSuite";
+  }
+
+  /** Tests clone on Stacks. */
+  public void testClone() {
+    Stack<Integer> large = createLargeStack();
+    @SuppressWarnings("unchecked")
+    Stack<Integer> cloned = (Stack<Integer>) large.clone();
+    checkLargeStack(cloned, 0);
+    assertEquals(large.size(), TEST_SIZE);
+  }
+
+  /**
+   * Tests pushing many elements into a stack, and seeing if they come out in
+   * order. Also verifies that we get the correct exception when we run out of
+   * elements, and tests peek
+   */
+  public void testCountAndOrderWithPeek() {
+    Stack<Integer> large = new Stack<Integer>();
+    for (int i = 0; i < TEST_SIZE; i++) {
+      large.push(i);
+      assertTrue(large.peek() == i);
+      assertTrue(large.pop() == i);
+      int theFinalInt = i + TEST_SIZE;
+      large.push(theFinalInt);
+      assertTrue(large.peek() == theFinalInt);
+    }
+    checkLargeStack(large, TEST_SIZE);
+  }
+
+  /** tests empty and tries to get emptyStackException as desired. */
+  public void testEmptyAndEmptyStackException() {
+    Stack<String> s = new Stack<String>();
+    String item = "empty1";
+    s.push(item);
+    assertEquals(1, s.size());
+    assertFalse(s.empty());
+    assertEquals(s.pop(), item);
+    checkEmptiness(s);
+  }
+
+  /** Tests pop and peek. */
+  public void testPopAndPeek() {
+    Stack<String> testStack = createStack();
+    int x = testStack.size();
+    Object item = testStack.peek();
+    assertTrue(testStack.pop() == item);
+    assertEquals(x - 1, testStack.size());
+  }
+
+  /** Tests push and peek. */
+  public void testPushAndPeek() {
+    Stack<String> testStack = createStack();
+    int x = testStack.size();
+    String item = "4";
+    testStack.push(item);
+    assertEquals(x + 1, testStack.size());
+    assertTrue(testStack.peek() == item);
+  }
+
+  /**
+   * Tests all combinations of search for a stack that attains a max size of
+   * TEST_SEARCH_SIZE.
+   */
+  public void testSearch() {
+    Stack<Integer> searchStack = new Stack<Integer>();
+    checkEmptiness(searchStack);
+    for (int stackSizeIncreasing = 0; stackSizeIncreasing < TEST_SEARCH_SIZE;
+        stackSizeIncreasing++) {
+      for (int theInt = 0; theInt < stackSizeIncreasing; theInt++) {
+        assertEquals(
+            "Increasing search found", searchStack.search(theInt), searchStack.size() - theInt);
+      }
+      for (int theInt = stackSizeIncreasing; theInt < TEST_SEARCH_SIZE; theInt++) {
+        assertEquals("Increasing not found", searchStack.search(theInt), -1);
+      }
+      searchStack.push(stackSizeIncreasing);
+    }
+    for (int stackSizeDecreasing = TEST_SEARCH_SIZE - 1; stackSizeDecreasing >= 0;
+        stackSizeDecreasing--) {
+      for (int theInt = TEST_SEARCH_SIZE - 1; theInt > stackSizeDecreasing; theInt--) {
+        assertEquals("Search decreasing not found", searchStack.search(theInt), -1);
+      }
+      for (int theInt = stackSizeDecreasing; theInt >= 0; theInt--) {
+        assertEquals(
+            "Search decreasing found", searchStack.search(theInt), searchStack.size() - theInt);
+      }
+      searchStack.pop();
+    }
+    checkEmptiness(searchStack);
+  }
+
+  private void checkLargeStack(Stack<Integer> stack, int offset) {
+    for (int i = TEST_SIZE - 1; i >= 0; i--) {
+      int theObtainedInt = stack.pop();
+      assertEquals(i + offset, theObtainedInt);
+    }
+    checkEmptiness(stack);
+  }
+
+  private Stack<Integer> createLargeStack() {
+    Stack<Integer> large = new Stack<Integer>();
+    for (int i = 0; i < TEST_SIZE; i++) {
+      large.push(i);
+    }
+    return large;
+  }
+  
+  private Stack<String> createStack() {
+    Stack<String> stack = new Stack<String>();
+    stack.push("1");
+    stack.push("2");
+    stack.push("3");
+    return stack;
+  }
 
   /** Checks for emptiness of stack by peeking and popping. */
-  public void checkEmptiness(Stack s) {
+  private void checkEmptiness(Stack<?> s) {
     assertTrue(s.empty());
     try {
       s.pop();
@@ -44,120 +161,4 @@
       }
     }
   }
-
-  /** Sets module name so that javascript compiler can operate. */
-  public String getModuleName() {
-    return "com.google.gwt.emultest.EmulSuite";
-  }
-
-  /** Tests clone on Stacks. */
-  public void testClone() {
-    Stack large = createLargeStack();
-    Stack cloned = (Stack) large.clone();
-    checkLargeStack(cloned, 0);
-    assertEquals(large.size(), TEST_SIZE);
-  }
-
-  /**
-   * Tests pushing many elements into a stack, and seeing if they come out in
-   * order. Also verifies that we get the correct exception when we run out of
-   * elements, and tests peek
-   */
-  public void testCountAndOrderWithPeek() {
-    Stack large = new Stack();
-    for (int i = 0; i < TEST_SIZE; i++) {
-      Integer theInt = new Integer(i);
-      large.push(theInt);
-      assertTrue(large.peek() == theInt);
-      assertTrue(large.pop() == theInt);
-      Integer theFinalInt = new Integer(theInt.intValue() + TEST_SIZE);
-      large.push(theFinalInt);
-      assertTrue(large.peek() == theFinalInt);
-    }
-    checkLargeStack(large, TEST_SIZE);
-  }
-
-  /** tests empty and tries to get emptyStackException as desired. */
-  public void testEmptyAndEmptyStackException() {
-    Stack s = new Stack();
-    String item = "empty1";
-    s.push(item);
-    assertEquals(1, s.size());
-    assertFalse(s.empty());
-    assertEquals(s.pop(), item);
-    checkEmptiness(s);
-  }
-
-  /** Tests pop and peek. */
-  public void testPopAndPeek() {
-    int x = testStack.size();
-    Object item = testStack.peek();
-    assertTrue(testStack.pop() == item);
-    assertEquals(x - 1, testStack.size());
-  }
-
-  /** Tests push and peek. */
-  public void testPushAndPeek() {
-    int x = testStack.size();
-    Object item = "4";
-    testStack.push(item);
-    assertEquals(x + 1, testStack.size());
-    assertTrue(testStack.peek() == item);
-  }
-
-  /**
-   * Tests all combinations of search for a stack that attains a max size of
-   * TEST_SEARCH_SIZE.
-   */
-  public void testSearch() {
-    Stack searchStack = new Stack();
-    checkEmptiness(searchStack);
-    for (int stackSizeIncreasing = 0; stackSizeIncreasing < TEST_SEARCH_SIZE; stackSizeIncreasing++) {
-      for (int theInt = 0; theInt < stackSizeIncreasing; theInt++) {
-        assertEquals("Increasing search found", searchStack.search(new Integer(
-          theInt)), searchStack.size() - theInt);
-      }
-      for (int theInt = stackSizeIncreasing; theInt < TEST_SEARCH_SIZE; theInt++) {
-        assertEquals("Increasing not found", searchStack.search(new Integer(
-          theInt)), -1);
-      }
-      searchStack.push(new Integer(stackSizeIncreasing));
-    }
-    for (int stackSizeDecreasing = TEST_SEARCH_SIZE - 1; stackSizeDecreasing >= 0; stackSizeDecreasing--) {
-      for (int theInt = TEST_SEARCH_SIZE - 1; theInt > stackSizeDecreasing; theInt--) {
-        assertEquals("Search decreasing not found",
-          searchStack.search(new Integer(theInt)), -1);
-      }
-      for (int theInt = stackSizeDecreasing; theInt >= 0; theInt--) {
-        assertEquals("Search decreasing found", searchStack.search(new Integer(
-          theInt)), searchStack.size() - theInt);
-      }
-      searchStack.pop();
-    }
-    checkEmptiness(searchStack);
-  }
-
-  private void checkLargeStack(Stack cloned, int offset) {
-    for (int i = TEST_SIZE - 1; i >= 0; i--) {
-      Integer theObtainedInt = (Integer) cloned.pop();
-      assertEquals(i + offset, theObtainedInt.intValue());
-    }
-    checkEmptiness(cloned);
-  }
-
-  private Stack createLargeStack() {
-    Stack large = new Stack();
-    for (int i = 0; i < TEST_SIZE; i++) {
-      Integer theFinalInt = new Integer(i);
-      large.push(theFinalInt);
-    }
-    return large;
-  }
-
-  static {
-    testStack.push("1");
-    testStack.push("2");
-    testStack.push("3");
-  }
-
 }
diff --git a/user/test/com/google/gwt/emultest/java/util/TreeMapTest.java b/user/test/com/google/gwt/emultest/java/util/TreeMapTest.java
index 30ea28e..59a5f66 100644
--- a/user/test/com/google/gwt/emultest/java/util/TreeMapTest.java
+++ b/user/test/com/google/gwt/emultest/java/util/TreeMapTest.java
@@ -29,11 +29,11 @@
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.NoSuchElementException;
 import java.util.Set;
 import java.util.SortedMap;
 import java.util.TreeMap;
-import java.util.Map.Entry;
 
 /**
  * Tests <code>TreeMap</code>.
@@ -943,6 +943,7 @@
     assertEquals(1, keySet.size());
   }
 
+  @SuppressWarnings("unchecked")
   public void testKeySetIteratorRemove() {
     Map<K, V> map = makeFullMap();
     resetFull();
@@ -1541,6 +1542,7 @@
    * 
    * @see java.util.Map#remove(Object)
    */
+  @SuppressWarnings("unchecked")
   public void testRemove_throwsNullPointerException() {
     // The _throwsUnsupportedOperationException version of this test will
     // verify that the method is not supported.
diff --git a/user/test/com/google/gwt/http/RequestTest.gwt.xml b/user/test/com/google/gwt/http/RequestTest.gwt.xml
index 38b75b2..9926f14 100644
--- a/user/test/com/google/gwt/http/RequestTest.gwt.xml
+++ b/user/test/com/google/gwt/http/RequestTest.gwt.xml
@@ -15,6 +15,6 @@
 <module>
   <inherits name='com.google.gwt.user.User' />
 
-  <servlet path='/testRequest'
+  <servlet path='/testRequest/*'
     class='com.google.gwt.http.server.RequestTestServlet' />
 </module>
diff --git a/user/test/com/google/gwt/http/client/RequestTest.java b/user/test/com/google/gwt/http/client/RequestTest.java
index 7046195..0f31fac 100644
--- a/user/test/com/google/gwt/http/client/RequestTest.java
+++ b/user/test/com/google/gwt/http/client/RequestTest.java
@@ -127,4 +127,32 @@
       fail(e.getMessage());
     }
   }
+
+  /*
+   * Checks that the status code is correct when receiving a 204-No-Content. This needs special
+   * handling in IE6-9. See http://code.google.com/p/google-web-toolkit/issues/detail?id=5031
+   */
+  public void test204NoContent() {
+    delayTestFinishForRequest();
+
+    RequestBuilder builder =
+        new RequestBuilder(RequestBuilder.GET, getTestBaseURL() + "204NoContent");
+    try {
+      builder.sendRequest(null, new RequestCallback() {
+
+        @Override
+        public void onResponseReceived(Request request, Response response) {
+          assertEquals(204, response.getStatusCode());
+          finishTest();
+        }
+
+        @Override
+        public void onError(Request request, Throwable exception) {
+          fail(exception.getMessage());
+        }
+      });
+    } catch (RequestException e) {
+      fail(e.getMessage());
+    }
+  }
 }
diff --git a/user/test/com/google/gwt/http/server/RequestTestServlet.java b/user/test/com/google/gwt/http/server/RequestTestServlet.java
index ec631b4..e267650 100644
--- a/user/test/com/google/gwt/http/server/RequestTestServlet.java
+++ b/user/test/com/google/gwt/http/server/RequestTestServlet.java
@@ -29,12 +29,16 @@
 
   protected void doGet(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {
-    try {
-      Thread.sleep(5000);
-    } catch (InterruptedException e) {
-      // TODO Auto-generated catch block
-      e.printStackTrace();
+    if (request.getRequestURI().endsWith("/204NoContent")) {
+      response.setStatus(HttpServletResponse.SC_NO_CONTENT);
+    } else {
+      try {
+        Thread.sleep(5000);
+      } catch (InterruptedException e) {
+        // TODO Auto-generated catch block
+        e.printStackTrace();
+      }
+      response.setStatus(HttpServletResponse.SC_OK);
     }
-    response.setStatus(HttpServletResponse.SC_OK);
   }
 }
diff --git a/user/test/com/google/gwt/i18n/I18NSuite.java b/user/test/com/google/gwt/i18n/I18NSuite.java
index 9906f51..dc1864b 100644
--- a/user/test/com/google/gwt/i18n/I18NSuite.java
+++ b/user/test/com/google/gwt/i18n/I18NSuite.java
@@ -43,6 +43,7 @@
 import com.google.gwt.i18n.client.NumberFormat_fr_Test;
 import com.google.gwt.i18n.client.NumberParse_en_Test;
 import com.google.gwt.i18n.client.NumberParse_fr_Test;
+import com.google.gwt.i18n.client.PolishPluralsTest;
 import com.google.gwt.i18n.client.RuntimeLocalesTest;
 import com.google.gwt.i18n.client.TimeZoneInfoTest;
 import com.google.gwt.i18n.client.TimeZoneTest;
@@ -110,6 +111,7 @@
     suite.addTestSuite(NumberFormat_fr_Test.class);
     suite.addTestSuite(NumberParse_en_Test.class);
     suite.addTestSuite(NumberParse_fr_Test.class);
+    suite.addTestSuite(PolishPluralsTest.class);
     suite.addTestSuite(PropertyCatalogFactoryTest.class);
     suite.addTestSuite(ReflectionMessageInterfaceTest.class);
     suite.addTestSuite(RegionInheritanceTest.class);
diff --git a/user/test/com/google/gwt/i18n/MapTestBase.java b/user/test/com/google/gwt/i18n/MapTestBase.java
index 2901dd2..475a3e4 100644
--- a/user/test/com/google/gwt/i18n/MapTestBase.java
+++ b/user/test/com/google/gwt/i18n/MapTestBase.java
@@ -106,6 +106,7 @@
  * @author Paul Jack
  * @version $Id: TestMap.java,v 1.20.2.1 2004/05/22 12:14:05 scolebourne Exp $
  */
+@SuppressWarnings({"unchecked", "rawtypes"})
 public abstract class MapTestBase extends TestCase {
 
   // These instance variables are initialized with the reset method.
diff --git a/user/test/com/google/gwt/i18n/client/DateTimeParse_en_Test.java b/user/test/com/google/gwt/i18n/client/DateTimeParse_en_Test.java
index 54d4803..7360286 100644
--- a/user/test/com/google/gwt/i18n/client/DateTimeParse_en_Test.java
+++ b/user/test/com/google/gwt/i18n/client/DateTimeParse_en_Test.java
@@ -74,6 +74,11 @@
     assertEquals(9 - 1900, date.getYear());
     assertEquals(12 - 1, date.getMonth());
     assertEquals(2, date.getDate());
+
+    assertEquals(6, parse("dd HHmm", "11 213", 0, date));
+    assertEquals(11, date.getDate());
+    assertEquals(2, date.getHours());
+    assertEquals(13, date.getMinutes());
   }
 
   public void testAmbiguousYear() {
diff --git a/user/test/com/google/gwt/i18n/client/I18N2Test.java b/user/test/com/google/gwt/i18n/client/I18N2Test.java
index c1578c0..0d0c9be 100644
--- a/user/test/com/google/gwt/i18n/client/I18N2Test.java
+++ b/user/test/com/google/gwt/i18n/client/I18N2Test.java
@@ -156,9 +156,9 @@
     String str = timeZoneData.americaLosAngeles();
     TimeZoneInfo tzInfo = TimeZoneInfo.buildTimeZoneData(str);
     TimeZone tz = TimeZone.createTimeZone(tzInfo);
-    assertEquals("in timezone: 2/1/2010 7:04:05 PM", m.inTimezone(date, tz));
+    assertEquals("in timezone: 2/1/2010, 7:04:05 PM", m.inTimezone(date, tz));
 
-    assertEquals("in timezone: 2/1/2010 7:04:05 PM", m.inTimezoneAsSafeHtml(date, tz).asString());
+    assertEquals("in timezone: 2/1/2010, 7:04:05 PM", m.inTimezoneAsSafeHtml(date, tz).asString());
 }
 
   public void testListWithArray() {
@@ -513,9 +513,9 @@
   public void testStaticTimeZone() {
     TestAnnotatedMessages m = GWT.create(TestAnnotatedMessages.class);
     Date date = new Date(Date.UTC(2010 - 1900, 1, 2, 3, 4, 5));
-    assertEquals("in GMT: 2/2/2010 3:04:05 AM", m.gmt(date));
+    assertEquals("in GMT: 2/2/2010, 3:04:05 AM", m.gmt(date));
 
-    assertEquals("in GMT: 2/2/2010 3:04:05 AM", m.gmtAsSafeHtml(date).asString(
+    assertEquals("in GMT: 2/2/2010, 3:04:05 AM", m.gmtAsSafeHtml(date).asString(
         ));
   }
 
diff --git a/user/test/com/google/gwt/i18n/client/I18N_nb_Test.java b/user/test/com/google/gwt/i18n/client/I18N_nb_Test.java
index ede08e8..88da5d9 100644
--- a/user/test/com/google/gwt/i18n/client/I18N_nb_Test.java
+++ b/user/test/com/google/gwt/i18n/client/I18N_nb_Test.java
@@ -64,6 +64,6 @@
     currencyData = currencyList.lookup("RUB");
     assertNotNull(currencyData);
     assertEquals("RUB", currencyData.getCurrencyCode());
-    assertEquals("руб", currencyData.getCurrencySymbol());
+    assertEquals("руб.", currencyData.getCurrencySymbol());
   }
 }
diff --git a/user/test/com/google/gwt/i18n/client/PolishPluralsTest.java b/user/test/com/google/gwt/i18n/client/PolishPluralsTest.java
new file mode 100644
index 0000000..df9e59b
--- /dev/null
+++ b/user/test/com/google/gwt/i18n/client/PolishPluralsTest.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2012 Google Inc.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.i18n.client;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.junit.client.GWTTestCase;
+
+/**
+ * Tests Polish plurals, which is one of the most complicated.
+ */
+public class PolishPluralsTest extends GWTTestCase {
+
+  /**
+   * Shorter message for just testing that Polish plurals work properly.
+   */
+  public interface PluralMessage extends Messages {
+    @DefaultMessage("{0} widgets-few")
+    @AlternateMessage({"one", "A widget"})
+    String pluralWidgetsOther(@PluralCount int count);
+  }
+
+  @Override
+  public String getModuleName() {
+    return "com.google.gwt.i18n.I18NTest_pl";
+  }
+
+  public void testPlurals() {
+    // Note that all text is actually in English, but written according to
+    // Polish plural rules.
+    PluralMessage m = GWT.create(PluralMessage.class);
+    assertEquals("(Polish many) 0 widgets", m.pluralWidgetsOther(0));
+    assertEquals("(Polish one) A widget", m.pluralWidgetsOther(1));
+    assertEquals("(Polish few) 2 widgets", m.pluralWidgetsOther(2));
+    assertEquals("(Polish few) 3 widgets", m.pluralWidgetsOther(3));
+    assertEquals("(Polish few) 4 widgets", m.pluralWidgetsOther(4));
+    assertEquals("(Polish many) 5 widgets", m.pluralWidgetsOther(5));
+    assertEquals("(Polish many) 10 widgets", m.pluralWidgetsOther(10));
+    assertEquals("(Polish many) 11 widgets", m.pluralWidgetsOther(11));
+    assertEquals("(Polish many) 12 widgets", m.pluralWidgetsOther(12));
+    assertEquals("(Polish many) 13 widgets", m.pluralWidgetsOther(13));
+    assertEquals("(Polish many) 14 widgets", m.pluralWidgetsOther(14));
+    assertEquals("(Polish many) 15 widgets", m.pluralWidgetsOther(15));
+    assertEquals("(Polish many) 20 widgets", m.pluralWidgetsOther(20));
+    assertEquals("(Polish many) 21 widgets", m.pluralWidgetsOther(21));
+    assertEquals("(Polish few) 22 widgets", m.pluralWidgetsOther(22));
+    assertEquals("(Polish few) 23 widgets", m.pluralWidgetsOther(23));
+    assertEquals("(Polish few) 24 widgets", m.pluralWidgetsOther(24));
+    assertEquals("(Polish many) 25 widgets", m.pluralWidgetsOther(25));
+    assertEquals("(Polish many) 99 widgets", m.pluralWidgetsOther(99));
+    assertEquals("(Polish many) 100 widgets", m.pluralWidgetsOther(100));
+    assertEquals("(Polish many) 101 widgets", m.pluralWidgetsOther(101));
+    assertEquals("(Polish few) 102 widgets", m.pluralWidgetsOther(102));
+    assertEquals("(Polish few) 103 widgets", m.pluralWidgetsOther(103));
+    assertEquals("(Polish few) 104 widgets", m.pluralWidgetsOther(104));
+    assertEquals("(Polish many) 105 widgets", m.pluralWidgetsOther(105));
+  }
+}
diff --git a/user/test/com/google/gwt/i18n/client/PolishPluralsTest_PluralMessage_pl.properties b/user/test/com/google/gwt/i18n/client/PolishPluralsTest_PluralMessage_pl.properties
new file mode 100644
index 0000000..ee22380
--- /dev/null
+++ b/user/test/com/google/gwt/i18n/client/PolishPluralsTest_PluralMessage_pl.properties
@@ -0,0 +1,4 @@
+pluralWidgetsOther=(Polish other) {0} widgets
+pluralWidgetsOther[one]=(Polish one) A widget
+pluralWidgetsOther[few]=(Polish few) {0} widgets
+pluralWidgetsOther[many]=(Polish many) {0} widgets
diff --git a/user/test/com/google/gwt/i18n/public_es_AR/junit-standards.html b/user/test/com/google/gwt/i18n/public_es_AR/junit-standards.html
index 1ae3c80..a998bc9 100644
--- a/user/test/com/google/gwt/i18n/public_es_AR/junit-standards.html
+++ b/user/test/com/google/gwt/i18n/public_es_AR/junit-standards.html
@@ -53,12 +53,12 @@
 }
 
 function loadSelectionScript() {
-  var moduleName = document.location.href;
+  var moduleName = location.pathname;
   var pos = moduleName.lastIndexOf('/');
   moduleName = moduleName.substr(0, pos);
   pos = moduleName.lastIndexOf('/');
   moduleName = moduleName.substr(pos + 1);
-  document.write("<script language='javascript' src='" + moduleName + ".nocache.js'><\/script>");
+  document.write('<script language="javascript" src="' + encodeURIComponent(moduleName) + '.nocache.js"><\/script>');
 }
 loadSelectionScript();
 -->
diff --git a/user/test/com/google/gwt/i18n/public_es_AR/junit.html b/user/test/com/google/gwt/i18n/public_es_AR/junit.html
index e30fb7b..31c0114 100644
--- a/user/test/com/google/gwt/i18n/public_es_AR/junit.html
+++ b/user/test/com/google/gwt/i18n/public_es_AR/junit.html
@@ -52,12 +52,12 @@
 }
 
 function loadSelectionScript() {
-  var moduleName = document.location.href;
+  var moduleName = location.pathname;
   var pos = moduleName.lastIndexOf('/');
   moduleName = moduleName.substr(0, pos);
   pos = moduleName.lastIndexOf('/');
   moduleName = moduleName.substr(pos + 1);
-  document.write("<script language='javascript' src='" + moduleName + ".nocache.js'></script>");
+  document.write('<script language="javascript" src="' + encodeURIComponent(moduleName) + '.nocache.js"><\/script>');
 }
 loadSelectionScript();
 -->
diff --git a/user/test/com/google/gwt/i18n/public_es_MX/junit-standards.html b/user/test/com/google/gwt/i18n/public_es_MX/junit-standards.html
index da44249..db0b393 100644
--- a/user/test/com/google/gwt/i18n/public_es_MX/junit-standards.html
+++ b/user/test/com/google/gwt/i18n/public_es_MX/junit-standards.html
@@ -53,12 +53,12 @@
 }
 
 function loadSelectionScript() {
-  var moduleName = document.location.href;
+  var moduleName = location.pathname;
   var pos = moduleName.lastIndexOf('/');
   moduleName = moduleName.substr(0, pos);
   pos = moduleName.lastIndexOf('/');
   moduleName = moduleName.substr(pos + 1);
-  document.write("<script language='javascript' src='" + moduleName + ".nocache.js'><\/script>");
+  document.write('<script language="javascript" src="' + encodeURIComponent(moduleName) + '.nocache.js"><\/script>');
 }
 loadSelectionScript();
 -->
diff --git a/user/test/com/google/gwt/i18n/public_es_MX/junit.html b/user/test/com/google/gwt/i18n/public_es_MX/junit.html
index 0de069d..924012c 100644
--- a/user/test/com/google/gwt/i18n/public_es_MX/junit.html
+++ b/user/test/com/google/gwt/i18n/public_es_MX/junit.html
@@ -52,12 +52,12 @@
 }
 
 function loadSelectionScript() {
-  var moduleName = document.location.href;
+  var moduleName = location.pathname;
   var pos = moduleName.lastIndexOf('/');
   moduleName = moduleName.substr(0, pos);
   pos = moduleName.lastIndexOf('/');
   moduleName = moduleName.substr(pos + 1);
-  document.write("<script language='javascript' src='" + moduleName + ".nocache.js'></script>");
+  document.write('<script language="javascript" src="' + encodeURIComponent(moduleName) + '.nocache.js"><\/script>');
 }
 loadSelectionScript();
 -->
diff --git a/user/test/com/google/gwt/junit/ExpectedFailure.java b/user/test/com/google/gwt/junit/ExpectedFailure.java
new file mode 100644
index 0000000..dc76900
--- /dev/null
+++ b/user/test/com/google/gwt/junit/ExpectedFailure.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.junit;
+
+import junit.framework.AssertionFailedError;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * An annotation to mark test cases where the expected result is a failure.
+ */
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ExpectedFailure {
+  String withMessage() default "";
+
+  Class<? extends Throwable> withType() default AssertionFailedError.class;
+}
diff --git a/user/test/com/google/gwt/junit/ForwardingTestResult.java b/user/test/com/google/gwt/junit/ForwardingTestResult.java
new file mode 100644
index 0000000..22c3cb8
--- /dev/null
+++ b/user/test/com/google/gwt/junit/ForwardingTestResult.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.junit;
+
+
+import junit.framework.AssertionFailedError;
+import junit.framework.Test;
+import junit.framework.TestFailure;
+import junit.framework.TestListener;
+import junit.framework.TestResult;
+
+import java.util.Enumeration;
+
+/**
+ * A {@link TestResult} that forwards calls to the provided delegate with the exception of
+ * {@link #run} and {@link #runProtected} as these two methods just call other methods that a
+ * subclass of ForwardingTestResult might override.
+ */
+abstract class ForwardingTestResult extends TestResult {
+  private TestResult delegate;
+
+  public ForwardingTestResult(TestResult result) {
+    delegate = result;
+  }
+
+  public void addError(Test test, Throwable t) {
+    delegate.addError(test, t);
+  }
+
+  public void addFailure(Test test, AssertionFailedError t) {
+    delegate.addFailure(test, t);
+  }
+
+  public void addListener(TestListener listener) {
+    delegate.addListener(listener);
+  }
+
+  public void removeListener(TestListener listener) {
+    delegate.removeListener(listener);
+  }
+
+  public void endTest(Test test) {
+    delegate.endTest(test);
+  }
+
+  public int errorCount() {
+    return delegate.errorCount();
+  }
+
+  public Enumeration<TestFailure> errors() {
+    return delegate.errors();
+  }
+
+  public int failureCount() {
+    return delegate.failureCount();
+  }
+
+  public Enumeration<TestFailure> failures() {
+    return delegate.failures();
+  }
+
+  public int runCount() {
+    return delegate.runCount();
+  }
+
+  public boolean shouldStop() {
+    return delegate.shouldStop();
+  }
+
+  public void startTest(Test test) {
+    delegate.startTest(test);
+  }
+
+  public void stop() {
+    delegate.stop();
+  }
+
+  public boolean wasSuccessful() {
+    return delegate.wasSuccessful();
+  }
+}
\ No newline at end of file
diff --git a/user/test/com/google/gwt/junit/GwtTestSuiteWithExpectedFailures.java b/user/test/com/google/gwt/junit/GwtTestSuiteWithExpectedFailures.java
new file mode 100644
index 0000000..2b3ebf4
--- /dev/null
+++ b/user/test/com/google/gwt/junit/GwtTestSuiteWithExpectedFailures.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.junit;
+
+import com.google.gwt.junit.tools.GWTTestSuite;
+
+import junit.framework.TestResult;
+
+/**
+ * A {@link GWTTestSuite} that can interpret {@link ExpectedFailure} on test methods.
+ */
+class GwtTestSuiteWithExpectedFailures extends GWTTestSuite {
+
+  public GwtTestSuiteWithExpectedFailures(String name) {
+    super(name);
+  }
+
+  @Override
+  public void run(TestResult result) {
+    super.run(decorateResult(result));
+  }
+
+  private TestResult decorateResult(TestResult result) {
+    return new TestResultWithExpectedFailures(result);
+  }
+}
diff --git a/user/test/com/google/gwt/junit/JUnitSuite.java b/user/test/com/google/gwt/junit/JUnitSuite.java
index e225dff..eba96f3 100644
--- a/user/test/com/google/gwt/junit/JUnitSuite.java
+++ b/user/test/com/google/gwt/junit/JUnitSuite.java
@@ -16,24 +16,29 @@
 package com.google.gwt.junit;
 
 import com.google.gwt.junit.client.DevModeOnCompiledScriptTest;
+import com.google.gwt.junit.client.GWTTestCaseAsyncTest;
+import com.google.gwt.junit.client.GWTTestCaseSetupTearDownTest;
 import com.google.gwt.junit.client.GWTTestCaseTest;
 import com.google.gwt.junit.client.PropertyDefiningGWTTest;
-import com.google.gwt.junit.tools.GWTTestSuite;
 
 import junit.framework.Test;
+import junit.framework.TestSuite;
 
 /**
  * Tests of the junit package.
  */
 public class JUnitSuite {
   public static Test suite() {
-    GWTTestSuite suite = new GWTTestSuite(
-        "Test for suite for com.google.gwt.junit");
+    TestSuite suite = new GwtTestSuiteWithExpectedFailures("Test suite for com.google.gwt.junit");
 
     // client
     // Suppressed due to flakiness on Linux
     // suite.addTestSuite(BenchmarkTest.class);
+
     suite.addTestSuite(GWTTestCaseTest.class);
+    suite.addTest(new TestSuiteWithOrder(GWTTestCaseAsyncTest.class));
+    suite.addTest(new TestSuiteWithOrder(GWTTestCaseSetupTearDownTest.class));
+
     suite.addTestSuite(DevModeOnCompiledScriptTest.class);
 
     // Must run after a GWTTestCase so JUnitShell is initialized.
@@ -45,9 +50,8 @@
     suite.addTestSuite(JUnitMessageQueueTest.class);
     suite.addTestSuite(GWTTestCaseNoClientTest.class);
 
-    // These two are intended only to be run manually. See class comments
+    // Intended only to be run manually. See class comments
     // suite.addTestSuite(ParallelRemoteTest.class);
-    // suite.addTestSuite(TestManualAsync.class);
 
     // remote
     // Run manually only, launches servers that die on port contention
diff --git a/user/test/com/google/gwt/junit/TestResultWithExpectedFailures.java b/user/test/com/google/gwt/junit/TestResultWithExpectedFailures.java
new file mode 100644
index 0000000..555d8da
--- /dev/null
+++ b/user/test/com/google/gwt/junit/TestResultWithExpectedFailures.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.junit;
+
+import junit.framework.AssertionFailedError;
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestResult;
+
+import java.lang.reflect.Method;
+
+/**
+ * A {@link TestResult} that can interpret {@link ExpectedFailure} on test methods.
+ */
+class TestResultWithExpectedFailures extends ForwardingTestResult {
+
+  private boolean failed;
+
+  public TestResultWithExpectedFailures(TestResult delegate) {
+    super(delegate);
+  }
+
+  @Override
+  public void startTest(Test test) {
+    failed = false;
+    super.startTest(test);
+  }
+
+  @Override
+  public void addFailure(Test test, AssertionFailedError t) {
+    failed = true;
+    if (isAnExpectedException(test, t)) {
+      return; // This is a good kind of failure, do not report it.
+    }
+    super.addFailure(test, t);
+  }
+
+  @Override
+  public void addError(Test test, Throwable t) {
+    failed = true;
+    if (isAnExpectedException(test, t)) {
+      return; // This is a good kind of failure, do not report it.
+    }
+    super.addError(test, t);
+  }
+
+  @Override
+  public void endTest(Test test) {
+    if (!failed && isTestExpectedToFail(test)) {
+      // Test should have failed but didn't. Report the failure by calling the super directly to
+      // prevent any interference from overridden #addFailure.
+      super.addFailure(test, new AssertionFailedError("Expected failure but didn't fail"));
+    }
+    super.endTest(test);
+  }
+
+  private boolean isTestExpectedToFail(Test test) {
+    return getExpectedFailureAnnotation(test) != null;
+  }
+
+  private boolean isAnExpectedException(Test test, Throwable t) {
+    ExpectedFailure annotation = getExpectedFailureAnnotation(test);
+    if (annotation != null) {
+      t = normalizeGwtTestException(t);
+      return t.getClass().isAssignableFrom(annotation.withType())
+          && getExceptionMessage(t).contains(annotation.withMessage());
+    }
+    return false;
+  }
+
+  /**
+   * Extracts the real exception from the {@code RuntimeException} thrown by GwtTestCase.
+   */
+  private Throwable normalizeGwtTestException(Throwable t) {
+    // GWTTestCase replaces AssertionFailedError with RuntimeException and for all other exceptions
+    // it puts them into 'cause' property.
+    return t.getCause() == null ? new AssertionFailedError(t.getMessage()) : t.getCause();
+  }
+
+  private String getExceptionMessage(Throwable t) {
+    return t.getMessage() == null ? "" : t.getMessage();
+  }
+
+  private ExpectedFailure getExpectedFailureAnnotation(Test test) {
+    if (test instanceof TestCase) {
+      TestCase testCase = (TestCase) test;
+      try {
+        Method testMethod = testCase.getClass().getMethod(testCase.getName());
+        return testMethod.getAnnotation(ExpectedFailure.class);
+      } catch (NoSuchMethodException e) {
+        throw new RuntimeException(e);
+      }
+    }
+    return null;
+  }
+}
\ No newline at end of file
diff --git a/user/test/com/google/gwt/junit/TestSuiteWithOrder.java b/user/test/com/google/gwt/junit/TestSuiteWithOrder.java
new file mode 100644
index 0000000..459b477
--- /dev/null
+++ b/user/test/com/google/gwt/junit/TestSuiteWithOrder.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.junit;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.Arrays;
+import java.util.Comparator;
+
+/**
+ * Add {@link TestSuite} that runs test cases in alphabetical order.
+ */
+class TestSuiteWithOrder extends TestSuite {
+
+  /*
+   * Implementation Note: When batching is active, TestModuleInfo in GWTTestCase#ALL_GWT_TESTS
+   * accidentally forces the test execution order that is derived from first time the TestCase is
+   * instantiated. The implementation of this class should guarantee the order not only by sorting
+   * TestCases but also creating them in order.
+   */
+
+  public TestSuiteWithOrder(Class<? extends TestCase> clazz) {
+    for (Class<?> c = clazz; Test.class.isAssignableFrom(c); c = c.getSuperclass()) {
+      for (Method each : getDeclaredMethods(c)) {
+        if (isTestMethod(each)) {
+          addTestMethod(each, clazz);
+        }
+      }
+    }
+    if (countTestCases() == 0) {
+      addTest(warning("No tests found in " + clazz.getName()));
+    }
+  }
+
+  private void addTestMethod(Method m, Class<?> theClass) {
+    if (!Modifier.isPublic(m.getModifiers())) {
+      addTest(warning("Test method isn't public: " + m.getName() + "(" + theClass.getName() + ")"));
+      return;
+    }
+    addTest(createTest(theClass, m.getName()));
+  }
+
+  private boolean isTestMethod(Method m) {
+    return m.getParameterTypes().length == 0
+        && m.getName().startsWith("test")
+        && m.getReturnType().equals(Void.TYPE);
+  }
+
+  private Method[] getDeclaredMethods(Class<?> clazz) {
+    Method[] methods = clazz.getDeclaredMethods();
+    Arrays.sort(methods, new Comparator<Method>() {
+      @Override
+      public int compare(Method m1, Method m2) {
+        return m1.toString().compareTo(m2.toString());
+      }
+    });
+    return methods;
+  }
+}
diff --git a/user/test/com/google/gwt/junit/client/GWTTestCaseAsyncTest.java b/user/test/com/google/gwt/junit/client/GWTTestCaseAsyncTest.java
new file mode 100644
index 0000000..5342fa0
--- /dev/null
+++ b/user/test/com/google/gwt/junit/client/GWTTestCaseAsyncTest.java
@@ -0,0 +1,263 @@
+/*
+ * Copyright 2012 Google Inc.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.junit.client;
+
+import com.google.gwt.dom.client.ButtonElement;
+import com.google.gwt.dom.client.Document;
+import com.google.gwt.junit.ExpectedFailure;
+import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.Event;
+import com.google.gwt.user.client.EventListener;
+import com.google.gwt.user.client.Timer;
+
+/**
+ * This class tests GwtTestCase in async mode.
+ *
+ * Note: This test requires some test methods to be executed in a specific order.
+ */
+public class GWTTestCaseAsyncTest extends GWTTestCase {
+
+  public String getModuleName() {
+    return "com.google.gwt.junit.JUnit";
+  }
+
+  // The following tests (all prefixed with test_) are intended to test the
+  // interaction of synchronous failures (within event handlers) with various
+  // other types of failures and successes. All of them are expected to fail
+  // with the message "Expected failure".
+  //
+  // Nomenclature for these tests:
+  // DTF => delayTestFinish()
+  // SF => synchronous failure (from event handler)
+  // FT => finishTest()
+  // F => fail()
+  // R => return;
+
+  @ExpectedFailure(withMessage = "test_dtf_sf")
+  public void test_dtf_sf() {
+    delayTestFinish();
+    synchronousFailure("test_dtf_sf");
+  }
+
+  @ExpectedFailure(withMessage = "test_dtf_sf_f")
+  public void test_dtf_sf_f() {
+    delayTestFinish();
+    synchronousFailure("test_dtf_sf_f");
+    failNow("test_dtf_sf_f");
+  }
+
+  @ExpectedFailure(withMessage = "test_dtf_sf_ft")
+  public void test_dtf_sf_ft() {
+    delayTestFinish();
+    synchronousFailure("test_dtf_sf_ft");
+    finishTest();
+  }
+
+  // Issue: http://code.google.com/p/google-web-toolkit/issues/detail?id=7846
+  @ExpectedFailure(withMessage = "test_dtf_sf_r_f")
+  public void _suppressed_test_dtf_sf_r_f() {
+    delayTestFinish();
+    synchronousFailure("test_dtf_sf_r_f");
+    failLater("test_dtf_sf_r_f");
+  }
+
+  @ExpectedFailure(withMessage = "test_dtf_sf_r_ft")
+  public void test_dtf_sf_r_ft() {
+    delayTestFinish();
+    synchronousFailure("test_dtf_sf_r_ft");
+    finishTestLater();
+  }
+
+  @ExpectedFailure(withMessage = "test_sf")
+  public void test_sf() {
+    synchronousFailure("test_sf");
+  }
+
+  @ExpectedFailure(withMessage = "test_sf_dtf_f")
+  public void test_sf_dtf_f() {
+    synchronousFailure("test_sf_dtf_f");
+    delayTestFinish();
+    failNow("test_sf_dtf_f");
+  }
+
+  @ExpectedFailure(withMessage = "test_sf_dtf_ft")
+  public void test_sf_dtf_ft() {
+    synchronousFailure("test_sf_dtf_ft");
+    delayTestFinish();
+    finishTest();
+  }
+
+  // Issue: http://code.google.com/p/google-web-toolkit/issues/detail?id=7846
+  @ExpectedFailure(withMessage = "test_sf_dtf_r_f")
+  public void _suppressed_test_sf_dtf_r_f() {
+    synchronousFailure("test_sf_dtf_r_f");
+    delayTestFinish();
+    failLater("test_sf_dtf_r_f");
+  }
+
+  @ExpectedFailure(withMessage = "test_sf_dtf_r_ft")
+  public void test_sf_dtf_r_ft() {
+    synchronousFailure("test_sf_dtf_r_ft");
+    delayTestFinish();
+    finishTestLater();
+  }
+
+  @ExpectedFailure(withMessage = "test_sf_f")
+  public void test_sf_f() {
+    synchronousFailure("test_sf_f");
+    failNow("test_sf_f");
+  }
+
+  /**
+   * Fails normally.
+   */
+  @ExpectedFailure(withMessage = "testDelayFail")
+  public void testDelayFail() {
+    delayTestFinish(100);
+    fail("testDelayFail");
+    finishTest();
+  }
+
+  /**
+   * Completes normally.
+   */
+  public void testDelayNormal() {
+    delayTestFinish(100);
+    finishTest();
+  }
+
+  @ExpectedFailure(withMessage = "testFailAsync")
+  public void testFailAsync() {
+    delayTestFinish(1000);
+    failLater("testFailAsync");
+  }
+
+  // Issue: http://code.google.com/p/google-web-toolkit/issues/detail?id=7846
+  public void _suppressed_testLateFail() {
+    // Kickoff timer to fail the test in the middle of next one.
+    failLater("testLateFail", 2000);
+  }
+
+  /**
+   * Second half of the previous test.
+   */
+  public void _suppressed_testLateFail_assert() {
+    delayTestFinish(3000);
+    finishTestLater(2500);
+    // fail() call from previous test case should not cause a failure here.
+  }
+
+  public void testLateFinish() {
+    // Kickoff timer to finish test in the middle of next one.
+    finishTestLater(2000);
+  }
+
+  /**
+   * Second half of the previous test.
+   */
+  @ExpectedFailure(withType = TimeoutException.class)
+  public void testLateFinish_assert() {
+    delayTestFinish(3000);
+    // finishTest() call from previous test case should not prevent the timeout here.
+  }
+
+  public void testSpuriousFinishTest() {
+    try {
+      finishTest();
+      fail("finishTest should have failed");
+    } catch (IllegalStateException e) {
+    }
+  }
+
+  @ExpectedFailure(withType = TimeoutException.class)
+  public void testTimeoutAsync() {
+    delayTestFinish(100);
+    finishTestLater(200);
+  }
+
+  public void testNormalAsync() {
+    delayTestFinish(200);
+    finishTestLater(100);
+  }
+
+  public void testRepeatingNormalAsync() {
+    delayTestFinish(200);
+    new Timer() {
+      private int i = 0;
+
+      public void run() {
+        if (++i < 4) {
+          delayTestFinish(200);
+        } else {
+          cancel();
+          finishTest();
+        }
+      }
+    }.scheduleRepeating(100);
+  }
+
+  // Call delayTestFinish() with enough time so that failLater() will definitely fail.
+  private void delayTestFinish() {
+    delayTestFinish(2500);
+  }
+
+  private void failLater(String failMsg) {
+    failLater(failMsg, 100);
+  }
+
+  private void failLater(final String failMsg, int delay) {
+    new Timer() {
+      @Override
+      public void run() {
+        failNow(failMsg);
+      }
+    }.schedule(delay);
+  }
+
+  private void failNow(String failMsg) {
+    fail("Expected failure (" + failMsg + ")");
+  }
+
+  private void finishTestLater() {
+    finishTestLater(1);
+  }
+
+  private void finishTestLater(int delay) {
+    new Timer() {
+      @Override
+      public void run() {
+        finishTest();
+      }
+    }.schedule(delay);
+  }
+
+  // Trigger a test failure synchronously, but from within an event handler.
+  // (The exception thrown from fail() will get caught by the GWT UncaughtExceptionHandler).
+  private void synchronousFailure(final String failMsg) {
+    ButtonElement btn = Document.get().createPushButtonElement();
+    Document.get().getBody().appendChild(btn);
+    Event.sinkEvents(btn, Event.ONCLICK);
+
+    EventListener listener = new EventListener() {
+      public void onBrowserEvent(Event event) {
+        failNow(failMsg);
+      }
+    };
+
+    DOM.setEventListener(btn.<com.google.gwt.user.client.Element>cast(), listener);
+    btn.click();
+  }
+}
diff --git a/user/test/com/google/gwt/junit/client/GWTTestCaseSetupTearDownTest.java b/user/test/com/google/gwt/junit/client/GWTTestCaseSetupTearDownTest.java
new file mode 100644
index 0000000..d93cef2
--- /dev/null
+++ b/user/test/com/google/gwt/junit/client/GWTTestCaseSetupTearDownTest.java
@@ -0,0 +1,146 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.junit.client;
+
+import static com.google.gwt.junit.client.GWTTestCaseSetupTearDownTest.SetUpTearDownState.SETUP;
+import static com.google.gwt.junit.client.GWTTestCaseSetupTearDownTest.SetUpTearDownState.TEARDOWN;
+import static com.google.gwt.junit.client.GWTTestCaseSetupTearDownTest.SetUpTearDownState.TESTCASE;
+
+import com.google.gwt.junit.ExpectedFailure;
+import com.google.gwt.user.client.Timer;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * This class tests {@link GWTTestCase#setUp()} and {@link GWTTestCase#tearDown()}.
+ *
+ * Note: This test requires some test methods to be executed in a specific order.
+ */
+public class GWTTestCaseSetupTearDownTest extends GWTTestCase {
+
+  public String getModuleName() {
+    return "com.google.gwt.junit.JUnit";
+  }
+
+  /**
+   * Tracks setup, teardown and testcase runs.
+   */
+  protected enum SetUpTearDownState {
+    SETUP, TEARDOWN, TESTCASE
+  }
+
+  private static List<SetUpTearDownState> executions = new ArrayList<SetUpTearDownState>();
+
+  @Override
+  protected void gwtSetUp() {
+    executions.add(SETUP);
+  }
+
+  @Override
+  protected void gwtTearDown() {
+    executions.add(TEARDOWN);
+  }
+
+  /**
+   * This pseudo testcase for recording setup/testcase/teardown order.
+   */
+  public void testSetUpTearDown() {
+    executions.add(TESTCASE);
+  }
+
+  /**
+   * Delays test finish.
+   */
+  public void testSetUpTearDownAsync() {
+    delayTestFinish(1000);
+    new Timer() {
+      @Override
+      public void run() {
+        executions.add(TESTCASE);
+        finishTest();
+      }
+    }.schedule(1);
+  }
+
+  /**
+   * Fails.
+   */
+  @ExpectedFailure
+  public void testSetUpTearDownFail() {
+    executions.add(TESTCASE);
+    fail();
+  }
+
+  /**
+   * Fails with delayed test finish.
+   */
+  @ExpectedFailure(withMessage = "testSetUpTearDownFailAsync")
+  public void testSetUpTearDownFailSync() {
+    executions.add(TESTCASE);
+    delayTestFinish(1000);
+    fail("testSetUpTearDownFailAsync");
+  }
+
+  /**
+   * Fails async.
+   */
+  @ExpectedFailure(withMessage = "testSetUpTearDownFailAsync")
+  public void testSetUpTearDownFailAsync() {
+    delayTestFinish(1000);
+    new Timer() {
+      @Override
+      public void run() {
+        executions.add(TESTCASE);
+        fail("testSetUpTearDownFailAsync");
+      }
+    }.schedule(1);
+  }
+
+  /**
+   * Times out async.
+   */
+  @ExpectedFailure(withType = TimeoutException.class)
+  public void testSetUpTearDownTimeout() {
+    executions.add(TESTCASE);
+    delayTestFinish(1);
+  }
+
+  /**
+   * This is the last test to be is executed (under_score forces that). Will assert all setups &
+   * teardowns.
+   */
+  public void test_assertAllSetUpTearDowns() {
+    // These list needs to kept in alphabetical order for correct failure messaging.
+    final String[] testCases = {
+        "testSetUpTearDown",
+        "testSetUpTearDownAsync",
+        "testSetUpTearDownFail",
+        "testSetUpTearDownFailAsync",
+        "testSetUpTearDownFailSync",
+        "testSetUpTearDownTimeout"};
+
+    Iterator<SetUpTearDownState> iterator = executions.iterator();
+    for (String testCase : testCases) {
+      assertSame(testCase, SETUP, iterator.next());
+      assertSame(testCase, TESTCASE, iterator.next());
+      assertSame(testCase, TEARDOWN, iterator.next());
+    }
+    assertSame(SETUP, iterator.next()); // one last setup call for this test case
+    assertFalse(iterator.hasNext());
+  }
+}
diff --git a/user/test/com/google/gwt/junit/client/GWTTestCaseTest.java b/user/test/com/google/gwt/junit/client/GWTTestCaseTest.java
index 2d151f4..1146b89 100644
--- a/user/test/com/google/gwt/junit/client/GWTTestCaseTest.java
+++ b/user/test/com/google/gwt/junit/client/GWTTestCaseTest.java
@@ -1,12 +1,12 @@
 /*
  * Copyright 2007 Google Inc.
- * 
+ *
  * Licensed 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
@@ -20,43 +20,22 @@
  */
 package com.google.gwt.junit.client;
 
-import static com.google.gwt.junit.client.GWTTestCaseTest.SetUpTearDownState.INITIAL;
-import static com.google.gwt.junit.client.GWTTestCaseTest.SetUpTearDownState.IS_SETUP;
-import static com.google.gwt.junit.client.GWTTestCaseTest.SetUpTearDownState.IS_TORNDOWN;
-
 import com.google.gwt.core.client.GWT;
+import com.google.gwt.core.client.JavaScriptException;
 import com.google.gwt.junit.DoNotRunWith;
+import com.google.gwt.junit.ExpectedFailure;
 import com.google.gwt.junit.Platform;
-import com.google.gwt.user.client.Timer;
 
 import junit.framework.AssertionFailedError;
 
+import java.util.Collections;
+
 /**
- * This class tests our implementation of the GWTTestCase class which provides
- * the behavior of TestCase that is necessary in GWT.
+ * This class tests our implementation of the GWTTestCase class which provides the behavior of
+ * TestCase that is necessary in GWT.
  */
 public class GWTTestCaseTest extends GWTTestCase {
 
-  /**
-   * Tracks whether or not setup and teardown have run.
-   */
-  protected enum SetUpTearDownState {
-    INITIAL, IS_SETUP, IS_TORNDOWN
-  }
-
-  /**
-   * If non-null, records an error related to setup/teardown that could not have
-   * been caught during normal test execution.
-   */
-  private static String outOfBandError = null;
-
-  /**
-   * These two variables test the retry functionality, currently used with
-   * HtmlUnit.
-   */
-  private static boolean attemptedOnce = false;
-  private static boolean htmlunitMode = true;
-
   private static void assertNotEquals(double a, double b, double delta) {
     boolean failed = false;
     try {
@@ -67,8 +46,7 @@
     }
 
     if (!failed) {
-      fail("Expected failure for assertEquals(" + a + ", " + b + ", " + delta
-          + ")");
+      fail("Expected failure for assertEquals(" + a + ", " + b + ", " + delta + ")");
     }
   }
 
@@ -82,20 +60,35 @@
     }
 
     if (!failed) {
-      fail("Expected failure for assertEquals(" + a + ", " + b + ", " + delta
-          + ")");
+      fail("Expected failure for assertEquals(" + a + ", " + b + ", " + delta + ")");
     }
   }
-
-  /**
-   * Tracks whether this test has been setup and torn down.
-   */
-  protected SetUpTearDownState setupTeardownFlag = INITIAL;
+  
+  private Object obj1 = Collections.nCopies(1, "data");
+  private Object obj2 = Collections.nCopies(2, "data");
+  private Object obj1Equal = Collections.nCopies(1, "data");
 
   public String getModuleName() {
     return "com.google.gwt.junit.JUnit";
   }
 
+  @ExpectedFailure(withMessage = "testFail")
+  public void testFail() {
+    fail("testFail");
+  }
+
+  @ExpectedFailure(withType = Exception.class)
+  public void testThrowsException() throws Exception {
+    throw new Exception();
+  }
+
+  // Fails in 'web' mode.
+  // Issue: http://code.google.com/p/google-web-toolkit/issues/detail?id=7847
+  @ExpectedFailure(withType = JavaScriptException.class)
+  public void _suppressed_testThrowsNonSerializableException() {
+    throw new JavaScriptException("name", "desc");
+  }
+
   public void testAssertEqualsDouble() {
     assertEquals(0.0, 0.0, 0.0);
     assertEquals(1.1, 1.1, 0.0);
@@ -130,241 +123,126 @@
     assertNotEquals(-2.0f, -1.0f, 0.1f);
   }
 
-  /**
-   * 
-   */
   public void testAssertEqualsIntInt() {
     assertEquals(5, 5);
-
-    boolean exWasThrown = false;
-    try {
-      assertEquals(5, 4);
-    } catch (Throwable ex) {
-      exWasThrown = true;
-      if (!(ex instanceof AssertionFailedError)) {
-        fail("Unexpected type of exception during assertEquals(int,int) testing");
-      }
-    }
-
-    if (!exWasThrown) {
-      fail("No exception was thrown during assertEquals(int,int) testing");
-    }
+    assertEquals("msg", 5, 5);
   }
 
-  /**
-   * 
-   */
+  @ExpectedFailure
+  public void testAssertEqualsIntIntFail() {
+    assertEquals(5, 4);
+  }
+
+  @ExpectedFailure(withMessage = "msg")
+  public void testAssertEqualsIntIntFailWithMessage() {
+    assertEquals("msg", 5, 4);
+  }
+
   public void testAssertEqualsObjectObject() {
-    Object obj1 = "String";
-
-    assertEquals(obj1, obj1);
-
-    boolean exWasThrown = false;
-    try {
-      Object obj2 = "not String";
-      assertEquals(obj1, obj2);
-    } catch (Throwable ex) {
-      exWasThrown = true;
-      if (!(ex instanceof AssertionFailedError)) {
-        fail("Unexpected type of exception during assertEquals(String,String) testing");
-      }
-    }
-
-    if (!exWasThrown) {
-      fail("No exception was thrown during assertEquals(String,String) testing");
-    }
-  }
-
-  /**
-   * 
-   */
-  public void testAssertEqualsStringIntInt() {
-    assertEquals("", 5, 5);
-
-    boolean exWasThrown = false;
-    try {
-      assertEquals("hello", 5, 4);
-    } catch (Throwable ex) {
-      exWasThrown = true;
-      if (!(ex instanceof AssertionFailedError)) {
-        fail("Unexpected type of exception during assertEquals(String,int,int) testing");
-      }
-    }
-
-    if (!exWasThrown) {
-      fail("No exception was thrown during assertEquals(String,int,int) testing");
-    }
-  }
-
-  /**
-   * 
-   */
-  public void testAssertEqualsStringObjectObject() {
-    Object obj1 = "String";
-
+    assertEquals(obj1, obj1Equal);
     assertEquals("msg", obj1, obj1);
-
-    boolean exWasThrown = false;
-    try {
-      Object obj2 = "not String";
-      assertEquals("msg", obj1, obj2);
-    } catch (Throwable ex) {
-      exWasThrown = true;
-      if (!(ex instanceof AssertionFailedError)) {
-        fail("Unexpected type of exception during assertEquals(String,Object,Object) testing");
-      }
-    }
-
-    if (!exWasThrown) {
-      fail("No exception was thrown during assertEquals(String,Object,Object) testing");
-    }
   }
 
-  /**
-   * 
-   */
+  @ExpectedFailure
+  public void testAssertEqualsObjectObjectFail() {
+    assertEquals(obj1, obj2);
+  }
+
+  @ExpectedFailure(withMessage = "msg")
+  public void testAssertEqualsObjectObjectFailWithMessage() {
+    assertEquals("msg", obj1, obj2);
+  }
+
   public void testAssertFalse() {
-    // Should not fail
     assertFalse(false);
-
-    // Should not fail
-    assertFalse("We should be okay", false);
-
-    boolean exWasThrown = false;
-    try {
-      // Should fail
-      assertFalse(true);
-    } catch (Throwable ex) {
-      exWasThrown = true;
-      if (!(ex instanceof AssertionFailedError)) {
-        fail("Unexpected type of exception during assertFalse(boolean) testing");
-      }
-    }
-
-    if (!exWasThrown) {
-      fail("No exception was thrown");
-    }
-    exWasThrown = false;
-
-    try {
-      // Should fail
-      assertFalse("This should be okay", true);
-    } catch (Throwable ex) {
-      exWasThrown = true;
-      if (ex instanceof AssertionFailedError) {
-        return;
-      }
-    }
-
-    if (!exWasThrown) {
-      fail("No exception was thrown");
-    } else {
-      fail("Unexpected exception during assertFalse(String, boolean) testing");
-    }
+    assertFalse("msg", false);
   }
 
-  /**
-   * 
-   */
+  @ExpectedFailure
+  public void testAssertFalseFail() {
+    assertFalse(true);
+  }
+
+  @ExpectedFailure(withMessage = "msg")
+  public void testAssertFalseFailWithMessage() {
+    assertFalse("msg", true);
+  }
+
   public void testAssertNotNull() {
     assertNotNull("Hello");
-    assertNotNull("We should be okay", "Hello");
-
-    try {
-      assertNotNull("Hello");
-    } catch (Throwable ex) {
-      if (!(ex instanceof AssertionFailedError)) {
-        fail("Unexpected type of exception during assertNotNull(Object) testing");
-      }
-    }
-
-    try {
-      assertNotNull("This should be okay", null);
-    } catch (Throwable ex) {
-      if (ex instanceof AssertionFailedError) {
-        return;
-      }
-    }
-
-    fail("Unexpected exception during assertNotNull(String, Object) testing");
+    assertNotNull("msg", "Hello");
   }
 
-  /**
-   * 
-   */
+  @ExpectedFailure
+  public void testAssertNotNullFail() {
+    assertNotNull(null);
+  }
+
+  @ExpectedFailure(withMessage = "msg")
+  public void testAssertNotNullStringFailWithMessage() {
+    assertNotNull("msg", null);
+  }
+
   public void testAssertNotSame() {
-    Object obj1 = "Foo";
-    Object obj2 = "Bar";
-
     assertNotSame(obj1, obj2);
-    assertNotSame("Hello", obj1, obj2);
-
-    try {
-      assertNotSame(obj1, "Baz");
-    } catch (Throwable ex) {
-      if (!(ex instanceof AssertionFailedError)) {
-        fail("Unexpected type of exception");
-      }
-    }
+    assertNotSame("msg", obj1, obj2);
+    assertNotSame(obj1, obj1Equal);
+    assertNotSame("msg", obj1, obj1Equal);
   }
 
-  /**
-   * 
-   */
+  @ExpectedFailure
+  public void testAssertNotSameFail() {
+    assertNotSame(obj1, obj1);
+  }
+
+  @ExpectedFailure(withMessage = "msg")
+  public void testAssertNotSameFailWithMessage() {
+    assertNotSame("msg", obj1, obj1);
+  }
+
   public void testAssertNull() {
     assertNull(null);
-    assertNull("We should be okay", null);
-
-    try {
-      assertNull("Hello");
-    } catch (Throwable ex) {
-      if (!(ex instanceof AssertionFailedError)) {
-        fail("Unexpected type of exception during assertNull(Object) testing");
-      }
-    }
-
-    try {
-      assertNull("This should be okay", "Hello");
-    } catch (Throwable ex) {
-      if (ex instanceof AssertionFailedError) {
-        return;
-      }
-    }
-
-    fail("Unexpected exception during assertNull(String, Object) testing");
+    assertNull("msg", null);
   }
 
-  /**
-   * 
-   */
+  @ExpectedFailure
+  public void testAssertNullFail() {
+    assertNull("Hello");
+  }
+
+  @ExpectedFailure(withMessage = "msg")
+  public void testAssertNullFailWithMessage() {
+    assertNull("msg", "Hello");
+  }
+
   public void testAssertSame() {
-    // TODO(mmendez): finish this test
+    assertSame(obj1, obj1);
+    assertSame("msg", obj1, obj1);
   }
 
-  /**
-   * 
-   */
+  @ExpectedFailure
+  public void testAssertSameFail() {
+    assertSame(obj1, obj1Equal);
+  }
+
+  @ExpectedFailure(withMessage = "msg")
+  public void testAssertSameFailWithMessage() {
+    assertSame("msg", obj1, obj1Equal);
+  }
+
   public void testAssertTrue() {
     assertTrue(true);
-    assertTrue("We should be okay", true);
+    assertTrue("msg", true);
+  }
 
-    try {
-      assertTrue(false);
-    } catch (Throwable ex) {
-      if (!(ex instanceof AssertionFailedError)) {
-        fail("Unexpected type of exception during assertFalse(boolean) testing");
-      }
-    }
+  @ExpectedFailure
+  public void testAssertTrueFail() {
+    assertTrue(false);
+  }
 
-    try {
-      assertTrue("This should be okay", false);
-    } catch (Throwable ex) {
-      if (ex instanceof AssertionFailedError) {
-        return;
-      }
-    }
-
-    fail("Unexpected exception during assertTrue(String, boolean) testing");
+  @ExpectedFailure(withMessage = "msg")
+  public void testAssertTrueFailWithMessage() {
+    assertTrue("msg", false);
   }
 
   /**
@@ -382,74 +260,4 @@
   public void testPlatformProd() {
     assertTrue("Should not run in prod mode", !GWT.isScript());
   }
-
-  public void testSetUpTearDown() throws Exception {
-    assertSame(IS_SETUP, setupTeardownFlag);
-    tearDown();
-    assertSame(IS_TORNDOWN, setupTeardownFlag);
-    setUp();
-    assertSame(IS_SETUP, setupTeardownFlag);
-    gwtTearDown();
-    assertSame(IS_TORNDOWN, setupTeardownFlag);
-    gwtSetUp();
-    assertSame(IS_SETUP, setupTeardownFlag);
-  }
-
-  public void testSetUpTearDownAsync() {
-    assertSame(IS_SETUP, setupTeardownFlag);
-    delayTestFinish(1000);
-    new Timer() {
-      @Override
-      public void run() {
-        assertSame(IS_SETUP, setupTeardownFlag);
-        finishTest();
-        if (setupTeardownFlag != IS_TORNDOWN) {
-          recordOutofBandError("Bad async success tearDown behavior not catchable by JUnit");
-        }
-      }
-    }.schedule(1);
-  }
-
-  public void testSetUpTearDownAsyncHadNoOutOfBandErrors() {
-    assertNoOutOfBandErrorsAsync();
-  }
-
-  @Override
-  protected void gwtSetUp() throws Exception {
-    setupTeardownFlag = IS_SETUP;
-  }
-
-  @Override
-  protected void gwtTearDown() throws Exception {
-    if (setupTeardownFlag != IS_SETUP) {
-      // Must use window alert to grind the test to a halt in this failure.
-      recordOutofBandError("Bad tearDown behavior not catchable by JUnit");
-    }
-    setupTeardownFlag = IS_TORNDOWN;
-  }
-
-  protected static void recordOutofBandError(String outOfBandError) {
-    GWTTestCaseTest.outOfBandError = outOfBandError;
-  }
-
-  /**
-   * Call this method to asynchronously check for out of band errors in the
-   * previous test.
-   */
-  protected void assertNoOutOfBandErrorsAsync() {
-    // Give things a chance to settle down.
-    delayTestFinish(10000);
-    new Timer() {
-      @Override
-      public void run() {
-        if (outOfBandError != null) {
-          String msg = outOfBandError;
-          outOfBandError = null;
-          fail(msg);
-        }
-        finishTest();
-      }
-
-    }.schedule(1000);
-  }
 }
diff --git a/user/test/com/google/gwt/junit/client/TestManualAsync.java b/user/test/com/google/gwt/junit/client/TestManualAsync.java
deleted file mode 100644
index 907d252..0000000
--- a/user/test/com/google/gwt/junit/client/TestManualAsync.java
+++ /dev/null
@@ -1,347 +0,0 @@
-/*
- * Copyright 2007 Google Inc.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.junit.client;
-
-import static com.google.gwt.junit.client.GWTTestCaseTest.SetUpTearDownState.IS_SETUP;
-import static com.google.gwt.junit.client.GWTTestCaseTest.SetUpTearDownState.IS_TORNDOWN;
-
-import com.google.gwt.dom.client.ButtonElement;
-import com.google.gwt.dom.client.Document;
-import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Event;
-import com.google.gwt.user.client.EventListener;
-import com.google.gwt.user.client.Timer;
-
-/**
- * This test must be run manually to inspect for correct results. Many of these
- * tests are designed to fail in specific ways, the rest should succeed. The
- * name of each test method indicates how it should behave.
- */
-public class TestManualAsync extends GWTTestCaseTest {
-
-  // The following tests (all prefixed with test_) are intended to test the
-  // interaction of synchronous failures (within event handlers) with various
-  // other types of failures and successes. All of them are expected to fail
-  // with the message "Expected failure".
-  //
-  // Nomenclature for these tests:
-  // DTF => delayTestFinish()
-  // SF => synchronous failure (from event handler)
-  // FT => finishTest()
-  // F => fail()
-  // R => return;
-
-  public void test_dtf_sf() {
-    delayTestFinish();
-    synchronousFailure("test_dtf_sf");
-  }
-
-  public void test_dtf_sf_f() {
-    delayTestFinish();
-    synchronousFailure("test_dtf_sf_f");
-    failNow("test_dtf_sf_f");
-  }
-
-  public void test_dtf_sf_ft() {
-    delayTestFinish();
-    synchronousFailure("test_dtf_sf_ft");
-    finishTest();
-  }
-
-  public void test_dtf_sf_r_f() {
-    delayTestFinish();
-    synchronousFailure("test_dtf_sf_r_f");
-    failLater("test_dtf_sf_r_f");
-  }
-
-  public void test_dtf_sf_r_ft() {
-    delayTestFinish();
-    synchronousFailure("test_dtf_sf_r_ft");
-    finishTestLater();
-  }
-
-  public void test_sf() {
-    synchronousFailure("test_sf");
-  }
-
-  public void test_sf_dtf_f() {
-    synchronousFailure("test_sf_dtf_f");
-    delayTestFinish();
-    failNow("test_sf_dtf_f");
-  }
-
-  public void test_sf_dtf_ft() {
-    synchronousFailure("test_sf_dtf_ft");
-    delayTestFinish();
-    finishTest();
-  }
-
-  public void test_sf_dtf_r_f() {
-    synchronousFailure("test_sf_dtf_r_f");
-    delayTestFinish();
-    failLater("test_sf_dtf_r_f");
-  }
-
-  public void test_sf_dtf_r_ft() {
-    synchronousFailure("test_sf_dtf_r_ft");
-    delayTestFinish(5 * 60 * 1000);
-    finishTestLater();
-  }
-
-  public void test_sf_f() {
-    synchronousFailure("test_sf_f");
-    failNow("test_sf_f");
-  }
-
-  /**
-   * Fails normally.
-   */
-  public void testDelayFail() {
-    delayTestFinish(100);
-    fail("Expected failure");
-    finishTest();
-  }
-
-  /**
-   * Completes normally.
-   */
-  public void testDelayNormal() {
-    delayTestFinish(100);
-    finishTest();
-  }
-
-  /**
-   * Fails normally.
-   */
-  public void testFail() {
-    fail("Expected failure");
-  }
-
-  /**
-   * Async fails.
-   */
-  public void testFailAsync() {
-    delayTestFinish(1000);
-    new Timer() {
-      public void run() {
-        fail("Expected failure");
-      }
-    }.schedule(100);
-  }
-
-  /**
-   * Tests the case where a JUnit exception is thrown from an event handler, but
-   * after this test method has completed successfully.
-   * 
-   * This test should *not* fail, but the next one should.
-   */
-  public void testLateFailPart1() {
-    // Leave the test in synchronous mode, but crank up a timer to fail in 2.5s.
-    new Timer() {
-      @Override
-      public void run() {
-        // This fail should be called during the next test.
-        fail();
-      }
-    }.schedule(2500);
-
-    // We don't actually assert anything here. This test exists solely to make
-    // the next one fail.
-  }
-
-  /**
-   * Second half of the previous test.
-   */
-  public void testLateFailPart2() {
-    // Go into async mode from 5s, finishing in 4. The timer from the previous
-    // test will go off and call fail() before finishTest() is called.
-    delayTestFinish(5000);
-    new Timer() {
-      @Override
-      public void run() {
-        finishTest();
-      }
-    }.schedule(4000);
-  }
-
-  /**
-   * Completes normally.
-   */
-  public void testNormal() {
-  }
-
-  /**
-   * Completes async.
-   */
-  public void testNormalAsync() {
-    delayTestFinish(200);
-    new Timer() {
-      public void run() {
-        finishTest();
-      }
-    }.schedule(100);
-  }
-
-  /**
-   * Completes async.
-   */
-  public void testRepeatingNormal() {
-    delayTestFinish(200);
-    new Timer() {
-      private int i = 0;
-
-      public void run() {
-        if (++i < 4) {
-          delayTestFinish(200);
-        } else {
-          cancel();
-          finishTest();
-        }
-      }
-    }.scheduleRepeating(100);
-  }
-
-  /**
-   * Fails async.
-   */
-  public void testSetUpTearDownFailAsync() {
-    assertEquals(IS_SETUP, setupTeardownFlag);
-    delayTestFinish(1000);
-    new Timer() {
-      @Override
-      public void run() {
-        fail("Expected failure");
-      }
-    }.schedule(1);
-
-    new Timer() {
-      @Override
-      public void run() {
-        /*
-         * The failing test should have triggered tearDown.
-         */
-        if (setupTeardownFlag != IS_TORNDOWN) {
-          recordOutofBandError("Bad async failure tearDown behavior not catchable by JUnit");
-        }
-      }
-    }.schedule(100);
-  }
-
-  /**
-   * Completes async.
-   */
-  public void testSetUpTearDownFailAsyncHadNoOutOfBandErrors() {
-    assertNoOutOfBandErrorsAsync();
-  }
-
-  /**
-   * Times out async.
-   */
-  public void testSetUpTearDownTimeoutAsync() {
-    assertSame(IS_SETUP, setupTeardownFlag);
-    delayTestFinish(1);
-    new Timer() {
-      @Override
-      public void run() {
-        /*
-         * The failing test should have triggered tearDown.
-         */
-        if (setupTeardownFlag != IS_TORNDOWN) {
-          recordOutofBandError("Bad async timeout tearDown behavior not catchable by JUnit");
-        }
-      }
-    }.schedule(100);
-  }
-
-  /**
-   * Completes async.
-   */
-  public void testSetUpTearDownTimeoutAsyncHadNoOutOfBandErrors() {
-    assertNoOutOfBandErrorsAsync();
-  }
-
-  /**
-   * Completes normally.
-   */
-  public void testSpuriousFinishTest() {
-    try {
-      finishTest();
-      fail("Unexpected failure");
-    } catch (IllegalStateException e) {
-    }
-  }
-
-  /**
-   * Times out.
-   */
-  public void testTimeoutAsync() {
-    delayTestFinish(100);
-    new Timer() {
-      public void run() {
-        finishTest();
-      }
-    }.schedule(200);
-  }
-
-  // Call delayTestFinish() with enough time so that failLater() will
-  // definitely fail.
-  private void delayTestFinish() {
-    delayTestFinish(2500);
-  }
-
-  // Fail asynchronously after a small amount of time.
-  private void failLater(final String failMsg) {
-    new Timer() {
-      @Override
-      public void run() {
-        failNow(failMsg);
-      }
-    }.schedule(100);
-  }
-
-  // Fail synchronously with an "expected failure" message.
-  private void failNow(String failMsg) {
-    fail("Expected failure (" + failMsg + ")");
-  }
-
-  // Finish the test asynchronously after a small amount of time.
-  private void finishTestLater() {
-    new Timer() {
-      @Override
-      public void run() {
-        finishTest();
-      }
-    }.schedule(1);
-  }
-
-  // Trigger a test failure synchronously, but from within an event handler.
-  // (The exception thrown from fail() will get caught by the GWT
-  // UncaughtExceptionHandler).
-  private void synchronousFailure(final String failMsg) {
-    ButtonElement btn = Document.get().createButtonElement();
-    Document.get().getBody().appendChild(btn);
-    Event.sinkEvents(btn, Event.ONCLICK);
-
-    EventListener listener = new EventListener() {
-      public void onBrowserEvent(Event event) {
-        failNow(failMsg);
-      }
-    };
-
-    DOM.setEventListener(btn.<com.google.gwt.user.client.Element>cast(), listener);
-    btn.click();
-  }
-}
diff --git a/user/test/com/google/gwt/layout/client/LayoutTest.java b/user/test/com/google/gwt/layout/client/LayoutTest.java
index eac839f..129ddcc 100644
--- a/user/test/com/google/gwt/layout/client/LayoutTest.java
+++ b/user/test/com/google/gwt/layout/client/LayoutTest.java
@@ -35,8 +35,8 @@
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.layout.client.Layout.Alignment;
 import com.google.gwt.layout.client.Layout.Layer;
+import com.google.gwt.user.client.ResizeHelper;
 import com.google.gwt.user.client.Window;
-import com.google.gwt.user.client.WindowTest;
 
 /**
  * Tests for the {@link Layout} class.
@@ -56,7 +56,6 @@
   private Element wrapper0, wrapper1;
   private Layout layout;
   private Layer layer0, layer1;
-  private boolean resized;
 
   @Override
   public String getModuleName() {
@@ -307,7 +306,7 @@
   @DoNotRunWith(Platform.HtmlUnitLayout)
   public void testStaticConstraints() {
     // This test assumes enough size. Ignore it if size cannot be guaranteed.
-    if (!resized) {
+    if (!ResizeHelper.isResizeSupported()) {
       return;
     }
 
@@ -350,7 +349,7 @@
   @DoNotRunWith(Platform.HtmlUnitLayout)
   public void testUnits() {
     // This test assumes enough size. Ignore it if size cannot be guaranteed.
-    if (!resized) {
+    if (!ResizeHelper.isResizeSupported()) {
       return;
     }
 
@@ -440,7 +439,7 @@
   @Override
   protected void gwtSetUp() throws Exception {
     // ensure enough sizes for this test
-    resized = WindowTest.ResizeHelper.resizeTo(800, 600);
+    ResizeHelper.resizeTo(800, 600);
 
     Window.enableScrolling(false);
 
@@ -466,7 +465,6 @@
     Window.enableScrolling(true);
     Document.get().getBody().removeChild(parent);
     layout.onDetach();
-    WindowTest.ResizeHelper.restoreSize();
   }
 
   private void assertLeftRightTopBottomUnitsMakeSense(Element elem) {
diff --git a/user/test/com/google/gwt/resources/css/CssNodeClonerTest.java b/user/test/com/google/gwt/resources/css/CssNodeClonerTest.java
index 7467a60..b2e8f8e 100644
--- a/user/test/com/google/gwt/resources/css/CssNodeClonerTest.java
+++ b/user/test/com/google/gwt/resources/css/CssNodeClonerTest.java
@@ -56,6 +56,16 @@
     }
   }
 
+  public void testCloneMedia() throws UnableToCompleteException {
+    CssStylesheet sheet = GenerateCssAst.exec(TreeLogger.NULL,
+        getClass().getClassLoader().getResource(
+            "com/google/gwt/resources/css/media.css"));
+
+    CssStylesheet cloned = CssNodeCloner.clone(CssStylesheet.class, sheet);
+
+    assertEquals("@media print, standard {\n}\n", cloned.toString());
+  }
+
   public void testCloneProperty() {
     CssProperty.IdentValue value = new CssProperty.IdentValue("value");
     CssProperty p = new CssProperty("name", value, true);
diff --git a/user/test/com/google/gwt/resources/css/media.css b/user/test/com/google/gwt/resources/css/media.css
new file mode 100644
index 0000000..fef5ea5
--- /dev/null
+++ b/user/test/com/google/gwt/resources/css/media.css
@@ -0,0 +1,17 @@
+/*
+ * Copyright 2010 Google Inc.
+ * 
+ * Licensed 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.
+ */
+
+@media print, standard {}
diff --git a/user/test/com/google/gwt/uibinder/attributeparsers/StrictAttributeParserTest.java b/user/test/com/google/gwt/uibinder/attributeparsers/StrictAttributeParserTest.java
index f8ec5e2..81af5a1 100644
--- a/user/test/com/google/gwt/uibinder/attributeparsers/StrictAttributeParserTest.java
+++ b/user/test/com/google/gwt/uibinder/attributeparsers/StrictAttributeParserTest.java
@@ -31,13 +31,13 @@
   public void testSimple() {
     String before = "{able.baker.charlie.prawns}";
     String expected = "able.baker().charlie().prawns()";
-    assertEquals(expected, converter.convert(before, new FieldReferenceDelegate(null)));
+    assertEquals(expected, converter.convert(before, new FieldReferenceDelegate()));
   }
   
   public void testNoneShouldFail() {
     String before = "able.baker.charlie.prawns";
     try {
-      converter.convert(before, new FieldReferenceDelegate(null));
+      converter.convert(before, new FieldReferenceDelegate());
       fail();
     } catch (IllegalFieldReferenceException e) {
       /* pass */
@@ -47,7 +47,7 @@
   public void testTooManyShouldFail() {
     String before = "{able.baker.charlie} {prawns.are.yummy}";
     try {
-      converter.convert(before, new FieldReferenceDelegate(null));
+      converter.convert(before, new FieldReferenceDelegate());
       fail();
     } catch (IllegalFieldReferenceException e) {
       /* pass */
@@ -57,7 +57,7 @@
   public void testMixedShouldFail() {
     String before = "{able.baker.charlie} prawns are still yummy}";
     try {
-      converter.convert(before, new FieldReferenceDelegate(null));
+      converter.convert(before, new FieldReferenceDelegate());
       fail();
     } catch (IllegalFieldReferenceException e) {
       /* pass */
diff --git a/user/test/com/google/gwt/user/MiscSuite.java b/user/test/com/google/gwt/user/MiscSuite.java
new file mode 100644
index 0000000..888f903
--- /dev/null
+++ b/user/test/com/google/gwt/user/MiscSuite.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.user;
+
+import com.google.gwt.junit.tools.GWTTestSuite;
+import com.google.gwt.layout.client.LayoutTest;
+import com.google.gwt.user.client.AsyncProxyTest;
+import com.google.gwt.user.client.CommandExecutorTest;
+import com.google.gwt.user.client.CookieTest;
+import com.google.gwt.user.client.DoubleClickEventSinkTest;
+import com.google.gwt.user.client.DragAndDropEventsSinkTest;
+import com.google.gwt.user.client.EventTest;
+import com.google.gwt.user.client.GestureEventSinkTest;
+import com.google.gwt.user.client.HistoryDisabledTest;
+import com.google.gwt.user.client.TouchEventSinkTest;
+import com.google.gwt.user.client.WindowTest;
+import com.google.gwt.user.datepicker.client.CalendarUtilTest;
+import com.google.gwt.user.datepicker.client.DateChangeEventTest;
+import com.google.gwt.user.rebind.ui.ImageBundleGeneratorTest;
+import com.google.gwt.xml.client.XMLTest;
+
+import junit.framework.Test;
+
+/**
+ * Various tests split out from UISuite because they're not in gwt.client.ui.
+ */
+public class MiscSuite {
+
+  public static Test suite() {
+    GWTTestSuite suite = new GWTTestSuite("Miscellaneous GWT tests");
+    suite.addTestSuite(AsyncProxyTest.class);
+    suite.addTestSuite(CalendarUtilTest.class);
+    suite.addTestSuite(CommandExecutorTest.class);
+    suite.addTestSuite(CookieTest.class);
+    suite.addTestSuite(DateChangeEventTest.class);
+    suite.addTestSuite(DoubleClickEventSinkTest.class);
+    suite.addTestSuite(DragAndDropEventsSinkTest.class);
+    suite.addTestSuite(EventTest.class);
+    suite.addTestSuite(GestureEventSinkTest.class);
+    suite.addTestSuite(HistoryDisabledTest.class);
+    suite.addTestSuite(ImageBundleGeneratorTest.class);
+    suite.addTestSuite(LayoutTest.class);
+    suite.addTestSuite(TouchEventSinkTest.class);
+    suite.addTestSuite(WindowTest.class);
+    suite.addTestSuite(XMLTest.class);
+    return suite;
+  }
+}
diff --git a/user/test/com/google/gwt/user/RPCSuite.java b/user/test/com/google/gwt/user/RPCSuite.java
index c2459a2..96b74fc 100644
--- a/user/test/com/google/gwt/user/RPCSuite.java
+++ b/user/test/com/google/gwt/user/RPCSuite.java
@@ -49,20 +49,6 @@
 import com.google.gwt.user.client.rpc.ValueTypesTest;
 import com.google.gwt.user.client.rpc.ValueTypesTestWithTypeObfuscation;
 import com.google.gwt.user.client.rpc.XsrfProtectionTest;
-import com.google.gwt.user.client.rpc.impl.ClientSerializationStreamReaderTest;
-import com.google.gwt.user.rebind.rpc.BlacklistTypeFilterTest;
-import com.google.gwt.user.rebind.rpc.SerializableTypeOracleBuilderTest;
-import com.google.gwt.user.rebind.rpc.TypeHierarchyUtilsTest;
-import com.google.gwt.user.server.Base64Test;
-import com.google.gwt.user.server.UtilTest;
-import com.google.gwt.user.server.rpc.AbstractXsrfProtectedServiceServletTest;
-import com.google.gwt.user.server.rpc.RPCRequestTest;
-import com.google.gwt.user.server.rpc.RPCServletUtilsTest;
-import com.google.gwt.user.server.rpc.RPCTest;
-import com.google.gwt.user.server.rpc.SerializationPolicyLoaderTest;
-import com.google.gwt.user.server.rpc.impl.LegacySerializationPolicyTest;
-import com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriterTest;
-import com.google.gwt.user.server.rpc.impl.StandardSerializationPolicyTest;
 
 import junit.framework.Test;
 
@@ -84,24 +70,7 @@
     GWTTestSuite suite = new GWTTestSuite(
         "Test for com.google.gwt.user.client.rpc");
 
-    // Non GWTTestCases
-    suite.addTestSuite(BlacklistTypeFilterTest.class);
-    suite.addTestSuite(SerializableTypeOracleBuilderTest.class);
-    suite.addTestSuite(TypeHierarchyUtilsTest.class);
-    suite.addTestSuite(RPCTest.class);
-    suite.addTestSuite(com.google.gwt.user.server.rpc.RemoteServiceServletTest.class);
-    suite.addTestSuite(LegacySerializationPolicyTest.class);
-    suite.addTestSuite(StandardSerializationPolicyTest.class);
-    suite.addTestSuite(SerializationPolicyLoaderTest.class);
-    suite.addTestSuite(RPCServletUtilsTest.class);
-    suite.addTestSuite(RPCRequestTest.class);
-    suite.addTestSuite(FailedRequestTest.class);
-    suite.addTestSuite(FailingRequestBuilderTest.class);
-    suite.addTestSuite(Base64Test.class);
-    suite.addTestSuite(UtilTest.class);
-    suite.addTestSuite(AbstractXsrfProtectedServiceServletTest.class);
-    suite.addTestSuite(ClientSerializationStreamReaderTest.class);
-    suite.addTestSuite(ServerSerializationStreamWriterTest.class);
+    // Non GWTTestCases: see RpcSuiteNoBrowser
 
     // GWTTestCases
     suite.addTestSuite(ValueTypesTest.class);
@@ -119,6 +88,8 @@
     suite.addTestSuite(RecursiveClassTest.class);
     suite.addTestSuite(TypeCheckedObjectsTest.class);
     suite.addTestSuite(XsrfProtectionTest.class);
+    suite.addTestSuite(FailedRequestTest.class);
+    suite.addTestSuite(FailingRequestBuilderTest.class);
 
     // This test turns on the type-elision feature of RPC
     suite.addTestSuite(ValueTypesTestWithTypeObfuscation.class);
diff --git a/user/test/com/google/gwt/user/RpcSuiteNoBrowser.java b/user/test/com/google/gwt/user/RpcSuiteNoBrowser.java
new file mode 100644
index 0000000..5756bcc
--- /dev/null
+++ b/user/test/com/google/gwt/user/RpcSuiteNoBrowser.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.user;
+
+import com.google.gwt.dev.BootStrapPlatform;
+import com.google.gwt.user.client.rpc.impl.ClientSerializationStreamReaderTest;
+import com.google.gwt.user.rebind.rpc.BlacklistTypeFilterTest;
+import com.google.gwt.user.rebind.rpc.SerializationUtilsTest;
+import com.google.gwt.user.rebind.rpc.SerializableTypeOracleBuilderTest;
+import com.google.gwt.user.rebind.rpc.TypeHierarchyUtilsTest;
+import com.google.gwt.user.server.Base64Test;
+import com.google.gwt.user.server.UtilTest;
+import com.google.gwt.user.server.rpc.AbstractXsrfProtectedServiceServletTest;
+import com.google.gwt.user.server.rpc.RPCRequestTest;
+import com.google.gwt.user.server.rpc.RPCServletUtilsTest;
+import com.google.gwt.user.server.rpc.RPCTest;
+import com.google.gwt.user.server.rpc.RPCTypeCheckTest;
+import com.google.gwt.user.server.rpc.RemoteServiceServletTest;
+import com.google.gwt.user.server.rpc.SerializationPolicyLoaderTest;
+import com.google.gwt.user.server.rpc.impl.LegacySerializationPolicyTest;
+import com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriterTest;
+import com.google.gwt.user.server.rpc.impl.StandardSerializationPolicyTest;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * RPC tests that don't extend GWTTestCase.
+ */
+public class RpcSuiteNoBrowser {
+
+  static {
+    /*
+     * Required for OS X Leopard. This call ensures we have a valid context
+     * ClassLoader. Many of the tests test low-level RPC mechanisms and rely on
+     * a ClassLoader to resolve classes and resources.
+     */
+    BootStrapPlatform.applyPlatformHacks();
+  }
+
+  public static Test suite() {
+    TestSuite suite = new TestSuite("Non-browser tests for com.google.gwt.user.client.rpc");
+    suite.addTestSuite(BlacklistTypeFilterTest.class);
+    suite.addTestSuite(SerializationUtilsTest.class);
+    suite.addTestSuite(SerializableTypeOracleBuilderTest.class);
+    suite.addTestSuite(TypeHierarchyUtilsTest.class);
+    suite.addTestSuite(RPCTest.class);
+    suite.addTestSuite(RPCTypeCheckTest.class);
+    suite.addTestSuite(RemoteServiceServletTest.class);
+    suite.addTestSuite(LegacySerializationPolicyTest.class);
+    suite.addTestSuite(StandardSerializationPolicyTest.class);
+    suite.addTestSuite(SerializationPolicyLoaderTest.class);
+    suite.addTestSuite(RPCServletUtilsTest.class);
+    suite.addTestSuite(RPCRequestTest.class);
+    suite.addTestSuite(Base64Test.class);
+    suite.addTestSuite(UtilTest.class);
+    suite.addTestSuite(AbstractXsrfProtectedServiceServletTest.class);
+    suite.addTestSuite(ClientSerializationStreamReaderTest.class);
+    suite.addTestSuite(ServerSerializationStreamWriterTest.class);
+    return suite;
+  }
+}
diff --git a/user/test/com/google/gwt/user/UISuite.java b/user/test/com/google/gwt/user/UISuite.java
deleted file mode 100644
index 9de41d8..0000000
--- a/user/test/com/google/gwt/user/UISuite.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * Copyright 2009 Google Inc.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.user;
-
-import com.google.gwt.junit.tools.GWTTestSuite;
-import com.google.gwt.layout.client.LayoutTest;
-import com.google.gwt.user.client.AsyncProxyTest;
-import com.google.gwt.user.client.CommandExecutorTest;
-import com.google.gwt.user.client.CookieTest;
-import com.google.gwt.user.client.DoubleClickEventSinkTest;
-import com.google.gwt.user.client.DragAndDropEventsSinkTest;
-import com.google.gwt.user.client.EventTest;
-import com.google.gwt.user.client.GestureEventSinkTest;
-import com.google.gwt.user.client.HistoryDisabledTest;
-import com.google.gwt.user.client.TouchEventSinkTest;
-import com.google.gwt.user.client.WindowTest;
-import com.google.gwt.user.client.ui.AbsolutePanelTest;
-import com.google.gwt.user.client.ui.AnchorTest;
-import com.google.gwt.user.client.ui.ButtonTest;
-import com.google.gwt.user.client.ui.CaptionPanelTest;
-import com.google.gwt.user.client.ui.CheckBoxTest;
-import com.google.gwt.user.client.ui.CompositeTest;
-import com.google.gwt.user.client.ui.CreateEventTest;
-import com.google.gwt.user.client.ui.CustomButtonTest;
-import com.google.gwt.user.client.ui.CustomScrollPanelTest;
-import com.google.gwt.user.client.ui.DOMRtlTest;
-import com.google.gwt.user.client.ui.DOMTest;
-import com.google.gwt.user.client.ui.DateBoxTest;
-import com.google.gwt.user.client.ui.DatePickerTest;
-import com.google.gwt.user.client.ui.DeckLayoutPanelTest;
-import com.google.gwt.user.client.ui.DeckPanelTest;
-import com.google.gwt.user.client.ui.DecoratedPopupTest;
-import com.google.gwt.user.client.ui.DecoratedStackPanelTest;
-import com.google.gwt.user.client.ui.DecoratedTabBarTest;
-import com.google.gwt.user.client.ui.DecoratedTabPanelTest;
-import com.google.gwt.user.client.ui.DecoratorPanelTest;
-import com.google.gwt.user.client.ui.DefaultSuggestionDisplayTest;
-import com.google.gwt.user.client.ui.DelegatingKeyboardListenerCollectionTest;
-import com.google.gwt.user.client.ui.DialogBoxTest;
-import com.google.gwt.user.client.ui.DirectionalTextHelperTest;
-import com.google.gwt.user.client.ui.DisclosurePanelTest;
-import com.google.gwt.user.client.ui.DockLayoutPanelRtlTest;
-import com.google.gwt.user.client.ui.DockLayoutPanelTest;
-import com.google.gwt.user.client.ui.DockPanelTest;
-import com.google.gwt.user.client.ui.ElementWrappingTest;
-import com.google.gwt.user.client.ui.FastStringMapTest;
-import com.google.gwt.user.client.ui.FileUploadTest;
-import com.google.gwt.user.client.ui.FiniteWidgetIteratorTest;
-import com.google.gwt.user.client.ui.FlexTableTest;
-import com.google.gwt.user.client.ui.FlowPanelTest;
-import com.google.gwt.user.client.ui.FocusPanelTest;
-import com.google.gwt.user.client.ui.FormPanelTest;
-import com.google.gwt.user.client.ui.GridTest;
-import com.google.gwt.user.client.ui.HTMLPanelTest;
-import com.google.gwt.user.client.ui.HTMLTest;
-import com.google.gwt.user.client.ui.HeaderPanelTest;
-import com.google.gwt.user.client.ui.HiddenTest;
-import com.google.gwt.user.client.ui.HistoryTest;
-import com.google.gwt.user.client.ui.HorizontalPanelTest;
-import com.google.gwt.user.client.ui.HorizontalSplitPanelTest;
-import com.google.gwt.user.client.ui.HyperlinkTest;
-import com.google.gwt.user.client.ui.ImageTest;
-import com.google.gwt.user.client.ui.InlineHTMLTest;
-import com.google.gwt.user.client.ui.InlineHyperlinkTest;
-import com.google.gwt.user.client.ui.IsWidgetTest;
-import com.google.gwt.user.client.ui.LabelTest;
-import com.google.gwt.user.client.ui.LazyPanelTest;
-import com.google.gwt.user.client.ui.LinearPanelTest;
-import com.google.gwt.user.client.ui.ListBoxTest;
-import com.google.gwt.user.client.ui.MenuBarTest;
-import com.google.gwt.user.client.ui.MenuItemTest;
-import com.google.gwt.user.client.ui.NamedFrameTest;
-import com.google.gwt.user.client.ui.NativeHorizontalScrollbarTest;
-import com.google.gwt.user.client.ui.NativeVerticalScrollbarTest;
-import com.google.gwt.user.client.ui.PopupTest;
-import com.google.gwt.user.client.ui.PrefixTreeTest;
-import com.google.gwt.user.client.ui.RadioButtonTest;
-import com.google.gwt.user.client.ui.ResetButtonTest;
-import com.google.gwt.user.client.ui.ResizeLayoutPanelTest;
-import com.google.gwt.user.client.ui.RichTextAreaTest;
-import com.google.gwt.user.client.ui.RootPanelTest;
-import com.google.gwt.user.client.ui.ScrollPanelTest;
-import com.google.gwt.user.client.ui.SimpleCheckBoxTest;
-import com.google.gwt.user.client.ui.SimpleLayoutPanelTest;
-import com.google.gwt.user.client.ui.SimplePanelTest;
-import com.google.gwt.user.client.ui.SimpleRadioButtonTest;
-import com.google.gwt.user.client.ui.SplitLayoutPanelTest;
-import com.google.gwt.user.client.ui.StackLayoutPanelTest;
-import com.google.gwt.user.client.ui.StackPanelTest;
-import com.google.gwt.user.client.ui.SubmitButtonTest;
-import com.google.gwt.user.client.ui.SuggestBoxTest;
-import com.google.gwt.user.client.ui.TabBarTest;
-import com.google.gwt.user.client.ui.TabLayoutPanelTest;
-import com.google.gwt.user.client.ui.TabPanelTest;
-import com.google.gwt.user.client.ui.TextAreaTest;
-import com.google.gwt.user.client.ui.TreeItemTest;
-import com.google.gwt.user.client.ui.TreeTest;
-import com.google.gwt.user.client.ui.UIObjectTest;
-import com.google.gwt.user.client.ui.ValueBoxBaseTest;
-import com.google.gwt.user.client.ui.ValueListBoxTest;
-import com.google.gwt.user.client.ui.VerticalPanelTest;
-import com.google.gwt.user.client.ui.VerticalSplitPanelTest;
-import com.google.gwt.user.client.ui.WidgetCollectionTest;
-import com.google.gwt.user.client.ui.WidgetIteratorsTest;
-import com.google.gwt.user.client.ui.WidgetOnLoadTest;
-import com.google.gwt.user.client.ui.WidgetSubclassingTest;
-import com.google.gwt.user.client.ui.WidgetTest;
-import com.google.gwt.user.client.ui.impl.ClippedImagePrototypeTest;
-import com.google.gwt.user.datepicker.client.CalendarUtilTest;
-import com.google.gwt.user.datepicker.client.DateChangeEventTest;
-import com.google.gwt.user.rebind.ui.ImageBundleGeneratorTest;
-import com.google.gwt.xml.client.XMLTest;
-
-import junit.framework.Test;
-
-/**
- * Tests of the ui package.
- */
-public class UISuite {
-  public static Test suite() {
-    GWTTestSuite suite = new GWTTestSuite("Test for suite for all user widgets");
-
-    suite.addTestSuite(AbsolutePanelTest.class);
-    suite.addTestSuite(AnchorTest.class);
-    suite.addTestSuite(AsyncProxyTest.class);
-    suite.addTestSuite(ButtonTest.class);
-    suite.addTestSuite(CalendarUtilTest.class);
-    suite.addTestSuite(CaptionPanelTest.class);
-    suite.addTestSuite(CheckBoxTest.class);
-    suite.addTestSuite(ClassInitTest.class);
-    suite.addTestSuite(ClippedImagePrototypeTest.class);
-    suite.addTestSuite(CommandExecutorTest.class);
-    suite.addTestSuite(CompositeTest.class);
-    suite.addTestSuite(CookieTest.class);
-    suite.addTestSuite(CreateEventTest.class);
-    suite.addTestSuite(CustomButtonTest.class);
-    suite.addTestSuite(CustomScrollPanelTest.class);
-    suite.addTestSuite(DateBoxTest.class);
-    suite.addTestSuite(DateChangeEventTest.class);
-    suite.addTestSuite(DatePickerTest.class);
-    suite.addTestSuite(DeckLayoutPanelTest.class);
-    suite.addTestSuite(DeckPanelTest.class);
-    suite.addTestSuite(DecoratedPopupTest.class);
-    suite.addTestSuite(DecoratedStackPanelTest.class);
-    suite.addTestSuite(DecoratedTabBarTest.class);
-    suite.addTestSuite(DecoratedTabPanelTest.class);
-    suite.addTestSuite(DecoratorPanelTest.class);
-    suite.addTestSuite(DefaultSuggestionDisplayTest.class);
-    suite.addTestSuite(DelegatingKeyboardListenerCollectionTest.class);
-    suite.addTestSuite(DialogBoxTest.class);
-    suite.addTestSuite(DirectionalTextHelperTest.class);
-    suite.addTestSuite(DisclosurePanelTest.class);
-    suite.addTestSuite(DockLayoutPanelRtlTest.class);
-    suite.addTestSuite(DockLayoutPanelTest.class);
-    suite.addTestSuite(DockPanelTest.class);
-    suite.addTestSuite(DoubleClickEventSinkTest.class);
-    suite.addTestSuite(DOMTest.class);
-    suite.addTestSuite(DOMRtlTest.class);
-    suite.addTestSuite(DragAndDropEventsSinkTest.class);
-    suite.addTestSuite(ElementWrappingTest.class);
-    suite.addTestSuite(EventTest.class);
-    suite.addTestSuite(FastStringMapTest.class);
-    suite.addTestSuite(FileUploadTest.class);
-    suite.addTestSuite(FiniteWidgetIteratorTest.class);
-    suite.addTestSuite(FlexTableTest.class);
-    suite.addTestSuite(FlowPanelTest.class);
-    suite.addTestSuite(FocusPanelTest.class);
-    suite.addTestSuite(FormPanelTest.class);
-    suite.addTestSuite(GestureEventSinkTest.class);
-    suite.addTestSuite(GridTest.class);
-    suite.addTestSuite(HeaderPanelTest.class);
-    suite.addTestSuite(HiddenTest.class);
-    suite.addTestSuite(HistoryTest.class);
-    suite.addTestSuite(HistoryDisabledTest.class);
-    suite.addTestSuite(HorizontalPanelTest.class);
-    suite.addTestSuite(HorizontalSplitPanelTest.class);
-    suite.addTestSuite(HTMLPanelTest.class);
-    suite.addTestSuite(HTMLTest.class);
-    suite.addTestSuite(HyperlinkTest.class);
-    suite.addTestSuite(ImageBundleGeneratorTest.class);
-    suite.addTestSuite(ImageTest.class);
-    suite.addTestSuite(InlineHTMLTest.class);
-    suite.addTestSuite(InlineHyperlinkTest.class);
-    suite.addTestSuite(IsWidgetTest.class);
-    suite.addTestSuite(LabelTest.class);
-    suite.addTestSuite(LayoutTest.class);
-    suite.addTestSuite(LazyPanelTest.class);
-    suite.addTestSuite(LinearPanelTest.class);
-    suite.addTestSuite(ListBoxTest.class);
-    suite.addTestSuite(MenuBarTest.class);
-    suite.addTestSuite(MenuItemTest.class);
-    suite.addTestSuite(NamedFrameTest.class);
-    suite.addTestSuite(NativeHorizontalScrollbarTest.class);
-    suite.addTestSuite(NativeVerticalScrollbarTest.class);
-    suite.addTestSuite(PopupTest.class);
-    suite.addTestSuite(PrefixTreeTest.class);
-    suite.addTestSuite(RadioButtonTest.class);
-    suite.addTestSuite(ResetButtonTest.class);
-    suite.addTestSuite(ResizeLayoutPanelTest.class);
-    suite.addTestSuite(RichTextAreaTest.class);
-    suite.addTestSuite(RootPanelTest.class);
-    suite.addTestSuite(ScrollPanelTest.class);
-    suite.addTestSuite(SimpleCheckBoxTest.class);
-    suite.addTestSuite(SimpleRadioButtonTest.class);
-    suite.addTestSuite(SimplePanelTest.class);
-    suite.addTestSuite(SimpleLayoutPanelTest.class);
-    suite.addTestSuite(SplitLayoutPanelTest.class);
-    suite.addTestSuite(StackLayoutPanelTest.class);
-    suite.addTestSuite(StackPanelTest.class);
-    suite.addTestSuite(SubmitButtonTest.class);
-    suite.addTestSuite(SuggestBoxTest.class);
-    suite.addTestSuite(TabBarTest.class);
-    suite.addTestSuite(TabLayoutPanelTest.class);
-    suite.addTestSuite(TabPanelTest.class);
-    suite.addTestSuite(TextAreaTest.class);
-    suite.addTestSuite(TreeTest.class);
-    suite.addTestSuite(TreeItemTest.class);
-    suite.addTestSuite(TouchEventSinkTest.class);
-    suite.addTestSuite(UIObjectTest.class);
-    suite.addTestSuite(ValueBoxBaseTest.class);
-    suite.addTestSuite(ValueListBoxTest.class);
-    suite.addTestSuite(VerticalPanelTest.class);
-    suite.addTestSuite(VerticalSplitPanelTest.class);
-    suite.addTestSuite(WidgetCollectionTest.class);
-    suite.addTestSuite(WidgetIteratorsTest.class);
-    suite.addTestSuite(WidgetOnLoadTest.class);
-    suite.addTestSuite(WidgetSubclassingTest.class);
-    suite.addTestSuite(WidgetTest.class);
-    suite.addTestSuite(WindowTest.class);
-    suite.addTestSuite(XMLTest.class);
-    return suite;
-  }
-}
diff --git a/user/test/com/google/gwt/user/UiPart1Suite.java b/user/test/com/google/gwt/user/UiPart1Suite.java
new file mode 100644
index 0000000..74e7d67
--- /dev/null
+++ b/user/test/com/google/gwt/user/UiPart1Suite.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.user;
+
+import com.google.gwt.junit.tools.GWTTestSuite;
+import com.google.gwt.user.client.ui.AbsolutePanelTest;
+import com.google.gwt.user.client.ui.AnchorTest;
+import com.google.gwt.user.client.ui.ButtonTest;
+import com.google.gwt.user.client.ui.CaptionPanelTest;
+import com.google.gwt.user.client.ui.CheckBoxTest;
+import com.google.gwt.user.client.ui.CompositeTest;
+import com.google.gwt.user.client.ui.CreateEventTest;
+import com.google.gwt.user.client.ui.CustomButtonTest;
+import com.google.gwt.user.client.ui.CustomScrollPanelTest;
+import com.google.gwt.user.client.ui.DOMRtlTest;
+import com.google.gwt.user.client.ui.DOMTest;
+import com.google.gwt.user.client.ui.DateBoxTest;
+import com.google.gwt.user.client.ui.DatePickerTest;
+import com.google.gwt.user.client.ui.DeckLayoutPanelTest;
+import com.google.gwt.user.client.ui.DeckPanelTest;
+import com.google.gwt.user.client.ui.DecoratedPopupTest;
+import com.google.gwt.user.client.ui.DecoratedStackPanelTest;
+import com.google.gwt.user.client.ui.DecoratedTabBarTest;
+import com.google.gwt.user.client.ui.DecoratedTabPanelTest;
+import com.google.gwt.user.client.ui.DecoratorPanelTest;
+import com.google.gwt.user.client.ui.DefaultSuggestionDisplayTest;
+import com.google.gwt.user.client.ui.DelegatingKeyboardListenerCollectionTest;
+import com.google.gwt.user.client.ui.DialogBoxTest;
+import com.google.gwt.user.client.ui.DirectionalTextHelperTest;
+import com.google.gwt.user.client.ui.DisclosurePanelTest;
+import com.google.gwt.user.client.ui.DockLayoutPanelRtlTest;
+import com.google.gwt.user.client.ui.DockLayoutPanelTest;
+import com.google.gwt.user.client.ui.DockPanelTest;
+import com.google.gwt.user.client.ui.ElementWrappingTest;
+import com.google.gwt.user.client.ui.FastStringMapTest;
+import com.google.gwt.user.client.ui.FileUploadTest;
+import com.google.gwt.user.client.ui.FiniteWidgetIteratorTest;
+import com.google.gwt.user.client.ui.FlexTableTest;
+import com.google.gwt.user.client.ui.FlowPanelTest;
+import com.google.gwt.user.client.ui.FocusPanelTest;
+import com.google.gwt.user.client.ui.FormPanelTest;
+import com.google.gwt.user.client.ui.GridTest;
+import com.google.gwt.user.client.ui.impl.ClippedImagePrototypeTest;
+
+import junit.framework.Test;
+
+/**
+ * Tests in the user.client.ui package that start with A-G.
+ * @see UiPart2Suite
+ */
+public class UiPart1Suite {
+  public static Test suite() {
+    GWTTestSuite suite = new GWTTestSuite("Test for suite for all user widgets");
+
+    suite.addTestSuite(AbsolutePanelTest.class);
+    suite.addTestSuite(AnchorTest.class);
+    suite.addTestSuite(ButtonTest.class);
+    suite.addTestSuite(CaptionPanelTest.class);
+    suite.addTestSuite(CheckBoxTest.class);
+    suite.addTestSuite(ClassInitTest.class);
+    suite.addTestSuite(ClippedImagePrototypeTest.class);
+    suite.addTestSuite(CompositeTest.class);
+    suite.addTestSuite(CreateEventTest.class);
+    suite.addTestSuite(CustomButtonTest.class);
+    suite.addTestSuite(CustomScrollPanelTest.class);
+    suite.addTestSuite(DateBoxTest.class);
+    suite.addTestSuite(DatePickerTest.class);
+    suite.addTestSuite(DeckLayoutPanelTest.class);
+    suite.addTestSuite(DeckPanelTest.class);
+    suite.addTestSuite(DecoratedPopupTest.class);
+    suite.addTestSuite(DecoratedStackPanelTest.class);
+    suite.addTestSuite(DecoratedTabBarTest.class);
+    suite.addTestSuite(DecoratedTabPanelTest.class);
+    suite.addTestSuite(DecoratorPanelTest.class);
+    suite.addTestSuite(DefaultSuggestionDisplayTest.class);
+    suite.addTestSuite(DelegatingKeyboardListenerCollectionTest.class);
+    suite.addTestSuite(DialogBoxTest.class);
+    suite.addTestSuite(DirectionalTextHelperTest.class);
+    suite.addTestSuite(DisclosurePanelTest.class);
+    suite.addTestSuite(DockLayoutPanelRtlTest.class);
+    suite.addTestSuite(DockLayoutPanelTest.class);
+    suite.addTestSuite(DockPanelTest.class);
+    suite.addTestSuite(DOMTest.class);
+    suite.addTestSuite(DOMRtlTest.class);
+    suite.addTestSuite(ElementWrappingTest.class);
+    suite.addTestSuite(FastStringMapTest.class);
+    suite.addTestSuite(FileUploadTest.class);
+    suite.addTestSuite(FiniteWidgetIteratorTest.class);
+    suite.addTestSuite(FlexTableTest.class);
+    suite.addTestSuite(FlowPanelTest.class);
+    suite.addTestSuite(FocusPanelTest.class);
+    suite.addTestSuite(FormPanelTest.class);
+    suite.addTestSuite(GridTest.class);
+
+    return suite;
+  }
+}
diff --git a/user/test/com/google/gwt/user/UiPart2Suite.java b/user/test/com/google/gwt/user/UiPart2Suite.java
new file mode 100644
index 0000000..cde0c66
--- /dev/null
+++ b/user/test/com/google/gwt/user/UiPart2Suite.java
@@ -0,0 +1,140 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.user;
+
+import com.google.gwt.junit.tools.GWTTestSuite;
+import com.google.gwt.user.client.ui.HTMLPanelTest;
+import com.google.gwt.user.client.ui.HTMLTest;
+import com.google.gwt.user.client.ui.HeaderPanelTest;
+import com.google.gwt.user.client.ui.HiddenTest;
+import com.google.gwt.user.client.ui.HistoryTest;
+import com.google.gwt.user.client.ui.HorizontalPanelTest;
+import com.google.gwt.user.client.ui.HorizontalSplitPanelTest;
+import com.google.gwt.user.client.ui.HyperlinkTest;
+import com.google.gwt.user.client.ui.ImageTest;
+import com.google.gwt.user.client.ui.InlineHTMLTest;
+import com.google.gwt.user.client.ui.InlineHyperlinkTest;
+import com.google.gwt.user.client.ui.IsWidgetTest;
+import com.google.gwt.user.client.ui.LabelTest;
+import com.google.gwt.user.client.ui.LazyPanelTest;
+import com.google.gwt.user.client.ui.LinearPanelTest;
+import com.google.gwt.user.client.ui.ListBoxTest;
+import com.google.gwt.user.client.ui.MenuBarTest;
+import com.google.gwt.user.client.ui.MenuItemTest;
+import com.google.gwt.user.client.ui.NamedFrameTest;
+import com.google.gwt.user.client.ui.NativeHorizontalScrollbarTest;
+import com.google.gwt.user.client.ui.NativeVerticalScrollbarTest;
+import com.google.gwt.user.client.ui.PopupTest;
+import com.google.gwt.user.client.ui.PrefixTreeTest;
+import com.google.gwt.user.client.ui.RadioButtonTest;
+import com.google.gwt.user.client.ui.ResetButtonTest;
+import com.google.gwt.user.client.ui.ResizeLayoutPanelTest;
+import com.google.gwt.user.client.ui.RichTextAreaTest;
+import com.google.gwt.user.client.ui.RootPanelTest;
+import com.google.gwt.user.client.ui.ScrollPanelTest;
+import com.google.gwt.user.client.ui.SimpleCheckBoxTest;
+import com.google.gwt.user.client.ui.SimpleLayoutPanelTest;
+import com.google.gwt.user.client.ui.SimplePanelTest;
+import com.google.gwt.user.client.ui.SimpleRadioButtonTest;
+import com.google.gwt.user.client.ui.SplitLayoutPanelTest;
+import com.google.gwt.user.client.ui.StackLayoutPanelTest;
+import com.google.gwt.user.client.ui.StackPanelTest;
+import com.google.gwt.user.client.ui.SubmitButtonTest;
+import com.google.gwt.user.client.ui.SuggestBoxTest;
+import com.google.gwt.user.client.ui.TabBarTest;
+import com.google.gwt.user.client.ui.TabLayoutPanelTest;
+import com.google.gwt.user.client.ui.TabPanelTest;
+import com.google.gwt.user.client.ui.TextAreaTest;
+import com.google.gwt.user.client.ui.TreeItemTest;
+import com.google.gwt.user.client.ui.TreeTest;
+import com.google.gwt.user.client.ui.UIObjectTest;
+import com.google.gwt.user.client.ui.ValueBoxBaseTest;
+import com.google.gwt.user.client.ui.ValueListBoxTest;
+import com.google.gwt.user.client.ui.VerticalPanelTest;
+import com.google.gwt.user.client.ui.VerticalSplitPanelTest;
+import com.google.gwt.user.client.ui.WidgetCollectionTest;
+import com.google.gwt.user.client.ui.WidgetIteratorsTest;
+import com.google.gwt.user.client.ui.WidgetOnLoadTest;
+import com.google.gwt.user.client.ui.WidgetSubclassingTest;
+import com.google.gwt.user.client.ui.WidgetTest;
+
+import junit.framework.Test;
+
+/**
+ * Tests in the user.client.ui package that start with H-Z.
+ * @see UiPart1Suite
+ */
+public class UiPart2Suite {
+  public static Test suite() {
+    GWTTestSuite suite = new GWTTestSuite("Test for suite for all user widgets");
+
+    suite.addTestSuite(HeaderPanelTest.class);
+    suite.addTestSuite(HiddenTest.class);
+    suite.addTestSuite(HistoryTest.class);
+    suite.addTestSuite(HorizontalPanelTest.class);
+    suite.addTestSuite(HorizontalSplitPanelTest.class);
+    suite.addTestSuite(HTMLPanelTest.class);
+    suite.addTestSuite(HTMLTest.class);
+    suite.addTestSuite(HyperlinkTest.class);
+    suite.addTestSuite(ImageTest.class);
+    suite.addTestSuite(InlineHTMLTest.class);
+    suite.addTestSuite(InlineHyperlinkTest.class);
+    suite.addTestSuite(IsWidgetTest.class);
+    suite.addTestSuite(LabelTest.class);
+    suite.addTestSuite(LazyPanelTest.class);
+    suite.addTestSuite(LinearPanelTest.class);
+    suite.addTestSuite(ListBoxTest.class);
+    suite.addTestSuite(MenuBarTest.class);
+    suite.addTestSuite(MenuItemTest.class);
+    suite.addTestSuite(NamedFrameTest.class);
+    suite.addTestSuite(NativeHorizontalScrollbarTest.class);
+    suite.addTestSuite(NativeVerticalScrollbarTest.class);
+    suite.addTestSuite(PopupTest.class);
+    suite.addTestSuite(PrefixTreeTest.class);
+    suite.addTestSuite(RadioButtonTest.class);
+    suite.addTestSuite(ResetButtonTest.class);
+    suite.addTestSuite(ResizeLayoutPanelTest.class);
+    suite.addTestSuite(RichTextAreaTest.class);
+    suite.addTestSuite(RootPanelTest.class);
+    suite.addTestSuite(ScrollPanelTest.class);
+    suite.addTestSuite(SimpleCheckBoxTest.class);
+    suite.addTestSuite(SimpleRadioButtonTest.class);
+    suite.addTestSuite(SimplePanelTest.class);
+    suite.addTestSuite(SimpleLayoutPanelTest.class);
+    suite.addTestSuite(SplitLayoutPanelTest.class);
+    suite.addTestSuite(StackLayoutPanelTest.class);
+    suite.addTestSuite(StackPanelTest.class);
+    suite.addTestSuite(SubmitButtonTest.class);
+    suite.addTestSuite(SuggestBoxTest.class);
+    suite.addTestSuite(TabBarTest.class);
+    suite.addTestSuite(TabLayoutPanelTest.class);
+    suite.addTestSuite(TabPanelTest.class);
+    suite.addTestSuite(TextAreaTest.class);
+    suite.addTestSuite(TreeTest.class);
+    suite.addTestSuite(TreeItemTest.class);
+    suite.addTestSuite(UIObjectTest.class);
+    suite.addTestSuite(ValueBoxBaseTest.class);
+    suite.addTestSuite(ValueListBoxTest.class);
+    suite.addTestSuite(VerticalPanelTest.class);
+    suite.addTestSuite(VerticalSplitPanelTest.class);
+    suite.addTestSuite(WidgetCollectionTest.class);
+    suite.addTestSuite(WidgetIteratorsTest.class);
+    suite.addTestSuite(WidgetOnLoadTest.class);
+    suite.addTestSuite(WidgetSubclassingTest.class);
+    suite.addTestSuite(WidgetTest.class);
+    return suite;
+  }
+}
diff --git a/user/test/com/google/gwt/user/cellview/client/AbstractCellTableTestBase.java b/user/test/com/google/gwt/user/cellview/client/AbstractCellTableTestBase.java
index 3e1177e..1b74f13 100644
--- a/user/test/com/google/gwt/user/cellview/client/AbstractCellTableTestBase.java
+++ b/user/test/com/google/gwt/user/cellview/client/AbstractCellTableTestBase.java
@@ -269,16 +269,23 @@
   public void testCellEvent() {
     IndexCell<String> cell = new IndexCell<String>("click");
     T table = createAbstractHasData(cell);
+    
     RootPanel.get().add(table);
     table.setRowData(createData(0, 10));
     table.getPresenter().flush();
 
-    // Trigger an event at index 5.
+    // Trigger an event at index 5 inside the child div.
     NativeEvent event = Document.get().createClickEvent(0, 0, 0, 0, 0, false, false, false, false);
     getBodyElement(table, 5, 0).getFirstChildElement().dispatchEvent(event);
     cell.assertLastBrowserEventIndex(5);
     cell.assertLastEditingIndex(5);
 
+    // Trigger an event at index 3 outside the child div.
+    event = Document.get().createClickEvent(0, 0, 0, 0, 0, false, false, false, false);
+    getBodyElement(table, 3, 0).dispatchEvent(event);
+    cell.assertLastBrowserEventIndex(3);
+    cell.assertLastEditingIndex(3);
+
     RootPanel.get().remove(table);
   }
 
diff --git a/user/test/com/google/gwt/user/client/ResizeHelper.java b/user/test/com/google/gwt/user/client/ResizeHelper.java
new file mode 100644
index 0000000..1a267eb
--- /dev/null
+++ b/user/test/com/google/gwt/user/client/ResizeHelper.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.user.client;
+
+
+import com.google.gwt.regexp.shared.MatchResult;
+import com.google.gwt.regexp.shared.RegExp;
+import com.google.gwt.user.client.Window.Navigator;
+
+import junit.framework.Assert;
+
+/**
+ * Calculates the sizes for Window extras such as border, menu, tool bar, and stores the original
+ * sizes to restore at the end of test.
+ */
+public final class ResizeHelper {
+
+  private static int extraWidth;
+  private static int extraHeight;
+
+  static {
+    // FF4 on win can start in 'almost' fullscreen when the window title bar
+    // is hidden but accounted incorrectly, so, move the window and resize to
+    // smaller size first, to take it out of 'full screen mode'.
+    Window.moveTo(10, 10);
+    Window.resizeTo(700, 500);
+
+    extraWidth = 700 - Window.getClientWidth();
+    extraHeight = 500 - Window.getClientHeight();
+  }
+
+  public static void resizeBy(int width, int height) {
+    Window.resizeBy(width, height);
+  }
+
+  public static void resizeTo(int width, int height) {
+    Window.resizeTo(width, height);
+  }
+
+  public static void assertSize(int width, int height) {
+    Assert.assertEquals(width, Window.getClientWidth() + extraWidth);
+    Assert.assertEquals(height, Window.getClientHeight() + extraHeight);
+  }
+
+  public static boolean isResizeSupported() {
+    String userAgent = Navigator.getUserAgent();
+    if (userAgent.contains("Chrome")) {
+      return false; // All versions of Chrome are upsupported
+    }
+
+    if (userAgent.contains("Firefox")) {
+      RegExp versionRegExp = RegExp.compile("Firefox[\\/\\s](\\d+)\\.\\d+", "ig");
+      MatchResult result = versionRegExp.exec(userAgent);
+      if (result != null) {
+        int version = Integer.parseInt(result.getGroup(1));
+        return version < 7; // Resize is unsupported for Firefox 7 and newer.
+      }
+    }
+    return true;
+  }
+}
diff --git a/user/test/com/google/gwt/user/client/WindowTest.java b/user/test/com/google/gwt/user/client/WindowTest.java
index 085a91d..10d1e8a 100644
--- a/user/test/com/google/gwt/user/client/WindowTest.java
+++ b/user/test/com/google/gwt/user/client/WindowTest.java
@@ -16,11 +16,14 @@
 package com.google.gwt.user.client;
 
 import com.google.gwt.core.client.JavaScriptException;
+import com.google.gwt.core.client.Scheduler;
+import com.google.gwt.core.client.Scheduler.RepeatingCommand;
+import com.google.gwt.core.client.Scheduler.ScheduledCommand;
 import com.google.gwt.event.logical.shared.ResizeEvent;
 import com.google.gwt.event.logical.shared.ResizeHandler;
 import com.google.gwt.event.shared.HandlerRegistration;
-import com.google.gwt.http.client.UrlBuilder;
 import com.google.gwt.http.client.URL;
+import com.google.gwt.http.client.UrlBuilder;
 import com.google.gwt.junit.DoNotRunWith;
 import com.google.gwt.junit.Platform;
 import com.google.gwt.junit.client.GWTTestCase;
@@ -222,7 +225,7 @@
     largeDOM.setPixelSize(oldClientWidth + 100, oldClientHeight + 100);
     RootPanel.get().add(largeDOM);
     delayTestFinish(1000);
-    DeferredCommand.addCommand(new Command() {
+    Scheduler.get().scheduleDeferred(new ScheduledCommand() {
       public void execute() {
         int newClientHeight = Window.getClientHeight();
         int newClientWidth = Window.getClientWidth();
@@ -234,118 +237,15 @@
     });
   }
 
-  /**
-   * Calculates the sizes for Window extras such as border, menu, tool bar, and
-   * stores the original sizes to restore at the end of test.
-   */
-  public static final class ResizeHelper {
-    private static int clientHeight;
-    private static int clientWidth;
-    private static int extraWidth;
-    private static int extraHeight;
-    private static boolean initialized;
-
-    public static int getExtraHeight() {
-      ensureInitialized();
-      return extraHeight;
-    }
-
-    public static int getExtraWidth() {
-      ensureInitialized();
-      return extraWidth;
-    }
-
-    /**
-     * Wraps {@code Window#resizeBy(int, int)} to ensure initialized. This may
-     * be a no-op in Chrome.
-     *
-     * @param width
-     * @param height
-     * @return Whether this operation is done
-     */
-    public static boolean resizeBy(int width, int height) {
-      if (ensureInitialized()) {
-        Window.resizeBy(width, height);
-      }
-      return initialized;
-    }
-
-    /**
-     * Wraps {@code Window#resizeTo(int, int)} to ensure initialized. This may
-     * be a no-op in Chrome.
-     *
-     * @param width
-     * @param height
-     * @return Whether this operation is done
-     */
-    public static boolean resizeTo(int width, int height) {
-      if (ensureInitialized()) {
-        Window.resizeTo(width, height);
-      }
-      return initialized;
-    }
-
-    public static void restoreSize() {
-      // Ignore if not initialized
-      if (initialized) {
-        Window.resizeTo(clientWidth + extraWidth, clientHeight + extraHeight);
-      }
-    }
-
-    private static synchronized boolean ensureInitialized() {
-      if (!initialized) {
-        init();
-      }
-      return initialized;
-    }
-
-    private static void init() {
-      // resizeTo works in Chrome if the window is opened by Window.open(),
-      // which is the case when testing with Selenium and the server is started
-      // with -multiWin. However, the size change is deferred. The test would
-      // involve many nested DeferredCommand.
-      if (Navigator.getUserAgent().toLowerCase().contains("chrome")) {
-        return;
-      }
-
-      // FF4 on win can start in 'almost' fullscreen when the window title bar 
-      // is hidden but accounted incorrectly, so, move the window and resize to 
-      // smaller size first, to take it out of 'full screen mode'.
-      Window.moveTo(10,10);
-      Window.resizeTo(700, 500);
-
-      // store the original size (to be used in restoreSize)
-      clientHeight = Window.getClientHeight();
-      clientWidth = Window.getClientWidth();
-      // IE cannot resize window out of the screen, so we need to move the
-      // window such that it can be resized to below size.
-      // We do not have method to return the window coordinates (screenLeft,
-      // screenTop), so this move is not undone.
-      Window.moveTo(0,0);
-
-      // clientWidth is innerWidth, resizeTo specifies outerWidth
-      // Let's find out the delta for extras such as border, menu, tool bar.
-      // If the sizes are too small to show the extras, resizeTo may not set the
-      // sizes as requested.
-      // If the sizes are too big, for example, height > screen.availHeight + 40
-      // on FF, resizeTo silently sets the height to screen.availHeight + 40.
-      // Some test machines are configured at this time as 800x600, reduce the size 
-      // to give some 'buffer'
-      Window.resizeTo(750, 550);
-      extraWidth = 750 - Window.getClientWidth();
-      extraHeight = 550 - Window.getClientHeight();
-      initialized = true;
-      restoreSize();
-    }
-  }
-
   private static final class TestResizeHandler implements ResizeHandler {
     private int height;
     private int width;
+    private boolean called;
 
     public void onResize(ResizeEvent event) {
       width = event.getWidth();
       height = event.getHeight();
+      called = true;
     }
 
     public int getHeight() {
@@ -355,6 +255,10 @@
     public int getWidth() {
       return width;
     }
+
+    public boolean isCalled() {
+      return called;
+    }
   }
 
   /**
@@ -362,42 +266,37 @@
    */
   @DoNotRunWith({Platform.HtmlUnitLayout})
   public void testResizing() {
+    // There is nothing to test if the browser doesn't support resize
+    if (!ResizeHelper.isResizeSupported()) {
+      return;
+    }
+
     clearBodyContent();
 
-    // Handler for resize events
-    final TestResizeHandler resizeHandler = new TestResizeHandler();
-    final HandlerRegistration handlerRegistration = Window.addResizeHandler(resizeHandler);
+    final int width = 600;
+    final int height = 500;
 
-    delayTestFinish(2000);
-    DeferredCommand.addCommand(new Command() {
-      public void execute() {
-        // Sizes must be appropriate, otherwise browsers may not resize as
-        // requested. See comments in ResizeHelper.
-        int width = 600;
-        int height = 500;
-        // ensureInitialized could fail on Chrome
-        if (!ResizeHelper.resizeTo(width, height)) {
-          handlerRegistration.removeHandler();
-          finishTest(); // nothing we can test
+    final TestResizeHandler handler = new TestResizeHandler();
+    final HandlerRegistration handlerRegistration = Window.addResizeHandler(handler);
+
+    ResizeHelper.resizeTo(width, height);
+    ResizeHelper.assertSize(width, height);
+    ResizeHelper.resizeBy(10, 20);
+    ResizeHelper.assertSize(width + 10, height + 20);
+
+    delayTestFinish(1000);
+    Scheduler.get().scheduleFixedDelay(new RepeatingCommand() {
+      public boolean execute() {
+        if (!handler.isCalled()) {
+          return true; // we still didn't receive the callback, let's wait more
         }
-
-        assertEquals(width, Window.getClientWidth() + ResizeHelper.getExtraWidth());
-        assertEquals(height, Window.getClientHeight() + ResizeHelper.getExtraHeight());
-        // TODO: TestResizeHandler.getWidth() returns 0 -- need to investigate
-        // assertEquals(resizeHandler.getWidth(), Window.getClientWidth());
-        // assertEquals(resizeHandler.getHeight(), Window.getClientHeight());
-        ResizeHelper.resizeBy(10, 20);
-        assertEquals(width + 10, Window.getClientWidth() + ResizeHelper.getExtraWidth());
-        assertEquals(height + 20, Window.getClientHeight() + ResizeHelper.getExtraHeight());
-        // assertEquals(resizeHandler.getWidth(), Window.getClientWidth());
-        // assertEquals(resizeHandler.getHeight(), Window.getClientHeight());
-
-        // Cleanup the window
+        assertEquals(Window.getClientWidth(), handler.getWidth());
+        assertEquals(Window.getClientHeight(), handler.getHeight());
         handlerRegistration.removeHandler();
-        ResizeHelper.restoreSize();
         finishTest();
+        return false;
       }
-    });
+    }, 10);
   }
 
   /**
diff --git a/user/test/com/google/gwt/user/client/rpc/FailedRequestTest.java b/user/test/com/google/gwt/user/client/rpc/FailedRequestTest.java
index 2691c34..b694fae 100644
--- a/user/test/com/google/gwt/user/client/rpc/FailedRequestTest.java
+++ b/user/test/com/google/gwt/user/client/rpc/FailedRequestTest.java
@@ -18,12 +18,10 @@
 import com.google.gwt.http.client.Request;
 import com.google.gwt.user.client.rpc.impl.FailedRequest;
 
-import junit.framework.TestCase;
-
 /**
  * Tests the {@link com.google.gwt.user.client.rpc.impl.FailedRequest} class.
  */
-public class FailedRequestTest extends TestCase {
+public class FailedRequestTest extends RpcTestBase {
   public void testBasics() {
     Request failedRequest = new FailedRequest();
     assertFalse(failedRequest.isPending());
diff --git a/user/test/com/google/gwt/user/client/rpc/FailingRequestBuilderTest.java b/user/test/com/google/gwt/user/client/rpc/FailingRequestBuilderTest.java
index effa813..4dcb045 100644
--- a/user/test/com/google/gwt/user/client/rpc/FailingRequestBuilderTest.java
+++ b/user/test/com/google/gwt/user/client/rpc/FailingRequestBuilderTest.java
@@ -19,12 +19,10 @@
 import com.google.gwt.http.client.RequestException;
 import com.google.gwt.user.client.rpc.impl.FailingRequestBuilder;
 
-import junit.framework.TestCase;
-
 /**
  * Tests the {@link FailingRequestBuilder} class.
  */
-public class FailingRequestBuilderTest extends TestCase {
+public class FailingRequestBuilderTest extends RpcTestBase {
   public void testBasics() throws RequestException {
     final boolean[] callbackCalled = new boolean[] {false};
 
diff --git a/user/test/com/google/gwt/user/client/rpc/RecursiveClassTest.java b/user/test/com/google/gwt/user/client/rpc/RecursiveClassTest.java
index e3b84df..f241687 100644
--- a/user/test/com/google/gwt/user/client/rpc/RecursiveClassTest.java
+++ b/user/test/com/google/gwt/user/client/rpc/RecursiveClassTest.java
@@ -15,8 +15,8 @@
  */
 package com.google.gwt.user.client.rpc;
 
-import com.google.gwt.user.client.rpc.RecursiveClassTestService.ResultNode;
 import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.rpc.RecursiveClassTestService.ResultNode;
 
 /**
  * Class used to test generics with wild cards and recursive references.
@@ -26,18 +26,19 @@
   /**
    * This method is used to test generics with wild cards and recursive references.
    */
+  @SuppressWarnings({"unchecked", "rawtypes"})
   public void testRecursiveClass() {
     RecursiveClassTestServiceAsync service = getServiceAsync();
     delayTestFinishForRpc();
    
-    service.greetServer("Hello", new AsyncCallback<ResultNode>() {
+    service.greetServer("Hello", new AsyncCallback() {
       public void onFailure(Throwable caught) {
         TestSetValidator.rethrowException(caught);
       }
 
-      public void onSuccess(ResultNode result) {
+      public void onSuccess(Object result) {
         assertNotNull(result);
-        assertTrue(TestSetValidator.isValidRecurisveClassObject(result));
+        assertTrue(result instanceof ResultNode);
         finishTest();
       }
     });
diff --git a/user/test/com/google/gwt/user/client/rpc/RecursiveClassTestServiceAsync.java b/user/test/com/google/gwt/user/client/rpc/RecursiveClassTestServiceAsync.java
index 61fd819..6436f45 100644
--- a/user/test/com/google/gwt/user/client/rpc/RecursiveClassTestServiceAsync.java
+++ b/user/test/com/google/gwt/user/client/rpc/RecursiveClassTestServiceAsync.java
@@ -21,6 +21,6 @@
  * Service used to test generics with wild cards and recursive references.
  */
 public interface RecursiveClassTestServiceAsync {
-  <U extends ResultNode<?>> void greetServer(String input, AsyncCallback<ResultNode> callback)
-    throws IllegalArgumentException;
+  <U extends ResultNode<U>> void greetServer(String input, AsyncCallback<ResultNode<U>> callback)
+      throws IllegalArgumentException;
 }
diff --git a/user/test/com/google/gwt/user/client/rpc/TestSetValidator.java b/user/test/com/google/gwt/user/client/rpc/TestSetValidator.java
index f5601b0..76fb619 100644
--- a/user/test/com/google/gwt/user/client/rpc/TestSetValidator.java
+++ b/user/test/com/google/gwt/user/client/rpc/TestSetValidator.java
@@ -31,7 +31,6 @@
 import com.google.gwt.user.client.rpc.TestSetFactory.SerializableGraphWithCFS;
 import com.google.gwt.user.client.rpc.TestSetFactory.SerializablePrivateNoArg;
 import com.google.gwt.user.client.rpc.TestSetFactory.SerializableWithTwoArrays;
-import com.google.gwt.user.client.rpc.RecursiveClassTestService.ResultNode;
 
 import static junit.framework.Assert.assertEquals;
 import static junit.framework.Assert.assertFalse;
@@ -39,9 +38,9 @@
 import static junit.framework.Assert.assertSame;
 
 import java.util.ArrayList;
+import java.util.EnumMap;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.EnumMap;
 import java.util.IdentityHashMap;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
@@ -49,11 +48,11 @@
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Set;
 import java.util.TreeMap;
 import java.util.TreeSet;
 import java.util.Vector;
-import java.util.Map.Entry;
 
 /**
  * Misnamed set of static validation methods used by various collection class
@@ -806,10 +805,6 @@
     return true;
   }
   
-  public static boolean isValidRecurisveClassObject(ResultNode<? extends ResultNode<?>> result) {
-    return (result != null);
-  }
-
   public static boolean isValidSingletonList(List<MarkerTypeSingleton> list) {
     if (list == null || list.size() != 1) {
       return false;
diff --git a/user/test/com/google/gwt/user/client/rpc/UnicodeEscapingService.java b/user/test/com/google/gwt/user/client/rpc/UnicodeEscapingService.java
index f1fe049..5aee0b3 100644
--- a/user/test/com/google/gwt/user/client/rpc/UnicodeEscapingService.java
+++ b/user/test/com/google/gwt/user/client/rpc/UnicodeEscapingService.java
@@ -59,6 +59,11 @@
   }
 
   /**
+   * Returns the input string unmodified.
+   */
+  String echo(String str);
+
+  /**
    * Returns a string containing the characters from start to end.
    * 
    * Used to verify server->client escaping.
diff --git a/user/test/com/google/gwt/user/client/rpc/UnicodeEscapingServiceAsync.java b/user/test/com/google/gwt/user/client/rpc/UnicodeEscapingServiceAsync.java
index 6ae9fd4..f998680 100644
--- a/user/test/com/google/gwt/user/client/rpc/UnicodeEscapingServiceAsync.java
+++ b/user/test/com/google/gwt/user/client/rpc/UnicodeEscapingServiceAsync.java
@@ -21,6 +21,7 @@
  * Async version of the {@link UnicodeEscapingService} interface.
  */
 public interface UnicodeEscapingServiceAsync {
+  void echo(String str, AsyncCallback<String> callback);
   void getStringContainingCharacterRange(int start, int end,
       AsyncCallback<String> callback);
   void verifyStringContainingCharacterRange(int start, int end, String str,
diff --git a/user/test/com/google/gwt/user/client/rpc/UnicodeEscapingTest.java b/user/test/com/google/gwt/user/client/rpc/UnicodeEscapingTest.java
index 0a8c7fa..defb3c1 100644
--- a/user/test/com/google/gwt/user/client/rpc/UnicodeEscapingTest.java
+++ b/user/test/com/google/gwt/user/client/rpc/UnicodeEscapingTest.java
@@ -315,4 +315,40 @@
           }
         });
   }
+
+  /**
+   * Verify that string encoding/decoding is lossless.
+   */
+  private void echoVerify(final String str) {
+    delayTestFinish(TEST_FINISH_DELAY_MS);
+    getService().echo(str, new AsyncCallback<String>() {
+      @Override
+      public void onFailure(Throwable caught) {
+        TestSetValidator.rethrowException(caught);
+      }
+
+      @Override
+      public void onSuccess(String result) {
+        assertEquals(str, result);
+        finishTest();
+      }
+    });
+  }
+
+  /**
+   * Test that a NUL character followed by an octal character is encoded
+   * correctly.  Encoding the NUL character simply as "\0" in this case
+   * would cause the recipient to see "\07" as a single octal escape sequence,
+   * rather than two separate characters.
+   */
+  public void testEscapeNull() {
+    echoVerify("\u0000" + "7");  // split to emphasize two characters
+  }
+
+  /**
+   * Test that HTML special characters are encoded correctly.
+   */
+  public void testEscapeHtml() {
+    echoVerify("<img src=x onerror=alert(1)>");
+  }
 }
diff --git a/user/test/com/google/gwt/user/client/ui/CustomButtonTest.java b/user/test/com/google/gwt/user/client/ui/CustomButtonTest.java
index 6f38b6e..9f0b8e2 100644
--- a/user/test/com/google/gwt/user/client/ui/CustomButtonTest.java
+++ b/user/test/com/google/gwt/user/client/ui/CustomButtonTest.java
@@ -29,9 +29,7 @@
 
 import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.Map;
-import java.util.Map.Entry;
 
 /**
  * Test for <code>PushButton</code> as most of this widget's functionality is UI
@@ -84,29 +82,25 @@
     b.setDown(true);
     assertEquals(b.getStylePrimaryName(), "random");
 
-    Map faces = new HashMap();
+    Map<String, Face> faces = new HashMap<String, Face>();
     faces.put("downDisabled", b.getDownDisabledFace());
     faces.put("upDisabled", b.getUpDisabledFace());
     faces.put("down", b.getDownFace());
     faces.put("up", b.getUpFace());
     faces.put("upHovering", b.getUpHoveringFace());
     faces.put("downHovering", b.getDownHoveringFace());
-    Iterator entries = faces.entrySet().iterator();
     // Set all faces as text.
-    while (entries.hasNext()) {
-      Map.Entry entry = (Entry) entries.next();
-      Face f = (Face) entry.getValue();
+    for (Map.Entry<String, Face> entry : faces.entrySet()) {
+      Face f = entry.getValue();
       b.setCurrentFace(f);
       assertEquals("random", b.getStylePrimaryName());
       assertTrue(b.getStyleName().indexOf("random-" + f.getName()) != -1);
     }
 
-    entries = faces.entrySet().iterator();
     b.addStyleName("fobar");
     // Set all faces as text.
-    while (entries.hasNext()) {
-      Map.Entry entry = (Entry) entries.next();
-      Face f = (Face) entry.getValue();
+    for (Map.Entry<String, Face> entry : faces.entrySet()) {
+      Face f = entry.getValue();
       b.setCurrentFace(f);
       String computedStyleName = DOM.getElementProperty(b.getElement(),
           "className");
@@ -118,43 +112,37 @@
 
   public void testSettingFaces() {
     PushButton b = new PushButton();
-    Map faces = new HashMap();
+    Map<String, Face> faces = new HashMap<String, Face>();
     faces.put("downDisabled", b.getDownDisabledFace());
     faces.put("upDisabled", b.getUpDisabledFace());
     faces.put("down", b.getDownFace());
     faces.put("up", b.getUpFace());
     faces.put("upHovering", b.getUpHoveringFace());
     faces.put("downHovering", b.getDownHoveringFace());
-    Iterator entries = faces.entrySet().iterator();
 
     // Set all faces as text.
-    while (entries.hasNext()) {
-      Map.Entry entry = (Entry) entries.next();
-      Face f = (Face) entry.getValue();
-      String faceName = (String) entry.getKey();
+    for (Map.Entry<String, Face> entry : faces.entrySet()) {
+      Face f = entry.getValue();
+      String faceName = entry.getKey();
       f.setText(faceName);
     }
-    entries = faces.entrySet().iterator();
-    while (entries.hasNext()) {
-      Map.Entry entry = (Entry) entries.next();
-      Face f = (Face) entry.getValue();
-      String faceName = (String) entry.getKey();
+    
+    for (Map.Entry<String, Face> entry : faces.entrySet()) {
+      Face f = entry.getValue();
+      String faceName = entry.getKey();
       assertEquals(f.getText(), faceName);
     }
+    
     // Set all faces as HTML
-    entries = faces.entrySet().iterator();
-    while (entries.hasNext()) {
-      Map.Entry entry = (Entry) entries.next();
-      Face f = (Face) entry.getValue();
-      String faceName = (String) entry.getKey();
+    for (Map.Entry<String, Face> entry : faces.entrySet()) {
+      Face f = entry.getValue();
+      String faceName = entry.getKey();
       f.setHTML("<b>" + faceName + "</b>");
     }
 
-    entries = faces.entrySet().iterator();
-    while (entries.hasNext()) {
-      Map.Entry entry = (Entry) entries.next();
-      Face f = (Face) entry.getValue();
-      String faceName = (String) entry.getKey();
+    for (Map.Entry<String, Face> entry : faces.entrySet()) {
+      Face f = entry.getValue();
+      String faceName = entry.getKey();
       assertEquals(f.getText(), faceName);
       assertEquals(f.getHTML().toLowerCase(), "<b>" + faceName.toLowerCase()
           + "</b>");
diff --git a/user/test/com/google/gwt/user/client/ui/FastStringMapProfile.java b/user/test/com/google/gwt/user/client/ui/FastStringMapProfile.java
index b6057b4..71f50b1 100644
--- a/user/test/com/google/gwt/user/client/ui/FastStringMapProfile.java
+++ b/user/test/com/google/gwt/user/client/ui/FastStringMapProfile.java
@@ -22,7 +22,7 @@
  */
 public class FastStringMapProfile extends WidgetProfile {
 
-  Map m;
+  Map<String, Integer> m;
 
   public void testTiming() throws Exception {
     m = putTiming(32000);
@@ -46,8 +46,8 @@
     this.timing("get(" + size + ")");
   }
 
-  public FastStringMap putTiming(int size) {
-    FastStringMap m1 = new FastStringMap();
+  public FastStringMap<Integer> putTiming(int size) {
+    FastStringMap<Integer> m1 = new FastStringMap<Integer>();
     this.resetTimer();
     for (int i = 0; i < size; i++) {
       Integer iVal = new Integer(size);
diff --git a/user/test/com/google/gwt/user/client/ui/HTMLTableProfile.java b/user/test/com/google/gwt/user/client/ui/HTMLTableProfile.java
index a033ba7..cc86737 100644
--- a/user/test/com/google/gwt/user/client/ui/HTMLTableProfile.java
+++ b/user/test/com/google/gwt/user/client/ui/HTMLTableProfile.java
@@ -70,7 +70,7 @@
 
   public void hashMapShare(int rows, int columns) {
     resetTimer();
-    HashMap m = new HashMap();
+    HashMap<String, Label> m = new HashMap<String, Label>();
     for (int row = 0; row < rows; row++) {
       for (int column = 0; column < columns; column++) {
         Label label = new Label(column + "i");
diff --git a/user/test/com/google/gwt/user/client/ui/NamedFrameTest.java b/user/test/com/google/gwt/user/client/ui/NamedFrameTest.java
index d25665c..ff54a362 100644
--- a/user/test/com/google/gwt/user/client/ui/NamedFrameTest.java
+++ b/user/test/com/google/gwt/user/client/ui/NamedFrameTest.java
@@ -76,4 +76,8 @@
       // Success
     }
   }
+
+  public void testDefaultSrc() {
+    assertEquals("javascript:''", new NamedFrame("defaultSrc").getUrl());
+  }
 }
diff --git a/user/test/com/google/gwt/user/client/ui/PrefixTreeTest.java b/user/test/com/google/gwt/user/client/ui/PrefixTreeTest.java
index 7cabdd7..38e8d5e 100644
--- a/user/test/com/google/gwt/user/client/ui/PrefixTreeTest.java
+++ b/user/test/com/google/gwt/user/client/ui/PrefixTreeTest.java
@@ -18,7 +18,6 @@
 import com.google.gwt.junit.client.GWTTestCase;
 
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 
 /**
@@ -126,7 +125,7 @@
    * Tests newly constructed prefix tree assumptions.
    */
   public void testPlaysWellWithOthers() {
-    final List l = new ArrayList();
+    final List<String> l = new ArrayList<String>();
     for (int i = 0; i < 100; i++) {
       l.add(String.valueOf(i));
     }
@@ -168,7 +167,7 @@
     testSizeByIterator(tree);
     assertTrue(tree.iterator().hasNext());
 
-    List l;
+    List<String> l;
 
     l = tree.getSuggestions("", 13);
     assertTrue("Expected size of 13, got " + l.size(), l.size() == 13);
@@ -188,7 +187,7 @@
 
     l = tree.getSuggestions("o", 1);
     assertTrue("Expected size of 1, got " + l.size(), l.size() == 1);
-    assertTrue(((String) l.get(0)).endsWith("..."));
+    assertTrue(l.get(0).endsWith("..."));
     assertAllStartWith(l, "o");
 
     l = tree.getSuggestions("something", 1);
@@ -197,9 +196,8 @@
     assertAllStartWith(l, "somethingdifferent");
   }
 
-  protected void assertAllStartWith(List l, String prefix) {
-    for (final Iterator i = l.iterator(); i.hasNext();) {
-      final String test = (String) i.next();
+  protected void assertAllStartWith(List<String> l, String prefix) {
+    for (String test : l) {
       assertTrue(test + " does not start with " + prefix,
           test.startsWith(prefix));
     }
@@ -213,8 +211,7 @@
    */
   protected void testSizeByIterator(PrefixTree tree) {
     int count = 0;
-    for (final Iterator i = tree.iterator(); i.hasNext();) {
-      i.next();
+    for (@SuppressWarnings("unused") String s : tree) {
       count++;
     }
 
diff --git a/user/test/com/google/gwt/user/client/ui/TreeTest.java b/user/test/com/google/gwt/user/client/ui/TreeTest.java
index 212b901..dfcda3a 100644
--- a/user/test/com/google/gwt/user/client/ui/TreeTest.java
+++ b/user/test/com/google/gwt/user/client/ui/TreeTest.java
@@ -15,6 +15,8 @@
  */
 package com.google.gwt.user.client.ui;
 
+import com.google.gwt.junit.DoNotRunWith;
+import com.google.gwt.junit.Platform;
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 import com.google.gwt.user.client.DOM;
@@ -344,6 +346,55 @@
       // Expected.
     }
   }
+  
+  @DoNotRunWith(Platform.HtmlUnitLayout)
+  public void testScrollOnSelectEnabledFalse() {
+    // With scrolling disabled.
+    Tree tree = createTree();
+    tree.setScrollOnSelectEnabled(false);
+    assertScrollingOnSelection(tree, false);
+  }
+
+  @DoNotRunWith(Platform.HtmlUnitLayout)
+  public void testScrollOnSelectEnabledTrue() {
+    // With scrolling enabled (default)
+    Tree tree = createTree();
+    assertTrue(tree.isScrollOnSelectEnabled());
+    assertScrollingOnSelection(tree, true);
+  }
+
+  private void assertScrollingOnSelection(Tree tree, boolean shouldScroll) {
+    tree.addItem(new Label("hello1"));
+    tree.addItem(new Label("hello2"));
+    TreeItem levelZeroTreeItem = tree.addItem(new Label("level0"));
+    TreeItem selectedItem = levelZeroTreeItem.addItem(new Label("level1"));
+    selectedItem.addItem(SafeHtmlUtils.fromString("level2"));
+
+    // For the tree to be opened. Otherwise, all sizes will be zero and no scrolling would occur,
+    // regardless of the mode.
+    levelZeroTreeItem.setState(true);
+    selectedItem.setState(true);
+
+    ScrollPanel panel = new ScrollPanel();
+    RootPanel.get().add(panel);
+    panel.setWidget(tree);
+    
+    // Set a size that is smaller than the content to allow scrolling
+    panel.setPixelSize(40, 90);
+
+    assertEquals(0, panel.getVerticalScrollPosition());
+    assertEquals(0, panel.getHorizontalScrollPosition());
+
+    tree.setSelectedItem(selectedItem);
+
+    if (shouldScroll) {
+      assertTrue("Expected vertical scroll", panel.getVerticalScrollPosition() != 0);
+      assertTrue("Expected horizontal scroll", panel.getHorizontalScrollPosition() != 0);
+    } else {
+      assertEquals("Expected no vertical scroll", 0, panel.getVerticalScrollPosition());
+      assertEquals("Expected no horizontal scroll", 0, panel.getHorizontalScrollPosition());
+    }
+  }
 
   public void testSwap() {
     Tree t = createTree();
diff --git a/user/test/com/google/gwt/user/client/ui/WidgetCollectionTest.java b/user/test/com/google/gwt/user/client/ui/WidgetCollectionTest.java
index 33d01ad..121b54c 100644
--- a/user/test/com/google/gwt/user/client/ui/WidgetCollectionTest.java
+++ b/user/test/com/google/gwt/user/client/ui/WidgetCollectionTest.java
@@ -38,7 +38,7 @@
     public void clear() {
     }
 
-    public Iterator iterator() {
+    public Iterator<Widget> iterator() {
       return null;
     }
 
@@ -88,7 +88,7 @@
     wc.add(l1);
     wc.add(l2);
 
-    Iterator it = wc.iterator();
+    Iterator<Widget> it = wc.iterator();
     assertTrue(it.hasNext());
     assertEquals(it.next(), l0);
     it.remove();
diff --git a/user/test/com/google/gwt/user/client/ui/WidgetIteratorsTest.java b/user/test/com/google/gwt/user/client/ui/WidgetIteratorsTest.java
index 21821cf..fe7ffc7 100644
--- a/user/test/com/google/gwt/user/client/ui/WidgetIteratorsTest.java
+++ b/user/test/com/google/gwt/user/client/ui/WidgetIteratorsTest.java
@@ -37,7 +37,7 @@
       fail("Unexpected call to clear()");
     }
 
-    public Iterator iterator() {
+    public Iterator<Widget> iterator() {
       fail("Unexpected call to iterator()");
       return null;
     }
@@ -56,7 +56,7 @@
    * Tests that empty arrays operate properly.
    */
   public void testEmptyArray() {
-    final Iterator subject = WidgetIterators.createWidgetIterator(
+    final Iterator<Widget> subject = WidgetIterators.createWidgetIterator(
         new MockWidget(), new Widget[] {null, null});
     assertFalse(subject.hasNext());
     assertNextFails(subject);
@@ -80,7 +80,7 @@
       }
     };
 
-    final Iterator subject = WidgetIterators.createWidgetIterator(mock, widgets);
+    final Iterator<Widget> subject = WidgetIterators.createWidgetIterator(mock, widgets);
 
     expectedRemoveIndex[0] = 1;
     assertTrue(subject.hasNext());
@@ -106,7 +106,7 @@
     final MockWidget mock = new MockWidget();
     final Widget[] widgets = new Widget[] {
         null, createTestWidget(), null, createTestWidget(), null, null};
-    final Iterator subject = WidgetIterators.createWidgetIterator(mock, widgets);
+    final Iterator<Widget> subject = WidgetIterators.createWidgetIterator(mock, widgets);
 
     assertTrue(subject.hasNext());
     assertEquals(widgets[1], subject.next());
@@ -118,7 +118,7 @@
     assertNextFails(subject);
   }
 
-  private void assertNextFails(Iterator iterator) {
+  private void assertNextFails(Iterator<Widget> iterator) {
     try {
       iterator.next();
       fail("Expected NoSuchElementException.");
@@ -127,7 +127,7 @@
     }
   }
 
-  private void assertRemoveFails(Iterator iterator) {
+  private void assertRemoveFails(Iterator<Widget> iterator) {
     try {
       iterator.remove();
       fail("Expected IllegalStateException.");
diff --git a/user/test/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilderTest.java b/user/test/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilderTest.java
index d5f01a0..88251fa 100644
--- a/user/test/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilderTest.java
+++ b/user/test/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilderTest.java
@@ -45,11 +45,16 @@
 import com.google.gwt.user.rebind.rpc.testcases.client.ManualSerialization;
 import com.google.gwt.user.rebind.rpc.testcases.client.NoSerializableTypes;
 import com.google.gwt.user.rebind.rpc.testcases.client.NotAllSubtypesAreSerializable;
+import com.google.gwt.user.rebind.rpc.testcases.client.ParameterizedTypeInList;
+import com.google.gwt.user.rebind.rpc.testcases.client.RawTypeInList;
+import com.google.gwt.user.rebind.rpc.testcases.client.SubclassUsedInArray;
 
 import junit.framework.TestCase;
 
 import java.io.PrintWriter;
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -1925,6 +1930,44 @@
   }
 
   /**
+   * Tests a case where a subtype is visited and then later used to find covariant array types.
+   * (Reproduces a caching issue that depends on the order in which types are visited.)
+   */
+  public void testSubclassUsedInArray() throws NotFoundException, UnableToCompleteException {
+    JClassType expected = arrayType(SubclassUsedInArray.LeafType.class);
+    checkSerializable(expected,
+        eachJType(SubclassUsedInArray.Base.class, SubclassUsedInArray.HasArray.class));
+  }
+
+  /**
+   * Test the case where a root array type has a type parameter as its leaf.
+   */
+  public void testArrayOfTypeParameterExtendsSubclass() throws Exception {
+    JClassType expected = arrayType(SubclassUsedInArray.LeafType.class);
+
+    TypeOracle oracle = getTestTypeOracle();
+    JGenericType genericHasArray = oracle
+        .getType(SubclassUsedInArray.GenericHasArray.class.getCanonicalName()).isGenericType();
+    JTypeParameter typeParameter = genericHasArray.getTypeParameters()[0];
+
+    checkSerializable(expected,
+        oracle.getType(SubclassUsedInArray.Base.class.getCanonicalName()),
+        oracle.getArrayType(typeParameter));
+  }
+
+  public void testRawTypeInList() throws Exception {
+    JClassType expected = arrayType(RawTypeInList.Covariant.class);
+    checkSerializable(expected,
+        eachJType(RawTypeInList.Marker.class, RawTypeInList.HasList.class));
+  }
+
+  public void testParameterizedTypeInList() throws Exception {
+    JClassType expected = arrayType(ParameterizedTypeInList.Covariant.class);
+    checkSerializable(expected,
+        eachJType(ParameterizedTypeInList.Marker.class, ParameterizedTypeInList.HasList.class));
+  }
+
+  /**
    * Tests subtypes that introduce new instantiable type parameters.
    * 
    * @throws UnableToCompleteException
@@ -2027,7 +2070,7 @@
     JClassType foo = to.getType("Foo");
     JClassType bar = to.getType("Bar");
     JClassType intfOfString =
-        to.getParameterizedType(intf, new JClassType[] {to.getType(String.class.getName())});
+        to.getParameterizedType(intf, new JClassType[]{to.getType(String.class.getName())});
     JClassType ser = to.getType("Ser");
 
     SerializableTypeOracleBuilder sob = createSerializableTypeOracleBuilder(logger, to);
@@ -2301,7 +2344,7 @@
 
     JTypeParameter typeParam = c.getTypeParameters()[0];
 
-    JParameterizedType parameterizedType = to.getParameterizedType(a, new JClassType[] {typeParam});
+    JParameterizedType parameterizedType = to.getParameterizedType(a, new JClassType[]{typeParam});
     SerializableTypeOracleBuilder sob = createSerializableTypeOracleBuilder(logger, to);
     sob.addRootType(logger, parameterizedType);
     SerializableTypeOracle so = sob.build(logger);
@@ -2366,6 +2409,78 @@
     assertNotInstantiableOrFieldSerializable(so, a.getRawType());
   }
 
+  /**
+   * Checks that a type is serializable when searching from the given roots.
+   * Also, check that the root order doesn't matter.
+   */
+  private void checkSerializable(JClassType expected, JType... roots)
+      throws UnableToCompleteException {
+    roots = Arrays.copyOf(roots, roots.length);
+
+    // find serializable types in forward and reverse order
+    SerializableTypeOracle forwardResult = findSerializable(roots);
+    Collections.reverse(Arrays.asList(roots));
+    SerializableTypeOracle reverseResult = findSerializable(roots);
+
+    // check that the expected type is serializable
+    boolean forwardOk = forwardResult.isSerializable(expected);
+    boolean reverseOk = reverseResult.isSerializable(expected);
+    if (!forwardOk && !reverseOk) {
+      fail(expected + " is not serializable from " + join(", ", roots) + " in either order");
+    }
+    if (!forwardOk || !reverseOk) {
+      fail(expected + " is not serializable from " + join(", ", roots) + " in both orders");
+    }
+
+    // also check that other serializable types are stable
+    checkSameSerializables(forwardResult, reverseResult);
+  }
+
+  private SerializableTypeOracle findSerializable(JType... rootTypes)
+      throws UnableToCompleteException {
+    TreeLogger logger = createLogger();
+    TypeOracle oracle = getTestTypeOracle();
+    SerializableTypeOracleBuilder builder =
+        createSerializableTypeOracleBuilder(logger, oracle);
+    for (JType root : rootTypes) {
+      builder.addRootType(logger, root);
+    }
+    return builder.build(logger);
+  }
+
+  private JType[] eachJType(Class... classes) throws UnableToCompleteException {
+    TypeOracle oracle = getTestTypeOracle();
+    List<JType> result = new ArrayList<JType>();
+    for (Class aClass : classes) {
+      result.add(oracle.findType(aClass.getCanonicalName()));
+    }
+    return result.toArray(new JType[result.size()]);
+  }
+
+  private void checkSameSerializables(SerializableTypeOracle first, SerializableTypeOracle second) {
+    String firstTypes = join("\n", first.getSerializableTypes());
+    String secondTypes = join("\n", second.getSerializableTypes());
+    assertEquals("type oracles differ", firstTypes, secondTypes);
+  }
+
+  private JClassType arrayType(Class<?> itemType)
+      throws UnableToCompleteException, NotFoundException {
+    TypeOracle typeOracle = getTestTypeOracle();
+    JClassType leaf = typeOracle.getType(itemType.getCanonicalName());
+    return typeOracle.getArrayType(leaf);
+  }
+
+  private <T> String join(String delimiter, T... items) {
+    StringBuilder result = new StringBuilder();
+    for (int i = 0; i < items.length; i++) {
+      if (i > 0) {
+        result.append(delimiter);
+      }
+      result.append(items[i]);
+    }
+    return result.toString();
+  }
+
   private JClassType[] makeArray(JClassType... elements) {
     return elements;
   }
diff --git a/user/test/com/google/gwt/user/rebind/rpc/SerializationUtilsTest.java b/user/test/com/google/gwt/user/rebind/rpc/SerializationUtilsTest.java
new file mode 100644
index 0000000..3c8a5cc
--- /dev/null
+++ b/user/test/com/google/gwt/user/rebind/rpc/SerializationUtilsTest.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2013 Google Inc.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.user.rebind.rpc;
+
+import com.google.gwt.core.ext.TreeLogger;
+import com.google.gwt.core.ext.typeinfo.JClassType;
+import com.google.gwt.core.ext.typeinfo.NotFoundException;
+import com.google.gwt.core.ext.typeinfo.TypeOracle;
+import com.google.gwt.dev.javac.TypeOracleTestingUtils;
+import com.google.gwt.dev.javac.testing.impl.StaticJavaResource;
+
+import junit.framework.TestCase;
+
+/**
+ * Tests for {@link SerializationUtils}.
+ */
+public class SerializationUtilsTest extends TestCase {
+
+  public void testGetSerializationSignatureUseEnumConstants() throws Throwable {
+    assertEquals("Identical enums have different signature",
+        getEnumSerializationSignature("FOO, BAR, BAZ"),
+        getEnumSerializationSignature("FOO, BAR, BAZ"));
+
+    assertFalse("Enums w/ renamed constant have same signature",
+        getEnumSerializationSignature("FOO, BAR, BAZ").equals(
+            getEnumSerializationSignature("FOO, BAZ, BAR")));
+    // reordering is equivalent to renaming, but let's test it anyway
+    assertFalse("Enums w/ reordered constants have same signature",
+        getEnumSerializationSignature("FOO, BAR, BAZ").equals(
+            getEnumSerializationSignature("FOO, BAZ, BAR")));
+
+    assertFalse("Enums w/ added constant have same signature",
+        getEnumSerializationSignature("FOO, BAR, BAZ").equals(
+            getEnumSerializationSignature("FOO, BAR, BAZ, QUUX")));
+    assertFalse("Enums w/ removed constant have same signature",
+        getEnumSerializationSignature("FOO, BAR, BAZ").equals(
+            getEnumSerializationSignature("FOO, BAR")));
+
+    assertEquals("Enums w/ changed implementation have different signature",
+        getEnumSerializationSignature("FOO, BAR, BAZ"),
+        getEnumSerializationSignature("FOO, BAR { @Override public String toString() { return \"QUUX\"; } }, BAZ"));
+  }
+
+  protected String getEnumSerializationSignature(String constants) throws NotFoundException {
+    TypeOracle to = TypeOracleTestingUtils.buildStandardTypeOracleWith(TreeLogger.NULL,
+        new StaticJavaResource("TestEnum", "public enum TestEnum { " + constants + " }"));
+    JClassType enumType = to.getType("TestEnum");
+    return SerializationUtils.getSerializationSignature(to, enumType);
+  }
+}
diff --git a/user/test/com/google/gwt/user/rebind/rpc/testcases/client/ParameterizedTypeInList.java b/user/test/com/google/gwt/user/rebind/rpc/testcases/client/ParameterizedTypeInList.java
new file mode 100644
index 0000000..061a6a6
--- /dev/null
+++ b/user/test/com/google/gwt/user/rebind/rpc/testcases/client/ParameterizedTypeInList.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.google.gwt.user.rebind.rpc.testcases.client;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * Sets up the situation where we need to find the covariant arrays of a List that
+ * contains a parameterized type.
+ */
+public class ParameterizedTypeInList {
+
+  /**
+   * A root type to make sure we visit Item as a subtype first
+   * (so that its subtypes aren't cached).
+   */
+  public interface Marker extends Serializable {
+  }
+
+  /**
+   * A root type that uses Item as a parameterized type in a List.
+   * (GWT-RPC automatically adds the corresponding array types for lists.)
+   */
+  public static class HasList implements Serializable {
+    List<Item<String>> field;
+  }
+
+  /**
+   * A parameterized type.
+   */
+  public static class Item<T extends Comparable> implements Marker {
+    T field;
+  }
+
+  /**
+   * Arrays of this type should be added as well.
+   */
+  public static class Covariant extends Item<String> {
+  }
+}
diff --git a/user/test/com/google/gwt/user/rebind/rpc/testcases/client/RawTypeInList.java b/user/test/com/google/gwt/user/rebind/rpc/testcases/client/RawTypeInList.java
new file mode 100644
index 0000000..c5d37bf
--- /dev/null
+++ b/user/test/com/google/gwt/user/rebind/rpc/testcases/client/RawTypeInList.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.google.gwt.user.rebind.rpc.testcases.client;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * Sets up the situation where we need to find the covariant arrays of a List that
+ * contains a raw type.
+ */
+public class RawTypeInList {
+
+  /**
+   * A root type to make sure we visit Item as a subtype first
+   * (so that its subtypes aren't cached).
+   */
+  public interface Marker extends Serializable {
+  }
+
+  /**
+   * A root type that uses Item as a raw type in a List.
+   * (GWT-RPC automatically adds the corresponding array types for lists.)
+   */
+  public static class HasList implements Serializable {
+    List<Item> field;
+  }
+
+  /**
+   * A parameterized type.
+   */
+  public static class Item<T extends Comparable> implements Marker {
+    T field;
+  }
+
+  /**
+   * Arrays of this type should be added as well.
+   */
+  public static class Covariant extends Item<String> {
+  }
+}
diff --git a/user/test/com/google/gwt/user/rebind/rpc/testcases/client/SubclassUsedInArray.java b/user/test/com/google/gwt/user/rebind/rpc/testcases/client/SubclassUsedInArray.java
new file mode 100644
index 0000000..247875f
--- /dev/null
+++ b/user/test/com/google/gwt/user/rebind/rpc/testcases/client/SubclassUsedInArray.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.user.rebind.rpc.testcases.client;
+
+import java.io.Serializable;
+
+/**
+ * Sets up a situation where an array type has a covariant type but its leaf's subtypes aren't
+ * cached.
+ */
+public class SubclassUsedInArray {
+
+  /** Root type. */
+  public interface Base extends Serializable {
+  }
+
+  /** Array's leaf type. Not a root so its subtypes aren't cached. */
+  public static class Subtype implements Base {
+    // Has a field so it's not trivially serializable and full analysis will be done.
+    private FieldType fieldType;
+  }
+
+  /** A subtype to trigger a covariant array type. */
+  public static class LeafType extends Subtype {
+  }
+
+  /** Root type to trigger the array. */
+  public static class HasArray implements Serializable {
+    private Subtype[] array;
+  }
+
+  /** Used to create a type parameter with Subtype as its upper bound */
+  public static class GenericHasArray<T extends Subtype> implements Serializable {
+    private T[] array;
+  }
+
+  /** Just a field. */
+  public static class FieldType implements Serializable {
+  }
+}
diff --git a/user/test/com/google/gwt/user/server/rpc/RPCTypeCheckTest.java b/user/test/com/google/gwt/user/server/rpc/RPCTypeCheckTest.java
index 76f155b..d6fc11d 100644
--- a/user/test/com/google/gwt/user/server/rpc/RPCTypeCheckTest.java
+++ b/user/test/com/google/gwt/user/server/rpc/RPCTypeCheckTest.java
@@ -23,6 +23,7 @@
 import com.google.gwt.user.client.rpc.SerializedTypeViolationException;
 import com.google.gwt.user.client.rpc.TestSetFactory.ReverseSorter;
 import com.google.gwt.user.server.rpc.RPCTypeCheckCollectionsTest.TestHashSet;
+import com.google.gwt.user.server.rpc.testcases.TypeVariableCycle;
 
 import junit.framework.TestCase;
 
@@ -2458,6 +2459,23 @@
   }
 
   /**
+   * Test for <a href="https://code.google.com/p/google-web-toolkit/issues/detail?id=7779">7779</a>.
+   */
+  public void testTypeVariableCycle() throws Exception {
+
+    // Build an RPC request that calls dereference(hello)
+    RPCTypeCheckFactory builder = new RPCTypeCheckFactory(TypeVariableCycle.class, "dereference");
+    builder.write(TypeVariableCycle.HELLO);
+    String request = builder.toString();
+
+    // Make sure we can decode it.
+    RPCRequest decoded = RPC.decodeRequest(request);
+    Object deserializedArg = decoded.getParameters()[0];
+    assertEquals(TypeVariableCycle.PtrPtr.class, deserializedArg.getClass());
+    assertEquals("hello", ((TypeVariableCycle.PtrPtr) deserializedArg).get());
+  }
+
+  /**
    * This checks that HashMap correctly reports that it is an incorrect type.
    */
   public void testHashMapSpoofingClass() {
@@ -2760,6 +2778,7 @@
    * arguments of a primitive value type with another primitive type.
    */
   public void testValueSpoofing() {
+    boolean returned = false;
     try {
       // When an int appears in place of a string, the result will be the
       // int value indexing the string table, which will result in
@@ -2767,10 +2786,14 @@
       // an incorrect string if the integer value is within range of the string
       // table.
       RPC.decodeRequest(generateIntSpoofingString());
-      fail("Expected ArrayIndexOutOfBoundsException from testValueSpoofing (1)");
-    } catch (ArrayIndexOutOfBoundsException e) {
+      returned = true;
+    } catch (AssertionError e) {
       // Expected
     }
+    if (returned) {
+      fail("RPC.decodeRequest should have thrown.");
+    }
+
     try {
       // When a string pretends to be an int, it simply results in an incorrect
       // integer value.
diff --git a/user/test/com/google/gwt/user/server/rpc/UnicodeEscapingServiceImpl.java b/user/test/com/google/gwt/user/server/rpc/UnicodeEscapingServiceImpl.java
index c96276a..30ffbe1 100644
--- a/user/test/com/google/gwt/user/server/rpc/UnicodeEscapingServiceImpl.java
+++ b/user/test/com/google/gwt/user/server/rpc/UnicodeEscapingServiceImpl.java
@@ -25,6 +25,13 @@
     UnicodeEscapingService {
 
   /**
+   * @see UnicodeEscapingService#echo(String)
+   */
+  public String echo(String str) {
+    return str;
+  }
+
+  /**
    * @see UnicodeEscapingService#getStringContainingCharacterRange(int, int)
    */
   public String getStringContainingCharacterRange(int start, int end) {
diff --git a/user/test/com/google/gwt/user/server/rpc/impl/StandardSerializationPolicyTest.java b/user/test/com/google/gwt/user/server/rpc/impl/StandardSerializationPolicyTest.java
index 90bb1be..f75f54d 100644
--- a/user/test/com/google/gwt/user/server/rpc/impl/StandardSerializationPolicyTest.java
+++ b/user/test/com/google/gwt/user/server/rpc/impl/StandardSerializationPolicyTest.java
@@ -21,6 +21,7 @@
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Set;
 
 /**
  * Tests for the {@link StandardSerializationPolicy} class.
@@ -117,14 +118,14 @@
   }
 
   StandardSerializationPolicy getStandardSerializationPolicy() {
-    Map map = new HashMap();
+    Map<Class<?>, Boolean> map = new HashMap<Class<?>, Boolean>();
     map.put(A.class, Boolean.TRUE);
     map.put(C.class, Boolean.FALSE);
     
-    Map typeIds = new HashMap();
+    Map<Class<?>, String> typeIds = new HashMap<Class<?>, String>();
     typeIds.put(A.class, "A");
     typeIds.put(B.class, "B");
 
-    return new StandardSerializationPolicy(map, map, typeIds, new HashMap());
+    return new StandardSerializationPolicy(map, map, typeIds, new HashMap<Class<?>, Set<String>>());
   }
 }
diff --git a/user/test/com/google/gwt/user/server/rpc/testcases/TypeVariableCycle.java b/user/test/com/google/gwt/user/server/rpc/testcases/TypeVariableCycle.java
new file mode 100644
index 0000000..190f129
--- /dev/null
+++ b/user/test/com/google/gwt/user/server/rpc/testcases/TypeVariableCycle.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.user.server.rpc.testcases;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+import com.google.gwt.user.client.rpc.RemoteService;
+
+/**
+ * An example of how to create a cycle using type variable inference. To determine
+ * the expected type of the HELLO.ptr field, the type inference in
+ * {@link com.google.gwt.user.server.rpc.impl.SerializabilityUtil}
+ * starts with PtrPtr.ptr and deduces the following:
+ *
+ * <ul>
+ *   <li>C = B (by inheritance)
+ *   <li>B = A (by inheritance)
+ *   <li>A = C (because the raw type of ptr is BasePtr&lt;A&gt; and we are substituting C into it)
+ * </pre>
+ *
+ * <p>If we put these deductions into a map then there will be a cycle in the map.
+ * The type inferencer needs to detect the cycle and conclude that there is no constraint
+ * on any of these type variables, so HELLO.ptr.target could be any serializable
+ * type.</p>
+ *
+ * <p>TODO(skybrian): it's unclear whether this should really be a cycle. The 'A' in the second
+ * deduction annotates the the PtrPtr object (HELLO) and the 'A' in the last deduction is for the
+ * SimplePtr object (HELLO.ptr) so perhaps they are two type variables of the same name in different
+ * scopes? Currently the algorithm in SerializabilityUtil doesn't have scopes so this might
+ * just be a false alias. It doesn't affect the conclusion for this example, though.</p>
+ */
+public class TypeVariableCycle implements RemoteService {
+
+  /**
+   * A value we that we want to send via GWT-RPC.
+   */
+  public static final PtrPtr<String> HELLO =
+      new PtrPtr<String>(new SimplePtr<String>("hello"));
+
+  /**
+   * The RPC method that we will call.
+   */
+  @SuppressWarnings("unused")
+  public static <X> X dereference(BasePtr<X> any) {
+    return any.get();
+  }
+
+  /**
+   * The base of a convoluted class hierarchy of pointer types.
+   */
+  public static abstract class BasePtr<A> implements IsSerializable {
+    abstract A get();
+  }
+
+  /**
+   * An unneeded intermediate class to make a size-3 cycle. (Intermediate
+   * classes could be added to make a cycle of any size.)
+   */
+  public abstract static class NonSimplePtr<B> extends BasePtr<B> {
+  }
+
+  /**
+   * A pointer to a pointer.
+   */
+  public static class PtrPtr<C> extends NonSimplePtr<C> {
+    public BasePtr<C> ptr;
+
+    @SuppressWarnings("unused")
+    PtrPtr() {
+    }
+
+    PtrPtr(BasePtr<C> ptr) {
+      this.ptr = ptr;
+    }
+
+    @Override
+    public C get() {
+      return ptr.get();
+    }
+  }
+
+  /**
+   * A trivial implementation of BasePtr.
+   */
+  public static class SimplePtr<D> extends BasePtr<D> {
+    public D target;
+
+    @SuppressWarnings("unused")
+    SimplePtr() {
+    }
+
+    SimplePtr(D target) {
+      this.target = target;
+    }
+
+    @Override
+    D get() {
+      return target;
+    }
+  }
+}
diff --git a/user/test/com/google/gwt/validation/example/client/AuthorTest.java b/user/test/com/google/gwt/validation/example/client/AuthorTest.java
index 374399d..38d4d1b 100644
--- a/user/test/com/google/gwt/validation/example/client/AuthorTest.java
+++ b/user/test/com/google/gwt/validation/example/client/AuthorTest.java
@@ -47,20 +47,20 @@
     initValidAuthor();
     Set<ConstraintViolation<Author>> violations = validator.validate(author,
         ClientGroup.class);
-    assertContentsAnyOrder("valid author", violations);
+    assertContentsEmpty("valid author", violations);
   }
 
   public void testGroup_default() throws Exception {
     initValidAuthor();
     Set<ConstraintViolation<Author>> violations = validator.validate(author,
         Default.class);
-    assertContentsAnyOrder("valid author", violations);
+    assertContentsEmpty("valid author", violations);
   }
 
   public void testGroup_empty() throws Exception {
     initValidAuthor();
     Set<ConstraintViolation<Author>> violations = validator.validate(author);
-    assertContentsAnyOrder("valid author", violations);
+    assertContentsEmpty("valid author", violations);
   }
 
   public void testGroup_serverGroup() throws Exception {
@@ -93,7 +93,7 @@
   public void testValidate_valid() {
     initValidAuthor();
     Set<ConstraintViolation<Author>> violations = validator.validate(author);
-    assertContentsAnyOrder("valid author", violations);
+    assertContentsEmpty("valid author", violations);
   }
 
   public void testValidateProperty_object() {
@@ -125,6 +125,11 @@
     author.setCompany("Google");
   }
 
+  private <T> void assertContentsEmpty(String message,
+      Iterable<T> actual) {
+    assertFalse(message + "Expected empty but found " + actual, actual.iterator().hasNext());
+  }
+
   private <T> void assertContentsAnyOrder(String message,
       Iterable<T> actual, T... expected) {
 
diff --git a/user/test/com/google/web/bindery/event/shared/SimpleEventBusTest.java b/user/test/com/google/web/bindery/event/shared/SimpleEventBusTest.java
index 29e6541..cbe7b58 100644
--- a/user/test/com/google/web/bindery/event/shared/SimpleEventBusTest.java
+++ b/user/test/com/google/web/bindery/event/shared/SimpleEventBusTest.java
@@ -294,19 +294,7 @@
     final SimpleEventBus eventBus = new SimpleEventBus();
     HandlerRegistration reg = FooEvent.register(eventBus, fooHandler1);
     reg.removeHandler();
-
-    boolean assertsOn = getClass().desiredAssertionStatus();
-
-    if (assertsOn) {
-      try {
-        reg.removeHandler();
-        fail("Should have thrown on remove");
-      } catch (AssertionError e) { /* pass */
-      }
-    } else {
-      reg.removeHandler();
-      // Succeed on no assert failure
-    }
+    reg.removeHandler(); // should not throw
   }
 
   public void testNoSource() {
diff --git a/user/test/com/google/web/bindery/requestfactory/gwt/client/RequestFactoryTest.java b/user/test/com/google/web/bindery/requestfactory/gwt/client/RequestFactoryTest.java
index 90dcd71..caf6670 100644
--- a/user/test/com/google/web/bindery/requestfactory/gwt/client/RequestFactoryTest.java
+++ b/user/test/com/google/web/bindery/requestfactory/gwt/client/RequestFactoryTest.java
@@ -16,6 +16,7 @@
 package com.google.web.bindery.requestfactory.gwt.client;
 
 import com.google.web.bindery.autobean.shared.AutoBeanCodex;
+import com.google.web.bindery.autobean.shared.AutoBeanUtils;
 import com.google.web.bindery.requestfactory.shared.EntityProxy;
 import com.google.web.bindery.requestfactory.shared.EntityProxyChange;
 import com.google.web.bindery.requestfactory.shared.EntityProxyId;
@@ -275,6 +276,63 @@
     });
   }
 
+  /**
+   * See https://code.google.com/p/google-web-toolkit/issues/detail?id=7900
+   */
+  public void testCreatePersistCascadingAndReturnSelfEditWithReferences() {
+    delayTestFinish(DELAY_TEST_FINISH);
+
+    SimpleFooRequest context = simpleFooRequest();
+    SimpleFooProxy foo = context.create(SimpleFooProxy.class);
+    SimpleBarProxy bar = context.create(SimpleBarProxy.class);
+    foo.setBarField(bar);
+    Request<SimpleFooProxy> fooReq = context.persistCascadingAndReturnSelf()
+        .using(foo).with("barField");
+    fooReq.fire(new Receiver<SimpleFooProxy>() {
+
+      @Override
+      public void onSuccess(SimpleFooProxy returned) {
+        assertTrue(AutoBeanUtils.getAutoBean(returned).isFrozen());
+        assertTrue(AutoBeanUtils.getAutoBean(returned.getBarField()).isFrozen());
+
+        simpleFooRequest().edit(returned);
+
+        finishTestAndReset();
+      }
+    });
+  }
+
+  /**
+   * See https://code.google.com/p/google-web-toolkit/issues/detail?id=7900
+   */
+  public void testCreateReferencePersistCascadingAndReturnSelfEdit() {
+    delayTestFinish(DELAY_TEST_FINISH);
+
+    simpleFooRequest().findSimpleFooById(1L).fire(new Receiver<SimpleFooProxy>() {
+      @Override
+      public void onSuccess(SimpleFooProxy response) {
+        SimpleFooRequest context = simpleFooRequest();
+        SimpleFooProxy foo = context.edit(response);
+        SimpleBarProxy bar = context.create(SimpleBarProxy.class);
+        foo.setBarField(bar);
+        Request<SimpleFooProxy> fooReq = context.persistCascadingAndReturnSelf()
+            .using(foo).with("barField");
+        fooReq.fire(new Receiver<SimpleFooProxy>() {
+
+          @Override
+          public void onSuccess(SimpleFooProxy returned) {
+            assertTrue(AutoBeanUtils.getAutoBean(returned).isFrozen());
+            assertTrue(AutoBeanUtils.getAutoBean(returned.getBarField()).isFrozen());
+
+            simpleFooRequest().edit(returned);
+
+            finishTestAndReset();
+          }
+        });
+      }
+    });
+  }
+
   public void testChangedCreate() {
     SimpleFooRequest context = simpleFooRequest();
 
@@ -606,6 +664,9 @@
         assertEquals(2, handler.totalEventCount);
 
         checkStableIdEquals(foo, returned);
+
+        simpleFooRequest().edit(returned);
+
         finishTestAndReset();
       }
     });
diff --git a/user/test/com/google/web/bindery/requestfactory/shared/impl/RequestPayloadTest.java b/user/test/com/google/web/bindery/requestfactory/shared/impl/RequestPayloadTest.java
index d40d9a0..e2c33cf 100644
--- a/user/test/com/google/web/bindery/requestfactory/shared/impl/RequestPayloadTest.java
+++ b/user/test/com/google/web/bindery/requestfactory/shared/impl/RequestPayloadTest.java
@@ -119,6 +119,7 @@
                     for (OperationMessage operationMessage : requestMessage.getOperations()) {
                       if (fooTypeToken.equals(operationMessage.getTypeToken())) {
                         seenFoos++;
+                        @SuppressWarnings("unchecked")
                         SimpleProxyId<?> id = (SimpleProxyId<?>) foo.stableId();
                         assertEquals(id.getServerId(), operationMessage.getServerId());
                         assertEquals(2, operationMessage.getPropertyMap().size());
diff --git a/user/test/org/apache/commons/collections/AbstractTestListIterator.java b/user/test/org/apache/commons/collections/AbstractTestListIterator.java
index 24701f5..e97f743 100755
--- a/user/test/org/apache/commons/collections/AbstractTestListIterator.java
+++ b/user/test/org/apache/commons/collections/AbstractTestListIterator.java
@@ -37,6 +37,7 @@
  * @author Rodney Waldhoff
  * @author Stephen Colebourne
  */
+@SuppressWarnings({"unchecked", "rawtypes"})
 public abstract class AbstractTestListIterator extends TestIterator {
 
   // -----------------------------------------------------------------------
diff --git a/user/test/org/apache/commons/collections/DefaultMapEntry.java b/user/test/org/apache/commons/collections/DefaultMapEntry.java
index 1b15f06..2f8ee5a 100644
--- a/user/test/org/apache/commons/collections/DefaultMapEntry.java
+++ b/user/test/org/apache/commons/collections/DefaultMapEntry.java
@@ -23,7 +23,7 @@
   * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
   * @author <a href="mailto:mas@apache.org">Michael A. Smith</a>
   */
-  
+@SuppressWarnings({"unchecked", "rawtypes"})
 public class DefaultMapEntry implements Map.Entry {
     
     private Object key;
diff --git a/user/test/org/apache/commons/collections/LocalTestNode.java b/user/test/org/apache/commons/collections/LocalTestNode.java
index 5608b62..ba282ad 100644
--- a/user/test/org/apache/commons/collections/LocalTestNode.java
+++ b/user/test/org/apache/commons/collections/LocalTestNode.java
@@ -22,6 +22,7 @@
 *
 * @author Marc Johnson (marcj at users dot sourceforge dot net)
 */
+@SuppressWarnings({"unchecked", "rawtypes"})
 class LocalTestNode implements Comparable {
 
     private Comparable key;
diff --git a/user/test/org/apache/commons/collections/TestArrayList.java b/user/test/org/apache/commons/collections/TestArrayList.java
index 07ff0ab..63ef8b3 100644
--- a/user/test/org/apache/commons/collections/TestArrayList.java
+++ b/user/test/org/apache/commons/collections/TestArrayList.java
@@ -21,6 +21,7 @@
  * @author <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a>
  * @version $Id: TestArrayList.java,v 1.5.2.1 2004/05/22 12:14:05 scolebourne Exp $
  */
+@SuppressWarnings({"unchecked", "rawtypes"})
 public abstract class TestArrayList extends TestList
 { 
   
diff --git a/user/test/org/apache/commons/collections/TestCollection.java b/user/test/org/apache/commons/collections/TestCollection.java
index e3aac53..66d187f 100644
--- a/user/test/org/apache/commons/collections/TestCollection.java
+++ b/user/test/org/apache/commons/collections/TestCollection.java
@@ -110,6 +110,7 @@
  * @author <a href="mailto:mas@apache.org">Michael A. Smith</a>
  * @version $Id: TestCollection.java,v 1.9.2.1 2004/05/22 12:14:05 scolebourne Exp $
  */
+@SuppressWarnings({"unchecked", "rawtypes"})
 public abstract class TestCollection extends TestObject {
 
     //
diff --git a/user/test/org/apache/commons/collections/TestComparator.java b/user/test/org/apache/commons/collections/TestComparator.java
index 488dd6a..331644d 100644
--- a/user/test/org/apache/commons/collections/TestComparator.java
+++ b/user/test/org/apache/commons/collections/TestComparator.java
@@ -20,7 +20,7 @@
 import java.util.Comparator;
 import java.util.List;
 
-
+@SuppressWarnings({"unchecked", "rawtypes"})
 public abstract class TestComparator extends TestObject {
  
 
diff --git a/user/test/org/apache/commons/collections/TestIterator.java b/user/test/org/apache/commons/collections/TestIterator.java
index 9b779da..4714bc1 100644
--- a/user/test/org/apache/commons/collections/TestIterator.java
+++ b/user/test/org/apache/commons/collections/TestIterator.java
@@ -23,6 +23,7 @@
  * 
  * @author Morgan Delagrange
  */
+@SuppressWarnings({"unchecked", "rawtypes"})
 public abstract class TestIterator extends TestObject {
 
    
diff --git a/user/test/org/apache/commons/collections/TestList.java b/user/test/org/apache/commons/collections/TestList.java
index 9a0135b..88dd29c 100644
--- a/user/test/org/apache/commons/collections/TestList.java
+++ b/user/test/org/apache/commons/collections/TestList.java
@@ -40,6 +40,7 @@
  * @author Paul Jack
  * @version $Id: TestList.java,v 1.13.2.1 2004/05/22 12:14:05 scolebourne Exp $
  */
+@SuppressWarnings({"unchecked", "rawtypes"})
 public abstract class TestList extends TestCollection {
 
  
diff --git a/user/test/org/apache/commons/collections/TestMap.java b/user/test/org/apache/commons/collections/TestMap.java
index 16e39ce..7e1d0a9 100644
--- a/user/test/org/apache/commons/collections/TestMap.java
+++ b/user/test/org/apache/commons/collections/TestMap.java
@@ -106,6 +106,7 @@
  * @author Paul Jack
  * @version $Id: TestMap.java,v 1.20.2.1 2004/05/22 12:14:05 scolebourne Exp $
  */
+@SuppressWarnings({"unchecked", "rawtypes"})
 public abstract class TestMap extends TestObject{
 
     // These instance variables are initialized with the reset method.
diff --git a/user/test/org/apache/commons/collections/TestSet.java b/user/test/org/apache/commons/collections/TestSet.java
index 14f9933..df77884 100644
--- a/user/test/org/apache/commons/collections/TestSet.java
+++ b/user/test/org/apache/commons/collections/TestSet.java
@@ -38,6 +38,7 @@
  *  @author Paul Jack
  *  @version $Id: TestSet.java,v 1.2.2.1 2004/05/22 12:14:05 scolebourne Exp $
  */
+@SuppressWarnings({"unchecked", "rawtypes"})
 public abstract class TestSet extends TestCollection {
 
 
diff --git a/user/test/org/hibernate/jsr303/tck/util/TckTestSuiteWrapper.java b/user/test/org/hibernate/jsr303/tck/util/TckTestSuiteWrapper.java
index e58710e..d0509ed 100644
--- a/user/test/org/hibernate/jsr303/tck/util/TckTestSuiteWrapper.java
+++ b/user/test/org/hibernate/jsr303/tck/util/TckTestSuiteWrapper.java
@@ -25,7 +25,6 @@
 import com.google.gwt.thirdparty.guava.common.base.Predicate;
 
 import junit.framework.Test;
-import junit.framework.TestCase;
 
 import org.hibernate.jsr303.tck.util.client.Failing;
 import org.hibernate.jsr303.tck.util.client.NonTckTest;
@@ -107,8 +106,8 @@
       return;
     }
 
-    Class superClass = theClass;
-    Vector names = new Vector();
+    Class<?> superClass = theClass;
+    Vector<String> names = new Vector<String>();
     while (Test.class.isAssignableFrom(superClass)) {
       for (Method method : filter(copyOf(superClass.getDeclaredMethods()),
           METHOD_FILTER)) {
@@ -120,7 +119,7 @@
       addTest(warning("No tests found in " + theClass.getName()));
   }
 
-  private void addTestMethod(Method m, Vector names, Class theClass) {
+  private void addTestMethod(Method m, Vector<String> names, Class<?> theClass) {
     String name = m.getName();
     if (names.contains(name))
       return;
@@ -133,10 +132,6 @@
     addTest(createTest(theClass, name));
   }
 
-  private boolean ingoreMethod(Method m) {
-    return HAS_FAILING.apply(m);
-  }
-
   private boolean isPublicTestMethod(Method m) {
     return isTestMethod(m) && Modifier.isPublic(m.getModifiers());
   }