Merge
diff --git a/make/README b/make/README
index 466426d..bc88731 100644
--- a/make/README
+++ b/make/README
@@ -15,7 +15,7 @@
 
 System Requirements:
   Ant:      version 1.6.5 or later
-  NetBeans: version 5.0 or later (optional)
+  NetBeans: version 6.0 or later (optional)
   JDK:      currently version 1.5.0, although 1.6.0 is recommended
   OS:       any system supporting the above tools
 
diff --git a/make/build.properties b/make/build.properties
index 38fd0f4..6e792bb 100644
--- a/make/build.properties
+++ b/make/build.properties
@@ -66,7 +66,7 @@
 # set the following to -version to verify the versions of javac being used
 javac.version.opt = 
 # in time, there should be no exceptions to -Xlint:all
-javac.lint.opts = -Xlint:all,-deprecation,-fallthrough,-serial,-unchecked,-cast
+javac.lint.opts = -Xlint:all -Werror
 
 # options for the <javadoc> task for javac
 javadoc.jls3.url=http://java.sun.com/docs/books/jls/
diff --git a/make/build.xml b/make/build.xml
index 79bd060..770f3dd 100644
--- a/make/build.xml
+++ b/make/build.xml
@@ -392,6 +392,7 @@
             <attribute name="lib.dir" default="${dist.lib.dir}"/>
             <attribute name="java" default="java"/>
             <attribute name="javac.bootclasspath" default="-J-Xbootclasspath/p:${build.bootstrap.dir}/classes"/>
+            <attribute name="javac.java.home" default="${boot.java.home}"/>
             <attribute name="javac.target" default="${javac.target}"/>
             <attribute name="jarmainclass" default="com.sun.tools.@{name}.Main"/>
             <attribute name="jarclasspath" default=""/>
@@ -433,6 +434,7 @@
             <attribute name="gensrc.dir" default="${build.gensrc.dir}"/>
             <attribute name="lib.dir" default="${dist.lib.dir}"/>
             <attribute name="javac.bootclasspath" default="-J-Xbootclasspath/p:${build.bootstrap.dir}/classes"/>
+            <attribute name="javac.java.home" default="${boot.java.home}"/>
             <attribute name="javac.target" default="${javac.target}"/>
             <attribute name="jarmainclass" default="com.sun.tools.@{name}.Main"/>
             <attribute name="jarclasspath" default=""/>
@@ -471,6 +473,7 @@
             <attribute name="classes.dir" default="${build.classes.dir}"/>
             <attribute name="gensrc.dir" default="${build.gensrc.dir}"/>
             <attribute name="javac.bootclasspath" default="${build.bootstrap.dir}/classes"/>
+            <attribute name="javac.java.home" default="${boot.java.home}"/>
             <attribute name="javac.target" default="${javac.target}"/>
             <attribute name="release" default="${release}"/>
             <attribute name="full.version" default="${full.version}"/>
@@ -493,6 +496,7 @@
                           destdir="@{gensrc.dir}"
                           includes="**/*.properties"/>
                 <javac fork="true"
+                       executable="@{javac.java.home}/bin/javac"
                        srcdir="@{gensrc.dir}"
                        destdir="@{classes.dir}"
                        includes="@{includes}"
@@ -504,6 +508,7 @@
                     <compilerarg line="-Xlint"/>
                 </javac>
                 <javac fork="true"
+                       executable="@{javac.java.home}/bin/javac"
                        srcdir="${src.classes.dir}"
                        destdir="@{classes.dir}"
                        includes="@{includes}"
@@ -562,7 +567,9 @@
     
     <target name="-def-pcompile">
         <mkdir dir="${build.toolclasses.dir}"/>
-        <javac srcdir="${make.tools.dir}/CompileProperties"
+        <javac fork="true"
+               executable="${boot.java.home}/bin/javac"
+               srcdir="${make.tools.dir}/CompileProperties"
                destdir="${build.toolclasses.dir}/"
                classpath="${ant.home}/lib/ant.jar"/>
         <taskdef name="pcompile"
@@ -653,7 +660,7 @@
                 <!-- the next two properties are for convenience, when only 
                      a single instance of jtreg will be invoked. -->
                 <condition property="jtreg.passed">
-                    <equals arg1="${jtreg.javac.result}" arg2="0"/>
+                    <equals arg1="${jtreg.@{name}.result}" arg2="0"/>
                 </condition>
                 <property name="jtreg.report" value="${build.jtreg.dir}/@{name}/report"/>
             </sequential>
diff --git a/make/netbeans/README b/make/netbeans/README
index 7208e59..58cfec0 100644
--- a/make/netbeans/README
+++ b/make/netbeans/README
@@ -1,28 +1,39 @@
-Working on the "langtools" workspace using NetBeans.
+Using NetBeans to work on the langtools repository.
 
-This directory (make/netbeans) contains NetBeans projects that
-allow you to work on the various tools using the NetBeans IDE.
+Netbeans 6.0 or later is recommended.
 
-NetBeans 5.0 or later is required and sufficient to use these 
-projects. This is different from other projects in OpenJDK, 
-which requires version 6.0 or later.
+The "langtools" project in this directory allows you to
+edit, run, test and debug the tools in the OpenJDK langtools
+repository.
 
-The following projects are provided:
+The repository contains a number of tools:
+    apt, javac, javadoc and its doclets, javah and javap.
 
-compiler: for working on the compiler, javac
-javadoc:  for working on the documentation tool, javadoc
-doclets:  for working on the standard doclets used by the 
- 	  documentation tool, javadoc
-javah:    for working on the C header tool, javah
-javap:    for working on the disassembler, javap
-apt:      for working on the annotation processing tool, apt.
-          Note that this is just provided for completeness;
-          the tool has been superceded by new features in javac,
-          and work on apt itself is discouraged.
+Build Properties.
 
-However, any tool can be worked on from any project; the only difference
-between these projects is the behavior of the standard NetBeans actions,
-so that "Build" in the compiler project will build the compiler, etc.
+To build this repository, you must set some properties for Ant.
+You can set these properties in a number of ways:
 
+- Set the properties in the Properties panel under Tool> Options> Ant.
+  Properties set this way will apply globally to all the langtools 
+  repositories you may be working on.
 
+- Create a file build.properties in the root directory of a
+  langtools repository, and set the properties in that file.
+  These properties will be specific to that repository.
 
+To build the repository, at a minimum you must set the "boot.java.home"
+property.  To run the tools, you must also set "target.java.home". To
+run the regression tests, you must set "jtreg.home".
+
+By default, the build and test targets will build and test all
+of these tools. The run and debug targets will prompt you for the
+name of a tool to execute.
+
+As an alternative, you can focus on a single tool.  When you do
+this, you will still see all the source code for all the tools,
+but the various Ant targets will now be focussed on the selected tool.
+To focus on a tool, bring up the context menu on the "langtools"
+project (i.e. right-click on the project) and select "Select Tool".
+This brings up a dialog which allows you to specify which tool you
+wish to work on, and the arguments to use if and when you run it.
diff --git a/make/netbeans/apt/README b/make/netbeans/apt/README
deleted file mode 100644
index 6fa70ee..0000000
--- a/make/netbeans/apt/README
+++ /dev/null
@@ -1,15 +0,0 @@
-"apt" project README.
-
-This project is for working on the annotation processing tool (apt)
-in the OpenJDK langtools component.
-
-The tool was provided in Java 1.5, but has been superceded by new
-features in the compiler (javac) in Java 6. apt itself is now 
-deprecated, and any further devlopment on it is strongly discouraged.
-
-The main class for the tool is com.sun.tools.apt.Main.
-
-NetBeans 5.0 or later is required and sufficient to use this
-project, and others in the OpenJDK langtools component. 
-This is different from other projects in OpenJDK, which 
-require version 6.0 or later.
diff --git a/make/netbeans/apt/build.xml b/make/netbeans/apt/build.xml
deleted file mode 100644
index 6b4a72e..0000000
--- a/make/netbeans/apt/build.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
-   - Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-   - 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.
-
-   - Neither the name of Sun Microsystems 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 COPYRIGHT HOLDERS AND 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 THE COPYRIGHT OWNER OR
- 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.
--->
-
-<!--
- Build file for the annotation processing tool, apt.
- - The basic functionality of the build is imported from make/build.xml.
- - Additional support for NetBeans actions is imported from 
-   make/netbeans/common/shared.xml.
- - This file gives the final customizations.
- This tool is now deprecated, and any further development is strongly
- discouraged.
--->
-
-<project name="apt" default="build" basedir="../../..">
-    <property name="tool.name" value="apt"/>
-    
-    <import file="../common/shared.xml"/>
-    
-    <!-- 
-      Alias the following imported targets, giving descriptions as appropriate.
-      NetBeans will emphasize targets with descriptions in the Ant Targets list,
-      and will display the targets in the context menu (under Run Target) for 
-      this file in the Projects viewer. 
-    -->
-    
-    <target name="build" depends="build-apt" description="Build the annotation processing tool, apt."/>
-    
-    <target name="debug" depends="-debug-nb" description="Debug the annotation processing tool, apt."/>
-    
-    <target name="-jtreg" depends="jtreg-apt"/>    
-    <target name="jtreg" depends="-jtreg-nb" description="Run the jtreg tests for the annotation processing tool, apt."/>
-    
-</project>
diff --git a/make/netbeans/apt/nbproject/project.xml b/make/netbeans/apt/nbproject/project.xml
deleted file mode 100644
index 6987228..0000000
--- a/make/netbeans/apt/nbproject/project.xml
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
-   - Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-   - 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.
-
-   - Neither the name of Sun Microsystems 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 COPYRIGHT HOLDERS AND 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 THE COPYRIGHT OWNER OR
- 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.
--->
-
-<!DOCTYPE project [
-    <!ENTITY standard-ide-actions-no-javadoc SYSTEM "../../common/standard-ide-actions-no-javadoc.ent">
-    <!ENTITY standard-context-menu-items-no-javadoc SYSTEM "../../common/standard-context-menu-items-no-javadoc.ent">
-]>
-<project xmlns="http://www.netbeans.org/ns/project/1">
-    <type>org.netbeans.modules.ant.freeform</type>
-    <configuration>
-        <general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
-            <!-- Do not use Project Properties customizer when editing this file manually. -->
-            <name>apt</name>
-            <properties>
-                <property name="root">../../..</property>
-            </properties>
-            <folders>
-                <source-folder>
-                    <label>langtools</label>
-                    <location>${root}</location>
-                </source-folder>
-                <source-folder>
-                    <label>Source files</label>
-                    <type>java</type>
-                    <location>${root}/src/share/classes</location>
-                </source-folder>
-                <source-folder>
-                    <label>Test files</label>
-                    <type>tests</type>
-                    <location>${root}/test</location>
-                </source-folder>
-                <source-folder>
-                    <label>Build files</label>
-                    <type>build</type>
-                    <location>${root}/make</location>
-                </source-folder>
-            </folders>
-            <ide-actions>
-                &standard-ide-actions-no-javadoc;
-            </ide-actions>
-            <export>
-                <type>folder</type>
-                <location>${root}/build/classes</location>
-                <build-target>build</build-target>
-            </export>
-            <view>
-                <items>
-                    <source-folder style="tree">
-                        <label>Source files</label>
-                        <location>${root}/src/share/classes</location>
-                    </source-folder>
-                    <source-folder style="tree">
-                        <label>Test files</label>
-                        <location>${root}/test</location>
-                    </source-folder>
-                    <source-folder style="tree">
-                        <label>Build files</label>
-                        <location>${root}/make</location>
-                    </source-folder>
-                    <source-file>
-                        <label>README</label>
-                        <location>README</location>
-                    </source-file>
-                </items>
-                <context-menu>
-                    &standard-context-menu-items-no-javadoc;
-                </context-menu>
-            </view>
-            <subprojects/>
-        </general-data>
-        <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/2">
-            <compilation-unit>
-                <package-root>${root}/src/share/classes</package-root>
-                <built-to>${root}/build/classes</built-to>
-                <source-level>1.5</source-level>  <!-- FIXME -->
-            </compilation-unit>
-        </java-data>
-    </configuration>
-</project>
diff --git a/make/netbeans/common/shared.xml b/make/netbeans/common/shared.xml
deleted file mode 100644
index 015a08c..0000000
--- a/make/netbeans/common/shared.xml
+++ /dev/null
@@ -1,186 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
-   - Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-   - 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.
-
-   - Neither the name of Sun Microsystems 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 COPYRIGHT HOLDERS AND 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 THE COPYRIGHT OWNER OR
- 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.
--->
-
-<!--
- The file contains targets for NetBeans action that are shared across
- all langtools projects.
--->
-
-<project name="shared" default="build" basedir="../../..">
-    <!-- 
-       Instead of importing the main build file, we could call it when needed.
-       That would reduce the list of Ant targets that get displayed for this
-       file, but it also complicates the interface between the project build 
-       file and the main build file. For example, some imported targets
-       would have to be reclared, properties would have to be restructured,
-       and it would be harder to run results (e.g. in properties) from nested 
-       targets.
-     -->
-    <import file="../../build.xml"/> 
-    
-    <property name="tool.mainclass" value="com.sun.tools.${tool.name}.Main"/>
-    <property name="tool.default.args" value="-version"/>
-    
-    <!-- compile a single file -->
- 
-    <!-- for compile-single, etc, we might want different targets for 
-         javac and not javac, because of bootstrap issues -->
-    <target name="compile-single" depends="build-bootstrap-javac">
-        <fail unless="includes">Must set property 'includes'</fail>
-        <javac fork="true" executable="${build.bootstrap.dir}/bin/javac"
-               srcdir="${src.classes.dir}"
-               destdir="${build.classes.dir}"
-               includes="${includes}"
-               sourcepath=""
-               includeAntRuntime="no"
-               target="${target}"
-               debug="${javac.debug}" 
-               debuglevel="${javac.debuglevel}"/>
-    </target>
-    
-    <!-- run tool -->
-    
-    <target name="run" depends="build,-def-run" description="run ${tool.description}">
-        <run/>
-    </target>
-    
-    <!-- run a selected class -->
-    
-    <target name="run-single" depends="-def-run">
-        <fail unless="run.classname">Must set property 'run.classname'</fail>
-        <run name="${run.classname}" mainclass="${run.classname}" default.args=""/>
-    </target>
-    
-    <!-- run jtreg tests, and display results in NetBeans -->
-    
-    <target name="-jtreg-nb" depends="-jtreg" if="netbeans.home" unless="jtreg.passed">
-        <nbbrowse file="${jtreg.report}/report.html"/>
-        <fail>Some tests failed; see report for details.</fail>
-    </target>
-    
-    <!-- debug tool in NetBeans -->
-    
-    <target name="-debug-nb" depends="build,-def-run,-def-start-debugger" if="netbeans.home">
-        <start-debugger/>
-        <run jpda.jvmargs="${jpda.jvmargs}"/>
-    </target>
-    
-    <!-- debug a selected class -->
-    
-    <target name="debug-single-nb" depends="-def-start-debugger,-def-run">
-        <fail unless="debug.classname">Must set property 'debug.classname'</fail>
-        <start-debugger/>
-        <run name="${debug.classname}" mainclass="${debug.classname}" default.args=""
-             jpda.jvmargs="${jpda.jvmargs}"/>
-    </target>
-    
-    <!-- debug a jtreg test -->
-    
-    <target name="debug-jtreg-nb" depends="-def-start-debugger,-def-jtreg"> 
-        <fail unless="jtreg.tests">Must set property 'jtreg.tests'</fail>
-        <start-debugger/>
-        <jtreg-tool name="${tool.name}" samevm="false" tests="${jtreg.tests}" 
-                    jpda.jvmargs="${jpda.jvmargs}"/>
-    </target>
-    
-    <!-- update a class being debugged -->
-    
-    <target name="debug-fix">
-        <fail unless="class">Must set property 'class'</fail>
-        <antcall target="compile-single">
-            <param name="includes" value="${class}.java"/>
-        </antcall>
-        <nbjpdareload>
-            <fileset dir="${build.classes.dir}">
-                <include name="${class}.class"/>
-            </fileset>
-        </nbjpdareload>
-    </target>
-    
-    
-    <!-- create javadoc documentation -->
-    
-    <target name="-javadoc-nb" depends="-javadoc" if="netbeans.home">
-        <nbbrowse file="${build.javadoc.dir}/${tool.name}/index.html"/>
-    </target>
-    
-    <!-- default target for those projects that don't have public API docs;
-         override as needed for projects with public API docs.-->
-    <target name="-javadoc"/>
-    
-    <!-- macro to run a tool or selected class - used by run* and debug* tasks -->
-    
-    <target name="-def-run">
-        <macrodef name="run">
-            <attribute name="name" default="${tool.name}"/>
-            <attribute name="mainclass" default="${tool.mainclass}"/>
-            <attribute name="default.args" default="${tool.default.args}"/>
-            <attribute name="jpda.jvmargs" default=""/>
-            <sequential>
-                <input addproperty="run.args" message="Run @{name} with options" defaultvalue="@{default.args}"/>
-                <java fork="true" jvm="${target.java}" classname="@{mainclass}">
-                    <bootclasspath>
-                        <pathelement location="${build.classes.dir}"/>
-                        <pathelement location="${target.java.home}/jre/lib/rt.jar"/>
-                    </bootclasspath>
-                    <jvmarg line="@{jpda.jvmargs}"/> 
-                    <arg line="${run.args}"/>
-                </java>
-            </sequential>
-        </macrodef>
-    </target>
-    
-    <!-- macro to start the debugger and set a property containg the args needed by the run task -->
-    
-    <target name="-def-start-debugger" if="netbeans.home">
-        <macrodef name="start-debugger">
-            <attribute name="jpda.jvmargs.property" default="jpda.jvmargs"/>
-            <sequential>
-                <nbjpdastart name="${ant.project.name}" addressproperty="jpda.address" transport="dt_socket">
-                    <bootclasspath>
-                        <pathelement location="${build.classes.dir}"/>
-                        <pathelement location="${target.java.home}/jre/lib/rt.jar"/>
-                    </bootclasspath>
-                    <sourcepath>
-                        <pathelement location="${src.classes.dir}"/>
-                    </sourcepath>
-                </nbjpdastart>
-                <property 
-                    name="@{jpda.jvmargs.property}" 
-                    value="-Xdebug -Xnoagent -Djava.compiler=none -Xrunjdwp:transport=dt_socket,address=${jpda.address}"
-                />
-            </sequential>
-        </macrodef>
-    </target>
-    
-    
-</project>
diff --git a/make/netbeans/common/standard-context-menu-items-no-javadoc.ent b/make/netbeans/common/standard-context-menu-items-no-javadoc.ent
deleted file mode 100644
index c40ee69..0000000
--- a/make/netbeans/common/standard-context-menu-items-no-javadoc.ent
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
-   - Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-   - 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.
-
-   - Neither the name of Sun Microsystems 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 COPYRIGHT HOLDERS AND 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 THE COPYRIGHT OWNER OR
- 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.
--->
-
-<!-- 
- This file defines the actions that will appear on the project's context
- menu, in the Projects viewer.
- It is normally included as an entity into a project's project.xml file.
-
- For information on these actions, see
-   - NetBeans: Setting Up Projects
-     at http://www.netbeans.org/kb/55/using-netbeans/project_setup.html
-   - NetBeans: Advanced Freeform Project Configuration
-     at http://www.netbeans.org/kb/41/freeform-config.html 
--->
-  
-<ide-action name="build"/>
-<ide-action name="rebuild"/>
-<ide-action name="clean"/>
-
-<separator/>
-
-<ide-action name="run"/>
-<ide-action name="debug"/>
-
-<separator/>
-
-<ide-action name="test"/>
diff --git a/make/netbeans/common/standard-ide-actions-no-javadoc.ent b/make/netbeans/common/standard-ide-actions-no-javadoc.ent
deleted file mode 100644
index 912daf7..0000000
--- a/make/netbeans/common/standard-ide-actions-no-javadoc.ent
+++ /dev/null
@@ -1,161 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
-   - Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-   - 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.
-
-   - Neither the name of Sun Microsystems 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 COPYRIGHT HOLDERS AND 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 THE COPYRIGHT OWNER OR
- 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.
--->
-
-<!-- 
- This file defines the standard actions accepted by langtools projects.
- It is normally included as an entity into a project's project.xml file.
-
- For information on these actions, see
-   - NetBeans: Setting Up Projects
-     at http://www.netbeans.org/kb/55/using-netbeans/project_setup.html
-   - NetBeans: Advanced Freeform Project Configuration
-     at http://www.netbeans.org/kb/41/freeform-config.html 
--->
-
-<action name="build">
-    <target>build</target>
-</action>
-
-<action name="clean">
-    <target>clean</target>
-</action>
-
-<action name="rebuild">
-    <target>clean</target>
-    <target>build</target>
-</action>
-
-<action name="compile.single">
-    <target>compile-single</target>
-    <property name="srcdir">${root}/src/share/classes</property>
-    <context>
-        <property>includes</property>
-        <folder>${root}/src/share/classes</folder>
-        <pattern>\.java$</pattern>
-        <format>relative-path</format>
-        <arity>
-            <separated-files>,</separated-files>
-        </arity>
-    </context>
-</action>
-
-<action name="run">
-    <target>run</target>
-</action>
-
-<action name="run.single">
-    <target>run-single</target>
-    <context>
-        <property>run.classname</property>
-        <folder>${root}/src/share/classes</folder>
-        <pattern>\.java$</pattern>
-        <format>java-name</format>
-        <arity>
-            <one-file-only/>
-        </arity>
-    </context>
-</action>
-
-<!-- 
- Note: NetBeans does not appear to support context menu items
- on shell scripts :-(
--->
-
-<action name="run.single">
-    <target>jtreg</target>
-    <context>
-        <property>jtreg.tests</property>
-        <folder>${root}/test</folder>
-        <pattern>\.(java|sh)$</pattern>
-        <format>relative-path</format>
-        <arity>
-            <separated-files>,</separated-files>
-        </arity>
-    </context>
-</action>
-
-<action name="test">
-    <target>jtreg</target>
-</action>
-
-<action name="debug">
-    <target>debug-nb</target>
-</action>
-
-<action name="debug.single">
-    <target>debug-single-nb</target>
-    <context>
-        <property>debug.classname</property>
-        <folder>${root}/src/share/classes</folder>
-        <pattern>\.java$</pattern>
-        <format>java-name</format>
-        <arity>
-            <one-file-only/>
-        </arity>
-    </context>
-</action>
-
-<!-- 
- Note: NetBeans does not appear to support context menu items
- on shell scripts :-(
--->
-
-<action name="debug.single">
-    <target>debug-jtreg-nb</target>
-    <context>
-        <property>jtreg.tests</property>
-        <folder>${root}/test</folder>
-        <pattern>\.(java|sh)$</pattern>
-        <format>relative-path</format>
-        <arity>
-            <one-file-only/>
-        </arity>
-    </context>
-</action>
-
-<action name="debug.fix">
-    <target>debug-fix</target>
-    <property name="srcdir">${root}/src/share/classes</property>
-    <context>
-        <property>class</property>
-        <folder>${root}/src/share/classes</folder>
-        <pattern>\.java$</pattern>
-        <format>relative-path-noext</format>
-        <arity>
-            <one-file-only/>
-        </arity>
-    </context>
-</action>
-
-<action name="javadoc">
-    <target>-javadoc-nb</target>
-</action>
diff --git a/make/netbeans/compiler/README b/make/netbeans/compiler/README
deleted file mode 100644
index 9dc7ff1..0000000
--- a/make/netbeans/compiler/README
+++ /dev/null
@@ -1,11 +0,0 @@
-"compiler" project README.
-
-This project is for working on the compiler tool (javac)
-in the OpenJDK langtools component.
-
-The main class for the tool is com.sun.tools.javac.Main.
-
-NetBeans 5.0 or later is required and sufficient to use this
-project, and others in the OpenJDK langtools component. 
-This is different from other projects in OpenJDK, which 
-require version 6.0 or later.
diff --git a/make/netbeans/compiler/build.xml b/make/netbeans/compiler/build.xml
deleted file mode 100644
index 1c1df80..0000000
--- a/make/netbeans/compiler/build.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
-   - Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-   - 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.
-
-   - Neither the name of Sun Microsystems 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 COPYRIGHT HOLDERS AND 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 THE COPYRIGHT OWNER OR
- 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.
--->
-
-<!--
- Build file for the compiler.
- - The basic functionality of the build is imported from make/build.xml.
- - Additional support for NetBeans actions is imported from 
-   make/netbeans/common/shared.xml.
- - This file gives the final customizations.
--->
-
-<project name="compiler" default="build" basedir="../../..">
-    <property name="tool.name" value="javac"/>
-    
-    <import file="../common/shared.xml"/>
-    
-    <!-- 
-      Alias the following imported targets, giving descriptions as appropriate.
-      NetBeans will emphasize targets with descriptions in the Ant Targets list,
-      and will display the targets in the context menu (under Run Target) for 
-      this file in the Projects viewer. 
-    -->
-    
-    <target name="build" depends="build-javac" description="Build the compiler."/>
-    
-    <target name="debug" depends="-debug-nb" description="Debug the compiler."/>
-    
-    <target name="-javadoc" depends="javadoc-javac"/>
-    <target name="javadoc" depends="-javadoc-nb" description="Generate javadoc documentation for the compiler."/>
-    
-    <target name="-jtreg" depends="jtreg-javac"/>
-    <target name="jtreg" depends="-jtreg-nb" description="Run the jtreg tests for the compiler."/>
-    
-</project>
diff --git a/make/netbeans/doclets/README b/make/netbeans/doclets/README
deleted file mode 100644
index eb7e61b..0000000
--- a/make/netbeans/doclets/README
+++ /dev/null
@@ -1,16 +0,0 @@
-"doclets" project README.
-
-This project is for working on the standard doclets used by 
-the documentation tool (javadoc) in the OpenJDK langtools component.
-
-The doclets are invoked as part of the documentation tool (javadoc). 
-Using this project, you can also browse javadoc and any tools in langtools.
-If you build the doclets, javadoc will be built automatically as well,
-if necessary.
-
-The doclets are found in com.sun.tools.doclets.
-
-NetBeans 5.0 or later is required and sufficient to use this
-project, and others in the OpenJDK langtools component. 
-This is different from other projects in OpenJDK, which 
-require version 6.0 or later.
diff --git a/make/netbeans/doclets/build.xml b/make/netbeans/doclets/build.xml
deleted file mode 100644
index a390161..0000000
--- a/make/netbeans/doclets/build.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
-   - Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-   - 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.
-
-   - Neither the name of Sun Microsystems 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 COPYRIGHT HOLDERS AND 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 THE COPYRIGHT OWNER OR
- 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.
--->
-
-<!--
- Build file for the standard doclets used by documentation tool, javadoc.
- - The basic functionality of the build is imported from make/build.xml.
- - Additional support for NetBeans actions is imported from 
-   make/netbeans/common/shared.xml.
- - This file gives the final customizations.
--->
-
-<project name="doclets" default="build" basedir="../../..">
-    <property name="tool.name" value="doclets"/>
-    
-    <import file="../common/shared.xml"/>
-    
-    <!-- 
-      Alias the following imported targets, giving descriptions as appropriate.
-      NetBeans will emphasize targets with descriptions in the Ant Targets list,
-      and will display the targets in the context menu (under Run Target) for 
-      this file in the Projects viewer. 
-    -->
-    
-    <target name="build" depends="build-doclets" description="Build the standard doclets for the documentation tool, javadoc."/>
-    
-    <target name="debug" depends="-debug-nb" description="Debug the standard doclets for the documentation tool, javadoc."/>
-    
-    <target name="-jtreg" depends="jtreg-doclets"/>    
-    <target name="jtreg" depends="-jtreg-nb" description="Run the jtreg tests for the standard doclets used by the documentation tool, javadoc."/>
-    
-</project>
diff --git a/make/netbeans/doclets/nbproject/project.xml b/make/netbeans/doclets/nbproject/project.xml
deleted file mode 100644
index f0fa2f4..0000000
--- a/make/netbeans/doclets/nbproject/project.xml
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
-   - Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-   - 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.
-
-   - Neither the name of Sun Microsystems 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 COPYRIGHT HOLDERS AND 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 THE COPYRIGHT OWNER OR
- 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.
--->
-
-<!DOCTYPE project [
-    <!ENTITY standard-ide-actions-no-javadoc SYSTEM "../../common/standard-ide-actions-no-javadoc.ent">
-    <!ENTITY standard-context-menu-items-no-javadoc SYSTEM "../../common/standard-context-menu-items-no-javadoc.ent">
-]>
-<project xmlns="http://www.netbeans.org/ns/project/1">
-    <type>org.netbeans.modules.ant.freeform</type>
-    <configuration>
-        <general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
-            <!-- Do not use Project Properties customizer when editing this file manually. -->
-            <name>doclets</name>
-            <properties>
-                <property name="root">../../..</property>
-            </properties>
-            <folders>
-                <source-folder>
-                    <label>langtools</label>
-                    <location>${root}</location>
-                </source-folder>
-                <source-folder>
-                    <label>Source files</label>
-                    <type>java</type>
-                    <location>${root}/src/share/classes</location>
-                </source-folder>
-                <source-folder>
-                    <label>Test files</label>
-                    <type>tests</type>
-                    <location>${root}/test</location>
-                </source-folder>
-                <source-folder>
-                    <label>Build files</label>
-                    <type>build</type>
-                    <location>${root}/make</location>
-                </source-folder>
-            </folders>
-            <ide-actions>
-                &standard-ide-actions-no-javadoc;
-            </ide-actions>
-            <export>
-                <type>folder</type>
-                <location>${root}/build/classes</location>
-                <build-target>build</build-target>
-            </export>
-            <view>
-                <items>
-                    <source-folder style="tree">
-                        <label>Source files</label>
-                        <location>${root}/src/share/classes</location>
-                    </source-folder>
-                    <source-folder style="tree">
-                        <label>Test files</label>
-                        <location>${root}/test</location>
-                    </source-folder>
-                    <source-folder style="tree">
-                        <label>Build files</label>
-                        <location>${root}/make</location>
-                    </source-folder>
-                    <source-file>
-                        <label>README</label>
-                        <location>README</location>
-                    </source-file>
-                </items>
-                <context-menu>
-                    &standard-context-menu-items-no-javadoc;
-                </context-menu>
-            </view>
-            <subprojects/>
-        </general-data>
-        <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/2">
-            <compilation-unit>
-                <package-root>${root}/src/share/classes</package-root>
-                <built-to>${root}/build/classes</built-to>
-                <source-level>1.5</source-level>  <!-- FIXME -->
-            </compilation-unit>
-        </java-data>
-    </configuration>
-</project>
diff --git a/make/netbeans/javadoc/README b/make/netbeans/javadoc/README
deleted file mode 100644
index e0027cc..0000000
--- a/make/netbeans/javadoc/README
+++ /dev/null
@@ -1,16 +0,0 @@
-"javadoc" project README.
-
-This project is for working on the documentation tool (javadoc) 
-in the OpenJDK langtools component.
-
-javadoc is built on top of the compiler (javac). Using this
-project, you can also browse javac and any tools in langtools.
-If you build javadoc, javac will be built automatically as well,
-if necessary.
-
-The main class for the tool is com.sun.tools.javadoc.Main.
-
-NetBeans 5.0 or later is required and sufficient to use this
-project, and others in the OpenJDK langtools component. 
-This is different from other projects in OpenJDK, which 
-require version 6.0 or later.
diff --git a/make/netbeans/javadoc/build.xml b/make/netbeans/javadoc/build.xml
deleted file mode 100644
index ba565a6..0000000
--- a/make/netbeans/javadoc/build.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
-   - Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-   - 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.
-
-   - Neither the name of Sun Microsystems 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 COPYRIGHT HOLDERS AND 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 THE COPYRIGHT OWNER OR
- 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.
--->
-
-<!--
- Build file for the documentation tool, javadoc.
- - The basic functionality of the build is imported from make/build.xml.
- - Additional support for NetBeans actions is imported from 
-   make/netbeans/common/shared.xml.
- - This file gives the final customizations.
--->
-
-<project name="javadoc" default="build" basedir="../../..">
-    <property name="tool.name" value="javadoc"/>
-    
-    <import file="../common/shared.xml"/>
-    
-    <!-- 
-      Alias the following imported targets, giving descriptions as appropriate.
-      NetBeans will emphasize targets with descriptions in the Ant Targets list,
-      and will display the targets in the context menu (under Run Target) for 
-      this file in the Projects viewer. 
-    -->
-    
-    <target name="build" depends="build-javadoc" description="Build the documentation tool, javadoc."/>
-    
-    <target name="debug" depends="-debug-nb" description="Debug the documentation tool, javadoc."/>
-    
-    <target name="-javadoc" depends="javadoc-javadoc"/>
-    <target name="javadoc" depends="-javadoc-nb" description="Generate javadoc documentation for the Doclet API."/>
-    
-    <target name="-jtreg" depends="jtreg-javadoc"/>    
-    <target name="jtreg" depends="-jtreg-nb" description="Run the jtreg tests for the documentation tool, javadoc."/>
-    
-</project>
diff --git a/make/netbeans/javadoc/nbproject/project.xml b/make/netbeans/javadoc/nbproject/project.xml
deleted file mode 100644
index 61ebeb3..0000000
--- a/make/netbeans/javadoc/nbproject/project.xml
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
-   - Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-   - 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.
-
-   - Neither the name of Sun Microsystems 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 COPYRIGHT HOLDERS AND 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 THE COPYRIGHT OWNER OR
- 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.
--->
-
-<!DOCTYPE project [
-    <!ENTITY standard-ide-actions SYSTEM "../../common/standard-ide-actions.ent">
-    <!ENTITY standard-context-menu-items SYSTEM "../../common/standard-context-menu-items.ent">
-]>
-<project xmlns="http://www.netbeans.org/ns/project/1">
-    <type>org.netbeans.modules.ant.freeform</type>
-    <configuration>
-        <general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
-            <!-- Do not use Project Properties customizer when editing this file manually. -->
-            <name>javadoc</name>
-            <properties>
-                <property name="root">../../..</property>
-            </properties>
-            <folders>
-                <source-folder>
-                    <label>langtools</label>
-                    <location>${root}</location>
-                </source-folder>
-                <source-folder>
-                    <label>Source files</label>
-                    <type>java</type>
-                    <location>${root}/src/share/classes</location>
-                </source-folder>
-                <source-folder>
-                    <label>Test files</label>
-                    <type>tests</type>
-                    <location>${root}/test</location>
-                </source-folder>
-                <source-folder>
-                    <label>Build files</label>
-                    <type>build</type>
-                    <location>${root}/make</location>
-                </source-folder>
-            </folders>
-            <ide-actions>
-                &standard-ide-actions;
-            </ide-actions>
-            <export>
-                <type>folder</type>
-                <location>${root}/build/classes</location>
-                <build-target>build</build-target>
-            </export>
-            <view>
-                <items>
-                    <source-folder style="tree">
-                        <label>Source files</label>
-                        <location>${root}/src/share/classes</location>
-                    </source-folder>
-                    <source-folder style="tree">
-                        <label>Test files</label>
-                        <location>${root}/test</location>
-                    </source-folder>
-                    <source-folder style="tree">
-                        <label>Build files</label>
-                        <location>${root}/make</location>
-                    </source-folder>
-                    <source-file>
-                        <label>README</label>
-                        <location>README</location>
-                    </source-file>
-                </items>
-                <context-menu>
-                    &standard-context-menu-items;
-                </context-menu>
-            </view>
-            <subprojects/>
-        </general-data>
-        <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/2">
-            <compilation-unit>
-                <package-root>${root}/src/share/classes</package-root>
-                <built-to>${root}/build/classes</built-to>
-                <source-level>1.5</source-level>  <!-- FIXME -->
-            </compilation-unit>
-        </java-data>
-    </configuration>
-</project>
diff --git a/make/netbeans/javah/README b/make/netbeans/javah/README
deleted file mode 100644
index 6e94fb1..0000000
--- a/make/netbeans/javah/README
+++ /dev/null
@@ -1,21 +0,0 @@
-"javah" project README.
-
-This project is for working on the native header tool (javah) 
-in the OpenJDK langtools component.
-
-javah is built on top of the documentation tool (javadoc). Using this
-project, you can also browse javadoc and any other tools in langtools.
-If you build javah, javadoc will be built automatically as well,
-if necessary.
-
-javah is in the process of being converted so that it runs directly on
-top of the compiler, javac, using the annotation processing API, 
-instead of on top of the documentation tool, javadoc, using the
-Doclet API.
-
-The main class for the tool is com.sun.tools.javah.Main.
-
-NetBeans 5.0 or later is required and sufficient to use this
-project, and others in the OpenJDK langtools component. 
-This is different from other projects in OpenJDK, which 
-require version 6.0 or later.
diff --git a/make/netbeans/javah/build.xml b/make/netbeans/javah/build.xml
deleted file mode 100644
index 578cd14..0000000
--- a/make/netbeans/javah/build.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
-   - Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-   - 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.
-
-   - Neither the name of Sun Microsystems 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 COPYRIGHT HOLDERS AND 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 THE COPYRIGHT OWNER OR
- 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.
--->
-
-<!--
- Build file for the native header tool, javah.
- - The basic functionality of the build is imported from make/build.xml.
- - Additional support for NetBeans actions is imported from 
-   make/netbeans/common/shared.xml.
- - This file gives the final customizations.
--->
-
-<project name="javah" default="build" basedir="../../..">
-    <property name="tool.name" value="javah"/>
-    
-    <import file="../common/shared.xml"/>
-    
-    <!-- 
-      Alias the following imported targets, giving descriptions as appropriate.
-      NetBeans will emphasize targets with descriptions in the Ant Targets list,
-      and will display the targets in the context menu (under Run Target) for 
-      this file in the Projects viewer. 
-    -->
-    
-    <target name="build" depends="build-javah" description="Build the native header tool, javah."/>
-    
-    <target name="debug" depends="-debug-nb" description="Debug the native header tool, javah."/>
-    
-    <target name="-jtreg" depends="jtreg-javah"/>
-    <target name="jtreg" depends="-jtreg-nb" description="Run the jtreg tests for the native header tool, javah."/>
-    
-</project>
diff --git a/make/netbeans/javah/nbproject/project.xml b/make/netbeans/javah/nbproject/project.xml
deleted file mode 100644
index d4db76f..0000000
--- a/make/netbeans/javah/nbproject/project.xml
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
-   - Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-   - 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.
-
-   - Neither the name of Sun Microsystems 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 COPYRIGHT HOLDERS AND 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 THE COPYRIGHT OWNER OR
- 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.
--->
-
-<!DOCTYPE project [
-    <!ENTITY standard-ide-actions-no-javadoc SYSTEM "../../common/standard-ide-actions-no-javadoc.ent">
-    <!ENTITY standard-context-menu-items-no-javadoc SYSTEM "../../common/standard-context-menu-items-no-javadoc.ent">
-]>
-<project xmlns="http://www.netbeans.org/ns/project/1">
-    <type>org.netbeans.modules.ant.freeform</type>
-    <configuration>
-        <general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
-            <!-- Do not use Project Properties customizer when editing this file manually. -->
-            <name>javah</name>
-            <properties>
-                <property name="root">../../..</property>
-            </properties>
-            <folders>
-                <source-folder>
-                    <label>langtools</label>
-                    <location>${root}</location>
-                </source-folder>
-                <source-folder>
-                    <label>Source files</label>
-                    <type>java</type>
-                    <location>${root}/src/share/classes</location>
-                </source-folder>
-                <source-folder>
-                    <label>Test files</label>
-                    <type>tests</type>
-                    <location>${root}/test</location>
-                </source-folder>
-                <source-folder>
-                    <label>Build files</label>
-                    <type>build</type>
-                    <location>${root}/make</location>
-                </source-folder>
-            </folders>
-            <ide-actions>
-                &standard-ide-actions-no-javadoc;
-            </ide-actions>
-            <export>
-                <type>folder</type>
-                <location>${root}/build/classes</location>
-                <build-target>build</build-target>
-            </export>
-            <view>
-                <items>
-                    <source-folder style="tree">
-                        <label>Source files</label>
-                        <location>${root}/src/share/classes</location>
-                    </source-folder>
-                    <source-folder style="tree">
-                        <label>Test files</label>
-                        <location>${root}/test</location>
-                    </source-folder>
-                    <source-folder style="tree">
-                        <label>Build files</label>
-                        <location>${root}/make</location>
-                    </source-folder>
-                    <source-file>
-                        <label>README</label>
-                        <location>README</location>
-                    </source-file>
-                </items>
-                <context-menu>
-                    &standard-context-menu-items-no-javadoc;
-                </context-menu>
-            </view>
-            <subprojects/>
-        </general-data>
-        <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/2">
-            <compilation-unit>
-                <package-root>${root}/src/share/classes</package-root>
-                <built-to>${root}/build/classes</built-to>
-                <source-level>1.5</source-level>  <!-- FIXME -->
-            </compilation-unit>
-        </java-data>
-    </configuration>
-</project>
diff --git a/make/netbeans/javap/README b/make/netbeans/javap/README
deleted file mode 100644
index fb08ece..0000000
--- a/make/netbeans/javap/README
+++ /dev/null
@@ -1,11 +0,0 @@
-"javap" project README.
-
-This project is for working on the disassembler tool (javap) 
-in the OpenJDK langtools component.
-
-The main class for the tool is sun.tools.javap.Main.
-
-NetBeans 5.0 or later is required and sufficient to use this
-project, and others in the OpenJDK langtools component. 
-This is different from other projects in OpenJDK, which 
-require version 6.0 or later.
diff --git a/make/netbeans/javap/build.xml b/make/netbeans/javap/build.xml
deleted file mode 100644
index 818a933..0000000
--- a/make/netbeans/javap/build.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
-   - Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-   - 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.
-
-   - Neither the name of Sun Microsystems 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 COPYRIGHT HOLDERS AND 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 THE COPYRIGHT OWNER OR
- 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.
--->
-
-<!--
- Build file for the disassembler tool, javap.
- - The basic functionality of the build is imported from make/build.xml.
- - Additional support for NetBeans actions is imported from 
-   make/netbeans/common/shared.xml.
- - This file gives the final customizations.
--->
-
-<project name="javap" default="build" basedir="../../..">
-    <property name="tool.name" value="javap"/>
-    
-    <import file="../common/shared.xml"/>
-    
-    <!-- 
-      Alias the following imported targets, giving descriptions as appropriate.
-      NetBeans will emphasize targets with descriptions in the Ant Targets list,
-      and will display the targets in the context menu (under Run Target) for 
-      this file in the Projects viewer. 
-    -->
-    
-    <target name="build" depends="build-javap" description="Build the disassembler tool, javap."/>
-    
-    <target name="debug" depends="-debug-nb" description="Debug the disassembler tool, javap."/>
-    
-    <target name="-jtreg" depends="jtreg-javap"/>
-    <target name="jtreg" depends="-jtreg-nb" description="Run the jtreg tests for the disassembler tool, javap."/>
-    
-</project>
diff --git a/make/netbeans/javap/nbproject/project.xml b/make/netbeans/javap/nbproject/project.xml
deleted file mode 100644
index 692e672..0000000
--- a/make/netbeans/javap/nbproject/project.xml
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
-   - Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-
-   - 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.
-
-   - Neither the name of Sun Microsystems 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 COPYRIGHT HOLDERS AND 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 THE COPYRIGHT OWNER OR
- 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.
--->
-
-<!DOCTYPE project [
-    <!ENTITY standard-ide-actions-no-javadoc SYSTEM "../../common/standard-ide-actions-no-javadoc.ent">
-    <!ENTITY standard-context-menu-items-no-javadoc SYSTEM "../../common/standard-context-menu-items-no-javadoc.ent">
-]>
-<project xmlns="http://www.netbeans.org/ns/project/1">
-    <type>org.netbeans.modules.ant.freeform</type>
-    <configuration>
-        <general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
-            <!-- Do not use Project Properties customizer when editing this file manually. -->
-            <name>javap</name>
-            <properties>
-                <property name="root">../../..</property>
-            </properties>
-            <folders>
-                <source-folder>
-                    <label>langtools</label>
-                    <location>${root}</location>
-                </source-folder>
-                <source-folder>
-                    <label>Source files</label>
-                    <type>java</type>
-                    <location>${root}/src/share/classes</location>
-                </source-folder>
-                <source-folder>
-                    <label>Test files</label>
-                    <type>tests</type>
-                    <location>${root}/test</location>
-                </source-folder>
-                <source-folder>
-                    <label>Build files</label>
-                    <type>build</type>
-                    <location>${root}/make</location>
-                </source-folder>
-            </folders>
-            <ide-actions>
-                &standard-ide-actions-no-javadoc;
-            </ide-actions>
-            <export>
-                <type>folder</type>
-                <location>${root}/build/classes</location>
-                <build-target>build</build-target>
-            </export>
-            <view>
-                <items>
-                    <source-folder style="tree">
-                        <label>Source files</label>
-                        <location>${root}/src/share/classes</location>
-                    </source-folder>
-                    <source-folder style="tree">
-                        <label>Test files</label>
-                        <location>${root}/test</location>
-                    </source-folder>
-                    <source-folder style="tree">
-                        <label>Build files</label>
-                        <location>${root}/make</location>
-                    </source-folder>
-                    <source-file>
-                        <label>README</label>
-                        <location>README</location>
-                    </source-file>
-                </items>
-                <context-menu>
-                    &standard-context-menu-items-no-javadoc;
-                </context-menu>
-            </view>
-            <subprojects/>
-        </general-data>
-        <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/2">
-            <compilation-unit>
-                <package-root>${root}/src/share/classes</package-root>
-                <built-to>${root}/build/classes</built-to>
-                <source-level>1.5</source-level>  <!-- FIXME -->
-            </compilation-unit>
-        </java-data>
-    </configuration>
-</project>
diff --git a/make/netbeans/langtools/build.xml b/make/netbeans/langtools/build.xml
new file mode 100644
index 0000000..8f2b95f
--- /dev/null
+++ b/make/netbeans/langtools/build.xml
@@ -0,0 +1,279 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+   - Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+   - 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.
+
+   - Neither the name of Sun Microsystems 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 COPYRIGHT HOLDERS AND 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 THE COPYRIGHT OWNER OR
+ 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.
+-->
+
+<project name="langtools-netbeans" default="build" basedir="../../..">
+    
+    <property name="langtools.properties" 
+        location="make/netbeans/langtools/nbproject/private/langtools.properties"/>
+    
+    <!-- 
+        Instead of importing the main build file, we could call it when needed.
+        That would reduce the list of Ant targets that get displayed for this
+        file, but it also complicates the interface between the project build 
+        file and the main build file. For example, some imported targets
+        would have to be reclared, properties would have to be restructured,
+        and it would be harder to run results (e.g. in properties) from nested 
+        targets.
+     -->
+    <import file="../../build.xml"/> 
+    
+    <!-- Build project. (action: build; F11)
+        If langtools.tool.name is set, then just build that tool; otherwise
+        build all tools.
+    -->
+    
+    <target name="build" depends="-get-tool-if-set,-build-tool,-build-all" 
+        description="Build one or all langtools tools"
+        />
+        
+    <target name="-build-tool" if="langtools.tool.name">
+        <echo level="info" message="Building ${langtools.tool.name}"/>
+        <echo level="verbose" message="(Unset langtools.tool.name to build all tools)"/>
+        <antcall target="build-${langtools.tool.name}"/>
+    </target>
+    
+    <target name="-build-all" unless="langtools.tool.name">
+        <echo level="info" message="Building all tools"/>
+        <echo level="verbose" message="(Set langtools.tool.name to build a single tool)"/>
+        <antcall target="build-all-tools"/>
+    </target>
+    
+    <!-- Compile a single file. (action: compile.single; F9) -->
+    
+    <target name="compile-single" depends="build-bootstrap-javac">
+        <fail unless="includes">Must set property 'includes'</fail>
+        <javac fork="true" executable="${build.bootstrap.dir}/bin/javac"
+               srcdir="${src.classes.dir}"
+               destdir="${build.classes.dir}"
+               includes="${includes}"
+               sourcepath=""
+               includeAntRuntime="no"
+               target="${javac.target}"
+               debug="${javac.debug}" 
+               debuglevel="${javac.debuglevel}"/>
+    </target>
+    
+    <!-- Run tool. (action: run; F6) 
+        Use langtools.tool.name and langtools.tool.args properties if set; otherwise prompt
+        the user.
+    -->
+    
+    <target name="run" depends="-check-target.java.home,build,-def-run,-get-tool-and-args" 
+            description="run tool">
+        <echo level="info" message="Run ${langtools.tool.name} with args ${langtools.tool.args}"/>
+        <run mainclass="com.sun.tools.${langtools.tool.name}.Main" args="${langtools.tool.args}"/>
+    </target>
+    
+    <!-- Run a selected class. (action: run.single;  shift-F6) -->
+    
+    <target name="run-single" depends="-check-target.java.home,-def-run">
+        <fail unless="run.classname">Must set property 'run.classname' </fail>
+        <echo level="info" message="run ${run.classname}"/>
+        <run mainclass="${run.classname}" args=""/>
+    </target>
+    
+    <!-- Test project, and display results if tests failed. (action: test; Alt-F6)
+        If langtools.tool.name is set, then just test that tool; otherwise
+        test all tools.
+    -->
+    
+    <target name="jtreg" depends="-get-tool-if-set,-jtreg-tool,-jtreg-all" 
+        description="Test one or all langtools tools"
+        />
+    
+    <target name="-jtreg-tool" if="langtools.tool.name">
+        <echo level="info" message="Testing ${langtools.tool.name}"/>
+        <echo level="verbose" message="(Unset langtools.tool.name to test all tools)"/>
+        <antcall>
+            <target name="jtreg-${langtools.tool.name}"/>
+            <target name="-show-jtreg"/>
+        </antcall>
+    </target>
+    
+    <target name="-jtreg-all" unless="langtools.tool.name">
+        <echo level="info" message="Testing all tools"/>
+        <echo level="verbose" message="(Set langtools.tool.name to test a single tool)"/>
+        <antcall>
+            <target name="langtools.jtreg"/>
+            <target name="-show-jtreg"/>
+        </antcall>
+    </target>
+    
+    <target name="-show-jtreg" if="netbeans.home" unless="jtreg.passed">
+        <nbbrowse file="${jtreg.report}/report.html"/>
+        <fail>Some tests failed; see report for details.</fail>
+    </target>
+    
+    <!-- Debug tool in NetBeans. -->
+    
+    <target name="debug" depends="-check-target.java.home,-def-run,-def-start-debugger,-get-tool-and-args,build" if="netbeans.home">
+        <echo level="info" message="Debug ${langtools.tool.name} with args ${langtools.tool.args}"/>
+        <start-debugger/>
+        <run mainclass="com.sun.tools.${langtools.tool.name}.Main" args="${langtools.tool.args}" jpda.jvmargs="${jpda.jvmargs}"/>
+    </target>
+    
+    <!-- Debug a selected class . -->
+    <target name="debug-single" depends="-check-target.java.home,-def-start-debugger,-def-run">
+        <fail unless="debug.classname">Must set property 'debug.classname'</fail>
+        <start-debugger/>
+        <run mainclass="${debug.classname}" default.args="" jpda.jvmargs="${jpda.jvmargs}"/>
+    </target>
+    
+    <!-- Debug a jtreg test. -->
+    <target name="debug-jtreg" depends="-check-target.java.home,-def-start-debugger,-def-jtreg">
+        <fail unless="jtreg.tests">Must set property 'jtreg.tests'</fail>
+        <start-debugger/>
+        <jtreg-tool name="debug" samevm="false" tests="${jtreg.tests}" jpda.jvmargs="${jpda.jvmargs}"/>
+    </target>
+    
+    <!-- Update a class being debugged. -->
+    
+    <target name="debug-fix" if="langtools.tool.name">
+        <fail unless="class">Must set property 'class'
+        </fail>
+        <antcall target="compile-single">
+            <param name="includes" value="${class}.java"/>
+        </antcall>
+        <nbjpdareload>
+            <fileset dir="${build.classes.dir}">
+                <include name="${class}.class"/>
+            </fileset>
+        </nbjpdareload>
+    </target>
+    
+    <!-- Generate javadoc for one or all tools. (action: javadoc; Alt-F6)
+        If langtools.tool.name is set, then just test that tool; otherwise
+        test all tools.
+    -->
+    
+    <target name="javadoc" depends="-javadoc-tool,-javadoc-all" 
+        description="Generate javadoc for one or all langtools tools"
+        />
+        
+    <target name="-javadoc-tool" if="langtools.tool.name">
+        <echo level="info" message="Generate javadoc for ${langtools.tool.name}"/>
+        <echo level="verbose" message="(Unset langtools.tool.name to generate javadoc for all tools)"/>
+        <antcall>
+            <target name="javadoc-${langtools.tool.name}"/>
+            <target name="-show-javadoc"/>
+        </antcall>
+    </target>
+    
+    <target name="-javadoc-all" unless="langtools.tool.name">
+        <echo level="info" message="Generate javadoc for all tools"/>
+        <echo level="verbose" message="(Set langtools.tool.name to generate javadoc for a single tool)"/>
+        <antcall>
+            <target name="langtools.javadoc"/>
+            <target name="-show-javadoc"/>
+        </antcall>
+    </target>
+    
+    <target name="-show-javadoc" if="netbeans.home">
+        <!-- what if doing javadoc for all? -->
+        <nbbrowse file="${build.javadoc.dir}/${langtools.tool.name}/index.html"/>
+    </target>
+    
+    <!-- Prompt for values. -->
+    
+    <target name="-get-tool-if-set" depends="-def-select-tool">
+        <select-tool 
+            toolproperty="langtools.tool.name" 
+            propertyfile="${langtools.properties}"
+            askIfUnset="false"
+            />
+    </target>
+    
+    <target name="-get-tool-and-args" depends="-def-select-tool">
+        <select-tool 
+            toolproperty="langtools.tool.name" 
+            argsproperty="langtools.tool.args" 
+            propertyfile="${langtools.properties}"
+            askIfUnset="true"
+            />
+    </target>
+
+    <!-- Macro to run a tool or selected class - used by run* and debug* tasks -->
+    <target name="-def-run">
+        <macrodef name="run">
+            <attribute name="mainclass"/>
+            <attribute name="args" default=""/>
+            <attribute name="jpda.jvmargs" default=""/>
+            <sequential>
+                <java fork="true" jvm="${target.java}" classname="@{mainclass}">
+                    <jvmarg line="-Xbootclasspath/p:${build.classes.dir}"/>
+                    <jvmarg line="@{jpda.jvmargs}"/>
+                    <arg line="@{args}"/>
+                </java>
+            </sequential>
+        </macrodef>
+    </target>
+    
+    <!-- Macro to start the debugger and set a property containg the args needed by the run task -->
+    <target name="-def-start-debugger" if="netbeans.home">
+        <macrodef name="start-debugger">
+            <attribute name="jpda.jvmargs.property" default="jpda.jvmargs"/>
+            <sequential>
+                <nbjpdastart name="${ant.project.name}" addressproperty="jpda.address" transport="dt_socket">
+                    <bootclasspath>
+                        <pathelement location="${build.classes.dir}"/>
+                        <pathelement location="${target.java.home}/jre/lib/rt.jar"/>
+                    </bootclasspath>
+                    <sourcepath>
+                        <pathelement location="${src.classes.dir}"/>
+                    </sourcepath>
+                </nbjpdastart>
+                <property 
+                    name="@{jpda.jvmargs.property}" 
+                    value="-Xdebug -Xnoagent -Djava.compiler=none -Xrunjdwp:transport=dt_socket,address=${jpda.address}"
+                />
+            </sequential>
+        </macrodef>
+    </target>
+    
+    <target name="-def-select-tool">
+        <mkdir dir="${build.toolclasses.dir}"/>
+        <javac srcdir="${make.tools.dir}/SelectTool"
+               destdir="${build.toolclasses.dir}/"
+               classpath="${ant.home}/lib/ant.jar"
+               debug="${javac.debug}" 
+               debuglevel="${javac.debuglevel}">
+                   <compilerarg line="-Xlint"/>
+        </javac>
+        <taskdef name="select-tool"
+                 classname="SelectToolTask" 
+                 classpath="${build.toolclasses.dir}/"/>
+    </target>
+        
+    <target name="select-tool" depends="-def-select-tool">
+        <select-tool propertyfile="${langtools.properties}"/>
+    </target>
+</project>
diff --git a/make/netbeans/compiler/nbproject/project.xml b/make/netbeans/langtools/nbproject/project.xml
similarity index 93%
rename from make/netbeans/compiler/nbproject/project.xml
rename to make/netbeans/langtools/nbproject/project.xml
index ac52705..e750960 100644
--- a/make/netbeans/compiler/nbproject/project.xml
+++ b/make/netbeans/langtools/nbproject/project.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
+ Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
 
  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions
@@ -31,15 +31,15 @@
 -->
 
 <!DOCTYPE project [
-    <!ENTITY standard-ide-actions SYSTEM "../../common/standard-ide-actions.ent">
-    <!ENTITY standard-context-menu-items SYSTEM "../../common/standard-context-menu-items.ent">
+    <!ENTITY standard-ide-actions SYSTEM "standard-ide-actions.ent">
+    <!ENTITY standard-context-menu-items SYSTEM "standard-context-menu-items.ent">
 ]>
 <project xmlns="http://www.netbeans.org/ns/project/1">
     <type>org.netbeans.modules.ant.freeform</type>
     <configuration>
         <general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
             <!-- Do not use Project Properties customizer when editing this file manually. -->
-            <name>compiler</name>
+            <name>langtools</name>
             <properties>
                 <property name="root">../../..</property>
             </properties>
diff --git a/make/netbeans/common/standard-context-menu-items.ent b/make/netbeans/langtools/nbproject/standard-context-menu-items.ent
similarity index 94%
rename from make/netbeans/common/standard-context-menu-items.ent
rename to make/netbeans/langtools/nbproject/standard-context-menu-items.ent
index f6e1a96..ab0568a 100644
--- a/make/netbeans/common/standard-context-menu-items.ent
+++ b/make/netbeans/langtools/nbproject/standard-context-menu-items.ent
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
+ Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
 
  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions
@@ -41,6 +41,10 @@
    - NetBeans: Advanced Freeform Project Configuration
      at http://www.netbeans.org/kb/41/freeform-config.html 
 -->
+
+<ide-action name="select-tool"/>
+
+<separator/>
   
 <ide-action name="build"/>
 <ide-action name="rebuild"/>
diff --git a/make/netbeans/common/standard-ide-actions.ent b/make/netbeans/langtools/nbproject/standard-ide-actions.ent
similarity index 92%
rename from make/netbeans/common/standard-ide-actions.ent
rename to make/netbeans/langtools/nbproject/standard-ide-actions.ent
index 912daf7..3081fdf 100644
--- a/make/netbeans/common/standard-ide-actions.ent
+++ b/make/netbeans/langtools/nbproject/standard-ide-actions.ent
@@ -108,11 +108,11 @@
 </action>
 
 <action name="debug">
-    <target>debug-nb</target>
+    <target>debug</target>
 </action>
 
 <action name="debug.single">
-    <target>debug-single-nb</target>
+    <target>debug-single</target>
     <context>
         <property>debug.classname</property>
         <folder>${root}/src/share/classes</folder>
@@ -130,7 +130,7 @@
 -->
 
 <action name="debug.single">
-    <target>debug-jtreg-nb</target>
+    <target>debug-jtreg</target>
     <context>
         <property>jtreg.tests</property>
         <folder>${root}/test</folder>
@@ -157,5 +157,17 @@
 </action>
 
 <action name="javadoc">
-    <target>-javadoc-nb</target>
+    <target>javadoc</target>
+</action>
+
+<action name="select-tool">
+    <target>select-tool</target>
+</action>
+
+<action name="test-select-tool-1">
+    <target>test-select-tool-1</target>
+</action>
+
+<action name="test-select-tool-2">
+    <target>test-select-tool-2</target>
 </action>
diff --git a/make/tools/SelectTool/SelectToolTask.java b/make/tools/SelectTool/SelectToolTask.java
new file mode 100644
index 0000000..0646c30
--- /dev/null
+++ b/make/tools/SelectTool/SelectToolTask.java
@@ -0,0 +1,284 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.Reader;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Properties;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
+import javax.swing.SwingUtilities;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+
+/**
+ * Task to allow the user to control langtools tools built when using NetBeans.
+ *
+ * There are two primary modes.
+ * 1) Property mode. In this mode, property names are provided to get values
+ * that may be specified by the user, either directly in a GUI dialog, or
+ * read from a properties file. If the GUI dialog is invoked, values may
+ * optionally be set for future use.
+ * 2) Setup mode. In this mode, no property names are provided, and the GUI
+ * is invoked to allow the user to set or reset values for use in property mode.
+ */
+public class SelectToolTask extends Task {
+    /**
+     * Set the location of the private properties file used to keep the retain
+     * user preferences for this repository.
+     */
+    public void setPropertyFile(File propertyFile) {
+        this.propertyFile = propertyFile;
+    }
+
+    /**
+     * Set the name of the property which will be set to the name of the
+     * selected tool, if any. If no tool is selected, the property will
+     * remain unset.
+     */
+    public void setToolProperty(String toolProperty) {
+        this.toolProperty = toolProperty;
+    }
+
+    /**
+     * Set the name of the property which will be set to the execution args of the
+     * selected tool, if any. The args default to an empty string.
+     */
+    public void setArgsProperty(String argsProperty) {
+        this.argsProperty = argsProperty;
+    }
+
+    /**
+     * Specify whether or not to pop up a dialog if the user has not specified
+     * a default value for a property.
+     */
+    public void setAskIfUnset(boolean askIfUnset) {
+        this.askIfUnset = askIfUnset;
+    }
+
+    @Override
+    public void execute() {
+        Project p = getProject();
+
+        Properties props = readProperties(propertyFile);
+        toolName = props.getProperty("tool.name");
+        if (toolName != null) {
+            toolArgs = props.getProperty(toolName + ".args", "");
+        }
+
+        if (toolProperty == null ||
+            askIfUnset && (toolName == null
+                || (argsProperty != null && toolArgs == null))) {
+            showGUI(props);
+        }
+
+        // finally, return required values, if any
+        if (toolProperty != null && !(toolName == null || toolName.equals(""))) {
+            p.setProperty(toolProperty, toolName);
+
+            if (argsProperty != null && toolArgs != null)
+                p.setProperty(argsProperty, toolArgs);
+        }
+    }
+
+    void showGUI(Properties fileProps) {
+        Properties guiProps = new Properties(fileProps);
+        JOptionPane p = createPane(guiProps);
+        p.createDialog("Select Tool").setVisible(true);
+
+        toolName = (String) toolChoice.getSelectedItem();
+        toolArgs = argsField.getText();
+
+        if (defaultCheck.isSelected()) {
+            if (toolName.equals("")) {
+                fileProps.remove("tool.name");
+            } else {
+                fileProps.put("tool.name", toolName);
+                fileProps.put(toolName + ".args", toolArgs);
+            }
+            writeProperties(propertyFile, fileProps);
+        }
+    }
+
+    JOptionPane createPane(final Properties props) {
+        JPanel body = new JPanel(new GridBagLayout());
+        GridBagConstraints lc = new GridBagConstraints();
+        lc.insets.right = 10;
+        lc.insets.bottom = 3;
+        GridBagConstraints fc = new GridBagConstraints();
+        fc.anchor = GridBagConstraints.WEST;
+        fc.gridx = 1;
+        fc.gridwidth = GridBagConstraints.REMAINDER;
+        fc.insets.bottom = 3;
+
+        JLabel toolLabel = new JLabel("Tool:");
+        body.add(toolLabel, lc);
+        String[] toolChoices = { "apt", "javac", "javadoc", "javah", "javap" };
+        if (true || toolProperty == null) {
+            // include empty value in setup mode
+            List<String> l = new ArrayList<String>(Arrays.asList(toolChoices));
+            l.add(0, "");
+            toolChoices = l.toArray(new String[l.size()]);
+        }
+        toolChoice = new JComboBox(toolChoices);
+        if (toolName != null)
+            toolChoice.setSelectedItem(toolName);
+        toolChoice.addItemListener(new ItemListener() {
+            public void itemStateChanged(ItemEvent e) {
+                String tn = (String) e.getItem();
+                argsField.setText(getDefaultArgsForTool(props, tn));
+                if (toolProperty != null)
+                    okButton.setEnabled(!tn.equals(""));
+            }
+        });
+        body.add(toolChoice, fc);
+
+        argsField = new JTextField(getDefaultArgsForTool(props, toolName), 40);
+        if (toolProperty == null || argsProperty != null) {
+            JLabel argsLabel = new JLabel("Args:");
+            body.add(argsLabel, lc);
+            body.add(argsField, fc);
+            argsField.addFocusListener(new FocusListener() {
+                public void focusGained(FocusEvent e) {
+                }
+                public void focusLost(FocusEvent e) {
+                    String toolName = (String) toolChoice.getSelectedItem();
+                    if (toolName.length() > 0)
+                        props.put(toolName + ".args", argsField.getText());
+                }
+            });
+        }
+
+        defaultCheck = new JCheckBox("Set as default");
+        if (toolProperty == null)
+            defaultCheck.setSelected(true);
+        else
+            body.add(defaultCheck, fc);
+
+        final JOptionPane p = new JOptionPane(body);
+        okButton = new JButton("OK");
+        okButton.setEnabled(toolProperty == null || (toolName != null && !toolName.equals("")));
+        okButton.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                JDialog d = (JDialog) SwingUtilities.getAncestorOfClass(JDialog.class, p);
+                d.setVisible(false);
+            }
+        });
+        p.setOptions(new Object[] { okButton });
+
+        return p;
+    }
+
+    Properties readProperties(File file) {
+        Properties p = new Properties();
+        if (file != null && file.exists()) {
+            Reader in = null;
+            try {
+                in = new BufferedReader(new FileReader(file));
+                p.load(in);
+                in.close();
+            } catch (IOException e) {
+                throw new BuildException("error reading property file", e);
+            } finally {
+                if (in != null) {
+                    try {
+                        in.close();
+                    } catch (IOException e) {
+                        throw new BuildException("cannot close property file", e);
+                    }
+                }
+            }
+        }
+        return p;
+    }
+
+    void writeProperties(File file, Properties p) {
+        if (file != null) {
+            Writer out = null;
+            try {
+                File dir = file.getParentFile();
+                if (dir != null && !dir.exists())
+                    dir.mkdirs();
+                out = new BufferedWriter(new FileWriter(file));
+                p.store(out, "langtools properties");
+                out.close();
+            } catch (IOException e) {
+                throw new BuildException("error writing property file", e);
+            } finally {
+                if (out != null) {
+                    try {
+                        out.close();
+                    } catch (IOException e) {
+                        throw new BuildException("cannot close property file", e);
+                    }
+                }
+            }
+        }
+    }
+
+    String getDefaultArgsForTool(Properties props, String tn) {
+        return (tn == null || tn.equals("")) ? "" : props.getProperty(tn + ".args", "");
+    }
+
+    // Ant task parameters
+    private boolean askIfUnset;
+    private String toolProperty;
+    private String argsProperty;
+    private File propertyFile;
+
+    // GUI components
+    private JComboBox toolChoice;
+    private JTextField argsField;
+    private JCheckBox defaultCheck;
+    private JButton okButton;
+
+    // Result values for the client
+    private String toolName;
+    private String toolArgs;
+}
diff --git a/src/share/classes/com/sun/tools/apt/comp/AnnotationProcessingError.java b/src/share/classes/com/sun/tools/apt/comp/AnnotationProcessingError.java
index 582b21c..f14dc60 100644
--- a/src/share/classes/com/sun/tools/apt/comp/AnnotationProcessingError.java
+++ b/src/share/classes/com/sun/tools/apt/comp/AnnotationProcessingError.java
@@ -26,6 +26,7 @@
 package com.sun.tools.apt.comp;
 
 public class AnnotationProcessingError extends Error {
+    private static final long serialVersionUID = 3279196183341719287L;
     AnnotationProcessingError(Throwable cause) {
         super(cause);
     }
diff --git a/src/share/classes/com/sun/tools/apt/comp/Apt.java b/src/share/classes/com/sun/tools/apt/comp/Apt.java
index abd09f5..d01887b 100644
--- a/src/share/classes/com/sun/tools/apt/comp/Apt.java
+++ b/src/share/classes/com/sun/tools/apt/comp/Apt.java
@@ -316,8 +316,13 @@
                     }
 
                     providers = list.iterator();
-                } else
-                    providers = sun.misc.Service.providers(AnnotationProcessorFactory.class, aptCL);
+                } else {
+                    @SuppressWarnings("unchecked")
+                    Iterator<AnnotationProcessorFactory> iter =
+                            sun.misc.Service.providers(AnnotationProcessorFactory.class, aptCL);
+                    providers = iter;
+
+                }
             }
 
             java.util.Map<AnnotationProcessorFactory, Set<AnnotationTypeDeclaration>> factoryToAnnotation =
diff --git a/src/share/classes/com/sun/tools/apt/comp/UsageMessageNeededException.java b/src/share/classes/com/sun/tools/apt/comp/UsageMessageNeededException.java
index cbbbf86..64a83dd 100644
--- a/src/share/classes/com/sun/tools/apt/comp/UsageMessageNeededException.java
+++ b/src/share/classes/com/sun/tools/apt/comp/UsageMessageNeededException.java
@@ -26,4 +26,6 @@
 package com.sun.tools.apt.comp;
 
 
-public class UsageMessageNeededException extends RuntimeException {}
+public class UsageMessageNeededException extends RuntimeException {
+    private static final long serialVersionUID = -3265159608992825840L;
+}
diff --git a/src/share/classes/com/sun/tools/apt/main/JavaCompiler.java b/src/share/classes/com/sun/tools/apt/main/JavaCompiler.java
index 4b632d2..433a7de 100644
--- a/src/share/classes/com/sun/tools/apt/main/JavaCompiler.java
+++ b/src/share/classes/com/sun/tools/apt/main/JavaCompiler.java
@@ -233,6 +233,7 @@
 
         ListBuffer<ClassSymbol> classes = new ListBuffer<ClassSymbol>();
         try {
+            JavacFileManager fm = (JavacFileManager)fileManager;
             //parse all files
             ListBuffer<JCCompilationUnit> trees = new ListBuffer<JCCompilationUnit>();
             for (List<String> l = filenames; l.nonEmpty(); l = l.tail) {
@@ -250,7 +251,8 @@
                         continue;
                     }
                 }
-                trees.append(parse(l.head));
+                JavaFileObject fo = fm.getJavaFileObjectsFromStrings(List.of(l.head)).iterator().next();
+                trees.append(parse(fo));
             }
 
             //enter symbols for all files
diff --git a/src/share/classes/com/sun/tools/apt/mirror/apt/RoundCompleteEventImpl.java b/src/share/classes/com/sun/tools/apt/mirror/apt/RoundCompleteEventImpl.java
index ae3a225..403ea6f 100644
--- a/src/share/classes/com/sun/tools/apt/mirror/apt/RoundCompleteEventImpl.java
+++ b/src/share/classes/com/sun/tools/apt/mirror/apt/RoundCompleteEventImpl.java
@@ -30,6 +30,8 @@
 import com.sun.mirror.apt.RoundState;
 
 public class RoundCompleteEventImpl extends RoundCompleteEvent {
+    private static final long serialVersionUID = 7067621446720784300L;
+
     public RoundCompleteEventImpl(AnnotationProcessorEnvironment source,
                                   RoundState rs) {
         super(source, rs);
diff --git a/src/share/classes/com/sun/tools/apt/mirror/declaration/AnnotationProxyMaker.java b/src/share/classes/com/sun/tools/apt/mirror/declaration/AnnotationProxyMaker.java
index 64727fd..9505eb2 100644
--- a/src/share/classes/com/sun/tools/apt/mirror/declaration/AnnotationProxyMaker.java
+++ b/src/share/classes/com/sun/tools/apt/mirror/declaration/AnnotationProxyMaker.java
@@ -252,6 +252,7 @@
          */
         private void typeMismatch(final Method method, final Attribute attr) {
             value = new ExceptionProxy() {
+                private static final long serialVersionUID = 8473323277815075163L;
                 public String toString() {
                     return "<error>";   // eg:  @Anno(value=<error>)
                 }
@@ -270,6 +271,7 @@
      * type.
      */
     private static class MirroredTypeExceptionProxy extends ExceptionProxy {
+        private static final long serialVersionUID = 6662035281599933545L;
 
         private MirroredTypeException ex;
 
@@ -311,6 +313,7 @@
      * types.
      */
     private static class MirroredTypesExceptionProxy extends ExceptionProxy {
+        private static final long serialVersionUID = -6670822532616693951L;
 
         private MirroredTypesException ex;
 
diff --git a/src/share/classes/com/sun/tools/apt/mirror/type/TypeVariableImpl.java b/src/share/classes/com/sun/tools/apt/mirror/type/TypeVariableImpl.java
index f96e01e..3d6a9fc 100644
--- a/src/share/classes/com/sun/tools/apt/mirror/type/TypeVariableImpl.java
+++ b/src/share/classes/com/sun/tools/apt/mirror/type/TypeVariableImpl.java
@@ -64,7 +64,7 @@
      * {@inheritDoc}
      */
     public TypeParameterDeclaration getDeclaration() {
-        TypeSymbol sym = (TypeSymbol) type.tsym;
+        TypeSymbol sym = type.tsym;
         return env.declMaker.getTypeParameterDeclaration(sym);
     }
 
diff --git a/src/share/classes/com/sun/tools/classfile/Annotation.java b/src/share/classes/com/sun/tools/classfile/Annotation.java
index 9138132..37423ca 100644
--- a/src/share/classes/com/sun/tools/classfile/Annotation.java
+++ b/src/share/classes/com/sun/tools/classfile/Annotation.java
@@ -37,6 +37,7 @@
  */
 public class Annotation {
     static class InvalidAnnotation extends AttributeException {
+        private static final long serialVersionUID = -4620480740735772708L;
         InvalidAnnotation(String msg) {
             super(msg);
         }
diff --git a/src/share/classes/com/sun/tools/classfile/AttributeException.java b/src/share/classes/com/sun/tools/classfile/AttributeException.java
index ee3decd..55d23f9 100644
--- a/src/share/classes/com/sun/tools/classfile/AttributeException.java
+++ b/src/share/classes/com/sun/tools/classfile/AttributeException.java
@@ -32,6 +32,7 @@
  *  deletion without notice.</b>
  */
 public class AttributeException extends Exception {
+    private static final long serialVersionUID = -4231486387714867770L;
     AttributeException() { }
 
     AttributeException(String msg) {
diff --git a/src/share/classes/com/sun/tools/classfile/Code_attribute.java b/src/share/classes/com/sun/tools/classfile/Code_attribute.java
index c3d8dff..ce99e11 100644
--- a/src/share/classes/com/sun/tools/classfile/Code_attribute.java
+++ b/src/share/classes/com/sun/tools/classfile/Code_attribute.java
@@ -37,6 +37,7 @@
  */
 public class Code_attribute extends Attribute {
     public class InvalidIndex extends AttributeException {
+        private static final long serialVersionUID = -8904527774589382802L;
         InvalidIndex(int index) {
             this.index = index;
         }
diff --git a/src/share/classes/com/sun/tools/classfile/ConstantPool.java b/src/share/classes/com/sun/tools/classfile/ConstantPool.java
index f6a0bda..b9acd96 100644
--- a/src/share/classes/com/sun/tools/classfile/ConstantPool.java
+++ b/src/share/classes/com/sun/tools/classfile/ConstantPool.java
@@ -38,6 +38,7 @@
 public class ConstantPool {
 
     public class InvalidIndex extends ConstantPoolException {
+        private static final long serialVersionUID = -4350294289300939730L;
         InvalidIndex(int index) {
             super(index);
         }
@@ -50,6 +51,7 @@
     }
 
     public class UnexpectedEntry extends ConstantPoolException {
+        private static final long serialVersionUID = 6986335935377933211L;
         UnexpectedEntry(int index, int expected_tag, int found_tag) {
             super(index);
             this.expected_tag = expected_tag;
@@ -67,6 +69,7 @@
     }
 
     public class InvalidEntry extends ConstantPoolException {
+        private static final long serialVersionUID = 1000087545585204447L;
         InvalidEntry(int index, int tag) {
             super(index);
             this.tag = tag;
@@ -82,6 +85,7 @@
     }
 
     public class EntryNotFound extends ConstantPoolException {
+        private static final long serialVersionUID = 2885537606468581850L;
         EntryNotFound(Object value) {
             super(-1);
             this.value = value;
diff --git a/src/share/classes/com/sun/tools/classfile/ConstantPoolException.java b/src/share/classes/com/sun/tools/classfile/ConstantPoolException.java
index 03a89b9..31d3473 100644
--- a/src/share/classes/com/sun/tools/classfile/ConstantPoolException.java
+++ b/src/share/classes/com/sun/tools/classfile/ConstantPoolException.java
@@ -33,6 +33,7 @@
  *  deletion without notice.</b>
  */
 public class ConstantPoolException extends Exception {
+    private static final long serialVersionUID = -2324397349644754565L;
     ConstantPoolException(int index) {
         this.index = index;
     }
diff --git a/src/share/classes/com/sun/tools/classfile/Descriptor.java b/src/share/classes/com/sun/tools/classfile/Descriptor.java
index 510fe09..e446955 100644
--- a/src/share/classes/com/sun/tools/classfile/Descriptor.java
+++ b/src/share/classes/com/sun/tools/classfile/Descriptor.java
@@ -38,6 +38,7 @@
  */
 public class Descriptor {
     public class InvalidDescriptor extends DescriptorException {
+        private static final long serialVersionUID = 1L;
         InvalidDescriptor(String desc) {
             this.desc = desc;
             this.index = -1;
diff --git a/src/share/classes/com/sun/tools/classfile/DescriptorException.java b/src/share/classes/com/sun/tools/classfile/DescriptorException.java
index 97d0538..fad9a2f 100644
--- a/src/share/classes/com/sun/tools/classfile/DescriptorException.java
+++ b/src/share/classes/com/sun/tools/classfile/DescriptorException.java
@@ -33,4 +33,5 @@
  *  deletion without notice.</b>
  */
 public class DescriptorException extends Exception {
+    private static final long serialVersionUID = 2411890273788901032L;
 }
diff --git a/src/share/classes/com/sun/tools/classfile/StackMapTable_attribute.java b/src/share/classes/com/sun/tools/classfile/StackMapTable_attribute.java
index 4f4fd93..26a9b6f 100644
--- a/src/share/classes/com/sun/tools/classfile/StackMapTable_attribute.java
+++ b/src/share/classes/com/sun/tools/classfile/StackMapTable_attribute.java
@@ -37,6 +37,7 @@
  */
 public class StackMapTable_attribute extends Attribute {
     static class InvalidStackMap extends AttributeException {
+        private static final long serialVersionUID = -5659038410855089780L;
         InvalidStackMap(String msg) {
             super(msg);
         }
diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/ConfigurationImpl.java b/src/share/classes/com/sun/tools/doclets/formats/html/ConfigurationImpl.java
index 524bd24..70d487d 100644
--- a/src/share/classes/com/sun/tools/doclets/formats/html/ConfigurationImpl.java
+++ b/src/share/classes/com/sun/tools/doclets/formats/html/ConfigurationImpl.java
@@ -493,4 +493,14 @@
     public Comparator<ProgramElementDoc> getMemberComparator() {
         return null;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    public Locale getLocale() {
+        if (root instanceof com.sun.tools.javadoc.RootDocImpl)
+            return ((com.sun.tools.javadoc.RootDocImpl)root).getLocale();
+        else
+            return Locale.getDefault();
+    }
 }
diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/PackageIndexWriter.java b/src/share/classes/com/sun/tools/doclets/formats/html/PackageIndexWriter.java
index 630ed36..d7e7ee1 100644
--- a/src/share/classes/com/sun/tools/doclets/formats/html/PackageIndexWriter.java
+++ b/src/share/classes/com/sun/tools/doclets/formats/html/PackageIndexWriter.java
@@ -119,7 +119,7 @@
      */
     protected void generateIndex() {
         for (int i = 0; i < groupList.size(); i++) {
-        String groupname = (String)groupList.get(i);
+        String groupname = groupList.get(i);
         List<PackageDoc> list = groupPackageMap.get(groupname);
             if (list != null && list.size() > 0) {
                 printIndexContents(list.toArray(new PackageDoc[list.size()]),
diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlDocWriter.java b/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlDocWriter.java
index 8644af9..d4cdd39 100644
--- a/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlDocWriter.java
+++ b/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlDocWriter.java
@@ -25,12 +25,11 @@
 
 package com.sun.tools.doclets.formats.html.markup;
 
-import com.sun.tools.doclets.internal.toolkit.*;
-
-import com.sun.javadoc.*;
 import java.io.*;
 import java.util.*;
-import com.sun.tools.doclets.internal.toolkit.util.*;
+
+import com.sun.javadoc.*;
+import com.sun.tools.doclets.internal.toolkit.*;
 
 
 /**
@@ -56,8 +55,9 @@
         super(configuration,
               null, configuration.destDirName + filename,
               configuration.docencoding);
+        // use File to normalize file separators
         configuration.message.notice("doclet.Generating_0",
-                                     configuration.destDirName + filename);
+            new File(configuration.destDirName, filename));
     }
 
     public HtmlDocWriter(Configuration configuration,
@@ -65,10 +65,10 @@
         super(configuration,
               configuration.destDirName + path, filename,
               configuration.docencoding);
+        // use File to normalize file separators
         configuration.message.notice("doclet.Generating_0",
-                                     configuration.destDirName +
-                                         ((path.length() > 0)?
-                                              path + File.separator: "") + filename);
+            new File(configuration.destDirName,
+                    ((path.length() > 0)? path + File.separator: "") + filename));
     }
 
     /**
diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlWriter.java b/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlWriter.java
index 21fb7e6..cdafe1b 100644
--- a/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlWriter.java
+++ b/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlWriter.java
@@ -85,7 +85,7 @@
      * Print &lt;HTML&gt; tag. Add a newline character at the end.
      */
     public void html() {
-        println("<HTML>");
+        println("<HTML lang=\"" + configuration.getLocale().getLanguage() + "\">");
     }
 
     /**
diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/Configuration.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/Configuration.java
index 11b37b3..eb8960f 100644
--- a/src/share/classes/com/sun/tools/doclets/internal/toolkit/Configuration.java
+++ b/src/share/classes/com/sun/tools/doclets/internal/toolkit/Configuration.java
@@ -707,6 +707,11 @@
     }
 
     /**
+     * Return the Locale for this document.
+     */
+    public abstract Locale getLocale();
+
+    /**
      * Return the comparator that will be used to sort member documentation.
      * To no do any sorting, return null.
      *
diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/SerializedFormBuilder.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/SerializedFormBuilder.java
index 7f025b6..636db90 100644
--- a/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/SerializedFormBuilder.java
+++ b/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/SerializedFormBuilder.java
@@ -402,7 +402,7 @@
     public void buildFieldSerializationOverview(ClassDoc classDoc) {
         if (classDoc.definesSerializableFields()) {
             FieldDoc serialPersistentField =
-                (FieldDoc)((Util.asList(classDoc.serializableFields()).get(0)));
+                Util.asList(classDoc.serializableFields()).get(0);
             String comment = serialPersistentField.commentText();
             if (comment.length() > 0) {
                 fieldWriter.writeHeader(
diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/DocletAbortException.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/DocletAbortException.java
index 906cc01..c08965e 100644
--- a/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/DocletAbortException.java
+++ b/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/DocletAbortException.java
@@ -26,6 +26,7 @@
 package com.sun.tools.doclets.internal.toolkit.util;
 
 public class DocletAbortException extends RuntimeException {
+    private static final long serialVersionUID = -9131058909576418984L;
 
     public DocletAbortException() {
     }
diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/MessageRetriever.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/MessageRetriever.java
index 4055b91..9f0b641 100644
--- a/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/MessageRetriever.java
+++ b/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/MessageRetriever.java
@@ -81,46 +81,14 @@
     }
 
     /**
-     * get and format message string from resource
-     *
-     * @param key selects message from resource
-     */
-    public String getText(String key) {
-        return getText(key, (String)null);
-    }
-
-    /**
      * Get and format message string from resource
      *
      * @param key selects message from resource
-     * @param a1 Argument, to be repalced in the message.
-     */
-    public String getText(String key, String a1) {
-        return getText(key, a1, null);
-    }
-
-    /**
-     * Get and format message string from resource
-     *
-     * @param key selects message from resource
-     * @param a1 first argument to be replaced in the message.
-     * @param a2 second argument to be replaced in the message.
-     */
-    public String getText(String key, String a1, String a2) {
-        return getText(key, a1, a2, null);
-    }
-
-    /**
-     * Get and format message string from resource
-     *
-     * @param key selects message from resource
-     * @param a1 first argument to be replaced in the message.
-     * @param a2 second argument to be replaced in the message.
-     * @param a3 third argument to be replaced in the message.
+     * @param args arguments to be replaced in the message.
      * @throws MissingResourceException when the key does not
      * exist in the properties file.
      */
-    public String getText(String key, String a1, String a2, String a3) throws MissingResourceException {
+    public String getText(String key, Object... args) throws MissingResourceException {
         if (messageRB == null) {
             try {
                 messageRB = ResourceBundle.getBundle(resourcelocation);
@@ -130,7 +98,7 @@
             }
         }
         String message = messageRB.getString(key);
-        return MessageFormat.format(message, a1, a2, a3);
+        return MessageFormat.format(message, args);
     }
 
     /**
@@ -195,87 +163,20 @@
      *
      * @param pos the position of the source
      * @param key selects message from resource
+     * @param args arguments to be replaced in the message.
      */
-    public void error(SourcePosition pos, String key) {
-        printError(pos, getText(key));
+    public void error(SourcePosition pos, String key, Object... args) {
+        printError(pos, getText(key, args));
     }
 
     /**
      * Print error message, increment error count.
      *
      * @param key selects message from resource
+     * @param args arguments to be replaced in the message.
      */
-    public void error(String key) {
-        printError(getText(key));
-    }
-
-    /**
-     * Print error message, increment error count.
-     *
-     * @param pos the position of the source
-     * @param key selects message from resource
-     * @param a1 first argument to be replaced in the message.
-     */
-    public void error(SourcePosition pos, String key, String a1) {
-        printError(pos, getText(key, a1));
-    }
-
-    /**
-     * Print error message, increment error count.
-     *
-     * @param key selects message from resource
-     * @param a1 first argument to be replaced in the message.
-     */
-    public void error(String key, String a1) {
-        printError(getText(key, a1));
-    }
-
-    /**
-     * Print error message, increment error count.
-     *
-     * @param pos the position of the source
-     * @param key selects message from resource
-     * @param a1 first argument to be replaced in the message.
-     * @param a2 second argument to be replaced in the message.
-     */
-    public void error(SourcePosition pos, String key, String a1, String a2) {
-        printError(pos, getText(key, a1, a2));
-    }
-
-    /**
-     * Print error message, increment error count.
-     *
-     * @param key selects message from resource
-     * @param a1 first argument to be replaced in the message.
-     * @param a2 second argument to be replaced in the message.
-     */
-    public void error(String key, String a1, String a2) {
-        printError(getText(key, a1, a2));
-    }
-
-    /**
-     * Print error message, increment error count.
-     *
-     * @param pos the position of the source
-     * @param key selects message from resource
-     * @param a1 first argument to be replaced in the message.
-     * @param a2 second argument to be replaced in the message.
-     * @param a3 third argument to be replaced in the message.
-     */
-    public void error(SourcePosition pos, String key, String a1, String a2, String a3) {
-        printError(pos, getText(key, a1, a2, a3));
-    }
-
-    /**
-     * Print error message, increment error count.
-     *
-     * @param key selects message from resource
-     * @param a1 first argument to be replaced in the message.
-     * @param a2 second argument to be replaced in the message.
-     * @param a3 third argument to be replaced in the message.
-     */
-    public void error(String key, String a1, String a2, String a3) {
-        printError(getText(key, a1, a2, a3));
+    public void error(String key, Object... args) {
+        printError(getText(key, args));
     }
 
     /**
@@ -283,87 +184,20 @@
      *
      * @param pos the position of the source
      * @param key selects message from resource
+     * @param args arguments to be replaced in the message.
      */
-    public void warning(SourcePosition pos, String key) {
-        printWarning(pos, getText(key));
+    public void warning(SourcePosition pos, String key, Object... args) {
+        printWarning(pos, getText(key, args));
     }
 
     /**
      * Print warning message, increment warning count.
      *
      * @param key selects message from resource
+     * @param args arguments to be replaced in the message.
      */
-    public void warning(String key) {
-        printWarning(getText(key));
-    }
-
-    /**
-     * Print warning message, increment warning count.
-     *
-     * @param pos the position of the source
-     * @param key selects message from resource
-     * @param a1 first argument to be replaced in the message.
-     */
-    public void warning(SourcePosition pos, String key, String a1) {
-        printWarning(pos, getText(key, a1));
-    }
-
-    /**
-     * Print warning message, increment warning count.
-     *
-     * @param key selects message from resource
-     * @param a1 first argument to be replaced in the message.
-     */
-    public void warning(String key, String a1) {
-        printWarning(getText(key, a1));
-    }
-
-    /**
-     * Print warning message, increment warning count.
-     *
-     * @param pos the position of the source
-     * @param key selects message from resource
-     * @param a1 first argument to be replaced in the message.
-     * @param a2 second argument to be replaced in the message.
-     */
-    public void warning(SourcePosition pos, String key, String a1, String a2) {
-        printWarning(pos, getText(key, a1, a2));
-    }
-
-    /**
-     * Print warning message, increment warning count.
-     *
-     * @param key selects message from resource
-     * @param a1 first argument to be replaced in the message.
-     * @param a2 second argument to be replaced in the message.
-     */
-    public void warning(String key, String a1, String a2) {
-        printWarning(getText(key, a1, a2));
-    }
-
-    /**
-     * Print warning message, increment warning count.
-     *
-     * @param pos the position of the source
-     * @param key selects message from resource
-     * @param a1 first argument to be replaced in the message.
-     * @param a2 second argument to be replaced in the message.
-     * @param a3 third argument to be replaced in the message.
-     */
-    public void warning(SourcePosition pos, String key, String a1, String a2, String a3) {
-        printWarning(pos, getText(key, a1, a2, a3));
-    }
-
-    /**
-     * Print warning message, increment warning count.
-     *
-     * @param key selects message from resource
-     * @param a1 first argument to be replaced in the message.
-     * @param a2 second argument to be replaced in the message.
-     * @param a3 third argument to be replaced in the message.
-     */
-    public void warning(String key, String a1, String a2, String a3) {
-        printWarning(getText(key, a1, a2, a3));
+    public void warning(String key, Object... args) {
+        printWarning(getText(key, args));
     }
 
     /**
@@ -371,85 +205,19 @@
      *
      * @param pos the position of the source
      * @param key selects message from resource
+     * @param args arguments to be replaced in the message.
      */
-    public void notice(SourcePosition pos, String key) {
-        printNotice(pos, getText(key));
+    public void notice(SourcePosition pos, String key, Object... args) {
+        printNotice(pos, getText(key, args));
     }
 
     /**
      * Print a message.
      *
      * @param key selects message from resource
+     * @param args arguments to be replaced in the message.
      */
-    public void notice(String key) {
-        printNotice(getText(key));
-    }
-
-    /**
-     * Print a message.
-     * @param pos the position of the source
-     * @param key selects message from resource
-     * @param a1 first argument to be replaced in the message.
-     */
-    public void notice(SourcePosition pos, String key, String a1) {
-        printNotice(pos, getText(key, a1));
-    }
-
-    /**
-     * Print a message.
-     *
-     * @param key selects message from resource
-     * @param a1 first argument to be replaced in the message.
-     */
-    public void notice(String key, String a1) {
-        printNotice(getText(key, a1));
-    }
-
-    /**
-     * Print a message.
-     *
-     * @param pos the position of the source
-     * @param key selects message from resource
-     * @param a1 first argument to be replaced in the message.
-     * @param a2 second argument to be replaced in the message.
-     */
-    public void notice(SourcePosition pos, String key, String a1, String a2) {
-        printNotice(pos, getText(key, a1, a2));
-    }
-
-    /**
-     * Print a message.
-     *
-     * @param key selects message from resource
-     * @param a1 first argument to be replaced in the message.
-     * @param a2 second argument to be replaced in the message.
-     */
-    public void notice(String key, String a1, String a2) {
-        printNotice(getText(key, a1, a2));
-    }
-
-    /**
-     * Print a message.
-     *
-     * @param pos the position of the source
-     * @param key selects message from resource
-     * @param a1 first argument to be replaced in the message.
-     * @param a2 second argument to be replaced in the message.
-     * @param a3 third argument to be replaced in the message.
-     */
-    public void notice(SourcePosition pos, String key, String a1, String a2, String a3) {
-        printNotice(pos, getText(key, a1, a2, a3));
-    }
-
-    /**
-     * Print a message.
-     *
-     * @param key selects message from resource
-     * @param a1 first argument to be replaced in the message.
-     * @param a2 second argument to be replaced in the message.
-     * @param a3 third argument to be replaced in the message.
-     */
-    public void notice(String key, String a1, String a2, String a3) {
-        printNotice(getText(key, a1, a2, a3));
+    public void notice(String key, Object... args) {
+        printNotice(getText(key, args));
     }
 }
diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/SourceToHTMLConverter.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/SourceToHTMLConverter.java
index 67a82e8..3de2951 100644
--- a/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/SourceToHTMLConverter.java
+++ b/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/SourceToHTMLConverter.java
@@ -25,10 +25,12 @@
 
 package com.sun.tools.doclets.internal.toolkit.util;
 
-import com.sun.tools.doclets.internal.toolkit.*;
-import com.sun.javadoc.*;
 import java.io.*;
 import java.util.*;
+import javax.tools.FileObject;
+
+import com.sun.javadoc.*;
+import com.sun.tools.doclets.internal.toolkit.*;
 
 /**
  * Converts Java Source Code to HTML.
@@ -123,16 +125,27 @@
         if (cd == null || outputdir == null) {
             return;
         }
-        File file;
-        SourcePosition sp = cd.position();
-        if (sp == null || (file = sp.file()) == null) {
-            return;
-        }
         try {
+            SourcePosition sp = cd.position();
+            if (sp == null)
+                return;
+            Reader r;
+            // temp hack until we can update SourcePosition API.
+            if (sp instanceof com.sun.tools.javadoc.SourcePositionImpl) {
+                FileObject fo = ((com.sun.tools.javadoc.SourcePositionImpl) sp).fileObject();
+                if (fo == null)
+                    return;
+                r = fo.openReader(true);
+            } else {
+                File file = sp.file();
+                if (file == null)
+                    return;
+                r = new FileReader(file);
+            }
+            LineNumberReader reader = new LineNumberReader(r);
             int lineno = 1;
             String line;
             StringBuffer output = new StringBuffer();
-            LineNumberReader reader = new LineNumberReader(new FileReader(file));
             try {
                 while ((line = reader.readLine()) != null) {
                     output.append(formatLine(line, configuration.sourcetab, lineno));
@@ -142,7 +155,7 @@
                 reader.close();
             }
             output = addLineNumbers(output.toString());
-            output.insert(0, getHeader());
+            output.insert(0, getHeader(configuration));
             output.append(getFooter());
             writeToFile(output.toString(), outputdir, cd.name(), configuration);
         } catch (Exception e){
@@ -192,10 +205,11 @@
 
     /**
      * Get the header.
+     * @param configuration the Doclet configuration
      * @return the header to the output file
      */
-    protected static String getHeader() {
-        StringBuffer result = new StringBuffer("<HTML>" + DocletConstants.NL);
+    protected static String getHeader(Configuration configuration) {
+        StringBuffer result = new StringBuffer("<HTML lang=\"" + configuration.getLocale().getLanguage() + "\">" + DocletConstants.NL);
         result.append("<BODY BGCOLOR=\""+ BGCOLOR + "\">" + DocletConstants.NL);
         result.append("<PRE>" + DocletConstants.NL);
         return result.toString();
diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/Util.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/Util.java
index 9b7b668..1d5eb19 100644
--- a/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/Util.java
+++ b/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/Util.java
@@ -25,10 +25,11 @@
 
 package com.sun.tools.doclets.internal.toolkit.util;
 
+import java.io.*;
+import java.util.*;
+
 import com.sun.javadoc.*;
 import com.sun.tools.doclets.internal.toolkit.*;
-import java.util.*;
-import java.io.*;
 
 /**
  * Utilities Class for Doclets.
@@ -579,7 +580,7 @@
      * @param docencoding Encoding to be used for this file.
      * @exception IOException Exception raised by the FileWriter is passed on
      * to next level.
-     * @exception UnSupportedEncodingException Exception raised by the
+     * @exception UnsupportedEncodingException Exception raised by the
      * OutputStreamWriter is passed on to next level.
      * @return Writer Writer for the file getting generated.
      * @see java.io.FileOutputStream
@@ -598,9 +599,7 @@
             fos = new FileOutputStream(filename);
         }
         if (docencoding == null) {
-            OutputStreamWriter oswriter = new OutputStreamWriter(fos);
-            docencoding = oswriter.getEncoding();
-            return oswriter;
+            return new OutputStreamWriter(fos);
         } else {
             return new OutputStreamWriter(fos, docencoding);
         }
diff --git a/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java b/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java
index 3f4911b..3556ee6 100644
--- a/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java
+++ b/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java
@@ -471,6 +471,7 @@
         private int value;
     };
     protected class CompileStates extends HashMap<Env<AttrContext>,CompileState> {
+        private static final long serialVersionUID = 1812267524140424433L;
         boolean isDone(Env<AttrContext> env, CompileState cs) {
             CompileState ecs = get(env);
             return ecs != null && ecs.isDone(cs);
diff --git a/src/share/classes/com/sun/tools/javac/main/Main.java b/src/share/classes/com/sun/tools/javac/main/Main.java
index e816509..804448b 100644
--- a/src/share/classes/com/sun/tools/javac/main/Main.java
+++ b/src/share/classes/com/sun/tools/javac/main/Main.java
@@ -338,13 +338,13 @@
                 return EXIT_CMDERR;
             }
 
-            List<File> filenames;
+            List<File> files;
             try {
-                filenames = processArgs(CommandLine.parse(args));
-                if (filenames == null) {
+                files = processArgs(CommandLine.parse(args));
+                if (files == null) {
                     // null signals an error in options, abort
                     return EXIT_CMDERR;
-                } else if (filenames.isEmpty() && fileObjects.isEmpty() && classnames.isEmpty()) {
+                } else if (files.isEmpty() && fileObjects.isEmpty() && classnames.isEmpty()) {
                     // it is allowed to compile nothing if just asking for help or version info
                     if (options.get("-help") != null
                         || options.get("-X") != null
@@ -380,12 +380,14 @@
             comp = JavaCompiler.instance(context);
             if (comp == null) return EXIT_SYSERR;
 
-            if (!filenames.isEmpty()) {
+            Log log = Log.instance(context);
+
+            if (!files.isEmpty()) {
                 // add filenames to fileObjects
                 comp = JavaCompiler.instance(context);
                 List<JavaFileObject> otherFiles = List.nil();
                 JavacFileManager dfm = (JavacFileManager)fileManager;
-                for (JavaFileObject fo : dfm.getJavaFileObjectsFromFiles(filenames))
+                for (JavaFileObject fo : dfm.getJavaFileObjectsFromFiles(files))
                     otherFiles = otherFiles.prepend(fo);
                 for (JavaFileObject fo : otherFiles)
                     fileObjects = fileObjects.prepend(fo);
@@ -394,6 +396,16 @@
                          classnames.toList(),
                          processors);
 
+            if (log.expectDiagKeys != null) {
+                if (log.expectDiagKeys.size() == 0) {
+                    Log.printLines(log.noticeWriter, "all expected diagnostics found");
+                    return EXIT_OK;
+                } else {
+                    Log.printLines(log.noticeWriter, "expected diagnostic keys not found: " + log.expectDiagKeys);
+                    return EXIT_ERROR;
+                }
+            }
+
             if (comp.errorCount() != 0 ||
                 options.get("-Werror") != null && comp.warningCount() != 0)
                 return EXIT_ERROR;
diff --git a/src/share/classes/com/sun/tools/javac/parser/JavacParser.java b/src/share/classes/com/sun/tools/javac/parser/JavacParser.java
index ef48f23..a1bd2da 100644
--- a/src/share/classes/com/sun/tools/javac/parser/JavacParser.java
+++ b/src/share/classes/com/sun/tools/javac/parser/JavacParser.java
@@ -863,13 +863,13 @@
                         accept(GT);
                         t = F.at(pos1).TypeApply(t, args.toList());
                         checkGenerics();
-                        t = bracketsOpt(toP(t));
                         while (S.token() == DOT) {
                             S.nextToken();
                             mode = TYPE;
                             t = toP(F.at(S.pos()).Select(t, ident()));
                             t = typeArgumentsOpt(t);
                         }
+                        t = bracketsOpt(toP(t));
                     } else if ((mode & EXPR) != 0) {
                         mode = EXPR;
                         t = F.at(pos1).Binary(op, t, term2Rest(t1, TreeInfo.shiftPrec));
diff --git a/src/share/classes/com/sun/tools/javac/util/BasicDiagnosticFormatter.java b/src/share/classes/com/sun/tools/javac/util/BasicDiagnosticFormatter.java
index 345e262..0210245 100644
--- a/src/share/classes/com/sun/tools/javac/util/BasicDiagnosticFormatter.java
+++ b/src/share/classes/com/sun/tools/javac/util/BasicDiagnosticFormatter.java
@@ -61,6 +61,7 @@
      * @param opts list of command-line options
      * @param msgs JavacMessages object used for i18n
      */
+    @SuppressWarnings("fallthrough")
     BasicDiagnosticFormatter(Options opts, JavacMessages msgs) {
         super(msgs, opts, true);
         initAvailableFormats();
diff --git a/src/share/classes/com/sun/tools/javac/util/Log.java b/src/share/classes/com/sun/tools/javac/util/Log.java
index e9d21f7..e7359a3 100644
--- a/src/share/classes/com/sun/tools/javac/util/Log.java
+++ b/src/share/classes/com/sun/tools/javac/util/Log.java
@@ -26,6 +26,7 @@
 package com.sun.tools.javac.util;
 
 import java.io.*;
+import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
@@ -97,6 +98,11 @@
     private DiagnosticFormatter<JCDiagnostic> diagFormatter;
 
     /**
+     * Keys for expected diagnostics
+     */
+    public Set<String> expectDiagKeys;
+
+    /**
      * JavacMessages object used for localization
      */
     private JavacMessages messages;
@@ -123,9 +129,13 @@
         this.diagFormatter = rawDiagnostics ? new RawDiagnosticFormatter(options) :
                                               new BasicDiagnosticFormatter(options, messages);
         @SuppressWarnings("unchecked") // FIXME
-        DiagnosticListener<? super JavaFileObject> diagListener =
+        DiagnosticListener<? super JavaFileObject> dl =
             context.get(DiagnosticListener.class);
-        this.diagListener = diagListener;
+        this.diagListener = dl;
+
+        String ek = options.get("expectKeys");
+        if (ek != null)
+            expectDiagKeys = new HashSet<String>(Arrays.asList(ek.split(", *")));
     }
     // where
         private int getIntOption(Options options, String optionName, int defaultValue) {
@@ -291,6 +301,9 @@
      * reported so far, the diagnostic may be handed off to writeDiagnostic.
      */
     public void report(JCDiagnostic diagnostic) {
+        if (expectDiagKeys != null)
+            expectDiagKeys.remove(diagnostic.getCode());
+
         switch (diagnostic.getType()) {
         case FRAGMENT:
             throw new IllegalArgumentException();
diff --git a/src/share/classes/com/sun/tools/javadoc/ClassDocImpl.java b/src/share/classes/com/sun/tools/javadoc/ClassDocImpl.java
index 18328a0..e3f0656 100644
--- a/src/share/classes/com/sun/tools/javadoc/ClassDocImpl.java
+++ b/src/share/classes/com/sun/tools/javadoc/ClassDocImpl.java
@@ -25,42 +25,48 @@
 
 package com.sun.tools.javadoc;
 
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.Modifier;
+import java.net.URI;
+import java.util.HashSet;
+import java.util.Set;
+import javax.tools.FileObject;
+import javax.tools.JavaFileManager.Location;
+import javax.tools.StandardJavaFileManager;
+import javax.tools.StandardLocation;
+
 import com.sun.javadoc.*;
 
 import static com.sun.javadoc.LanguageVersion.*;
 
-import com.sun.tools.javac.util.List;
-import com.sun.tools.javac.util.ListBuffer;
-import com.sun.tools.javac.util.Name;
-import com.sun.tools.javac.util.Position;
-
 import com.sun.tools.javac.code.Flags;
 import com.sun.tools.javac.code.Kinds;
-import com.sun.tools.javac.code.TypeTags;
-import com.sun.tools.javac.code.Type;
-import com.sun.tools.javac.code.Type.ClassType;
 import com.sun.tools.javac.code.Scope;
 import com.sun.tools.javac.code.Symbol;
 import com.sun.tools.javac.code.Symbol.*;
+import com.sun.tools.javac.code.Type;
+import com.sun.tools.javac.code.Type.ClassType;
+import com.sun.tools.javac.code.TypeTags;
 
 import com.sun.tools.javac.comp.AttrContext;
 import com.sun.tools.javac.comp.Env;
 
 import com.sun.tools.javac.tree.JCTree;
+import com.sun.tools.javac.tree.JCTree.JCClassDecl;
 import com.sun.tools.javac.tree.JCTree.JCFieldAccess;
 import com.sun.tools.javac.tree.JCTree.JCImport;
-import com.sun.tools.javac.tree.JCTree.JCClassDecl;
 import com.sun.tools.javac.tree.TreeInfo;
 
+import com.sun.tools.javac.util.List;
+import com.sun.tools.javac.util.ListBuffer;
+import com.sun.tools.javac.util.Name;
 import com.sun.tools.javac.util.Names;
+import com.sun.tools.javac.util.Position;
+
 import static com.sun.tools.javac.code.Flags.*;
 import static com.sun.tools.javac.code.Kinds.*;
 
-import java.io.File;
-import java.util.Set;
-import java.util.HashSet;
-import java.lang.reflect.Modifier;
-
 /**
  * Represents a java class and provides access to information
  * about the class, the class' comment and tags, and the
@@ -271,16 +277,41 @@
      */
     public PackageDoc containingPackage() {
         PackageDocImpl p = env.getPackageDoc(tsym.packge());
-        SourcePosition po = position();
-        if (po != null && p.setDocPath == false && p.zipDocPath == null) {
-            //Set the package path if possible
-            File packageDir = po.file().getParentFile();
-            if (packageDir != null
-                && (new File(packageDir, "package.html")).exists()) {
-                p.setDocPath(packageDir.getPath());
-            } else {
-                p.setDocPath(null);
+        if (p.setDocPath == false) {
+            FileObject docPath;
+            try {
+                Location location = env.fileManager.hasLocation(StandardLocation.SOURCE_PATH)
+                    ? StandardLocation.SOURCE_PATH : StandardLocation.CLASS_PATH;
+
+                docPath = env.fileManager.getFileForInput(
+                        location, p.qualifiedName(), "package.html");
+            } catch (IOException e) {
+                docPath = null;
             }
+
+            if (docPath == null) {
+                // fall back on older semantics of looking in same directory as
+                // source file for this class
+                SourcePosition po = position();
+                if (env.fileManager instanceof StandardJavaFileManager &&
+                        po instanceof SourcePositionImpl) {
+                    URI uri = ((SourcePositionImpl) po).filename.toUri();
+                    if ("file".equals(uri.getScheme())) {
+                        File f = new File(uri.getPath());
+                        File dir = f.getParentFile();
+                        if (dir != null) {
+                            File pf = new File(dir, "package.html");
+                            if (pf.exists()) {
+                                StandardJavaFileManager sfm = (StandardJavaFileManager) env.fileManager;
+                                docPath = sfm.getJavaFileObjects(pf).iterator().next();
+                            }
+                        }
+
+                    }
+                }
+            }
+
+            p.setDocPath(docPath);
         }
         return p;
     }
@@ -1251,7 +1282,7 @@
      */
     public SourcePosition position() {
         if (tsym.sourcefile == null) return null;
-        return SourcePositionImpl.make(tsym.sourcefile.toString(),
+        return SourcePositionImpl.make(tsym.sourcefile,
                                        (tree==null) ? Position.NOPOS : tree.pos,
                                        lineMap);
     }
diff --git a/src/share/classes/com/sun/tools/javadoc/Comment.java b/src/share/classes/com/sun/tools/javadoc/Comment.java
index af4322e..6ce71e3 100644
--- a/src/share/classes/com/sun/tools/javadoc/Comment.java
+++ b/src/share/classes/com/sun/tools/javadoc/Comment.java
@@ -74,6 +74,7 @@
          * the tag text.
          * </pre>
          */
+        @SuppressWarnings("fallthrough")
         class CommentStringParser {
             /**
              * The entry point to the comment string parser
diff --git a/src/share/classes/com/sun/tools/javadoc/DocEnv.java b/src/share/classes/com/sun/tools/javadoc/DocEnv.java
index d8ddd70..aeb39bf 100644
--- a/src/share/classes/com/sun/tools/javadoc/DocEnv.java
+++ b/src/share/classes/com/sun/tools/javadoc/DocEnv.java
@@ -25,8 +25,9 @@
 
 package com.sun.tools.javadoc;
 
-import java.util.*;
 import java.lang.reflect.Modifier;
+import java.util.*;
+import javax.tools.JavaFileManager;
 
 import com.sun.javadoc.*;
 
@@ -40,7 +41,6 @@
 import com.sun.tools.javac.util.Names;
 import com.sun.tools.javac.util.Position;
 
-
 /**
  * Holds the environment for a run of javadoc.
  * Holds only the information needed throughout the
@@ -103,6 +103,7 @@
 
     Check chk;
     Types types;
+    JavaFileManager fileManager;
 
     /** Allow documenting from class files? */
     boolean docClasses = false;
@@ -133,6 +134,7 @@
         externalizableSym = reader.enterClass(names.fromString("java.io.Externalizable"));
         chk = Check.instance(context);
         types = Types.instance(context);
+        fileManager = context.get(JavaFileManager.class);
 
         // Default.  Should normally be reset with setLocale.
         this.doclocale = new DocLocale(this, "", breakiterator);
diff --git a/src/share/classes/com/sun/tools/javadoc/DocImpl.java b/src/share/classes/com/sun/tools/javadoc/DocImpl.java
index 3d3f7c6..636f9e8 100644
--- a/src/share/classes/com/sun/tools/javadoc/DocImpl.java
+++ b/src/share/classes/com/sun/tools/javadoc/DocImpl.java
@@ -25,11 +25,13 @@
 
 package com.sun.tools.javadoc;
 
-import com.sun.javadoc.*;
-
 import java.io.InputStream;
 import java.io.IOException;
 import java.text.CollationKey;
+import javax.tools.FileObject;
+
+import com.sun.javadoc.*;
+
 import com.sun.tools.javac.util.Position;
 
 /**
@@ -43,7 +45,7 @@
  * @author Atul M Dambalkar
  * @author Neal Gafter (rewrite)
  */
-abstract class DocImpl implements Doc, Comparable<Object> {
+public abstract class DocImpl implements Doc, Comparable<Object> {
 
     /**
      * Doc environment
@@ -163,7 +165,7 @@
     /**
      * Utility for subclasses which read HTML documentation files.
      */
-    String readHTMLDocumentation(InputStream input, String filename) throws IOException {
+    String readHTMLDocumentation(InputStream input, FileObject filename) throws IOException {
         int filesize = input.available();
         byte[] filecontents = new byte[filesize];
         input.read(filecontents, 0, filesize);
diff --git a/src/share/classes/com/sun/tools/javadoc/ExecutableMemberDocImpl.java b/src/share/classes/com/sun/tools/javadoc/ExecutableMemberDocImpl.java
index 4162db4..7647ac0 100644
--- a/src/share/classes/com/sun/tools/javadoc/ExecutableMemberDocImpl.java
+++ b/src/share/classes/com/sun/tools/javadoc/ExecutableMemberDocImpl.java
@@ -25,20 +25,18 @@
 
 package com.sun.tools.javadoc;
 
+import java.lang.reflect.Modifier;
+import java.text.CollationKey;
+
 import com.sun.javadoc.*;
 
+import com.sun.tools.javac.code.Flags;
+import com.sun.tools.javac.code.Symbol.*;
+import com.sun.tools.javac.code.Type;
+import com.sun.tools.javac.tree.JCTree.JCMethodDecl;
 import com.sun.tools.javac.util.List;
 import com.sun.tools.javac.util.ListBuffer;
 import com.sun.tools.javac.util.Position;
-import com.sun.tools.javac.code.Flags;
-import com.sun.tools.javac.code.Type;
-import com.sun.tools.javac.code.Symbol;
-import com.sun.tools.javac.code.Symbol.*;
-import com.sun.tools.javac.tree.JCTree.JCMethodDecl;
-
-import java.text.CollationKey;
-
-import java.lang.reflect.Modifier;
 
 /**
  * Represents a method or constructor of a java class.
@@ -267,7 +265,7 @@
      */
     public SourcePosition position() {
         if (sym.enclClass().sourcefile == null) return null;
-        return SourcePositionImpl.make(sym.enclClass().sourcefile.toString(),
+        return SourcePositionImpl.make(sym.enclClass().sourcefile,
                                        (tree==null) ? 0 : tree.pos,
                                        lineMap);
     }
diff --git a/src/share/classes/com/sun/tools/javadoc/FieldDocImpl.java b/src/share/classes/com/sun/tools/javadoc/FieldDocImpl.java
index 4e7fe4a..4da1e1b 100644
--- a/src/share/classes/com/sun/tools/javadoc/FieldDocImpl.java
+++ b/src/share/classes/com/sun/tools/javadoc/FieldDocImpl.java
@@ -25,6 +25,8 @@
 
 package com.sun.tools.javadoc;
 
+import java.lang.reflect.Modifier;
+
 import com.sun.javadoc.*;
 
 import static com.sun.javadoc.LanguageVersion.*;
@@ -38,9 +40,6 @@
 
 import com.sun.tools.javac.util.Position;
 
-import java.lang.reflect.Modifier;
-
-
 /**
  * Represents a field in a java class.
  *
@@ -260,7 +259,7 @@
      */
     public SourcePosition position() {
         if (sym.enclClass().sourcefile == null) return null;
-        return SourcePositionImpl.make(sym.enclClass().sourcefile.toString(),
+        return SourcePositionImpl.make(sym.enclClass().sourcefile,
                                        (tree==null) ? 0 : tree.pos,
                                        lineMap);
     }
diff --git a/src/share/classes/com/sun/tools/javadoc/JavadocClassReader.java b/src/share/classes/com/sun/tools/javadoc/JavadocClassReader.java
index 12303e0..dbda143 100644
--- a/src/share/classes/com/sun/tools/javadoc/JavadocClassReader.java
+++ b/src/share/classes/com/sun/tools/javadoc/JavadocClassReader.java
@@ -25,18 +25,13 @@
 
 package com.sun.tools.javadoc;
 
-import com.sun.tools.javac.code.Symbol.PackageSymbol;
-import com.sun.tools.javac.file.JavacFileManager;
-import com.sun.tools.javac.file.ZipArchive.ZipFileObject;
-import com.sun.tools.javac.file.Old199;
-import com.sun.tools.javac.file.ZipFileIndexArchive;
-import com.sun.tools.javac.jvm.ClassReader;
-import com.sun.tools.javac.util.Context;
-
-import java.io.File;
 import java.util.EnumSet;
 import javax.tools.JavaFileObject;
 
+import com.sun.tools.javac.code.Symbol.PackageSymbol;
+import com.sun.tools.javac.jvm.ClassReader;
+import com.sun.tools.javac.util.Context;
+
 /** Javadoc uses an extended class reader that records package.html entries
  *  @author Neal Gafter
  */
@@ -82,32 +77,7 @@
      */
     @Override
     protected void extraFileActions(PackageSymbol pack, JavaFileObject fo) {
-        CharSequence fileName = Old199.getName(fo);
-        if (docenv != null && fileName.equals("package.html")) {
-            if (fo instanceof ZipFileObject) {
-                ZipFileObject zfo = (ZipFileObject) fo;
-                String zipName = zfo.getZipName();
-                String entryName = zfo.getZipEntryName();
-                int lastSep = entryName.lastIndexOf("/");
-                String classPathName = entryName.substring(0, lastSep + 1);
-                docenv.getPackageDoc(pack).setDocPath(zipName, classPathName);
-            }
-            else if (fo instanceof ZipFileIndexArchive.ZipFileIndexFileObject) {
-                ZipFileIndexArchive.ZipFileIndexFileObject zfo = (ZipFileIndexArchive.ZipFileIndexFileObject) fo;
-                String zipName = zfo.getZipName();
-                String entryName = zfo.getZipEntryName();
-                if (File.separatorChar != '/') {
-                    entryName = entryName.replace(File.separatorChar, '/');
-                }
-
-                int lastSep = entryName.lastIndexOf("/");
-                String classPathName = entryName.substring(0, lastSep + 1);
-                docenv.getPackageDoc(pack).setDocPath(zipName, classPathName);
-            }
-            else {
-                File fileDir = new File(Old199.getPath(fo)).getParentFile();
-                docenv.getPackageDoc(pack).setDocPath(fileDir.getAbsolutePath());
-            }
-        }
+        if (fo.isNameCompatible("package", JavaFileObject.Kind.HTML))
+            docenv.getPackageDoc(pack).setDocPath(fo);
     }
 }
diff --git a/src/share/classes/com/sun/tools/javadoc/JavadocTool.java b/src/share/classes/com/sun/tools/javadoc/JavadocTool.java
index 30c4c74..2cb3ab3 100644
--- a/src/share/classes/com/sun/tools/javadoc/JavadocTool.java
+++ b/src/share/classes/com/sun/tools/javadoc/JavadocTool.java
@@ -25,17 +25,29 @@
 
 package com.sun.tools.javadoc;
 
-import java.io.*;
-
+import java.io.File;
+import java.io.IOException;
 import java.util.Collection;
+import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import javax.tools.JavaFileManager.Location;
+import javax.tools.JavaFileObject;
+import javax.tools.StandardJavaFileManager;
+import javax.tools.StandardLocation;
 
-import com.sun.tools.javac.code.Symbol.*;
-import com.sun.tools.javac.comp.*;
-import com.sun.tools.javac.file.Paths;
+import com.sun.tools.javac.code.Symbol.CompletionFailure;
+import com.sun.tools.javac.comp.Annotate;
 import com.sun.tools.javac.parser.DocCommentScanner;
-import com.sun.tools.javac.tree.*;
-import com.sun.tools.javac.tree.JCTree.*;
-import com.sun.tools.javac.util.*;
+import com.sun.tools.javac.tree.JCTree;
+import com.sun.tools.javac.tree.JCTree.JCClassDecl;
+import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
+import com.sun.tools.javac.util.Abort;
+import com.sun.tools.javac.util.Context;
+import com.sun.tools.javac.util.List;
+import com.sun.tools.javac.util.ListBuffer;
+import com.sun.tools.javac.util.Position;
 
 
 /**
@@ -53,7 +65,6 @@
     final JavadocClassReader reader;
     final JavadocEnter enter;
     final Annotate annotate;
-    private final Paths paths;
 
     /**
      * Construct a new JavaCompiler processor, using appropriately
@@ -66,7 +77,6 @@
         reader = JavadocClassReader.instance0(context);
         enter = JavadocEnter.instance0(context);
         annotate = Annotate.instance(context);
-        paths = Paths.instance(context);
     }
 
     /**
@@ -120,7 +130,7 @@
                       boolean quiet) throws IOException {
         docenv = DocEnv.instance(context);
         docenv.showAccess = filter;
-    docenv.quiet = quiet;
+        docenv.quiet = quiet;
         docenv.breakiterator = breakiterator;
         docenv.setLocale(doclocale);
         docenv.setEncoding(encoding);
@@ -133,12 +143,14 @@
         ListBuffer<JCCompilationUnit> packTrees = new ListBuffer<JCCompilationUnit>();
 
         try {
+            StandardJavaFileManager fm = (StandardJavaFileManager) docenv.fileManager;
             for (List<String> it = javaNames; it.nonEmpty(); it = it.tail) {
                 String name = it.head;
                 if (!docClasses && name.endsWith(".java") && new File(name).exists()) {
+                    JavaFileObject fo = fm.getJavaFileObjects(name).iterator().next();
                     docenv.notice("main.Loading_source_file", name);
-                        JCCompilationUnit tree = parse(name);
-                        classTrees.append(tree);
+                    JCCompilationUnit tree = parse(fo);
+                    classTrees.append(tree);
                 } else if (isValidPackageName(name)) {
                     names = names.append(name);
                 } else if (name.endsWith(".java")) {
@@ -151,12 +163,14 @@
             if (!docClasses) {
                 // Recursively search given subpackages.  If any packages
                 //are found, add them to the list.
-                searchSubPackages(subPackages, names, excludedPackages);
+                Map<String,List<JavaFileObject>> packageFiles =
+                        searchSubPackages(subPackages, names, excludedPackages);
 
                 // Parse the packages
                 for (List<String> packs = names.toList(); packs.nonEmpty(); packs = packs.tail) {
                     // Parse sources ostensibly belonging to package.
-                    parsePackageClasses(packs.head, packTrees, excludedPackages);
+                    String packageName = packs.head;
+                    parsePackageClasses(packageName, packageFiles.get(packageName), packTrees, excludedPackages);
                 }
 
                 if (messager.nerrors() != 0) return null;
@@ -167,7 +181,8 @@
             }
         } catch (Abort ex) {}
 
-        if (messager.nerrors() != 0) return null;
+        if (messager.nerrors() != 0)
+            return null;
 
         if (docClasses)
             return new RootDocImpl(docenv, javaNames, options);
@@ -185,66 +200,129 @@
         return isValidClassName(s);
     }
 
-
-    private final static char pathSep = File.pathSeparatorChar;
-
     /**
      * search all directories in path for subdirectory name. Add all
      * .java files found in such a directory to args.
      */
     private void parsePackageClasses(String name,
-                                     ListBuffer<JCCompilationUnit> trees,
-                                     List<String> excludedPackages)
-        throws IOException {
+            Iterable<JavaFileObject> files,
+            ListBuffer<JCCompilationUnit> trees,
+            List<String> excludedPackages)
+            throws IOException {
         if (excludedPackages.contains(name)) {
             return;
         }
+
         boolean hasFiles = false;
         docenv.notice("main.Loading_source_files_for_package", name);
-        name = name.replace('.', File.separatorChar);
-        for (File pathname : paths.sourceSearchPath()) {
-            File f = new File(pathname, name);
-            String names[] = f.list();
-            // if names not null, then found directory with source files
-            if (names != null) {
-                String dir = f.getAbsolutePath();
-                if (!dir.endsWith(File.separator))
-                    dir = dir + File.separator;
-                for (int j = 0; j < names.length; j++) {
-                    if (isValidJavaSourceFile(names[j])) {
-                        String fn = dir + names[j];
-                        // messager.notice("main.Loading_source_file", fn);
-                            trees.append(parse(fn));
-                        hasFiles = true;
-                    }
+
+        if (files == null) {
+            Location location = docenv.fileManager.hasLocation(StandardLocation.SOURCE_PATH)
+                    ? StandardLocation.SOURCE_PATH : StandardLocation.CLASS_PATH;
+            ListBuffer<JavaFileObject> lb = new ListBuffer<JavaFileObject>();
+            for (JavaFileObject fo: docenv.fileManager.list(
+                    location, name, EnumSet.of(JavaFileObject.Kind.SOURCE), false)) {
+                String binaryName = docenv.fileManager.inferBinaryName(location, fo);
+                String simpleName = getSimpleName(binaryName);
+                if (isValidClassName(simpleName)) {
+                    lb.append(fo);
                 }
             }
+            files = lb.toList();
         }
-        if (!hasFiles)
+
+        for (JavaFileObject fo : files) {
+            // messager.notice("main.Loading_source_file", fn);
+            trees.append(parse(fo));
+            hasFiles = true;
+        }
+
+        if (!hasFiles) {
             messager.warning(null, "main.no_source_files_for_package",
-                             name.replace(File.separatorChar, '.'));
+                    name.replace(File.separatorChar, '.'));
+        }
     }
 
     /**
      * Recursively search all directories in path for subdirectory name.
      * Add all packages found in such a directory to packages list.
      */
-    private void searchSubPackages(List<String> subPackages,
-                                   ListBuffer<String> packages,
-                                   List<String> excludedPackages) {
-        // FIXME: This search path is bogus.
-        // Only the effective source path should be searched for sources.
-        // Only the effective class path should be searched for classes.
-        // Should the bootclasspath/extdirs also be searched for classes?
-        java.util.List<File> pathnames = new java.util.ArrayList<File>();
-        if (paths.sourcePath() != null)
-            for (File elt : paths.sourcePath())
-                pathnames.add(elt);
-        for (File elt : paths.userClassPath())
-            pathnames.add(elt);
+    private Map<String,List<JavaFileObject>> searchSubPackages(
+            List<String> subPackages,
+            ListBuffer<String> packages,
+            List<String> excludedPackages)
+            throws IOException {
+        Map<String,List<JavaFileObject>> packageFiles =
+                new HashMap<String,List<JavaFileObject>>();
 
-        for (String subPackage : subPackages)
-            searchSubPackage(subPackage, packages, excludedPackages, pathnames);
+        Map<String,Boolean> includedPackages = new HashMap<String,Boolean>();
+        includedPackages.put("", true);
+        for (String p: excludedPackages)
+            includedPackages.put(p, false);
+
+        if (docenv.fileManager.hasLocation(StandardLocation.SOURCE_PATH)) {
+            searchSubPackages(subPackages,
+                    includedPackages,
+                    packages, packageFiles,
+                    StandardLocation.SOURCE_PATH,
+                    EnumSet.of(JavaFileObject.Kind.SOURCE));
+            searchSubPackages(subPackages,
+                    includedPackages,
+                    packages, packageFiles,
+                    StandardLocation.CLASS_PATH,
+                    EnumSet.of(JavaFileObject.Kind.CLASS));
+        } else {
+            searchSubPackages(subPackages,
+                    includedPackages,
+                    packages, packageFiles,
+                    StandardLocation.CLASS_PATH,
+                    EnumSet.of(JavaFileObject.Kind.SOURCE, JavaFileObject.Kind.CLASS));
+        }
+        return packageFiles;
+    }
+
+    private void searchSubPackages(List<String> subPackages,
+            Map<String,Boolean> includedPackages,
+            ListBuffer<String> packages,
+            Map<String, List<JavaFileObject>> packageFiles,
+            StandardLocation location, Set<JavaFileObject.Kind> kinds)
+            throws IOException {
+        for (String subPackage: subPackages) {
+            if (!isIncluded(subPackage, includedPackages))
+                continue;
+
+            for (JavaFileObject fo: docenv.fileManager.list(location, subPackage, kinds, true)) {
+                String binaryName = docenv.fileManager.inferBinaryName(location, fo);
+                String packageName = getPackageName(binaryName);
+                String simpleName = getSimpleName(binaryName);
+                if (isIncluded(packageName, includedPackages) && isValidClassName(simpleName)) {
+                    List<JavaFileObject> list = packageFiles.get(packageName);
+                    list = (list == null ? List.of(fo) : list.prepend(fo));
+                    packageFiles.put(packageName, list);
+                    if (!packages.contains(packageName))
+                        packages.add(packageName);
+                }
+            }
+        }
+    }
+
+    private String getPackageName(String name) {
+        int lastDot = name.lastIndexOf(".");
+        return (lastDot == -1 ? "" : name.substring(0, lastDot));
+    }
+
+    private String getSimpleName(String name) {
+        int lastDot = name.lastIndexOf(".");
+        return (lastDot == -1 ? name : name.substring(lastDot + 1));
+    }
+
+    private boolean isIncluded(String packageName, Map<String,Boolean> includedPackages) {
+        Boolean b = includedPackages.get(packageName);
+        if (b == null) {
+            b = isIncluded(getPackageName(packageName), includedPackages);
+            includedPackages.put(packageName, b);
+        }
+        return b;
     }
 
     /**
diff --git a/src/share/classes/com/sun/tools/javadoc/Messager.java b/src/share/classes/com/sun/tools/javadoc/Messager.java
index 1933862..4419fc2 100644
--- a/src/share/classes/com/sun/tools/javadoc/Messager.java
+++ b/src/share/classes/com/sun/tools/javadoc/Messager.java
@@ -111,6 +111,7 @@
      * @param warnWriter   Stream for warnings
      * @param noticeWriter Stream for other messages
      */
+    @SuppressWarnings("deprecation")
     protected Messager(Context context,
                        String programName,
                        PrintWriter errWriter,
diff --git a/src/share/classes/com/sun/tools/javadoc/PackageDocImpl.java b/src/share/classes/com/sun/tools/javadoc/PackageDocImpl.java
index 426123e..97e1b09 100644
--- a/src/share/classes/com/sun/tools/javadoc/PackageDocImpl.java
+++ b/src/share/classes/com/sun/tools/javadoc/PackageDocImpl.java
@@ -25,30 +25,23 @@
 
 package com.sun.tools.javadoc;
 
-import com.sun.javadoc.*;
-
-import java.io.File;
 import java.io.InputStream;
-import java.io.FileInputStream;
 import java.io.IOException;
-import java.util.zip.ZipFile;
-import java.util.zip.ZipEntry;
+import javax.tools.FileObject;
+
+import com.sun.javadoc.*;
 
 import com.sun.tools.javac.code.Attribute;
 import com.sun.tools.javac.code.Scope;
 import com.sun.tools.javac.code.Symbol.ClassSymbol;
 import com.sun.tools.javac.code.Symbol.PackageSymbol;
-import com.sun.tools.javac.comp.AttrContext;
-import com.sun.tools.javac.comp.Env;
 import com.sun.tools.javac.tree.JCTree;
+import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
 import com.sun.tools.javac.util.List;
 import com.sun.tools.javac.util.ListBuffer;
 import com.sun.tools.javac.util.Name;
 import com.sun.tools.javac.util.Position;
 
-import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
-
-
 /**
  * Represents a java package.  Provides access to information
  * about the package, the package's comment and tags, and the
@@ -63,14 +56,10 @@
 
 public class PackageDocImpl extends DocImpl implements PackageDoc {
 
-    private static final String PACKAGE_HTML_FILE_NAME = "package.html";
-
     protected PackageSymbol sym;
     private JCCompilationUnit tree = null;    // for source position
 
-    public String docPath = null;
-    public String zipDocPath = null;
-    public String zipDocEntry = null;
+    public FileObject docPath = null;
     private boolean foundDoc;   // found a doc comment in either
                                 // package.html or package-info.java
 
@@ -108,30 +97,16 @@
      * Do lazy initialization of "documentation" string.
      */
     String documentation() {
-        if (documentation != null) return documentation;
-        if (zipDocPath != null) {
-            try {
-                ZipFile f = new ZipFile(zipDocPath);
-                ZipEntry entry = f.getEntry(zipDocEntry);
-                if (entry != null) {
-                    InputStream s = f.getInputStream(entry);
-                    return (documentation = readHTMLDocumentation(s,
-                        zipDocPath + File.separatorChar + zipDocEntry));
-                }
-            } catch (IOException exc) {
-                documentation = "";
-                env.error(null, "javadoc.File_Read_Error",
-                          zipDocPath + File.separatorChar + zipDocEntry);
-            }
-        }
+        if (documentation != null)
+            return documentation;
         if (docPath != null) {
             // read from file
             try {
-                InputStream s = new FileInputStream(docPath);
+                InputStream s = docPath.openInputStream();
                 documentation = readHTMLDocumentation(s, docPath);
             } catch (IOException exc) {
                 documentation = "";
-                env.error(null, "javadoc.File_Read_Error", docPath);
+                env.error(null, "javadoc.File_Read_Error", docPath.getName());
             }
         } else {
             // no doc file to be had
@@ -363,24 +338,12 @@
     /**
      * set doc path for an unzipped directory
      */
-    public void setDocPath(String path) {
+    public void setDocPath(FileObject path) {
         setDocPath = true;
         if (path == null)
             return;
-        String newDocPath = path + File.separatorChar + PACKAGE_HTML_FILE_NAME;
-        if (!newDocPath.equals(docPath)) {
-            docPath = newDocPath;
-            checkDoc();
-        }
-    }
-
-    /**
-     * set the doc path for zipped directory
-     */
-    public void setDocPath(String path, String entry) {
-        if (!path.equals(zipDocPath)) {
-            zipDocPath = path;
-            zipDocEntry = entry + PACKAGE_HTML_FILE_NAME;
+        if (!path.equals(docPath)) {
+            docPath = path;
             checkDoc();
         }
     }
@@ -409,7 +372,7 @@
      */
     public SourcePosition position() {
         return (tree != null)
-                ? SourcePositionImpl.make(tree.sourcefile + "", tree.pos, tree.lineMap)
+                ? SourcePositionImpl.make(tree.sourcefile, tree.pos, tree.lineMap)
                 : SourcePositionImpl.make(docPath, Position.NOPOS, null);
     }
 }
diff --git a/src/share/classes/com/sun/tools/javadoc/RootDocImpl.java b/src/share/classes/com/sun/tools/javadoc/RootDocImpl.java
index 8595151..e39f0b3 100644
--- a/src/share/classes/com/sun/tools/javadoc/RootDocImpl.java
+++ b/src/share/classes/com/sun/tools/javadoc/RootDocImpl.java
@@ -26,13 +26,13 @@
 package com.sun.tools.javadoc;
 
 import java.io.IOException;
-import java.io.FileInputStream;
-import java.io.File;
+import java.util.Locale;
+import javax.tools.JavaFileObject;
+import javax.tools.StandardJavaFileManager;
 
 import com.sun.javadoc.*;
 
 import com.sun.tools.javac.tree.JCTree.JCClassDecl;
-import com.sun.tools.javac.code.Symbol;
 import com.sun.tools.javac.util.List;
 import com.sun.tools.javac.util.ListBuffer;
 import com.sun.tools.javac.util.Position;
@@ -307,10 +307,13 @@
      * Return the path of the overview file and null if it does not exist.
      * @return the path of the overview file and null if it does not exist.
      */
-    private String getOverviewPath() {
+    private JavaFileObject getOverviewPath() {
         for (String[] opt : options) {
             if (opt[0].equals("-overview")) {
-                return opt[1];
+                if (env.fileManager instanceof StandardJavaFileManager) {
+                    StandardJavaFileManager fm = (StandardJavaFileManager) env.fileManager;
+                    return fm.getJavaFileObjects(opt[1]).iterator().next();
+                }
             }
         }
         return null;
@@ -322,7 +325,7 @@
     protected String documentation() {
         if (documentation == null) {
             int cnt = options.length();
-            String overviewPath = getOverviewPath();
+            JavaFileObject overviewPath = getOverviewPath();
             if (overviewPath == null) {
                 // no doc file to be had
                 documentation = "";
@@ -330,11 +333,11 @@
                 // read from file
                 try {
                     documentation = readHTMLDocumentation(
-                        new FileInputStream(overviewPath),
+                        overviewPath.openInputStream(),
                         overviewPath);
                 } catch (IOException exc) {
                     documentation = "";
-                    env.error(null, "javadoc.File_Read_Error", overviewPath);
+                    env.error(null, "javadoc.File_Read_Error", overviewPath.getName());
                 }
             }
         }
@@ -346,9 +349,16 @@
      * no position is available.
      */
     public SourcePosition position() {
-        String path;
+        JavaFileObject path;
         return ((path = getOverviewPath()) == null) ?
             null :
             SourcePositionImpl.make(path, Position.NOPOS, null);
     }
+
+    /**
+     * Return the locale provided by the user or the default locale value.
+     */
+    public Locale getLocale() {
+        return env.doclocale.locale;
+    }
 }
diff --git a/src/share/classes/com/sun/tools/javadoc/SourcePositionImpl.java b/src/share/classes/com/sun/tools/javadoc/SourcePositionImpl.java
index 2225dd5..0e666b8 100644
--- a/src/share/classes/com/sun/tools/javadoc/SourcePositionImpl.java
+++ b/src/share/classes/com/sun/tools/javadoc/SourcePositionImpl.java
@@ -25,11 +25,12 @@
 
 package com.sun.tools.javadoc;
 
+import java.io.File;
+import javax.tools.FileObject;
+
 import com.sun.javadoc.SourcePosition;
 import com.sun.tools.javac.util.Position;
 
-import java.io.File;
-
 /**
  * A source position: filename, line number, and column number.
  *
@@ -37,15 +38,21 @@
  * @author Neal M Gafter
  * @author Michael Van De Vanter (position representation changed to char offsets)
  */
-class SourcePositionImpl implements SourcePosition {
-    String filename;
+public class SourcePositionImpl implements SourcePosition {
+    FileObject filename;
     int position;
     Position.LineMap lineMap;
 
     /** The source file. Returns null if no file information is
      *  available. */
     public File file() {
-        return (filename == null) ? null : new File(filename);
+        return (filename == null) ? null : new File(filename.getName());
+    }
+
+    /** The source file. Returns null if no file information is
+     *  available. */
+    public FileObject fileObject() {
+        return filename;
     }
 
     /** The line in the source file. The first line is numbered 1;
@@ -71,7 +78,7 @@
         }
     }
 
-    private SourcePositionImpl(String file, int position,
+    private SourcePositionImpl(FileObject file, int position,
                                Position.LineMap lineMap) {
         super();
         this.filename = file;
@@ -79,16 +86,27 @@
         this.lineMap = lineMap;
     }
 
-    public static SourcePosition make(String file, int pos,
+    public static SourcePosition make(FileObject file, int pos,
                                       Position.LineMap lineMap) {
         if (file == null) return null;
         return new SourcePositionImpl(file, pos, lineMap);
     }
 
     public String toString() {
+        // Backwards compatibility hack. ZipFileObjects use the format
+        // zipfile(zipentry) but javadoc has been using zipfile/zipentry
+        String fn = filename.toString();
+        if (fn.endsWith(")")) {
+            int paren = fn.lastIndexOf("(");
+            if (paren != -1)
+                fn = fn.substring(0, paren)
+                        + File.separatorChar
+                        + fn.substring(paren + 1, fn.length() - 1);
+        }
+
         if (position == Position.NOPOS)
-            return filename;
+            return fn;
         else
-            return filename + ":" + line();
+            return fn + ":" + line();
     }
 }
diff --git a/src/share/classes/com/sun/tools/javadoc/TypeMaker.java b/src/share/classes/com/sun/tools/javadoc/TypeMaker.java
index 9e1a00e..ec1bb1e 100644
--- a/src/share/classes/com/sun/tools/javadoc/TypeMaker.java
+++ b/src/share/classes/com/sun/tools/javadoc/TypeMaker.java
@@ -51,6 +51,7 @@
      * @param errToClassDoc  if true, ERROR type results in a ClassDoc;
      *          false preserves legacy behavior
      */
+    @SuppressWarnings("fallthrough")
     public static com.sun.javadoc.Type getType(DocEnv env, Type t,
                                                boolean errToClassDoc) {
         if (env.legacyDoclet) {
diff --git a/src/share/classes/com/sun/tools/javah/Gen.java b/src/share/classes/com/sun/tools/javah/Gen.java
index 3ab6f96..1f0bb5e 100644
--- a/src/share/classes/com/sun/tools/javah/Gen.java
+++ b/src/share/classes/com/sun/tools/javah/Gen.java
@@ -342,6 +342,6 @@
             fields.addAll(Arrays.asList(cd.fields()));
         }
 
-        return (FieldDoc[]) fields.toArray(new FieldDoc[fields.size()]);
+        return fields.toArray(new FieldDoc[fields.size()]);
     }
 }
diff --git a/src/share/classes/com/sun/tools/javap/InternalError.java b/src/share/classes/com/sun/tools/javap/InternalError.java
index 5397e7d..cc3903e 100644
--- a/src/share/classes/com/sun/tools/javap/InternalError.java
+++ b/src/share/classes/com/sun/tools/javap/InternalError.java
@@ -32,6 +32,7 @@
  *  deletion without notice.</b>
  */
 public class InternalError extends Error {
+    private static final long serialVersionUID = 8114054446416187030L;
     InternalError(Throwable t, Object... args) {
         super("Internal error", t);
         this.args = args;
diff --git a/src/share/classes/javax/lang/model/type/MirroredTypeException.java b/src/share/classes/javax/lang/model/type/MirroredTypeException.java
index bf5904b..db729c5 100644
--- a/src/share/classes/javax/lang/model/type/MirroredTypeException.java
+++ b/src/share/classes/javax/lang/model/type/MirroredTypeException.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2005-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,8 @@
 
 package javax.lang.model.type;
 
-
+import java.io.ObjectInputStream;
+import java.io.IOException;
 import java.lang.annotation.Annotation;
 import javax.lang.model.element.Element;
 
@@ -67,4 +68,13 @@
     public TypeMirror getTypeMirror() {
         return type;
     }
+
+    /**
+     * Explicitly set all transient fields.
+     */
+    private void readObject(ObjectInputStream s)
+        throws IOException, ClassNotFoundException {
+        s.defaultReadObject();
+        type = null;
+    }
 }
diff --git a/src/share/classes/javax/lang/model/type/MirroredTypesException.java b/src/share/classes/javax/lang/model/type/MirroredTypesException.java
index 4ed0383..54efe41 100644
--- a/src/share/classes/javax/lang/model/type/MirroredTypesException.java
+++ b/src/share/classes/javax/lang/model/type/MirroredTypesException.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2005-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,12 +25,12 @@
 
 package javax.lang.model.type;
 
-
 import java.lang.annotation.Annotation;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Collections;
-
+import java.io.ObjectInputStream;
+import java.io.IOException;
 import javax.lang.model.element.Element;
 
 
@@ -49,8 +49,7 @@
 
     private static final long serialVersionUID = 269;
 
-    // Should this be non-final for a custum readObject method?
-    private final transient List<? extends TypeMirror> types;   // cannot be serialized
+    private transient List<? extends TypeMirror> types; // cannot be serialized
 
     /**
      * Constructs a new MirroredTypesException for the specified types.
@@ -58,7 +57,9 @@
      * @param types  the types being accessed
      */
     public MirroredTypesException(List<? extends TypeMirror> types) {
-        super("Attempt to access Class objects for TypeMirrors " + types);
+        super("Attempt to access Class objects for TypeMirrors " +
+              (types = // defensive copy
+               new ArrayList<TypeMirror>(types)).toString() );
         this.types = Collections.unmodifiableList(types);
     }
 
@@ -72,4 +73,13 @@
     public List<? extends TypeMirror> getTypeMirrors() {
         return types;
     }
+
+    /**
+     * Explicitly set all transient fields.
+     */
+    private void readObject(ObjectInputStream s)
+        throws IOException, ClassNotFoundException {
+        s.defaultReadObject();
+        types = null;
+    }
 }
diff --git a/src/share/classes/sun/tools/javap/JavapPrinter.java b/src/share/classes/sun/tools/javap/JavapPrinter.java
index a587ddc..af5978a 100644
--- a/src/share/classes/sun/tools/javap/JavapPrinter.java
+++ b/src/share/classes/sun/tools/javap/JavapPrinter.java
@@ -719,6 +719,7 @@
     /**
      * Print constant pool entry information.
      */
+    @SuppressWarnings("fallthrough")
     public int PrintlnConstantEntry(int cpx) {
         int size=1;
         byte tag=0;
@@ -757,6 +758,7 @@
         case CONSTANT_LONG:
         case CONSTANT_DOUBLE:
             size=2;
+            // fall through
         default:
             out.println(str+";");
         }
diff --git a/test/com/sun/javadoc/testHtmlTag/TestHtmlTag.java b/test/com/sun/javadoc/testHtmlTag/TestHtmlTag.java
new file mode 100644
index 0000000..4588d07
--- /dev/null
+++ b/test/com/sun/javadoc/testHtmlTag/TestHtmlTag.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6786682
+ * @summary This test verifies the use of lang attribute by <HTML>.
+ * @author Bhavesh Patel
+ * @library ../lib/
+ * @build JavadocTester
+ * @build TestHtmlTag
+ * @run main TestHtmlTag
+ */
+
+import java.util.Locale;
+
+public class TestHtmlTag extends JavadocTester {
+
+    private static final String BUG_ID = "6786682";
+    private static final String[][] TEST1 = {
+        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<HTML lang=\"" + Locale.getDefault().getLanguage() + "\">"},
+        {BUG_ID + FS + "pkg1" + FS + "package-summary.html", "<HTML lang=\"" + Locale.getDefault().getLanguage() + "\">"}};
+    private static final String[][] NEGATED_TEST1 = {
+        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<HTML>"}};
+    private static final String[][] TEST2 = {
+        {BUG_ID + FS + "pkg2" + FS + "C2.html", "<HTML lang=\"ja\">"},
+        {BUG_ID + FS + "pkg2" + FS + "package-summary.html", "<HTML lang=\"ja\">"}};
+    private static final String[][] NEGATED_TEST2 = {
+        {BUG_ID + FS + "pkg2" + FS + "C2.html", "<HTML>"}};
+    private static final String[][] TEST3 = {
+        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<HTML lang=\"en\">"},
+        {BUG_ID + FS + "pkg1" + FS + "package-summary.html", "<HTML lang=\"en\">"}};
+    private static final String[][] NEGATED_TEST3 = {
+        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<HTML>"}};
+
+    private static final String[] ARGS1 =
+        new String[] {
+            "-d", BUG_ID, "-sourcepath", SRC_DIR, "pkg1"};
+    private static final String[] ARGS2 =
+        new String[] {
+            "-locale", "ja", "-d", BUG_ID, "-sourcepath", SRC_DIR, "pkg2"};
+    private static final String[] ARGS3 =
+        new String[] {
+            "-locale", "en_US", "-d", BUG_ID, "-sourcepath", SRC_DIR, "pkg1"};
+
+    /**
+     * The entry point of the test.
+     * @param args the array of command line arguments.
+     */
+    public static void main(String[] args) {
+        TestHtmlTag tester = new TestHtmlTag();
+        run(tester, ARGS1, TEST1, NEGATED_TEST1);
+        run(tester, ARGS2, TEST2, NEGATED_TEST2);
+        run(tester, ARGS3, TEST3, NEGATED_TEST3);
+        tester.printSummary();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public String getBugId() {
+        return BUG_ID;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public String getBugName() {
+        return getClass().getName();
+    }
+}
diff --git a/test/com/sun/javadoc/testHtmlTag/pkg1/C1.java b/test/com/sun/javadoc/testHtmlTag/pkg1/C1.java
new file mode 100644
index 0000000..5fb4bc8
--- /dev/null
+++ b/test/com/sun/javadoc/testHtmlTag/pkg1/C1.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package pkg1;
+
+public class C1 {
+
+    public void method(int param1, int param2) {
+
+    }
+}
diff --git a/test/com/sun/javadoc/testHtmlTag/pkg2/C2.java b/test/com/sun/javadoc/testHtmlTag/pkg2/C2.java
new file mode 100644
index 0000000..2bd9d32
--- /dev/null
+++ b/test/com/sun/javadoc/testHtmlTag/pkg2/C2.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package pkg2;
+
+/**
+ * <B>Comments:</B> Class 2
+ */
+public class C2 {}
diff --git a/test/tools/javac/T6794959.java b/test/tools/javac/T6794959.java
new file mode 100644
index 0000000..d2ca623
--- /dev/null
+++ b/test/tools/javac/T6794959.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6794959
+ * @summary add new switch -XDexpectKeys=key,key,...
+ * @compile T6794959.java
+ * @compile/fail -XDfailcomplete=java.lang.String T6794959.java
+ * @compile -XDfailcomplete=java.lang.String -XDexpectKeys=compiler.err.cant.resolve.location T6794959.java
+ * @compile/fail -XDexpectKeys=compiler.err.cant.resolve.location T6794959.java
+ */
+
+class T6794959 {
+    String s;
+}
diff --git a/test/tools/javac/cast/6795580/T6795580.java b/test/tools/javac/cast/6795580/T6795580.java
new file mode 100644
index 0000000..9539e32
--- /dev/null
+++ b/test/tools/javac/cast/6795580/T6795580.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @author Maurizio Cimadamore
+ * @bug     6795580
+ * @summary parser confused by square brackets in qualified generic cast
+ * @compile/fail/ref=T6795580.out -XDrawDiagnostics T6795580.java
+ */
+
+class T6795580 {
+    class Outer<S> {
+        class Inner<T> {}
+    }
+
+    void cast1(Outer<Integer>.Inner<Long>[] p) {
+        Object o = (Outer<Integer>.Inner<Long>[])p;
+    }
+
+    void cast2(Outer<Integer>.Inner<Long>[] p) {
+        Object o = (Outer<? extends Number>.Inner<Long>[])p;
+    }
+
+    void cast3(Outer<Integer>.Inner<Long>[] p) {
+        Object o = (Outer<Integer>.Inner<? extends Number>[])p;
+    }
+
+    void cast4(Outer<Integer>.Inner<Long>[] p) {
+        Object o = (Outer<? extends Number>.Inner<? extends Number>[])p;
+    }
+
+    void cast5(Outer<Integer>.Inner<Long>[] p) {
+        Object o = (Outer<? super Number>.Inner<Long>[])p;
+    }
+
+    void cast6(Outer<Integer>.Inner<Long>[] p) {
+        Object o = (Outer<Integer>.Inner<? super Number>[])p;
+    }
+
+    void cast7(Outer<Integer>.Inner<Long>[] p) {
+        Object o = (Outer<? super Number>.Inner<? super Number>[])p;
+    }
+
+    void cast8(Outer<Integer>.Inner<Long>[] p) {
+        Object o = (Outer<? extends String>.Inner<Long>[])p;
+    }
+
+    void cast9(Outer<Integer>.Inner<Long>[] p) {
+        Object o = (Outer<Integer>.Inner<? extends String>[])p;
+    }
+
+    void cast10(Outer<Integer>.Inner<Long>[] p) {
+        Object o = (Outer<? super String>.Inner<Long>[])p;
+    }
+
+    void cast11(Outer<Integer>.Inner<Long>[] p) {
+        Object o = (Outer<Integer>.Inner<? super String>[])p;
+    }
+}
\ No newline at end of file
diff --git a/test/tools/javac/cast/6795580/T6795580.out b/test/tools/javac/cast/6795580/T6795580.out
new file mode 100644
index 0000000..f754e1d
--- /dev/null
+++ b/test/tools/javac/cast/6795580/T6795580.out
@@ -0,0 +1,8 @@
+T6795580.java:54:57: compiler.err.prob.found.req: (- compiler.misc.inconvertible.types), T6795580.Outer<java.lang.Integer>.Inner<java.lang.Long>[], T6795580.Outer<? super java.lang.Number>.Inner<java.lang.Long>[]
+T6795580.java:58:60: compiler.err.prob.found.req: (- compiler.misc.inconvertible.types), T6795580.Outer<java.lang.Integer>.Inner<java.lang.Long>[], T6795580.Outer<java.lang.Integer>.Inner<? super java.lang.Number>[]
+T6795580.java:62:67: compiler.err.prob.found.req: (- compiler.misc.inconvertible.types), T6795580.Outer<java.lang.Integer>.Inner<java.lang.Long>[], T6795580.Outer<? super java.lang.Number>.Inner<? super java.lang.Number>[]
+T6795580.java:66:59: compiler.err.prob.found.req: (- compiler.misc.inconvertible.types), T6795580.Outer<java.lang.Integer>.Inner<java.lang.Long>[], T6795580.Outer<? extends java.lang.String>.Inner<java.lang.Long>[]
+T6795580.java:70:62: compiler.err.prob.found.req: (- compiler.misc.inconvertible.types), T6795580.Outer<java.lang.Integer>.Inner<java.lang.Long>[], T6795580.Outer<java.lang.Integer>.Inner<? extends java.lang.String>[]
+T6795580.java:74:57: compiler.err.prob.found.req: (- compiler.misc.inconvertible.types), T6795580.Outer<java.lang.Integer>.Inner<java.lang.Long>[], T6795580.Outer<? super java.lang.String>.Inner<java.lang.Long>[]
+T6795580.java:78:60: compiler.err.prob.found.req: (- compiler.misc.inconvertible.types), T6795580.Outer<java.lang.Integer>.Inner<java.lang.Long>[], T6795580.Outer<java.lang.Integer>.Inner<? super java.lang.String>[]
+7 errors