Merge
diff --git a/.hgtags-top-repo b/.hgtags-top-repo
index 0b2aaca..2fd08b1 100644
--- a/.hgtags-top-repo
+++ b/.hgtags-top-repo
@@ -321,3 +321,4 @@
 d82072b699b880a1f647a5e2d7c0f86cec958941 jdk9-b76
 7972dc8f2a47f0c4cd8f02fa5662af41f028aa14 jdk9-b77
 8c40d4143ee13bdf8170c68cc384c36ab1e9fadb jdk9-b78
+ba08a9f79b9849716bae1f39f71333d47f604012 jdk9-b79
diff --git a/corba/.hgtags b/corba/.hgtags
index 543479a..570770f 100644
--- a/corba/.hgtags
+++ b/corba/.hgtags
@@ -321,3 +321,4 @@
 d8126bc88fa5cd1ae4e44d86a4b1280ca1c9e2aa jdk9-b76
 8bb2441c0fec8b28f7bf11a0ca3ec1642e7ef457 jdk9-b77
 182bb7accc5253bcfefd8edc1d4997ec8f9f8694 jdk9-b78
+4ab250b8fac66ef8cd15ee78c40f0c651c96e16a jdk9-b79
diff --git a/hotspot/.hgtags b/hotspot/.hgtags
index ef5c8be..c5909fb 100644
--- a/hotspot/.hgtags
+++ b/hotspot/.hgtags
@@ -481,3 +481,4 @@
 0bc8d1656d6f2b1fdfe803c1305a108bb9939f35 jdk9-b76
 e66c3813789debfc06f206afde1bf7a84cb08451 jdk9-b77
 20dc06b04fe5ec373879414d60ef82ac70faef98 jdk9-b78
+e9e63d93bbfe2c6c23447e2c1f5cc71c98671cba jdk9-b79
diff --git a/jaxp/.hgtags b/jaxp/.hgtags
index de30885..81b5b6e 100644
--- a/jaxp/.hgtags
+++ b/jaxp/.hgtags
@@ -321,3 +321,4 @@
 36801a89a04201b59874ec776ffe85d6253c9ab5 jdk9-b76
 be357705874c4ba1a69c38fb211e5e31e35bf9cb jdk9-b77
 5b1899c9822db4a80a29cac82af492afea9f8f41 jdk9-b78
+cf809edc840ff7546677d38b13ebd8b3cae2bbda jdk9-b79
diff --git a/jaxp/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/dom/MultiDOM.java b/jaxp/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/dom/MultiDOM.java
index 539a5bf..f933ecf 100644
--- a/jaxp/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/dom/MultiDOM.java
+++ b/jaxp/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/dom/MultiDOM.java
@@ -1,15 +1,15 @@
 /*
- * reserved comment block
- * DO NOT REMOVE OR ALTER!
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
  */
+
 /*
- * Copyright 2001-2004 The Apache Software Foundation.
+ * Copyright 2005 The Apache Software Foundation.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.apache.org/licenses/LICENSE-2.0
+ *      http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -17,9 +17,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-/*
- * $Id: MultiDOM.java,v 1.5 2005/09/28 13:48:36 pvedula Exp $
- */
 
 package com.sun.org.apache.xalan.internal.xsltc.dom;
 
@@ -35,6 +32,7 @@
 import com.sun.org.apache.xml.internal.dtm.DTMManager;
 import com.sun.org.apache.xml.internal.dtm.ref.DTMAxisIteratorBase;
 import com.sun.org.apache.xml.internal.dtm.ref.DTMDefaultBase;
+import com.sun.org.apache.xml.internal.dtm.ref.DTMAxisIterNodeList;
 import com.sun.org.apache.xml.internal.utils.SuballocatedIntVector;
 
 import org.w3c.dom.Node;
@@ -569,7 +567,7 @@
     public NodeList makeNodeList(DTMAxisIterator iter) {
         int index = iter.next();
         if (index == DTM.NULL) {
-            return null;
+            return new DTMAxisIterNodeList(null, null);
         }
         iter.reset();
         return _adapters[getDTMId(index)].makeNodeList(iter);
diff --git a/jaxws/.hgtags b/jaxws/.hgtags
index 912a3f8..4f9d339 100644
--- a/jaxws/.hgtags
+++ b/jaxws/.hgtags
@@ -324,3 +324,4 @@
 55bb88306dc57d07f2c854803465f6d9a7eb4aba jdk9-b76
 bd6ece68cf8aca34c8d992569892060c82cfd3f1 jdk9-b77
 ac1748bab0743137574be3451307b6a6361719eb jdk9-b78
+42ae657e0e104fa7877996b8095f2e3ab1596118 jdk9-b79
diff --git a/jdk/.hgtags b/jdk/.hgtags
index cd552d7..7ca85be 100644
--- a/jdk/.hgtags
+++ b/jdk/.hgtags
@@ -321,3 +321,4 @@
 4526c0da8fb362eebd7e88f4d44e86858cf9b80b jdk9-b76
 7fd081100f48828431e7c1bff65c906ee759069b jdk9-b77
 0940ce86c614458f5bdd72278b190abbf36b7b45 jdk9-b78
+d99c2ffdd0f15753e69126583688f2f075a0a5e8 jdk9-b79
diff --git a/jdk/make/launcher/Launcher-java.base.gmk b/jdk/make/launcher/Launcher-java.base.gmk
index b0defc6..c5afd56 100644
--- a/jdk/make/launcher/Launcher-java.base.gmk
+++ b/jdk/make/launcher/Launcher-java.base.gmk
@@ -31,7 +31,7 @@
 # into another dir and copy selectively so debuginfo for java.dll isn't
 # overwritten.
 $(eval $(call SetupLauncher,java, \
-    -DEXPAND_CLASSPATH_WILDCARDS,,,user32.lib comctl32.lib, \
+    -DEXPAND_CLASSPATH_WILDCARDS -DENABLE_ARG_FILES,,,user32.lib comctl32.lib, \
     $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/jli_static.lib, $(JAVA_RC_FLAGS), \
     $(JAVA_VERSION_INFO_RESOURCE), $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/java_objs,true))
 
@@ -44,7 +44,7 @@
 
 ifeq ($(OPENJDK_TARGET_OS), windows)
   $(eval $(call SetupLauncher,javaw, \
-      -DJAVAW -DEXPAND_CLASSPATH_WILDCARDS,,,user32.lib comctl32.lib, \
+      -DJAVAW -DEXPAND_CLASSPATH_WILDCARDS -DENABLE_ARG_FILES,,,user32.lib comctl32.lib, \
       $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/jli_static.lib, $(JAVA_RC_FLAGS), \
       $(JAVA_VERSION_INFO_RESOURCE),,true))
 endif
diff --git a/jdk/make/launcher/Launcher-jdk.scripting.nashorn.gmk b/jdk/make/launcher/Launcher-jdk.scripting.nashorn.shell.gmk
similarity index 100%
rename from jdk/make/launcher/Launcher-jdk.scripting.nashorn.gmk
rename to jdk/make/launcher/Launcher-jdk.scripting.nashorn.shell.gmk
diff --git a/jdk/make/lib/CoreLibraries.gmk b/jdk/make/lib/CoreLibraries.gmk
index 736679a..d3709d3 100644
--- a/jdk/make/lib/CoreLibraries.gmk
+++ b/jdk/make/lib/CoreLibraries.gmk
@@ -330,6 +330,13 @@
         -export:JLI_CmdToArgs \
         -export:JLI_GetStdArgc \
         -export:JLI_GetStdArgs \
+        -export:JLI_List_new \
+        -export:JLI_List_add \
+        -export:JLI_StringDup \
+        -export:JLI_MemFree \
+        -export:JLI_InitArgProcessing \
+        -export:JLI_PreprocessArg \
+        -export:JLI_GetAppArgIndex \
         advapi32.lib \
         comctl32.lib \
         user32.lib, \
diff --git a/jdk/make/mapfiles/libjli/mapfile-vers b/jdk/make/mapfiles/libjli/mapfile-vers
index 58da7a2..9807d23 100644
--- a/jdk/make/mapfiles/libjli/mapfile-vers
+++ b/jdk/make/mapfiles/libjli/mapfile-vers
@@ -36,6 +36,13 @@
 		JLI_ReportExceptionDescription;
 		JLI_GetStdArgs;
 		JLI_GetStdArgc;
+		JLI_List_new;
+		JLI_List_add;
+		JLI_StringDup;
+		JLI_MemFree;
+		JLI_InitArgProcessing;
+		JLI_PreprocessArg;
+		JLI_GetAppArgIndex;
 
 	local:
 		*;
diff --git a/jdk/src/demo/share/applets/NervousText/NervousText.java b/jdk/src/demo/share/applets/NervousText/NervousText.java
index 12dd678..dd60d49 100644
--- a/jdk/src/demo/share/applets/NervousText/NervousText.java
+++ b/jdk/src/demo/share/applets/NervousText/NervousText.java
@@ -72,8 +72,9 @@
     public void init() {
         banner = getParameter("text");
         if (banner == null) {
-            banner = "HotJava";
+            banner = "Java Development Kit ";
         }
+        banner += System.getProperty("java.version", "");
 
         int bannerLength = banner.length();
         StringBuilder bc = new StringBuilder(bannerLength);
diff --git a/jdk/src/demo/share/applets/NervousText/example1.html b/jdk/src/demo/share/applets/NervousText/example1.html
index 96013da..a026b37 100644
--- a/jdk/src/demo/share/applets/NervousText/example1.html
+++ b/jdk/src/demo/share/applets/NervousText/example1.html
@@ -1,7 +1,7 @@
 <title>Nervous Text 1.1</title>
 <hr>
 <applet code="NervousText.class" width=534 height=50>
-<param name=text value="Java SE Development Kit (JDK) 7.0">
+<param name=text value="Java Development Kit (JDK) ">
 </applet>
 <hr>
 <a href="NervousText.java">The source.</a>
diff --git a/jdk/src/java.base/share/classes/java/lang/Character.java b/jdk/src/java.base/share/classes/java/lang/Character.java
index 25783cb..eb4ee65 100644
--- a/jdk/src/java.base/share/classes/java/lang/Character.java
+++ b/jdk/src/java.base/share/classes/java/lang/Character.java
@@ -9356,7 +9356,7 @@
      *     <td>{@code FORM FEED}</td></tr>
      * <tr><td>{@code '\r'}</td>            <td>{@code U+000D}</td>
      *     <td>{@code CARRIAGE RETURN}</td></tr>
-     * <tr><td>{@code '&nbsp;'}</td>  <td>{@code U+0020}</td>
+     * <tr><td>{@code ' '}</td>             <td>{@code U+0020}</td>
      *     <td>{@code SPACE}</td></tr>
      * </table>
      *
diff --git a/jdk/src/java.base/share/classes/java/lang/invoke/MemberName.java b/jdk/src/java.base/share/classes/java/lang/invoke/MemberName.java
index 6622bb3..0393345 100644
--- a/jdk/src/java.base/share/classes/java/lang/invoke/MemberName.java
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/MemberName.java
@@ -93,7 +93,7 @@
     /** Return the simple name of this member.
      *  For a type, it is the same as {@link Class#getSimpleName}.
      *  For a method or field, it is the simple name of the member.
-     *  For a constructor, it is always {@code "&lt;init&gt;"}.
+     *  For a constructor, it is always {@code "<init>"}.
      */
     public String getName() {
         if (name == null) {
@@ -727,7 +727,7 @@
     }
     /** Create a method or constructor name from the given components:
      *  Declaring class, name, type, reference kind.
-     *  It will be a constructor if and only if the name is {@code "&lt;init&gt;"}.
+     *  It will be a constructor if and only if the name is {@code "<init>"}.
      *  The declaring class may be supplied as null if this is to be a bare name and type.
      *  The last argument is optional, a boolean which requests REF_invokeSpecial.
      *  The resulting name will in an unresolved state.
diff --git a/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandleInfo.java b/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandleInfo.java
index d63db84..ad6799a 100644
--- a/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandleInfo.java
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandleInfo.java
@@ -155,7 +155,7 @@
 
     /**
      * Returns the name of the cracked method handle's underlying member.
-     * This is {@code "&lt;init&gt;"} if the underlying member was a constructor,
+     * This is {@code "<init>"} if the underlying member was a constructor,
      * else it is a simple method name or field name.
      * @return the simple name of the underlying member
      */
diff --git a/jdk/src/java.base/share/classes/java/lang/invoke/Stable.java b/jdk/src/java.base/share/classes/java/lang/invoke/Stable.java
index 077c546..a0a413e 100644
--- a/jdk/src/java.base/share/classes/java/lang/invoke/Stable.java
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/Stable.java
@@ -51,7 +51,7 @@
  * If the field is an array type, then both the field value and
  * all the components of the field value (if the field value is non-null)
  * are indicated to be stable.
- * If the field type is an array type with rank {@code N &gt; 1},
+ * If the field type is an array type with rank {@code N > 1},
  * then each component of the field value (if the field value is non-null),
  * is regarded as a stable array of rank {@code N-1}.
  * <p>
diff --git a/jdk/src/java.base/share/classes/java/lang/invoke/SwitchPoint.java b/jdk/src/java.base/share/classes/java/lang/invoke/SwitchPoint.java
index 01c16f5..5d9b3bf 100644
--- a/jdk/src/java.base/share/classes/java/lang/invoke/SwitchPoint.java
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/SwitchPoint.java
@@ -55,20 +55,20 @@
  * At that point {@code guardWithTest} may ignore {@code T} and return {@code F}.
  * <p>
  * Here is an example of a switch point in action:
- * <blockquote><pre>{@code
-MethodHandle MH_strcat = MethodHandles.lookup()
-    .findVirtual(String.class, "concat", MethodType.methodType(String.class, String.class));
-SwitchPoint spt = new SwitchPoint();
-assert(!spt.hasBeenInvalidated());
-// the following steps may be repeated to re-use the same switch point:
-MethodHandle worker1 = MH_strcat;
-MethodHandle worker2 = MethodHandles.permuteArguments(MH_strcat, MH_strcat.type(), 1, 0);
-MethodHandle worker = spt.guardWithTest(worker1, worker2);
-assertEquals("method", (String) worker.invokeExact("met", "hod"));
-SwitchPoint.invalidateAll(new SwitchPoint[]{ spt });
-assert(spt.hasBeenInvalidated());
-assertEquals("hodmet", (String) worker.invokeExact("met", "hod"));
- * }</pre></blockquote>
+ * <pre>{@code
+ * MethodHandle MH_strcat = MethodHandles.lookup()
+ *     .findVirtual(String.class, "concat", MethodType.methodType(String.class, String.class));
+ * SwitchPoint spt = new SwitchPoint();
+ * assert(!spt.hasBeenInvalidated());
+ * // the following steps may be repeated to re-use the same switch point:
+ * MethodHandle worker1 = MH_strcat;
+ * MethodHandle worker2 = MethodHandles.permuteArguments(MH_strcat, MH_strcat.type(), 1, 0);
+ * MethodHandle worker = spt.guardWithTest(worker1, worker2);
+ * assertEquals("method", (String) worker.invokeExact("met", "hod"));
+ * SwitchPoint.invalidateAll(new SwitchPoint[]{ spt });
+ * assert(spt.hasBeenInvalidated());
+ * assertEquals("hodmet", (String) worker.invokeExact("met", "hod"));
+ * }</pre>
  * <p style="font-size:smaller;">
  * <em>Discussion:</em>
  * Switch points are useful without subclassing.  They may also be subclassed.
@@ -82,31 +82,31 @@
  * <em>Implementation Note:</em>
  * A switch point behaves as if implemented on top of {@link MutableCallSite},
  * approximately as follows:
- * <blockquote><pre>{@code
-public class SwitchPoint {
-  private static final MethodHandle
-    K_true  = MethodHandles.constant(boolean.class, true),
-    K_false = MethodHandles.constant(boolean.class, false);
-  private final MutableCallSite mcs;
-  private final MethodHandle mcsInvoker;
-  public SwitchPoint() {
-    this.mcs = new MutableCallSite(K_true);
-    this.mcsInvoker = mcs.dynamicInvoker();
-  }
-  public MethodHandle guardWithTest(
-                MethodHandle target, MethodHandle fallback) {
-    // Note:  mcsInvoker is of type ()boolean.
-    // Target and fallback may take any arguments, but must have the same type.
-    return MethodHandles.guardWithTest(this.mcsInvoker, target, fallback);
-  }
-  public static void invalidateAll(SwitchPoint[] spts) {
-    List&lt;MutableCallSite&gt; mcss = new ArrayList&lt;&gt;();
-    for (SwitchPoint spt : spts)  mcss.add(spt.mcs);
-    for (MutableCallSite mcs : mcss)  mcs.setTarget(K_false);
-    MutableCallSite.syncAll(mcss.toArray(new MutableCallSite[0]));
-  }
-}
- * }</pre></blockquote>
+ * <pre>{@code
+ * public class SwitchPoint {
+ *     private static final MethodHandle
+ *         K_true  = MethodHandles.constant(boolean.class, true),
+ *         K_false = MethodHandles.constant(boolean.class, false);
+ *     private final MutableCallSite mcs;
+ *     private final MethodHandle mcsInvoker;
+ *     public SwitchPoint() {
+ *         this.mcs = new MutableCallSite(K_true);
+ *         this.mcsInvoker = mcs.dynamicInvoker();
+ *     }
+ *     public MethodHandle guardWithTest(
+ *             MethodHandle target, MethodHandle fallback) {
+ *         // Note:  mcsInvoker is of type ()boolean.
+ *         // Target and fallback may take any arguments, but must have the same type.
+ *         return MethodHandles.guardWithTest(this.mcsInvoker, target, fallback);
+ *     }
+ *     public static void invalidateAll(SwitchPoint[] spts) {
+ *         List<MutableCallSite> mcss = new ArrayList<>();
+ *         for (SwitchPoint spt : spts)  mcss.add(spt.mcs);
+ *         for (MutableCallSite mcs : mcss)  mcs.setTarget(K_false);
+ *         MutableCallSite.syncAll(mcss.toArray(new MutableCallSite[0]));
+ *     }
+ * }
+ * }</pre>
  * @author Remi Forax, JSR 292 EG
  */
 public class SwitchPoint {
diff --git a/jdk/src/java.base/share/classes/java/lang/reflect/Method.java b/jdk/src/java.base/share/classes/java/lang/reflect/Method.java
index f137d8b..174e4ed 100644
--- a/jdk/src/java.base/share/classes/java/lang/reflect/Method.java
+++ b/jdk/src/java.base/share/classes/java/lang/reflect/Method.java
@@ -161,6 +161,21 @@
     }
 
     /**
+     * Make a copy of a leaf method.
+     */
+    Method leafCopy() {
+        if (this.root == null)
+            throw new IllegalArgumentException("Can only leafCopy a non-root Method");
+
+        Method res = new Method(clazz, name, parameterTypes, returnType,
+                exceptionTypes, modifiers, slot, signature,
+                annotations, parameterAnnotations, annotationDefault);
+        res.root = root;
+        res.methodAccessor = methodAccessor;
+        return res;
+    }
+
+    /**
      * Used by Excecutable for annotation sharing.
      */
     @Override
diff --git a/jdk/src/java.base/share/classes/java/lang/reflect/ReflectAccess.java b/jdk/src/java.base/share/classes/java/lang/reflect/ReflectAccess.java
index c3ac155..5a04393 100644
--- a/jdk/src/java.base/share/classes/java/lang/reflect/ReflectAccess.java
+++ b/jdk/src/java.base/share/classes/java/lang/reflect/ReflectAccess.java
@@ -139,6 +139,9 @@
     public Method      copyMethod(Method arg) {
         return arg.copy();
     }
+    public Method      leafCopyMethod(Method arg) {
+        return arg.leafCopy();
+    }
 
     public Field       copyField(Field arg) {
         return arg.copy();
diff --git a/jdk/src/java.base/share/classes/java/time/chrono/ChronoLocalDate.java b/jdk/src/java.base/share/classes/java/time/chrono/ChronoLocalDate.java
index 8a89bdb..03a7a48 100644
--- a/jdk/src/java.base/share/classes/java/time/chrono/ChronoLocalDate.java
+++ b/jdk/src/java.base/share/classes/java/time/chrono/ChronoLocalDate.java
@@ -715,7 +715,7 @@
      * only compares the underlying date and not the chronology.
      * This allows dates in different calendar systems to be compared based
      * on the time-line position.
-     * This is equivalent to using {@code date1.toEpochDay() &gt; date2.toEpochDay()}.
+     * This is equivalent to using {@code date1.toEpochDay() > date2.toEpochDay()}.
      * <p>
      * This default implementation performs the comparison based on the epoch-day.
      *
@@ -733,7 +733,7 @@
      * only compares the underlying date and not the chronology.
      * This allows dates in different calendar systems to be compared based
      * on the time-line position.
-     * This is equivalent to using {@code date1.toEpochDay() &lt; date2.toEpochDay()}.
+     * This is equivalent to using {@code date1.toEpochDay() < date2.toEpochDay()}.
      * <p>
      * This default implementation performs the comparison based on the epoch-day.
      *
diff --git a/jdk/src/java.base/share/classes/javax/crypto/Cipher.java b/jdk/src/java.base/share/classes/javax/crypto/Cipher.java
index 49a071e..7494384 100644
--- a/jdk/src/java.base/share/classes/javax/crypto/Cipher.java
+++ b/jdk/src/java.base/share/classes/javax/crypto/Cipher.java
@@ -52,7 +52,7 @@
  * Extension (JCE) framework.
  *
  * <p>In order to create a Cipher object, the application calls the
- * Cipher's <code>getInstance</code> method, and passes the name of the
+ * Cipher's {@code getInstance} method, and passes the name of the
  * requested <i>transformation</i> to it. Optionally, the name of a provider
  * may be specified.
  *
@@ -78,12 +78,12 @@
  *     Cipher c = Cipher.getInstance("<i>DES/CBC/PKCS5Padding</i>");
  * </pre>
  *
- * Using modes such as <code>CFB</code> and <code>OFB</code>, block
+ * Using modes such as {@code CFB} and {@code OFB}, block
  * ciphers can encrypt data in units smaller than the cipher's actual
  * block size.  When requesting such a mode, you may optionally specify
  * the number of bits to be processed at a time by appending this number
- * to the mode name as shown in the "<code>DES/CFB8/NoPadding</code>" and
- * "<code>DES/OFB32/PKCS5Padding</code>" transformations. If no such
+ * to the mode name as shown in the "{@code DES/CFB8/NoPadding}" and
+ * "{@code DES/OFB32/PKCS5Padding}" transformations. If no such
  * number is specified, a provider-specific default is used. (For
  * example, the SunJCE provider uses a default of 64 bits for DES.)
  * Thus, block ciphers can be turned into byte-oriented stream ciphers by
@@ -101,8 +101,8 @@
  * AEAD modes such as GCM/CCM perform all AAD authenticity calculations
  * before starting the ciphertext authenticity calculations.  To avoid
  * implementations having to internally buffer ciphertext, all AAD data
- * must be supplied to GCM/CCM implementations (via the {@code
- * updateAAD} methods) <b>before</b> the ciphertext is processed (via
+ * must be supplied to GCM/CCM implementations (via the {@code updateAAD}
+ * methods) <b>before</b> the ciphertext is processed (via
  * the {@code update} and {@code doFinal} methods).
  * <p>
  * Note that GCM mode has a uniqueness requirement on IVs used in
@@ -130,24 +130,24 @@
  *
  * </pre>
  * Every implementation of the Java platform is required to support
- * the following standard <code>Cipher</code> transformations with the keysizes
+ * the following standard {@code Cipher} transformations with the keysizes
  * in parentheses:
  * <ul>
- * <li><tt>AES/CBC/NoPadding</tt> (128)</li>
- * <li><tt>AES/CBC/PKCS5Padding</tt> (128)</li>
- * <li><tt>AES/ECB/NoPadding</tt> (128)</li>
- * <li><tt>AES/ECB/PKCS5Padding</tt> (128)</li>
- * <li><tt>DES/CBC/NoPadding</tt> (56)</li>
- * <li><tt>DES/CBC/PKCS5Padding</tt> (56)</li>
- * <li><tt>DES/ECB/NoPadding</tt> (56)</li>
- * <li><tt>DES/ECB/PKCS5Padding</tt> (56)</li>
- * <li><tt>DESede/CBC/NoPadding</tt> (168)</li>
- * <li><tt>DESede/CBC/PKCS5Padding</tt> (168)</li>
- * <li><tt>DESede/ECB/NoPadding</tt> (168)</li>
- * <li><tt>DESede/ECB/PKCS5Padding</tt> (168)</li>
- * <li><tt>RSA/ECB/PKCS1Padding</tt> (1024, 2048)</li>
- * <li><tt>RSA/ECB/OAEPWithSHA-1AndMGF1Padding</tt> (1024, 2048)</li>
- * <li><tt>RSA/ECB/OAEPWithSHA-256AndMGF1Padding</tt> (1024, 2048)</li>
+ * <li>{@code AES/CBC/NoPadding} (128)</li>
+ * <li>{@code AES/CBC/PKCS5Padding} (128)</li>
+ * <li>{@code AES/ECB/NoPadding} (128)</li>
+ * <li>{@code AES/ECB/PKCS5Padding} (128)</li>
+ * <li>{@code DES/CBC/NoPadding} (56)</li>
+ * <li>{@code DES/CBC/PKCS5Padding} (56)</li>
+ * <li>{@code DES/ECB/NoPadding} (56)</li>
+ * <li>{@code DES/ECB/PKCS5Padding} (56)</li>
+ * <li>{@code DESede/CBC/NoPadding} (168)</li>
+ * <li>{@code DESede/CBC/PKCS5Padding} (168)</li>
+ * <li>{@code DESede/ECB/NoPadding} (168)</li>
+ * <li>{@code DESede/ECB/PKCS5Padding} (168)</li>
+ * <li>{@code RSA/ECB/PKCS1Padding} (1024, 2048)</li>
+ * <li>{@code RSA/ECB/OAEPWithSHA-1AndMGF1Padding} (1024, 2048)</li>
+ * <li>{@code RSA/ECB/OAEPWithSHA-256AndMGF1Padding} (1024, 2048)</li>
  * </ul>
  * These transformations are described in the
  * <a href="{@docRoot}/../technotes/guides/security/StandardNames.html#Cipher">
@@ -466,7 +466,7 @@
     }
 
     /**
-     * Returns a <code>Cipher</code> object that implements the specified
+     * Returns a {@code Cipher} object that implements the specified
      * transformation.
      *
      * <p> This method traverses the list of registered security Providers,
@@ -487,12 +487,12 @@
      *
      * @return a cipher that implements the requested transformation.
      *
-     * @exception NoSuchAlgorithmException if <code>transformation</code>
+     * @exception NoSuchAlgorithmException if {@code transformation}
      *          is null, empty, in an invalid format,
      *          or if no Provider supports a CipherSpi implementation for the
      *          specified algorithm.
      *
-     * @exception NoSuchPaddingException if <code>transformation</code>
+     * @exception NoSuchPaddingException if {@code transformation}
      *          contains a padding scheme that is not available.
      *
      * @see java.security.Provider
@@ -542,7 +542,7 @@
     }
 
     /**
-     * Returns a <code>Cipher</code> object that implements the specified
+     * Returns a {@code Cipher} object that implements the specified
      * transformation.
      *
      * <p> A new Cipher object encapsulating the
@@ -564,7 +564,7 @@
      *
      * @return a cipher that implements the requested transformation.
      *
-     * @exception NoSuchAlgorithmException if <code>transformation</code>
+     * @exception NoSuchAlgorithmException if {@code transformation}
      *          is null, empty, in an invalid format,
      *          or if a CipherSpi implementation for the specified algorithm
      *          is not available from the specified provider.
@@ -572,10 +572,10 @@
      * @exception NoSuchProviderException if the specified provider is not
      *          registered in the security provider list.
      *
-     * @exception NoSuchPaddingException if <code>transformation</code>
+     * @exception NoSuchPaddingException if {@code transformation}
      *          contains a padding scheme that is not available.
      *
-     * @exception IllegalArgumentException if the <code>provider</code>
+     * @exception IllegalArgumentException if the {@code provider}
      *          is null or empty.
      *
      * @see java.security.Provider
@@ -597,7 +597,7 @@
     }
 
     /**
-     * Returns a <code>Cipher</code> object that implements the specified
+     * Returns a {@code Cipher} object that implements the specified
      * transformation.
      *
      * <p> A new Cipher object encapsulating the
@@ -616,15 +616,15 @@
      *
      * @return a cipher that implements the requested transformation.
      *
-     * @exception NoSuchAlgorithmException if <code>transformation</code>
+     * @exception NoSuchAlgorithmException if {@code transformation}
      *          is null, empty, in an invalid format,
      *          or if a CipherSpi implementation for the specified algorithm
      *          is not available from the specified Provider object.
      *
-     * @exception NoSuchPaddingException if <code>transformation</code>
+     * @exception NoSuchPaddingException if {@code transformation}
      *          contains a padding scheme that is not available.
      *
-     * @exception IllegalArgumentException if the <code>provider</code>
+     * @exception IllegalArgumentException if the {@code provider}
      *          is null.
      *
      * @see java.security.Provider
@@ -897,9 +897,9 @@
     }
 
     /**
-     * Returns the provider of this <code>Cipher</code> object.
+     * Returns the provider of this {@code Cipher} object.
      *
-     * @return the provider of this <code>Cipher</code> object
+     * @return the provider of this {@code Cipher} object
      */
     public final Provider getProvider() {
         chooseFirstProvider();
@@ -907,13 +907,13 @@
     }
 
     /**
-     * Returns the algorithm name of this <code>Cipher</code> object.
+     * Returns the algorithm name of this {@code Cipher} object.
      *
      * <p>This is the same name that was specified in one of the
-     * <code>getInstance</code> calls that created this <code>Cipher</code>
+     * {@code getInstance} calls that created this {@code Cipher}
      * object..
      *
-     * @return the algorithm name of this <code>Cipher</code> object.
+     * @return the algorithm name of this {@code Cipher} object.
      */
     public final String getAlgorithm() {
         return this.transformation;
@@ -932,15 +932,15 @@
 
     /**
      * Returns the length in bytes that an output buffer would need to be in
-     * order to hold the result of the next <code>update</code> or
-     * <code>doFinal</code> operation, given the input length
-     * <code>inputLen</code> (in bytes).
+     * order to hold the result of the next {@code update} or
+     * {@code doFinal} operation, given the input length
+     * {@code inputLen} (in bytes).
      *
      * <p>This call takes into account any unprocessed (buffered) data from a
-     * previous <code>update</code> call, padding, and AEAD tagging.
+     * previous {@code update} call, padding, and AEAD tagging.
      *
-     * <p>The actual output length of the next <code>update</code> or
-     * <code>doFinal</code> call may be smaller than the length returned by
+     * <p>The actual output length of the next {@code update} or
+     * {@code doFinal} call may be smaller than the length returned by
      * this method.
      *
      * @param inputLen the input length (in bytes)
@@ -1135,14 +1135,14 @@
      *
      * <p>The cipher is initialized for one of the following four operations:
      * encryption, decryption, key wrapping or key unwrapping, depending
-     * on the value of <code>opmode</code>.
+     * on the value of {@code opmode}.
      *
      * <p>If this cipher requires any algorithm parameters that cannot be
-     * derived from the given <code>key</code>, the underlying cipher
+     * derived from the given {@code key}, the underlying cipher
      * implementation is supposed to generate the required parameters itself
      * (using provider-specific default or random values) if it is being
      * initialized for encryption or key wrapping, and raise an
-     * <code>InvalidKeyException</code> if it is being
+     * {@code InvalidKeyException} if it is being
      * initialized for decryption or key unwrapping.
      * The generated parameters can be retrieved using
      * {@link #getParameters() getParameters} or
@@ -1168,8 +1168,8 @@
      *
      * @param opmode the operation mode of this cipher (this is one of
      * the following:
-     * <code>ENCRYPT_MODE</code>, <code>DECRYPT_MODE</code>,
-     * <code>WRAP_MODE</code> or <code>UNWRAP_MODE</code>)
+     * {@code ENCRYPT_MODE}, {@code DECRYPT_MODE},
+     * {@code WRAP_MODE} or {@code UNWRAP_MODE})
      * @param key the key
      *
      * @exception InvalidKeyException if the given key is inappropriate for
@@ -1191,14 +1191,14 @@
      *
      * <p>The cipher is initialized for one of the following four operations:
      * encryption, decryption, key wrapping or  key unwrapping, depending
-     * on the value of <code>opmode</code>.
+     * on the value of {@code opmode}.
      *
      * <p>If this cipher requires any algorithm parameters that cannot be
-     * derived from the given <code>key</code>, the underlying cipher
+     * derived from the given {@code key}, the underlying cipher
      * implementation is supposed to generate the required parameters itself
      * (using provider-specific default or random values) if it is being
      * initialized for encryption or key wrapping, and raise an
-     * <code>InvalidKeyException</code> if it is being
+     * {@code InvalidKeyException} if it is being
      * initialized for decryption or key unwrapping.
      * The generated parameters can be retrieved using
      * {@link #getParameters() getParameters} or
@@ -1211,7 +1211,7 @@
      *
      * <p>If this cipher (including its underlying feedback or padding scheme)
      * requires any random bytes (e.g., for parameter generation), it will get
-     * them from <code>random</code>.
+     * them from {@code random}.
      *
      * <p>Note that when a Cipher object is initialized, it loses all
      * previously-acquired state. In other words, initializing a Cipher is
@@ -1220,8 +1220,8 @@
      *
      * @param opmode the operation mode of this cipher (this is one of the
      * following:
-     * <code>ENCRYPT_MODE</code>, <code>DECRYPT_MODE</code>,
-     * <code>WRAP_MODE</code> or <code>UNWRAP_MODE</code>)
+     * {@code ENCRYPT_MODE}, {@code DECRYPT_MODE},
+     * {@code WRAP_MODE} or {@code UNWRAP_MODE})
      * @param key the encryption key
      * @param random the source of randomness
      *
@@ -1269,14 +1269,14 @@
      *
      * <p>The cipher is initialized for one of the following four operations:
      * encryption, decryption, key wrapping or  key unwrapping, depending
-     * on the value of <code>opmode</code>.
+     * on the value of {@code opmode}.
      *
      * <p>If this cipher requires any algorithm parameters and
-     * <code>params</code> is null, the underlying cipher implementation is
+     * {@code params} is null, the underlying cipher implementation is
      * supposed to generate the required parameters itself (using
      * provider-specific default or random values) if it is being
      * initialized for encryption or key wrapping, and raise an
-     * <code>InvalidAlgorithmParameterException</code> if it is being
+     * {@code InvalidAlgorithmParameterException} if it is being
      * initialized for decryption or key unwrapping.
      * The generated parameters can be retrieved using
      * {@link #getParameters() getParameters} or
@@ -1302,8 +1302,8 @@
      *
      * @param opmode the operation mode of this cipher (this is one of the
      * following:
-     * <code>ENCRYPT_MODE</code>, <code>DECRYPT_MODE</code>,
-     * <code>WRAP_MODE</code> or <code>UNWRAP_MODE</code>)
+     * {@code ENCRYPT_MODE}, {@code DECRYPT_MODE},
+     * {@code WRAP_MODE} or {@code UNWRAP_MODE})
      * @param key the encryption key
      * @param params the algorithm parameters
      *
@@ -1313,7 +1313,7 @@
      * @exception InvalidAlgorithmParameterException if the given algorithm
      * parameters are inappropriate for this cipher,
      * or this cipher requires
-     * algorithm parameters and <code>params</code> is null, or the given
+     * algorithm parameters and {@code params} is null, or the given
      * algorithm parameters imply a cryptographic strength that would exceed
      * the legal limits (as determined from the configured jurisdiction
      * policy files).
@@ -1333,14 +1333,14 @@
      *
      * <p>The cipher is initialized for one of the following four operations:
      * encryption, decryption, key wrapping or  key unwrapping, depending
-     * on the value of <code>opmode</code>.
+     * on the value of {@code opmode}.
      *
      * <p>If this cipher requires any algorithm parameters and
-     * <code>params</code> is null, the underlying cipher implementation is
+     * {@code params} is null, the underlying cipher implementation is
      * supposed to generate the required parameters itself (using
      * provider-specific default or random values) if it is being
      * initialized for encryption or key wrapping, and raise an
-     * <code>InvalidAlgorithmParameterException</code> if it is being
+     * {@code InvalidAlgorithmParameterException} if it is being
      * initialized for decryption or key unwrapping.
      * The generated parameters can be retrieved using
      * {@link #getParameters() getParameters} or
@@ -1353,7 +1353,7 @@
      *
      * <p>If this cipher (including its underlying feedback or padding scheme)
      * requires any random bytes (e.g., for parameter generation), it will get
-     * them from <code>random</code>.
+     * them from {@code random}.
      *
      * <p>Note that when a Cipher object is initialized, it loses all
      * previously-acquired state. In other words, initializing a Cipher is
@@ -1362,8 +1362,8 @@
      *
      * @param opmode the operation mode of this cipher (this is one of the
      * following:
-     * <code>ENCRYPT_MODE</code>, <code>DECRYPT_MODE</code>,
-     * <code>WRAP_MODE</code> or <code>UNWRAP_MODE</code>)
+     * {@code ENCRYPT_MODE}, {@code DECRYPT_MODE},
+     * {@code WRAP_MODE} or {@code UNWRAP_MODE})
      * @param key the encryption key
      * @param params the algorithm parameters
      * @param random the source of randomness
@@ -1374,7 +1374,7 @@
      * @exception InvalidAlgorithmParameterException if the given algorithm
      * parameters are inappropriate for this cipher,
      * or this cipher requires
-     * algorithm parameters and <code>params</code> is null, or the given
+     * algorithm parameters and {@code params} is null, or the given
      * algorithm parameters imply a cryptographic strength that would exceed
      * the legal limits (as determined from the configured jurisdiction
      * policy files).
@@ -1412,14 +1412,14 @@
      *
      * <p>The cipher is initialized for one of the following four operations:
      * encryption, decryption, key wrapping or  key unwrapping, depending
-     * on the value of <code>opmode</code>.
+     * on the value of {@code opmode}.
      *
      * <p>If this cipher requires any algorithm parameters and
-     * <code>params</code> is null, the underlying cipher implementation is
+     * {@code params} is null, the underlying cipher implementation is
      * supposed to generate the required parameters itself (using
      * provider-specific default or random values) if it is being
      * initialized for encryption or key wrapping, and raise an
-     * <code>InvalidAlgorithmParameterException</code> if it is being
+     * {@code InvalidAlgorithmParameterException} if it is being
      * initialized for decryption or key unwrapping.
      * The generated parameters can be retrieved using
      * {@link #getParameters() getParameters} or
@@ -1444,9 +1444,9 @@
      * it.
      *
      * @param opmode the operation mode of this cipher (this is one of the
-     * following: <code>ENCRYPT_MODE</code>,
-     * <code>DECRYPT_MODE</code>, <code>WRAP_MODE</code>
-     * or <code>UNWRAP_MODE</code>)
+     * following: {@code ENCRYPT_MODE},
+     * {@code DECRYPT_MODE}, {@code WRAP_MODE}
+     * or {@code UNWRAP_MODE})
      * @param key the encryption key
      * @param params the algorithm parameters
      *
@@ -1456,7 +1456,7 @@
      * @exception InvalidAlgorithmParameterException if the given algorithm
      * parameters are inappropriate for this cipher,
      * or this cipher requires
-     * algorithm parameters and <code>params</code> is null, or the given
+     * algorithm parameters and {@code params} is null, or the given
      * algorithm parameters imply a cryptographic strength that would exceed
      * the legal limits (as determined from the configured jurisdiction
      * policy files).
@@ -1476,14 +1476,14 @@
      *
      * <p>The cipher is initialized for one of the following four operations:
      * encryption, decryption, key wrapping or  key unwrapping, depending
-     * on the value of <code>opmode</code>.
+     * on the value of {@code opmode}.
      *
      * <p>If this cipher requires any algorithm parameters and
-     * <code>params</code> is null, the underlying cipher implementation is
+     * {@code params} is null, the underlying cipher implementation is
      * supposed to generate the required parameters itself (using
      * provider-specific default or random values) if it is being
      * initialized for encryption or key wrapping, and raise an
-     * <code>InvalidAlgorithmParameterException</code> if it is being
+     * {@code InvalidAlgorithmParameterException} if it is being
      * initialized for decryption or key unwrapping.
      * The generated parameters can be retrieved using
      * {@link #getParameters() getParameters} or
@@ -1496,7 +1496,7 @@
      *
      * <p>If this cipher (including its underlying feedback or padding scheme)
      * requires any random bytes (e.g., for parameter generation), it will get
-     * them from <code>random</code>.
+     * them from {@code random}.
      *
      * <p>Note that when a Cipher object is initialized, it loses all
      * previously-acquired state. In other words, initializing a Cipher is
@@ -1504,9 +1504,9 @@
      * it.
      *
      * @param opmode the operation mode of this cipher (this is one of the
-     * following: <code>ENCRYPT_MODE</code>,
-     * <code>DECRYPT_MODE</code>, <code>WRAP_MODE</code>
-     * or <code>UNWRAP_MODE</code>)
+     * following: {@code ENCRYPT_MODE},
+     * {@code DECRYPT_MODE}, {@code WRAP_MODE}
+     * or {@code UNWRAP_MODE})
      * @param key the encryption key
      * @param params the algorithm parameters
      * @param random the source of randomness
@@ -1517,7 +1517,7 @@
      * @exception InvalidAlgorithmParameterException if the given algorithm
      * parameters are inappropriate for this cipher,
      * or this cipher requires
-     * algorithm parameters and <code>params</code> is null, or the given
+     * algorithm parameters and {@code params} is null, or the given
      * algorithm parameters imply a cryptographic strength that would exceed
      * the legal limits (as determined from the configured jurisdiction
      * policy files).
@@ -1553,15 +1553,15 @@
      * Initializes this cipher with the public key from the given certificate.
      * <p> The cipher is initialized for one of the following four operations:
      * encryption, decryption, key wrapping or  key unwrapping, depending
-     * on the value of <code>opmode</code>.
+     * on the value of {@code opmode}.
      *
      * <p>If the certificate is of type X.509 and has a <i>key usage</i>
      * extension field marked as critical, and the value of the <i>key usage</i>
      * extension field implies that the public key in
      * the certificate and its corresponding private key are not
      * supposed to be used for the operation represented by the value
-     * of <code>opmode</code>,
-     * an <code>InvalidKeyException</code>
+     * of {@code opmode},
+     * an {@code InvalidKeyException}
      * is thrown.
      *
      * <p> If this cipher requires any algorithm parameters that cannot be
@@ -1569,8 +1569,8 @@
      * cipher
      * implementation is supposed to generate the required parameters itself
      * (using provider-specific default or random values) if it is being
-     * initialized for encryption or key wrapping, and raise an <code>
-     * InvalidKeyException</code> if it is being initialized for decryption or
+     * initialized for encryption or key wrapping, and raise an
+     * {@code InvalidKeyException} if it is being initialized for decryption or
      * key unwrapping.
      * The generated parameters can be retrieved using
      * {@link #getParameters() getParameters} or
@@ -1584,7 +1584,7 @@
      * <p>If this cipher (including its underlying feedback or padding scheme)
      * requires any random bytes (e.g., for parameter generation), it will get
      * them using the
-     * <code>SecureRandom</code>
+     * {@code SecureRandom}
      * implementation of the highest-priority
      * installed provider as the source of randomness.
      * (If none of the installed providers supply an implementation of
@@ -1597,8 +1597,8 @@
      *
      * @param opmode the operation mode of this cipher (this is one of the
      * following:
-     * <code>ENCRYPT_MODE</code>, <code>DECRYPT_MODE</code>,
-     * <code>WRAP_MODE</code> or <code>UNWRAP_MODE</code>)
+     * {@code ENCRYPT_MODE}, {@code DECRYPT_MODE},
+     * {@code WRAP_MODE} or {@code UNWRAP_MODE})
      * @param certificate the certificate
      *
      * @exception InvalidKeyException if the public key in the given
@@ -1626,24 +1626,24 @@
      * <p>The cipher is initialized for one of the following four operations:
      * encryption, decryption, key wrapping
      * or key unwrapping, depending on
-     * the value of <code>opmode</code>.
+     * the value of {@code opmode}.
      *
      * <p>If the certificate is of type X.509 and has a <i>key usage</i>
      * extension field marked as critical, and the value of the <i>key usage</i>
      * extension field implies that the public key in
      * the certificate and its corresponding private key are not
      * supposed to be used for the operation represented by the value of
-     * <code>opmode</code>,
-     * an <code>InvalidKeyException</code>
+     * {@code opmode},
+     * an {@code InvalidKeyException}
      * is thrown.
      *
      * <p>If this cipher requires any algorithm parameters that cannot be
-     * derived from the public key in the given <code>certificate</code>,
+     * derived from the public key in the given {@code certificate},
      * the underlying cipher
      * implementation is supposed to generate the required parameters itself
      * (using provider-specific default or random values) if it is being
      * initialized for encryption or key wrapping, and raise an
-     * <code>InvalidKeyException</code> if it is being
+     * {@code InvalidKeyException} if it is being
      * initialized for decryption or key unwrapping.
      * The generated parameters can be retrieved using
      * {@link #getParameters() getParameters} or
@@ -1656,7 +1656,7 @@
      *
      * <p>If this cipher (including its underlying feedback or padding scheme)
      * requires any random bytes (e.g., for parameter generation), it will get
-     * them from <code>random</code>.
+     * them from {@code random}.
      *
      * <p>Note that when a Cipher object is initialized, it loses all
      * previously-acquired state. In other words, initializing a Cipher is
@@ -1665,8 +1665,8 @@
      *
      * @param opmode the operation mode of this cipher (this is one of the
      * following:
-     * <code>ENCRYPT_MODE</code>, <code>DECRYPT_MODE</code>,
-     * <code>WRAP_MODE</code> or <code>UNWRAP_MODE</code>)
+     * {@code ENCRYPT_MODE}, {@code DECRYPT_MODE},
+     * {@code WRAP_MODE} or {@code UNWRAP_MODE})
      * @param certificate the certificate
      * @param random the source of randomness
      *
@@ -1762,11 +1762,11 @@
      * (depending on how this cipher was initialized), processing another data
      * part.
      *
-     * <p>The bytes in the <code>input</code> buffer are processed, and the
+     * <p>The bytes in the {@code input} buffer are processed, and the
      * result is stored in a new buffer.
      *
-     * <p>If <code>input</code> has a length of zero, this method returns
-     * <code>null</code>.
+     * <p>If {@code input} has a length of zero, this method returns
+     * {@code null}.
      *
      * @param input the input buffer
      *
@@ -1797,15 +1797,15 @@
      * (depending on how this cipher was initialized), processing another data
      * part.
      *
-     * <p>The first <code>inputLen</code> bytes in the <code>input</code>
-     * buffer, starting at <code>inputOffset</code> inclusive, are processed,
+     * <p>The first {@code inputLen} bytes in the {@code input}
+     * buffer, starting at {@code inputOffset} inclusive, are processed,
      * and the result is stored in a new buffer.
      *
-     * <p>If <code>inputLen</code> is zero, this method returns
-     * <code>null</code>.
+     * <p>If {@code inputLen} is zero, this method returns
+     * {@code null}.
      *
      * @param input the input buffer
-     * @param inputOffset the offset in <code>input</code> where the input
+     * @param inputOffset the offset in {@code input} where the input
      * starts
      * @param inputLen the input length
      *
@@ -1837,31 +1837,31 @@
      * (depending on how this cipher was initialized), processing another data
      * part.
      *
-     * <p>The first <code>inputLen</code> bytes in the <code>input</code>
-     * buffer, starting at <code>inputOffset</code> inclusive, are processed,
-     * and the result is stored in the <code>output</code> buffer.
+     * <p>The first {@code inputLen} bytes in the {@code input}
+     * buffer, starting at {@code inputOffset} inclusive, are processed,
+     * and the result is stored in the {@code output} buffer.
      *
-     * <p>If the <code>output</code> buffer is too small to hold the result,
-     * a <code>ShortBufferException</code> is thrown. In this case, repeat this
+     * <p>If the {@code output} buffer is too small to hold the result,
+     * a {@code ShortBufferException} is thrown. In this case, repeat this
      * call with a larger output buffer. Use
      * {@link #getOutputSize(int) getOutputSize} to determine how big
      * the output buffer should be.
      *
-     * <p>If <code>inputLen</code> is zero, this method returns
+     * <p>If {@code inputLen} is zero, this method returns
      * a length of zero.
      *
      * <p>Note: this method should be copy-safe, which means the
-     * <code>input</code> and <code>output</code> buffers can reference
+     * {@code input} and {@code output} buffers can reference
      * the same byte array and no unprocessed input data is overwritten
      * when the result is copied into the output buffer.
      *
      * @param input the input buffer
-     * @param inputOffset the offset in <code>input</code> where the input
+     * @param inputOffset the offset in {@code input} where the input
      * starts
      * @param inputLen the input length
      * @param output the buffer for the result
      *
-     * @return the number of bytes stored in <code>output</code>
+     * @return the number of bytes stored in {@code output}
      *
      * @exception IllegalStateException if this cipher is in a wrong state
      * (e.g., has not been initialized)
@@ -1892,34 +1892,34 @@
      * (depending on how this cipher was initialized), processing another data
      * part.
      *
-     * <p>The first <code>inputLen</code> bytes in the <code>input</code>
-     * buffer, starting at <code>inputOffset</code> inclusive, are processed,
-     * and the result is stored in the <code>output</code> buffer, starting at
-     * <code>outputOffset</code> inclusive.
+     * <p>The first {@code inputLen} bytes in the {@code input}
+     * buffer, starting at {@code inputOffset} inclusive, are processed,
+     * and the result is stored in the {@code output} buffer, starting at
+     * {@code outputOffset} inclusive.
      *
-     * <p>If the <code>output</code> buffer is too small to hold the result,
-     * a <code>ShortBufferException</code> is thrown. In this case, repeat this
+     * <p>If the {@code output} buffer is too small to hold the result,
+     * a {@code ShortBufferException} is thrown. In this case, repeat this
      * call with a larger output buffer. Use
      * {@link #getOutputSize(int) getOutputSize} to determine how big
      * the output buffer should be.
      *
-     * <p>If <code>inputLen</code> is zero, this method returns
+     * <p>If {@code inputLen} is zero, this method returns
      * a length of zero.
      *
      * <p>Note: this method should be copy-safe, which means the
-     * <code>input</code> and <code>output</code> buffers can reference
+     * {@code input} and {@code output} buffers can reference
      * the same byte array and no unprocessed input data is overwritten
      * when the result is copied into the output buffer.
      *
      * @param input the input buffer
-     * @param inputOffset the offset in <code>input</code> where the input
+     * @param inputOffset the offset in {@code input} where the input
      * starts
      * @param inputLen the input length
      * @param output the buffer for the result
-     * @param outputOffset the offset in <code>output</code> where the result
+     * @param outputOffset the offset in {@code output} where the result
      * is stored
      *
-     * @return the number of bytes stored in <code>output</code>
+     * @return the number of bytes stored in {@code output}
      *
      * @exception IllegalStateException if this cipher is in a wrong state
      * (e.g., has not been initialized)
@@ -1951,29 +1951,29 @@
      * (depending on how this cipher was initialized), processing another data
      * part.
      *
-     * <p>All <code>input.remaining()</code> bytes starting at
-     * <code>input.position()</code> are processed. The result is stored
+     * <p>All {@code input.remaining()} bytes starting at
+     * {@code input.position()} are processed. The result is stored
      * in the output buffer.
      * Upon return, the input buffer's position will be equal
      * to its limit; its limit will not have changed. The output buffer's
      * position will have advanced by n, where n is the value returned
      * by this method; the output buffer's limit will not have changed.
      *
-     * <p>If <code>output.remaining()</code> bytes are insufficient to
-     * hold the result, a <code>ShortBufferException</code> is thrown.
+     * <p>If {@code output.remaining()} bytes are insufficient to
+     * hold the result, a {@code ShortBufferException} is thrown.
      * In this case, repeat this call with a larger output buffer. Use
      * {@link #getOutputSize(int) getOutputSize} to determine how big
      * the output buffer should be.
      *
      * <p>Note: this method should be copy-safe, which means the
-     * <code>input</code> and <code>output</code> buffers can reference
+     * {@code input} and {@code output} buffers can reference
      * the same block of memory and no unprocessed input data is overwritten
      * when the result is copied into the output buffer.
      *
      * @param input the input ByteBuffer
      * @param output the output ByteByffer
      *
-     * @return the number of bytes stored in <code>output</code>
+     * @return the number of bytes stored in {@code output}
      *
      * @exception IllegalStateException if this cipher is in a wrong state
      * (e.g., has not been initialized)
@@ -2008,7 +2008,7 @@
      * on how this cipher was initialized.
      *
      * <p>Input data that may have been buffered during a previous
-     * <code>update</code> operation is processed, with padding (if requested)
+     * {@code update} operation is processed, with padding (if requested)
      * being applied.
      * If an AEAD mode such as GCM/CCM is being used, the authentication
      * tag is appended in the case of encryption, or verified in the
@@ -2016,10 +2016,10 @@
      * The result is stored in a new buffer.
      *
      * <p>Upon finishing, this method resets this cipher object to the state
-     * it was in when previously initialized via a call to <code>init</code>.
+     * it was in when previously initialized via a call to {@code init}.
      * That is, the object is reset and available to encrypt or decrypt
      * (depending on the operation mode that was specified in the call to
-     * <code>init</code>) more data.
+     * {@code init}) more data.
      *
      * <p>Note: if any exception is thrown, this cipher object may need to
      * be reset before it can be used again.
@@ -2053,34 +2053,34 @@
      * on how this cipher was initialized.
      *
      * <p>Input data that may have been buffered during a previous
-     * <code>update</code> operation is processed, with padding (if requested)
+     * {@code update} operation is processed, with padding (if requested)
      * being applied.
      * If an AEAD mode such as GCM/CCM is being used, the authentication
      * tag is appended in the case of encryption, or verified in the
      * case of decryption.
-     * The result is stored in the <code>output</code> buffer, starting at
-     * <code>outputOffset</code> inclusive.
+     * The result is stored in the {@code output} buffer, starting at
+     * {@code outputOffset} inclusive.
      *
-     * <p>If the <code>output</code> buffer is too small to hold the result,
-     * a <code>ShortBufferException</code> is thrown. In this case, repeat this
+     * <p>If the {@code output} buffer is too small to hold the result,
+     * a {@code ShortBufferException} is thrown. In this case, repeat this
      * call with a larger output buffer. Use
      * {@link #getOutputSize(int) getOutputSize} to determine how big
      * the output buffer should be.
      *
      * <p>Upon finishing, this method resets this cipher object to the state
-     * it was in when previously initialized via a call to <code>init</code>.
+     * it was in when previously initialized via a call to {@code init}.
      * That is, the object is reset and available to encrypt or decrypt
      * (depending on the operation mode that was specified in the call to
-     * <code>init</code>) more data.
+     * {@code init}) more data.
      *
      * <p>Note: if any exception is thrown, this cipher object may need to
      * be reset before it can be used again.
      *
      * @param output the buffer for the result
-     * @param outputOffset the offset in <code>output</code> where the result
+     * @param outputOffset the offset in {@code output} where the result
      * is stored
      *
-     * @return the number of bytes stored in <code>output</code>
+     * @return the number of bytes stored in {@code output}
      *
      * @exception IllegalStateException if this cipher is in a wrong state
      * (e.g., has not been initialized)
@@ -2117,8 +2117,8 @@
      * multiple-part operation. The data is encrypted or decrypted,
      * depending on how this cipher was initialized.
      *
-     * <p>The bytes in the <code>input</code> buffer, and any input bytes that
-     * may have been buffered during a previous <code>update</code> operation,
+     * <p>The bytes in the {@code input} buffer, and any input bytes that
+     * may have been buffered during a previous {@code update} operation,
      * are processed, with padding (if requested) being applied.
      * If an AEAD mode such as GCM/CCM is being used, the authentication
      * tag is appended in the case of encryption, or verified in the
@@ -2126,10 +2126,10 @@
      * The result is stored in a new buffer.
      *
      * <p>Upon finishing, this method resets this cipher object to the state
-     * it was in when previously initialized via a call to <code>init</code>.
+     * it was in when previously initialized via a call to {@code init}.
      * That is, the object is reset and available to encrypt or decrypt
      * (depending on the operation mode that was specified in the call to
-     * <code>init</code>) more data.
+     * {@code init}) more data.
      *
      * <p>Note: if any exception is thrown, this cipher object may need to
      * be reset before it can be used again.
@@ -2170,9 +2170,9 @@
      * multiple-part operation. The data is encrypted or decrypted,
      * depending on how this cipher was initialized.
      *
-     * <p>The first <code>inputLen</code> bytes in the <code>input</code>
-     * buffer, starting at <code>inputOffset</code> inclusive, and any input
-     * bytes that may have been buffered during a previous <code>update</code>
+     * <p>The first {@code inputLen} bytes in the {@code input}
+     * buffer, starting at {@code inputOffset} inclusive, and any input
+     * bytes that may have been buffered during a previous {@code update}
      * operation, are processed, with padding (if requested) being applied.
      * If an AEAD mode such as GCM/CCM is being used, the authentication
      * tag is appended in the case of encryption, or verified in the
@@ -2180,16 +2180,16 @@
      * The result is stored in a new buffer.
      *
      * <p>Upon finishing, this method resets this cipher object to the state
-     * it was in when previously initialized via a call to <code>init</code>.
+     * it was in when previously initialized via a call to {@code init}.
      * That is, the object is reset and available to encrypt or decrypt
      * (depending on the operation mode that was specified in the call to
-     * <code>init</code>) more data.
+     * {@code init}) more data.
      *
      * <p>Note: if any exception is thrown, this cipher object may need to
      * be reset before it can be used again.
      *
      * @param input the input buffer
-     * @param inputOffset the offset in <code>input</code> where the input
+     * @param inputOffset the offset in {@code input} where the input
      * starts
      * @param inputLen the input length
      *
@@ -2228,42 +2228,42 @@
      * multiple-part operation. The data is encrypted or decrypted,
      * depending on how this cipher was initialized.
      *
-     * <p>The first <code>inputLen</code> bytes in the <code>input</code>
-     * buffer, starting at <code>inputOffset</code> inclusive, and any input
-     * bytes that may have been buffered during a previous <code>update</code>
+     * <p>The first {@code inputLen} bytes in the {@code input}
+     * buffer, starting at {@code inputOffset} inclusive, and any input
+     * bytes that may have been buffered during a previous {@code update}
      * operation, are processed, with padding (if requested) being applied.
      * If an AEAD mode such as GCM/CCM is being used, the authentication
      * tag is appended in the case of encryption, or verified in the
      * case of decryption.
-     * The result is stored in the <code>output</code> buffer.
+     * The result is stored in the {@code output} buffer.
      *
-     * <p>If the <code>output</code> buffer is too small to hold the result,
-     * a <code>ShortBufferException</code> is thrown. In this case, repeat this
+     * <p>If the {@code output} buffer is too small to hold the result,
+     * a {@code ShortBufferException} is thrown. In this case, repeat this
      * call with a larger output buffer. Use
      * {@link #getOutputSize(int) getOutputSize} to determine how big
      * the output buffer should be.
      *
      * <p>Upon finishing, this method resets this cipher object to the state
-     * it was in when previously initialized via a call to <code>init</code>.
+     * it was in when previously initialized via a call to {@code init}.
      * That is, the object is reset and available to encrypt or decrypt
      * (depending on the operation mode that was specified in the call to
-     * <code>init</code>) more data.
+     * {@code init}) more data.
      *
      * <p>Note: if any exception is thrown, this cipher object may need to
      * be reset before it can be used again.
      *
      * <p>Note: this method should be copy-safe, which means the
-     * <code>input</code> and <code>output</code> buffers can reference
+     * {@code input} and {@code output} buffers can reference
      * the same byte array and no unprocessed input data is overwritten
      * when the result is copied into the output buffer.
      *
      * @param input the input buffer
-     * @param inputOffset the offset in <code>input</code> where the input
+     * @param inputOffset the offset in {@code input} where the input
      * starts
      * @param inputLen the input length
      * @param output the buffer for the result
      *
-     * @return the number of bytes stored in <code>output</code>
+     * @return the number of bytes stored in {@code output}
      *
      * @exception IllegalStateException if this cipher is in a wrong state
      * (e.g., has not been initialized)
@@ -2303,46 +2303,46 @@
      * multiple-part operation. The data is encrypted or decrypted,
      * depending on how this cipher was initialized.
      *
-     * <p>The first <code>inputLen</code> bytes in the <code>input</code>
-     * buffer, starting at <code>inputOffset</code> inclusive, and any input
+     * <p>The first {@code inputLen} bytes in the {@code input}
+     * buffer, starting at {@code inputOffset} inclusive, and any input
      * bytes that may have been buffered during a previous
-     * <code>update</code> operation, are processed, with padding
+     * {@code update} operation, are processed, with padding
      * (if requested) being applied.
      * If an AEAD mode such as GCM/CCM is being used, the authentication
      * tag is appended in the case of encryption, or verified in the
      * case of decryption.
-     * The result is stored in the <code>output</code> buffer, starting at
-     * <code>outputOffset</code> inclusive.
+     * The result is stored in the {@code output} buffer, starting at
+     * {@code outputOffset} inclusive.
      *
-     * <p>If the <code>output</code> buffer is too small to hold the result,
-     * a <code>ShortBufferException</code> is thrown. In this case, repeat this
+     * <p>If the {@code output} buffer is too small to hold the result,
+     * a {@code ShortBufferException} is thrown. In this case, repeat this
      * call with a larger output buffer. Use
      * {@link #getOutputSize(int) getOutputSize} to determine how big
      * the output buffer should be.
      *
      * <p>Upon finishing, this method resets this cipher object to the state
-     * it was in when previously initialized via a call to <code>init</code>.
+     * it was in when previously initialized via a call to {@code init}.
      * That is, the object is reset and available to encrypt or decrypt
      * (depending on the operation mode that was specified in the call to
-     * <code>init</code>) more data.
+     * {@code init}) more data.
      *
      * <p>Note: if any exception is thrown, this cipher object may need to
      * be reset before it can be used again.
      *
      * <p>Note: this method should be copy-safe, which means the
-     * <code>input</code> and <code>output</code> buffers can reference
+     * {@code input} and {@code output} buffers can reference
      * the same byte array and no unprocessed input data is overwritten
      * when the result is copied into the output buffer.
      *
      * @param input the input buffer
-     * @param inputOffset the offset in <code>input</code> where the input
+     * @param inputOffset the offset in {@code input} where the input
      * starts
      * @param inputLen the input length
      * @param output the buffer for the result
-     * @param outputOffset the offset in <code>output</code> where the result
+     * @param outputOffset the offset in {@code output} where the result
      * is stored
      *
-     * @return the number of bytes stored in <code>output</code>
+     * @return the number of bytes stored in {@code output}
      *
      * @exception IllegalStateException if this cipher is in a wrong state
      * (e.g., has not been initialized)
@@ -2383,8 +2383,8 @@
      * multiple-part operation. The data is encrypted or decrypted,
      * depending on how this cipher was initialized.
      *
-     * <p>All <code>input.remaining()</code> bytes starting at
-     * <code>input.position()</code> are processed.
+     * <p>All {@code input.remaining()} bytes starting at
+     * {@code input.position()} are processed.
      * If an AEAD mode such as GCM/CCM is being used, the authentication
      * tag is appended in the case of encryption, or verified in the
      * case of decryption.
@@ -2394,30 +2394,30 @@
      * position will have advanced by n, where n is the value returned
      * by this method; the output buffer's limit will not have changed.
      *
-     * <p>If <code>output.remaining()</code> bytes are insufficient to
-     * hold the result, a <code>ShortBufferException</code> is thrown.
+     * <p>If {@code output.remaining()} bytes are insufficient to
+     * hold the result, a {@code ShortBufferException} is thrown.
      * In this case, repeat this call with a larger output buffer. Use
      * {@link #getOutputSize(int) getOutputSize} to determine how big
      * the output buffer should be.
      *
      * <p>Upon finishing, this method resets this cipher object to the state
-     * it was in when previously initialized via a call to <code>init</code>.
+     * it was in when previously initialized via a call to {@code init}.
      * That is, the object is reset and available to encrypt or decrypt
      * (depending on the operation mode that was specified in the call to
-     * <code>init</code>) more data.
+     * {@code init}) more data.
      *
      * <p>Note: if any exception is thrown, this cipher object may need to
      * be reset before it can be used again.
      *
      * <p>Note: this method should be copy-safe, which means the
-     * <code>input</code> and <code>output</code> buffers can reference
+     * {@code input} and {@code output} buffers can reference
      * the same byte array and no unprocessed input data is overwritten
      * when the result is copied into the output buffer.
      *
      * @param input the input ByteBuffer
      * @param output the output ByteBuffer
      *
-     * @return the number of bytes stored in <code>output</code>
+     * @return the number of bytes stored in {@code output}
      *
      * @exception IllegalStateException if this cipher is in a wrong state
      * (e.g., has not been initialized)
@@ -2507,8 +2507,8 @@
      * key.
      *
      * @param wrappedKeyType the type of the wrapped key. This must be one of
-     * <code>SECRET_KEY</code>, <code>PRIVATE_KEY</code>, or
-     * <code>PUBLIC_KEY</code>.
+     * {@code SECRET_KEY}, {@code PRIVATE_KEY}, or
+     * {@code PUBLIC_KEY}.
      *
      * @return the unwrapped key.
      *
@@ -2516,12 +2516,12 @@
      * (e.g., has not been initialized).
      *
      * @exception NoSuchAlgorithmException if no installed providers
-     * can create keys of type <code>wrappedKeyType</code> for the
-     * <code>wrappedKeyAlgorithm</code>.
+     * can create keys of type {@code wrappedKeyType} for the
+     * {@code wrappedKeyAlgorithm}.
      *
-     * @exception InvalidKeyException if <code>wrappedKey</code> does not
-     * represent a wrapped key of type <code>wrappedKeyType</code> for
-     * the <code>wrappedKeyAlgorithm</code>.
+     * @exception InvalidKeyException if {@code wrappedKey} does not
+     * represent a wrapped key of type {@code wrappedKeyType} for
+     * the {@code wrappedKeyAlgorithm}.
      *
      * @throws UnsupportedOperationException if the corresponding method in the
      * {@code CipherSpi} is not supported.
@@ -2600,8 +2600,8 @@
      *
      * @param transformation the cipher transformation.
      * @return the maximum key length in bits or Integer.MAX_VALUE.
-     * @exception NullPointerException if <code>transformation</code> is null.
-     * @exception NoSuchAlgorithmException if <code>transformation</code>
+     * @exception NullPointerException if {@code transformation} is null.
+     * @exception NoSuchAlgorithmException if {@code transformation}
      * is not a valid transformation, i.e. in the form of "algorithm" or
      * "algorithm/mode/padding".
      * @since 1.5
@@ -2623,9 +2623,9 @@
      * @param transformation the cipher transformation.
      * @return an AlgorithmParameterSpec which holds the maximum
      * value or null.
-     * @exception NullPointerException if <code>transformation</code>
+     * @exception NullPointerException if {@code transformation}
      * is null.
-     * @exception NoSuchAlgorithmException if <code>transformation</code>
+     * @exception NoSuchAlgorithmException if {@code transformation}
      * is not a valid transformation, i.e. in the form of "algorithm" or
      * "algorithm/mode/padding".
      * @since 1.5
@@ -2643,8 +2643,8 @@
      * Calls to this method provide AAD to the cipher when operating in
      * modes such as AEAD (GCM/CCM).  If this cipher is operating in
      * either GCM or CCM mode, all AAD must be supplied before beginning
-     * operations on the ciphertext (via the {@code update} and {@code
-     * doFinal} methods).
+     * operations on the ciphertext (via the {@code update} and
+     * {@code doFinal} methods).
      *
      * @param src the buffer containing the Additional Authentication Data
      *
@@ -2676,8 +2676,8 @@
      * Calls to this method provide AAD to the cipher when operating in
      * modes such as AEAD (GCM/CCM).  If this cipher is operating in
      * either GCM or CCM mode, all AAD must be supplied before beginning
-     * operations on the ciphertext (via the {@code update} and {@code
-     * doFinal} methods).
+     * operations on the ciphertext (via the {@code update}
+     * and {@code doFinal} methods).
      *
      * @param src the buffer containing the AAD
      * @param offset the offset in {@code src} where the AAD input starts
@@ -2722,8 +2722,8 @@
      * Calls to this method provide AAD to the cipher when operating in
      * modes such as AEAD (GCM/CCM).  If this cipher is operating in
      * either GCM or CCM mode, all AAD must be supplied before beginning
-     * operations on the ciphertext (via the {@code update} and {@code
-     * doFinal} methods).
+     * operations on the ciphertext (via the {@code update}
+     * and {@code doFinal} methods).
      * <p>
      * All {@code src.remaining()} bytes starting at
      * {@code src.position()} are processed.
diff --git a/jdk/src/java.base/share/classes/javax/crypto/KeyAgreement.java b/jdk/src/java.base/share/classes/javax/crypto/KeyAgreement.java
index 2c24470..9ce6a46 100644
--- a/jdk/src/java.base/share/classes/javax/crypto/KeyAgreement.java
+++ b/jdk/src/java.base/share/classes/javax/crypto/KeyAgreement.java
@@ -40,24 +40,24 @@
  * exchange) protocol.
  * <p>
  * The keys involved in establishing a shared secret are created by one of the
- * key generators (<code>KeyPairGenerator</code> or
- * <code>KeyGenerator</code>), a <code>KeyFactory</code>, or as a result from
+ * key generators ({@code KeyPairGenerator} or
+ * {@code KeyGenerator}), a {@code KeyFactory}, or as a result from
  * an intermediate phase of the key agreement protocol.
  *
- * <p> For each of the correspondents in the key exchange, <code>doPhase</code>
+ * <p> For each of the correspondents in the key exchange, {@code doPhase}
  * needs to be called. For example, if this key exchange is with one other
- * party, <code>doPhase</code> needs to be called once, with the
- * <code>lastPhase</code> flag set to <code>true</code>.
+ * party, {@code doPhase} needs to be called once, with the
+ * {@code lastPhase} flag set to {@code true}.
  * If this key exchange is
- * with two other parties, <code>doPhase</code> needs to be called twice,
- * the first time setting the <code>lastPhase</code> flag to
- * <code>false</code>, and the second time setting it to <code>true</code>.
+ * with two other parties, {@code doPhase} needs to be called twice,
+ * the first time setting the {@code lastPhase} flag to
+ * {@code false}, and the second time setting it to {@code true}.
  * There may be any number of parties involved in a key exchange.
  *
  * <p> Every implementation of the Java platform is required to support the
- * following standard <code>KeyAgreement</code> algorithm:
+ * following standard {@code KeyAgreement} algorithm:
  * <ul>
- * <li><tt>DiffieHellman</tt></li>
+ * <li>{@code DiffieHellman}</li>
  * </ul>
  * This algorithm is described in the <a href=
  * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyAgreement">
@@ -125,20 +125,20 @@
     }
 
     /**
-     * Returns the algorithm name of this <code>KeyAgreement</code> object.
+     * Returns the algorithm name of this {@code KeyAgreement} object.
      *
      * <p>This is the same name that was specified in one of the
-     * <code>getInstance</code> calls that created this
-     * <code>KeyAgreement</code> object.
+     * {@code getInstance} calls that created this
+     * {@code KeyAgreement} object.
      *
-     * @return the algorithm name of this <code>KeyAgreement</code> object.
+     * @return the algorithm name of this {@code KeyAgreement} object.
      */
     public final String getAlgorithm() {
         return this.algorithm;
     }
 
     /**
-     * Returns a <code>KeyAgreement</code> object that implements the
+     * Returns a {@code KeyAgreement} object that implements the
      * specified key agreement algorithm.
      *
      * <p> This method traverses the list of registered security Providers,
@@ -157,7 +157,7 @@
      * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
-     * @return the new <code>KeyAgreement</code> object.
+     * @return the new {@code KeyAgreement} object.
      *
      * @exception NullPointerException if the specified algorithm
      *          is null.
@@ -186,7 +186,7 @@
     }
 
     /**
-     * Returns a <code>KeyAgreement</code> object that implements the
+     * Returns a {@code KeyAgreement} object that implements the
      * specified key agreement algorithm.
      *
      * <p> A new KeyAgreement object encapsulating the
@@ -206,7 +206,7 @@
      *
      * @param provider the name of the provider.
      *
-     * @return the new <code>KeyAgreement</code> object.
+     * @return the new {@code KeyAgreement} object.
      *
      * @exception NullPointerException if the specified algorithm
      *          is null.
@@ -218,7 +218,7 @@
      * @exception NoSuchProviderException if the specified provider is not
      *          registered in the security provider list.
      *
-     * @exception IllegalArgumentException if the <code>provider</code>
+     * @exception IllegalArgumentException if the {@code provider}
      *          is null or empty.
      *
      * @see java.security.Provider
@@ -233,7 +233,7 @@
     }
 
     /**
-     * Returns a <code>KeyAgreement</code> object that implements the
+     * Returns a {@code KeyAgreement} object that implements the
      * specified key agreement algorithm.
      *
      * <p> A new KeyAgreement object encapsulating the
@@ -250,7 +250,7 @@
      *
      * @param provider the provider.
      *
-     * @return the new <code>KeyAgreement</code> object.
+     * @return the new {@code KeyAgreement} object.
      *
      * @exception NullPointerException if the specified algorithm
      *          is null.
@@ -259,7 +259,7 @@
      *          implementation for the specified algorithm is not available
      *          from the specified Provider object.
      *
-     * @exception IllegalArgumentException if the <code>provider</code>
+     * @exception IllegalArgumentException if the {@code provider}
      *          is null.
      *
      * @see java.security.Provider
@@ -408,9 +408,9 @@
     }
 
     /**
-     * Returns the provider of this <code>KeyAgreement</code> object.
+     * Returns the provider of this {@code KeyAgreement} object.
      *
-     * @return the provider of this <code>KeyAgreement</code> object
+     * @return the provider of this {@code KeyAgreement} object
      */
     public final Provider getProvider() {
         chooseFirstProvider();
@@ -447,10 +447,10 @@
      * parameters required for this key agreement.
      *
      * <p> If the key agreement algorithm requires random bytes, it gets them
-     * from the given source of randomness, <code>random</code>.
+     * from the given source of randomness, {@code random}.
      * However, if the underlying
      * algorithm implementation does not require any random bytes,
-     * <code>random</code> is ignored.
+     * {@code random} is ignored.
      *
      * @param key the party's private information. For example, in the case
      * of the Diffie-Hellman key agreement, this would be the party's own
@@ -570,9 +570,9 @@
     /**
      * Generates the shared secret and returns it in a new buffer.
      *
-     * <p>This method resets this <code>KeyAgreement</code> object, so that it
+     * <p>This method resets this {@code KeyAgreement} object, so that it
      * can be reused for further key agreements. Unless this key agreement is
-     * reinitialized with one of the <code>init</code> methods, the same
+     * reinitialized with one of the {@code init} methods, the same
      * private information and algorithm parameters will be used for
      * subsequent key agreements.
      *
@@ -588,23 +588,23 @@
 
     /**
      * Generates the shared secret, and places it into the buffer
-     * <code>sharedSecret</code>, beginning at <code>offset</code> inclusive.
+     * {@code sharedSecret}, beginning at {@code offset} inclusive.
      *
-     * <p>If the <code>sharedSecret</code> buffer is too small to hold the
-     * result, a <code>ShortBufferException</code> is thrown.
+     * <p>If the {@code sharedSecret} buffer is too small to hold the
+     * result, a {@code ShortBufferException} is thrown.
      * In this case, this call should be repeated with a larger output buffer.
      *
-     * <p>This method resets this <code>KeyAgreement</code> object, so that it
+     * <p>This method resets this {@code KeyAgreement} object, so that it
      * can be reused for further key agreements. Unless this key agreement is
-     * reinitialized with one of the <code>init</code> methods, the same
+     * reinitialized with one of the {@code init} methods, the same
      * private information and algorithm parameters will be used for
      * subsequent key agreements.
      *
      * @param sharedSecret the buffer for the shared secret
-     * @param offset the offset in <code>sharedSecret</code> where the
+     * @param offset the offset in {@code sharedSecret} where the
      * shared secret will be stored
      *
-     * @return the number of bytes placed into <code>sharedSecret</code>
+     * @return the number of bytes placed into {@code sharedSecret}
      *
      * @exception IllegalStateException if this key agreement has not been
      * completed yet
@@ -619,12 +619,12 @@
     }
 
     /**
-     * Creates the shared secret and returns it as a <code>SecretKey</code>
+     * Creates the shared secret and returns it as a {@code SecretKey}
      * object of the specified algorithm.
      *
-     * <p>This method resets this <code>KeyAgreement</code> object, so that it
+     * <p>This method resets this {@code KeyAgreement} object, so that it
      * can be reused for further key agreements. Unless this key agreement is
-     * reinitialized with one of the <code>init</code> methods, the same
+     * reinitialized with one of the {@code init} methods, the same
      * private information and algorithm parameters will be used for
      * subsequent key agreements.
      *
diff --git a/jdk/src/java.base/share/classes/javax/crypto/KeyGenerator.java b/jdk/src/java.base/share/classes/javax/crypto/KeyGenerator.java
index 6363ec4..8f07bcc 100644
--- a/jdk/src/java.base/share/classes/javax/crypto/KeyGenerator.java
+++ b/jdk/src/java.base/share/classes/javax/crypto/KeyGenerator.java
@@ -38,7 +38,7 @@
 /**
  * This class provides the functionality of a secret (symmetric) key generator.
  *
- * <p>Key generators are constructed using one of the <code>getInstance</code>
+ * <p>Key generators are constructed using one of the {@code getInstance}
  * class methods of this class.
  *
  * <p>KeyGenerator objects are reusable, i.e., after a key has been
@@ -57,14 +57,14 @@
  * {@link #init(int, java.security.SecureRandom) init}
  * method in this KeyGenerator class that takes these two universally
  * shared types of arguments. There is also one that takes just a
- * <code>keysize</code> argument, and uses the SecureRandom implementation
+ * {@code keysize} argument, and uses the SecureRandom implementation
  * of the highest-priority installed provider as the source of randomness
  * (or a system-provided source of randomness if none of the installed
  * providers supply a SecureRandom implementation), and one that takes just a
  * source of randomness.
  *
  * <p>Since no other parameters are specified when you call the above
- * algorithm-independent <code>init</code> methods, it is up to the
+ * algorithm-independent {@code init} methods, it is up to the
  * provider what to do about the algorithm-specific parameters (if any) to be
  * associated with each of the keys.
  *
@@ -72,8 +72,8 @@
  * <p>For situations where a set of algorithm-specific parameters already
  * exists, there are two
  * {@link #init(java.security.spec.AlgorithmParameterSpec) init}
- * methods that have an <code>AlgorithmParameterSpec</code>
- * argument. One also has a <code>SecureRandom</code> argument, while the
+ * methods that have an {@code AlgorithmParameterSpec}
+ * argument. One also has a {@code SecureRandom} argument, while the
  * other uses the SecureRandom implementation
  * of the highest-priority installed provider as the source of randomness
  * (or a system-provided source of randomness if none of the installed
@@ -81,18 +81,18 @@
  * </ul>
  *
  * <p>In case the client does not explicitly initialize the KeyGenerator
- * (via a call to an <code>init</code> method), each provider must
+ * (via a call to an {@code init} method), each provider must
  * supply (and document) a default initialization.
  *
  * <p> Every implementation of the Java platform is required to support the
- * following standard <code>KeyGenerator</code> algorithms with the keysizes in
+ * following standard {@code KeyGenerator} algorithms with the keysizes in
  * parentheses:
  * <ul>
- * <li><tt>AES</tt> (128)</li>
- * <li><tt>DES</tt> (56)</li>
- * <li><tt>DESede</tt> (168)</li>
- * <li><tt>HmacSHA1</tt></li>
- * <li><tt>HmacSHA256</tt></li>
+ * <li>{@code AES} (128)</li>
+ * <li>{@code DES} (56)</li>
+ * <li>{@code DESede} (168)</li>
+ * <li>{@code HmacSHA1}</li>
+ * <li>{@code HmacSHA256}</li>
  * </ul>
  * These algorithms are described in the <a href=
  * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyGenerator">
@@ -177,20 +177,20 @@
     }
 
     /**
-     * Returns the algorithm name of this <code>KeyGenerator</code> object.
+     * Returns the algorithm name of this {@code KeyGenerator} object.
      *
      * <p>This is the same name that was specified in one of the
-     * <code>getInstance</code> calls that created this
-     * <code>KeyGenerator</code> object.
+     * {@code getInstance} calls that created this
+     * {@code KeyGenerator} object.
      *
-     * @return the algorithm name of this <code>KeyGenerator</code> object.
+     * @return the algorithm name of this {@code KeyGenerator} object.
      */
     public final String getAlgorithm() {
         return this.algorithm;
     }
 
     /**
-     * Returns a <code>KeyGenerator</code> object that generates secret keys
+     * Returns a {@code KeyGenerator} object that generates secret keys
      * for the specified algorithm.
      *
      * <p> This method traverses the list of registered security Providers,
@@ -208,7 +208,7 @@
      * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
-     * @return the new <code>KeyGenerator</code> object.
+     * @return the new {@code KeyGenerator} object.
      *
      * @exception NullPointerException if the specified algorithm is null.
      *
@@ -224,7 +224,7 @@
     }
 
     /**
-     * Returns a <code>KeyGenerator</code> object that generates secret keys
+     * Returns a {@code KeyGenerator} object that generates secret keys
      * for the specified algorithm.
      *
      * <p> A new KeyGenerator object encapsulating the
@@ -243,7 +243,7 @@
      *
      * @param provider the name of the provider.
      *
-     * @return the new <code>KeyGenerator</code> object.
+     * @return the new {@code KeyGenerator} object.
      *
      * @exception NullPointerException if the specified algorithm is null.
      *
@@ -254,7 +254,7 @@
      * @exception NoSuchProviderException if the specified provider is not
      *          registered in the security provider list.
      *
-     * @exception IllegalArgumentException if the <code>provider</code>
+     * @exception IllegalArgumentException if the {@code provider}
      *          is null or empty.
      *
      * @see java.security.Provider
@@ -269,7 +269,7 @@
     }
 
     /**
-     * Returns a <code>KeyGenerator</code> object that generates secret keys
+     * Returns a {@code KeyGenerator} object that generates secret keys
      * for the specified algorithm.
      *
      * <p> A new KeyGenerator object encapsulating the
@@ -285,7 +285,7 @@
      *
      * @param provider the provider.
      *
-     * @return the new <code>KeyGenerator</code> object.
+     * @return the new {@code KeyGenerator} object.
      *
      * @exception NullPointerException if the specified algorithm is null.
      *
@@ -293,7 +293,7 @@
      *          implementation for the specified algorithm is not available
      *          from the specified Provider object.
      *
-     * @exception IllegalArgumentException if the <code>provider</code>
+     * @exception IllegalArgumentException if the {@code provider}
      *          is null.
      *
      * @see java.security.Provider
@@ -307,9 +307,9 @@
     }
 
     /**
-     * Returns the provider of this <code>KeyGenerator</code> object.
+     * Returns the provider of this {@code KeyGenerator} object.
      *
-     * @return the provider of this <code>KeyGenerator</code> object
+     * @return the provider of this {@code KeyGenerator} object
      */
     public final Provider getProvider() {
         synchronized (lock) {
@@ -437,7 +437,7 @@
      * @param params the key generation parameters
      * @param random the source of randomness for this key generator
      *
-     * @exception InvalidAlgorithmParameterException if <code>params</code> is
+     * @exception InvalidAlgorithmParameterException if {@code params} is
      * inappropriate for this key generator
      */
     public final void init(AlgorithmParameterSpec params, SecureRandom random)
diff --git a/jdk/src/java.base/share/classes/javax/crypto/Mac.java b/jdk/src/java.base/share/classes/javax/crypto/Mac.java
index 8a497da..9f85e7a 100644
--- a/jdk/src/java.base/share/classes/javax/crypto/Mac.java
+++ b/jdk/src/java.base/share/classes/javax/crypto/Mac.java
@@ -54,11 +54,11 @@
  * specified in RFC 2104.
  *
  * <p> Every implementation of the Java platform is required to support
- * the following standard <code>Mac</code> algorithms:
+ * the following standard {@code Mac} algorithms:
  * <ul>
- * <li><tt>HmacMD5</tt></li>
- * <li><tt>HmacSHA1</tt></li>
- * <li><tt>HmacSHA256</tt></li>
+ * <li>{@code HmacMD5}</li>
+ * <li>{@code HmacSHA1}</li>
+ * <li>{@code HmacSHA256}</li>
  * </ul>
  * These algorithms are described in the
  * <a href="{@docRoot}/../technotes/guides/security/StandardNames.html#Mac">
@@ -127,20 +127,20 @@
     }
 
     /**
-     * Returns the algorithm name of this <code>Mac</code> object.
+     * Returns the algorithm name of this {@code Mac} object.
      *
      * <p>This is the same name that was specified in one of the
-     * <code>getInstance</code> calls that created this
-     * <code>Mac</code> object.
+     * {@code getInstance} calls that created this
+     * {@code Mac} object.
      *
-     * @return the algorithm name of this <code>Mac</code> object.
+     * @return the algorithm name of this {@code Mac} object.
      */
     public final String getAlgorithm() {
         return this.algorithm;
     }
 
     /**
-     * Returns a <code>Mac</code> object that implements the
+     * Returns a {@code Mac} object that implements the
      * specified MAC algorithm.
      *
      * <p> This method traverses the list of registered security Providers,
@@ -158,7 +158,7 @@
      * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
-     * @return the new <code>Mac</code> object.
+     * @return the new {@code Mac} object.
      *
      * @exception NoSuchAlgorithmException if no Provider supports a
      *          MacSpi implementation for the
@@ -183,7 +183,7 @@
     }
 
     /**
-     * Returns a <code>Mac</code> object that implements the
+     * Returns a {@code Mac} object that implements the
      * specified MAC algorithm.
      *
      * <p> A new Mac object encapsulating the
@@ -202,7 +202,7 @@
      *
      * @param provider the name of the provider.
      *
-     * @return the new <code>Mac</code> object.
+     * @return the new {@code Mac} object.
      *
      * @exception NoSuchAlgorithmException if a MacSpi
      *          implementation for the specified algorithm is not
@@ -211,7 +211,7 @@
      * @exception NoSuchProviderException if the specified provider is not
      *          registered in the security provider list.
      *
-     * @exception IllegalArgumentException if the <code>provider</code>
+     * @exception IllegalArgumentException if the {@code provider}
      *          is null or empty.
      *
      * @see java.security.Provider
@@ -224,7 +224,7 @@
     }
 
     /**
-     * Returns a <code>Mac</code> object that implements the
+     * Returns a {@code Mac} object that implements the
      * specified MAC algorithm.
      *
      * <p> A new Mac object encapsulating the
@@ -240,13 +240,13 @@
      *
      * @param provider the provider.
      *
-     * @return the new <code>Mac</code> object.
+     * @return the new {@code Mac} object.
      *
      * @exception NoSuchAlgorithmException if a MacSpi
      *          implementation for the specified algorithm is not available
      *          from the specified Provider object.
      *
-     * @exception IllegalArgumentException if the <code>provider</code>
+     * @exception IllegalArgumentException if the {@code provider}
      *          is null.
      *
      * @see java.security.Provider
@@ -380,9 +380,9 @@
     }
 
     /**
-     * Returns the provider of this <code>Mac</code> object.
+     * Returns the provider of this {@code Mac} object.
      *
-     * @return the provider of this <code>Mac</code> object.
+     * @return the provider of this {@code Mac} object.
      */
     public final Provider getProvider() {
         chooseFirstProvider();
@@ -400,7 +400,7 @@
     }
 
     /**
-     * Initializes this <code>Mac</code> object with the given key.
+     * Initializes this {@code Mac} object with the given key.
      *
      * @param key the key.
      *
@@ -426,7 +426,7 @@
     }
 
     /**
-     * Initializes this <code>Mac</code> object with the given key and
+     * Initializes this {@code Mac} object with the given key and
      * algorithm parameters.
      *
      * @param key the key.
@@ -457,7 +457,7 @@
      *
      * @param input the input byte to be processed.
      *
-     * @exception IllegalStateException if this <code>Mac</code> has not been
+     * @exception IllegalStateException if this {@code Mac} has not been
      * initialized.
      */
     public final void update(byte input) throws IllegalStateException {
@@ -473,7 +473,7 @@
      *
      * @param input the array of bytes to be processed.
      *
-     * @exception IllegalStateException if this <code>Mac</code> has not been
+     * @exception IllegalStateException if this {@code Mac} has not been
      * initialized.
      */
     public final void update(byte[] input) throws IllegalStateException {
@@ -487,14 +487,14 @@
     }
 
     /**
-     * Processes the first <code>len</code> bytes in <code>input</code>,
-     * starting at <code>offset</code> inclusive.
+     * Processes the first {@code len} bytes in {@code input},
+     * starting at {@code offset} inclusive.
      *
      * @param input the input buffer.
-     * @param offset the offset in <code>input</code> where the input starts.
+     * @param offset the offset in {@code input} where the input starts.
      * @param len the number of bytes to process.
      *
-     * @exception IllegalStateException if this <code>Mac</code> has not been
+     * @exception IllegalStateException if this {@code Mac} has not been
      * initialized.
      */
     public final void update(byte[] input, int offset, int len)
@@ -512,14 +512,14 @@
     }
 
     /**
-     * Processes <code>input.remaining()</code> bytes in the ByteBuffer
-     * <code>input</code>, starting at <code>input.position()</code>.
+     * Processes {@code input.remaining()} bytes in the ByteBuffer
+     * {@code input}, starting at {@code input.position()}.
      * Upon return, the buffer's position will be equal to its limit;
      * its limit will not have changed.
      *
      * @param input the ByteBuffer
      *
-     * @exception IllegalStateException if this <code>Mac</code> has not been
+     * @exception IllegalStateException if this {@code Mac} has not been
      * initialized.
      * @since 1.5
      */
@@ -537,20 +537,20 @@
     /**
      * Finishes the MAC operation.
      *
-     * <p>A call to this method resets this <code>Mac</code> object to the
+     * <p>A call to this method resets this {@code Mac} object to the
      * state it was in when previously initialized via a call to
-     * <code>init(Key)</code> or
-     * <code>init(Key, AlgorithmParameterSpec)</code>.
+     * {@code init(Key)} or
+     * {@code init(Key, AlgorithmParameterSpec)}.
      * That is, the object is reset and available to generate another MAC from
-     * the same key, if desired, via new calls to <code>update</code> and
-     * <code>doFinal</code>.
-     * (In order to reuse this <code>Mac</code> object with a different key,
-     * it must be reinitialized via a call to <code>init(Key)</code> or
-     * <code>init(Key, AlgorithmParameterSpec)</code>.
+     * the same key, if desired, via new calls to {@code update} and
+     * {@code doFinal}.
+     * (In order to reuse this {@code Mac} object with a different key,
+     * it must be reinitialized via a call to {@code init(Key)} or
+     * {@code init(Key, AlgorithmParameterSpec)}.
      *
      * @return the MAC result.
      *
-     * @exception IllegalStateException if this <code>Mac</code> has not been
+     * @exception IllegalStateException if this {@code Mac} has not been
      * initialized.
      */
     public final byte[] doFinal() throws IllegalStateException {
@@ -566,27 +566,27 @@
     /**
      * Finishes the MAC operation.
      *
-     * <p>A call to this method resets this <code>Mac</code> object to the
+     * <p>A call to this method resets this {@code Mac} object to the
      * state it was in when previously initialized via a call to
-     * <code>init(Key)</code> or
-     * <code>init(Key, AlgorithmParameterSpec)</code>.
+     * {@code init(Key)} or
+     * {@code init(Key, AlgorithmParameterSpec)}.
      * That is, the object is reset and available to generate another MAC from
-     * the same key, if desired, via new calls to <code>update</code> and
-     * <code>doFinal</code>.
-     * (In order to reuse this <code>Mac</code> object with a different key,
-     * it must be reinitialized via a call to <code>init(Key)</code> or
-     * <code>init(Key, AlgorithmParameterSpec)</code>.
+     * the same key, if desired, via new calls to {@code update} and
+     * {@code doFinal}.
+     * (In order to reuse this {@code Mac} object with a different key,
+     * it must be reinitialized via a call to {@code init(Key)} or
+     * {@code init(Key, AlgorithmParameterSpec)}.
      *
-     * <p>The MAC result is stored in <code>output</code>, starting at
-     * <code>outOffset</code> inclusive.
+     * <p>The MAC result is stored in {@code output}, starting at
+     * {@code outOffset} inclusive.
      *
      * @param output the buffer where the MAC result is stored
-     * @param outOffset the offset in <code>output</code> where the MAC is
+     * @param outOffset the offset in {@code output} where the MAC is
      * stored
      *
      * @exception ShortBufferException if the given output buffer is too small
      * to hold the result
-     * @exception IllegalStateException if this <code>Mac</code> has not been
+     * @exception IllegalStateException if this {@code Mac} has not been
      * initialized.
      */
     public final void doFinal(byte[] output, int outOffset)
@@ -609,21 +609,21 @@
     /**
      * Processes the given array of bytes and finishes the MAC operation.
      *
-     * <p>A call to this method resets this <code>Mac</code> object to the
+     * <p>A call to this method resets this {@code Mac} object to the
      * state it was in when previously initialized via a call to
-     * <code>init(Key)</code> or
-     * <code>init(Key, AlgorithmParameterSpec)</code>.
+     * {@code init(Key)} or
+     * {@code init(Key, AlgorithmParameterSpec)}.
      * That is, the object is reset and available to generate another MAC from
-     * the same key, if desired, via new calls to <code>update</code> and
-     * <code>doFinal</code>.
-     * (In order to reuse this <code>Mac</code> object with a different key,
-     * it must be reinitialized via a call to <code>init(Key)</code> or
-     * <code>init(Key, AlgorithmParameterSpec)</code>.
+     * the same key, if desired, via new calls to {@code update} and
+     * {@code doFinal}.
+     * (In order to reuse this {@code Mac} object with a different key,
+     * it must be reinitialized via a call to {@code init(Key)} or
+     * {@code init(Key, AlgorithmParameterSpec)}.
      *
      * @param input data in bytes
      * @return the MAC result.
      *
-     * @exception IllegalStateException if this <code>Mac</code> has not been
+     * @exception IllegalStateException if this {@code Mac} has not been
      * initialized.
      */
     public final byte[] doFinal(byte[] input) throws IllegalStateException
@@ -637,18 +637,18 @@
     }
 
     /**
-     * Resets this <code>Mac</code> object.
+     * Resets this {@code Mac} object.
      *
-     * <p>A call to this method resets this <code>Mac</code> object to the
+     * <p>A call to this method resets this {@code Mac} object to the
      * state it was in when previously initialized via a call to
-     * <code>init(Key)</code> or
-     * <code>init(Key, AlgorithmParameterSpec)</code>.
+     * {@code init(Key)} or
+     * {@code init(Key, AlgorithmParameterSpec)}.
      * That is, the object is reset and available to generate another MAC from
-     * the same key, if desired, via new calls to <code>update</code> and
-     * <code>doFinal</code>.
-     * (In order to reuse this <code>Mac</code> object with a different key,
-     * it must be reinitialized via a call to <code>init(Key)</code> or
-     * <code>init(Key, AlgorithmParameterSpec)</code>.
+     * the same key, if desired, via new calls to {@code update} and
+     * {@code doFinal}.
+     * (In order to reuse this {@code Mac} object with a different key,
+     * it must be reinitialized via a call to {@code init(Key)} or
+     * {@code init(Key, AlgorithmParameterSpec)}.
      */
     public final void reset() {
         chooseFirstProvider();
@@ -661,7 +661,7 @@
      * @return a clone if the provider implementation is cloneable.
      *
      * @exception CloneNotSupportedException if this is called on a
-     * delegate that does not support <code>Cloneable</code>.
+     * delegate that does not support {@code Cloneable}.
      */
     public final Object clone() throws CloneNotSupportedException {
         chooseFirstProvider();
diff --git a/jdk/src/java.base/share/classes/javax/crypto/SecretKeyFactory.java b/jdk/src/java.base/share/classes/javax/crypto/SecretKeyFactory.java
index 4160147..2be7059 100644
--- a/jdk/src/java.base/share/classes/javax/crypto/SecretKeyFactory.java
+++ b/jdk/src/java.base/share/classes/javax/crypto/SecretKeyFactory.java
@@ -38,7 +38,7 @@
  * This class represents a factory for secret keys.
  *
  * <P> Key factories are used to convert <I>keys</I> (opaque
- * cryptographic keys of type <code>Key</code>) into <I>key specifications</I>
+ * cryptographic keys of type {@code Key}) into <I>key specifications</I>
  * (transparent representations of the underlying key material), and vice
  * versa.
  * Secret key factories operate only on secret (symmetric) keys.
@@ -53,16 +53,16 @@
  * {@link #getKeySpec(javax.crypto.SecretKey, java.lang.Class) getKeySpec}
  * methods.
  * For example, the DES secret-key factory supplied by the "SunJCE" provider
- * supports <code>DESKeySpec</code> as a transparent representation of DES
+ * supports {@code DESKeySpec} as a transparent representation of DES
  * keys, and that provider's secret-key factory for Triple DES keys supports
- * <code>DESedeKeySpec</code> as a transparent representation of Triple DES
+ * {@code DESedeKeySpec} as a transparent representation of Triple DES
  * keys.
  *
  * <p> Every implementation of the Java platform is required to support the
- * following standard <code>SecretKeyFactory</code> algorithms:
+ * following standard {@code SecretKeyFactory} algorithms:
  * <ul>
- * <li><tt>DES</tt></li>
- * <li><tt>DESede</tt></li>
+ * <li>{@code DES}</li>
+ * <li>{@code DESede}</li>
  * </ul>
  * These algorithms are described in the <a href=
  * "{@docRoot}/../technotes/guides/security/StandardNames.html#SecretKeyFactory">
@@ -125,7 +125,7 @@
     }
 
     /**
-     * Returns a <code>SecretKeyFactory</code> object that converts
+     * Returns a {@code SecretKeyFactory} object that converts
      * secret keys of the specified algorithm.
      *
      * <p> This method traverses the list of registered security Providers,
@@ -144,7 +144,7 @@
      * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
-     * @return the new <code>SecretKeyFactory</code> object.
+     * @return the new {@code SecretKeyFactory} object.
      *
      * @exception NullPointerException if the specified algorithm
      *          is null.
@@ -161,7 +161,7 @@
     }
 
     /**
-     * Returns a <code>SecretKeyFactory</code> object that converts
+     * Returns a {@code SecretKeyFactory} object that converts
      * secret keys of the specified algorithm.
      *
      * <p> A new SecretKeyFactory object encapsulating the
@@ -181,7 +181,7 @@
      *
      * @param provider the name of the provider.
      *
-     * @return the new <code>SecretKeyFactory</code> object.
+     * @return the new {@code SecretKeyFactory} object.
      *
      * @exception NoSuchAlgorithmException if a SecretKeyFactorySpi
      *          implementation for the specified algorithm is not
@@ -193,7 +193,7 @@
      * @throws NoSuchProviderException if the specified provider is not
      *          registered in the security provider list.
      *
-     * @exception IllegalArgumentException if the <code>provider</code>
+     * @exception IllegalArgumentException if the {@code provider}
      *          is null or empty.
      *
      * @see java.security.Provider
@@ -208,7 +208,7 @@
     }
 
     /**
-     * Returns a <code>SecretKeyFactory</code> object that converts
+     * Returns a {@code SecretKeyFactory} object that converts
      * secret keys of the specified algorithm.
      *
      * <p> A new SecretKeyFactory object encapsulating the
@@ -225,7 +225,7 @@
      *
      * @param provider the provider.
      *
-     * @return the new <code>SecretKeyFactory</code> object.
+     * @return the new {@code SecretKeyFactory} object.
      *
      * @exception NullPointerException if the specified algorithm
      * is null.
@@ -234,7 +234,7 @@
      *          implementation for the specified algorithm is not available
      *          from the specified Provider object.
      *
-     * @exception IllegalArgumentException if the <code>provider</code>
+     * @exception IllegalArgumentException if the {@code provider}
      *          is null.
      *
      * @see java.security.Provider
@@ -248,9 +248,9 @@
     }
 
     /**
-     * Returns the provider of this <code>SecretKeyFactory</code> object.
+     * Returns the provider of this {@code SecretKeyFactory} object.
      *
-     * @return the provider of this <code>SecretKeyFactory</code> object
+     * @return the provider of this {@code SecretKeyFactory} object
      */
     public final Provider getProvider() {
         synchronized (lock) {
@@ -261,13 +261,13 @@
     }
 
     /**
-     * Returns the algorithm name of this <code>SecretKeyFactory</code> object.
+     * Returns the algorithm name of this {@code SecretKeyFactory} object.
      *
      * <p>This is the same name that was specified in one of the
-     * <code>getInstance</code> calls that created this
-     * <code>SecretKeyFactory</code> object.
+     * {@code getInstance} calls that created this
+     * {@code SecretKeyFactory} object.
      *
-     * @return the algorithm name of this <code>SecretKeyFactory</code>
+     * @return the algorithm name of this {@code SecretKeyFactory}
      * object.
      */
     public final String getAlgorithm() {
@@ -314,7 +314,7 @@
     }
 
     /**
-     * Generates a <code>SecretKey</code> object from the provided key
+     * Generates a {@code SecretKey} object from the provided key
      * specification (key material).
      *
      * @param keySpec the specification (key material) of the secret key
@@ -361,9 +361,9 @@
      *
      * @exception InvalidKeySpecException if the requested key specification is
      * inappropriate for the given key (e.g., the algorithms associated with
-     * <code>key</code> and <code>keySpec</code> do not match, or
-     * <code>key</code> references a key on a cryptographic hardware device
-     * whereas <code>keySpec</code> is the specification of a software-based
+     * {@code key} and {@code keySpec} do not match, or
+     * {@code key} references a key on a cryptographic hardware device
+     * whereas {@code keySpec} is the specification of a software-based
      * key), or the given key cannot be dealt with
      * (e.g., the given key has an algorithm or format not supported by this
      * secret-key factory).
diff --git a/jdk/src/java.base/share/classes/javax/crypto/spec/RC2ParameterSpec.java b/jdk/src/java.base/share/classes/javax/crypto/spec/RC2ParameterSpec.java
index 766b317..a1f6421 100644
--- a/jdk/src/java.base/share/classes/javax/crypto/spec/RC2ParameterSpec.java
+++ b/jdk/src/java.base/share/classes/javax/crypto/spec/RC2ParameterSpec.java
@@ -35,7 +35,7 @@
  * <p> The parameters consist of an effective key size and optionally
  * an 8-byte initialization vector (IV) (only in feedback mode).
  *
- * <p> This class can be used to initialize a <code>Cipher</code> object that
+ * <p> This class can be used to initialize a {@code Cipher} object that
  * implements the <i>RC2</i> algorithm.
  *
  * @author Jan Luehe
@@ -62,12 +62,12 @@
      * (in bits) and an 8-byte IV.
      *
      * <p> The bytes that constitute the IV are those between
-     * <code>iv[0]</code> and <code>iv[7]</code> inclusive.
+     * {@code iv[0]} and {@code iv[7]} inclusive.
      *
      * @param effectiveKeyBits the effective key size in bits.
      * @param iv the buffer with the 8-byte IV. The first 8 bytes of
      * the buffer are copied to protect against subsequent modification.
-     * @exception IllegalArgumentException if <code>iv</code> is null.
+     * @exception IllegalArgumentException if {@code iv} is null.
      */
     public RC2ParameterSpec(int effectiveKeyBits, byte[] iv) {
         this(effectiveKeyBits, iv, 0);
@@ -77,18 +77,18 @@
      * Constructs a parameter set for RC2 from the given effective key size
      * (in bits) and IV.
      *
-     * <p> The IV is taken from <code>iv</code>, starting at
-     * <code>offset</code> inclusive.
+     * <p> The IV is taken from {@code iv}, starting at
+     * {@code offset} inclusive.
      * The bytes that constitute the IV are those between
-     * <code>iv[offset]</code> and <code>iv[offset+7]</code> inclusive.
+     * {@code iv[offset]} and {@code iv[offset+7]} inclusive.
      *
      * @param effectiveKeyBits the effective key size in bits.
      * @param iv the buffer with the IV. The first 8 bytes
-     * of the buffer beginning at <code>offset</code> inclusive
+     * of the buffer beginning at {@code offset} inclusive
      * are copied to protect against subsequent modification.
-     * @param offset the offset in <code>iv</code> where the 8-byte IV
+     * @param offset the offset in {@code iv} where the 8-byte IV
      * starts.
-     * @exception IllegalArgumentException if <code>iv</code> is null.
+     * @exception IllegalArgumentException if {@code iv} is null.
      */
     public RC2ParameterSpec(int effectiveKeyBits, byte[] iv, int offset) {
         this.effectiveKeyBits = effectiveKeyBits;
@@ -124,12 +124,12 @@
      * Tests for equality between the specified object and this
      * object. Two RC2ParameterSpec objects are considered equal if their
      * effective key sizes and IVs are equal.
-     * (Two IV references are considered equal if both are <tt>null</tt>.)
+     * (Two IV references are considered equal if both are {@code null}.)
      *
      * @param obj the object to test for equality with this object.
      *
      * @return true if the objects are considered equal, false if
-     * <code>obj</code> is null or otherwise.
+     * {@code obj} is null or otherwise.
      */
     public boolean equals(Object obj) {
         if (obj == this) {
diff --git a/jdk/src/java.base/share/classes/javax/crypto/spec/RC5ParameterSpec.java b/jdk/src/java.base/share/classes/javax/crypto/spec/RC5ParameterSpec.java
index 5d8f09f..07bd42d 100644
--- a/jdk/src/java.base/share/classes/javax/crypto/spec/RC5ParameterSpec.java
+++ b/jdk/src/java.base/share/classes/javax/crypto/spec/RC5ParameterSpec.java
@@ -35,7 +35,7 @@
  * <p> The parameters consist of a version number, a rounds count, a word
  * size, and optionally an initialization vector (IV) (only in feedback mode).
  *
- * <p> This class can be used to initialize a <code>Cipher</code> object that
+ * <p> This class can be used to initialize a {@code Cipher} object that
  * implements the <i>RC5</i> algorithm as supplied by
  * <a href="http://www.rsa.com">RSA Security LLC</a>,
  * or any parties authorized by RSA Security.
@@ -71,16 +71,16 @@
      *
      * <p> Note that the size of the IV (block size) must be twice the word
      * size. The bytes that constitute the IV are those between
-     * <code>iv[0]</code> and <code>iv[2*(wordSize/8)-1]</code> inclusive.
+     * {@code iv[0]} and {@code iv[2*(wordSize/8)-1]} inclusive.
      *
      * @param version the version.
      * @param rounds the number of rounds.
      * @param wordSize the word size in bits.
-     * @param iv the buffer with the IV. The first <code>2*(wordSize/8)
-     * </code> bytes of the buffer are copied to protect against subsequent
+     * @param iv the buffer with the IV. The first {@code 2*(wordSize/8)}
+     * bytes of the buffer are copied to protect against subsequent
      * modification.
-     * @exception IllegalArgumentException if <code>iv</code> is
-     * <code>null</code> or {@code (iv.length < 2 * (wordSize / 8))}
+     * @exception IllegalArgumentException if {@code iv} is
+     * {@code null} or {@code (iv.length < 2 * (wordSize / 8))}
      */
     public RC5ParameterSpec(int version, int rounds, int wordSize, byte[] iv) {
         this(version, rounds, wordSize, iv, 0);
@@ -90,23 +90,23 @@
      * Constructs a parameter set for RC5 from the given version, number of
      * rounds, word size (in bits), and IV.
      *
-     * <p> The IV is taken from <code>iv</code>, starting at
-     * <code>offset</code> inclusive.
+     * <p> The IV is taken from {@code iv}, starting at
+     * {@code offset} inclusive.
      * Note that the size of the IV (block size), starting at
-     * <code>offset</code> inclusive, must be twice the word size.
+     * {@code offset} inclusive, must be twice the word size.
      * The bytes that constitute the IV are those between
-     * <code>iv[offset]</code> and <code>iv[offset+2*(wordSize/8)-1]</code>
+     * {@code iv[offset]} and {@code iv[offset+2*(wordSize/8)-1]}
      * inclusive.
      *
      * @param version the version.
      * @param rounds the number of rounds.
      * @param wordSize the word size in bits.
-     * @param iv the buffer with the IV. The first <code>2*(wordSize/8)
-     * </code> bytes of the buffer beginning at <code>offset</code>
+     * @param iv the buffer with the IV. The first {@code 2*(wordSize/8)}
+     * bytes of the buffer beginning at {@code offset}
      * inclusive are copied to protect against subsequent modification.
-     * @param offset the offset in <code>iv</code> where the IV starts.
-     * @exception IllegalArgumentException if <code>iv</code> is
-     * <code>null</code> or
+     * @param offset the offset in {@code iv} where the IV starts.
+     * @exception IllegalArgumentException if {@code iv} is
+     * {@code null} or
      * {@code (iv.length - offset < 2 * (wordSize / 8))}
      */
     public RC5ParameterSpec(int version, int rounds, int wordSize,
@@ -164,12 +164,12 @@
      * Tests for equality between the specified object and this
      * object. Two RC5ParameterSpec objects are considered equal if their
      * version numbers, number of rounds, word sizes, and IVs are equal.
-     * (Two IV references are considered equal if both are <tt>null</tt>.)
+     * (Two IV references are considered equal if both are {@code null}.)
      *
      * @param obj the object to test for equality with this object.
      *
      * @return true if the objects are considered equal, false if
-     * <code>obj</code> is null or otherwise.
+     * {@code obj} is null or otherwise.
      */
     public boolean equals(Object obj) {
         if (obj == this) {
diff --git a/jdk/src/java.base/share/classes/sun/invoke/util/BytecodeName.java b/jdk/src/java.base/share/classes/sun/invoke/util/BytecodeName.java
index 9bebac8..26b4076 100644
--- a/jdk/src/java.base/share/classes/sun/invoke/util/BytecodeName.java
+++ b/jdk/src/java.base/share/classes/sun/invoke/util/BytecodeName.java
@@ -295,7 +295,7 @@
      * (The safe name might possibly be mangled to hide further dangerous characters.)
      * For example, the qualified class name {@code java/lang/String}
      * will be parsed into the array {@code {"java", '/', "lang", '/', "String"}}.
-     * The name {@code &lt;init&gt;} will be parsed into { '&lt;', "init", '&gt;'}}
+     * The name {@code <init>} will be parsed into {@code {'<', "init", '>'}}.
      * The name {@code foo/bar$:baz} will be parsed into
      * {@code {"foo", '/', "bar", '$', ':', "baz"}}.
      * The name {@code ::\=:foo:\=bar\!baz} will be parsed into
diff --git a/jdk/src/java.base/share/classes/sun/launcher/resources/launcher.properties b/jdk/src/java.base/share/classes/sun/launcher/resources/launcher.properties
index 03ee5c6..a5d8f35 100644
--- a/jdk/src/java.base/share/classes/sun/launcher/resources/launcher.properties
+++ b/jdk/src/java.base/share/classes/sun/launcher/resources/launcher.properties
@@ -24,8 +24,8 @@
 #
 
 # Translators please note do not translate the options themselves
-java.launcher.opt.header  =   Usage: {0} [-options] class [args...]\n\
-\           (to execute a class)\n   or  {0} [-options] -jar jarfile [args...]\n\
+java.launcher.opt.header  =   Usage: {0} [options] class [args...]\n\
+\           (to execute a class)\n   or  {0} [options] -jar jarfile [args...]\n\
 \           (to execute a jar file)\n\
 where options include:\n
 
@@ -68,6 +68,8 @@
 \                  load Java programming language agent, see java.lang.instrument\n\
 \    -splash:<imagepath>\n\
 \                  show splash screen with specified image\n\
+\    @<filepath>   read options from the specified file\n\
+
 See http://www.oracle.com/technetwork/java/javase/documentation/index.html for more details.
 
 # Translators please note do not translate the options themselves
@@ -102,7 +104,8 @@
 \    -XshowSettings:properties\n\
 \                      show all property settings and continue\n\
 \    -XshowSettings:locale\n\
-\                      show all locale related settings and continue\n\n\
+\                      show all locale related settings and continue\n\
+\    -Xdisable-@files  disable further argument file expansion\n\n\
 The -X options are non-standard and subject to change without notice.\n
 
 # Translators please note do not translate the options themselves
diff --git a/jdk/src/java.base/share/classes/sun/net/util/IPAddressUtil.java b/jdk/src/java.base/share/classes/sun/net/util/IPAddressUtil.java
index a4cc984..688c398 100644
--- a/jdk/src/java.base/share/classes/sun/net/util/IPAddressUtil.java
+++ b/jdk/src/java.base/share/classes/sun/net/util/IPAddressUtil.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2015, Oracle and/or its affiliates. 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
@@ -44,6 +44,7 @@
 
         long tmpValue = 0;
         int currByte = 0;
+        boolean newOctet = true;
 
         int len = src.length();
         if (len == 0 || len > 15) {
@@ -77,11 +78,12 @@
         for (int i = 0; i < len; i++) {
             char c = src.charAt(i);
             if (c == '.') {
-                if (tmpValue < 0 || tmpValue > 0xff || currByte == 3) {
+                if (newOctet || tmpValue < 0 || tmpValue > 0xff || currByte == 3) {
                     return null;
                 }
                 res[currByte++] = (byte) (tmpValue & 0xff);
                 tmpValue = 0;
+                newOctet = true;
             } else {
                 int digit = Character.digit(c, 10);
                 if (digit < 0) {
@@ -89,9 +91,10 @@
                 }
                 tmpValue *= 10;
                 tmpValue += digit;
+                newOctet = false;
             }
         }
-        if (tmpValue < 0 || tmpValue >= (1L << ((4 - currByte) * 8))) {
+        if (newOctet || tmpValue < 0 || tmpValue >= (1L << ((4 - currByte) * 8))) {
             return null;
         }
         switch (currByte) {
diff --git a/jdk/src/java.base/share/classes/sun/reflect/LangReflectAccess.java b/jdk/src/java.base/share/classes/sun/reflect/LangReflectAccess.java
index 3c3b2757..4da3bc8 100644
--- a/jdk/src/java.base/share/classes/sun/reflect/LangReflectAccess.java
+++ b/jdk/src/java.base/share/classes/sun/reflect/LangReflectAccess.java
@@ -104,6 +104,9 @@
     /** Makes a "child" copy of a Method */
     public Method      copyMethod(Method arg);
 
+    /** Makes a copy of this non-root a Method */
+    public Method      leafCopyMethod(Method arg);
+
     /** Makes a "child" copy of a Field */
     public Field       copyField(Field arg);
 
diff --git a/jdk/src/java.base/share/classes/sun/reflect/ReflectionFactory.java b/jdk/src/java.base/share/classes/sun/reflect/ReflectionFactory.java
index 3d10f9b..3544533 100644
--- a/jdk/src/java.base/share/classes/sun/reflect/ReflectionFactory.java
+++ b/jdk/src/java.base/share/classes/sun/reflect/ReflectionFactory.java
@@ -302,6 +302,14 @@
         return langReflectAccess().copyMethod(arg);
     }
 
+    /** Makes a copy of the passed method. The returned method is NOT
+     * a "child" but a "sibling" of the Method in arg. Should only be
+     * used on non-root methods. */
+    public Method leafCopyMethod(Method arg) {
+        return langReflectAccess().leafCopyMethod(arg);
+    }
+
+
     /** Makes a copy of the passed field. The returned field is a
         "child" of the passed one; see the comments in Field.java for
         details. */
diff --git a/jdk/src/java.base/share/classes/sun/reflect/annotation/AnnotationSupport.java b/jdk/src/java.base/share/classes/sun/reflect/annotation/AnnotationSupport.java
index f4ef3dc..6202549 100644
--- a/jdk/src/java.base/share/classes/sun/reflect/annotation/AnnotationSupport.java
+++ b/jdk/src/java.base/share/classes/sun/reflect/annotation/AnnotationSupport.java
@@ -27,14 +27,17 @@
 
 import java.lang.annotation.*;
 import java.lang.reflect.*;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 
 import sun.misc.JavaLangAccess;
+import sun.reflect.LangReflectAccess;
+import sun.reflect.ReflectionFactory;
 
 public final class AnnotationSupport {
     private static final JavaLangAccess LANG_ACCESS = sun.misc.SharedSecrets.getJavaLangAccess();
@@ -62,7 +65,7 @@
     public static <A extends Annotation> A[] getDirectlyAndIndirectlyPresent(
             Map<Class<? extends Annotation>, Annotation> annotations,
             Class<A> annoClass) {
-        List<A> result = new ArrayList<A>();
+        List<A> result = new ArrayList<>();
 
         @SuppressWarnings("unchecked")
         A direct = (A) annotations.get(annoClass);
@@ -188,27 +191,68 @@
             AnnotationType annoType = AnnotationType.getInstance(containerClass);
             if (annoType == null)
                 throw invalidContainerException(container, null);
-
             Method m = annoType.members().get("value");
             if (m == null)
                 throw invalidContainerException(container, null);
 
-            m.setAccessible(true);
+            if (Proxy.isProxyClass(container.getClass())) {
+                // Invoke by invocation handler
+                InvocationHandler handler = Proxy.getInvocationHandler(container);
 
-            // This will erase to (Annotation[]) but we do a runtime cast on the
-            // return-value in the method that call this method.
-            @SuppressWarnings("unchecked")
-            A[] values = (A[]) m.invoke(container);
+                try {
+                    // This will erase to (Annotation[]) but we do a runtime cast on the
+                    // return-value in the method that call this method.
+                    @SuppressWarnings("unchecked")
+                    A[] values = (A[]) handler.invoke(container, m, null);
+                    return values;
+                } catch (Throwable t) { // from InvocationHandler::invoke
+                    throw invalidContainerException(container, t);
+                }
+            } else {
+                // In theory there might be instances of Annotations that are not
+                // implemented using Proxies. Try to invoke the "value" element with
+                // reflection.
 
-            return values;
+                // Declaring class should be an annotation type
+                Class<?> iface = m.getDeclaringClass();
+                if (!iface.isAnnotation())
+                    throw new UnsupportedOperationException("Unsupported container annotation type.");
+                // Method must be public
+                if (!Modifier.isPublic(m.getModifiers()))
+                    throw new UnsupportedOperationException("Unsupported value member.");
 
+                // Interface might not be public though
+                final Method toInvoke;
+                if (!Modifier.isPublic(iface.getModifiers())) {
+                    if (System.getSecurityManager() != null) {
+                        toInvoke = AccessController.doPrivileged(new PrivilegedAction<Method>() {
+                            @Override
+                            public Method run() {
+                                Method res = ReflectionFactory.getReflectionFactory().leafCopyMethod(m);
+                                res.setAccessible(true);
+                                return res;
+                            }
+                        });
+                    } else {
+                        toInvoke = ReflectionFactory.getReflectionFactory().leafCopyMethod(m);
+                        toInvoke.setAccessible(true);
+                    }
+                } else {
+                    toInvoke = m;
+                }
+
+                // This will erase to (Annotation[]) but we do a runtime cast on the
+                // return-value in the method that call this method.
+                @SuppressWarnings("unchecked")
+                A[] values = (A[]) toInvoke.invoke(container);
+
+                return values;
+            }
         } catch (IllegalAccessException    | // couldn't loosen security
                  IllegalArgumentException  | // parameters doesn't match
                  InvocationTargetException | // the value method threw an exception
                  ClassCastException e) {
-
             throw invalidContainerException(container, e);
-
         }
     }
 
diff --git a/jdk/src/java.base/share/classes/sun/security/pkcs/PKCS7.java b/jdk/src/java.base/share/classes/sun/security/pkcs/PKCS7.java
index 5c6c625..9de6a9f 100644
--- a/jdk/src/java.base/share/classes/sun/security/pkcs/PKCS7.java
+++ b/jdk/src/java.base/share/classes/sun/security/pkcs/PKCS7.java
@@ -46,9 +46,9 @@
 
 /**
  * PKCS7 as defined in RSA Laboratories PKCS7 Technical Note. Profile
- * Supports only <tt>SignedData</tt> ContentInfo
+ * Supports only {@code SignedData} ContentInfo
  * type, where to the type of data signed is plain Data.
- * For signedData, <tt>crls</tt>, <tt>attributes</tt> and
+ * For signedData, {@code crls}, {@code attributes} and
  * PKCS#6 Extended Certificates are not supported.
  *
  * @author Benjamin Renaud
diff --git a/jdk/src/java.base/share/classes/sun/security/pkcs/SignerInfo.java b/jdk/src/java.base/share/classes/sun/security/pkcs/SignerInfo.java
index 12b72de..8319e07 100644
--- a/jdk/src/java.base/share/classes/sun/security/pkcs/SignerInfo.java
+++ b/jdk/src/java.base/share/classes/sun/security/pkcs/SignerInfo.java
@@ -180,7 +180,7 @@
 
     /**
      * DER encode this object onto an output stream.
-     * Implements the <code>DerEncoder</code> interface.
+     * Implements the {@code DerEncoder} interface.
      *
      * @param out
      * the output stream on which to write the DER encoding.
@@ -454,7 +454,7 @@
      * Extracts a timestamp from a PKCS7 SignerInfo.
      *
      * Examines the signer's unsigned attributes for a
-     * <tt>signatureTimestampToken</tt> attribute. If present,
+     * {@code signatureTimestampToken} attribute. If present,
      * then it is parsed to extract the date and time at which the
      * timestamp was generated.
      *
diff --git a/jdk/src/java.base/share/classes/sun/security/pkcs10/PKCS10Attributes.java b/jdk/src/java.base/share/classes/sun/security/pkcs10/PKCS10Attributes.java
index d35f3a7..fefffaf 100644
--- a/jdk/src/java.base/share/classes/sun/security/pkcs10/PKCS10Attributes.java
+++ b/jdk/src/java.base/share/classes/sun/security/pkcs10/PKCS10Attributes.java
@@ -98,7 +98,7 @@
 
     /**
      * Encode the attributes in DER form to the stream.
-     * Implements the <code>DerEncoder</code> interface.
+     * Implements the {@code DerEncoder} interface.
      *
      * @param out the OutputStream to marshal the contents to.
      * @exception IOException on encoding errors.
@@ -157,8 +157,8 @@
 
     /**
      * Compares this PKCS10Attributes for equality with the specified
-     * object. If the <code>other</code> object is an
-     * <code>instanceof</code> <code>PKCS10Attributes</code>, then
+     * object. If the {@code other} object is an
+     * {@code instanceof PKCS10Attributes}, then
      * all the entries are compared with the entries from this.
      *
      * @param other the object to test for equality with this PKCS10Attributes.
@@ -205,10 +205,10 @@
     }
 
     /**
-     * Returns a string representation of this <tt>PKCS10Attributes</tt> object
+     * Returns a string representation of this {@code PKCS10Attributes} object
      * in the form of a set of entries, enclosed in braces and separated
-     * by the ASCII characters "<tt>,&nbsp;</tt>" (comma and space).
-     * <p>Overrides the <tt>toString</tt> method of <tt>Object</tt>.
+     * by the ASCII characters "<code>,&nbsp;</code>" (comma and space).
+     * <p>Overrides the {@code toString} method of {@code Object}.
      *
      * @return  a string representation of this PKCS10Attributes.
      */
diff --git a/jdk/src/java.base/share/classes/sun/security/x509/CRLExtensions.java b/jdk/src/java.base/share/classes/sun/security/x509/CRLExtensions.java
index 834f78f..9f0c7f6 100644
--- a/jdk/src/java.base/share/classes/sun/security/x509/CRLExtensions.java
+++ b/jdk/src/java.base/share/classes/sun/security/x509/CRLExtensions.java
@@ -238,8 +238,8 @@
 
     /**
      * Compares this CRLExtensions for equality with the specified
-     * object. If the <code>other</code> object is an
-     * <code>instanceof</code> <code>CRLExtensions</code>, then
+     * object. If the {@code other} object is an
+     * {@code instanceof} {@code CRLExtensions}, then
      * all the entries are compared with the entries from this.
      *
      * @param other the object to test for equality with this CRLExtensions.
@@ -286,10 +286,10 @@
     }
 
     /**
-     * Returns a string representation of this <tt>CRLExtensions</tt> object
+     * Returns a string representation of this {@code CRLExtensions} object
      * in the form of a set of entries, enclosed in braces and separated
-     * by the ASCII characters "<tt>,&nbsp;</tt>" (comma and space).
-     * <p>Overrides to <tt>toString</tt> method of <tt>Object</tt>.
+     * by the ASCII characters "<code>,&nbsp;</code>" (comma and space).
+     * <p>Overrides to {@code toString} method of {@code Object}.
      *
      * @return  a string representation of this CRLExtensions.
      */
diff --git a/jdk/src/java.base/share/classes/sun/security/x509/CertificateExtensions.java b/jdk/src/java.base/share/classes/sun/security/x509/CertificateExtensions.java
index a3a0fe1..da4d5bd 100644
--- a/jdk/src/java.base/share/classes/sun/security/x509/CertificateExtensions.java
+++ b/jdk/src/java.base/share/classes/sun/security/x509/CertificateExtensions.java
@@ -289,8 +289,8 @@
 
     /**
      * Compares this CertificateExtensions for equality with the specified
-     * object. If the <code>other</code> object is an
-     * <code>instanceof</code> <code>CertificateExtensions</code>, then
+     * object. If the {@code other} object is an
+     * {@code instanceof} {@code CertificateExtensions}, then
      * all the entries are compared with the entries from this.
      *
      * @param other the object to test for equality with this
@@ -339,10 +339,10 @@
     }
 
     /**
-     * Returns a string representation of this <tt>CertificateExtensions</tt>
+     * Returns a string representation of this {@code CertificateExtensions}
      * object in the form of a set of entries, enclosed in braces and separated
-     * by the ASCII characters "<tt>,&nbsp;</tt>" (comma and space).
-     * <p>Overrides to <tt>toString</tt> method of <tt>Object</tt>.
+     * by the ASCII characters "<code>,&nbsp;</code>" (comma and space).
+     * <p>Overrides to {@code toString} method of {@code Object}.
      *
      * @return  a string representation of this CertificateExtensions.
      */
diff --git a/jdk/src/java.base/share/conf/security/java.security b/jdk/src/java.base/share/conf/security/java.security
index b1b616c..4523ddc 100644
--- a/jdk/src/java.base/share/conf/security/java.security
+++ b/jdk/src/java.base/share/conf/security/java.security
@@ -246,6 +246,10 @@
                jdk.nashorn.tools.,\
                jdk.tools.jimage.,\
                com.sun.activation.registries.,\
+               com.sun.java.accessibility.util.internal.,\
+#ifdef windows
+               com.sun.java.accessibility.internal.,\
+#endif
 #ifdef macosx
                apple.,\
 #endif
@@ -297,6 +301,10 @@
                    jdk.nashorn.tools.,\
                    jdk.tools.jimage.,\
                    com.sun.activation.registries.,\
+                   com.sun.java.accessibility.util.internal.,\
+#ifdef windows
+                   com.sun.java.accessibility.internal.,\
+#endif
 #ifdef macosx
                    apple.,\
 #endif
diff --git a/jdk/src/java.base/share/native/launcher/defines.h b/jdk/src/java.base/share/native/launcher/defines.h
index 9b9f3a6..4be842e 100644
--- a/jdk/src/java.base/share/native/launcher/defines.h
+++ b/jdk/src/java.base/share/native/launcher/defines.h
@@ -89,4 +89,9 @@
 static const jint const_ergo_class = DEFAULT_POLICY;
 #endif /* NEVER_ACT_AS_SERVER_CLASS_MACHINE */
 
+#ifdef ENABLE_ARG_FILES
+static const jboolean const_disable_argfile = JNI_FALSE;
+#else
+static const jboolean const_disable_argfile = JNI_TRUE;
+#endif
 #endif /*_DEFINES_H */
diff --git a/jdk/src/java.base/share/native/launcher/main.c b/jdk/src/java.base/share/native/launcher/main.c
index 2dbb79b..e003bd2 100644
--- a/jdk/src/java.base/share/native/launcher/main.c
+++ b/jdk/src/java.base/share/native/launcher/main.c
@@ -31,6 +31,7 @@
  */
 
 #include "defines.h"
+#include "jli_util.h"
 
 #ifdef _MSC_VER
 #if _MSC_VER > 1400 && _MSC_VER < 1600
@@ -96,6 +97,9 @@
     char** margv;
     const jboolean const_javaw = JNI_FALSE;
 #endif /* JAVAW */
+
+    JLI_InitArgProcessing(!HAS_JAVA_ARGS, const_disable_argfile);
+
 #ifdef _WIN32
     {
         int i = 0;
@@ -119,8 +123,30 @@
         margv[i] = NULL;
     }
 #else /* *NIXES */
-    margc = argc;
-    margv = argv;
+    {
+        // accommodate the NULL at the end
+        JLI_List args = JLI_List_new(argc + 1);
+        int i = 0;
+        for (i = 0; i < argc; i++) {
+            JLI_List argsInFile = JLI_PreprocessArg(argv[i]);
+            if (NULL == argsInFile) {
+                JLI_List_add(args, JLI_StringDup(argv[i]));
+            } else {
+                int cnt, idx;
+                cnt = argsInFile->size;
+                for (idx = 0; idx < cnt; idx++) {
+                    JLI_List_add(args, argsInFile->elements[idx]);
+                }
+                // Shallow free, we reuse the string to avoid copy
+                JLI_MemFree(argsInFile->elements);
+                JLI_MemFree(argsInFile);
+            }
+        }
+        margc = args->size;
+        // add the NULL pointer at argv[argc]
+        JLI_List_add(args, NULL);
+        margv = args->elements;
+    }
 #endif /* WIN32 */
     return JLI_Launch(margc, margv,
                    sizeof(const_jargs) / sizeof(char *), const_jargs,
diff --git a/jdk/src/java.base/share/native/libjli/args.c b/jdk/src/java.base/share/native/libjli/args.c
new file mode 100644
index 0000000..e275ccf
--- /dev/null
+++ b/jdk/src/java.base/share/native/libjli/args.c
@@ -0,0 +1,532 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. 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.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+#include <stdio.h>
+#include <assert.h>
+#include <sys/stat.h>
+
+#ifdef DEBUG_ARGFILE
+  #ifndef NO_JNI
+    #define NO_JNI
+  #endif
+  #define JLI_ReportMessage(p1, p2) printf((p1), (p2))
+#else
+  #include "java.h"
+#endif
+
+#include "jli_util.h"
+#include "emessages.h"
+
+#define MAX_ARGF_SIZE 0x7fffffffL
+
+static char* clone_substring(const char *begin, size_t len) {
+    char *rv = (char *) JLI_MemAlloc(len + 1);
+    memcpy(rv, begin, len);
+    rv[len] = '\0';
+    return rv;
+}
+
+enum STATE {
+    FIND_NEXT,
+    IN_COMMENT,
+    IN_QUOTE,
+    IN_ESCAPE,
+    SKIP_LEAD_WS,
+    IN_TOKEN
+};
+
+typedef struct {
+    enum STATE state;
+    const char* cptr;
+    const char* eob;
+    char quote_char;
+    JLI_List parts;
+} __ctx_args;
+
+#define NOT_FOUND -1
+static int firstAppArgIndex = NOT_FOUND;
+
+static jboolean expectingNoDashArg = JNI_FALSE;
+static size_t argsCount = 0;
+static jboolean stopExpansion = JNI_FALSE;
+
+void JLI_InitArgProcessing(jboolean isJava, jboolean disableArgFile) {
+    // No expansion for relaunch
+    if (argsCount != 0) {
+        stopExpansion = JNI_TRUE;
+        argsCount = 0;
+    } else {
+        stopExpansion = disableArgFile;
+    }
+
+    expectingNoDashArg = JNI_FALSE;
+
+    // for tools, this value remains 0 all the time.
+    firstAppArgIndex = isJava ? NOT_FOUND : 0;
+}
+
+int JLI_GetAppArgIndex() {
+    // Will be 0 for tools
+    return firstAppArgIndex;
+}
+
+static void checkArg(const char *arg) {
+    size_t idx = 0;
+    argsCount++;
+    if (argsCount == 1) {
+        // ignore first argument, the application name
+        return;
+    }
+
+    // All arguments arrive here must be a launcher argument,
+    // ie. by now, all argfile expansions must have been performed.
+    if (*arg++ == '-') {
+        expectingNoDashArg = JNI_FALSE;
+        if (JLI_StrCmp(arg, "cp") == 0 ||
+            JLI_StrCmp(arg, "classpath") == 0) {
+            expectingNoDashArg = JNI_TRUE;
+        } else if (JLI_StrCmp(arg, "jar") == 0) {
+            // This is tricky, we do expect NoDashArg
+            // But that is considered main class to stop expansion
+            expectingNoDashArg = JNI_FALSE;
+            // We can not just update the idx here because if -jar @file
+            // still need expansion of @file to get the argument for -jar
+        } else if (JLI_StrCmp(arg, "Xdisable-@files") == 0) {
+            stopExpansion = JNI_TRUE;
+        }
+    } else {
+        if (!expectingNoDashArg) {
+            // this is main class, argsCount is index to next arg
+            idx = argsCount;
+        }
+        expectingNoDashArg = JNI_FALSE;
+    }
+    // only update on java mode and not yet found main class
+    if (firstAppArgIndex == -1 && idx != 0) {
+        firstAppArgIndex = (int) idx;
+    }
+}
+
+/*
+       [\n\r]   +------------+                        +------------+ [\n\r]
+      +---------+ IN_COMMENT +<------+                | IN_ESCAPE  +---------+
+      |         +------------+       |                +------------+         |
+      |    [#]       ^               |[#]                 ^     |            |
+      |   +----------+               |                [\\]|     |[^\n\r]     |
+      v   |                          |                    |     v            |
++------------+ [^ \t\n\r\f]  +------------+['"]>      +------------+         |
+| FIND_NEXT  +-------------->+ IN_TOKEN   +-----------+ IN_QUOTE   +         |
++------------+               +------------+   <[quote]+------------+         |
+  |   ^                          |                       |  ^   ^            |
+  |   |               [ \t\n\r\f]|                 [\n\r]|  |   |[^ \t\n\r\f]v
+  |   +--------------------------+-----------------------+  |  +--------------+
+  |                       ['"]                              |  | SKIP_LEAD_WS |
+  +---------------------------------------------------------+  +--------------+
+*/
+static char* nextToken(__ctx_args *pctx) {
+    const char* nextc = pctx->cptr;
+    const char* const eob = pctx->eob;
+    const char* anchor = nextc;
+    char *token;
+
+    for (; nextc < eob; nextc++) {
+        register char ch = *nextc;
+
+        // Skip white space characters
+        if (pctx->state == FIND_NEXT || pctx->state == SKIP_LEAD_WS) {
+            while (ch == ' ' || ch == '\n' || ch == '\r' || ch == '\t' || ch == '\f') {
+                nextc++;
+                if (nextc >= eob) {
+                    return NULL;
+                }
+                ch = *nextc;
+            }
+            pctx->state = (pctx->state == FIND_NEXT) ? IN_TOKEN : IN_QUOTE;
+            anchor = nextc;
+        // Deal with escape sequences
+        } else if (pctx->state == IN_ESCAPE) {
+            // concatenation directive
+            if (ch == '\n' || ch == '\r') {
+                pctx->state = SKIP_LEAD_WS;
+            } else {
+            // escaped character
+                char* escaped = (char*) JLI_MemAlloc(2 * sizeof(char));
+                escaped[1] = '\0';
+                switch (ch) {
+                    case 'n':
+                        escaped[0] = '\n';
+                        break;
+                    case 'r':
+                        escaped[0] = '\r';
+                        break;
+                    case 't':
+                        escaped[0] = '\t';
+                        break;
+                    case 'f':
+                        escaped[0] = '\f';
+                        break;
+                    default:
+                        escaped[0] = ch;
+                        break;
+                }
+                JLI_List_add(pctx->parts, escaped);
+                pctx->state = IN_QUOTE;
+            }
+            // anchor to next character
+            anchor = nextc + 1;
+            continue;
+        // ignore comment to EOL
+        } else if (pctx->state == IN_COMMENT) {
+            while (ch != '\n' && ch != '\r') {
+                nextc++;
+                if (nextc > eob) {
+                    return NULL;
+                }
+                ch = *nextc;
+            }
+            pctx->state = FIND_NEXT;
+            continue;
+        }
+
+        assert(pctx->state != IN_ESCAPE);
+        assert(pctx->state != FIND_NEXT);
+        assert(pctx->state != SKIP_LEAD_WS);
+        assert(pctx->state != IN_COMMENT);
+
+        switch(ch) {
+            case ' ':
+            case '\t':
+            case '\f':
+                if (pctx->state == IN_QUOTE) {
+                    continue;
+                }
+                // fall through
+            case '\n':
+            case '\r':
+                if (pctx->parts->size == 0) {
+                    token = clone_substring(anchor, nextc - anchor);
+                } else {
+                    JLI_List_addSubstring(pctx->parts, anchor, nextc - anchor);
+                    token = JLI_List_combine(pctx->parts);
+                    JLI_List_free(pctx->parts);
+                    pctx->parts = JLI_List_new(4);
+                }
+                pctx->cptr = nextc + 1;
+                pctx->state = FIND_NEXT;
+                return token;
+            case '#':
+                if (pctx->state == IN_QUOTE) {
+                    continue;
+                }
+                pctx->state = IN_COMMENT;
+                break;
+            case '\\':
+                if (pctx->state != IN_QUOTE) {
+                    continue;
+                }
+                JLI_List_addSubstring(pctx->parts, anchor, nextc - anchor);
+                pctx->state = IN_ESCAPE;
+                break;
+            case '\'':
+            case '"':
+                if (pctx->state == IN_QUOTE && pctx->quote_char != ch) {
+                    // not matching quote
+                    continue;
+                }
+                // partial before quote
+                if (anchor != nextc) {
+                    JLI_List_addSubstring(pctx->parts, anchor, nextc - anchor);
+                }
+                // anchor after quote character
+                anchor = nextc + 1;
+                if (pctx->state == IN_TOKEN) {
+                    pctx->quote_char = ch;
+                    pctx->state = IN_QUOTE;
+                } else {
+                    pctx->state = IN_TOKEN;
+                }
+                break;
+            default:
+                break;
+        }
+    }
+
+    assert(nextc == eob);
+    if (anchor != nextc) {
+        // not yet return until end of stream, we have part of a token.
+        JLI_List_addSubstring(pctx->parts, anchor, nextc - anchor);
+    }
+    return NULL;
+}
+
+static JLI_List readArgFile(FILE *file) {
+    char buf[4096];
+    JLI_List rv;
+    __ctx_args ctx;
+    size_t size;
+    char *token;
+
+    ctx.state = FIND_NEXT;
+    ctx.parts = JLI_List_new(4);
+
+    /* arbitrarily pick 8, seems to be a reasonable number of arguments */
+    rv = JLI_List_new(8);
+
+    while (!feof(file)) {
+        size = fread(buf, sizeof(char), sizeof(buf), file);
+        if (ferror(file)) {
+            JLI_List_free(rv);
+            return NULL;
+        }
+
+        /* nextc is next character to read from the buffer
+         * eob is the end of input
+         * token is the copied token value, NULL if no a complete token
+         */
+        ctx.cptr = buf;
+        ctx.eob = buf + size;
+        token = nextToken(&ctx);
+        while (token != NULL) {
+            checkArg(token);
+            JLI_List_add(rv, token);
+            token = nextToken(&ctx);
+        }
+    }
+
+    // remaining partial token
+    if (ctx.state == IN_TOKEN || ctx.state == IN_QUOTE) {
+        if (ctx.parts->size != 0) {
+            JLI_List_add(rv, JLI_List_combine(ctx.parts));
+        }
+    }
+    JLI_List_free(ctx.parts);
+
+    return rv;
+}
+
+/*
+ * if the arg represent a file, that is, prefix with a single '@',
+ * return a list of arguments from the file.
+ * otherwise, return NULL.
+ */
+static JLI_List expandArgFile(const char *arg) {
+    FILE *fptr;
+    struct stat st;
+    JLI_List rv;
+
+    /* failed to access the file */
+    if (stat(arg, &st) != 0) {
+        JLI_ReportMessage(CFG_ERROR6, arg);
+        exit(1);
+    }
+
+    if (st.st_size > MAX_ARGF_SIZE) {
+        JLI_ReportMessage(CFG_ERROR10, MAX_ARGF_SIZE);
+        exit(1);
+    }
+
+    fptr = fopen(arg, "r");
+    /* arg file cannot be openned */
+    if (fptr == NULL) {
+        JLI_ReportMessage(CFG_ERROR6, arg);
+        exit(1);
+    }
+
+    rv = readArgFile(fptr);
+    fclose(fptr);
+
+    /* error occurred reading the file */
+    if (rv == NULL) {
+        JLI_ReportMessage(DLL_ERROR4, arg);
+        exit(1);
+    }
+
+    return rv;
+}
+
+JLI_List JLI_PreprocessArg(const char *arg)
+{
+    JLI_List rv;
+
+    if (firstAppArgIndex > 0) {
+        // In user application arg, no more work.
+        return NULL;
+    }
+
+    if (stopExpansion) {
+        // still looking for user application arg
+        checkArg(arg);
+        return NULL;
+    }
+
+    if (arg[0] != '@') {
+        checkArg(arg);
+        return NULL;
+    }
+
+    if (arg[1] == '\0') {
+        // @ by itself is an argument
+        checkArg(arg);
+        return NULL;
+    }
+
+    arg++;
+    if (arg[0] == '@') {
+        // escaped @argument
+        rv = JLI_List_new(1);
+        checkArg(arg);
+        JLI_List_add(rv, JLI_StringDup(arg));
+    } else {
+        rv = expandArgFile(arg);
+    }
+    return rv;
+}
+
+#ifdef DEBUG_ARGFILE
+/*
+ * Stand-alone sanity test, build with following command line
+ * $ CC -DDEBUG_ARGFILE -DNO_JNI -g args.c jli_util.c
+ */
+
+void fail(char *expected, char *actual, size_t idx) {
+    printf("FAILED: Token[%lu] expected to be <%s>, got <%s>\n", idx, expected, actual);
+    exit(1);
+}
+
+void test_case(char *case_data, char **tokens, size_t cnt_tokens) {
+    size_t actual_cnt;
+    char *token;
+    __ctx_args ctx;
+
+    actual_cnt = 0;
+
+    ctx.state = FIND_NEXT;
+    ctx.parts = JLI_List_new(4);
+    ctx.cptr = case_data;
+    ctx.eob = case_data + strlen(case_data);
+
+    printf("Test case: <%s>, expected %lu tokens.\n", case_data, cnt_tokens);
+
+    for (token = nextToken(&ctx); token != NULL; token = nextToken(&ctx)) {
+        // should not have more tokens than expected
+        if (actual_cnt >= cnt_tokens) {
+            printf("FAILED: Extra token detected: <%s>\n", token);
+            exit(2);
+        }
+        if (JLI_StrCmp(token, tokens[actual_cnt]) != 0) {
+            fail(tokens[actual_cnt], token, actual_cnt);
+        }
+        actual_cnt++;
+    }
+
+    char* last = NULL;
+    if (ctx.parts->size != 0) {
+        last = JLI_List_combine(ctx.parts);
+    }
+    JLI_List_free(ctx.parts);
+
+    if (actual_cnt >= cnt_tokens) {
+        // same number of tokens, should have nothing left to parse
+        if (last != NULL) {
+            if (*last != '#') {
+                printf("Leftover detected: %s", last);
+                exit(2);
+            }
+        }
+    } else {
+        if (JLI_StrCmp(last, tokens[actual_cnt]) != 0) {
+            fail(tokens[actual_cnt], last, actual_cnt);
+        }
+        actual_cnt++;
+    }
+    if (actual_cnt != cnt_tokens) {
+        printf("FAILED: Number of tokens not match, expected %lu, got %lu\n",
+            cnt_tokens, actual_cnt);
+        exit(3);
+    }
+
+    printf("PASS\n");
+}
+
+#define DO_CASE(name) \
+    test_case(name[0], name + 1, sizeof(name)/sizeof(char*) - 1)
+
+int main(int argc, char** argv) {
+    size_t i, j;
+
+    char* case1[] = { "-version -cp \"c:\\\\java libs\\\\one.jar\" \n",
+        "-version", "-cp", "c:\\java libs\\one.jar" };
+    DO_CASE(case1);
+
+    // note the open quote at the end
+    char* case2[] = { "com.foo.Panda \"Furious 5\"\fand\t'Shi Fu' \"escape\tprison",
+        "com.foo.Panda", "Furious 5", "and", "Shi Fu", "escape\tprison"};
+    DO_CASE(case2);
+
+    char* escaped_chars[] = { "escaped chars testing \"\\a\\b\\c\\f\\n\\r\\t\\v\\9\\6\\23\\82\\28\\377\\477\\278\\287\"",
+        "escaped", "chars", "testing", "abc\f\n\r\tv96238228377477278287"};
+    DO_CASE(escaped_chars);
+
+    char* mixed_quote[]  = { "\"mix 'single quote' in double\" 'mix \"double quote\" in single' partial\"quote me\"this",
+        "mix 'single quote' in double", "mix \"double quote\" in single", "partialquote methis"};
+    DO_CASE(mixed_quote);
+
+    char* comments[]  = { "line one #comment\n'line #2' #rest are comment\r\n#comment on line 3\nline 4 #comment to eof",
+        "line", "one", "line #2", "line", "4"};
+    DO_CASE(comments);
+
+    char* open_quote[] = { "This is an \"open quote \n    across line\n\t, note for WS.",
+        "This", "is", "an", "open quote ", "across", "line", ",", "note", "for", "WS." };
+    DO_CASE(open_quote);
+
+    char* escape_in_open_quote[] = { "Try \"this \\\\\\\\ escape\\n double quote \\\" in open quote",
+        "Try", "this \\\\ escape\n double quote \" in open quote" };
+    DO_CASE(escape_in_open_quote);
+
+    char* quote[] = { "'-Dmy.quote.single'='Property in single quote. Here a double quote\" Add some slashes \\\\/'",
+        "-Dmy.quote.single=Property in single quote. Here a double quote\" Add some slashes \\/" };
+    DO_CASE(quote);
+
+    char* multi[] = { "\"Open quote to \n  new \"line \\\n\r   third\\\n\r\\\tand\ffourth\"",
+        "Open quote to ", "new", "line third\tand\ffourth" };
+    DO_CASE(multi);
+
+    char* escape_quote[] = { "c:\\\"partial quote\"\\lib",
+        "c:\\partial quote\\lib" };
+    DO_CASE(escape_quote);
+
+    if (argc > 1) {
+        for (i = 0; i < argc; i++) {
+            JLI_List tokens = JLI_PreprocessArg(argv[i]);
+            if (NULL != tokens) {
+                for (j = 0; j < tokens->size; j++) {
+                    printf("Token[%lu]: <%s>\n", (unsigned long) j, tokens->elements[j]);
+                }
+            }
+        }
+    }
+}
+
+#endif // DEBUG_ARGFILE
diff --git a/jdk/src/java.base/share/native/libjli/emessages.h b/jdk/src/java.base/share/native/libjli/emessages.h
index 961ff7b..75b646f 100644
--- a/jdk/src/java.base/share/native/libjli/emessages.h
+++ b/jdk/src/java.base/share/native/libjli/emessages.h
@@ -71,6 +71,7 @@
 #define CFG_ERROR7      "Error: no known VMs. (check for corrupt jvm.cfg file)"
 #define CFG_ERROR8      "Error: missing `%s' JVM at `%s'.\nPlease install or use the JRE or JDK that contains these missing components."
 #define CFG_ERROR9      "Error: could not determine JVM type."
+#define CFG_ERROR10     "Error: Argument file size should not be larger than %lu."
 
 #define JRE_ERROR1      "Error: Could not find Java SE Runtime Environment."
 #define JRE_ERROR2      "Error: This Java instance does not support a %d-bit JVM.\nPlease install the desired version."
diff --git a/jdk/src/java.base/share/native/libjli/java.c b/jdk/src/java.base/share/native/libjli/java.c
index 313f26b..1318f8e 100644
--- a/jdk/src/java.base/share/native/libjli/java.c
+++ b/jdk/src/java.base/share/native/libjli/java.c
@@ -1963,6 +1963,7 @@
 {
     if (!JLI_IsTraceLauncher()) return ;
     printf("Launcher state:\n");
+    printf("\tFirst application arg index: %d\n", JLI_GetAppArgIndex());
     printf("\tdebug:%s\n", (JLI_IsTraceLauncher() == JNI_TRUE) ? "on" : "off");
     printf("\tjavargs:%s\n", (_is_java_args == JNI_TRUE) ? "on" : "off");
     printf("\tprogram name:%s\n", GetProgramName());
diff --git a/jdk/src/java.base/share/native/libjli/jli_util.c b/jdk/src/java.base/share/native/libjli/jli_util.c
index 75195f3..aebfe0a 100644
--- a/jdk/src/java.base/share/native/libjli/jli_util.c
+++ b/jdk/src/java.base/share/native/libjli/jli_util.c
@@ -25,8 +25,7 @@
 
 #include <stdio.h>
 #include <string.h>
-#include <jni.h>
-
+#include <stdarg.h>
 #include "jli_util.h"
 
 /*
@@ -97,6 +96,7 @@
     va_start(vl, fmt);
     vprintf(fmt,vl);
     va_end(vl);
+    fflush(stdout);
 }
 
 void
@@ -119,3 +119,122 @@
 {
    return JLI_StrNCmp(s1, s2, JLI_StrLen(s2));
 }
+
+JLI_List
+JLI_List_new(size_t capacity)
+{
+    JLI_List l = (JLI_List) JLI_MemAlloc(sizeof(struct JLI_List_));
+    l->capacity = capacity;
+    l->elements = (char **) JLI_MemAlloc(capacity * sizeof(l->elements[0]));
+    l->size = 0;
+    return l;
+}
+
+void
+JLI_List_free(JLI_List sl)
+{
+    if (sl) {
+        if (sl->elements) {
+            size_t i;
+            for (i = 0; i < sl->size; i++)
+                JLI_MemFree(sl->elements[i]);
+            JLI_MemFree(sl->elements);
+        }
+        JLI_MemFree(sl);
+    }
+}
+
+void
+JLI_List_ensureCapacity(JLI_List sl, size_t capacity)
+{
+    if (sl->capacity < capacity) {
+        while (sl->capacity < capacity)
+            sl->capacity *= 2;
+        sl->elements = JLI_MemRealloc(sl->elements,
+            sl->capacity * sizeof(sl->elements[0]));
+    }
+}
+
+void
+JLI_List_add(JLI_List sl, char *str)
+{
+    JLI_List_ensureCapacity(sl, sl->size+1);
+    sl->elements[sl->size++] = str;
+}
+
+void
+JLI_List_addSubstring(JLI_List sl, const char *beg, size_t len)
+{
+    char *str = (char *) JLI_MemAlloc(len+1);
+    memcpy(str, beg, len);
+    str[len] = '\0';
+    JLI_List_ensureCapacity(sl, sl->size+1);
+    sl->elements[sl->size++] = str;
+}
+
+char *
+JLI_List_combine(JLI_List sl)
+{
+    size_t i;
+    size_t size;
+    char *str;
+    char *p;
+    for (i = 0, size = 1; i < sl->size; i++)
+        size += JLI_StrLen(sl->elements[i]);
+
+    str = JLI_MemAlloc(size);
+
+    for (i = 0, p = str; i < sl->size; i++) {
+        size_t len = JLI_StrLen(sl->elements[i]);
+        memcpy(p, sl->elements[i], len);
+        p += len;
+    }
+    *p = '\0';
+
+    return str;
+}
+
+char *
+JLI_List_join(JLI_List sl, char sep)
+{
+    size_t i;
+    size_t size;
+    char *str;
+    char *p;
+    for (i = 0, size = 1; i < sl->size; i++)
+        size += JLI_StrLen(sl->elements[i]) + 1;
+
+    str = JLI_MemAlloc(size);
+
+    for (i = 0, p = str; i < sl->size; i++) {
+        size_t len = JLI_StrLen(sl->elements[i]);
+        if (i > 0) *p++ = sep;
+        memcpy(p, sl->elements[i], len);
+        p += len;
+    }
+    *p = '\0';
+
+    return str;
+}
+
+JLI_List
+JLI_List_split(const char *str, char sep)
+{
+    const char *p, *q;
+    size_t len = JLI_StrLen(str);
+    int count;
+    JLI_List sl;
+    for (count = 1, p = str; p < str + len; p++)
+        count += (*p == sep);
+    sl = JLI_List_new(count);
+    for (p = str;;) {
+        for (q = p; q <= str + len; q++) {
+            if (*q == sep || *q == '\0') {
+                JLI_List_addSubstring(sl, p, q - p);
+                if (*q == '\0')
+                    return sl;
+                p = q + 1;
+            }
+        }
+    }
+}
diff --git a/jdk/src/java.base/share/native/libjli/jli_util.h b/jdk/src/java.base/share/native/libjli/jli_util.h
index 5799722..2060396 100644
--- a/jdk/src/java.base/share/native/libjli/jli_util.h
+++ b/jdk/src/java.base/share/native/libjli/jli_util.h
@@ -29,7 +29,15 @@
 #include <stdlib.h>
 #include <string.h>
 #include <stdio.h>
-#include <jni.h>
+
+#ifndef NO_JNI
+  #include <jni.h>
+#else
+  #define jboolean int
+  #define JNI_TRUE  1
+  #define JNI_FALSE 0
+#endif
+
 #define JLDEBUG_ENV_ENTRY "_JAVA_LAUNCHER_DEBUG"
 
 void *JLI_MemAlloc(size_t size);
@@ -45,6 +53,7 @@
 
 StdArg *JLI_GetStdArgs();
 int     JLI_GetStdArgc();
+int     JLI_GetAppArgIndex();
 
 #define JLI_StrLen(p1)          strlen((p1))
 #define JLI_StrChr(p1, p2)      strchr((p1), (p2))
@@ -102,4 +111,29 @@
 void     JLI_SetTraceLauncher();
 jboolean JLI_IsTraceLauncher();
 
+/*
+ * JLI_List - a dynamic list of char*
+ */
+struct JLI_List_
+{
+    char **elements;
+    size_t size;
+    size_t capacity;
+};
+typedef struct JLI_List_ *JLI_List;
+
+JLI_List JLI_List_new(size_t capacity);
+void JLI_List_free(JLI_List l);
+void JLI_List_ensureCapacity(JLI_List l, size_t capacity);
+/* e must be JLI_MemFree-able */
+void JLI_List_add(JLI_List l, char *e);
+/* a copy is made out of beg */
+void JLI_List_addSubstring(JLI_List l, const char *beg, size_t len);
+char *JLI_List_combine(JLI_List sl);
+char *JLI_List_join(JLI_List l, char sep);
+JLI_List JLI_List_split(const char *str, char sep);
+
+void JLI_InitArgProcessing(jboolean isJava, jboolean disableArgFile);
+JLI_List JLI_PreprocessArg(const char *arg);
+
 #endif  /* _JLI_UTIL_H */
diff --git a/jdk/src/java.base/share/native/libjli/wildcard.c b/jdk/src/java.base/share/native/libjli/wildcard.c
index d8c9df0..867e0ba 100644
--- a/jdk/src/java.base/share/native/libjli/wildcard.c
+++ b/jdk/src/java.base/share/native/libjli/wildcard.c
@@ -218,116 +218,6 @@
     return JLI_StrCmp(s1, s2) == 0;
 }
 
-/*
- * FileList ADT - a dynamic list of C filenames
- */
-struct FileList_
-{
-    char **files;
-    int size;
-    int capacity;
-};
-typedef struct FileList_ *FileList;
-
-static FileList
-FileList_new(int capacity)
-{
-    FileList fl = NEW_(FileList);
-    fl->capacity = capacity;
-    fl->files = (char **) JLI_MemAlloc(capacity * sizeof(fl->files[0]));
-    fl->size = 0;
-    return fl;
-}
-
-
-
-static void
-FileList_free(FileList fl)
-{
-    if (fl) {
-        if (fl->files) {
-            int i;
-            for (i = 0; i < fl->size; i++)
-                JLI_MemFree(fl->files[i]);
-            JLI_MemFree(fl->files);
-        }
-        JLI_MemFree(fl);
-    }
-}
-
-static void
-FileList_ensureCapacity(FileList fl, int capacity)
-{
-    if (fl->capacity < capacity) {
-        while (fl->capacity < capacity)
-            fl->capacity *= 2;
-        fl->files = JLI_MemRealloc(fl->files,
-                               fl->capacity * sizeof(fl->files[0]));
-    }
-}
-
-static void
-FileList_add(FileList fl, char *file)
-{
-    FileList_ensureCapacity(fl, fl->size+1);
-    fl->files[fl->size++] = file;
-}
-
-static void
-FileList_addSubstring(FileList fl, const char *beg, size_t len)
-{
-    char *filename = (char *) JLI_MemAlloc(len+1);
-    memcpy(filename, beg, len);
-    filename[len] = '\0';
-    FileList_ensureCapacity(fl, fl->size+1);
-    fl->files[fl->size++] = filename;
-}
-
-static char *
-FileList_join(FileList fl, char sep)
-{
-    int i;
-    int size;
-    char *path;
-    char *p;
-    for (i = 0, size = 1; i < fl->size; i++)
-        size += (int)JLI_StrLen(fl->files[i]) + 1;
-
-    path = JLI_MemAlloc(size);
-
-    for (i = 0, p = path; i < fl->size; i++) {
-        int len = (int)JLI_StrLen(fl->files[i]);
-        if (i > 0) *p++ = sep;
-        memcpy(p, fl->files[i], len);
-        p += len;
-    }
-    *p = '\0';
-
-    return path;
-}
-
-static FileList
-FileList_split(const char *path, char sep)
-{
-    const char *p, *q;
-    size_t len = JLI_StrLen(path);
-    int count;
-    FileList fl;
-    for (count = 1, p = path; p < path + len; p++)
-        count += (*p == sep);
-    fl = FileList_new(count);
-    for (p = path;;) {
-        for (q = p; q <= path + len; q++) {
-            if (*q == sep || *q == '\0') {
-                FileList_addSubstring(fl, p, q - p);
-                if (*q == '\0')
-                    return fl;
-                p = q + 1;
-            }
-        }
-    }
-}
-
 static int
 isJarFileName(const char *filename)
 {
@@ -352,22 +242,22 @@
     return filename;
 }
 
-static FileList
+static JLI_List
 wildcardFileList(const char *wildcard)
 {
     const char *basename;
-    FileList fl = FileList_new(16);
+    JLI_List fl = JLI_List_new(16);
     WildcardIterator it = WildcardIterator_for(wildcard);
 
     if (it == NULL)
     {
-        FileList_free(fl);
+        JLI_List_free(fl);
         return NULL;
     }
 
     while ((basename = WildcardIterator_next(it)) != NULL)
         if (isJarFileName(basename))
-            FileList_add(fl, wildcardConcat(wildcard, basename));
+            JLI_List_add(fl, wildcardConcat(wildcard, basename));
     WildcardIterator_close(it);
     return fl;
 }
@@ -383,25 +273,25 @@
 }
 
 static void
-FileList_expandWildcards(FileList fl)
+FileList_expandWildcards(JLI_List fl)
 {
-    int i, j;
+    size_t i, j;
     for (i = 0; i < fl->size; i++) {
-        if (isWildcard(fl->files[i])) {
-            FileList expanded = wildcardFileList(fl->files[i]);
+        if (isWildcard(fl->elements[i])) {
+            JLI_List expanded = wildcardFileList(fl->elements[i]);
             if (expanded != NULL && expanded->size > 0) {
-                JLI_MemFree(fl->files[i]);
-                FileList_ensureCapacity(fl, fl->size + expanded->size);
+                JLI_MemFree(fl->elements[i]);
+                JLI_List_ensureCapacity(fl, fl->size + expanded->size);
                 for (j = fl->size - 1; j >= i+1; j--)
-                    fl->files[j+expanded->size-1] = fl->files[j];
+                    fl->elements[j+expanded->size-1] = fl->elements[j];
                 for (j = 0; j < expanded->size; j++)
-                    fl->files[i+j] = expanded->files[j];
+                    fl->elements[i+j] = expanded->elements[j];
                 i += expanded->size - 1;
                 fl->size += expanded->size - 1;
                 /* fl expropriates expanded's elements. */
                 expanded->size = 0;
             }
-            FileList_free(expanded);
+            JLI_List_free(expanded);
         }
     }
 }
@@ -410,14 +300,14 @@
 JLI_WildcardExpandClasspath(const char *classpath)
 {
     char *expanded;
-    FileList fl;
+    JLI_List fl;
 
     if (JLI_StrChr(classpath, '*') == NULL)
         return classpath;
-    fl = FileList_split(classpath, PATH_SEPARATOR);
+    fl = JLI_List_split(classpath, PATH_SEPARATOR);
     FileList_expandWildcards(fl);
-    expanded = FileList_join(fl, PATH_SEPARATOR);
-    FileList_free(fl);
+    expanded = JLI_List_join(fl, PATH_SEPARATOR);
+    JLI_List_free(fl);
     if (getenv(JLDEBUG_ENV_ENTRY) != 0)
         printf("Expanded wildcards:\n"
                "    before: \"%s\"\n"
@@ -428,13 +318,13 @@
 
 #ifdef DEBUG_WILDCARD
 static void
-FileList_print(FileList fl)
+FileList_print(JLI_List fl)
 {
-    int i;
+    size_t i;
     putchar('[');
     for (i = 0; i < fl->size; i++) {
         if (i > 0) printf(", ");
-        printf("\"%s\"",fl->files[i]);
+        printf("\"%s\"",fl->elements[i]);
     }
     putchar(']');
 }
diff --git a/jdk/src/java.base/unix/native/libjava/TimeZone_md.c b/jdk/src/java.base/unix/native/libjava/TimeZone_md.c
index 8493470..455e256 100644
--- a/jdk/src/java.base/unix/native/libjava/TimeZone_md.c
+++ b/jdk/src/java.base/unix/native/libjava/TimeZone_md.c
@@ -685,6 +685,9 @@
 #ifdef __solaris__
     if (tz != NULL && strcmp(tz, "localtime") == 0) {
         tz = getSolarisDefaultZoneID();
+        if (freetz != NULL) {
+            free((void *) freetz);
+        }
         freetz = tz;
     }
 #endif
diff --git a/jdk/src/java.base/windows/native/libjli/cmdtoargs.c b/jdk/src/java.base/windows/native/libjli/cmdtoargs.c
index cfc1a46..80d66a9 100644
--- a/jdk/src/java.base/windows/native/libjli/cmdtoargs.c
+++ b/jdk/src/java.base/windows/native/libjli/cmdtoargs.c
@@ -198,18 +198,37 @@
     StdArg* argv = NULL;
     jboolean wildcard = JNI_FALSE;
     char* src = cmdline;
+    JLI_List argsInFile;
 
     // allocate arg buffer with sufficient space to receive the largest arg
     char* arg = JLI_StringDup(cmdline);
 
     do {
         src = next_arg(src, arg, &wildcard);
-        // resize to accommodate another Arg
-        argv = (StdArg*) JLI_MemRealloc(argv, (nargs+1) * sizeof(StdArg));
-        argv[nargs].arg = JLI_StringDup(arg);
-        argv[nargs].has_wildcard = wildcard;
+        argsInFile = JLI_PreprocessArg(arg);
+        if (argsInFile != NULL) {
+            size_t cnt, i;
+            // resize to accommodate another Arg
+            cnt = argsInFile->size;
+            argv = (StdArg*) JLI_MemRealloc(argv, (nargs + cnt) * sizeof(StdArg));
+            for (i = 0; i < cnt; i++) {
+                argv[nargs].arg = argsInFile->elements[i];
+                // wildcard is not supported in argfile
+                argv[nargs].has_wildcard = JNI_FALSE;
+                nargs++;
+            }
+            // Shallow free, we reuse the string to avoid copy
+            JLI_MemFree(argsInFile->elements);
+            JLI_MemFree(argsInFile);
+        } else {
+            // resize to accommodate another Arg
+            argv = (StdArg*) JLI_MemRealloc(argv, (nargs+1) * sizeof(StdArg));
+            argv[nargs].arg = JLI_StringDup(arg);
+            argv[nargs].has_wildcard = wildcard;
+            *arg = '\0';
+            nargs++;
+        }
         *arg = '\0';
-        nargs++;
     } while (src != NULL);
 
     JLI_MemFree(arg);
diff --git a/jdk/src/java.base/windows/native/libnet/Inet4AddressImpl.c b/jdk/src/java.base/windows/native/libnet/Inet4AddressImpl.c
index e953939..f786a80 100644
--- a/jdk/src/java.base/windows/native/libnet/Inet4AddressImpl.c
+++ b/jdk/src/java.base/windows/native/libnet/Inet4AddressImpl.c
@@ -31,6 +31,8 @@
 #include <malloc.h>
 #include <sys/types.h>
 #include <process.h>
+#include <iphlpapi.h>
+#include <icmpapi.h>
 
 #include "java_net_InetAddress.h"
 #include "java_net_Inet4AddressImpl.h"
@@ -281,114 +283,47 @@
  * Returns true is an ECHO_REPLY is received, otherwise, false.
  */
 static jboolean
-ping4(JNIEnv *env, jint fd, struct sockaddr_in* him, jint timeout,
-      struct sockaddr_in* netif, jint ttl) {
-    jint size;
-    jint n, len, hlen1, icmplen;
-    char sendbuf[1500];
-    char recvbuf[1500];
-    struct icmp *icmp;
-    struct ip *ip;
-    WSAEVENT hEvent;
-    struct sockaddr sa_recv;
-    jint tmout2;
-    u_short pid, seq;
-    int read_rv = 0;
+ping4(JNIEnv *env, unsigned long ipaddr, jint timeout) {
 
-    /* Initialize the sequence number to a suitable random number and
-       shift right one place to allow sufficient room for increamenting. */
-    seq = ((unsigned short)rand()) >> 1;
+    // See https://msdn.microsoft.com/en-us/library/aa366050%28VS.85%29.aspx
 
-    /* icmp_id is a 16 bit data type, therefore down cast the pid */
-    pid = (u_short) _getpid();
-    size = 60*1024;
-    setsockopt(fd, SOL_SOCKET, SO_RCVBUF, (const char *) &size, sizeof(size));
-    /**
-     * A TTL was specified, let's set the socket option.
-     */
-    if (ttl > 0) {
-      setsockopt(fd, IPPROTO_IP, IP_TTL, (const char *) &ttl, sizeof(ttl));
+    HANDLE hIcmpFile;
+    DWORD dwRetVal = 0;
+    char SendData[32] = {0};
+    LPVOID ReplyBuffer = NULL;
+    DWORD ReplySize = 0;
+
+    hIcmpFile = IcmpCreateFile();
+    if (hIcmpFile == INVALID_HANDLE_VALUE) {
+        NET_ThrowNew(env, WSAGetLastError(), "Unable to open handle");
+        return JNI_FALSE;
     }
 
-    /**
-     * A network interface was specified, let's bind to it.
-     */
-    if (netif != NULL) {
-      if (bind(fd, (struct sockaddr*)netif, sizeof(struct sockaddr_in)) < 0) {
-        NET_ThrowNew(env, WSAGetLastError(), "Can't bind socket");
-        closesocket(fd);
+    ReplySize = sizeof(ICMP_ECHO_REPLY) + sizeof(SendData);
+    ReplyBuffer = (VOID*) malloc(ReplySize);
+    if (ReplyBuffer == NULL) {
+        IcmpCloseHandle(hIcmpFile);
+        NET_ThrowNew(env, WSAGetLastError(), "Unable to allocate memory");
         return JNI_FALSE;
-      }
     }
 
-    /**
-     * Let's make the socket non blocking
-     */
-    hEvent = WSACreateEvent();
-    WSAEventSelect(fd, hEvent, FD_READ|FD_CONNECT|FD_CLOSE);
+    dwRetVal = IcmpSendEcho(hIcmpFile,  // HANDLE IcmpHandle,
+                            ipaddr,     // IPAddr DestinationAddress,
+                            SendData,   // LPVOID RequestData,
+                            sizeof(SendData),   // WORD RequestSize,
+                            NULL,       // PIP_OPTION_INFORMATION RequestOptions,
+                            ReplyBuffer,// LPVOID ReplyBuffer,
+                            ReplySize,  // DWORD ReplySize,
+                            timeout);   // DWORD Timeout
 
-    /**
-     * send 1 ICMP REQUEST every second until either we get a valid reply
-     * or the timeout expired.
-     */
-    do {
-      /**
-       * construct the ICMP header
-       */
-      memset(sendbuf, 0, 1500);
-      icmp = (struct icmp *) sendbuf;
-      icmp->icmp_type = ICMP_ECHO;
-      icmp->icmp_code = 0;
-      icmp->icmp_id = htons(pid);
-      icmp->icmp_seq = htons(seq);
-      /**
-       * checksum has to be set to zero before we can calculate the
-       * real checksum!
-       */
-      icmp->icmp_cksum = 0;
-      icmp->icmp_cksum = in_cksum((u_short *)icmp, 64);
-      /**
-       * Ping!
-       */
-      n = sendto(fd, sendbuf, 64, 0, (struct sockaddr *)him,
-                 sizeof(struct sockaddr));
-      if (n < 0 && WSAGetLastError() != WSAEWOULDBLOCK) {
-        NET_ThrowNew(env, WSAGetLastError(), "Can't send ICMP packet");
-        closesocket(fd);
-        WSACloseEvent(hEvent);
+    free(ReplyBuffer);
+    IcmpCloseHandle(hIcmpFile);
+
+    if (dwRetVal != 0) {
+        return JNI_TRUE;
+    } else {
         return JNI_FALSE;
-      }
-
-      /*
-       * wait for 1 second at most
-       */
-      tmout2 = timeout > 1000 ? 1000 : timeout;
-      do {
-        tmout2 = NET_Wait(env, fd, NET_WAIT_READ, tmout2);
-        if (tmout2 >= 0) {
-          len = sizeof(sa_recv);
-          n = recvfrom(fd, recvbuf, sizeof(recvbuf), 0, &sa_recv, &len);
-          ip = (struct ip*) recvbuf;
-          hlen1 = (ip->ip_hl) << 2;
-          icmp = (struct icmp *) (recvbuf + hlen1);
-          icmplen = n - hlen1;
-          /**
-           * Is that a proper ICMP reply?
-           */
-          if (icmplen >= 8 && icmp->icmp_type == ICMP_ECHOREPLY &&
-              (ntohs(icmp->icmp_seq) == seq) && (ntohs(icmp->icmp_id) == pid)) {
-            closesocket(fd);
-            WSACloseEvent(hEvent);
-            return JNI_TRUE;
-          }
-        }
-      } while (tmout2 > 0);
-      timeout -= 1000;
-      seq++;
-    } while (timeout > 0);
-    closesocket(fd);
-    WSACloseEvent(hEvent);
-    return JNI_FALSE;
+    }
 }
 
 /*
@@ -404,13 +339,7 @@
                                            jint ttl) {
     jint addr;
     jbyte caddr[4];
-    jint fd;
     struct sockaddr_in him;
-    struct sockaddr_in* netif = NULL;
-    struct sockaddr_in inf;
-    int len = 0;
-    WSAEVENT hEvent;
-    int connect_rv = -1;
     int sz;
 
     /**
@@ -428,135 +357,6 @@
     addr |= ((caddr[2] <<8) & 0xff00);
     addr |= (caddr[3] & 0xff);
     addr = htonl(addr);
-    /**
-     * Socket address
-     */
-    him.sin_addr.s_addr = addr;
-    him.sin_family = AF_INET;
-    len = sizeof(him);
 
-    /**
-     * If a network interface was specified, let's convert its address
-     * as well.
-     */
-    if (!(IS_NULL(ifArray))) {
-      memset((char *) caddr, 0, sizeof(caddr));
-      (*env)->GetByteArrayRegion(env, ifArray, 0, 4, caddr);
-      addr = ((caddr[0]<<24) & 0xff000000);
-      addr |= ((caddr[1] <<16) & 0xff0000);
-      addr |= ((caddr[2] <<8) & 0xff00);
-      addr |= (caddr[3] & 0xff);
-      addr = htonl(addr);
-      inf.sin_addr.s_addr = addr;
-      inf.sin_family = AF_INET;
-      inf.sin_port = 0;
-      netif = &inf;
-    }
-
-#if 0
-    /*
-     * Windows implementation of ICMP & RAW sockets is too unreliable for now.
-     * Therefore it's best not to try it at all and rely only on TCP
-     * We may revisit and enable this code in the future.
-     */
-
-    /*
-     * Let's try to create a RAW socket to send ICMP packets
-     * This usually requires "root" privileges, so it's likely to fail.
-     */
-    fd = NET_Socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
-    if (fd != -1) {
-      /*
-       * It didn't fail, so we can use ICMP_ECHO requests.
-       */
-        return ping4(env, fd, &him, timeout, netif, ttl);
-    }
-#endif
-
-    /*
-     * Can't create a raw socket, so let's try a TCP socket
-     */
-    fd = NET_Socket(AF_INET, SOCK_STREAM, 0);
-    if (fd == SOCKET_ERROR) {
-        /* note: if you run out of fds, you may not be able to load
-         * the exception class, and get a NoClassDefFoundError
-         * instead.
-         */
-        NET_ThrowNew(env, WSAGetLastError(), "Can't create socket");
-        return JNI_FALSE;
-    }
-    if (ttl > 0) {
-      setsockopt(fd, IPPROTO_IP, IP_TTL, (const char *)&ttl, sizeof(ttl));
-    }
-    /*
-     * A network interface was specified, so let's bind to it.
-     */
-    if (netif != NULL) {
-      if (bind(fd, (struct sockaddr*)netif, sizeof(struct sockaddr_in)) < 0) {
-        NET_ThrowNew(env, WSAGetLastError(), "Can't bind socket");
-        closesocket(fd);
-        return JNI_FALSE;
-      }
-    }
-
-    /*
-     * Make the socket non blocking so we can use select/poll.
-     */
-    hEvent = WSACreateEvent();
-    WSAEventSelect(fd, hEvent, FD_READ|FD_CONNECT|FD_CLOSE);
-
-    /* no need to use NET_Connect as non-blocking */
-    him.sin_port = htons(7);    /* Echo */
-    connect_rv = connect(fd, (struct sockaddr *)&him, len);
-
-    /**
-     * connection established or refused immediately, either way it means
-     * we were able to reach the host!
-     */
-    if (connect_rv == 0 || WSAGetLastError() == WSAECONNREFUSED) {
-        WSACloseEvent(hEvent);
-        closesocket(fd);
-        return JNI_TRUE;
-    } else {
-        int optlen;
-
-        switch (WSAGetLastError()) {
-        case WSAEHOSTUNREACH:   /* Host Unreachable */
-        case WSAENETUNREACH:    /* Network Unreachable */
-        case WSAENETDOWN:       /* Network is down */
-        case WSAEPFNOSUPPORT:   /* Protocol Family unsupported */
-          WSACloseEvent(hEvent);
-          closesocket(fd);
-          return JNI_FALSE;
-        }
-
-        if (WSAGetLastError() != WSAEWOULDBLOCK) {
-            NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "ConnectException",
-                                         "connect failed");
-            WSACloseEvent(hEvent);
-            closesocket(fd);
-            return JNI_FALSE;
-        }
-
-        timeout = NET_Wait(env, fd, NET_WAIT_CONNECT, timeout);
-
-        /* has connection been established */
-
-        if (timeout >= 0) {
-          optlen = sizeof(connect_rv);
-          if (getsockopt(fd, SOL_SOCKET, SO_ERROR, (void*)&connect_rv,
-                         &optlen) <0) {
-            connect_rv = WSAGetLastError();
-          }
-
-          if (connect_rv == 0 || connect_rv == WSAECONNREFUSED) {
-            WSACloseEvent(hEvent);
-            closesocket(fd);
-            return JNI_TRUE;
-          }
-        }
-    }
-    WSACloseEvent(hEvent);
-    closesocket(fd);
-    return JNI_FALSE;
+    return ping4(env, addr, timeout);
 }
diff --git a/jdk/src/java.base/windows/native/libnet/Inet6AddressImpl.c b/jdk/src/java.base/windows/native/libnet/Inet6AddressImpl.c
index 417f897..f00a872 100644
--- a/jdk/src/java.base/windows/native/libnet/Inet6AddressImpl.c
+++ b/jdk/src/java.base/windows/native/libnet/Inet6AddressImpl.c
@@ -31,6 +31,8 @@
 #include <malloc.h>
 #include <sys/types.h>
 #include <process.h>
+#include <iphlpapi.h>
+#include <icmpapi.h>
 
 #include "java_net_InetAddress.h"
 #include "java_net_Inet4AddressImpl.h"
@@ -332,139 +334,61 @@
  * Returns true is an ECHO_REPLY is received, otherwise, false.
  */
 static jboolean
-ping6(JNIEnv *env, jint fd, struct SOCKADDR_IN6* him, jint timeout,
-      struct SOCKADDR_IN6* netif, jint ttl) {
-    jint size;
-    jint n, len, i;
-    char sendbuf[1500];
-    char auxbuf[1500];
-    unsigned char recvbuf[1500];
-    struct icmp6_hdr *icmp6;
-    struct SOCKADDR_IN6 sa_recv;
-    unsigned short pid, seq;
-    int read_rv = 0;
-    WSAEVENT hEvent;
-    struct ip6_pseudo_hdr *pseudo_ip6;
-    int timestamp;
-    int tmout2;
+ping6(JNIEnv *env,
+      struct sockaddr_in6* src,
+      struct sockaddr_in6* dest,
+      jint timeout)
+{
+    HANDLE hIcmpFile;
+    DWORD dwRetVal = 0;
+    char SendData[32] = {0};
+    LPVOID ReplyBuffer = NULL;
+    DWORD ReplySize = 0;
+    IP_OPTION_INFORMATION ipInfo = {255, 0, 0, 0, NULL};
+    struct sockaddr_in6 sa6Source;
 
-    /* Initialize the sequence number to a suitable random number and
-       shift right one place to allow sufficient room for increamenting. */
-    seq = ((unsigned short)rand()) >> 1;
-
-    /* icmp_id is a 16 bit data type, therefore down cast the pid */
-    pid = (unsigned short) _getpid();
-
-    size = 60*1024;
-    setsockopt(fd, SOL_SOCKET, SO_RCVBUF, (const char *)&size, sizeof(size));
-    /**
-     * A TTL was specified, let's set the socket option.
-     */
-    if (ttl > 0) {
-      setsockopt(fd, IPPROTO_IPV6, IPV6_UNICAST_HOPS, (const char *) &ttl, sizeof(ttl));
+    hIcmpFile = Icmp6CreateFile();
+    if (hIcmpFile == INVALID_HANDLE_VALUE) {
+        NET_ThrowNew(env, WSAGetLastError(), "Unable to open handle");
+        return JNI_FALSE;
     }
 
-    /**
-     * A network interface was specified, let's bind to it.
-     */
-    if (netif != NULL) {
-      if (NET_Bind(fd, (struct sockaddr*)netif, sizeof(struct sockaddr_in6)) < 0){
-        NET_ThrowNew(env, WSAGetLastError(), "Can't bind socket to interface");
-        closesocket(fd);
+    ReplySize = sizeof(ICMPV6_ECHO_REPLY) + sizeof(SendData);
+    ReplyBuffer = (VOID*) malloc(ReplySize);
+    if (ReplyBuffer == NULL) {
+        IcmpCloseHandle(hIcmpFile);
+        NET_ThrowNew(env, WSAGetLastError(), "Unable to allocate memory");
         return JNI_FALSE;
-      }
     }
 
-    /*
-     * Make the socket non blocking
-     */
-    hEvent = WSACreateEvent();
-    WSAEventSelect(fd, hEvent, FD_READ|FD_CONNECT|FD_CLOSE);
+    //define local source information
+    sa6Source.sin6_addr = in6addr_any;
+    sa6Source.sin6_family = AF_INET6;
+    sa6Source.sin6_flowinfo = 0;
+    sa6Source.sin6_port = 0;
 
-    /**
-     * send 1 ICMP REQUEST every second until either we get a valid reply
-     * or the timeout expired.
-     */
-    do {
-      /* let's tag the ECHO packet with our pid so we can identify it */
-      timestamp = GetCurrentTime();
-      memset(sendbuf, 0, 1500);
-      icmp6 = (struct icmp6_hdr *) sendbuf;
-      icmp6->icmp6_type = ICMP6_ECHO_REQUEST;
-      icmp6->icmp6_code = 0;
-      icmp6->icmp6_id = htons(pid);
-      icmp6->icmp6_seq = htons(seq);
-      icmp6->icmp6_cksum = 0;
-      memcpy((icmp6 + 1), &timestamp, sizeof(int));
-      if (netif != NULL) {
-        memset(auxbuf, 0, 1500);
-        pseudo_ip6 = (struct ip6_pseudo_hdr*) auxbuf;
-        memcpy(&pseudo_ip6->ip6_src, &netif->sin6_addr, sizeof(struct in6_addr));
-        memcpy(&pseudo_ip6->ip6_dst, &him->sin6_addr, sizeof(struct in6_addr));
-        pseudo_ip6->ip6_plen= htonl( 64 );
-        pseudo_ip6->ip6_nxt = htonl( IPPROTO_ICMPV6 );
-        memcpy(auxbuf + sizeof(struct ip6_pseudo_hdr), icmp6, 64);
-        /**
-         * We shouldn't have to do that as computing the checksum is supposed
-         * to be done by the IPv6 stack. Unfortunately windows, here too, is
-         * uterly broken, or non compliant, so let's do it.
-         * Problem is to compute the checksum I need to know the source address
-         * which happens only if I know the interface to be used...
-         */
-        icmp6->icmp6_cksum = in_cksum((u_short *)pseudo_ip6, sizeof(struct ip6_pseudo_hdr) + 64);
-      }
+    dwRetVal = Icmp6SendEcho2(hIcmpFile,    // HANDLE IcmpHandle,
+                              NULL,         // HANDLE Event,
+                              NULL,         // PIO_APC_ROUTINE ApcRoutine,
+                              NULL,         // PVOID ApcContext,
+                              &sa6Source,   // struct sockaddr_in6 *SourceAddress,
+                              dest,         // struct sockaddr_in6 *DestinationAddress,
+                              SendData,     // LPVOID RequestData,
+                              sizeof(SendData), // WORD RequestSize,
+                              &ipInfo,      // PIP_OPTION_INFORMATION RequestOptions,
+                              ReplyBuffer,  // LPVOID ReplyBuffer,
+                              ReplySize,    // DWORD ReplySize,
+                              timeout);     // DWORD Timeout
 
-      /**
-       * Ping!
-       */
-      n = sendto(fd, sendbuf, 64, 0, (struct sockaddr*) him, sizeof(struct sockaddr_in6));
-      if (n < 0 && (WSAGetLastError() == WSAEINTR || WSAGetLastError() == WSAEADDRNOTAVAIL)) {
-        // Happens when using a "tunnel interface" for instance.
-        // Or trying to send a packet on a different scope.
-        closesocket(fd);
-        WSACloseEvent(hEvent);
+    free(ReplyBuffer);
+    IcmpCloseHandle(hIcmpFile);
+
+
+    if (dwRetVal != 0) {
+        return JNI_TRUE;
+    } else {
         return JNI_FALSE;
-      }
-      if (n < 0 && WSAGetLastError() != WSAEWOULDBLOCK) {
-        NET_ThrowNew(env, WSAGetLastError(), "Can't send ICMP packet");
-        closesocket(fd);
-        WSACloseEvent(hEvent);
-        return JNI_FALSE;
-      }
-
-      tmout2 = timeout > 1000 ? 1000 : timeout;
-      do {
-        tmout2 = NET_Wait(env, fd, NET_WAIT_READ, tmout2);
-
-        if (tmout2 >= 0) {
-          len = sizeof(sa_recv);
-          memset(recvbuf, 0, 1500);
-          /**
-           * For some unknown reason, besides plain stupidity, windows
-           * truncates the first 4 bytes of the icmpv6 header some we can't
-           * check for the ICMP_ECHOREPLY value.
-           * we'll check the other values, though
-           */
-          n = recvfrom(fd, recvbuf + 4, sizeof(recvbuf) - 4, 0, (struct sockaddr*) &sa_recv, &len);
-          icmp6 = (struct icmp6_hdr *) (recvbuf);
-          memcpy(&i, (icmp6 + 1), sizeof(int));
-          /**
-           * Is that the reply we were expecting?
-           */
-          if (n >= 8 && ntohs(icmp6->icmp6_seq) == seq &&
-              ntohs(icmp6->icmp6_id) == pid && i == timestamp) {
-            closesocket(fd);
-            WSACloseEvent(hEvent);
-            return JNI_TRUE;
-          }
-        }
-      } while (tmout2 > 0);
-      timeout -= 1000;
-      seq++;
-    } while (timeout > 0);
-    closesocket(fd);
-    WSACloseEvent(hEvent);
-    return JNI_FALSE;
+    }
 }
 #endif /* AF_INET6 */
 
@@ -482,11 +406,10 @@
                                            jint ttl, jint if_scope) {
 #ifdef AF_INET6
     jbyte caddr[16];
-    jint fd, sz;
+    jint sz;
     struct sockaddr_in6 him6;
     struct sockaddr_in6* netif = NULL;
     struct sockaddr_in6 inf6;
-    WSAEVENT hEvent;
     int len = 0;
     int connect_rv = -1;
 
@@ -518,6 +441,7 @@
       him6.sin6_scope_id = scope;
     }
     len = sizeof(struct sockaddr_in6);
+
     /**
      * A network interface was specified, let's convert the address
      */
@@ -532,122 +456,8 @@
       netif = &inf6;
     }
 
-#if 0
-    /*
-     * Windows implementation of ICMP & RAW sockets is too unreliable for now.
-     * Therefore it's best not to try it at all and rely only on TCP
-     * We may revisit and enable this code in the future.
-     */
+    return ping6(env, netif, &him6, timeout);
 
-    /*
-     * Right now, windows doesn't generate the ICMP checksum automatically
-     * so we have to compute it, but we can do it only if we know which
-     * interface will be used. Therefore, don't try to use ICMP if no
-     * interface was specified.
-     * When ICMPv6 support improves in windows, we may change this.
-     */
-    if (!(IS_NULL(ifArray))) {
-      /*
-       * If we can create a RAW socket, then when can use the ICMP ECHO_REQUEST
-       * otherwise we'll try a tcp socket to the Echo port (7).
-       * Note that this is empiric, and not connecting could mean it's blocked
-       * or the echo servioe has been disabled.
-       */
-      fd = NET_Socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6);
-
-      if (fd != -1) { /* Good to go, let's do a ping */
-        return ping6(env, fd, &him6, timeout, netif, ttl);
-      }
-    }
-#endif
-
-    /* No good, let's fall back on TCP */
-    fd = NET_Socket(AF_INET6, SOCK_STREAM, 0);
-    if (fd == SOCKET_ERROR) {
-        /* note: if you run out of fds, you may not be able to load
-         * the exception class, and get a NoClassDefFoundError
-         * instead.
-         */
-        NET_ThrowNew(env, errno, "Can't create socket");
-        return JNI_FALSE;
-    }
-
-    /**
-     * A TTL was specified, let's set the socket option.
-     */
-    if (ttl > 0) {
-      setsockopt(fd, IPPROTO_IPV6, IPV6_UNICAST_HOPS, (const char *)&ttl, sizeof(ttl));
-    }
-
-    /**
-     * A network interface was specified, let's bind to it.
-     */
-    if (netif != NULL) {
-      if (NET_Bind(fd, (struct sockaddr*)netif, sizeof(struct sockaddr_in6)) < 0) {
-        NET_ThrowNew(env, WSAGetLastError(), "Can't bind socket to interface");
-        closesocket(fd);
-        return JNI_FALSE;
-      }
-    }
-
-    /**
-     * Make the socket non blocking.
-     */
-    hEvent = WSACreateEvent();
-    WSAEventSelect(fd, hEvent, FD_READ|FD_CONNECT|FD_CLOSE);
-
-    /* no need to use NET_Connect as non-blocking */
-    him6.sin6_port = htons((short) 7); /* Echo port */
-    connect_rv = connect(fd, (struct sockaddr *)&him6, len);
-
-    /**
-     * connection established or refused immediately, either way it means
-     * we were able to reach the host!
-     */
-    if (connect_rv == 0 || WSAGetLastError() == WSAECONNREFUSED) {
-        WSACloseEvent(hEvent);
-        closesocket(fd);
-        return JNI_TRUE;
-    } else {
-        int optlen;
-
-        switch (WSAGetLastError()) {
-        case WSAEHOSTUNREACH:   /* Host Unreachable */
-        case WSAENETUNREACH:    /* Network Unreachable */
-        case WSAENETDOWN:       /* Network is down */
-        case WSAEPFNOSUPPORT:   /* Protocol Family unsupported */
-          WSACloseEvent(hEvent);
-          closesocket(fd);
-          return JNI_FALSE;
-        }
-
-        if (WSAGetLastError() != WSAEWOULDBLOCK) {
-            NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "ConnectException",
-                                         "connect failed");
-            WSACloseEvent(hEvent);
-            closesocket(fd);
-            return JNI_FALSE;
-        }
-
-        timeout = NET_Wait(env, fd, NET_WAIT_CONNECT, timeout);
-
-        if (timeout >= 0) {
-          /* has connection been established? */
-          optlen = sizeof(connect_rv);
-          if (getsockopt(fd, SOL_SOCKET, SO_ERROR, (void*)&connect_rv,
-                         &optlen) <0) {
-            connect_rv = WSAGetLastError();
-          }
-
-          if (connect_rv == 0 || connect_rv == WSAECONNREFUSED) {
-            WSACloseEvent(hEvent);
-            closesocket(fd);
-            return JNI_TRUE;
-          }
-        }
-    }
-    WSACloseEvent(hEvent);
-    closesocket(fd);
 #endif /* AF_INET6 */
     return JNI_FALSE;
 }
diff --git a/jdk/src/java.desktop/macosx/classes/sun/lwawt/LWWindowPeer.java b/jdk/src/java.desktop/macosx/classes/sun/lwawt/LWWindowPeer.java
index 6196758..d1f5f7e 100644
--- a/jdk/src/java.desktop/macosx/classes/sun/lwawt/LWWindowPeer.java
+++ b/jdk/src/java.desktop/macosx/classes/sun/lwawt/LWWindowPeer.java
@@ -746,7 +746,7 @@
      */
     @Override
     public void notifyMouseEvent(int id, long when, int button,
-                                 int x, int y, int screenX, int screenY,
+                                 int x, int y, int absX, int absY,
                                  int modifiers, int clickCount, boolean popupTrigger,
                                  byte[] bdata)
     {
@@ -763,7 +763,7 @@
                             this);
                     Component target = lastMouseEventPeer.getTarget();
                     postMouseExitedEvent(target, when, modifiers, lp,
-                            screenX, screenY, clickCount, popupTrigger, button);
+                            absX, absY, clickCount, popupTrigger, button);
                 }
 
                 // Sometimes we may get MOUSE_EXITED after lastCommonMouseEventPeer is switched
@@ -781,7 +781,7 @@
                     Point lp = targetPeer.windowToLocal(x, y, this);
                     Component target = targetPeer.getTarget();
                     postMouseEnteredEvent(target, when, modifiers, lp,
-                            screenX, screenY, clickCount, popupTrigger, button);
+                            absX, absY, clickCount, popupTrigger, button);
                 }
                 lastCommonMouseEventPeer = targetPeer;
                 lastMouseEventPeer = targetPeer;
@@ -798,12 +798,12 @@
             // implemented in CPlatformEmbeddedFrame class
             if (topmostWindowPeer == this || topmostWindowPeer == null) {
                 generateMouseEnterExitEventsForComponents(when, button, x, y,
-                        screenX, screenY, modifiers, clickCount, popupTrigger,
+                        absX, absY, modifiers, clickCount, popupTrigger,
                         targetPeer);
             } else {
                 LWComponentPeer<?, ?> topmostTargetPeer = topmostWindowPeer.findPeerAt(r.x + x, r.y + y);
                 topmostWindowPeer.generateMouseEnterExitEventsForComponents(when, button, x, y,
-                        screenX, screenY, modifiers, clickCount, popupTrigger,
+                        absX, absY, modifiers, clickCount, popupTrigger,
                         topmostTargetPeer);
             }
 
@@ -874,7 +874,7 @@
             if (targetPeer.isEnabled()) {
                 MouseEvent event = new MouseEvent(targetPeer.getTarget(), id,
                                                   when, modifiers, lp.x, lp.y,
-                                                  screenX, screenY, clickCount,
+                                                  absX, absY, clickCount,
                                                   popupTrigger, button);
                 postEvent(event);
             }
@@ -885,7 +885,7 @@
                     postEvent(new MouseEvent(targetPeer.getTarget(),
                                              MouseEvent.MOUSE_CLICKED,
                                              when, modifiers,
-                                             lp.x, lp.y, screenX, screenY,
+                                             lp.x, lp.y, absX, absY,
                                              clickCount, popupTrigger, button));
                 }
                 mouseClickButtons &= ~eventButtonMask;
@@ -948,10 +948,10 @@
     }
 
     @Override
-    public void notifyMouseWheelEvent(long when, int x, int y, int modifiers,
-                                      int scrollType, int scrollAmount,
-                                      int wheelRotation, double preciseWheelRotation,
-                                      byte[] bdata)
+    public void notifyMouseWheelEvent(long when, int x, int y, int absX,
+                                      int absY, int modifiers, int scrollType,
+                                      int scrollAmount, int wheelRotation,
+                                      double preciseWheelRotation, byte[] bdata)
     {
         // TODO: could we just use the last mouse event target here?
         Rectangle r = getBounds();
@@ -963,12 +963,11 @@
 
         Point lp = targetPeer.windowToLocal(x, y, this);
         // TODO: fill "bdata" member of AWTEvent
-        // TODO: screenX/screenY
         postEvent(new MouseWheelEvent(targetPeer.getTarget(),
                                       MouseEvent.MOUSE_WHEEL,
                                       when, modifiers,
                                       lp.x, lp.y,
-                                      0, 0, /* screenX, Y */
+                                      absX, absY, /* absX, absY */
                                       0 /* clickCount */, false /* popupTrigger */,
                                       scrollType, scrollAmount,
                                       wheelRotation, preciseWheelRotation));
diff --git a/jdk/src/java.desktop/macosx/classes/sun/lwawt/PlatformEventNotifier.java b/jdk/src/java.desktop/macosx/classes/sun/lwawt/PlatformEventNotifier.java
index 5bb3368..d613b9c 100644
--- a/jdk/src/java.desktop/macosx/classes/sun/lwawt/PlatformEventNotifier.java
+++ b/jdk/src/java.desktop/macosx/classes/sun/lwawt/PlatformEventNotifier.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2015, Oracle and/or its affiliates. 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
@@ -49,14 +49,14 @@
      * point of the client area is (insets.top, insets.left).
      */
     void notifyMouseEvent(int id, long when, int button,
-                          int x, int y, int screenX, int screenY,
+                          int x, int y, int absX, int absY,
                           int modifiers, int clickCount, boolean popupTrigger,
                           byte[] bdata);
 
-    void notifyMouseWheelEvent(long when, int x, int y, int modifiers,
-                               int scrollType, int scrollAmount,
-                               int wheelRotation, double preciseWheelRotation,
-                               byte[] bdata);
+    void notifyMouseWheelEvent(long when, int x, int y, final int absX,
+                               final int absY, int modifiers, int scrollType,
+                               int scrollAmount, int wheelRotation,
+                               double preciseWheelRotation, byte[] bdata);
     /*
      * Called by the delegate when a key is pressed.
      */
diff --git a/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CDataTransferer.java b/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CDataTransferer.java
index c073560..249b5ed 100644
--- a/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CDataTransferer.java
+++ b/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CDataTransferer.java
@@ -26,8 +26,6 @@
 package sun.lwawt.macosx;
 
 import java.awt.*;
-import java.awt.image.*;
-import sun.awt.image.ImageRepresentation;
 
 import java.io.*;
 import java.net.URL;
@@ -35,6 +33,7 @@
 import java.text.Normalizer;
 import java.text.Normalizer.Form;
 import java.util.*;
+import java.util.regex.*;
 
 import java.awt.datatransfer.*;
 import sun.awt.datatransfer.*;
@@ -123,26 +122,52 @@
 
     @Override
     public Object translateBytes(byte[] bytes, DataFlavor flavor,
-                                    long format, Transferable transferable) throws IOException {
+                                 long format, Transferable transferable) throws IOException {
 
-            if (format == CF_URL && URL.class.equals(flavor.getRepresentationClass()))
-            {
-                String charset = Charset.defaultCharset().name();
-                if (transferable != null && transferable.isDataFlavorSupported(javaTextEncodingFlavor)) {
-                    try {
-                        charset = new String((byte[])transferable.getTransferData(javaTextEncodingFlavor), "UTF-8");
-                    } catch (UnsupportedFlavorException cannotHappen) {
-                    }
+        if (format == CF_URL && URL.class.equals(flavor.getRepresentationClass())) {
+            String charset = Charset.defaultCharset().name();
+            if (transferable != null && transferable.isDataFlavorSupported(javaTextEncodingFlavor)) {
+                try {
+                    charset = new String((byte[]) transferable.getTransferData(javaTextEncodingFlavor), "UTF-8");
+                } catch (UnsupportedFlavorException cannotHappen) {
                 }
-
-                return new URL(new String(bytes, charset));
             }
+            String xml = new String(bytes, charset);
+            // macosx pasteboard returns a property list that consists of one URL
+            // let's extract it.
+            return new URL(extractURL(xml));
+        }
 
-            if (format == CF_STRING) {
-                bytes = Normalizer.normalize(new String(bytes, "UTF8"), Form.NFC).getBytes("UTF8");
-            }
+        if (format == CF_STRING) {
+            bytes = Normalizer.normalize(new String(bytes, "UTF8"), Form.NFC).getBytes("UTF8");
+        }
 
-            return super.translateBytes(bytes, flavor, format, transferable);
+        return super.translateBytes(bytes, flavor, format, transferable);
+    }
+
+    /**
+     * Macosx pasteboard returns xml document that contains one URL, for exmple:
+     * <pre>
+     *     {@code
+     * <?xml version=\"1.0\" encoding=\"UTF-8\"?>
+     * <!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
+     * <plist version=\"1.0\">
+     *      <array>
+     *          <string>file:///path_to_file</string>
+     *          <string></string>
+     *      </array>
+     * </plist>
+     *     }
+     * </pre>
+     */
+    private String extractURL(String xml) {
+        Pattern urlExtractorPattern = Pattern.compile("<string>(.*)</string>");
+        Matcher matcher = urlExtractorPattern.matcher(xml);
+        if (matcher.find()) {
+            return matcher.group(1);
+        } else {
+            return null;
+        }
     }
 
     @Override
diff --git a/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CEmbeddedFrame.java b/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CEmbeddedFrame.java
index b34eff3..0fbdf00 100644
--- a/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CEmbeddedFrame.java
+++ b/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CEmbeddedFrame.java
@@ -75,8 +75,8 @@
         int x = (int)pluginX;
         int y = (int)pluginY;
         Point locationOnScreen = getLocationOnScreen();
-        int screenX = locationOnScreen.x + x;
-        int screenY = locationOnScreen.y + y;
+        int absX = locationOnScreen.x + x;
+        int absY = locationOnScreen.y + y;
 
         if (eventType == CocoaConstants.NPCocoaEventMouseEntered) {
             CCursorManager.nativeSetAllowsCursorSetInBackground(true);
@@ -85,15 +85,19 @@
         }
 
         responder.handleMouseEvent(eventType, modifierFlags, buttonNumber,
-                                   clickCount, x, y, screenX, screenY);
+                                   clickCount, x, y, absX, absY);
     }
 
     public void handleScrollEvent(double pluginX, double pluginY, int modifierFlags,
                                   double deltaX, double deltaY, double deltaZ) {
         int x = (int)pluginX;
         int y = (int)pluginY;
+        Point locationOnScreen = getLocationOnScreen();
+        int absX = locationOnScreen.x + x;
+        int absY = locationOnScreen.y + y;
 
-        responder.handleScrollEvent(x, y, modifierFlags, deltaX, deltaY);
+        responder.handleScrollEvent(x, y, absX, absY, modifierFlags, deltaX,
+                                    deltaY);
     }
 
     public void handleKeyEvent(int eventType, int modifierFlags, String characters,
diff --git a/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformResponder.java b/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformResponder.java
index 591c16d..5457b1f 100644
--- a/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformResponder.java
+++ b/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformResponder.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, Oracle and/or its affiliates. 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
@@ -54,8 +54,7 @@
      * Handles mouse events.
      */
     void handleMouseEvent(int eventType, int modifierFlags, int buttonNumber,
-                          int clickCount, int x, int y, int absoluteX,
-                          int absoluteY) {
+                          int clickCount, int x, int y, int absX, int absY) {
         final SunToolkit tk = (SunToolkit)Toolkit.getDefaultToolkit();
         if ((buttonNumber > 2 && !tk.areExtraMouseButtonsEnabled())
                 || buttonNumber > tk.getNumberOfButtons() - 1) {
@@ -81,14 +80,15 @@
         boolean jpopupTrigger = NSEvent.isPopupTrigger(jmodifiers);
 
         eventNotifier.notifyMouseEvent(jeventType, System.currentTimeMillis(), jbuttonNumber,
-                x, y, absoluteX, absoluteY, jmodifiers, jclickCount,
+                x, y, absX, absY, jmodifiers, jclickCount,
                 jpopupTrigger, null);
     }
 
     /**
      * Handles scroll events.
      */
-    void handleScrollEvent(final int x, final int y, final int modifierFlags,
+    void handleScrollEvent(final int x, final int y, final int absX,
+                           final int absY, final int modifierFlags,
                            final double deltaX, final double deltaY) {
         final int buttonNumber = CocoaConstants.kCGMouseButtonCenter;
         int jmodifiers = NSEvent.nsToJavaMouseModifiers(buttonNumber,
@@ -97,18 +97,19 @@
 
         // Vertical scroll.
         if (!isShift && deltaY != 0.0) {
-            dispatchScrollEvent(x, y, jmodifiers, deltaY);
+            dispatchScrollEvent(x, y, absX, absY, jmodifiers, deltaY);
         }
         // Horizontal scroll or shirt+vertical scroll.
         final double delta = isShift && deltaY != 0.0 ? deltaY : deltaX;
         if (delta != 0.0) {
             jmodifiers |= InputEvent.SHIFT_DOWN_MASK;
-            dispatchScrollEvent(x, y, jmodifiers, delta);
+            dispatchScrollEvent(x, y, absX, absY, jmodifiers, delta);
         }
     }
 
-    private void dispatchScrollEvent(final int x, final int y,
-                                     final int modifiers, final double delta) {
+    private void dispatchScrollEvent(final int x, final int y, final int absX,
+                                     final int absY, final int modifiers,
+                                     final double delta) {
         final long when = System.currentTimeMillis();
         final int scrollType = MouseWheelEvent.WHEEL_UNIT_SCROLL;
         final int scrollAmount = 1;
@@ -118,8 +119,9 @@
             wheelRotation = signum;
         }
         // invert the wheelRotation for the peer
-        eventNotifier.notifyMouseWheelEvent(when, x, y, modifiers, scrollType,
-                scrollAmount, -wheelRotation, -delta, null);
+        eventNotifier.notifyMouseWheelEvent(when, x, y, absX, absY, modifiers,
+                                            scrollType, scrollAmount,
+                                            -wheelRotation, -delta, null);
     }
 
     /**
diff --git a/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformView.java b/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformView.java
index 3c2cd23..ee88f8f7 100644
--- a/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformView.java
+++ b/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformView.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, Oracle and/or its affiliates. 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
@@ -186,16 +186,19 @@
     }
 
 
-    private void deliverMouseEvent(NSEvent event) {
+    private void deliverMouseEvent(final NSEvent event) {
         int x = event.getX();
         int y = getBounds().height - event.getY();
+        int absX = event.getAbsX();
+        int absY = event.getAbsY();
 
         if (event.getType() == CocoaConstants.NSScrollWheel) {
-            responder.handleScrollEvent(x, y, event.getModifierFlags(),
+            responder.handleScrollEvent(x, y, absX, absY, event.getModifierFlags(),
                                         event.getScrollDeltaX(), event.getScrollDeltaY());
         } else {
             responder.handleMouseEvent(event.getType(), event.getModifierFlags(), event.getButtonNumber(),
-                                       event.getClickCount(), x, y, event.getAbsX(), event.getAbsY());
+                                       event.getClickCount(), x, y,
+                                       absX, absY);
         }
     }
 
diff --git a/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CWarningWindow.java b/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CWarningWindow.java
index 0acc67f..05db278 100644
--- a/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CWarningWindow.java
+++ b/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CWarningWindow.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2015, Oracle and/or its affiliates. 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
@@ -173,7 +173,7 @@
 
     @Override
     public void notifyMouseEvent(int id, long when, int button, int x, int y,
-                                 int screenX, int screenY, int modifiers,
+                                 int absX, int absY, int modifiers,
                                  int clickCount, boolean popupTrigger,
                                  byte[] bdata) {
         LWWindowPeer peer = ownerPeer.get();
@@ -239,9 +239,10 @@
     }
 
     @Override
-    public void notifyMouseWheelEvent(long when, int x, int y, int modifiers,
-                                      int scrollType, int scrollAmount,
-                                      int wheelRotation, double preciseWheelRotation,
+    public void notifyMouseWheelEvent(long when, int x, int y, int absX,
+                                      int absY, int modifiers, int scrollType,
+                                      int scrollAmount, int wheelRotation,
+                                      double preciseWheelRotation,
                                       byte[] bdata) {
     }
 
diff --git a/jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/LWCToolkit.m b/jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/LWCToolkit.m
index f84a3d3..2a4ab93 100644
--- a/jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/LWCToolkit.m
+++ b/jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/LWCToolkit.m
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, Oracle and/or its affiliates. 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
@@ -71,7 +71,7 @@
     return eventCount;
 }
 
-+ (void) eventCountPlusPlus{    
++ (void) eventCountPlusPlus{
     eventCount++;
 }
 
@@ -167,7 +167,7 @@
                                                ^(CFRunLoopObserverRef observer, CFRunLoopActivity activity) {
                                                    setBusy(YES);
                                                });
-        
+
         CFRunLoopObserverRef notBusyObserver = CFRunLoopObserverCreateWithHandler(
                                                 NULL,                        // CFAllocator
                                                 kCFRunLoopBeforeWaiting,     // CFOptionFlags
@@ -176,14 +176,14 @@
                                                 ^(CFRunLoopObserverRef observer, CFRunLoopActivity activity) {
                                                     setBusy(NO);
                                                 });
-        
+
         CFRunLoopRef runLoop = [[NSRunLoop currentRunLoop] getCFRunLoop];
         CFRunLoopAddObserver(runLoop, busyObserver, kCFRunLoopDefaultMode);
         CFRunLoopAddObserver(runLoop, notBusyObserver, kCFRunLoopDefaultMode);
-        
+
         CFRelease(busyObserver);
         CFRelease(notBusyObserver);
-        
+
         setBusy(YES);
     }
 
@@ -344,19 +344,19 @@
         // We're either embedded, or showing a splash screen
         if (isEmbedded) {
             AWT_STARTUP_LOG(@"running embedded");
-            
+
             // We don't track if the runloop is busy, so set it free to let AWT finish when it needs
             setBusy(NO);
         } else {
             AWT_STARTUP_LOG(@"running after showing a splash screen");
         }
-        
+
         // Signal so that JNI_OnLoad can proceed.
         if (!wasOnMainThread) [AWTStarter appKitIsRunning:nil];
-        
+
         // Proceed to exit this call as there is no reason to run the NSApplication event loop.
     }
-    
+
     [pool drain];
 }
 
@@ -370,24 +370,34 @@
 JNIEXPORT jboolean JNICALL Java_sun_lwawt_macosx_LWCToolkit_nativeSyncQueue
 (JNIEnv *env, jobject self, jlong timeout)
 {
-    int currentEventNum = [AWTToolkit getEventCount];
+    long currentEventNum = [AWTToolkit getEventCount];
 
     NSApplication* sharedApp = [NSApplication sharedApplication];
     if ([sharedApp isKindOfClass:[NSApplicationAWT class]]) {
         NSApplicationAWT* theApp = (NSApplicationAWT*)sharedApp;
-        [theApp postDummyEvent];
-        [theApp waitForDummyEvent:timeout];
+        // We use two different API to post events to the application,
+        //  - [NSApplication postEvent]
+        //  - CGEventPost(), see CRobot.m
+        // It was found that if we post an event via CGEventPost in robot and
+        // immediately after this we will post the second event via
+        // [NSApp postEvent] then sometimes the second event will be handled
+        // first. The opposite isn't proved, but we use both here to be safer.
+        [theApp postDummyEvent:false];
+        [theApp waitForDummyEvent:timeout / 2.0];
+        [theApp postDummyEvent:true];
+        [theApp waitForDummyEvent:timeout / 2.0];
+
     } else {
         // could happen if we are embedded inside SWT application,
-        // in this case just spin a single empty block through 
+        // in this case just spin a single empty block through
         // the event loop to give it a chance to process pending events
         [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){}];
     }
-    
+
     if (([AWTToolkit getEventCount] - currentEventNum) != 0) {
         return JNI_TRUE;
     }
-        
+
     return JNI_FALSE;
 }
 
@@ -516,7 +526,7 @@
                                              beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.010]];
         if (processEvents) {
             //We do not spin a runloop here as date is nil, so does not matter which mode to use
-            // Processing all events excluding NSApplicationDefined which need to be processed 
+            // Processing all events excluding NSApplicationDefined which need to be processed
             // on the main loop only (those events are intended for disposing resources)
             NSEvent *event;
             if ((event = [NSApp nextEventMatchingMask:(NSAnyEventMask & ~NSApplicationDefined)
diff --git a/jdk/src/java.desktop/macosx/native/libosxapp/NSApplicationAWT.h b/jdk/src/java.desktop/macosx/native/libosxapp/NSApplicationAWT.h
index 1025cd7..69d3800 100644
--- a/jdk/src/java.desktop/macosx/native/libosxapp/NSApplicationAWT.h
+++ b/jdk/src/java.desktop/macosx/native/libosxapp/NSApplicationAWT.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, Oracle and/or its affiliates. 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
@@ -36,9 +36,9 @@
 - (void) finishLaunching;
 - (void) registerWithProcessManager;
 - (void) setDockIconWithEnv:(JNIEnv *)env;
-- (void) postDummyEvent;
+- (void) postDummyEvent:(bool) useCocoa;
 - (void) postRunnableEvent:(void (^)())block;
-- (void) waitForDummyEvent:(long long) timeout;
+- (void) waitForDummyEvent:(double) timeout;
 
 + (void) runAWTLoopWithApp:(NSApplication*)app;
 
diff --git a/jdk/src/java.desktop/macosx/native/libosxapp/NSApplicationAWT.m b/jdk/src/java.desktop/macosx/native/libosxapp/NSApplicationAWT.m
index 44382da..8a856bd 100644
--- a/jdk/src/java.desktop/macosx/native/libosxapp/NSApplicationAWT.m
+++ b/jdk/src/java.desktop/macosx/native/libosxapp/NSApplicationAWT.m
@@ -349,6 +349,7 @@
             && [event subtype] == NativeSyncQueueEvent) {
         [seenDummyEventLock lockWhenCondition:NO];
         [seenDummyEventLock unlockWithCondition:YES];
+
     } else if ([event type] == NSApplicationDefined && [event subtype] == ExecuteBlockEvent) {
         void (^block)() = (void (^)()) [event data1];
         block();
@@ -387,9 +388,7 @@
     [pool drain];
 }
 
-
-
-- (void)postDummyEvent {
+- (void)postDummyEvent:(bool)useCocoa {
     seenDummyEventLock = [[NSConditionLock alloc] initWithCondition:NO];
     dummyEventTimestamp = [NSProcessInfo processInfo].systemUptime;
 
@@ -403,19 +402,28 @@
                                          subtype: NativeSyncQueueEvent
                                            data1: 0
                                            data2: 0];
-    [NSApp postEvent: event atStart: NO];
+    if (useCocoa) {
+        [NSApp postEvent:event atStart:NO];
+    } else {
+        ProcessSerialNumber psn;
+        GetCurrentProcess(&psn);
+        CGEventPostToPSN(&psn, [event CGEvent]);
+    }
     [pool drain];
 }
 
-- (void)waitForDummyEvent:(long long) timeout {
+- (void)waitForDummyEvent:(double)timeout {
+    bool unlock = true;
     if (timeout >= 0) {
-        double sec = ((double) timeout)/1000;
-        [seenDummyEventLock lockWhenCondition:YES
+        double sec = timeout / 1000;
+        unlock = [seenDummyEventLock lockWhenCondition:YES
                                beforeDate:[NSDate dateWithTimeIntervalSinceNow:sec]];
     } else {
         [seenDummyEventLock lockWhenCondition:YES];
     }
-    [seenDummyEventLock unlock];
+    if (unlock) {
+        [seenDummyEventLock unlock];
+    }
     [seenDummyEventLock release];
 
     seenDummyEventLock = nil;
diff --git a/jdk/src/java.desktop/share/classes/java/applet/AppletContext.java b/jdk/src/java.desktop/share/classes/java/applet/AppletContext.java
index d14fd15..7caae99 100644
--- a/jdk/src/java.desktop/share/classes/java/applet/AppletContext.java
+++ b/jdk/src/java.desktop/share/classes/java/applet/AppletContext.java
@@ -55,8 +55,8 @@
     AudioClip getAudioClip(URL url);
 
     /**
-     * Returns an <code>Image</code> object that can then be painted on
-     * the screen. The <code>url</code> argument that is
+     * Returns an {@code Image} object that can then be painted on
+     * the screen. The {@code url} argument that is
      * passed as an argument must specify an absolute URL.
      * <p>
      * This method always returns immediately, whether or not the image
@@ -73,10 +73,10 @@
     /**
      * Finds and returns the applet in the document represented by this
      * applet context with the given name. The name can be set in the
-     * HTML tag by setting the <code>name</code> attribute.
+     * HTML tag by setting the {@code name} attribute.
      *
      * @param   name   an applet name.
-     * @return  the applet with the given name, or <code>null</code> if
+     * @return  the applet with the given name, or {@code null} if
      *          not found.
      */
     Applet getApplet(String name);
@@ -92,7 +92,7 @@
 
     /**
      * Requests that the browser or applet viewer show the Web page
-     * indicated by the <code>url</code> argument. The browser or
+     * indicated by the {@code url} argument. The browser or
      * applet viewer determines which window or frame to display the
      * Web page. This method may be ignored by applet contexts that
      * are not browsers.
@@ -103,22 +103,22 @@
 
     /**
      * Requests that the browser or applet viewer show the Web page
-     * indicated by the <code>url</code> argument. The
-     * <code>target</code> argument indicates in which HTML frame the
+     * indicated by the {@code url} argument. The
+     * {@code target} argument indicates in which HTML frame the
      * document is to be displayed.
      * The target argument is interpreted as follows:
      *
      * <center><table border="3" summary="Target arguments and their descriptions">
      * <tr><th>Target Argument</th><th>Description</th></tr>
-     * <tr><td><code>"_self"</code>  <td>Show in the window and frame that
+     * <tr><td>{@code "_self"}  <td>Show in the window and frame that
      *                                   contain the applet.</tr>
-     * <tr><td><code>"_parent"</code><td>Show in the applet's parent frame. If
+     * <tr><td>{@code "_parent"}<td>Show in the applet's parent frame. If
      *                                   the applet's frame has no parent frame,
      *                                   acts the same as "_self".</tr>
-     * <tr><td><code>"_top"</code>   <td>Show in the top-level frame of the applet's
+     * <tr><td>{@code "_top"}   <td>Show in the top-level frame of the applet's
      *                                   window. If the applet's frame is the
      *                                   top-level frame, acts the same as "_self".</tr>
-     * <tr><td><code>"_blank"</code> <td>Show in a new, unnamed
+     * <tr><td>{@code "_blank"} <td>Show in a new, unnamed
      *                                   top-level window.</tr>
      * <tr><td><i>name</i><td>Show in the frame or window named <i>name</i>. If
      *                        a target named <i>name</i> does not already exist, a
@@ -126,10 +126,10 @@
      *                        and the document is shown there.</tr>
      * </table> </center>
      * <p>
-     * An applet viewer or browser is free to ignore <code>showDocument</code>.
+     * An applet viewer or browser is free to ignore {@code showDocument}.
      *
      * @param   url   an absolute URL giving the location of the document.
-     * @param   target   a <code>String</code> indicating where to display
+     * @param   target   a {@code String} indicating where to display
      *                   the page.
      */
     public void showDocument(URL url, String target);
@@ -155,7 +155,7 @@
      *
      * @param key key with which the specified value is to be associated.
      * @param stream stream to be associated with the specified key. If this
-     *               parameter is <code>null</code>, the specified key is removed
+     *               parameter is {@code null}, the specified key is removed
      *               in this applet context.
      * @throws IOException if the stream size exceeds a certain
      *         size limit. Size limit is decided by the implementor of this
@@ -166,7 +166,7 @@
 
     /**
      * Returns the stream to which specified key is associated within this
-     * applet context. Returns <tt>null</tt> if the applet context contains
+     * applet context. Returns {@code null} if the applet context contains
      * no stream for this key.
      * <p>
      * For security reasons, mapping of streams and keys exists for each
diff --git a/jdk/src/java.desktop/share/classes/java/applet/AppletStub.java b/jdk/src/java.desktop/share/classes/java/applet/AppletStub.java
index 621068f..7a7e614 100644
--- a/jdk/src/java.desktop/share/classes/java/applet/AppletStub.java
+++ b/jdk/src/java.desktop/share/classes/java/applet/AppletStub.java
@@ -28,7 +28,7 @@
 
 /**
  * When an applet is first created, an applet stub is attached to it
- * using the applet's <code>setStub</code> method. This stub
+ * using the applet's {@code setStub} method. This stub
  * serves as the interface between the applet and the browser
  * environment or applet viewer environment in which the application
  * is running.
@@ -40,11 +40,11 @@
 public interface AppletStub {
     /**
      * Determines if the applet is active. An applet is active just
-     * before its <code>start</code> method is called. It becomes
-     * inactive just before its <code>stop</code> method is called.
+     * before its {@code start} method is called. It becomes
+     * inactive just before its {@code stop} method is called.
      *
-     * @return  <code>true</code> if the applet is active;
-     *          <code>false</code> otherwise.
+     * @return  {@code true} if the applet is active;
+     *          {@code false} otherwise.
      */
     boolean isActive();
 
@@ -85,12 +85,12 @@
      * &lt;/applet&gt;
      * </pre></blockquote>
      * <p>
-     * then a call to <code>getParameter("Color")</code> returns the
-     * value <code>"blue"</code>.
+     * then a call to {@code getParameter("Color")} returns the
+     * value {@code "blue"}.
      *
      * @param   name   a parameter name.
      * @return  the value of the named parameter,
-     * or <tt>null</tt> if not set.
+     * or {@code null} if not set.
      */
     String getParameter(String name);
 
diff --git a/jdk/src/java.desktop/share/classes/java/awt/BasicStroke.java b/jdk/src/java.desktop/share/classes/java/awt/BasicStroke.java
index 21a4bba..a2b14cf 100644
--- a/jdk/src/java.desktop/share/classes/java/awt/BasicStroke.java
+++ b/jdk/src/java.desktop/share/classes/java/awt/BasicStroke.java
@@ -30,14 +30,14 @@
 import java.lang.annotation.Native;
 
 /**
- * The <code>BasicStroke</code> class defines a basic set of rendering
+ * The {@code BasicStroke} class defines a basic set of rendering
  * attributes for the outlines of graphics primitives, which are rendered
  * with a {@link Graphics2D} object that has its Stroke attribute set to
- * this <code>BasicStroke</code>.
- * The rendering attributes defined by <code>BasicStroke</code> describe
+ * this {@code BasicStroke}.
+ * The rendering attributes defined by {@code BasicStroke} describe
  * the shape of the mark made by a pen drawn along the outline of a
  * {@link Shape} and the decorations applied at the ends and joins of
- * path segments of the <code>Shape</code>.
+ * path segments of the {@code Shape}.
  * These rendering attributes include:
  * <dl>
  * <dt><i>width</i>
@@ -73,32 +73,32 @@
  * </dl>
  * All attributes that specify measurements and distances controlling
  * the shape of the returned outline are measured in the same
- * coordinate system as the original unstroked <code>Shape</code>
- * argument.  When a <code>Graphics2D</code> object uses a
- * <code>Stroke</code> object to redefine a path during the execution
- * of one of its <code>draw</code> methods, the geometry is supplied
- * in its original form before the <code>Graphics2D</code> transform
+ * coordinate system as the original unstroked {@code Shape}
+ * argument.  When a {@code Graphics2D} object uses a
+ * {@code Stroke} object to redefine a path during the execution
+ * of one of its {@code draw} methods, the geometry is supplied
+ * in its original form before the {@code Graphics2D} transform
  * attribute is applied.  Therefore, attributes such as the pen width
  * are interpreted in the user space coordinate system of the
- * <code>Graphics2D</code> object and are subject to the scaling and
+ * {@code Graphics2D} object and are subject to the scaling and
  * shearing effects of the user-space-to-device-space transform in that
- * particular <code>Graphics2D</code>.
+ * particular {@code Graphics2D}.
  * For example, the width of a rendered shape's outline is determined
- * not only by the width attribute of this <code>BasicStroke</code>,
+ * not only by the width attribute of this {@code BasicStroke},
  * but also by the transform attribute of the
- * <code>Graphics2D</code> object.  Consider this code:
- * <blockquote><tt>
+ * {@code Graphics2D} object.  Consider this code:
+ * <blockquote><pre>{@code
  *      // sets the Graphics2D object's Transform attribute
  *      g2d.scale(10, 10);
  *      // sets the Graphics2D object's Stroke attribute
  *      g2d.setStroke(new BasicStroke(1.5f));
- * </tt></blockquote>
+ * }</pre></blockquote>
  * Assuming there are no other scaling transforms added to the
- * <code>Graphics2D</code> object, the resulting line
+ * {@code Graphics2D} object, the resulting line
  * will be approximately 15 pixels wide.
  * As the example code demonstrates, a floating-point line
  * offers better precision, especially when large transforms are
- * used with a <code>Graphics2D</code> object.
+ * used with a {@code Graphics2D} object.
  * When a line is diagonal, the exact width depends on how the
  * rendering pipeline chooses which pixels to fill as it traces the
  * theoretical widened outline.  The choice of which pixels to turn
@@ -107,7 +107,7 @@
  * partially-covered pixels.
  * <p>
  * For more information on the user space coordinate system and the
- * rendering process, see the <code>Graphics2D</code> class comments.
+ * rendering process, see the {@code Graphics2D} class comments.
  * @see Graphics2D
  * @author Jim Graham
  */
@@ -161,30 +161,30 @@
     float dash_phase;
 
     /**
-     * Constructs a new <code>BasicStroke</code> with the specified
+     * Constructs a new {@code BasicStroke} with the specified
      * attributes.
-     * @param width the width of this <code>BasicStroke</code>.  The
+     * @param width the width of this {@code BasicStroke}.  The
      *         width must be greater than or equal to 0.0f.  If width is
      *         set to 0.0f, the stroke is rendered as the thinnest
      *         possible line for the target device and the antialias
      *         hint setting.
-     * @param cap the decoration of the ends of a <code>BasicStroke</code>
+     * @param cap the decoration of the ends of a {@code BasicStroke}
      * @param join the decoration applied where path segments meet
      * @param miterlimit the limit to trim the miter join.  The miterlimit
      *        must be greater than or equal to 1.0f.
      * @param dash the array representing the dashing pattern
      * @param dash_phase the offset to start the dashing pattern
-     * @throws IllegalArgumentException if <code>width</code> is negative
-     * @throws IllegalArgumentException if <code>cap</code> is not either
+     * @throws IllegalArgumentException if {@code width} is negative
+     * @throws IllegalArgumentException if {@code cap} is not either
      *         CAP_BUTT, CAP_ROUND or CAP_SQUARE
-     * @throws IllegalArgumentException if <code>miterlimit</code> is less
-     *         than 1 and <code>join</code> is JOIN_MITER
-     * @throws IllegalArgumentException if <code>join</code> is not
+     * @throws IllegalArgumentException if {@code miterlimit} is less
+     *         than 1 and {@code join} is JOIN_MITER
+     * @throws IllegalArgumentException if {@code join} is not
      *         either JOIN_ROUND, JOIN_BEVEL, or JOIN_MITER
-     * @throws IllegalArgumentException if <code>dash_phase</code>
-     *         is negative and <code>dash</code> is not <code>null</code>
+     * @throws IllegalArgumentException if {@code dash_phase}
+     *         is negative and {@code dash} is not {@code null}
      * @throws IllegalArgumentException if the length of
-     *         <code>dash</code> is zero
+     *         {@code dash} is zero
      * @throws IllegalArgumentException if dash lengths are all zero.
      */
     @ConstructorProperties({ "lineWidth", "endCap", "lineJoin", "miterLimit", "dashArray", "dashPhase" })
@@ -231,18 +231,18 @@
     }
 
     /**
-     * Constructs a solid <code>BasicStroke</code> with the specified
+     * Constructs a solid {@code BasicStroke} with the specified
      * attributes.
-     * @param width the width of the <code>BasicStroke</code>
-     * @param cap the decoration of the ends of a <code>BasicStroke</code>
+     * @param width the width of the {@code BasicStroke}
+     * @param cap the decoration of the ends of a {@code BasicStroke}
      * @param join the decoration applied where path segments meet
      * @param miterlimit the limit to trim the miter join
-     * @throws IllegalArgumentException if <code>width</code> is negative
-     * @throws IllegalArgumentException if <code>cap</code> is not either
+     * @throws IllegalArgumentException if {@code width} is negative
+     * @throws IllegalArgumentException if {@code cap} is not either
      *         CAP_BUTT, CAP_ROUND or CAP_SQUARE
-     * @throws IllegalArgumentException if <code>miterlimit</code> is less
-     *         than 1 and <code>join</code> is JOIN_MITER
-     * @throws IllegalArgumentException if <code>join</code> is not
+     * @throws IllegalArgumentException if {@code miterlimit} is less
+     *         than 1 and {@code join} is JOIN_MITER
+     * @throws IllegalArgumentException if {@code join} is not
      *         either JOIN_ROUND, JOIN_BEVEL, or JOIN_MITER
      */
     public BasicStroke(float width, int cap, int join, float miterlimit) {
@@ -250,17 +250,17 @@
     }
 
     /**
-     * Constructs a solid <code>BasicStroke</code> with the specified
-     * attributes.  The <code>miterlimit</code> parameter is
+     * Constructs a solid {@code BasicStroke} with the specified
+     * attributes.  The {@code miterlimit} parameter is
      * unnecessary in cases where the default is allowable or the
      * line joins are not specified as JOIN_MITER.
-     * @param width the width of the <code>BasicStroke</code>
-     * @param cap the decoration of the ends of a <code>BasicStroke</code>
+     * @param width the width of the {@code BasicStroke}
+     * @param cap the decoration of the ends of a {@code BasicStroke}
      * @param join the decoration applied where path segments meet
-     * @throws IllegalArgumentException if <code>width</code> is negative
-     * @throws IllegalArgumentException if <code>cap</code> is not either
+     * @throws IllegalArgumentException if {@code width} is negative
+     * @throws IllegalArgumentException if {@code cap} is not either
      *         CAP_BUTT, CAP_ROUND or CAP_SQUARE
-     * @throws IllegalArgumentException if <code>join</code> is not
+     * @throws IllegalArgumentException if {@code join} is not
      *         either JOIN_ROUND, JOIN_BEVEL, or JOIN_MITER
      */
     public BasicStroke(float width, int cap, int join) {
@@ -268,18 +268,18 @@
     }
 
     /**
-     * Constructs a solid <code>BasicStroke</code> with the specified
+     * Constructs a solid {@code BasicStroke} with the specified
      * line width and with default values for the cap and join
      * styles.
-     * @param width the width of the <code>BasicStroke</code>
-     * @throws IllegalArgumentException if <code>width</code> is negative
+     * @param width the width of the {@code BasicStroke}
+     * @throws IllegalArgumentException if {@code width} is negative
      */
     public BasicStroke(float width) {
         this(width, CAP_SQUARE, JOIN_MITER, 10.0f, null, 0.0f);
     }
 
     /**
-     * Constructs a new <code>BasicStroke</code> with defaults for all
+     * Constructs a new {@code BasicStroke} with defaults for all
      * attributes.
      * The default attributes are a solid line of width 1.0, CAP_SQUARE,
      * JOIN_MITER, a miter limit of 10.0.
@@ -290,10 +290,10 @@
 
 
     /**
-     * Returns a <code>Shape</code> whose interior defines the
-     * stroked outline of a specified <code>Shape</code>.
-     * @param s the <code>Shape</code> boundary be stroked
-     * @return the <code>Shape</code> of the stroked outline.
+     * Returns a {@code Shape} whose interior defines the
+     * stroked outline of a specified {@code Shape}.
+     * @param s the {@code Shape} boundary be stroked
+     * @return the {@code Shape} of the stroked outline.
      */
     public Shape createStrokedShape(Shape s) {
         sun.java2d.pipe.RenderingEngine re =
@@ -305,9 +305,9 @@
     /**
      * Returns the line width.  Line width is represented in user space,
      * which is the default-coordinate space used by Java 2D.  See the
-     * <code>Graphics2D</code> class comments for more information on
+     * {@code Graphics2D} class comments for more information on
      * the user space coordinate system.
-     * @return the line width of this <code>BasicStroke</code>.
+     * @return the line width of this {@code BasicStroke}.
      * @see Graphics2D
      */
     public float getLineWidth() {
@@ -316,8 +316,8 @@
 
     /**
      * Returns the end cap style.
-     * @return the end cap style of this <code>BasicStroke</code> as one
-     * of the static <code>int</code> values that define possible end cap
+     * @return the end cap style of this {@code BasicStroke} as one
+     * of the static {@code int} values that define possible end cap
      * styles.
      */
     public int getEndCap() {
@@ -326,8 +326,8 @@
 
     /**
      * Returns the line join style.
-     * @return the line join style of the <code>BasicStroke</code> as one
-     * of the static <code>int</code> values that define possible line
+     * @return the line join style of the {@code BasicStroke} as one
+     * of the static {@code int} values that define possible line
      * join styles.
      */
     public int getLineJoin() {
@@ -336,7 +336,7 @@
 
     /**
      * Returns the limit of miter joins.
-     * @return the limit of miter joins of the <code>BasicStroke</code>.
+     * @return the limit of miter joins of the {@code BasicStroke}.
      */
     public float getMiterLimit() {
         return miterlimit;
@@ -346,7 +346,7 @@
      * Returns the array representing the lengths of the dash segments.
      * Alternate entries in the array represent the user space lengths
      * of the opaque and transparent segments of the dashes.
-     * As the pen moves along the outline of the <code>Shape</code>
+     * As the pen moves along the outline of the {@code Shape}
      * to be stroked, the user space
      * distance that the pen travels is accumulated.  The distance
      * value is used to index into the dash array.
@@ -368,7 +368,7 @@
      * represents an offset into the dashing pattern. In other words, the dash
      * phase defines the point in the dashing pattern that will correspond to
      * the beginning of the stroke.
-     * @return the dash phase as a <code>float</code> value.
+     * @return the dash phase as a {@code float} value.
      */
     public float getDashPhase() {
         return dash_phase;
@@ -397,15 +397,15 @@
      * stroking operation as the given argument.
      */
    /**
-    * Tests if a specified object is equal to this <code>BasicStroke</code>
-    * by first testing if it is a <code>BasicStroke</code> and then comparing
+    * Tests if a specified object is equal to this {@code BasicStroke}
+    * by first testing if it is a {@code BasicStroke} and then comparing
     * its width, join, cap, miter limit, dash, and dash phase attributes with
-    * those of this <code>BasicStroke</code>.
+    * those of this {@code BasicStroke}.
     * @param  obj the specified object to compare to this
-    *              <code>BasicStroke</code>
-    * @return <code>true</code> if the width, join, cap, miter limit, dash, and
+    *              {@code BasicStroke}
+    * @return {@code true} if the width, join, cap, miter limit, dash, and
     *            dash phase are the same for both objects;
-    *            <code>false</code> otherwise.
+    *            {@code false} otherwise.
     */
     public boolean equals(Object obj) {
         if (!(obj instanceof BasicStroke)) {
diff --git a/jdk/src/java.desktop/share/classes/java/awt/CheckboxGroup.java b/jdk/src/java.desktop/share/classes/java/awt/CheckboxGroup.java
index 15e91c4..6503e85 100644
--- a/jdk/src/java.desktop/share/classes/java/awt/CheckboxGroup.java
+++ b/jdk/src/java.desktop/share/classes/java/awt/CheckboxGroup.java
@@ -25,10 +25,10 @@
 package java.awt;
 
 /**
- * The <code>CheckboxGroup</code> class is used to group together
- * a set of <code>Checkbox</code> buttons.
+ * The {@code CheckboxGroup} class is used to group together
+ * a set of {@code Checkbox} buttons.
  * <p>
- * Exactly one check box button in a <code>CheckboxGroup</code> can
+ * Exactly one check box button in a {@code CheckboxGroup} can
  * be in the "on" state at any given time. Pushing any
  * button sets its state to "on" and forces any other button that
  * is in the "on" state into the "off" state.
@@ -69,7 +69,7 @@
     private static final long serialVersionUID = 3729780091441768983L;
 
     /**
-     * Creates a new instance of <code>CheckboxGroup</code>.
+     * Creates a new instance of {@code CheckboxGroup}.
      */
     public CheckboxGroup() {
     }
@@ -78,10 +78,10 @@
      * Gets the current choice from this check box group.
      * The current choice is the check box in this
      * group that is currently in the "on" state,
-     * or <code>null</code> if all check boxes in the
+     * or {@code null} if all check boxes in the
      * group are off.
      * @return   the check box that is currently in the
-     *                 "on" state, or <code>null</code>.
+     *                 "on" state, or {@code null}.
      * @see      java.awt.Checkbox
      * @see      java.awt.CheckboxGroup#setSelectedCheckbox
      * @since    1.1
@@ -96,7 +96,7 @@
      *
      * @return the selected checkbox
      * @deprecated As of JDK version 1.1,
-     * replaced by <code>getSelectedCheckbox()</code>.
+     * replaced by {@code getSelectedCheckbox()}.
      */
     @Deprecated
     public Checkbox getCurrent() {
@@ -109,11 +109,11 @@
      * This method sets the state of that check box to "on" and
      * sets all other check boxes in the group to be off.
      * <p>
-     * If the check box argument is <tt>null</tt>, all check boxes
+     * If the check box argument is {@code null}, all check boxes
      * in this check box group are deselected. If the check box argument
      * belongs to a different check box group, this method does
      * nothing.
-     * @param     box   the <code>Checkbox</code> to set as the
+     * @param     box   the {@code Checkbox} to set as the
      *                      current selection.
      * @see      java.awt.Checkbox
      * @see      java.awt.CheckboxGroup#getSelectedCheckbox
@@ -130,7 +130,7 @@
      * @param  box the {@code Checkbox} to set as the
      *         current selection.
      * @deprecated As of JDK version 1.1,
-     * replaced by <code>setSelectedCheckbox(Checkbox)</code>.
+     * replaced by {@code setSelectedCheckbox(Checkbox)}.
      */
     @Deprecated
     public synchronized void setCurrent(Checkbox box) {
diff --git a/jdk/src/java.desktop/share/classes/java/awt/GridLayout.java b/jdk/src/java.desktop/share/classes/java/awt/GridLayout.java
index 26b0bef..a5eab8a 100644
--- a/jdk/src/java.desktop/share/classes/java/awt/GridLayout.java
+++ b/jdk/src/java.desktop/share/classes/java/awt/GridLayout.java
@@ -26,7 +26,7 @@
 package java.awt;
 
 /**
- * The <code>GridLayout</code> class is a layout manager that
+ * The {@code GridLayout} class is a layout manager that
  * lays out a container's components in a rectangular grid.
  * The container is divided into equal-sized rectangles,
  * and one component is placed in each rectangle.
@@ -50,9 +50,9 @@
  * }
  * </pre></blockquote><hr>
  * <p>
- * If the container's <code>ComponentOrientation</code> property is horizontal
+ * If the container's {@code ComponentOrientation} property is horizontal
  * and left-to-right, the above example produces the output shown in Figure 1.
- * If the container's <code>ComponentOrientation</code> property is horizontal
+ * If the container's {@code ComponentOrientation} property is horizontal
  * and right-to-left, the example produces the output shown in Figure 2.
  *
  * <table style="float:center" WIDTH=600 summary="layout">
@@ -77,7 +77,7 @@
  * <p>
  * When both the number of rows and the number of columns have
  * been set to non-zero values, either by a constructor or
- * by the <tt>setRows</tt> and <tt>setColumns</tt> methods, the number of
+ * by the {@code setRows} and {@code setColumns} methods, the number of
  * columns specified is ignored.  Instead, the number of
  * columns is determined from the specified number of rows
  * and the total number of components in the layout. So, for
@@ -154,7 +154,7 @@
      * Creates a grid layout with the specified number of rows and
      * columns. All components in the layout are given equal size.
      * <p>
-     * One, but not both, of <code>rows</code> and <code>cols</code> can
+     * One, but not both, of {@code rows} and {@code cols} can
      * be zero, which means that any number of objects can be placed in a
      * row or in a column.
      * @param     rows   the rows, with the value zero meaning
@@ -175,11 +175,11 @@
      * of the columns. Vertical gaps are placed between each of
      * the rows.
      * <p>
-     * One, but not both, of <code>rows</code> and <code>cols</code> can
+     * One, but not both, of {@code rows} and {@code cols} can
      * be zero, which means that any number of objects can be placed in a
      * row or in a column.
      * <p>
-     * All <code>GridLayout</code> constructors defer to this one.
+     * All {@code GridLayout} constructors defer to this one.
      * @param     rows   the rows, with the value zero meaning
      *                   any number of rows
      * @param     cols   the columns, with the value zero meaning
@@ -187,7 +187,7 @@
      * @param     hgap   the horizontal gap
      * @param     vgap   the vertical gap
      * @exception   IllegalArgumentException  if the value of both
-     *                  <code>rows</code> and <code>cols</code> is
+     *                  {@code rows} and {@code cols} is
      *                  set to zero
      */
     public GridLayout(int rows, int cols, int hgap, int vgap) {
@@ -213,7 +213,7 @@
      * Sets the number of rows in this layout to the specified value.
      * @param        rows   the number of rows in this layout
      * @exception    IllegalArgumentException  if the value of both
-     *               <code>rows</code> and <code>cols</code> is set to zero
+     *               {@code rows} and {@code cols} is set to zero
      * @since        1.1
      */
     public void setRows(int rows) {
@@ -236,12 +236,12 @@
      * Sets the number of columns in this layout to the specified value.
      * Setting the number of columns has no affect on the layout
      * if the number of rows specified by a constructor or by
-     * the <tt>setRows</tt> method is non-zero. In that case, the number
+     * the {@code setRows} method is non-zero. In that case, the number
      * of columns displayed in the layout is determined by the total
      * number of components and the number of rows specified.
      * @param        cols   the number of columns in this layout
      * @exception    IllegalArgumentException  if the value of both
-     *               <code>rows</code> and <code>cols</code> is set to zero
+     *               {@code rows} and {@code cols} is set to zero
      * @since        1.1
      */
     public void setColumns(int cols) {
@@ -405,7 +405,7 @@
      * <p>
      * This method reshapes the components in the specified target
      * container in order to satisfy the constraints of the
-     * <code>GridLayout</code> object.
+     * {@code GridLayout} object.
      * <p>
      * The grid layout manager determines the size of individual
      * components by dividing the free space in the container into
diff --git a/jdk/src/java.desktop/share/classes/java/awt/Window.java b/jdk/src/java.desktop/share/classes/java/awt/Window.java
index cd248d3..0a03eed 100644
--- a/jdk/src/java.desktop/share/classes/java/awt/Window.java
+++ b/jdk/src/java.desktop/share/classes/java/awt/Window.java
@@ -53,6 +53,7 @@
 import sun.awt.AWTPermissions;
 import sun.awt.AppContext;
 import sun.awt.CausedFocusEvent;
+import sun.awt.DebugSettings;
 import sun.awt.SunToolkit;
 import sun.awt.util.IdentityArrayList;
 import sun.java2d.pipe.Region;
@@ -2159,11 +2160,13 @@
      * @param e  the keyboard event
      */
     void preProcessKeyEvent(KeyEvent e) {
-        // Dump the list of child windows to System.out.
-        if (e.isActionKey() && e.getKeyCode() == KeyEvent.VK_F1 &&
-            e.isControlDown() && e.isShiftDown() &&
-            e.getID() == KeyEvent.KEY_PRESSED) {
-            list(System.out, 0);
+        // Dump the list of child windows to System.out if debug is enabled.
+        if (DebugSettings.getInstance().getBoolean("on", false)) {
+            if (e.isActionKey() && e.getKeyCode() == KeyEvent.VK_F1 &&
+                    e.isControlDown() && e.isShiftDown() &&
+                    e.getID() == KeyEvent.KEY_PRESSED) {
+                list(System.out, 0);
+            }
         }
     }
 
diff --git a/jdk/src/java.desktop/share/classes/java/awt/dnd/DropTargetContext.java b/jdk/src/java.desktop/share/classes/java/awt/dnd/DropTargetContext.java
index 1ed0038..839c543 100644
--- a/jdk/src/java.desktop/share/classes/java/awt/dnd/DropTargetContext.java
+++ b/jdk/src/java.desktop/share/classes/java/awt/dnd/DropTargetContext.java
@@ -43,11 +43,11 @@
 import sun.awt.AWTAccessor.DropTargetContextAccessor;
 
 /**
- * A <code>DropTargetContext</code> is created
+ * A {@code DropTargetContext} is created
  * whenever the logical cursor associated
  * with a Drag and Drop operation coincides with the visible geometry of
- * a <code>Component</code> associated with a <code>DropTarget</code>.
- * The <code>DropTargetContext</code> provides
+ * a {@code Component} associated with a {@code DropTarget}.
+ * The {@code DropTargetContext} provides
  * the mechanism for a potential receiver
  * of a drop operation to both provide the end user with the appropriate
  * drag under feedback, but also to effect the subsequent data transfer
@@ -74,8 +74,8 @@
         });
     }
     /**
-     * Construct a <code>DropTargetContext</code>
-     * given a specified <code>DropTarget</code>.
+     * Construct a {@code DropTargetContext}
+     * given a specified {@code DropTarget}.
      *
      * @param dt the DropTarget to associate with
      */
@@ -87,17 +87,17 @@
     }
 
     /**
-     * This method returns the <code>DropTarget</code> associated with this
-     * <code>DropTargetContext</code>.
+     * This method returns the {@code DropTarget} associated with this
+     * {@code DropTargetContext}.
      *
-     * @return the <code>DropTarget</code> associated with this <code>DropTargetContext</code>
+     * @return the {@code DropTarget} associated with this {@code DropTargetContext}
      */
 
     public DropTarget getDropTarget() { return dropTarget; }
 
     /**
-     * This method returns the <code>Component</code> associated with
-     * this <code>DropTargetContext</code>.
+     * This method returns the {@code Component} associated with
+     * this {@code DropTargetContext}.
      *
      * @return the Component associated with this Context
      */
@@ -105,7 +105,7 @@
     public Component getComponent() { return dropTarget.getComponent(); }
 
     /**
-     * Called when disassociated with the <code>DropTargetContextPeer</code>.
+     * Called when disassociated with the {@code DropTargetContextPeer}.
      */
     void reset() {
         dropTargetContextPeer = null;
@@ -114,9 +114,9 @@
 
     /**
      * This method sets the current actions acceptable to
-     * this <code>DropTarget</code>.
+     * this {@code DropTarget}.
      *
-     * @param actions an <code>int</code> representing the supported action(s)
+     * @param actions an {@code int} representing the supported action(s)
      */
 
     protected void setTargetActions(int actions) {
@@ -132,10 +132,10 @@
     }
 
     /**
-     * This method returns an <code>int</code> representing the
-     * current actions this <code>DropTarget</code> will accept.
+     * This method returns an {@code int} representing the
+     * current actions this {@code DropTarget} will accept.
      *
-     * @return the current actions acceptable to this <code>DropTarget</code>
+     * @return the current actions acceptable to this {@code DropTarget}
      */
 
     protected int getTargetActions() {
@@ -215,11 +215,11 @@
 
     /**
      * get the available DataFlavors of the
-     * <code>Transferable</code> operand of this operation.
+     * {@code Transferable} operand of this operation.
      *
-     * @return a <code>DataFlavor[]</code> containing the
-     * supported <code>DataFlavor</code>s of the
-     * <code>Transferable</code> operand.
+     * @return a {@code DataFlavor[]} containing the
+     * supported {@code DataFlavor}s of the
+     * {@code Transferable} operand.
      */
 
     protected DataFlavor[] getCurrentDataFlavors() {
@@ -229,11 +229,11 @@
 
     /**
      * This method returns a the currently available DataFlavors
-     * of the <code>Transferable</code> operand
-     * as a <code>java.util.List</code>.
+     * of the {@code Transferable} operand
+     * as a {@code java.util.List}.
      *
      * @return the currently available
-     * DataFlavors as a <code>java.util.List</code>
+     * DataFlavors as a {@code java.util.List}
      */
 
     protected List<DataFlavor> getCurrentDataFlavorsAsList() {
@@ -241,13 +241,13 @@
     }
 
     /**
-     * This method returns a <code>boolean</code>
-     * indicating if the given <code>DataFlavor</code> is
-     * supported by this <code>DropTargetContext</code>.
+     * This method returns a {@code boolean}
+     * indicating if the given {@code DataFlavor} is
+     * supported by this {@code DropTargetContext}.
      *
-     * @param df the <code>DataFlavor</code>
+     * @param df the {@code DataFlavor}
      *
-     * @return if the <code>DataFlavor</code> specified is supported
+     * @return if the {@code DataFlavor} specified is supported
      */
 
     protected boolean isDataFlavorSupported(DataFlavor df) {
@@ -259,7 +259,7 @@
      *
      * @throws InvalidDnDOperationException if a drag is not outstanding/extant
      *
-     * @return the <code>Transferable</code>
+     * @return the {@code Transferable}
      */
 
     protected Transferable getTransferable() throws InvalidDnDOperationException {
@@ -282,7 +282,7 @@
     }
 
     /**
-     * Get the <code>DropTargetContextPeer</code>
+     * Get the {@code DropTargetContextPeer}
      *
      * @return the platform peer
      */
@@ -301,10 +301,10 @@
      * Creates a TransferableProxy to proxy for the specified
      * Transferable.
      *
-     * @param t the <tt>Transferable</tt> to be proxied
-     * @param local <tt>true</tt> if <tt>t</tt> represents
+     * @param t the {@code Transferable} to be proxied
+     * @param local {@code true} if {@code t} represents
      *        the result of a local drag-n-drop operation.
-     * @return the new <tt>TransferableProxy</tt> instance.
+     * @return the new {@code TransferableProxy} instance.
      */
     protected Transferable createTransferableProxy(Transferable t, boolean local) {
         return new TransferableProxy(t, local);
@@ -314,9 +314,9 @@
 
 
     /**
-     * <code>TransferableProxy</code> is a helper inner class that implements
-     * <code>Transferable</code> interface and serves as a proxy for another
-     * <code>Transferable</code> object which represents data transfer for
+     * {@code TransferableProxy} is a helper inner class that implements
+     * {@code Transferable} interface and serves as a proxy for another
+     * {@code Transferable} object which represents data transfer for
      * a particular drag-n-drop operation.
      * <p>
      * The proxy forwards all requests to the encapsulated transferable
@@ -327,14 +327,14 @@
     protected class TransferableProxy implements Transferable {
 
         /**
-         * Constructs a <code>TransferableProxy</code> given
-         * a specified <code>Transferable</code> object representing
+         * Constructs a {@code TransferableProxy} given
+         * a specified {@code Transferable} object representing
          * data transfer for a particular drag-n-drop operation and
-         * a <code>boolean</code> which indicates whether the
+         * a {@code boolean} which indicates whether the
          * drag-n-drop operation is local (within the same JVM).
          *
-         * @param t the <code>Transferable</code> object
-         * @param local <code>true</code>, if <code>t</code> represents
+         * @param t the {@code Transferable} object
+         * @param local {@code true}, if {@code t} represents
          *        the result of local drag-n-drop operation
          */
         TransferableProxy(Transferable t, boolean local) {
@@ -358,8 +358,8 @@
          * Returns whether or not the specified data flavor is supported by
          * the encapsulated transferable.
          * @param flavor the requested flavor for the data
-         * @return <code>true</code> if the data flavor is supported,
-         *         <code>false</code> otherwise
+         * @return {@code true} if the data flavor is supported,
+         *         {@code false} otherwise
          */
         public boolean isDataFlavorSupported(DataFlavor flavor) {
             return proxy.isDataFlavorSupported(flavor);
@@ -397,13 +397,13 @@
         // public constructor.
 
         /**
-         * The encapsulated <code>Transferable</code> object.
+         * The encapsulated {@code Transferable} object.
          */
         protected Transferable  transferable;
 
         /**
-         * A <code>boolean</code> indicating if the encapsulated
-         * <code>Transferable</code> object represents the result
+         * A {@code boolean} indicating if the encapsulated
+         * {@code Transferable} object represents the result
          * of local drag-n-drop operation (within the same JVM).
          */
         protected boolean       isLocal;
diff --git a/jdk/src/java.desktop/share/classes/java/awt/event/InvocationEvent.java b/jdk/src/java.desktop/share/classes/java/awt/event/InvocationEvent.java
index eee903a..aa0cc49 100644
--- a/jdk/src/java.desktop/share/classes/java/awt/event/InvocationEvent.java
+++ b/jdk/src/java.desktop/share/classes/java/awt/event/InvocationEvent.java
@@ -31,16 +31,16 @@
 import java.awt.AWTEvent;
 
 /**
- * An event which executes the <code>run()</code> method on a <code>Runnable
- * </code> when dispatched by the AWT event dispatcher thread. This class can
- * be used as a reference implementation of <code>ActiveEvent</code> rather
- * than declaring a new class and defining <code>dispatch()</code>.<p>
+ * An event which executes the {@code run()} method on a {@code Runnable
+ * } when dispatched by the AWT event dispatcher thread. This class can
+ * be used as a reference implementation of {@code ActiveEvent} rather
+ * than declaring a new class and defining {@code dispatch()}.<p>
  *
- * Instances of this class are placed on the <code>EventQueue</code> by calls
- * to <code>invokeLater</code> and <code>invokeAndWait</code>. Client code
- * can use this fact to write replacement functions for <code>invokeLater
- * </code> and <code>invokeAndWait</code> without writing special-case code
- * in any <code>AWTEventListener</code> objects.
+ * Instances of this class are placed on the {@code EventQueue} by calls
+ * to {@code invokeLater} and {@code invokeAndWait}. Client code
+ * can use this fact to write replacement functions for {@code invokeLater
+ * } and {@code invokeAndWait} without writing special-case code
+ * in any {@code AWTEventListener} objects.
  * <p>
  * An unspecified behavior will be caused if the {@code id} parameter
  * of any particular {@code InvocationEvent} instance is not
@@ -106,7 +106,7 @@
     private final Runnable listener;
 
     /**
-     * Indicates whether the <code>run()</code> method of the <code>runnable</code>
+     * Indicates whether the {@code run()} method of the {@code runnable}
      * was executed or not.
      *
      * @see #isDispatched
@@ -149,20 +149,21 @@
     private static final long serialVersionUID = 436056344909459450L;
 
     /**
-     * Constructs an <code>InvocationEvent</code> with the specified
-     * source which will execute the runnable's <code>run</code>
+     * Constructs an {@code InvocationEvent} with the specified
+     * source which will execute the runnable's {@code run}
      * method when dispatched.
      * <p>This is a convenience constructor.  An invocation of the form
-     * <tt>InvocationEvent(source, runnable)</tt>
+     * {@code InvocationEvent(source, runnable)}
      * behaves in exactly the same way as the invocation of
-     * <tt>{@link #InvocationEvent(Object, Runnable, Object, boolean) InvocationEvent}(source, runnable, null, false)</tt>.
-     * <p> This method throws an <code>IllegalArgumentException</code>
-     * if <code>source</code> is <code>null</code>.
+     * {@link #InvocationEvent(Object, Runnable, Object, boolean)
+     * InvocationEvent(source, runnable, null, false)}.
+     * <p> This method throws an {@code IllegalArgumentException}
+     * if {@code source} is {@code null}.
      *
-     * @param source    The <code>Object</code> that originated the event
-     * @param runnable  The <code>Runnable</code> whose <code>run</code>
+     * @param source    The {@code Object} that originated the event
+     * @param runnable  The {@code Runnable} whose {@code run}
      *                  method will be executed
-     * @throws IllegalArgumentException if <code>source</code> is null
+     * @throws IllegalArgumentException if {@code source} is null
      *
      * @see #getSource()
      * @see #InvocationEvent(Object, Runnable, Object, boolean)
@@ -172,35 +173,36 @@
     }
 
     /**
-     * Constructs an <code>InvocationEvent</code> with the specified
-     * source which will execute the runnable's <code>run</code>
-     * method when dispatched.  If notifier is non-<code>null</code>,
-     * <code>notifyAll()</code> will be called on it
-     * immediately after <code>run</code> has returned or thrown an exception.
-     * <p>An invocation of the form <tt>InvocationEvent(source,
-     * runnable, notifier, catchThrowables)</tt>
+     * Constructs an {@code InvocationEvent} with the specified
+     * source which will execute the runnable's {@code run}
+     * method when dispatched.  If notifier is non-{@code null},
+     * {@code notifyAll()} will be called on it
+     * immediately after {@code run} has returned or thrown an exception.
+     * <p>An invocation of the form
+     * {@code InvocationEvent(source, runnable, notifier, catchThrowables)}
      * behaves in exactly the same way as the invocation of
-     * <tt>{@link #InvocationEvent(Object, int, Runnable, Object, boolean) InvocationEvent}(source, InvocationEvent.INVOCATION_DEFAULT, runnable, notifier, catchThrowables)</tt>.
-     * <p>This method throws an <code>IllegalArgumentException</code>
-     * if <code>source</code> is <code>null</code>.
+     * {@link #InvocationEvent(Object, int, Runnable, Object, boolean)
+     * InvocationEvent(source, InvocationEvent.INVOCATION_DEFAULT, runnable, notifier, catchThrowables)}.
+     * <p>This method throws an {@code IllegalArgumentException}
+     * if {@code source} is {@code null}.
      *
-     * @param source            The <code>Object</code> that originated
+     * @param source            The {@code Object} that originated
      *                          the event
-     * @param runnable          The <code>Runnable</code> whose
-     *                          <code>run</code> method will be
+     * @param runnable          The {@code Runnable} whose
+     *                          {@code run} method will be
      *                          executed
-     * @param notifier          The {@code Object} whose <code>notifyAll</code>
+     * @param notifier          The {@code Object} whose {@code notifyAll}
      *                          method will be called after
-     *                          <code>Runnable.run</code> has returned or
+     *                          {@code Runnable.run} has returned or
      *                          thrown an exception or after the event was
      *                          disposed
-     * @param catchThrowables   Specifies whether <code>dispatch</code>
+     * @param catchThrowables   Specifies whether {@code dispatch}
      *                          should catch Throwable when executing
-     *                          the <code>Runnable</code>'s <code>run</code>
+     *                          the {@code Runnable}'s {@code run}
      *                          method, or should instead propagate those
      *                          Throwables to the EventDispatchThread's
      *                          dispatch loop
-     * @throws IllegalArgumentException if <code>source</code> is null
+     * @throws IllegalArgumentException if {@code source} is null
      *
      * @see #getSource()
      * @see     #InvocationEvent(Object, int, Runnable, Object, boolean)
@@ -211,31 +213,31 @@
     }
 
     /**
-     * Constructs an <code>InvocationEvent</code> with the specified
-     * source which will execute the runnable's <code>run</code>
-     * method when dispatched.  If listener is non-<code>null</code>,
-     * <code>listener.run()</code> will be called immediately after
-     * <code>run</code> has returned, thrown an exception or the event
+     * Constructs an {@code InvocationEvent} with the specified
+     * source which will execute the runnable's {@code run}
+     * method when dispatched.  If listener is non-{@code null},
+     * {@code listener.run()} will be called immediately after
+     * {@code run} has returned, thrown an exception or the event
      * was disposed.
-     * <p>This method throws an <code>IllegalArgumentException</code>
-     * if <code>source</code> is <code>null</code>.
+     * <p>This method throws an {@code IllegalArgumentException}
+     * if {@code source} is {@code null}.
      *
-     * @param source            The <code>Object</code> that originated
+     * @param source            The {@code Object} that originated
      *                          the event
-     * @param runnable          The <code>Runnable</code> whose
-     *                          <code>run</code> method will be
+     * @param runnable          The {@code Runnable} whose
+     *                          {@code run} method will be
      *                          executed
-     * @param listener          The <code>Runnable</code>Runnable whose
-     *                          <code>run()</code> method will be called
+     * @param listener          The {@code Runnable}Runnable whose
+     *                          {@code run()} method will be called
      *                          after the {@code InvocationEvent}
      *                          was dispatched or disposed
-     * @param catchThrowables   Specifies whether <code>dispatch</code>
+     * @param catchThrowables   Specifies whether {@code dispatch}
      *                          should catch Throwable when executing
-     *                          the <code>Runnable</code>'s <code>run</code>
+     *                          the {@code Runnable}'s {@code run}
      *                          method, or should instead propagate those
      *                          Throwables to the EventDispatchThread's
      *                          dispatch loop
-     * @throws IllegalArgumentException if <code>source</code> is null
+     * @throws IllegalArgumentException if {@code source} is null
      */
     public InvocationEvent(Object source, Runnable runnable, Runnable listener,
                            boolean catchThrowables)  {
@@ -243,34 +245,34 @@
     }
 
     /**
-     * Constructs an <code>InvocationEvent</code> with the specified
-     * source and ID which will execute the runnable's <code>run</code>
-     * method when dispatched.  If notifier is non-<code>null</code>,
-     * <code>notifyAll</code> will be called on it immediately after
-     * <code>run</code> has returned or thrown an exception.
+     * Constructs an {@code InvocationEvent} with the specified
+     * source and ID which will execute the runnable's {@code run}
+     * method when dispatched.  If notifier is non-{@code null},
+     * {@code notifyAll} will be called on it immediately after
+     * {@code run} has returned or thrown an exception.
      * <p>This method throws an
-     * <code>IllegalArgumentException</code> if <code>source</code>
-     * is <code>null</code>.
+     * {@code IllegalArgumentException} if {@code source}
+     * is {@code null}.
      *
-     * @param source            The <code>Object</code> that originated
+     * @param source            The {@code Object} that originated
      *                          the event
      * @param id     An integer indicating the type of event.
      *                     For information on allowable values, see
      *                     the class description for {@link InvocationEvent}
-     * @param runnable          The <code>Runnable</code> whose
-     *                          <code>run</code> method will be executed
-     * @param notifier          The <code>Object</code> whose <code>notifyAll</code>
+     * @param runnable          The {@code Runnable} whose
+     *                          {@code run} method will be executed
+     * @param notifier          The {@code Object} whose {@code notifyAll}
      *                          method will be called after
-     *                          <code>Runnable.run</code> has returned or
+     *                          {@code Runnable.run} has returned or
      *                          thrown an exception or after the event was
      *                          disposed
-     * @param catchThrowables   Specifies whether <code>dispatch</code>
+     * @param catchThrowables   Specifies whether {@code dispatch}
      *                          should catch Throwable when executing the
-     *                          <code>Runnable</code>'s <code>run</code>
+     *                          {@code Runnable}'s {@code run}
      *                          method, or should instead propagate those
      *                          Throwables to the EventDispatchThread's
      *                          dispatch loop
-     * @throws IllegalArgumentException if <code>source</code> is null
+     * @throws IllegalArgumentException if {@code source} is null
      * @see #getSource()
      * @see #getID()
      */
@@ -289,8 +291,8 @@
         this.when = System.currentTimeMillis();
     }
     /**
-     * Executes the Runnable's <code>run()</code> method and notifies the
-     * notifier (if any) when <code>run()</code> has returned or thrown an exception.
+     * Executes the Runnable's {@code run()} method and notifies the
+     * notifier (if any) when {@code run()} has returned or thrown an exception.
      *
      * @see #isDispatched
      */
@@ -316,8 +318,8 @@
     }
 
     /**
-     * Returns any Exception caught while executing the Runnable's <code>run()
-     * </code> method.
+     * Returns any Exception caught while executing
+     * the Runnable's {@code run()} method.
      *
      * @return  A reference to the Exception if one was thrown; null if no
      *          Exception was thrown or if this InvocationEvent does not
@@ -328,8 +330,8 @@
     }
 
     /**
-     * Returns any Throwable caught while executing the Runnable's <code>run()
-     * </code> method.
+     * Returns any Throwable caught while executing
+     * the Runnable's {@code run()} method.
      *
      * @return  A reference to the Throwable if one was thrown; null if no
      *          Throwable was thrown or if this InvocationEvent does not
diff --git a/jdk/src/java.desktop/share/classes/java/awt/event/MouseEvent.java b/jdk/src/java.desktop/share/classes/java/awt/event/MouseEvent.java
index 65a8626..2804f2b 100644
--- a/jdk/src/java.desktop/share/classes/java/awt/event/MouseEvent.java
+++ b/jdk/src/java.desktop/share/classes/java/awt/event/MouseEvent.java
@@ -78,26 +78,26 @@
  *     </ul>
  * </ul>
  * <P>
- * A <code>MouseEvent</code> object is passed to every
- * <code>MouseListener</code>
- * or <code>MouseAdapter</code> object which is registered to receive
+ * A {@code MouseEvent} object is passed to every
+ * {@code MouseListener}
+ * or {@code MouseAdapter} object which is registered to receive
  * the "interesting" mouse events using the component's
- * <code>addMouseListener</code> method.
- * (<code>MouseAdapter</code> objects implement the
- * <code>MouseListener</code> interface.) Each such listener object
- * gets a <code>MouseEvent</code> containing the mouse event.
+ * {@code addMouseListener} method.
+ * ({@code MouseAdapter} objects implement the
+ * {@code MouseListener} interface.) Each such listener object
+ * gets a {@code MouseEvent} containing the mouse event.
  * <P>
- * A <code>MouseEvent</code> object is also passed to every
- * <code>MouseMotionListener</code> or
- * <code>MouseMotionAdapter</code> object which is registered to receive
+ * A {@code MouseEvent} object is also passed to every
+ * {@code MouseMotionListener} or
+ * {@code MouseMotionAdapter} object which is registered to receive
  * mouse motion events using the component's
- * <code>addMouseMotionListener</code>
- * method. (<code>MouseMotionAdapter</code> objects implement the
- * <code>MouseMotionListener</code> interface.) Each such listener object
- * gets a <code>MouseEvent</code> containing the mouse motion event.
+ * {@code addMouseMotionListener}
+ * method. ({@code MouseMotionAdapter} objects implement the
+ * {@code MouseMotionListener} interface.) Each such listener object
+ * gets a {@code MouseEvent} containing the mouse motion event.
  * <P>
  * When a mouse button is clicked, events are generated and sent to the
- * registered <code>MouseListener</code>s.
+ * registered {@code MouseListener}s.
  * The state of modal keys can be retrieved using {@link InputEvent#getModifiers}
  * and {@link InputEvent#getModifiersEx}.
  * The button mask returned by {@link InputEvent#getModifiers} reflects
@@ -111,31 +111,31 @@
  * <P>
  * For example, if the first mouse button is pressed, events are sent in the
  * following order:
- * <PRE>
- *    <b   >id           </b   >   <b   >modifiers   </b   > <b   >button </b   >
- *    <code>MOUSE_PRESSED</code>:  <code>BUTTON1_MASK</code> <code>BUTTON1</code>
- *    <code>MOUSE_RELEASED</code>: <code>BUTTON1_MASK</code> <code>BUTTON1</code>
- *    <code>MOUSE_CLICKED</code>:  <code>BUTTON1_MASK</code> <code>BUTTON1</code>
- * </PRE>
+ * <pre><b>
+ *    id              modifiers    button</b>{@code
+ *    MOUSE_PRESSED:  BUTTON1_MASK BUTTON1
+ *    MOUSE_RELEASED: BUTTON1_MASK BUTTON1
+ *    MOUSE_CLICKED:  BUTTON1_MASK BUTTON1
+ * }</pre>
  * When multiple mouse buttons are pressed, each press, release, and click
  * results in a separate event.
  * <P>
  * For example, if the user presses <b>button 1</b> followed by
  * <b>button 2</b>, and then releases them in the same order,
  * the following sequence of events is generated:
- * <PRE>
- *    <b   >id           </b   >   <b   >modifiers   </b   > <b   >button </b   >
- *    <code>MOUSE_PRESSED</code>:  <code>BUTTON1_MASK</code> <code>BUTTON1</code>
- *    <code>MOUSE_PRESSED</code>:  <code>BUTTON2_MASK</code> <code>BUTTON2</code>
- *    <code>MOUSE_RELEASED</code>: <code>BUTTON1_MASK</code> <code>BUTTON1</code>
- *    <code>MOUSE_CLICKED</code>:  <code>BUTTON1_MASK</code> <code>BUTTON1</code>
- *    <code>MOUSE_RELEASED</code>: <code>BUTTON2_MASK</code> <code>BUTTON2</code>
- *    <code>MOUSE_CLICKED</code>:  <code>BUTTON2_MASK</code> <code>BUTTON2</code>
- * </PRE>
+ * <pre><b>
+ *    id              modifiers    button</b>{@code
+ *    MOUSE_PRESSED:  BUTTON1_MASK BUTTON1
+ *    MOUSE_PRESSED:  BUTTON2_MASK BUTTON2
+ *    MOUSE_RELEASED: BUTTON1_MASK BUTTON1
+ *    MOUSE_CLICKED:  BUTTON1_MASK BUTTON1
+ *    MOUSE_RELEASED: BUTTON2_MASK BUTTON2
+ *    MOUSE_CLICKED:  BUTTON2_MASK BUTTON2
+ * }</pre>
  * If <b>button 2</b> is released first, the
- * <code>MOUSE_RELEASED</code>/<code>MOUSE_CLICKED</code> pair
- * for <code>BUTTON2_MASK</code> arrives first,
- * followed by the pair for <code>BUTTON1_MASK</code>.
+ * {@code MOUSE_RELEASED}/{@code MOUSE_CLICKED} pair
+ * for {@code BUTTON2_MASK} arrives first,
+ * followed by the pair for {@code BUTTON1_MASK}.
  * <p>
  * Some extra mouse buttons are added to extend the standard set of buttons
  * represented by the following constants:{@code BUTTON1}, {@code BUTTON2}, and {@code BUTTON3}.
@@ -154,20 +154,20 @@
  * Drag&amp;Drop operation.
  *
  * In a multi-screen environment mouse drag events are delivered to the
- * <code>Component</code> even if the mouse position is outside the bounds of the
- * <code>GraphicsConfiguration</code> associated with that
- * <code>Component</code>. However, the reported position for mouse drag events
+ * {@code Component} even if the mouse position is outside the bounds of the
+ * {@code GraphicsConfiguration} associated with that
+ * {@code Component}. However, the reported position for mouse drag events
  * in this case may differ from the actual mouse position:
  * <ul>
  * <li>In a multi-screen environment without a virtual device:
  * <br>
  * The reported coordinates for mouse drag events are clipped to fit within the
- * bounds of the <code>GraphicsConfiguration</code> associated with
- * the <code>Component</code>.
+ * bounds of the {@code GraphicsConfiguration} associated with
+ * the {@code Component}.
  * <li>In a multi-screen environment with a virtual device:
  * <br>
  * The reported coordinates for mouse drag events are clipped to fit within the
- * bounds of the virtual device associated with the <code>Component</code>.
+ * bounds of the virtual device associated with the {@code Component}.
  * </ul>
  * <p>
  * An unspecified behavior will be caused if the {@code id} parameter
@@ -200,51 +200,51 @@
     public static final int MOUSE_LAST          = 507;
 
     /**
-     * The "mouse clicked" event. This <code>MouseEvent</code>
+     * The "mouse clicked" event. This {@code MouseEvent}
      * occurs when a mouse button is pressed and released.
      */
     public static final int MOUSE_CLICKED = MOUSE_FIRST;
 
     /**
-     * The "mouse pressed" event. This <code>MouseEvent</code>
+     * The "mouse pressed" event. This {@code MouseEvent}
      * occurs when a mouse button is pushed down.
      */
     public static final int MOUSE_PRESSED = 1 + MOUSE_FIRST; //Event.MOUSE_DOWN
 
     /**
-     * The "mouse released" event. This <code>MouseEvent</code>
+     * The "mouse released" event. This {@code MouseEvent}
      * occurs when a mouse button is let up.
      */
     public static final int MOUSE_RELEASED = 2 + MOUSE_FIRST; //Event.MOUSE_UP
 
     /**
-     * The "mouse moved" event. This <code>MouseEvent</code>
+     * The "mouse moved" event. This {@code MouseEvent}
      * occurs when the mouse position changes.
      */
     public static final int MOUSE_MOVED = 3 + MOUSE_FIRST; //Event.MOUSE_MOVE
 
     /**
-     * The "mouse entered" event. This <code>MouseEvent</code>
+     * The "mouse entered" event. This {@code MouseEvent}
      * occurs when the mouse cursor enters the unobscured part of component's
      * geometry.
      */
     public static final int MOUSE_ENTERED = 4 + MOUSE_FIRST; //Event.MOUSE_ENTER
 
     /**
-     * The "mouse exited" event. This <code>MouseEvent</code>
+     * The "mouse exited" event. This {@code MouseEvent}
      * occurs when the mouse cursor exits the unobscured part of component's
      * geometry.
      */
     public static final int MOUSE_EXITED = 5 + MOUSE_FIRST; //Event.MOUSE_EXIT
 
     /**
-     * The "mouse dragged" event. This <code>MouseEvent</code>
+     * The "mouse dragged" event. This {@code MouseEvent}
      * occurs when the mouse position changes while a mouse button is pressed.
      */
     public static final int MOUSE_DRAGGED = 6 + MOUSE_FIRST; //Event.MOUSE_DRAG
 
     /**
-     * The "mouse wheel" event.  This is the only <code>MouseWheelEvent</code>.
+     * The "mouse wheel" event.  This is the only {@code MouseWheelEvent}.
      * It occurs when a mouse equipped with a wheel has its wheel rotated.
      * @since 1.4
      */
@@ -320,10 +320,10 @@
      * Indicates the number of quick consecutive clicks of
      * a mouse button.
      * clickCount will be valid for only three mouse events :<BR>
-     * <code>MOUSE_CLICKED</code>,
-     * <code>MOUSE_PRESSED</code> and
-     * <code>MOUSE_RELEASED</code>.
-     * For the above, the <code>clickCount</code> will be at least 1.
+     * {@code MOUSE_CLICKED},
+     * {@code MOUSE_PRESSED} and
+     * {@code MOUSE_RELEASED}.
+     * For the above, the {@code clickCount} will be at least 1.
      * For all other events the count will be 0.
      *
      * @serial
@@ -365,8 +365,8 @@
     /**
      * A property used to indicate whether a Popup Menu
      * should appear  with a certain gestures.
-     * If <code>popupTrigger</code> = <code>false</code>,
-     * no popup menu should appear.  If it is <code>true</code>
+     * If {@code popupTrigger} = {@code false},
+     * no popup menu should appear.  If it is {@code true}
      * then a popup menu should appear.
      *
      * @serial
@@ -415,7 +415,7 @@
      * Otherwise, these coordinates are relative to the coordinate system
      * associated with the Component's GraphicsConfiguration.
      *
-     * @return a <code>Point</code> object containing the absolute  x
+     * @return a {@code Point} object containing the absolute  x
      *  and y coordinates.
      *
      * @see java.awt.GraphicsConfiguration
@@ -460,7 +460,7 @@
     }
 
     /**
-     * Constructs a <code>MouseEvent</code> object with the
+     * Constructs a {@code MouseEvent} object with the
      * specified source component,
      * type, time, modifiers, coordinates, click count, popupTrigger flag,
      * and button number.
@@ -469,19 +469,19 @@
      * as by using more than one of the old _MASKs, or modifier/button
      * values which don't match) results in unspecified behavior.
      * An invocation of the form
-     * <tt>MouseEvent(source, id, when, modifiers, x, y, clickCount, popupTrigger, button)</tt>
+     * {@code MouseEvent(source, id, when, modifiers, x, y, clickCount, popupTrigger, button)}
      * behaves in exactly the same way as the invocation
-     * <tt> {@link #MouseEvent(Component, int, long, int, int, int,
-     * int, int, int, boolean, int) MouseEvent}(source, id, when, modifiers,
-     * x, y, xAbs, yAbs, clickCount, popupTrigger, button)</tt>
+     * {@link #MouseEvent(Component, int, long, int, int, int,
+     * int, int, int, boolean, int) MouseEvent(source, id, when, modifiers,
+     * x, y, xAbs, yAbs, clickCount, popupTrigger, button)}
      * where xAbs and yAbs defines as source's location on screen plus
      * relative coordinates x and y.
      * xAbs and yAbs are set to zero if the source is not showing.
      * This method throws an
-     * <code>IllegalArgumentException</code> if <code>source</code>
-     * is <code>null</code>.
+     * {@code IllegalArgumentException} if {@code source}
+     * is {@code null}.
      *
-     * @param source       The <code>Component</code> that originated the event
+     * @param source       The {@code Component} that originated the event
      * @param id              An integer indicating the type of event.
      *                     For information on allowable values, see
      *                     the class description for {@link MouseEvent}
@@ -527,16 +527,16 @@
      * if the mouse has more than three buttons.
      * </ul>
      * @throws IllegalArgumentException if {@code button} is less then zero
-     * @throws IllegalArgumentException if <code>source</code> is null
+     * @throws IllegalArgumentException if {@code source} is null
      * @throws IllegalArgumentException if {@code button} is greater then BUTTON3 and the support for extended mouse buttons is
      *                                  {@link Toolkit#areExtraMouseButtonsEnabled() disabled} by Java
      * @throws IllegalArgumentException if {@code button} is greater then the
      *                                  {@link java.awt.MouseInfo#getNumberOfButtons() current number of buttons} and the support
      *                                  for extended mouse buttons is {@link Toolkit#areExtraMouseButtonsEnabled() enabled}
      *                                  by Java
-     * @throws IllegalArgumentException if an invalid <code>button</code>
+     * @throws IllegalArgumentException if an invalid {@code button}
      *            value is passed in
-     * @throws IllegalArgumentException if <code>source</code> is null
+     * @throws IllegalArgumentException if {@code source} is null
      * @see #getSource()
      * @see #getID()
      * @see #getWhen()
@@ -565,22 +565,22 @@
     }
 
     /**
-     * Constructs a <code>MouseEvent</code> object with the
+     * Constructs a {@code MouseEvent} object with the
      * specified source component,
      * type, modifiers, coordinates, click count, and popupTrigger flag.
      * An invocation of the form
-     * <tt>MouseEvent(source, id, when, modifiers, x, y, clickCount, popupTrigger)</tt>
+     * {@code MouseEvent(source, id, when, modifiers, x, y, clickCount, popupTrigger)}
      * behaves in exactly the same way as the invocation
-     * <tt> {@link #MouseEvent(Component, int, long, int, int, int,
-     * int, int, int, boolean, int) MouseEvent}(source, id, when, modifiers,
-     * x, y, xAbs, yAbs, clickCount, popupTrigger, MouseEvent.NOBUTTON)</tt>
+     * {@link #MouseEvent(Component, int, long, int, int, int,
+     * int, int, int, boolean, int) MouseEvent(source, id, when, modifiers,
+     * x, y, xAbs, yAbs, clickCount, popupTrigger, MouseEvent.NOBUTTON)}
      * where xAbs and yAbs defines as source's location on screen plus
      * relative coordinates x and y.
      * xAbs and yAbs are set to zero if the source is not showing.
-     * This method throws an <code>IllegalArgumentException</code>
-     * if <code>source</code> is <code>null</code>.
+     * This method throws an {@code IllegalArgumentException}
+     * if {@code source} is {@code null}.
      *
-     * @param source       The <code>Component</code> that originated the event
+     * @param source       The {@code Component} that originated the event
      * @param id              An integer indicating the type of event.
      *                     For information on allowable values, see
      *                     the class description for {@link MouseEvent}
@@ -605,7 +605,7 @@
      *                       is not recommended
      * @param popupTrigger A boolean that equals {@code true} if this event
      *                     is a trigger for a popup menu
-     * @throws IllegalArgumentException if <code>source</code> is null
+     * @throws IllegalArgumentException if {@code source} is null
      * @see #getSource()
      * @see #getID()
      * @see #getWhen()
@@ -637,7 +637,7 @@
     }
 
     /**
-     * Constructs a <code>MouseEvent</code> object with the
+     * Constructs a {@code MouseEvent} object with the
      * specified source component,
      * type, time, modifiers, coordinates, absolute coordinates, click count, popupTrigger flag,
      * and button number.
@@ -649,10 +649,10 @@
      * passed to the constructor, the mouse event instance is still
      * created and no exception is thrown.
      * This method throws an
-     * <code>IllegalArgumentException</code> if <code>source</code>
-     * is <code>null</code>.
+     * {@code IllegalArgumentException} if {@code source}
+     * is {@code null}.
      *
-     * @param source       The <code>Component</code> that originated the event
+     * @param source       The {@code Component} that originated the event
      * @param id              An integer indicating the type of event.
      *                     For information on allowable values, see
      *                     the class description for {@link MouseEvent}
@@ -702,16 +702,16 @@
      * if the mouse has more than three buttons.
      * </ul>
      * @throws IllegalArgumentException if {@code button} is less then zero
-     * @throws IllegalArgumentException if <code>source</code> is null
+     * @throws IllegalArgumentException if {@code source} is null
      * @throws IllegalArgumentException if {@code button} is greater then BUTTON3 and the support for extended mouse buttons is
      *                                  {@link Toolkit#areExtraMouseButtonsEnabled() disabled} by Java
      * @throws IllegalArgumentException if {@code button} is greater then the
      *                                  {@link java.awt.MouseInfo#getNumberOfButtons() current number of buttons} and the support
      *                                  for extended mouse buttons is {@link Toolkit#areExtraMouseButtonsEnabled() enabled}
      *                                  by Java
-     * @throws IllegalArgumentException if an invalid <code>button</code>
+     * @throws IllegalArgumentException if an invalid {@code button}
      *            value is passed in
-     * @throws IllegalArgumentException if <code>source</code> is null
+     * @throws IllegalArgumentException if {@code source} is null
      * @see #getSource()
      * @see #getID()
      * @see #getWhen()
@@ -803,7 +803,7 @@
     /**
      * Returns the x,y position of the event relative to the source component.
      *
-     * @return a <code>Point</code> object containing the x and y coordinates
+     * @return a {@code Point} object containing the x and y coordinates
      *         relative to the source component
      *
      */
@@ -819,7 +819,7 @@
 
     /**
      * Translates the event's coordinates to a new position
-     * by adding specified <code>x</code> (horizontal) and <code>y</code>
+     * by adding specified {@code x} (horizontal) and {@code y}
      * (vertical) offsets.
      *
      * @param x the horizontal x value to add to the current x
@@ -901,9 +901,9 @@
      * Returns whether or not this mouse event is the popup menu
      * trigger event for the platform.
      * <p><b>Note</b>: Popup menus are triggered differently
-     * on different systems. Therefore, <code>isPopupTrigger</code>
-     * should be checked in both <code>mousePressed</code>
-     * and <code>mouseReleased</code>
+     * on different systems. Therefore, {@code isPopupTrigger}
+     * should be checked in both {@code mousePressed}
+     * and {@code mouseReleased}
      * for proper cross-platform functionality.
      *
      * @return boolean, true if this event is the popup menu trigger
@@ -914,16 +914,16 @@
     }
 
     /**
-     * Returns a <code>String</code> instance describing the modifier keys and
+     * Returns a {@code String} instance describing the modifier keys and
      * mouse buttons that were down during the event, such as "Shift",
      * or "Ctrl+Shift". These strings can be localized by changing
-     * the <code>awt.properties</code> file.
+     * the {@code awt.properties} file.
      * <p>
-     * Note that the <code>InputEvent.ALT_MASK</code> and
-     * <code>InputEvent.BUTTON2_MASK</code> have equal values,
+     * Note that the {@code InputEvent.ALT_MASK} and
+     * {@code InputEvent.BUTTON2_MASK} have equal values,
      * so the "Alt" string is returned for both modifiers.  Likewise,
-     * the <code>InputEvent.META_MASK</code> and
-     * <code>InputEvent.BUTTON3_MASK</code> have equal values,
+     * the {@code InputEvent.META_MASK} and
+     * {@code InputEvent.BUTTON3_MASK} have equal values,
      * so the "Meta" string is returned for both modifiers.
      * <p>
      * Note that passing negative parameter is incorrect,
diff --git a/jdk/src/java.desktop/share/classes/java/awt/image/PixelGrabber.java b/jdk/src/java.desktop/share/classes/java/awt/image/PixelGrabber.java
index 0448a7b..3c632a6 100644
--- a/jdk/src/java.desktop/share/classes/java/awt/image/PixelGrabber.java
+++ b/jdk/src/java.desktop/share/classes/java/awt/image/PixelGrabber.java
@@ -99,7 +99,7 @@
      * The pixels are stored into the array in the default RGB ColorModel.
      * The RGB data for pixel (i, j) where (i, j) is inside the rectangle
      * (x, y, w, h) is stored in the array at
-     * <tt>pix[(j - y) * scansize + (i - x) + off]</tt>.
+     * {@code pix[(j - y) * scansize + (i - x) + off]}.
      * @see ColorModel#getRGBdefault
      * @param img the image to retrieve pixels from
      * @param x the x coordinate of the upper left corner of the rectangle
@@ -127,8 +127,8 @@
      * The pixels are stored into the array in the default RGB ColorModel.
      * The RGB data for pixel (i, j) where (i, j) is inside the rectangle
      * (x, y, w, h) is stored in the array at
-     * <tt>pix[(j - y) * scansize + (i - x) + off]</tt>.
-     * @param ip the <code>ImageProducer</code> that produces the
+     * {@code pix[(j - y) * scansize + (i - x) + off]}.
+     * @param ip the {@code ImageProducer} that produces the
      * image from which to retrieve pixels
      * @param x the x coordinate of the upper left corner of the rectangle
      * of pixels to retrieve from the image, relative to the default
@@ -231,13 +231,13 @@
      * wait for all of the pixels in the rectangle of interest to be
      * delivered or until the specified timeout has elapsed.  This method
      * behaves in the following ways, depending on the value of
-     * <code>ms</code>:
+     * {@code ms}:
      * <ul>
      * <li> If {@code ms == 0}, waits until all pixels are delivered
      * <li> If {@code ms > 0}, waits until all pixels are delivered
      * as timeout expires.
-     * <li> If {@code ms < 0}, returns <code>true</code> if all pixels
-     * are grabbed, <code>false</code> otherwise and does not wait.
+     * <li> If {@code ms < 0}, returns {@code true} if all pixels
+     * are grabbed, {@code false} otherwise and does not wait.
      * </ul>
      * @param ms the number of milliseconds to wait for the image pixels
      * to arrive before timing out
@@ -420,7 +420,7 @@
      * this class to retrieve pixels from an image should avoid calling
      * this method directly since that operation could result in problems
      * with retrieving the requested pixels.
-     * @param model the specified <code>ColorModel</code>
+     * @param model the specified {@code ColorModel}
      * @see #getColorModel
      */
     public void setColorModel(ColorModel model) {
@@ -461,7 +461,7 @@
      *        of the area of pixels to be set
      * @param srcW the width of the area of pixels
      * @param srcH the height of the area of pixels
-     * @param model the specified <code>ColorModel</code>
+     * @param model the specified {@code ColorModel}
      * @param pixels the array of pixels
      * @param srcOff the offset into the pixels array
      * @param srcScan the distance from one row of pixels to the next
@@ -548,7 +548,7 @@
      *        of the area of pixels to be set
      * @param srcW the width of the area of pixels
      * @param srcH the height of the area of pixels
-     * @param model the specified <code>ColorModel</code>
+     * @param model the specified {@code ColorModel}
      * @param pixels the array of pixels
      * @param srcOff the offset into the pixels array
      * @param srcScan the distance from one row of pixels to the next
@@ -658,7 +658,7 @@
      * Returns the status of the pixels.  The ImageObserver flags
      * representing the available pixel information are returned.
      * This method and {@link #getStatus() getStatus} have the
-     * same implementation, but <code>getStatus</code> is the
+     * same implementation, but {@code getStatus} is the
      * preferred method because it conforms to the convention of
      * naming information-retrieval methods with the form
      * "getXXX".
diff --git a/jdk/src/java.desktop/share/classes/java/awt/image/RescaleOp.java b/jdk/src/java.desktop/share/classes/java/awt/image/RescaleOp.java
index e8fa30e..1bf21db 100644
--- a/jdk/src/java.desktop/share/classes/java/awt/image/RescaleOp.java
+++ b/jdk/src/java.desktop/share/classes/java/awt/image/RescaleOp.java
@@ -326,16 +326,16 @@
     public final BufferedImage filter (BufferedImage src, BufferedImage dst) {
         ColorModel srcCM = src.getColorModel();
         ColorModel dstCM;
-        int numBands = srcCM.getNumColorComponents();
-
+        int numSrcColorComp = srcCM.getNumColorComponents();
+        int scaleConst = length;
 
         if (srcCM instanceof IndexColorModel) {
             throw new
                 IllegalArgumentException("Rescaling cannot be "+
                                          "performed on an indexed image");
         }
-        if (length != 1 && length != numBands &&
-            length != srcCM.getNumComponents())
+        if (scaleConst != 1 && scaleConst != numSrcColorComp &&
+            scaleConst != srcCM.getNumComponents())
         {
             throw new IllegalArgumentException("Number of scaling constants "+
                                                "does not equal the number of"+
@@ -346,13 +346,14 @@
         boolean needToConvert = false;
 
         // Include alpha
-        if (length > numBands && srcCM.hasAlpha()) {
-            length = numBands+1;
+        if (scaleConst > numSrcColorComp && srcCM.hasAlpha()) {
+            scaleConst = numSrcColorComp+1;
         }
 
         int width = src.getWidth();
         int height = src.getHeight();
 
+        BufferedImage origDst = dst;
         if (dst == null) {
             dst = createCompatibleDestImage(src, null);
             dstCM = srcCM;
@@ -380,7 +381,19 @@
 
         }
 
-        BufferedImage origDst = dst;
+        boolean scaleAlpha = true;
+
+        //
+        // The number of sets of scaling constants may be one,
+        // in which case the same constants are applied to all color
+        // (but NOT alpha) components. Otherwise, the number of sets
+        // of scaling constants may equal the number of Source color
+        // components, in which case NO rescaling of the alpha component
+        // (if present) is performed.
+        //
+        if (numSrcColorComp == scaleConst || scaleConst == 1) {
+            scaleAlpha = false;
+        }
 
         //
         // Try to use a native BI rescale operation first
@@ -392,12 +405,13 @@
             WritableRaster srcRaster = src.getRaster();
             WritableRaster dstRaster = dst.getRaster();
 
-            if (srcCM.hasAlpha()) {
-                if (numBands-1 == length || length == 1) {
+            if (!scaleAlpha) {
+                if (srcCM.hasAlpha()) {
+                    // Do not rescale Alpha component
                     int minx = srcRaster.getMinX();
                     int miny = srcRaster.getMinY();
-                    int[] bands = new int[numBands-1];
-                    for (int i=0; i < numBands-1; i++) {
+                    int[] bands = new int[numSrcColorComp];
+                    for (int i=0; i < numSrcColorComp; i++) {
                         bands[i] = i;
                     }
                     srcRaster =
@@ -407,14 +421,11 @@
                                                       minx, miny,
                                                       bands);
                 }
-            }
-            if (dstCM.hasAlpha()) {
-                int dstNumBands = dstRaster.getNumBands();
-                if (dstNumBands-1 == length || length == 1) {
+                if (dstCM.hasAlpha()) {
                     int minx = dstRaster.getMinX();
                     int miny = dstRaster.getMinY();
-                    int[] bands = new int[numBands-1];
-                    for (int i=0; i < numBands-1; i++) {
+                    int[] bands = new int[numSrcColorComp];
+                    for (int i=0; i < numSrcColorComp; i++) {
                         bands[i] = i;
                     }
                     dstRaster =
@@ -429,17 +440,42 @@
             //
             // Call the raster filter method
             //
-            filter(srcRaster, dstRaster);
+            filterRasterImpl(srcRaster, dstRaster, scaleConst);
 
+            //
+            // here copy the unscaled src alpha to destination alpha channel
+            //
+            if (!scaleAlpha) {
+                Raster srcAlphaRaster = null;
+                WritableRaster dstAlphaRaster = null;
+
+                if (srcCM.hasAlpha()) {
+                    srcAlphaRaster = src.getAlphaRaster();
+                }
+                if (dstCM.hasAlpha()) {
+                    dstAlphaRaster = dst.getAlphaRaster();
+                    if (srcAlphaRaster != null) {
+                        dstAlphaRaster.setRect(srcAlphaRaster);
+                    } else {
+                        int alpha = 0xff << 24;
+                        for (int cy=0; cy < dst.getHeight(); cy++) {
+                            for (int cx=0; cx < dst.getWidth(); cx++) {
+                                int color = dst.getRGB(cx, cy);
+
+                                dst.setRGB(cx, cy, color | alpha);
+                            }
+                        }
+                    }
+                }
+            }
         }
 
         if (needToConvert) {
             // ColorModels are not the same
             ColorConvertOp ccop = new ColorConvertOp(hints);
-            ccop.filter(dst, origDst);
+            dst = ccop.filter(dst, origDst);
         }
-
-        return origDst;
+        return dst;
     }
 
     /**
@@ -461,6 +497,10 @@
      *         stated in the class comments.
      */
     public final WritableRaster filter (Raster src, WritableRaster dst)  {
+        return filterRasterImpl(src, dst, length);
+    }
+
+    private WritableRaster filterRasterImpl(Raster src, WritableRaster dst, int scaleConst) {
         int numBands = src.getNumBands();
         int width  = src.getWidth();
         int height = src.getHeight();
@@ -484,15 +524,15 @@
                             + " does not equal number of bands in dest "
                             + dst.getNumBands());
         }
+
         // Make sure that the arrays match
         // Make sure that the low/high/constant arrays match
-        if (length != 1 && length != src.getNumBands()) {
+        if (scaleConst != 1 && scaleConst != src.getNumBands()) {
             throw new IllegalArgumentException("Number of scaling constants "+
                                                "does not equal the number of"+
                                                " of bands in the src raster");
         }
 
-
         //
         // Try for a native raster rescale first
         //
@@ -523,7 +563,7 @@
             //
             // Fall back to the slow code
             //
-            if (length > 1) {
+            if (scaleConst > 1) {
                 step = 1;
             }
 
diff --git a/jdk/src/java.desktop/share/classes/java/beans/EventSetDescriptor.java b/jdk/src/java.desktop/share/classes/java/beans/EventSetDescriptor.java
index 6850c76..78ae5f2 100644
--- a/jdk/src/java.desktop/share/classes/java/beans/EventSetDescriptor.java
+++ b/jdk/src/java.desktop/share/classes/java/beans/EventSetDescriptor.java
@@ -54,16 +54,16 @@
     private boolean inDefaultEventSet = true;
 
     /**
-     * Creates an <TT>EventSetDescriptor</TT> assuming that you are
+     * Creates an {@code EventSetDescriptor} assuming that you are
      * following the most simple standard design pattern where a named
-     * event &quot;fred&quot; is (1) delivered as a call on the single method of
+     * event "fred" is (1) delivered as a call on the single method of
      * interface FredListener, (2) has a single argument of type FredEvent,
      * and (3) where the FredListener may be registered with a call on an
      * addFredListener method of the source component and removed with a
      * call on a removeFredListener method.
      *
      * @param sourceClass  The class firing the event.
-     * @param eventSetName  The programmatic name of the event.  E.g. &quot;fred&quot;.
+     * @param eventSetName  The programmatic name of the event.  E.g. "fred".
      *          Note that this should normally start with a lower-case character.
      * @param listenerType  The target interface that events
      *          will get delivered to.
@@ -100,7 +100,7 @@
     }
 
     /**
-     * Creates an <TT>EventSetDescriptor</TT> from scratch using
+     * Creates an {@code EventSetDescriptor} from scratch using
      * string names.
      *
      * @param sourceClass  The class firing the event.
@@ -199,8 +199,8 @@
     }
 
     /**
-     * Creates an <TT>EventSetDescriptor</TT> from scratch using
-     * <TT>java.lang.reflect.Method</TT> and <TT>java.lang.Class</TT> objects.
+     * Creates an {@code EventSetDescriptor} from scratch using
+     * {@code java.lang.reflect.Method} and {@code java.lang.Class} objects.
      *
      * @param eventSetName The programmatic name of the event set.
      * @param listenerType The Class for the listener interface.
@@ -267,8 +267,8 @@
     }
 
     /**
-     * Creates an <TT>EventSetDescriptor</TT> from scratch using
-     * <TT>java.lang.reflect.MethodDescriptor</TT> and <TT>java.lang.Class</TT>
+     * Creates an {@code EventSetDescriptor} from scratch using
+     * {@code java.lang.reflect.MethodDescriptor} and {@code java.lang.Class}
      *  objects.
      *
      * @param eventSetName The programmatic name of the event set.
@@ -299,7 +299,7 @@
     }
 
     /**
-     * Gets the <TT>Class</TT> object for the target interface.
+     * Gets the {@code Class} object for the target interface.
      *
      * @return The Class object for the target interface that will
      * get invoked when the event is fired.
@@ -317,7 +317,7 @@
     /**
      * Gets the methods of the target listener interface.
      *
-     * @return An array of <TT>Method</TT> objects for the target methods
+     * @return An array of {@code Method} objects for the target methods
      * within the target listener interface that will get called when
      * events are fired.
      */
@@ -355,9 +355,9 @@
     }
 
     /**
-     * Gets the <code>MethodDescriptor</code>s of the target listener interface.
+     * Gets the {@code MethodDescriptor}s of the target listener interface.
      *
-     * @return An array of <code>MethodDescriptor</code> objects for the target methods
+     * @return An array of {@code MethodDescriptor} objects for the target methods
      * within the target listener interface that will get called when
      * events are fired.
      */
@@ -442,30 +442,30 @@
      * Normally event sources are multicast.  However there are some
      * exceptions that are strictly unicast.
      *
-     * @return  <TT>true</TT> if the event set is unicast.
-     *          Defaults to <TT>false</TT>.
+     * @return  {@code true} if the event set is unicast.
+     *          Defaults to {@code false}.
      */
     public boolean isUnicast() {
         return unicast;
     }
 
     /**
-     * Marks an event set as being in the &quot;default&quot; set (or not).
-     * By default this is <TT>true</TT>.
+     * Marks an event set as being in the "default" set (or not).
+     * By default this is {@code true}.
      *
-     * @param inDefaultEventSet <code>true</code> if the event set is in
-     *                          the &quot;default&quot; set,
-     *                          <code>false</code> if not
+     * @param inDefaultEventSet {@code true} if the event set is in
+     *                          the "default" set,
+     *                          {@code false} if not
      */
     public void setInDefaultEventSet(boolean inDefaultEventSet) {
         this.inDefaultEventSet = inDefaultEventSet;
     }
 
     /**
-     * Reports if an event set is in the &quot;default&quot; set.
+     * Reports if an event set is in the "default" set.
      *
-     * @return  <TT>true</TT> if the event set is in
-     *          the &quot;default&quot; set.  Defaults to <TT>true</TT>.
+     * @return  {@code true} if the event set is in
+     *          the "default" set.  Defaults to {@code true}.
      */
     public boolean isInDefaultEventSet() {
         return inDefaultEventSet;
diff --git a/jdk/src/java.desktop/share/classes/java/beans/SimpleBeanInfo.java b/jdk/src/java.desktop/share/classes/java/beans/SimpleBeanInfo.java
index 45d5b44..20d2312 100644
--- a/jdk/src/java.desktop/share/classes/java/beans/SimpleBeanInfo.java
+++ b/jdk/src/java.desktop/share/classes/java/beans/SimpleBeanInfo.java
@@ -27,8 +27,7 @@
 
 import java.awt.Image;
 import java.awt.Toolkit;
-import java.awt.image.ImageProducer;
-import java.net.URL;
+import java.io.InputStream;
 
 /**
  * This is a support class to make it easier for people to provide
@@ -122,14 +121,8 @@
      * @return  an image object.  May be null if the load failed.
      */
     public Image loadImage(final String resourceName) {
-        try {
-            final URL url = getClass().getResource(resourceName);
-            if (url != null) {
-                final ImageProducer ip = (ImageProducer) url.getContent();
-                if (ip != null) {
-                    return Toolkit.getDefaultToolkit().createImage(ip);
-                }
-            }
+        try (InputStream in = getClass().getResourceAsStream(resourceName)) {
+            return Toolkit.getDefaultToolkit().createImage(in.readAllBytes());
         } catch (final Exception ignored) {
         }
         return null;
diff --git a/jdk/src/java.desktop/share/classes/java/beans/beancontext/BeanContextChildSupport.java b/jdk/src/java.desktop/share/classes/java/beans/beancontext/BeanContextChildSupport.java
index af95e03..4bfecc2 100644
--- a/jdk/src/java.desktop/share/classes/java/beans/beancontext/BeanContextChildSupport.java
+++ b/jdk/src/java.desktop/share/classes/java/beans/beancontext/BeanContextChildSupport.java
@@ -91,9 +91,9 @@
     }
 
     /**
-     * Sets the <code>BeanContext</code> for
-     * this <code>BeanContextChildSupport</code>.
-     * @param bc the new value to be assigned to the <code>BeanContext</code>
+     * Sets the {@code BeanContext} for
+     * this {@code BeanContextChildSupport}.
+     * @param bc the new value to be assigned to the {@code BeanContext}
      * property
      * @throws PropertyVetoException if the change is rejected
      */
@@ -137,10 +137,10 @@
     }
 
     /**
-     * Gets the nesting <code>BeanContext</code>
-     * for this <code>BeanContextChildSupport</code>.
-     * @return the nesting <code>BeanContext</code> for
-     * this <code>BeanContextChildSupport</code>.
+     * Gets the nesting {@code BeanContext}
+     * for this {@code BeanContextChildSupport}.
+     * @return the nesting {@code BeanContext} for
+     * this {@code BeanContextChildSupport}.
      */
     public synchronized BeanContext getBeanContext() { return beanContext; }
 
@@ -149,11 +149,11 @@
      * The same listener object may be added more than once.  For each
      * property,  the listener will be invoked the number of times it was added
      * for that property.
-     * If <code>name</code> or <code>pcl</code> is null, no exception is thrown
+     * If {@code name} or {@code pcl} is null, no exception is thrown
      * and no action is taken.
      *
      * @param name The name of the property to listen on
-     * @param pcl The <code>PropertyChangeListener</code> to be added
+     * @param pcl The {@code PropertyChangeListener} to be added
      */
     public void addPropertyChangeListener(String name, PropertyChangeListener pcl) {
         pcSupport.addPropertyChangeListener(name, pcl);
@@ -161,12 +161,12 @@
 
     /**
      * Remove a PropertyChangeListener for a specific property.
-     * If <code>pcl</code> was added more than once to the same event
+     * If {@code pcl} was added more than once to the same event
      * source for the specified property, it will be notified one less time
      * after being removed.
-     * If <code>name</code> is null, no exception is thrown
+     * If {@code name} is null, no exception is thrown
      * and no action is taken.
-     * If <code>pcl</code> is null, or was never added for the specified
+     * If {@code pcl} is null, or was never added for the specified
      * property, no exception is thrown and no action is taken.
      *
      * @param name The name of the property that was listened on
@@ -181,28 +181,28 @@
      * The same listener object may be added more than once.  For each
      * property,  the listener will be invoked the number of times it was added
      * for that property.
-     * If <code>name</code> or <code>vcl</code> is null, no exception is thrown
+     * If {@code name} or {@code vcl} is null, no exception is thrown
      * and no action is taken.
      *
      * @param name The name of the property to listen on
-     * @param vcl The <code>VetoableChangeListener</code> to be added
+     * @param vcl The {@code VetoableChangeListener} to be added
      */
     public void addVetoableChangeListener(String name, VetoableChangeListener vcl) {
         vcSupport.addVetoableChangeListener(name, vcl);
     }
 
     /**
-     * Removes a <code>VetoableChangeListener</code>.
-     * If <code>pcl</code> was added more than once to the same event
+     * Removes a {@code VetoableChangeListener}.
+     * If {@code pcl} was added more than once to the same event
      * source for the specified property, it will be notified one less time
      * after being removed.
-     * If <code>name</code> is null, no exception is thrown
+     * If {@code name} is null, no exception is thrown
      * and no action is taken.
-     * If <code>vcl</code> is null, or was never added for the specified
+     * If {@code vcl} is null, or was never added for the specified
      * property, no exception is thrown and no action is taken.
      *
      * @param name The name of the property that was listened on
-     * @param vcl The <code>VetoableChangeListener</code> to be removed
+     * @param vcl The {@code VetoableChangeListener} to be removed
      */
     public void removeVetoableChangeListener(String name, VetoableChangeListener vcl) {
         vcSupport.removeVetoableChangeListener(name, vcl);
@@ -213,7 +213,7 @@
      *
      * Subclasses may override this method in order to implement their own
      * behaviors.
-     * @param bcsre The <code>BeanContextServiceRevokedEvent</code> fired as a
+     * @param bcsre The {@code BeanContextServiceRevokedEvent} fired as a
      * result of a service being revoked
      */
     public void serviceRevoked(BeanContextServiceRevokedEvent bcsre) { }
@@ -230,10 +230,10 @@
     public void serviceAvailable(BeanContextServiceAvailableEvent bcsae) { }
 
     /**
-     * Gets the <tt>BeanContextChild</tt> associated with this
-     * <tt>BeanContextChildSupport</tt>.
+     * Gets the {@code BeanContextChild} associated with this
+     * {@code BeanContextChildSupport}.
      *
-     * @return the <tt>BeanContextChild</tt> peer of this class
+     * @return the {@code BeanContextChild} peer of this class
      */
     public BeanContextChild getBeanContextChildPeer() { return beanContextChildPeer; }
 
@@ -283,7 +283,7 @@
      * PropertyVetoException.
      * @param newValue the new value that has been requested for
      *  the BeanContext property
-     * @return <code>true</code> if the change operation is to be vetoed
+     * @return {@code true} if the change operation is to be vetoed
      */
     public boolean validatePendingSetBeanContext(BeanContext newValue) {
         return true;
@@ -345,20 +345,20 @@
      */
 
     /**
-     * The <code>BeanContext</code> in which
-     * this <code>BeanContextChild</code> is nested.
+     * The {@code BeanContext} in which
+     * this {@code BeanContextChild} is nested.
      */
     public    BeanContextChild      beanContextChildPeer;
 
    /**
-    * The <tt>PropertyChangeSupport</tt> associated with this
-    * <tt>BeanContextChildSupport</tt>.
+    * The {@code PropertyChangeSupport} associated with this
+    * {@code BeanContextChildSupport}.
     */
     protected PropertyChangeSupport pcSupport;
 
    /**
-    * The <tt>VetoableChangeSupport</tt> associated with this
-    * <tt>BeanContextChildSupport</tt>.
+    * The {@code VetoableChangeSupport} associated with this
+    * {@code BeanContextChildSupport}.
     */
     protected VetoableChangeSupport vcSupport;
 
@@ -369,7 +369,7 @@
 
    /**
     * A flag indicating that there has been
-    * at least one <code>PropertyChangeVetoException</code>
+    * at least one {@code PropertyChangeVetoException}
     * thrown for the attempted setBeanContext operation.
     */
     protected transient boolean               rejectedSetBCOnce;
diff --git a/jdk/src/java.desktop/share/classes/java/beans/beancontext/BeanContextServicesSupport.java b/jdk/src/java.desktop/share/classes/java/beans/beancontext/BeanContextServicesSupport.java
index 507e8ec..1103af5 100644
--- a/jdk/src/java.desktop/share/classes/java/beans/beancontext/BeanContextServicesSupport.java
+++ b/jdk/src/java.desktop/share/classes/java/beans/beancontext/BeanContextServicesSupport.java
@@ -134,10 +134,10 @@
     }
 
     /**
-     * Gets the <tt>BeanContextServices</tt> associated with this
-     * <tt>BeanContextServicesSupport</tt>.
+     * Gets the {@code BeanContextServices} associated with this
+     * {@code BeanContextServicesSupport}.
      *
-     * @return the instance of <tt>BeanContext</tt>
+     * @return the instance of {@code BeanContext}
      * this object is providing the implementation for.
      */
     public BeanContextServices getBeanContextServicesPeer() {
@@ -1001,7 +1001,7 @@
     }
 
     /**
-     * Gets the <tt>BeanContextServicesListener</tt> (if any) of the specified
+     * Gets the {@code BeanContextServicesListener} (if any) of the specified
      * child.
      *
      * @param child the specified child
@@ -1084,7 +1084,7 @@
     }
 
     /**
-     * Fires a <tt>BeanContextServiceEvent</tt> notifying of a new service.
+     * Fires a {@code BeanContextServiceEvent} notifying of a new service.
      * @param serviceClass the service class
      */
     protected final void fireServiceAdded(Class<?> serviceClass) {
@@ -1094,10 +1094,10 @@
     }
 
     /**
-     * Fires a <tt>BeanContextServiceAvailableEvent</tt> indicating that a new
+     * Fires a {@code BeanContextServiceAvailableEvent} indicating that a new
      * service has become available.
      *
-     * @param bcssae the <tt>BeanContextServiceAvailableEvent</tt>
+     * @param bcssae the {@code BeanContextServiceAvailableEvent}
      */
     protected final void fireServiceAdded(BeanContextServiceAvailableEvent bcssae) {
         Object[]                         copy;
@@ -1110,9 +1110,9 @@
     }
 
     /**
-     * Fires a <tt>BeanContextServiceEvent</tt> notifying of a service being revoked.
+     * Fires a {@code BeanContextServiceEvent} notifying of a service being revoked.
      *
-     * @param bcsre the <tt>BeanContextServiceRevokedEvent</tt>
+     * @param bcsre the {@code BeanContextServiceRevokedEvent}
      */
     protected final void fireServiceRevoked(BeanContextServiceRevokedEvent bcsre) {
         Object[]                         copy;
@@ -1125,7 +1125,7 @@
     }
 
     /**
-     * Fires a <tt>BeanContextServiceRevokedEvent</tt>
+     * Fires a {@code BeanContextServiceRevokedEvent}
      * indicating that a particular service is
      * no longer available.
      * @param serviceClass the service class
@@ -1235,25 +1235,25 @@
      */
 
     /**
-     * all accesses to the <code> protected transient HashMap services </code>
+     * all accesses to the {@code protected transient HashMap services}
      * field should be synchronized on that object
      */
     protected transient HashMap<Object, BCSSServiceProvider>  services;
 
     /**
-     * The number of instances of a serializable <tt>BeanContextServceProvider</tt>.
+     * The number of instances of a serializable {@code BeanContextServceProvider}.
      */
     protected transient int                      serializable = 0;
 
 
     /**
-     * Delegate for the <tt>BeanContextServiceProvider</tt>.
+     * Delegate for the {@code BeanContextServiceProvider}.
      */
     protected transient BCSSProxyServiceProvider proxy;
 
 
     /**
-     * List of <tt>BeanContextServicesListener</tt> objects.
+     * List of {@code BeanContextServicesListener} objects.
      */
     protected transient ArrayList<BeanContextServicesListener> bcsListeners;
 }
diff --git a/jdk/src/java.desktop/share/classes/java/beans/beancontext/BeanContextSupport.java b/jdk/src/java.desktop/share/classes/java/beans/beancontext/BeanContextSupport.java
index 4845650..023701b 100644
--- a/jdk/src/java.desktop/share/classes/java/beans/beancontext/BeanContextSupport.java
+++ b/jdk/src/java.desktop/share/classes/java/beans/beancontext/BeanContextSupport.java
@@ -85,16 +85,16 @@
      * Construct a BeanContextSupport instance
      *
      *
-     * @param peer      The peer <tt>BeanContext</tt> we are
+     * @param peer      The peer {@code BeanContext} we are
      *                  supplying an implementation for,
-     *                  or <tt>null</tt>
+     *                  or {@code null}
      *                  if this object is its own peer
      * @param lcle      The current Locale for this BeanContext. If
-     *                  <tt>lcle</tt> is <tt>null</tt>, the default locale
-     *                  is assigned to the <tt>BeanContext</tt> instance.
+     *                  {@code lcle} is {@code null}, the default locale
+     *                  is assigned to the {@code BeanContext} instance.
      * @param dTime     The initial state,
-     *                  <tt>true</tt> if in design mode,
-     *                  <tt>false</tt> if runtime.
+     *                  {@code true} if in design mode,
+     *                  {@code false} if runtime.
      * @param visible   The initial visibility.
      * @see java.util.Locale#getDefault()
      * @see java.util.Locale#setDefault(java.util.Locale)
@@ -112,15 +112,15 @@
     /**
      * Create an instance using the specified Locale and design mode.
      *
-     * @param peer      The peer <tt>BeanContext</tt> we
+     * @param peer      The peer {@code BeanContext} we
      *                  are supplying an implementation for,
-     *                  or <tt>null</tt> if this object is its own peer
-     * @param lcle      The current Locale for this <tt>BeanContext</tt>. If
-     *                  <tt>lcle</tt> is <tt>null</tt>, the default locale
-     *                  is assigned to the <tt>BeanContext</tt> instance.
-     * @param dtime     The initial state, <tt>true</tt>
+     *                  or {@code null} if this object is its own peer
+     * @param lcle      The current Locale for this {@code BeanContext}. If
+     *                  {@code lcle} is {@code null}, the default locale
+     *                  is assigned to the {@code BeanContext} instance.
+     * @param dtime     The initial state, {@code true}
      *                  if in design mode,
-     *                  <tt>false</tt> if runtime.
+     *                  {@code false} if runtime.
      * @see java.util.Locale#getDefault()
      * @see java.util.Locale#setDefault(java.util.Locale)
      */
@@ -133,13 +133,13 @@
      *
      * @param peer      The peer BeanContext we are
      *                  supplying an implementation for,
-     *                  or <tt>null</tt> if this object
+     *                  or {@code null} if this object
      *                  is its own peer
      * @param lcle      The current Locale for this
-     *                  <tt>BeanContext</tt>. If
-     *                  <tt>lcle</tt> is <tt>null</tt>,
+     *                  {@code BeanContext}. If
+     *                  {@code lcle} is {@code null},
      *                  the default locale
-     *                  is assigned to the <tt>BeanContext</tt>
+     *                  is assigned to the {@code BeanContext}
      *                  instance.
      * @see java.util.Locale#getDefault()
      * @see java.util.Locale#setDefault(java.util.Locale)
@@ -151,9 +151,9 @@
     /**
      * Create an instance using with a default locale
      *
-     * @param peer      The peer <tt>BeanContext</tt> we are
+     * @param peer      The peer {@code BeanContext} we are
      *                  supplying an implementation for,
-     *                  or <tt>null</tt> if this object
+     *                  or {@code null} if this object
      *                  is its own peer
      */
     public BeanContextSupport(BeanContext peer) {
@@ -169,7 +169,7 @@
     }
 
     /**
-     * Gets the instance of <tt>BeanContext</tt> that
+     * Gets the instance of {@code BeanContext} that
      * this object is providing the implementation for.
      * @return the BeanContext instance
      */
@@ -180,7 +180,7 @@
      * The instantiateChild method is a convenience hook
      * in BeanContext to simplify
      * the task of instantiating a Bean, nested,
-     * into a <tt>BeanContext</tt>.
+     * into a {@code BeanContext}.
      * </p>
      * <p>
      * The semantics of the beanName parameter are defined by java.beans.Beans.instantiate.
@@ -213,8 +213,8 @@
 
     /**
      * Reports whether or not this
-     * <tt>BeanContext</tt> is empty.
-     * A <tt>BeanContext</tt> is considered
+     * {@code BeanContext} is empty.
+     * A {@code BeanContext} is considered
      * empty when it contains zero
      * nested children.
      * @return if there are not children
@@ -227,7 +227,7 @@
 
     /**
      * Determines whether or not the specified object
-     * is currently a child of this <tt>BeanContext</tt>.
+     * is currently a child of this {@code BeanContext}.
      * @param o the Object in question
      * @return if this object is a child
      */
@@ -239,7 +239,7 @@
 
     /**
      * Determines whether or not the specified object
-     * is currently a child of this <tt>BeanContext</tt>.
+     * is currently a child of this {@code BeanContext}.
      * @param o the Object in question
      * @return if this object is a child
      */
@@ -250,9 +250,9 @@
     }
 
     /**
-     * Gets all JavaBean or <tt>BeanContext</tt> instances
-     * currently nested in this <tt>BeanContext</tt>.
-     * @return an <tt>Iterator</tt> of the nested children
+     * Gets all JavaBean or {@code BeanContext} instances
+     * currently nested in this {@code BeanContext}.
+     * @return an {@code Iterator} of the nested children
      */
     public Iterator<Object> iterator() {
         synchronized(children) {
@@ -261,7 +261,7 @@
     }
 
     /**
-     * Gets all JavaBean or <tt>BeanContext</tt>
+     * Gets all JavaBean or {@code BeanContext}
      * instances currently nested in this BeanContext.
      */
     public Object[] toArray() {
@@ -272,7 +272,7 @@
 
     /**
      * Gets an array containing all children of
-     * this <tt>BeanContext</tt> that match
+     * this {@code BeanContext} that match
      * the types contained in arry.
      * @param arry The array of object
      * types that are of interest.
@@ -362,7 +362,7 @@
     /************************************************************************/
 
     /**
-     * Adds/nests a child within this <tt>BeanContext</tt>.
+     * Adds/nests a child within this {@code BeanContext}.
      * <p>
      * Invoked as a side effect of java.beans.Beans.instantiate().
      * If the child object is not valid for adding then this method
@@ -371,7 +371,7 @@
      *
      *
      * @param targetChild The child objects to nest
-     * within this <tt>BeanContext</tt>
+     * within this {@code BeanContext}
      * @return true if the child was added successfully.
      * @see #validatePendingAdd
      */
@@ -485,12 +485,12 @@
 
     /**
      * internal remove used when removal caused by
-     * unexpected <tt>setBeanContext</tt> or
-     * by <tt>remove()</tt> invocation.
+     * unexpected {@code setBeanContext} or
+     * by {@code remove()} invocation.
      * @param targetChild the JavaBean, BeanContext, or Object to be removed
      * @param callChildSetBC used to indicate that
      * the child should be notified that it is no
-     * longer nested in this <tt>BeanContext</tt>.
+     * longer nested in this {@code BeanContext}.
      * @return whether or not was present before being removed
      */
     protected boolean remove(Object targetChild, boolean callChildSetBC) {
@@ -558,13 +558,13 @@
 
     /**
      * Tests to see if all objects in the
-     * specified <tt>Collection</tt> are children of
-     * this <tt>BeanContext</tt>.
-     * @param c the specified <tt>Collection</tt>
+     * specified {@code Collection} are children of
+     * this {@code BeanContext}.
+     * @param c the specified {@code Collection}
      *
-     * @return <tt>true</tt> if all objects
+     * @return {@code true} if all objects
      * in the collection are children of
-     * this <tt>BeanContext</tt>, false if not.
+     * this {@code BeanContext}, false if not.
      */
     @SuppressWarnings("rawtypes")
     public boolean containsAll(Collection c) {
@@ -698,7 +698,7 @@
     }
 
     /**
-     * Sets the new design time value for this <tt>BeanContext</tt>.
+     * Sets the new design time value for this {@code BeanContext}.
      * @param dTime the new designTime value
      */
     public synchronized void setDesignTime(boolean dTime) {
@@ -713,15 +713,15 @@
     /**
      * Reports whether or not this object is in
      * currently in design time mode.
-     * @return <tt>true</tt> if in design time mode,
-     * <tt>false</tt> if not
+     * @return {@code true} if in design time mode,
+     * {@code false} if not
      */
     public synchronized boolean isDesignTime() { return designTime; }
 
     /**
      * Sets the locale of this BeanContext.
      * @param newLocale the new locale. This method call will have
-     *        no effect if newLocale is <CODE>null</CODE>.
+     *        no effect if newLocale is {@code null}.
      * @throws PropertyVetoException if the new value is rejected
      */
     public synchronized void setLocale(Locale newLocale) throws PropertyVetoException {
@@ -738,9 +738,9 @@
     }
 
     /**
-     * Gets the locale for this <tt>BeanContext</tt>.
+     * Gets the locale for this {@code BeanContext}.
      *
-     * @return the current Locale of the <tt>BeanContext</tt>
+     * @return the current Locale of the {@code BeanContext}
      */
     public synchronized Locale getLocale() { return locale; }
 
@@ -754,7 +754,7 @@
      * to determine if they are either Containers, Components, or if they implement
      * Visibility and return needsGui() == true.
      * </p>
-     * @return <tt>true</tt> if the implementor needs a GUI
+     * @return {@code true} if the implementor needs a GUI
      */
     public synchronized boolean needsGui() {
         BeanContext bc = getBeanContextPeer();
@@ -823,7 +823,7 @@
     }
 
     /**
-     * Used to determine if the <tt>BeanContext</tt>
+     * Used to determine if the {@code BeanContext}
      * child is avoiding using its GUI.
      * @return is this instance avoiding using its GUI?
      * @see Visibility
@@ -833,16 +833,16 @@
     }
 
     /**
-     * Is this <tt>BeanContext</tt> in the
+     * Is this {@code BeanContext} in the
      * process of being serialized?
-     * @return if this <tt>BeanContext</tt> is
+     * @return if this {@code BeanContext} is
      * currently being serialized
      */
     public boolean isSerializing() { return serializing; }
 
     /**
      * Returns an iterator of all children
-     * of this <tt>BeanContext</tt>.
+     * of this {@code BeanContext}.
      * @return an iterator for all the current BCSChild values
      */
     protected Iterator<BCSChild> bcsChildren() { synchronized(children) { return children.values().iterator();  } }
@@ -895,9 +895,9 @@
 
     /**
      * Used by writeObject to serialize a Collection.
-     * @param oos the <tt>ObjectOutputStream</tt>
+     * @param oos the {@code ObjectOutputStream}
      * to use during serialization
-     * @param coll the <tt>Collection</tt> to serialize
+     * @param coll the {@code Collection} to serialize
      * @throws IOException if serialization failed
      */
     protected final void serialize(ObjectOutputStream oos, Collection<?> coll) throws IOException {
@@ -943,8 +943,8 @@
 
     /**
      * Used to serialize all children of
-     * this <tt>BeanContext</tt>.
-     * @param oos the <tt>ObjectOutputStream</tt>
+     * this {@code BeanContext}.
+     * @param oos the {@code ObjectOutputStream}
      * to use during serialization
      * @throws IOException if serialization failed
      */
@@ -1375,7 +1375,7 @@
 
 
     /**
-     * all accesses to the <code> protected HashMap children </code> field
+     * all accesses to the {@code protected HashMap children} field
      * shall be synchronized on that object.
      */
     protected transient HashMap<Object, BCSChild>         children;
@@ -1383,7 +1383,7 @@
     private             int             serializable  = 0; // children serializable
 
     /**
-     * all accesses to the <code> protected ArrayList bcmListeners </code> field
+     * all accesses to the {@code protected ArrayList bcmListeners} field
      * shall be synchronized on that object.
      */
     protected transient ArrayList<BeanContextMembershipListener> bcmListeners;
@@ -1396,14 +1396,14 @@
     protected           Locale          locale;
 
     /**
-     * A <tt>boolean</tt> indicating if this
+     * A {@code boolean} indicating if this
      * instance may now render a GUI.
      */
     protected           boolean         okToUseGui;
 
 
     /**
-     * A <tt>boolean</tt> indicating whether or not
+     * A {@code boolean} indicating whether or not
      * this object is currently in design time mode.
      */
     protected           boolean         designTime;
diff --git a/jdk/src/java.desktop/share/classes/javax/accessibility/package.html b/jdk/src/java.desktop/share/classes/javax/accessibility/package.html
index bec59cf..4d1037a 100644
--- a/jdk/src/java.desktop/share/classes/javax/accessibility/package.html
+++ b/jdk/src/java.desktop/share/classes/javax/accessibility/package.html
@@ -43,7 +43,7 @@
 <A NAME="Accessible"></A><A HREF="Accessible.html">Interface Accessible</A></H3>
 <A HREF="Accessible.html">Interface Accessible</A> is the main interface
 of the Java Accessibility API. All components that support the Java Accessibility
-API must implement this interface. It contains a single method, <TT>getAccessibleContext</TT>,
+API must implement this interface. It contains a single method, <code>getAccessibleContext</code>,
 that returns an instance of the class <A HREF="#AccessibleContext">AccessibleContext</A>.
 Sun thinks that implementing this interface is the absolute minimum requirement
 of every object that is part of the user interface of a Java application,
@@ -53,7 +53,7 @@
 AccessibleContext</A></H3>
 <A HREF="AccessibleContext.html">AccessibleContext</A> represents the minimum
 information all accessible objects return and is obtained by calling the
-<TT>getAccessibleContext</TT> method on an object that implements the <A HREF="#Accessible">Accessible</A>
+<code>getAccessibleContext</code> method on an object that implements the <A HREF="#Accessible">Accessible</A>
 interface. This information includes the accessible name, description,
 <A HREF="#AccessibleRole">role</A>, and <A HREF="#AccessibleState">state</A>
 of the object, as well as information about the parent and children of
@@ -69,7 +69,7 @@
 perform one or more actions. This interface provides the standard mechanism
 for an assistive technology to determine what those actions are and tell
 the object to perform those actions. Any object that can be manipulated
-should return an object that implements this interface when the <TT>getAccessibleAction</TT>
+should return an object that implements this interface when the <code>getAccessibleAction</code>
 method is called on an AccessibleContext.</LI>
 
 <LI>
@@ -77,7 +77,7 @@
 has a graphical representation. This interface provides the standard mechanism
 for an assistive technology to determine and set the graphical representation
 of the object. Any object that is rendered on the screen should return
-an object that implements this interface when the <TT>getAccessibleComponent</TT>
+an object that implements this interface when the <code>getAccessibleComponent</code>
 method is called on an AccessibleContext.</LI>
 
 <LI>
@@ -86,7 +86,7 @@
 mechanism for an assistive technology to determine the currently selected
 children as well as modify the selection set. Any object that has children
 that can be selected should return an object that implements this interface
-when the <TT>getAccessibleSelection</TT> method is called on an AccessibleContext.</LI>
+when the <code>getAccessibleSelection</code> method is called on an AccessibleContext.</LI>
 
 <LI>
 <B><A HREF="#AccessibleText">AccessibleText</A></B> - the object presents
@@ -94,7 +94,7 @@
 standard mechanism for an assistive technology to access that text via
 its content, attributes, and spatial location. Any object that contains
 editable text should return an object that implements this interface when
-the <TT>getAccessibleText</TT> method is called on an AccessibleContext.</LI>
+the <code>getAccessibleText</code> method is called on an AccessibleContext.</LI>
 
 <LI>
 <B><A HREF="#AccessibleHypertext">AccessibleHypertext</A></B> - the object
@@ -102,25 +102,25 @@
 the standard mechanism for an assistive technology to access that hypertext
 via its content, attributes, and spatial location. Any object that contains
 hypertext should return an object that implements this interface when the
-<TT>getAccessibleText</TT> method is called on an AccessibleContext.</LI>
+<code>getAccessibleText</code> method is called on an AccessibleContext.</LI>
 
 <LI>
 <B><A HREF="#AccessibleValue">AccessibleValue</A></B> - the object supports
 a numerical value. This interface provides the standard mechanism for an
 assistive technology to determine and set the current value of the object,
 as well as the minimum and maximum values. Any object that supports a numerical
-value should return an object that implements this interface when the <TT>getAccessibleValue</TT>
+value should return an object that implements this interface when the <code>getAccessibleValue</code>
 method is called on an AccessibleContext.</LI>
 </UL>
 
 <H3>
 <A NAME="AccessibleRole"></A><A HREF="AccessibleRole.html">Class AccessibleRole</A></H3>
 This class encapsulates the Accessible object's role in the user interface
-and is obtained by calling the <TT>getAccessibleRole</TT> method on an
+and is obtained by calling the <code>getAccessibleRole</code> method on an
 <A HREF="#AccessibleContext">AccessibleContext</A>. Accessible roles include
 "Check box", "Menu Item", "Panel", etc. These roles are identified by the
-constants in this class such as <TT>AccessibleRole.CHECK_BOX, AccessibleRole.MENU_ITEM,</TT>
-and <TT>AccessibleRole.PANEL</TT>. The constants in this class present
+constants in this class such as <code>AccessibleRole.CHECK_BOX, AccessibleRole.MENU_ITEM,</code>
+and <code>AccessibleRole.PANEL</code>. The constants in this class present
 a strongly typed enumeration of common object roles. A public constructor
 for this class has been purposely omitted and applications should use one
 of the constants from this class. Although this class pre-defines a large
@@ -131,10 +131,10 @@
 <A NAME="AccessibleState"></A><A HREF="AccessibleState.html">Class AccessibleState</A></H3>
 This class encapsulates a particular state of the Accessible object. Accessible
 states include things like "Armed", "Busy", "Checked", "Focused", etc.
-These roles are identified by the constants in this class such as <TT>AccessibleState.ARMED,
-AccessibleState.BUSY, AccessibleState.CHECKED,</TT> and <TT>AccessibleState.FOCUSED</TT>.
+These roles are identified by the constants in this class such as <code>AccessibleState.ARMED,
+AccessibleState.BUSY, AccessibleState.CHECKED,</code> and <code>AccessibleState.FOCUSED</code>.
 The sum of all the states of an Accessible object is called the <A HREF="#AccessibleStateSet">AccessibleStateSet</A>,
-and can be obtained by calling the <TT>getAccessibleStateSet</TT> method
+and can be obtained by calling the <code>getAccessibleStateSet</code> method
 on an <A HREF="#AccessibleContext">AccessibleContext</A>.
 
 <P>The constants in this class present a strongly typed enumeration of
@@ -148,7 +148,7 @@
 <A NAME="AccessibleStateSet"></A><A HREF="AccessibleStateSet.html">Class
 AccessibleStateSet</A></H3>
 This class encapsulates a collection of states of the Accessible object
-and is obtained by calling the <TT>getAccessibleStateSet</TT> method on
+and is obtained by calling the <code>getAccessibleStateSet</code> method on
 an <A HREF="#AccessibleContext">AccessibleContext</A>. Since an object
 might have multiple states (e.g. it might be both "Checked" and "Focused"),
 this class is needed to encapsulate a collection of these states. Methods
@@ -173,7 +173,7 @@
 
 <P>Applications can determine if an object supports the AccessibleAction
 interface by first obtaining its <A HREF="#AccessibleContext">AccessibleContext</A>
-(see <A HREF="#Accessible">Accessible</A>) and then calling the <TT>getAccessibleAction</TT>
+(see <A HREF="#Accessible">Accessible</A>) and then calling the <code>getAccessibleAction</code>
 method of <A HREF="#AccessibleContext">AccessibleContext</A>. If the return
 value is not null, the object supports this interface.
 <H3>
@@ -186,7 +186,7 @@
 
 <P>Applications can determine if an object supports the AccessibleComponent
 interface by first obtaining its <A HREF="#AccessibleContext">AccessibleContext</A>
-(see <A HREF="#Accessible">Accessible</A>) and then calling the <TT>getAccessibleComponent</TT>
+(see <A HREF="#Accessible">Accessible</A>) and then calling the <code>getAccessibleComponent</code>
 method of <A HREF="#AccessibleContext">AccessibleContext</A>. If the return
 value is not null, the object supports this interface.
 <H3>
@@ -200,7 +200,7 @@
 
 <P>Applications can determine if an object supports the AccessibleSelection
 interface by first obtaining its <A HREF="#AccessibleContext">AccessibleContext</A>
-(see <A HREF="#Accessible">Accessible</A>) and then calling the <TT>getAccessibleSelection</TT>
+(see <A HREF="#Accessible">Accessible</A>) and then calling the <code>getAccessibleSelection</code>
 method of <A HREF="#AccessibleContext">AccessibleContext</A>. If the return
 value is not null, the object supports this interface.
 <H3>
@@ -222,7 +222,7 @@
 
 <P>Applications can determine if an object supports the AccessibleText
 interface by first obtaining its <A HREF="#AccessibleContext">AccessibleContext</A>
-(see <A HREF="#Accessible">Accessible</A>) and then calling the <TT>getAccessibleText</TT>
+(see <A HREF="#Accessible">Accessible</A>) and then calling the <code>getAccessibleText</code>
 method of <A HREF="#AccessibleContext">AccessibleContext</A>. If the return
 value is not null, the object supports this interface.
 <H3><A NAME="AccessibleHypertext"></A>
@@ -256,7 +256,7 @@
 
 <P>Applications can determine if an object supports the AccessibleValue
 interface by first obtaining its <A HREF="#AccessibleContext">AccessibleContext</A>
-(see <A HREF="#Accessible">Accessible</A>) and then calling the <TT>getAccessibleValue</TT>
+(see <A HREF="#Accessible">Accessible</A>) and then calling the <code>getAccessibleValue</code>
 method of <A HREF="#AccessibleContext">AccessibleContext</A>. If the return
 value is not null, the object supports this interface.
 
diff --git a/jdk/src/java.desktop/share/classes/javax/imageio/spi/IIOServiceProvider.java b/jdk/src/java.desktop/share/classes/javax/imageio/spi/IIOServiceProvider.java
index 240716a..e76202b 100644
--- a/jdk/src/java.desktop/share/classes/javax/imageio/spi/IIOServiceProvider.java
+++ b/jdk/src/java.desktop/share/classes/javax/imageio/spi/IIOServiceProvider.java
@@ -40,7 +40,7 @@
  * @see javax.imageio.spi.ImageWriterSpi
  * @see javax.imageio.spi.ImageTranscoderSpi
  * @see javax.imageio.spi.ImageInputStreamSpi
- *
+ * @see javax.imageio.spi.ImageOutputStreamSpi
  */
 public abstract class IIOServiceProvider implements RegisterableService {
 
diff --git a/jdk/src/java.desktop/share/classes/javax/imageio/spi/ServiceRegistry.java b/jdk/src/java.desktop/share/classes/javax/imageio/spi/ServiceRegistry.java
index 947fb0a..026ae68 100644
--- a/jdk/src/java.desktop/share/classes/javax/imageio/spi/ServiceRegistry.java
+++ b/jdk/src/java.desktop/share/classes/javax/imageio/spi/ServiceRegistry.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2015, Oracle and/or its affiliates. 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
@@ -47,18 +47,33 @@
  * <p> Service providers are stored in one or more <i>categories</i>,
  * each of which is defined by a class of interface (described by a
  * <code>Class</code> object) that all of its members must implement.
- * The set of categories may be changed dynamically.
+ *
+ * <p>The set of categories supported is limited
+ * to the following standard Image I/O service types:
+ *
+ * <ul>
+ * <li>{@link ImageInputStreamSpi}
+ * <li>{@link ImageOutputStreamSpi}
+ * <li>{@link ImageReaderSpi}
+ * <li>{@link ImageTranscoderSpi}
+ * <li>{@link ImageWriterSpi}
+ * </ul>
+ *
+ * <p>An attempt to load a provider that is not a subtype of one of the
+ * above types will result in {@code IllegalArgumentException}. For
+ * a general mechanism to load service providers, see
+ * {@link java.util.ServiceLoader ServiceLoader}.
  *
  * <p> Only a single instance of a given leaf class (that is, the
  * actual class returned by <code>getClass()</code>, as opposed to any
  * inherited classes or interfaces) may be registered.  That is,
  * suppose that the
- * <code>com.mycompany.mypkg.GreenServiceProvider</code> class
- * implements the <code>com.mycompany.mypkg.MyService</code>
- * interface.  If a <code>GreenServiceProvider</code> instance is
+ * <code>com.mycompany.mypkg.GreenImageReaderProvider</code> class
+ * is a subclass of <code>javax.imageio.spi.ImageReaderSpi</code>.
+ * If a <code>GreenImageReaderProvider</code> instance is
  * registered, it will be stored in the category defined by the
- * <code>MyService</code> class.  If a new instance of
- * <code>GreenServiceProvider</code> is registered, it will replace
+ * <code>ImageReaderSpi</code> class.  If a new instance of
+ * <code>GreenImageReaderProvider</code> is registered, it will replace
  * the previous instance.  In practice, service provider objects are
  * usually singletons so this behavior is appropriate.
  *
@@ -68,15 +83,15 @@
  * for each service provider interface that has one or more
  * implementation classes present in the JAR file.  For example, if
  * the JAR file contained a class named
- * <code>com.mycompany.mypkg.MyServiceImpl</code> which implements the
- * <code>javax.someapi.SomeService</code> interface, the JAR file
+ * <code>com.mycompany.mypkg.GreenImageReaderProvider</code> which implements the
+ * <code>javax.imageio.spi.ImageReaderSpi</code> interface, the JAR file
  * would contain a file named: <pre>
- * META-INF/services/javax.someapi.SomeService </pre>
+ * META-INF/services/javax.imageio.spi.ImageReaderSpi</pre>
  *
  * containing the line:
  *
  * <pre>
- * com.mycompany.mypkg.MyService
+ * com.mycompany.mypkg.GreenImageReaderProvider
  * </pre>
  *
  * <p> The service provider classes should be to be lightweight and
@@ -94,7 +109,7 @@
  * JAR File Specification</a>.
  *
  * @see RegisterableService
- *
+ * @see java.util.ServiceLoader
  */
 public class ServiceRegistry {
 
@@ -104,13 +119,15 @@
     /**
      * Constructs a <code>ServiceRegistry</code> instance with a
      * set of categories taken from the <code>categories</code>
-     * argument.
+     * argument. The categories must all be members of the set
+     * of service types listed in the class specification.
      *
      * @param categories an <code>Iterator</code> containing
      * <code>Class</code> objects to be used to define categories.
      *
      * @exception IllegalArgumentException if
-     * <code>categories</code> is <code>null</code>.
+     * <code>categories</code> is <code>null</code>, or if
+     * one of the categories is not an allowed service type.
      */
     public ServiceRegistry(Iterator<Class<?>> categories) {
         if (categories == null) {
@@ -118,6 +135,7 @@
         }
         while (categories.hasNext()) {
             Class<?> category = categories.next();
+            checkClassAllowed(category);
             SubRegistry reg = new SubRegistry(this, category);
             categoryMap.put(category, reg);
         }
@@ -127,6 +145,10 @@
      * Searches for implementations of a particular service class
      * using the given class loader.
      *
+     * <p>The service class must be one of the service types listed
+     * in the class specification. If it is not, {@code IllegalArgumentException}
+     * will be thrown.
+     *
      * <p> This method transforms the name of the given service class
      * into a provider-configuration filename as described in the
      * class comment and then uses the <code>getResources</code>
@@ -157,7 +179,8 @@
      * cannot be found and instantiated.
      *
      * @exception IllegalArgumentException if
-     * <code>providerClass</code> is <code>null</code>.
+     * <code>providerClass</code> is <code>null</code>, or if it is
+     * not one of the allowed service types.
      */
     public static <T> Iterator<T> lookupProviders(Class<T> providerClass,
                                                   ClassLoader loader)
@@ -165,6 +188,7 @@
         if (providerClass == null) {
             throw new IllegalArgumentException("providerClass == null!");
         }
+        checkClassAllowed(providerClass);
         return ServiceLoader.load(providerClass, loader).iterator();
     }
 
@@ -178,6 +202,10 @@
      *   return Service.providers(service, cl);
      * </pre>
      *
+     * <p>The service class must be one of the service types listed
+     * in the class specification. If it is not, {@code IllegalArgumentException}
+     * will be thrown.
+     *
      * @param providerClass a <code>Class</code>object indicating the
      * class or interface of the service providers being detected.
      *
@@ -190,12 +218,14 @@
      * cannot be found and instantiated.
      *
      * @exception IllegalArgumentException if
-     * <code>providerClass</code> is <code>null</code>.
+     * <code>providerClass</code> is <code>null</code>, or if it is
+     * not one of the allowed service types.
      */
     public static <T> Iterator<T> lookupProviders(Class<T> providerClass) {
         if (providerClass == null) {
             throw new IllegalArgumentException("providerClass == null!");
         }
+        checkClassAllowed(providerClass);
         return ServiceLoader.load(providerClass).iterator();
     }
 
@@ -681,6 +711,28 @@
         deregisterAll();
         super.finalize();
     }
+
+    /**
+     * Checks whether the provided class is one of the allowed
+     * ImageIO service provider classes. If it is, returns normally.
+     * If it is not, throws IllegalArgumentException.
+     *
+     * @param clazz
+     * @throws IllegalArgumentException if clazz is null or is not one of the allowed set
+     */
+    private static void checkClassAllowed(Class<?> clazz) {
+        if (clazz == null) {
+            throw new IllegalArgumentException("class must not be null");
+        }
+
+        if (   clazz != ImageInputStreamSpi.class
+            && clazz != ImageOutputStreamSpi.class
+            && clazz != ImageReaderSpi.class
+            && clazz != ImageTranscoderSpi.class
+            && clazz != ImageWriterSpi.class) {
+            throw new IllegalArgumentException(clazz.getName() + " is not an ImageIO SPI class");
+        }
+    }
 }
 
 
diff --git a/jdk/src/java.desktop/share/classes/javax/imageio/spi/package.html b/jdk/src/java.desktop/share/classes/javax/imageio/spi/package.html
index 20170bd..404e0a6 100644
--- a/jdk/src/java.desktop/share/classes/javax/imageio/spi/package.html
+++ b/jdk/src/java.desktop/share/classes/javax/imageio/spi/package.html
@@ -39,8 +39,8 @@
 
 The <code>javax.imageio.spi</code> package contains service
 provider interfaces for reading, writing, and transcoding images, and
-obtaining input and output streams, as well as a run-time registry
-that discovers installed service provider instances and allows new
+obtaining image input and output streams, as well as a run-time registry
+that discovers installed instances of Image I/O service providers and allows new
 instances to be registered dynamically.
 
 @since 1.4
diff --git a/jdk/src/java.desktop/share/classes/javax/print/attribute/AttributeSet.java b/jdk/src/java.desktop/share/classes/javax/print/attribute/AttributeSet.java
index 350753a..f2fe1b3 100644
--- a/jdk/src/java.desktop/share/classes/javax/print/attribute/AttributeSet.java
+++ b/jdk/src/java.desktop/share/classes/javax/print/attribute/AttributeSet.java
@@ -111,7 +111,7 @@
 
     /**
      * Returns the attribute value which this attribute set contains in the
-     * given attribute category. Returns <tt>null</tt> if this attribute set
+     * given attribute category. Returns {@code null} if this attribute set
      * does not contain any attribute value in the given attribute category.
      *
      * @param  category  Attribute category whose associated attribute value
@@ -121,14 +121,14 @@
      *                   Attribute}.
      *
      * @return  The attribute value in the given attribute category contained
-     *          in this attribute set, or <tt>null</tt> if this attribute set
+     *          in this attribute set, or {@code null} if this attribute set
      *          does not contain any attribute value in the given attribute
      *          category.
      *
      * @throws  NullPointerException
-     *     (unchecked exception) Thrown if the <CODE>category</CODE> is null.
+     *     (unchecked exception) Thrown if the {@code category} is null.
      * @throws  ClassCastException
-     *     (unchecked exception) Thrown if the <CODE>category</CODE> is not a
+     *     (unchecked exception) Thrown if the {@code category} is not a
      *     {@link java.lang.Class Class} that implements interface {@link
      *     Attribute Attribute}.
      */
@@ -141,74 +141,74 @@
      *
      * @param  attribute  Attribute value to be added to this attribute set.
      *
-     * @return  <tt>true</tt> if this attribute set changed as a result of the
+     * @return  {@code true} if this attribute set changed as a result of the
      *          call, i.e., the given attribute value was not already a member
      *          of this attribute set.
      *
      * @throws  NullPointerException
-     *     (unchecked exception) Thrown if the <CODE>attribute</CODE> is null.
+     *     (unchecked exception) Thrown if the {@code attribute} is null.
      * @throws  UnmodifiableSetException
      *     (unchecked exception) Thrown if this attribute set does not support
-     *     the <CODE>add()</CODE> operation.
+     *     the {@code add()} operation.
      */
     public boolean add(Attribute attribute);
 
 
     /**
      * Removes any attribute for this category from this attribute set if
-     * present. If <CODE>category</CODE> is null, then
-     * <CODE>remove()</CODE> does nothing and returns <tt>false</tt>.
+     * present. If {@code category} is null, then
+     * {@code remove()} does nothing and returns {@code false}.
      *
      * @param  category Attribute category to be removed from this
      *                  attribute set.
      *
-     * @return  <tt>true</tt> if this attribute set changed as a result of the
+     * @return  {@code true} if this attribute set changed as a result of the
      *         call, i.e., the given attribute value had been a member of this
      *          attribute set.
      *
      * @throws  UnmodifiableSetException
      *     (unchecked exception) Thrown if this attribute set does not support
-     *     the <CODE>remove()</CODE> operation.
+     *     the {@code remove()} operation.
      */
     public boolean remove(Class<?> category);
 
     /**
      * Removes the specified attribute from this attribute set if
-     * present. If <CODE>attribute</CODE> is null, then
-     * <CODE>remove()</CODE> does nothing and returns <tt>false</tt>.
+     * present. If {@code attribute} is null, then
+     * {@code remove()} does nothing and returns {@code false}.
      *
      * @param  attribute Attribute value to be removed from this attribute set.
      *
-     * @return  <tt>true</tt> if this attribute set changed as a result of the
+     * @return  {@code true} if this attribute set changed as a result of the
      *         call, i.e., the given attribute value had been a member of this
      *          attribute set.
      *
      * @throws  UnmodifiableSetException
      *     (unchecked exception) Thrown if this attribute set does not support
-     *     the <CODE>remove()</CODE> operation.
+     *     the {@code remove()} operation.
      */
     public boolean remove(Attribute attribute);
 
     /**
-     * Returns <tt>true</tt> if this attribute set contains an
+     * Returns {@code true} if this attribute set contains an
      * attribute for the specified category.
      *
      * @param  category whose presence in this attribute set is
      *            to be tested.
      *
-     * @return  <tt>true</tt> if this attribute set contains an attribute
+     * @return  {@code true} if this attribute set contains an attribute
      *         value for the specified category.
      */
     public boolean containsKey(Class<?> category);
 
     /**
-     * Returns <tt>true</tt> if this attribute set contains the given
+     * Returns {@code true} if this attribute set contains the given
      * attribute value.
      *
      * @param  attribute  Attribute value whose presence in this
      * attribute set is to be tested.
      *
-     * @return  <tt>true</tt> if this attribute set contains the given
+     * @return  {@code true} if this attribute set contains the given
      *      attribute  value.
      */
     public boolean containsValue(Attribute attribute);
@@ -219,11 +219,11 @@
      * {@link #add(Attribute) add(Attribute)}
      * operation had been applied to this attribute set successively with each
      * element from the specified set.
-     * The behavior of the <CODE>addAll(AttributeSet)</CODE>
+     * The behavior of the {@code addAll(AttributeSet)}
      * operation is unspecified if the specified set is modified while
      * the operation is in progress.
      * <P>
-     * If the <CODE>addAll(AttributeSet)</CODE> operation throws an exception,
+     * If the {@code addAll(AttributeSet)} operation throws an exception,
      * the effect on this attribute set's state is implementation dependent;
      * elements from the specified set before the point of the exception may
      * or may not have been added to this attribute set.
@@ -231,12 +231,12 @@
      * @param  attributes  whose elements are to be added to this attribute
      *            set.
      *
-     * @return  <tt>true</tt> if this attribute set changed as a result of the
+     * @return  {@code true} if this attribute set changed as a result of the
      *          call.
      *
      * @throws  UnmodifiableSetException
      *     (Unchecked exception) Thrown if this attribute set does not support
-     *     the <tt>addAll(AttributeSet)</tt> method.
+     *     the {@code addAll(AttributeSet)} method.
      * @throws  NullPointerException
      *     (Unchecked exception) Thrown if some element in the specified
      *     set is null.
@@ -247,8 +247,8 @@
 
     /**
      * Returns the number of attributes in this attribute set. If this
-     * attribute set contains more than <tt>Integer.MAX_VALUE</tt> elements,
-     * returns  <tt>Integer.MAX_VALUE</tt>.
+     * attribute set contains more than {@code Integer.MAX_VALUE} elements,
+     * returns  {@code Integer.MAX_VALUE}.
      *
      * @return  The number of attributes in this attribute set.
      */
@@ -267,7 +267,7 @@
      *
      * @throws  UnmodifiableSetException
      *   (unchecked exception) Thrown if this attribute set does not support
-     *     the <CODE>clear()</CODE> operation.
+     *     the {@code clear()} operation.
      */
     public void clear();
 
@@ -280,15 +280,15 @@
 
     /**
      * Compares the specified object with this attribute set for equality.
-     * Returns <tt>true</tt> if the given object is also an attribute set and
+     * Returns {@code true} if the given object is also an attribute set and
      * the two attribute sets contain the same attribute category-attribute
      * value mappings. This ensures that the
-     * <tt>equals()</tt> method works properly across different
+     * {@code equals()} method works properly across different
      * implementations of the AttributeSet interface.
      *
      * @param  object to be compared for equality with this attribute set.
      *
-     * @return  <tt>true</tt> if the specified object is equal to this
+     * @return  {@code true} if the specified object is equal to this
      *       attribute   set.
      */
     public boolean equals(Object object);
@@ -297,9 +297,9 @@
      * Returns the hash code value for this attribute set. The hash code of an
      * attribute set is defined to be the sum of the hash codes of each entry
      * in the AttributeSet.
-     * This ensures that <tt>t1.equals(t2)</tt> implies that
-     * <tt>t1.hashCode()==t2.hashCode()</tt> for any two attribute sets
-     * <tt>t1</tt> and <tt>t2</tt>, as required by the general contract of
+     * This ensures that {@code t1.equals(t2)} implies that
+     * {@code t1.hashCode()==t2.hashCode()} for any two attribute sets
+     * {@code t1} and {@code t2}, as required by the general contract of
      * {@link java.lang.Object#hashCode() Object.hashCode()}.
      *
      * @return  The hash code value for this attribute set.
diff --git a/jdk/src/java.desktop/share/classes/javax/print/attribute/DocAttributeSet.java b/jdk/src/java.desktop/share/classes/javax/print/attribute/DocAttributeSet.java
index bacc107..bd8433d 100644
--- a/jdk/src/java.desktop/share/classes/javax/print/attribute/DocAttributeSet.java
+++ b/jdk/src/java.desktop/share/classes/javax/print/attribute/DocAttributeSet.java
@@ -54,19 +54,19 @@
      *
      * @param  attribute  Attribute value to be added to this attribute set.
      *
-     * @return  <tt>true</tt> if this attribute set changed as a result of
+     * @return  {@code true} if this attribute set changed as a result of
      *          the call, i.e., the given attribute value was not already a
      *          member of this attribute set.
      *
      * @throws  UnmodifiableSetException
      *     (unchecked exception) Thrown if this attribute set does not
-     *     support the <CODE>add()</CODE> operation.
+     *     support the {@code add()} operation.
      * @throws  ClassCastException
-     *     (unchecked exception) Thrown if the <CODE>attribute</CODE> is
+     *     (unchecked exception) Thrown if the {@code attribute} is
      *     not an instance of interface
      *     {@link DocAttribute DocAttribute}.
      * @throws  NullPointerException
-     *    (unchecked exception) Thrown if the <CODE>attribute</CODE> is null.
+     *    (unchecked exception) Thrown if the {@code attribute} is null.
      */
     public boolean add(Attribute attribute);
 
@@ -77,13 +77,13 @@
      * operation had been applied to this attribute set successively with
      * each element from the specified set. If none of the categories in the
      * specified set  are the same as any categories in this attribute set,
-     * the <tt>addAll()</tt> operation effectively modifies this attribute
+     * the {@code addAll()} operation effectively modifies this attribute
      * set so that its value is the <i>union</i> of the two sets.
      * <P>
-     * The behavior of the <CODE>addAll()</CODE> operation is unspecified if
+     * The behavior of the {@code addAll()} operation is unspecified if
      * the specified set is modified while the operation is in progress.
      * <P>
-     * If the <CODE>addAll()</CODE> operation throws an exception, the effect
+     * If the {@code addAll()} operation throws an exception, the effect
      * on this attribute set's state is implementation dependent; elements
      * from the specified set before the point of the exception may or
      * may not have been added to this attribute set.
@@ -91,12 +91,12 @@
      * @param  attributes  whose elements are to be added to this attribute
      *            set.
      *
-     * @return  <tt>true</tt> if this attribute set changed as a result of
+     * @return  {@code true} if this attribute set changed as a result of
      *          the call.
      *
      * @throws  UnmodifiableSetException
      *     (Unchecked exception) Thrown if this attribute set does not
-     *     support the <tt>addAll()</tt> method.
+     *     support the {@code addAll()} method.
      * @throws  ClassCastException
      *     (Unchecked exception) Thrown if some element in the specified
      *     set is not an instance of interface {@link DocAttribute
diff --git a/jdk/src/java.desktop/share/classes/javax/print/attribute/HashAttributeSet.java b/jdk/src/java.desktop/share/classes/javax/print/attribute/HashAttributeSet.java
index e4928a8..69a28c75 100644
--- a/jdk/src/java.desktop/share/classes/javax/print/attribute/HashAttributeSet.java
+++ b/jdk/src/java.desktop/share/classes/javax/print/attribute/HashAttributeSet.java
@@ -32,7 +32,7 @@
 import java.util.HashMap;
 
 /**
- * Class HashAttributeSet provides an <code>AttributeSet</code>
+ * Class HashAttributeSet provides an {@code AttributeSet}
  * implementation with characteristics of a hash map.
  *
  * @author  Alan Kaminsky
@@ -104,7 +104,7 @@
      * @param  attribute  Attribute value to add to the set.
      *
      * @exception  NullPointerException
-     *     (unchecked exception) Thrown if <CODE>attribute</CODE> is null.
+     *     (unchecked exception) Thrown if {@code attribute} is null.
      */
     public HashAttributeSet(Attribute attribute) {
         this (attribute, Attribute.class);
@@ -114,7 +114,7 @@
      * Construct a new attribute set,
      * initially populated with the values from the
      * given array. The new attribute set is populated by
-     * adding the elements of <CODE>attributes</CODE> array to the set in
+     * adding the elements of {@code attributes} array to the set in
      * sequence, starting at index 0. Thus, later array elements may replace
      * earlier array elements if the array contains duplicate attribute
      * values or attribute categories.
@@ -124,7 +124,7 @@
      *
      * @exception  NullPointerException
      *     (unchecked exception) Thrown if any element of
-     *     <CODE>attributes</CODE> is null.
+     *     {@code attributes} is null.
      */
     public HashAttributeSet(Attribute[] attributes) {
         this (attributes, Attribute.class);
@@ -171,11 +171,11 @@
      *                    subinterface thereof.
      *
      * @exception  NullPointerException
-     *     (unchecked exception) Thrown if <CODE>attribute</CODE> is null.
+     *     (unchecked exception) Thrown if {@code attribute} is null.
      * @exception NullPointerException if interfaceName is null.
      * @exception  ClassCastException
-     *     (unchecked exception) Thrown if <CODE>attribute</CODE> is not an
-     *     instance of <CODE>interfaceName</CODE>.
+     *     (unchecked exception) Thrown if {@code attribute} is not an
+     *     instance of {@code interfaceName}.
      */
     protected HashAttributeSet(Attribute attribute, Class<?> interfaceName) {
         if (interfaceName == null) {
@@ -189,7 +189,7 @@
      * Construct a new attribute set, where the members of the attribute
      * set are restricted to the given interface.
      * The new attribute set is populated
-     * by adding the elements of <CODE>attributes</CODE> array to the set in
+     * by adding the elements of {@code attributes} array to the set in
      * sequence, starting at index 0. Thus, later array elements may replace
      * earlier array elements if the array contains duplicate attribute
      * values or attribute categories.
@@ -203,12 +203,12 @@
      *
      * @exception  NullPointerException
      *     (unchecked exception) Thrown if any element of
-     * <CODE>attributes</CODE> is null.
+     * {@code attributes} is null.
      * @exception NullPointerException if interfaceName is null.
      * @exception  ClassCastException
      *     (unchecked exception) Thrown if any element of
-     * <CODE>attributes</CODE> is not an instance of
-     * <CODE>interfaceName</CODE>.
+     * {@code attributes} is not an instance of
+     * {@code interfaceName}.
      */
     protected HashAttributeSet(Attribute[] attributes, Class<?> interfaceName) {
         if (interfaceName == null) {
@@ -235,8 +235,8 @@
      *
      * @exception  ClassCastException
      *     (unchecked exception) Thrown if any element of
-     * <CODE>attributes</CODE> is not an instance of
-     * <CODE>interfaceName</CODE>.
+     * {@code attributes} is not an instance of
+     * {@code interfaceName}.
      */
     protected HashAttributeSet(AttributeSet attributes, Class<?> interfaceName) {
       myInterface = interfaceName;
@@ -251,7 +251,7 @@
 
     /**
      * Returns the attribute value which this attribute set contains in the
-     * given attribute category. Returns <tt>null</tt> if this attribute set
+     * given attribute category. Returns {@code null} if this attribute set
      * does not contain any attribute value in the given attribute category.
      *
      * @param  category  Attribute category whose associated attribute value
@@ -261,14 +261,14 @@
      *                   Attribute}.
      *
      * @return  The attribute value in the given attribute category contained
-     *          in this attribute set, or <tt>null</tt> if this attribute set
+     *          in this attribute set, or {@code null} if this attribute set
      *          does not contain any attribute value in the given attribute
      *          category.
      *
      * @throws  NullPointerException
-     *     (unchecked exception) Thrown if the <CODE>category</CODE> is null.
+     *     (unchecked exception) Thrown if the {@code category} is null.
      * @throws  ClassCastException
-     *     (unchecked exception) Thrown if the <CODE>category</CODE> is not a
+     *     (unchecked exception) Thrown if the {@code category} is not a
      *     {@link java.lang.Class Class} that implements interface {@link
      *     Attribute Attribute}.
      */
@@ -285,15 +285,15 @@
      *
      * @param  attribute  Attribute value to be added to this attribute set.
      *
-     * @return  <tt>true</tt> if this attribute set changed as a result of the
+     * @return  {@code true} if this attribute set changed as a result of the
      *          call, i.e., the given attribute value was not already a
      *          member of this attribute set.
      *
      * @throws  NullPointerException
-     *    (unchecked exception) Thrown if the <CODE>attribute</CODE> is null.
+     *    (unchecked exception) Thrown if the {@code attribute} is null.
      * @throws  UnmodifiableSetException
      *    (unchecked exception) Thrown if this attribute set does not support
-     *     the <CODE>add()</CODE> operation.
+     *     the {@code add()} operation.
      */
     public boolean add(Attribute attribute) {
         Object oldAttribute =
@@ -305,19 +305,19 @@
 
     /**
      * Removes any attribute for this category from this attribute set if
-     * present. If <CODE>category</CODE> is null, then
-     * <CODE>remove()</CODE> does nothing and returns <tt>false</tt>.
+     * present. If {@code category} is null, then
+     * {@code remove()} does nothing and returns {@code false}.
      *
      * @param  category Attribute category to be removed from this
      *                  attribute set.
      *
-     * @return  <tt>true</tt> if this attribute set changed as a result of the
+     * @return  {@code true} if this attribute set changed as a result of the
      *         call, i.e., the given attribute category had been a member of
      *         this attribute set.
      *
      * @throws  UnmodifiableSetException
      *     (unchecked exception) Thrown if this attribute set does not
-     *     support the <CODE>remove()</CODE> operation.
+     *     support the {@code remove()} operation.
      */
     public boolean remove(Class<?> category) {
         return
@@ -329,18 +329,18 @@
 
     /**
      * Removes the specified attribute from this attribute set if
-     * present. If <CODE>attribute</CODE> is null, then
-     * <CODE>remove()</CODE> does nothing and returns <tt>false</tt>.
+     * present. If {@code attribute} is null, then
+     * {@code remove()} does nothing and returns {@code false}.
      *
      * @param attribute Attribute value to be removed from this attribute set.
      *
-     * @return  <tt>true</tt> if this attribute set changed as a result of the
+     * @return  {@code true} if this attribute set changed as a result of the
      *         call, i.e., the given attribute value had been a member of
      *         this attribute set.
      *
      * @throws  UnmodifiableSetException
      *     (unchecked exception) Thrown if this attribute set does not
-     *     support the <CODE>remove()</CODE> operation.
+     *     support the {@code remove()} operation.
      */
     public boolean remove(Attribute attribute) {
         return
@@ -349,13 +349,13 @@
     }
 
     /**
-     * Returns <tt>true</tt> if this attribute set contains an
+     * Returns {@code true} if this attribute set contains an
      * attribute for the specified category.
      *
      * @param  category whose presence in this attribute set is
      *            to be tested.
      *
-     * @return  <tt>true</tt> if this attribute set contains an attribute
+     * @return  {@code true} if this attribute set contains an attribute
      *         value for the specified category.
      */
     public boolean containsKey(Class<?> category) {
@@ -367,13 +367,13 @@
     }
 
     /**
-     * Returns <tt>true</tt> if this attribute set contains the given
+     * Returns {@code true} if this attribute set contains the given
      * attribute.
      *
      * @param  attribute  value whose presence in this attribute set is
      *            to be tested.
      *
-     * @return  <tt>true</tt> if this attribute set contains the given
+     * @return  {@code true} if this attribute set contains the given
      *      attribute    value.
      */
     public boolean containsValue(Attribute attribute) {
@@ -389,11 +389,11 @@
      * {@link #add(Attribute) add(Attribute)}
      * operation had been applied to this attribute set successively with
      * each element from the specified set.
-     * The behavior of the <CODE>addAll(AttributeSet)</CODE>
+     * The behavior of the {@code addAll(AttributeSet)}
      * operation is unspecified if the specified set is modified while
      * the operation is in progress.
      * <P>
-     * If the <CODE>addAll(AttributeSet)</CODE> operation throws an exception,
+     * If the {@code addAll(AttributeSet)} operation throws an exception,
      * the effect on this attribute set's state is implementation dependent;
      * elements from the specified set before the point of the exception may
      * or may not have been added to this attribute set.
@@ -401,12 +401,12 @@
      * @param  attributes  whose elements are to be added to this attribute
      *            set.
      *
-     * @return  <tt>true</tt> if this attribute set changed as a result of the
+     * @return  {@code true} if this attribute set changed as a result of the
      *          call.
      *
      * @throws  UnmodifiableSetException
      *    (Unchecked exception) Thrown if this attribute set does not
-     *     support the <tt>addAll(AttributeSet)</tt> method.
+     *     support the {@code addAll(AttributeSet)} method.
      * @throws  NullPointerException
      *     (Unchecked exception) Thrown if some element in the specified
      *     set is null, or the set is null.
@@ -429,8 +429,8 @@
 
     /**
      * Returns the number of attributes in this attribute set. If this
-     * attribute set contains more than <tt>Integer.MAX_VALUE</tt> elements,
-     * returns  <tt>Integer.MAX_VALUE</tt>.
+     * attribute set contains more than {@code Integer.MAX_VALUE} elements,
+     * returns  {@code Integer.MAX_VALUE}.
      *
      * @return  The number of attributes in this attribute set.
      */
@@ -455,7 +455,7 @@
      *
      * @throws  UnmodifiableSetException
      *   (unchecked exception) Thrown if this attribute set does not support
-     *     the <CODE>clear()</CODE> operation.
+     *     the {@code clear()} operation.
      */
     public void clear() {
         attrMap.clear();
@@ -472,15 +472,15 @@
 
     /**
      * Compares the specified object with this attribute set for equality.
-     * Returns <tt>true</tt> if the given object is also an attribute set and
+     * Returns {@code true} if the given object is also an attribute set and
      * the two attribute sets contain the same attribute category-attribute
      * value mappings. This ensures that the
-     * <tt>equals()</tt> method works properly across different
+     * {@code equals()} method works properly across different
      * implementations of the AttributeSet interface.
      *
      * @param  object to be compared for equality with this attribute set.
      *
-     * @return  <tt>true</tt> if the specified object is equal to this
+     * @return  {@code true} if the specified object is equal to this
      *       attribute   set.
      */
 
@@ -507,9 +507,9 @@
      * Returns the hash code value for this attribute set.
      * The hash code of an attribute set is defined to be the sum
      * of the hash codes of each entry in the AttributeSet.
-     * This ensures that <tt>t1.equals(t2)</tt> implies that
-     * <tt>t1.hashCode()==t2.hashCode()</tt> for any two attribute sets
-     * <tt>t1</tt> and <tt>t2</tt>, as required by the general contract of
+     * This ensures that {@code t1.equals(t2)} implies that
+     * {@code t1.hashCode()==t2.hashCode()} for any two attribute sets
+     * {@code t1} and {@code t2}, as required by the general contract of
      * {@link java.lang.Object#hashCode() Object.hashCode()}.
      *
      * @return  The hash code value for this attribute set.
diff --git a/jdk/src/java.desktop/share/classes/javax/print/attribute/PrintJobAttributeSet.java b/jdk/src/java.desktop/share/classes/javax/print/attribute/PrintJobAttributeSet.java
index 4c920a1..2b5ef23 100644
--- a/jdk/src/java.desktop/share/classes/javax/print/attribute/PrintJobAttributeSet.java
+++ b/jdk/src/java.desktop/share/classes/javax/print/attribute/PrintJobAttributeSet.java
@@ -52,19 +52,19 @@
      *
      * @param  attribute  Attribute value to be added to this attribute set.
      *
-     * @return  <tt>true</tt> if this attribute set changed as a result of
+     * @return  {@code true} if this attribute set changed as a result of
      *          the call, i.e., the given attribute value was not already a
      *          member of this attribute set.
      *
      * @throws  UnmodifiableSetException
      *     (unchecked exception) Thrown if this attribute set does not
-     *     support the <CODE>add()</CODE> operation.
+     *     support the {@code add()} operation.
      * @throws  ClassCastException
-     *     (unchecked exception) Thrown if the <CODE>attribute</CODE> is
+     *     (unchecked exception) Thrown if the {@code attribute} is
      *     not an instance of interface
      *     {@link PrintJobAttribute PrintJobAttribute}.
      * @throws  NullPointerException
-     *    (unchecked exception) Thrown if the <CODE>attribute</CODE> is null.
+     *    (unchecked exception) Thrown if the {@code attribute} is null.
      */
     public boolean add(Attribute attribute);
 
@@ -75,13 +75,13 @@
      * operation had been applied to this attribute set successively with
      * each element from the specified set. If none of the categories in the
      * specified set  are the same as any categories in this attribute set,
-     * the <tt>addAll()</tt> operation effectively modifies this attribute
+     * the {@code addAll()} operation effectively modifies this attribute
      * set so that its value is the <i>union</i> of the two sets.
      * <P>
-     * The behavior of the <CODE>addAll()</CODE> operation is unspecified if
+     * The behavior of the {@code addAll()} operation is unspecified if
      * the specified set is modified while the operation is in progress.
      * <P>
-     * If the <CODE>addAll()</CODE> operation throws an exception, the effect
+     * If the {@code addAll()} operation throws an exception, the effect
      * on this attribute set's state is implementation dependent; elements
      * from the specified set before the point of the exception may or
      * may not have been added to this attribute set.
@@ -89,12 +89,12 @@
      * @param  attributes  whose elements are to be added to this attribute
      *            set.
      *
-     * @return  <tt>true</tt> if this attribute set changed as a result of
+     * @return  {@code true} if this attribute set changed as a result of
      *          the call.
      *
      * @throws  UnmodifiableSetException
      *     (Unchecked exception) Thrown if this attribute set does not
-     *     support the <tt>addAll()</tt> method.
+     *     support the {@code addAll()} method.
      * @throws  ClassCastException
      *     (Unchecked exception) Thrown if some element in the specified
      *     set is not an instance of interface {@link PrintJobAttribute
diff --git a/jdk/src/java.desktop/share/classes/javax/print/attribute/PrintRequestAttributeSet.java b/jdk/src/java.desktop/share/classes/javax/print/attribute/PrintRequestAttributeSet.java
index bde6c0c..af0acaa 100644
--- a/jdk/src/java.desktop/share/classes/javax/print/attribute/PrintRequestAttributeSet.java
+++ b/jdk/src/java.desktop/share/classes/javax/print/attribute/PrintRequestAttributeSet.java
@@ -53,19 +53,19 @@
      *
      * @param  attribute  Attribute value to be added to this attribute set.
      *
-     * @return  <tt>true</tt> if this attribute set changed as a result of
+     * @return  {@code true} if this attribute set changed as a result of
      *          the call, i.e., the given attribute value was not already a
      *          member of this attribute set.
      *
      * @throws  UnmodifiableSetException
      *     (unchecked exception) Thrown if this attribute set does not
-     *     support the <CODE>add()</CODE> operation.
+     *     support the {@code add()} operation.
      * @throws  ClassCastException
-     *     (unchecked exception) Thrown if the <CODE>attribute</CODE> is
+     *     (unchecked exception) Thrown if the {@code attribute} is
      *     not an instance of interface
      *     {@link PrintRequestAttribute PrintRequestAttribute}.
      * @throws  NullPointerException
-     *     (unchecked exception) Thrown if the <CODE>attribute</CODE> is null.
+     *     (unchecked exception) Thrown if the {@code attribute} is null.
      */
     public boolean add(Attribute attribute);
 
@@ -76,13 +76,13 @@
      * operation had been applied to this attribute set successively with
      * each element from the specified set. If none of the categories in the
      * specified set  are the same as any categories in this attribute set,
-     * the <tt>addAll()</tt> operation effectively modifies this attribute
+     * the {@code addAll()} operation effectively modifies this attribute
      * set so that its value is the <i>union</i> of the two sets.
      * <P>
-     * The behavior of the <CODE>addAll()</CODE> operation is unspecified if
+     * The behavior of the {@code addAll()} operation is unspecified if
      * the specified set is modified while the operation is in progress.
      * <P>
-     * If the <CODE>addAll()</CODE> operation throws an exception, the effect
+     * If the {@code addAll()} operation throws an exception, the effect
      * on this attribute set's state is implementation dependent; elements
      * from the specified set before the point of the exception may or
      * may not have been added to this attribute set.
@@ -90,12 +90,12 @@
      * @param  attributes  whose elements are to be added to this attribute
      *            set.
      *
-     * @return  <tt>true</tt> if this attribute set changed as a result of
+     * @return  {@code true} if this attribute set changed as a result of
      *          the call.
      *
      * @throws  UnmodifiableSetException
      *     (Unchecked exception) Thrown if this attribute set does not
-     *     support the <tt>addAll()</tt> method.
+     *     support the {@code addAll()} method.
      * @throws  ClassCastException
      *     (Unchecked exception) Thrown if some element in the specified
      *     set is not an instance of interface {@link PrintRequestAttribute
diff --git a/jdk/src/java.desktop/share/classes/javax/print/attribute/PrintServiceAttributeSet.java b/jdk/src/java.desktop/share/classes/javax/print/attribute/PrintServiceAttributeSet.java
index 3d3296e..59e9a32 100644
--- a/jdk/src/java.desktop/share/classes/javax/print/attribute/PrintServiceAttributeSet.java
+++ b/jdk/src/java.desktop/share/classes/javax/print/attribute/PrintServiceAttributeSet.java
@@ -57,19 +57,19 @@
      *
      * @param  attribute  Attribute value to be added to this attribute set.
      *
-     * @return  <tt>true</tt> if this attribute set changed as a result of
+     * @return  {@code true} if this attribute set changed as a result of
      *          the call, i.e., the given attribute value was not already a
      *          member of this attribute set.
      *
      * @throws  UnmodifiableSetException
      *     (unchecked exception) Thrown if this attribute set does not
-     *     support the <CODE>add()</CODE> operation.
+     *     support the {@code add()} operation.
      * @throws  ClassCastException
-     *     (unchecked exception) Thrown if the <CODE>attribute</CODE> is
+     *     (unchecked exception) Thrown if the {@code attribute} is
      *     not an instance of interface
      *     {@link PrintServiceAttribute PrintServiceAttribute}.
      * @throws  NullPointerException
-     *    (unchecked exception) Thrown if the <CODE>attribute</CODE> is null.
+     *    (unchecked exception) Thrown if the {@code attribute} is null.
      */
     public boolean add(Attribute attribute);
 
@@ -80,13 +80,13 @@
      * operation had been applied to this attribute set successively with
      * each element from the specified set. If none of the categories in the
      * specified set  are the same as any categories in this attribute set,
-     * the <tt>addAll()</tt> operation effectively modifies this attribute
+     * the {@code addAll()} operation effectively modifies this attribute
      * set so that its value is the <i>union</i> of the two sets.
      * <P>
-     * The behavior of the <CODE>addAll()</CODE> operation is unspecified if
+     * The behavior of the {@code addAll()} operation is unspecified if
      * the specified set is modified while the operation is in progress.
      * <P>
-     * If the <CODE>addAll()</CODE> operation throws an exception, the effect
+     * If the {@code addAll()} operation throws an exception, the effect
      * on this attribute set's state is implementation dependent; elements
      * from the specified set before the point of the exception may or
      * may not have been added to this attribute set.
@@ -94,12 +94,12 @@
      * @param  attributes  whose elements are to be added to this attribute
      *            set.
      *
-     * @return  <tt>true</tt> if this attribute set changed as a result of
+     * @return  {@code true} if this attribute set changed as a result of
      *          the call.
      *
      * @throws  UnmodifiableSetException
      *     (Unchecked exception) Thrown if this attribute set does not
-     *     support the <tt>addAll()</tt> method.
+     *     support the {@code addAll()} method.
      * @throws  ClassCastException
      *     (Unchecked exception) Thrown if some element in the specified
      *     set is not an instance of interface {@link PrintServiceAttribute
diff --git a/jdk/src/java.desktop/share/classes/javax/print/attribute/standard/JobStateReasons.java b/jdk/src/java.desktop/share/classes/javax/print/attribute/standard/JobStateReasons.java
index 20f1da3..0710de4 100644
--- a/jdk/src/java.desktop/share/classes/javax/print/attribute/standard/JobStateReasons.java
+++ b/jdk/src/java.desktop/share/classes/javax/print/attribute/standard/JobStateReasons.java
@@ -59,8 +59,8 @@
  * java.util.Collections}).
  * <P>
  * <B>IPP Compatibility:</B> The string value returned by each individual {@link
- * JobStateReason JobStateReason} object's <CODE>toString()</CODE> method gives
- * the IPP keyword value. The category name returned by <CODE>getName()</CODE>
+ * JobStateReason JobStateReason} object's {@code toString()} method gives
+ * the IPP keyword value. The category name returned by {@code getName()}
  * gives the IPP attribute name.
  *
  * @author  Alan Kaminsky
@@ -114,11 +114,11 @@
      * @param  collection  Collection to copy.
      *
      * @exception  NullPointerException
-     *     (unchecked exception) Thrown if <CODE>collection</CODE> is null or
-     *     if any element in <CODE>collection</CODE> is null.
+     *     (unchecked exception) Thrown if {@code collection} is null or
+     *     if any element in {@code collection} is null.
      * @throws  ClassCastException
      *     (unchecked exception) Thrown if any element in
-     *     <CODE>collection</CODE> is not an instance of class {@link
+     *     {@code collection} is not an instance of class {@link
      *     JobStateReason JobStateReason}.
      */
    public JobStateReasons(Collection<JobStateReason> collection) {
@@ -130,11 +130,11 @@
      * not already present. The element to be added must be an instance of class
      * {@link JobStateReason JobStateReason}. If this job state reasons
      * attribute already contains the specified element, the call leaves this
-     * job state reasons attribute unchanged and returns <tt>false</tt>.
+     * job state reasons attribute unchanged and returns {@code false}.
      *
      * @param  o  Element to be added to this job state reasons attribute.
      *
-     * @return  <tt>true</tt> if this job state reasons attribute did not
+     * @return  {@code true} if this job state reasons attribute did not
      *          already contain the specified element.
      *
      * @throws  NullPointerException
@@ -169,7 +169,7 @@
      * instance.
      * <P>
      * For class JobStateReasons, the category
-     * name is <CODE>"job-state-reasons"</CODE>.
+     * name is {@code "job-state-reasons"}.
      *
      * @return  Attribute category name.
      */
diff --git a/jdk/src/java.desktop/share/classes/javax/print/attribute/standard/PrinterStateReasons.java b/jdk/src/java.desktop/share/classes/javax/print/attribute/standard/PrinterStateReasons.java
index 73e5765..73248ad 100644
--- a/jdk/src/java.desktop/share/classes/javax/print/attribute/standard/PrinterStateReasons.java
+++ b/jdk/src/java.desktop/share/classes/javax/print/attribute/standard/PrinterStateReasons.java
@@ -72,10 +72,10 @@
  * <P>
  * <B>IPP Compatibility:</B> The string values returned by each individual
  * {@link PrinterStateReason PrinterStateReason} object's and the associated
- * {@link Severity Severity} object's <CODE>toString()</CODE> methods,
+ * {@link Severity Severity} object's {@code toString()} methods,
  * concatenated
- * together with a hyphen (<CODE>"-"</CODE>) in between, gives the IPP keyword
- * value. The category name returned by <CODE>getName()</CODE> gives the IPP
+ * together with a hyphen ({@code "-"}) in between, gives the IPP keyword
+ * value. The category name returned by {@code getName()} gives the IPP
  * attribute name.
  *
  * @author  Alan Kaminsky
@@ -133,12 +133,12 @@
      * @param  map  Map to copy.
      *
      * @exception  NullPointerException
-     *     (unchecked exception) Thrown if <CODE>map</CODE> is null or if any
-     *     key or value in <CODE>map</CODE> is null.
+     *     (unchecked exception) Thrown if {@code map} is null or if any
+     *     key or value in {@code map} is null.
      * @throws  ClassCastException
-     *     (unchecked exception) Thrown if any key in <CODE>map</CODE> is not
+     *     (unchecked exception) Thrown if any key in {@code map} is not
      *   an instance of class {@link PrinterStateReason PrinterStateReason} or
-     *     if any value in <CODE>map</CODE> is not an instance of class
+     *     if any value in {@code map} is not an instance of class
      *     {@link Severity Severity}.
      */
     public PrinterStateReasons(Map<PrinterStateReason,Severity> map) {
@@ -159,16 +159,16 @@
      *                      an instance of class {@link Severity Severity}.
      *
      * @return  Previous severity associated with the given printer state
-     *          reason, or <tt>null</tt> if the given printer state reason was
+     *          reason, or {@code null} if the given printer state reason was
      *          not present.
      *
      * @throws  NullPointerException
-     *     (unchecked exception) Thrown if <CODE>reason</CODE> is null or
-     *     <CODE>severity</CODE> is null.
+     *     (unchecked exception) Thrown if {@code reason} is null or
+     *     {@code severity} is null.
      * @throws  ClassCastException
-     *     (unchecked exception) Thrown if <CODE>reason</CODE> is not an
+     *     (unchecked exception) Thrown if {@code reason} is not an
      *   instance of class {@link PrinterStateReason PrinterStateReason} or if
-     *     <CODE>severity</CODE> is not an instance of class {@link Severity
+     *     {@code severity} is not an instance of class {@link Severity
      *     Severity}.
      * @since 1.5
      */
@@ -201,7 +201,7 @@
      * instance.
      * <P>
      * For class PrinterStateReasons, the
-     * category name is <CODE>"printer-state-reasons"</CODE>.
+     * category name is {@code "printer-state-reasons"}.
      *
      * @return  Attribute category name.
      */
@@ -228,7 +228,7 @@
      *          Severity} level.
      *
      * @exception  NullPointerException
-     *     (unchecked exception) Thrown if <CODE>severity</CODE> is null.
+     *     (unchecked exception) Thrown if {@code severity} is null.
      */
     public Set<PrinterStateReason> printerStateReasonSet(Severity severity) {
         if (severity == null) {
diff --git a/jdk/src/java.desktop/share/classes/javax/swing/BoxLayout.java b/jdk/src/java.desktop/share/classes/javax/swing/BoxLayout.java
index c3565fb..ceaa943 100644
--- a/jdk/src/java.desktop/share/classes/javax/swing/BoxLayout.java
+++ b/jdk/src/java.desktop/share/classes/javax/swing/BoxLayout.java
@@ -54,28 +54,28 @@
  * <p> The BoxLayout manager is constructed with an axis parameter that
  * specifies the type of layout that will be done. There are four choices:
  *
- * <blockquote><b><tt>X_AXIS</tt></b> - Components are laid out horizontally
+ * <blockquote><b>{@code X_AXIS}</b> - Components are laid out horizontally
  * from left to right.</blockquote>
  *
- * <blockquote><b><tt>Y_AXIS</tt></b> - Components are laid out vertically
+ * <blockquote><b>{@code Y_AXIS}</b> - Components are laid out vertically
  * from top to bottom.</blockquote>
  *
- * <blockquote><b><tt>LINE_AXIS</tt></b> - Components are laid out the way
+ * <blockquote><b>{@code LINE_AXIS}</b> - Components are laid out the way
  * words are laid out in a line, based on the container's
- * <tt>ComponentOrientation</tt> property. If the container's
- * <tt>ComponentOrientation</tt> is horizontal then components are laid out
+ * {@code ComponentOrientation} property. If the container's
+ * {@code ComponentOrientation} is horizontal then components are laid out
  * horizontally, otherwise they are laid out vertically.  For horizontal
- * orientations, if the container's <tt>ComponentOrientation</tt> is left to
+ * orientations, if the container's {@code ComponentOrientation} is left to
  * right then components are laid out left to right, otherwise they are laid
  * out right to left. For vertical orientations components are always laid out
  * from top to bottom.</blockquote>
  *
- * <blockquote><b><tt>PAGE_AXIS</tt></b> - Components are laid out the way
+ * <blockquote><b>{@code PAGE_AXIS}</b> - Components are laid out the way
  * text lines are laid out on a page, based on the container's
- * <tt>ComponentOrientation</tt> property. If the container's
- * <tt>ComponentOrientation</tt> is horizontal then components are laid out
+ * {@code ComponentOrientation} property. If the container's
+ * {@code ComponentOrientation} is horizontal then components are laid out
  * vertically, otherwise they are laid out horizontally.  For horizontal
- * orientations, if the container's <tt>ComponentOrientation</tt> is left to
+ * orientations, if the container's {@code ComponentOrientation} is left to
  * right then components are laid out left to right, otherwise they are laid
  * out right to left.&nbsp; For vertical orientations components are always
  * laid out from top to bottom.</blockquote>
@@ -102,10 +102,10 @@
  * BoxLayout attempts to make all components in the column
  * as wide as the widest component.
  * If that fails, it aligns them horizontally
- * according to their X alignments.  For <code>PAGE_AXIS</code> layout,
+ * according to their X alignments.  For {@code PAGE_AXIS} layout,
  * horizontal alignment is done based on the leading edge of the component.
  * In other words, an X alignment value of 0.0 means the left edge of a
- * component if the container's <code>ComponentOrientation</code> is left to
+ * component if the container's {@code ComponentOrientation} is left to
  * right and it means the right edge of the component otherwise.
  * <p>
  * Instead of using BoxLayout directly, many programs use the Box class.
@@ -125,7 +125,7 @@
  * appropriate for short term storage or RMI between applications running
  * the same version of Swing.  As of 1.4, support for long term storage
  * of all JavaBeans&trade;
- * has been added to the <code>java.beans</code> package.
+ * has been added to the {@code java.beans} package.
  * Please see {@link java.beans.XMLEncoder}.
  *
  * @see Box
@@ -152,14 +152,14 @@
     /**
      * Specifies that components should be laid out in the direction of
      * a line of text as determined by the target container's
-     * <code>ComponentOrientation</code> property.
+     * {@code ComponentOrientation} property.
      */
     public static final int LINE_AXIS = 2;
 
     /**
      * Specifies that components should be laid out in the direction that
      * lines flow across a page as determined by the target container's
-     * <code>ComponentOrientation</code> property.
+     * {@code ComponentOrientation} property.
      */
     public static final int PAGE_AXIS = 3;
 
@@ -169,12 +169,10 @@
      *
      * @param target  the container that needs to be laid out
      * @param axis  the axis to lay out components along. Can be one of:
-     *              <code>BoxLayout.X_AXIS</code>,
-     *              <code>BoxLayout.Y_AXIS</code>,
-     *              <code>BoxLayout.LINE_AXIS</code> or
-     *              <code>BoxLayout.PAGE_AXIS</code>
+     *              {@code BoxLayout.X_AXIS, BoxLayout.Y_AXIS,
+     *              BoxLayout.LINE_AXIS} or {@code BoxLayout.PAGE_AXIS}
      *
-     * @exception AWTError  if the value of <code>axis</code> is invalid
+     * @exception AWTError  if the value of {@code axis} is invalid
      */
     @ConstructorProperties({"target", "axis"})
     public BoxLayout(Container target, int axis) {
@@ -192,10 +190,8 @@
      *
      * @param target  the container that needs to be laid out
      * @param axis  the axis to lay out components along. Can be one of:
-     *              <code>BoxLayout.X_AXIS</code>,
-     *              <code>BoxLayout.Y_AXIS</code>,
-     *              <code>BoxLayout.LINE_AXIS</code> or
-     *              <code>BoxLayout.PAGE_AXIS</code>
+     *              {@code BoxLayout.X_AXIS, BoxLayout.Y_AXIS,
+     *              BoxLayout.LINE_AXIS} or {@code BoxLayout.PAGE_AXIS}
      *
      * @param dbg  the stream to which debugging messages should be sent,
      *   null if none
@@ -219,10 +215,8 @@
     /**
      * Returns the axis that was used to lay out components.
      * Returns one of:
-     * <code>BoxLayout.X_AXIS</code>,
-     * <code>BoxLayout.Y_AXIS</code>,
-     * <code>BoxLayout.LINE_AXIS</code> or
-     * <code>BoxLayout.PAGE_AXIS</code>
+     * {@code BoxLayout.X_AXIS, BoxLayout.Y_AXIS,
+     * BoxLayout.LINE_AXIS} or {@code BoxLayout.PAGE_AXIS}
      *
      * @return the axis that was used to lay out components
      *
diff --git a/jdk/src/java.desktop/share/classes/javax/swing/event/ListSelectionEvent.java b/jdk/src/java.desktop/share/classes/javax/swing/event/ListSelectionEvent.java
index 735b579..907fd13 100644
--- a/jdk/src/java.desktop/share/classes/javax/swing/event/ListSelectionEvent.java
+++ b/jdk/src/java.desktop/share/classes/javax/swing/event/ListSelectionEvent.java
@@ -80,7 +80,7 @@
 
     /**
      * Returns the index of the first row whose selection may have changed.
-     * {@code getFirstIndex() &lt;= getLastIndex()}
+     * {@code getFirstIndex() <= getLastIndex()}
      *
      * @return the first row whose selection value may have changed,
      *         where zero is the first row
@@ -89,7 +89,7 @@
 
     /**
      * Returns the index of the last row whose selection may have changed.
-     * {@code getLastIndex() &gt;= getFirstIndex()}
+     * {@code getLastIndex() >= getFirstIndex()}
      *
      * @return the last row whose selection value may have changed,
      *         where zero is the first row
diff --git a/jdk/src/java.desktop/share/classes/javax/swing/text/MutableAttributeSet.java b/jdk/src/java.desktop/share/classes/javax/swing/text/MutableAttributeSet.java
index fdab09f..4f42326 100644
--- a/jdk/src/java.desktop/share/classes/javax/swing/text/MutableAttributeSet.java
+++ b/jdk/src/java.desktop/share/classes/javax/swing/text/MutableAttributeSet.java
@@ -30,8 +30,8 @@
  * A generic interface for a mutable collection of unique attributes.
  *
  * Implementations will probably want to provide a constructor of the
- * form:<tt>
- * public XXXAttributeSet(ConstAttributeSet source);</tt>
+ * form: <pre>{@code
+ * public XXXAttributeSet(ConstAttributeSet source);}</pre>
  *
  */
 public interface MutableAttributeSet extends AttributeSet {
@@ -55,21 +55,21 @@
     public void addAttributes(AttributeSet attributes);
 
     /**
-     * Removes an attribute with the given <code>name</code>.
+     * Removes an attribute with the given {@code name}.
      *
      * @param name the attribute name
      */
     public void removeAttribute(Object name);
 
     /**
-     * Removes an attribute set with the given <code>names</code>.
+     * Removes an attribute set with the given {@code names}.
      *
      * @param names the set of names
      */
     public void removeAttributes(Enumeration<?> names);
 
     /**
-     * Removes a set of attributes with the given <code>name</code>.
+     * Removes a set of attributes with the given {@code name}.
      *
      * @param attributes the set of attributes
      */
diff --git a/jdk/src/java.desktop/share/classes/sun/awt/DebugSettings.java b/jdk/src/java.desktop/share/classes/sun/awt/DebugSettings.java
index d255890..6ed7478 100644
--- a/jdk/src/java.desktop/share/classes/sun/awt/DebugSettings.java
+++ b/jdk/src/java.desktop/share/classes/sun/awt/DebugSettings.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2015, Oracle and/or its affiliates. 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
@@ -71,7 +71,7 @@
  * are read the same way as described above (as before
  * the fix for 4638447).
  */
-final class DebugSettings {
+public final class DebugSettings {
     private static final PlatformLogger log = PlatformLogger.getLogger("sun.awt.debug.DebugSettings");
 
     /* standard debug property key names */
@@ -87,28 +87,21 @@
     };
 
     /* global instance of the settings object */
-    private static DebugSettings instance = null;
+    private static final DebugSettings instance = new DebugSettings();
 
-    private Properties props = new Properties();
+    private final Properties props = new Properties();
 
-    static void init() {
-        if (instance != null) {
+    static synchronized void init() {
+        if (!instance.props.isEmpty()) {
             return;
         }
-
         NativeLibLoader.loadLibraries();
-        instance = new DebugSettings();
+        instance.loadProperties();
         instance.loadNativeSettings();
     }
 
-    private DebugSettings() {
-        java.security.AccessController.doPrivileged(
-            new java.security.PrivilegedAction<Void>() {
-                public Void run() {
-                    loadProperties();
-                    return null;
-                }
-            });
+    public static DebugSettings getInstance() {
+        return instance;
     }
 
     /*
diff --git a/jdk/src/java.desktop/share/classes/sun/awt/util/IdentityArrayList.java b/jdk/src/java.desktop/share/classes/sun/awt/util/IdentityArrayList.java
index a321646..5a37c82 100644
--- a/jdk/src/java.desktop/share/classes/sun/awt/util/IdentityArrayList.java
+++ b/jdk/src/java.desktop/share/classes/sun/awt/util/IdentityArrayList.java
@@ -33,33 +33,33 @@
 import java.util.RandomAccess;
 
 /**
- * Resizable-array implementation of the <tt>List</tt> interface.  Implements
+ * Resizable-array implementation of the {@code List} interface.  Implements
  * all optional list operations, and permits all elements, including
- * <tt>null</tt>.  In addition to implementing the <tt>List</tt> interface,
+ * {@code null}.  In addition to implementing the {@code List} interface,
  * this class provides methods to manipulate the size of the array that is
  * used internally to store the list.  (This class is roughly equivalent to
- * <tt>Vector</tt>, except that it is unsynchronized.)<p>
+ * {@code Vector}, except that it is unsynchronized.)<p>
  *
- * The <tt>size</tt>, <tt>isEmpty</tt>, <tt>get</tt>, <tt>set</tt>,
- * <tt>iterator</tt>, and <tt>listIterator</tt> operations run in constant
- * time.  The <tt>add</tt> operation runs in <i>amortized constant time</i>,
+ * The {@code size}, {@code isEmpty}, {@code get}, {@code set},
+ * {@code iterator}, and {@code listIterator} operations run in constant
+ * time.  The {@code add} operation runs in <i>amortized constant time</i>,
  * that is, adding n elements requires O(n) time.  All of the other operations
  * run in linear time (roughly speaking).  The constant factor is low compared
- * to that for the <tt>LinkedList</tt> implementation.<p>
+ * to that for the {@code LinkedList} implementation.<p>
  *
- * Each <tt>IdentityArrayList</tt> instance has a <i>capacity</i>.  The capacity is
+ * Each {@code IdentityArrayList} instance has a <i>capacity</i>.  The capacity is
  * the size of the array used to store the elements in the list.  It is always
  * at least as large as the list size.  As elements are added to an IdentityArrayList,
  * its capacity grows automatically.  The details of the growth policy are not
  * specified beyond the fact that adding an element has constant amortized
  * time cost.<p>
  *
- * An application can increase the capacity of an <tt>IdentityArrayList</tt> instance
- * before adding a large number of elements using the <tt>ensureCapacity</tt>
+ * An application can increase the capacity of an {@code IdentityArrayList} instance
+ * before adding a large number of elements using the {@code ensureCapacity}
  * operation.  This may reduce the amount of incremental reallocation.
  *
  * <p><strong>Note that this implementation is not synchronized.</strong>
- * If multiple threads access an <tt>IdentityArrayList</tt> instance concurrently,
+ * If multiple threads access an {@code IdentityArrayList} instance concurrently,
  * and at least one of the threads modifies the list structurally, it
  * <i>must</i> be synchronized externally.  (A structural modification is
  * any operation that adds or deletes one or more elements, or explicitly
@@ -73,10 +73,10 @@
  * unsynchronized access to the list:<pre>
  *   List list = Collections.synchronizedList(new IdentityArrayList(...));</pre>
  *
- * <p>The iterators returned by this class's <tt>iterator</tt> and
- * <tt>listIterator</tt> methods are <i>fail-fast</i>: if the list is
+ * <p>The iterators returned by this class's {@code iterator} and
+ * {@code listIterator} methods are <i>fail-fast</i>: if the list is
  * structurally modified at any time after the iterator is created, in any way
- * except through the iterator's own <tt>remove</tt> or <tt>add</tt> methods,
+ * except through the iterator's own {@code remove} or {@code add} methods,
  * the iterator will throw a {@link ConcurrentModificationException}.  Thus, in
  * the face of concurrent modification, the iterator fails quickly and cleanly,
  * rather than risking arbitrary, non-deterministic behavior at an undetermined
@@ -85,7 +85,7 @@
  * Note that the fail-fast behavior of an iterator cannot be guaranteed
  * as it is, generally speaking, impossible to make any hard guarantees in the
  * presence of unsynchronized concurrent modification.  Fail-fast iterators
- * throw <tt>ConcurrentModificationException</tt> on a best-effort basis.
+ * throw {@code ConcurrentModificationException} on a best-effort basis.
  * Therefore, it would be wrong to write a program that depended on this
  * exception for its correctness: <i>the fail-fast behavior of iterators
  * should be used only to detect bugs.</i><p>
@@ -149,9 +149,9 @@
     }
 
     /**
-     * Trims the capacity of this <tt>IdentityArrayList</tt> instance to be the
+     * Trims the capacity of this {@code IdentityArrayList} instance to be the
      * list's current size.  An application can use this operation to minimize
-     * the storage of an <tt>IdentityArrayList</tt> instance.
+     * the storage of an {@code IdentityArrayList} instance.
      */
     public void trimToSize() {
         modCount++;
@@ -162,7 +162,7 @@
     }
 
     /**
-     * Increases the capacity of this <tt>IdentityArrayList</tt> instance, if
+     * Increases the capacity of this {@code IdentityArrayList} instance, if
      * necessary, to ensure that it can hold at least the number of elements
      * specified by the minimum capacity argument.
      *
@@ -191,22 +191,22 @@
     }
 
     /**
-     * Returns <tt>true</tt> if this list contains no elements.
+     * Returns {@code true} if this list contains no elements.
      *
-     * @return <tt>true</tt> if this list contains no elements
+     * @return {@code true} if this list contains no elements
      */
     public boolean isEmpty() {
         return size == 0;
     }
 
     /**
-     * Returns <tt>true</tt> if this list contains the specified element.
-     * More formally, returns <tt>true</tt> if and only if this list contains
-     * at least one element <tt>e</tt> such that
-     * <tt>(o==null&nbsp;?&nbsp;e==null&nbsp;:&nbsp;o == e)</tt>.
+     * Returns {@code true} if this list contains the specified element.
+     * More formally, returns {@code true} if and only if this list contains
+     * at least one element {@code e} such that
+     * {@code Objects.equals(o, e)}.
      *
      * @param o element whose presence in this list is to be tested
-     * @return <tt>true</tt> if this list contains the specified element
+     * @return {@code true} if this list contains the specified element
      */
     public boolean contains(Object o) {
         return indexOf(o) >= 0;
@@ -215,8 +215,8 @@
     /**
      * Returns the index of the first occurrence of the specified element
      * in this list, or -1 if this list does not contain the element.
-     * More formally, returns the lowest index <tt>i</tt> such that
-     * <tt>(o==null&nbsp;?&nbsp;get(i)==null&nbsp;:&nbsp;o == get(i))</tt>,
+     * More formally, returns the lowest index {@code i} such that
+     * {@code Objects.equals(o, get(i))},
      * or -1 if there is no such index.
      */
     public int indexOf(Object o) {
@@ -231,8 +231,8 @@
     /**
      * Returns the index of the last occurrence of the specified element
      * in this list, or -1 if this list does not contain the element.
-     * More formally, returns the highest index <tt>i</tt> such that
-     * <tt>(o==null&nbsp;?&nbsp;get(i)==null&nbsp;:&nbsp;o == get(i))</tt>,
+     * More formally, returns the highest index {@code i} such that
+     * {@code Objects.equals(o, get(i))},
      * or -1 if there is no such index.
      */
     public int lastIndexOf(Object o) {
@@ -273,7 +273,7 @@
      * <p>If the list fits in the specified array with room to spare
      * (i.e., the array has more elements than the list), the element in
      * the array immediately following the end of the collection is set to
-     * <tt>null</tt>.  (This is useful in determining the length of the
+     * {@code null}.  (This is useful in determining the length of the
      * list <i>only</i> if the caller knows that the list does not contain
      * any null elements.)
      *
@@ -336,7 +336,7 @@
      * Appends the specified element to the end of this list.
      *
      * @param e element to be appended to this list
-     * @return <tt>true</tt> (as specified by {@link Collection#add})
+     * @return {@code true} (as specified by {@link Collection#add})
      */
     public boolean add(E e) {
         ensureCapacity(size + 1);  // Increments modCount!!
@@ -392,14 +392,13 @@
      * Removes the first occurrence of the specified element from this list,
      * if it is present.  If the list does not contain the element, it is
      * unchanged.  More formally, removes the element with the lowest index
-     * <tt>i</tt> such that
-     * <tt>(o==null&nbsp;?&nbsp;get(i)==null&nbsp;:&nbsp;o == get(i))</tt>
-     * (if such an element exists).  Returns <tt>true</tt> if this list
+     * {@code i} such that {@code Objects.equals(o, get(i))}
+     * (if such an element exists).  Returns {@code true} if this list
      * contained the specified element (or equivalently, if this list
      * changed as a result of the call).
      *
      * @param o element to be removed from this list, if present
-     * @return <tt>true</tt> if this list contained the specified element
+     * @return {@code true} if this list contained the specified element
      */
     public boolean remove(Object o) {
         for (int index = 0; index < size; index++) {
@@ -448,7 +447,7 @@
      * list is nonempty.)
      *
      * @param c collection containing elements to be added to this list
-     * @return <tt>true</tt> if this list changed as a result of the call
+     * @return {@code true} if this list changed as a result of the call
      * @throws NullPointerException if the specified collection is null
      */
     public boolean addAll(Collection<? extends E> c) {
@@ -471,7 +470,7 @@
      * @param index index at which to insert the first element from the
      *              specified collection
      * @param c collection containing elements to be added to this list
-     * @return <tt>true</tt> if this list changed as a result of the call
+     * @return {@code true} if this list changed as a result of the call
      * @throws IndexOutOfBoundsException {@inheritDoc}
      * @throws NullPointerException if the specified collection is null
      */
@@ -494,10 +493,10 @@
 
     /**
      * Removes from this list all of the elements whose index is between
-     * <tt>fromIndex</tt>, inclusive, and <tt>toIndex</tt>, exclusive.
+     * {@code fromIndex}, inclusive, and {@code toIndex}, exclusive.
      * Shifts any succeeding elements to the left (reduces their index).
-     * This call shortens the list by <tt>(toIndex - fromIndex)</tt> elements.
-     * (If <tt>toIndex==fromIndex</tt>, this operation has no effect.)
+     * This call shortens the list by {@code (toIndex - fromIndex)} elements.
+     * (If {@code toIndex==fromIndex}, this operation has no effect.)
      *
      * @param fromIndex index of first element to be removed
      * @param toIndex index after last element to be removed
diff --git a/jdk/src/java.desktop/share/classes/sun/awt/util/IdentityLinkedList.java b/jdk/src/java.desktop/share/classes/sun/awt/util/IdentityLinkedList.java
index f92509f..21474ba 100644
--- a/jdk/src/java.desktop/share/classes/sun/awt/util/IdentityLinkedList.java
+++ b/jdk/src/java.desktop/share/classes/sun/awt/util/IdentityLinkedList.java
@@ -35,18 +35,18 @@
 import java.util.NoSuchElementException;
 
 /**
- * Linked list implementation of the <tt>List</tt> interface.  Implements all
+ * Linked list implementation of the {@code List} interface.  Implements all
  * optional list operations, and permits all elements (including
- * <tt>null</tt>).  In addition to implementing the <tt>List</tt> interface,
- * the <tt>IdentityLinkedList</tt> class provides uniformly named methods to
- * <tt>get</tt>, <tt>remove</tt> and <tt>insert</tt> an element at the
+ * {@code null}).  In addition to implementing the {@code List} interface,
+ * the {@code IdentityLinkedList} class provides uniformly named methods to
+ * {@code get}, {@code remove} and {@code insert} an element at the
  * beginning and end of the list.  These operations allow linked lists to be
  * used as a stack, {@linkplain java.util.Queue queue}, or {@linkplain Deque
  * double-ended queue}. <p>
  *
- * The class implements the <tt>Deque</tt> interface, providing
- * first-in-first-out queue operations for <tt>add</tt>,
- * <tt>poll</tt>, along with other stack and deque operations.<p>
+ * The class implements the {@code Deque} interface, providing
+ * first-in-first-out queue operations for {@code add},
+ * {@code poll}, along with other stack and deque operations.<p>
  *
  * All of the operations perform as could be expected for a doubly-linked
  * list.  Operations that index into the list will traverse the list from
@@ -67,11 +67,11 @@
  * unsynchronized access to the list:<pre>
  *   List list = Collections.synchronizedList(new IdentityLinkedList(...));</pre>
  *
- * <p>The iterators returned by this class's <tt>iterator</tt> and
- * <tt>listIterator</tt> methods are <i>fail-fast</i>: if the list is
+ * <p>The iterators returned by this class's {@code iterator} and
+ * {@code listIterator} methods are <i>fail-fast</i>: if the list is
  * structurally modified at any time after the iterator is created, in
- * any way except through the Iterator's own <tt>remove</tt> or
- * <tt>add</tt> methods, the iterator will throw a {@link
+ * any way except through the Iterator's own {@code remove} or
+ * {@code add} methods, the iterator will throw a {@link
  * ConcurrentModificationException}.  Thus, in the face of concurrent
  * modification, the iterator fails quickly and cleanly, rather than
  * risking arbitrary, non-deterministic behavior at an undetermined
@@ -80,7 +80,7 @@
  * <p>Note that the fail-fast behavior of an iterator cannot be guaranteed
  * as it is, generally speaking, impossible to make any hard guarantees in the
  * presence of unsynchronized concurrent modification.  Fail-fast iterators
- * throw <tt>ConcurrentModificationException</tt> on a best-effort basis.
+ * throw {@code ConcurrentModificationException} on a best-effort basis.
  * Therefore, it would be wrong to write a program that depended on this
  * exception for its correctness:   <i>the fail-fast behavior of iterators
  * should be used only to detect bugs.</i>
@@ -180,13 +180,13 @@
     }
 
     /**
-     * Returns <tt>true</tt> if this list contains the specified element.
-     * More formally, returns <tt>true</tt> if and only if this list contains
-     * at least one element <tt>e</tt> such that
-     * <tt>(o==null&nbsp;?&nbsp;e==null&nbsp;:&nbsp;o == e)</tt>.
+     * Returns {@code true} if this list contains the specified element.
+     * More formally, returns {@code true} if and only if this list contains
+     * at least one element {@code e} such that
+     * {@code Objects.equals(o, e)}.
      *
      * @param o element whose presence in this list is to be tested
-     * @return <tt>true</tt> if this list contains the specified element
+     * @return {@code true} if this list contains the specified element
      */
     public boolean contains(Object o) {
         return indexOf(o) != -1;
@@ -207,7 +207,7 @@
      * <p>This method is equivalent to {@link #addLast}.
      *
      * @param e element to be appended to this list
-     * @return <tt>true</tt> (as specified by {@link Collection#add})
+     * @return {@code true} (as specified by {@link Collection#add})
      */
     public boolean add(E e) {
         addBefore(e, header);
@@ -218,13 +218,13 @@
      * Removes the first occurrence of the specified element from this list,
      * if it is present.  If this list does not contain the element, it is
      * unchanged.  More formally, removes the element with the lowest index
-     * <tt>i</tt> such that <tt>get(i)==o</tt>
-     * (if such an element exists).  Returns <tt>true</tt> if this list
+     * {@code i} such that {@code get(i)==o}
+     * (if such an element exists).  Returns {@code true} if this list
      * contained the specified element (or equivalently, if this list
      * changed as a result of the call).
      *
      * @param o element to be removed from this list, if present
-     * @return <tt>true</tt> if this list contained the specified element
+     * @return {@code true} if this list contained the specified element
      */
     public boolean remove(Object o) {
         for (Entry<E> e = header.next; e != header; e = e.next) {
@@ -245,7 +245,7 @@
      * this list, and it's nonempty.)
      *
      * @param c collection containing elements to be added to this list
-     * @return <tt>true</tt> if this list changed as a result of the call
+     * @return {@code true} if this list changed as a result of the call
      * @throws NullPointerException if the specified collection is null
      */
     public boolean addAll(Collection<? extends E> c) {
@@ -263,7 +263,7 @@
      * @param index index at which to insert the first element
      *              from the specified collection
      * @param c collection containing elements to be added to this list
-     * @return <tt>true</tt> if this list changed as a result of the call
+     * @return {@code true} if this list changed as a result of the call
      * @throws IndexOutOfBoundsException {@inheritDoc}
      * @throws NullPointerException if the specified collection is null
      */
@@ -388,8 +388,8 @@
     /**
      * Returns the index of the first occurrence of the specified element
      * in this list, or -1 if this list does not contain the element.
-     * More formally, returns the lowest index <tt>i</tt> such that
-     * <tt>get(i)==o</tt>,
+     * More formally, returns the lowest index {@code i} such that
+     * {@code get(i)==o},
      * or -1 if there is no such index.
      *
      * @param o element to search for
@@ -410,8 +410,8 @@
     /**
      * Returns the index of the last occurrence of the specified element
      * in this list, or -1 if this list does not contain the element.
-     * More formally, returns the highest index <tt>i</tt> such that
-     * <tt>get(i)==o</tt>,
+     * More formally, returns the highest index {@code i} such that
+     * {@code get(i)==o},
      * or -1 if there is no such index.
      *
      * @param o element to search for
@@ -433,7 +433,7 @@
 
     /**
      * Retrieves, but does not remove, the head (first element) of this list.
-     * @return the head of this list, or <tt>null</tt> if this list is empty
+     * @return the head of this list, or {@code null} if this list is empty
      * @since 1.5
      */
     public E peek() {
@@ -454,7 +454,7 @@
 
     /**
      * Retrieves and removes the head (first element) of this list
-     * @return the head of this list, or <tt>null</tt> if this list is empty
+     * @return the head of this list, or {@code null} if this list is empty
      * @since 1.5
      */
     public E poll() {
@@ -478,7 +478,7 @@
      * Adds the specified element as the tail (last element) of this list.
      *
      * @param e the element to add
-     * @return <tt>true</tt> (as specified by {@link java.util.Queue#offer})
+     * @return {@code true} (as specified by {@link java.util.Queue#offer})
      * @since 1.5
      */
     public boolean offer(E e) {
@@ -490,7 +490,7 @@
      * Inserts the specified element at the front of this list.
      *
      * @param e the element to insert
-     * @return <tt>true</tt> (as specified by {@link Deque#offerFirst})
+     * @return {@code true} (as specified by {@link Deque#offerFirst})
      * @since 1.6
      */
     public boolean offerFirst(E e) {
@@ -502,7 +502,7 @@
      * Inserts the specified element at the end of this list.
      *
      * @param e the element to insert
-     * @return <tt>true</tt> (as specified by {@link Deque#offerLast})
+     * @return {@code true} (as specified by {@link Deque#offerLast})
      * @since 1.6
      */
     public boolean offerLast(E e) {
@@ -512,9 +512,9 @@
 
     /**
      * Retrieves, but does not remove, the first element of this list,
-     * or returns <tt>null</tt> if this list is empty.
+     * or returns {@code null} if this list is empty.
      *
-     * @return the first element of this list, or <tt>null</tt>
+     * @return the first element of this list, or {@code null}
      *         if this list is empty
      * @since 1.6
      */
@@ -526,9 +526,9 @@
 
     /**
      * Retrieves, but does not remove, the last element of this list,
-     * or returns <tt>null</tt> if this list is empty.
+     * or returns {@code null} if this list is empty.
      *
-     * @return the last element of this list, or <tt>null</tt>
+     * @return the last element of this list, or {@code null}
      *         if this list is empty
      * @since 1.6
      */
@@ -540,9 +540,9 @@
 
     /**
      * Retrieves and removes the first element of this list,
-     * or returns <tt>null</tt> if this list is empty.
+     * or returns {@code null} if this list is empty.
      *
-     * @return the first element of this list, or <tt>null</tt> if
+     * @return the first element of this list, or {@code null} if
      *     this list is empty
      * @since 1.6
      */
@@ -554,9 +554,9 @@
 
     /**
      * Retrieves and removes the last element of this list,
-     * or returns <tt>null</tt> if this list is empty.
+     * or returns {@code null} if this list is empty.
      *
-     * @return the last element of this list, or <tt>null</tt> if
+     * @return the last element of this list, or {@code null} if
      *     this list is empty
      * @since 1.6
      */
@@ -600,7 +600,7 @@
      * does not contain the element, it is unchanged.
      *
      * @param o element to be removed from this list, if present
-     * @return <tt>true</tt> if the list contained the specified element
+     * @return {@code true} if the list contained the specified element
      * @since 1.6
      */
     public boolean removeFirstOccurrence(Object o) {
@@ -613,7 +613,7 @@
      * does not contain the element, it is unchanged.
      *
      * @param o element to be removed from this list, if present
-     * @return <tt>true</tt> if the list contained the specified element
+     * @return {@code true} if the list contained the specified element
      * @since 1.6
      */
     public boolean removeLastOccurrence(Object o) {
@@ -629,19 +629,19 @@
     /**
      * Returns a list-iterator of the elements in this list (in proper
      * sequence), starting at the specified position in the list.
-     * Obeys the general contract of <tt>List.listIterator(int)</tt>.<p>
+     * Obeys the general contract of {@code List.listIterator(int)}.<p>
      *
      * The list-iterator is <i>fail-fast</i>: if the list is structurally
      * modified at any time after the Iterator is created, in any way except
-     * through the list-iterator's own <tt>remove</tt> or <tt>add</tt>
+     * through the list-iterator's own {@code remove} or {@code add}
      * methods, the list-iterator will throw a
-     * <tt>ConcurrentModificationException</tt>.  Thus, in the face of
+     * {@code ConcurrentModificationException}.  Thus, in the face of
      * concurrent modification, the iterator fails quickly and cleanly, rather
      * than risking arbitrary, non-deterministic behavior at an undetermined
      * time in the future.
      *
      * @param index index of the first element to be returned from the
-     *              list-iterator (by a call to <tt>next</tt>)
+     *              list-iterator (by a call to {@code next})
      * @return a ListIterator of the elements in this list (in proper
      *         sequence), starting at the specified position in the list
      * @throws IndexOutOfBoundsException {@inheritDoc}
@@ -834,7 +834,7 @@
      *
      * <p>If the list fits in the specified array with room to spare (i.e.,
      * the array has more elements than the list), the element in the array
-     * immediately following the end of the list is set to <tt>null</tt>.
+     * immediately following the end of the list is set to {@code null}.
      * (This is useful in determining the length of the list <i>only</i> if
      * the caller knows that the list does not contain any null elements.)
      *
@@ -843,15 +843,15 @@
      * precise control over the runtime type of the output array, and may,
      * under certain circumstances, be used to save allocation costs.
      *
-     * <p>Suppose <tt>x</tt> is a list known to contain only strings.
+     * <p>Suppose {@code x} is a list known to contain only strings.
      * The following code can be used to dump the list into a newly
-     * allocated array of <tt>String</tt>:
+     * allocated array of {@code String}:
      *
      * <pre>
      *     String[] y = x.toArray(new String[0]);</pre>
      *
-     * Note that <tt>toArray(new Object[0])</tt> is identical in function to
-     * <tt>toArray()</tt>.
+     * Note that {@code toArray(new Object[0])} is identical in function to
+     * {@code toArray()}.
      *
      * @param a the array into which the elements of the list are to
      *          be stored, if it is big enough; otherwise, a new array of the
diff --git a/jdk/src/java.desktop/share/classes/sun/font/CompositeFont.java b/jdk/src/java.desktop/share/classes/sun/font/CompositeFont.java
index f2defd7..7b19bb3 100644
--- a/jdk/src/java.desktop/share/classes/sun/font/CompositeFont.java
+++ b/jdk/src/java.desktop/share/classes/sun/font/CompositeFont.java
@@ -71,6 +71,13 @@
         } else {
             numSlots = componentNames.length;
         }
+        /* We will limit the number of slots to 254.
+         * We store the slot for a glyph id in a byte and we may use one slot
+         * for an EUDC font, and we may also create a composite
+         * using this composite as a backup for a physical font.
+         * So we want to leave space for the two additional slots.
+         */
+         numSlots = (numSlots <= 254) ? numSlots : 254;
 
         /* Only the first "numMetricsSlots" slots are used for font metrics.
          * the rest are considered "fallback" slots".
diff --git a/jdk/src/java.desktop/share/classes/sun/font/FileFontStrike.java b/jdk/src/java.desktop/share/classes/sun/font/FileFontStrike.java
index 7fb9f65..f5c478f 100644
--- a/jdk/src/java.desktop/share/classes/sun/font/FileFontStrike.java
+++ b/jdk/src/java.desktop/share/classes/sun/font/FileFontStrike.java
@@ -420,14 +420,13 @@
 
     /* The following method is called from CompositeStrike as a special case.
      */
-    private static final int SLOTZEROMAX = 0xffffff;
     int getSlot0GlyphImagePtrs(int[] glyphCodes, long[] images, int len) {
 
         int convertedCnt = 0;
 
         for (int i=0; i<len; i++) {
             int glyphCode = glyphCodes[i];
-            if (glyphCode >= SLOTZEROMAX) {
+            if (glyphCode >>> 24 != 0) {
                 return convertedCnt;
             } else {
                 convertedCnt++;
diff --git a/jdk/src/java.desktop/share/classes/sun/swing/SwingUtilities2.java b/jdk/src/java.desktop/share/classes/sun/swing/SwingUtilities2.java
index 1d98ea0..f1a1793 100644
--- a/jdk/src/java.desktop/share/classes/sun/swing/SwingUtilities2.java
+++ b/jdk/src/java.desktop/share/classes/sun/swing/SwingUtilities2.java
@@ -72,7 +72,7 @@
  */
 public class SwingUtilities2 {
     /**
-     * The <code>AppContext</code> key for our one <code>LAFState</code>
+     * The {@code AppContext} key for our one {@code LAFState}
      * instance.
      */
     public static final Object LAF_STATE_KEY =
@@ -180,7 +180,7 @@
 
     /**
      * Key used in client properties used to indicate that the
-     * <code>ComponentUI</code> of the JComponent instance should be returned.
+     * {@code ComponentUI} of the JComponent instance should be returned.
      */
     public static final Object COMPONENT_UI_PROPERTY_KEY =
                             new StringBuffer("ComponentUIPropertyKey");
@@ -221,8 +221,8 @@
      * @param text characters to be tested
      * @param start start
      * @param limit limit
-     * @return <tt>true</tt>  if TextLayout is required
-     *         <tt>false</tt> if TextLayout is not required
+     * @return {@code true}  if TextLayout is required
+     *         {@code false} if TextLayout is not required
      */
     public static final boolean isComplexLayout(char[] text, int start, int limit) {
         return FontUtilities.isComplexText(text, start, limit);
@@ -374,7 +374,7 @@
 
     /**
      * Returns the width of the passed in String.
-     * If the passed String is <code>null</code>, returns zero.
+     * If the passed String is {@code null}, returns zero.
      *
      * @param c JComponent that will display the string, may be null
      * @param fm FontMetrics used to measure the String width
@@ -761,7 +761,7 @@
 
     /**
      * Request focus on the given component if it doesn't already have it
-     * and <code>isRequestFocusEnabled()</code> returns true.
+     * and {@code isRequestFocusEnabled()} returns true.
      */
     public static void adjustFocus(JComponent c) {
         if (!c.hasFocus() && c.isRequestFocusEnabled()) {
@@ -1200,9 +1200,9 @@
 
     /**
      * LSBCacheEntry is used to cache the left side bearing (lsb) for
-     * a particular <code>Font</code> and <code>FontRenderContext</code>.
+     * a particular {@code Font} and {@code FontRenderContext}.
      * This only caches characters that fall in the range
-     * <code>MIN_CHAR_INDEX</code> to <code>MAX_CHAR_INDEX</code>.
+     * {@code MIN_CHAR_INDEX} to {@code MAX_CHAR_INDEX}.
      */
     private static class LSBCacheEntry {
         // Used to indicate a particular entry in lsb has not been set.
@@ -1472,20 +1472,20 @@
     }
 
     /**
-     * Utility method that creates a <code>UIDefaults.LazyValue</code> that
-     * creates an <code>ImageIcon</code> <code>UIResource</code> for the
+     * Utility method that creates a {@code UIDefaults.LazyValue} that
+     * creates an {@code ImageIcon} {@code UIResource} for the
      * specified image file name. The image is loaded using
-     * <code>getResourceAsStream</code>, starting with a call to that method
+     * {@code getResourceAsStream}, starting with a call to that method
      * on the base class parameter. If it cannot be found, searching will
      * continue through the base class' inheritance hierarchy, up to and
-     * including <code>rootClass</code>.
+     * including {@code rootClass}.
      *
      * @param baseClass the first class to use in searching for the resource
-     * @param rootClass an ancestor of <code>baseClass</code> to finish the
+     * @param rootClass an ancestor of {@code baseClass} to finish the
      *                  search at
      * @param imageFile the name of the file to be found
-     * @return a lazy value that creates the <code>ImageIcon</code>
-     *         <code>UIResource</code> for the image,
+     * @return a lazy value that creates the {@code ImageIcon}
+     *         {@code UIResource} for the image,
      *         or null if it cannot be found
      */
     public static Object makeIcon(final Class<?> baseClass,
@@ -1495,22 +1495,22 @@
     }
 
     /**
-     * Utility method that creates a <code>UIDefaults.LazyValue</code> that
-     * creates an <code>ImageIcon</code> <code>UIResource</code> for the
+     * Utility method that creates a {@code UIDefaults.LazyValue} that
+     * creates an {@code ImageIcon} {@code UIResource} for the
      * specified image file name. The image is loaded using
-     * <code>getResourceAsStream</code>, starting with a call to that method
+     * {@code getResourceAsStream}, starting with a call to that method
      * on the base class parameter. If it cannot be found, searching will
      * continue through the base class' inheritance hierarchy, up to and
-     * including <code>rootClass</code>.
+     * including {@code rootClass}.
      *
      * Finds an image with a given name without privileges enabled.
      *
      * @param baseClass the first class to use in searching for the resource
-     * @param rootClass an ancestor of <code>baseClass</code> to finish the
+     * @param rootClass an ancestor of {@code baseClass} to finish the
      *                  search at
      * @param imageFile the name of the file to be found
-     * @return a lazy value that creates the <code>ImageIcon</code>
-     *         <code>UIResource</code> for the image,
+     * @return a lazy value that creates the {@code ImageIcon}
+     *         {@code UIResource} for the image,
      *         or null if it cannot be found
      */
     public static Object makeIcon_Unprivileged(final Class<?> baseClass,
@@ -1604,11 +1604,11 @@
     }
 
     /**
-     * Returns an integer from the defaults table. If <code>key</code> does
-     * not map to a valid <code>Integer</code>, or can not be convered from
-     * a <code>String</code> to an integer, the value 0 is returned.
+     * Returns an integer from the defaults table. If {@code key} does
+     * not map to a valid {@code Integer}, or can not be convered from
+     * a {@code String} to an integer, the value 0 is returned.
      *
-     * @param key  an <code>Object</code> specifying the int.
+     * @param key  an {@code Object} specifying the int.
      * @return the int
      */
     public static int getUIDefaultsInt(Object key) {
@@ -1617,13 +1617,13 @@
 
     /**
      * Returns an integer from the defaults table that is appropriate
-     * for the given locale. If <code>key</code> does not map to a valid
-     * <code>Integer</code>, or can not be convered from a <code>String</code>
+     * for the given locale. If {@code key} does not map to a valid
+     * {@code Integer}, or can not be convered from a {@code String}
      * to an integer, the value 0 is returned.
      *
-     * @param key  an <code>Object</code> specifying the int. Returned value
-     *             is 0 if <code>key</code> is not available,
-     * @param l the <code>Locale</code> for which the int is desired
+     * @param key  an {@code Object} specifying the int. Returned value
+     *             is 0 if {@code key} is not available,
+     * @param l the {@code Locale} for which the int is desired
      * @return the int
      */
     public static int getUIDefaultsInt(Object key, Locale l) {
@@ -1631,14 +1631,14 @@
     }
 
     /**
-     * Returns an integer from the defaults table. If <code>key</code> does
-     * not map to a valid <code>Integer</code>, or can not be convered from
-     * a <code>String</code> to an integer, <code>default</code> is
+     * Returns an integer from the defaults table. If {@code key} does
+     * not map to a valid {@code Integer}, or can not be convered from
+     * a {@code String} to an integer, {@code default} is
      * returned.
      *
-     * @param key  an <code>Object</code> specifying the int. Returned value
-     *             is 0 if <code>key</code> is not available,
-     * @param defaultValue Returned value if <code>key</code> is not available,
+     * @param key  an {@code Object} specifying the int. Returned value
+     *             is 0 if {@code key} is not available,
+     * @param defaultValue Returned value if {@code key} is not available,
      *                     or is not an Integer
      * @return the int
      */
@@ -1648,14 +1648,14 @@
 
     /**
      * Returns an integer from the defaults table that is appropriate
-     * for the given locale. If <code>key</code> does not map to a valid
-     * <code>Integer</code>, or can not be convered from a <code>String</code>
-     * to an integer, <code>default</code> is returned.
+     * for the given locale. If {@code key} does not map to a valid
+     * {@code Integer}, or can not be convered from a {@code String}
+     * to an integer, {@code default} is returned.
      *
-     * @param key  an <code>Object</code> specifying the int. Returned value
-     *             is 0 if <code>key</code> is not available,
-     * @param l the <code>Locale</code> for which the int is desired
-     * @param defaultValue Returned value if <code>key</code> is not available,
+     * @param key  an {@code Object} specifying the int. Returned value
+     *             is 0 if {@code key} is not available,
+     * @param l the {@code Locale} for which the int is desired
+     * @param defaultValue Returned value if {@code key} is not available,
      *                     or is not an Integer
      * @return the int
      */
@@ -1749,7 +1749,7 @@
      * @param task the task to submit
      * @param result the result to return upon successful completion
      * @return a Future representing pending completion of the task,
-     *         and whose <tt>get()</tt> method will return the given
+     *         and whose {@code get()} method will return the given
      *         result value upon completion
      * @throws NullPointerException if the task is null
      */
diff --git a/jdk/src/java.desktop/unix/classes/sun/awt/X11/XRobotPeer.java b/jdk/src/java.desktop/unix/classes/sun/awt/X11/XRobotPeer.java
index 340c80b..4a35548 100644
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/XRobotPeer.java
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/XRobotPeer.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2015, Oracle and/or its affiliates. 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,15 +25,16 @@
 package sun.awt.X11;
 
 import java.awt.*;
-import java.awt.event.InputEvent;
 import java.awt.peer.*;
 
 import sun.awt.AWTAccessor;
 import sun.awt.SunToolkit;
+import sun.awt.UNIXToolkit;
 import sun.awt.X11GraphicsConfig;
 
 class XRobotPeer implements RobotPeer {
 
+    private static volatile boolean isGtkSupported;
     private X11GraphicsConfig   xgc = null;
     /*
      * native implementation uses some static shared data (pipes, processes)
@@ -44,46 +45,65 @@
     XRobotPeer(GraphicsConfiguration gc) {
         this.xgc = (X11GraphicsConfig)gc;
         SunToolkit tk = (SunToolkit)Toolkit.getDefaultToolkit();
-        setup(tk.getNumberOfButtons(), AWTAccessor.getInputEventAccessor().getButtonDownMasks());
+        setup(tk.getNumberOfButtons(),
+                AWTAccessor.getInputEventAccessor().getButtonDownMasks());
+
+        Toolkit toolkit = Toolkit.getDefaultToolkit();
+        if (!isGtkSupported) {
+            if (toolkit instanceof UNIXToolkit
+                    && ((UNIXToolkit) toolkit).loadGTK()) {
+                isGtkSupported = true;
+            }
+        }
     }
 
+    @Override
     public void dispose() {
         // does nothing
     }
 
+    @Override
     public void mouseMove(int x, int y) {
         mouseMoveImpl(xgc, x, y);
     }
 
+    @Override
     public void mousePress(int buttons) {
         mousePressImpl(buttons);
     }
 
+    @Override
     public void mouseRelease(int buttons) {
         mouseReleaseImpl(buttons);
     }
 
+    @Override
     public void mouseWheel(int wheelAmt) {
-    mouseWheelImpl(wheelAmt);
+        mouseWheelImpl(wheelAmt);
     }
 
+    @Override
     public void keyPress(int keycode) {
         keyPressImpl(keycode);
     }
 
+    @Override
     public void keyRelease(int keycode) {
         keyReleaseImpl(keycode);
     }
 
+    @Override
     public int getRGBPixel(int x, int y) {
         int pixelArray[] = new int[1];
-        getRGBPixelsImpl(xgc, x, y, 1, 1, pixelArray);
+        getRGBPixelsImpl(xgc, x, y, 1, 1, pixelArray, isGtkSupported);
         return pixelArray[0];
     }
 
+    @Override
     public int [] getRGBPixels(Rectangle bounds) {
         int pixelArray[] = new int[bounds.width*bounds.height];
-        getRGBPixelsImpl(xgc, bounds.x, bounds.y, bounds.width, bounds.height, pixelArray);
+        getRGBPixelsImpl(xgc, bounds.x, bounds.y, bounds.width, bounds.height,
+                            pixelArray, isGtkSupported);
         return pixelArray;
     }
 
@@ -97,5 +117,6 @@
     private static native synchronized void keyPressImpl(int keycode);
     private static native synchronized void keyReleaseImpl(int keycode);
 
-    private static native synchronized void getRGBPixelsImpl(X11GraphicsConfig xgc, int x, int y, int width, int height, int pixelArray[]);
+    private static native synchronized void getRGBPixelsImpl(X11GraphicsConfig xgc,
+            int x, int y, int width, int height, int pixelArray[], boolean isGtkSupported);
 }
diff --git a/jdk/src/java.desktop/unix/native/common/awt/fontpath.c b/jdk/src/java.desktop/unix/native/common/awt/fontpath.c
index cc317cd..674931b 100644
--- a/jdk/src/java.desktop/unix/native/common/awt/fontpath.c
+++ b/jdk/src/java.desktop/unix/native/common/awt/fontpath.c
@@ -1219,10 +1219,11 @@
                 minGlyphs = val;
             }
         }
+        FcCharSet *unionCharset = NULL;
         for (j=0; j<nfonts; j++) {
             FcPattern *fontPattern = fontset->fonts[j];
             FcChar8 *fontformat;
-            FcCharSet *unionCharset = NULL, *charset;
+            FcCharSet *charset = NULL;
 
             fontformat = NULL;
             (*FcPatternGetString)(fontPattern, FC_FONTFORMAT, 0, &fontformat);
@@ -1280,6 +1281,9 @@
             if (!includeFallbacks) {
                 break;
             }
+            if (fontCount == 254) {
+                break; // CompositeFont will only use up to 254 slots from here.
+            }
         }
 
         /* Once we get here 'fontCount' is the number of returned fonts
diff --git a/jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_Robot.c b/jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_Robot.c
index 89f282c..eed0a4e 100644
--- a/jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_Robot.c
+++ b/jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_Robot.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2015, Oracle and/or its affiliates. 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
@@ -45,6 +45,8 @@
 #include "wsutils.h"
 #include "list.h"
 #include "multiVis.h"
+#include "gtk2_interface.h"
+
 #if defined(__linux__) || defined(MACOSX)
 #include <sys/socket.h>
 #endif
@@ -204,63 +206,139 @@
 Java_sun_awt_X11_XRobotPeer_getRGBPixelsImpl( JNIEnv *env,
                              jclass cls,
                              jobject xgc,
-                             jint x,
-                             jint y,
-                             jint width,
-                             jint height,
-                             jintArray pixelArray) {
-
+                             jint jx,
+                             jint jy,
+                             jint jwidth,
+                             jint jheight,
+                             jintArray pixelArray,
+                             jboolean isGtkSupported) {
     XImage *image;
     jint *ary;               /* Array of jints for sending pixel values back
                               * to parent process.
                               */
     Window rootWindow;
+    XWindowAttributes attr;
     AwtGraphicsConfigDataPtr adata;
 
-    DTRACE_PRINTLN6("RobotPeer: getRGBPixelsImpl(%lx, %d, %d, %d, %d, %x)", xgc, x, y, width, height, pixelArray);
+    DTRACE_PRINTLN6("RobotPeer: getRGBPixelsImpl(%lx, %d, %d, %d, %d, %x)", xgc, jx, jy, jwidth, jheight, pixelArray);
 
-    AWT_LOCK();
-
-    /* avoid a lot of work for empty rectangles */
-    if ((width * height) == 0) {
-        AWT_UNLOCK();
+    if (jwidth <= 0 || jheight <= 0) {
         return;
     }
-    DASSERT(width * height > 0); /* only allow positive size */
 
     adata = (AwtGraphicsConfigDataPtr) JNU_GetLongFieldAsPtr(env, xgc, x11GraphicsConfigIDs.aData);
     DASSERT(adata != NULL);
 
+    AWT_LOCK();
+
     rootWindow = XRootWindow(awt_display, adata->awt_visInfo.screen);
-    image = getWindowImage(awt_display, rootWindow, x, y, width, height);
 
-    /* Array to use to crunch around the pixel values */
-    if (!IS_SAFE_SIZE_MUL(width, height) ||
-        !(ary = (jint *) SAFE_SIZE_ARRAY_ALLOC(malloc, width * height, sizeof (jint))))
-    {
-        JNU_ThrowOutOfMemoryError(env, "OutOfMemoryError");
-        XDestroyImage(image);
+    if (!XGetWindowAttributes(awt_display, rootWindow, &attr)
+            || jx + jwidth <= attr.x
+            || attr.x + attr.width <= jx
+            || jy + jheight <= attr.y
+            || attr.y + attr.height <= jy) {
+
         AWT_UNLOCK();
-        return;
+        return; // Does not intersect with root window
     }
-    /* convert to Java ARGB pixels */
-    for (y = 0; y < height; y++) {
-        for (x = 0; x < width; x++) {
-            jint pixel = (jint) XGetPixel(image, x, y); /* Note ignore upper
-                                                         * 32-bits on 64-bit
-                                                         * OSes.
-                                                         */
 
-            pixel |= 0xff000000; /* alpha - full opacity */
+    gboolean gtk_failed = TRUE;
+    jint _x, _y;
 
-            ary[(y * width) + x] = pixel;
+    jint x = MAX(jx, attr.x);
+    jint y = MAX(jy, attr.y);
+    jint width = MIN(jx + jwidth, attr.x + attr.width) - x;
+    jint height = MIN(jy + jheight, attr.y + attr.height) - y;
+
+
+    int dx = attr.x > jx ? attr.x - jx : 0;
+    int dy = attr.y > jy ? attr.y - jy : 0;
+
+    int index;
+
+    if (isGtkSupported) {
+        GdkPixbuf *pixbuf;
+        (*fp_gdk_threads_enter)();
+        GdkWindow *root = (*fp_gdk_get_default_root_window)();
+
+        pixbuf = (*fp_gdk_pixbuf_get_from_drawable)(NULL, root, NULL,
+                                                    x, y, 0, 0, width, height);
+
+        if (pixbuf) {
+            int nchan = (*fp_gdk_pixbuf_get_n_channels)(pixbuf);
+            int stride = (*fp_gdk_pixbuf_get_rowstride)(pixbuf);
+
+            if ((*fp_gdk_pixbuf_get_width)(pixbuf) == width
+                    && (*fp_gdk_pixbuf_get_height)(pixbuf) == height
+                    && (*fp_gdk_pixbuf_get_bits_per_sample)(pixbuf) == 8
+                    && (*fp_gdk_pixbuf_get_colorspace)(pixbuf) == GDK_COLORSPACE_RGB
+                    && nchan >= 3
+                    ) {
+                guchar *p, *pix = (*fp_gdk_pixbuf_get_pixels)(pixbuf);
+
+                ary = (*env)->GetPrimitiveArrayCritical(env, pixelArray, NULL);
+                if (!ary) {
+                    (*fp_g_object_unref)(pixbuf);
+                    (*fp_gdk_threads_leave)();
+                    AWT_UNLOCK();
+                    return;
+                }
+
+                for (_y = 0; _y < height; _y++) {
+                    for (_x = 0; _x < width; _x++) {
+                        p = pix + _y * stride + _x * nchan;
+
+                        index = (_y + dy) * jwidth + (_x + dx);
+                        ary[index] = 0xff000000
+                                        | (p[0] << 16)
+                                        | (p[1] << 8)
+                                        | (p[2]);
+
+                    }
+                }
+                (*env)->ReleasePrimitiveArrayCritical(env, pixelArray, ary, 0);
+                if ((*env)->ExceptionCheck(env)) {
+                    (*fp_g_object_unref)(pixbuf);
+                    (*fp_gdk_threads_leave)();
+                    AWT_UNLOCK();
+                    return;
+                }
+                gtk_failed = FALSE;
+            }
+            (*fp_g_object_unref)(pixbuf);
         }
+        (*fp_gdk_threads_leave)();
     }
-    (*env)->SetIntArrayRegion(env, pixelArray, 0, height * width, ary);
-    free(ary);
 
-    XDestroyImage(image);
+    if (gtk_failed) {
+        image = getWindowImage(awt_display, rootWindow, x, y, width, height);
 
+        ary = (*env)->GetPrimitiveArrayCritical(env, pixelArray, NULL);
+
+        if (!ary) {
+            XDestroyImage(image);
+            AWT_UNLOCK();
+            return;
+        }
+
+        /* convert to Java ARGB pixels */
+        for (_y = 0; _y < height; _y++) {
+            for (_x = 0; _x < width; _x++) {
+                jint pixel = (jint) XGetPixel(image, _x, _y); /* Note ignore upper
+                                                               * 32-bits on 64-bit
+                                                               * OSes.
+                                                               */
+                pixel |= 0xff000000; /* alpha - full opacity */
+
+                index = (_y + dy) * jwidth + (_x + dx);
+                ary[index] = pixel;
+            }
+        }
+
+        XDestroyImage(image);
+        (*env)->ReleasePrimitiveArrayCritical(env, pixelArray, ary, 0);
+    }
     AWT_UNLOCK();
 }
 
diff --git a/jdk/src/java.desktop/unix/native/libawt_xawt/awt/gtk2_interface.c b/jdk/src/java.desktop/unix/native/libawt_xawt/awt/gtk2_interface.c
index 84e2df3..6ef926e 100644
--- a/jdk/src/java.desktop/unix/native/libawt_xawt/awt/gtk2_interface.c
+++ b/jdk/src/java.desktop/unix/native/libawt_xawt/awt/gtk2_interface.c
@@ -203,9 +203,6 @@
         gint, gint, gint, gint);
 static GdkPixbuf *(*fp_gdk_pixbuf_new)(GdkColorspace colorspace,
         gboolean has_alpha, int bits_per_sample, int width, int height);
-static GdkPixbuf *(*fp_gdk_pixbuf_get_from_drawable)(GdkPixbuf *dest,
-        GdkDrawable *src, GdkColormap *cmap, int src_x, int src_y,
-        int dest_x, int dest_y, int width, int height);
 static void (*fp_gdk_drawable_get_size)(GdkDrawable *drawable,
         gint* width, gint* height);
 
@@ -646,6 +643,8 @@
         fp_g_object_set = dl_symbol("g_object_set");
 
         /* GDK */
+        fp_gdk_get_default_root_window =
+            dl_symbol("gdk_get_default_root_window");
         fp_gdk_pixmap_new = dl_symbol("gdk_pixmap_new");
         fp_gdk_pixbuf_get_from_drawable =
             dl_symbol("gdk_pixbuf_get_from_drawable");
@@ -670,6 +669,8 @@
                 dl_symbol("gdk_pixbuf_get_bits_per_sample");
         fp_gdk_pixbuf_get_n_channels =
                 dl_symbol("gdk_pixbuf_get_n_channels");
+        fp_gdk_pixbuf_get_colorspace =
+                dl_symbol("gdk_pixbuf_get_colorspace");
 
         /* GTK painting */
         fp_gtk_init_check = dl_symbol("gtk_init_check");
diff --git a/jdk/src/java.desktop/unix/native/libawt_xawt/awt/gtk2_interface.h b/jdk/src/java.desktop/unix/native/libawt_xawt/awt/gtk2_interface.h
index 0150f93..06cf8bd 100644
--- a/jdk/src/java.desktop/unix/native/libawt_xawt/awt/gtk2_interface.h
+++ b/jdk/src/java.desktop/unix/native/libawt_xawt/awt/gtk2_interface.h
@@ -772,6 +772,8 @@
 
 void (*fp_g_free)(gpointer mem);
 void (*fp_g_object_unref)(gpointer object);
+GdkWindow *(*fp_gdk_get_default_root_window) (void);
+
 int (*fp_gdk_pixbuf_get_bits_per_sample)(const GdkPixbuf *pixbuf);
 guchar *(*fp_gdk_pixbuf_get_pixels)(const GdkPixbuf *pixbuf);
 gboolean (*fp_gdk_pixbuf_get_has_alpha)(const GdkPixbuf *pixbuf);
@@ -780,6 +782,13 @@
 int (*fp_gdk_pixbuf_get_rowstride)(const GdkPixbuf *pixbuf);
 int (*fp_gdk_pixbuf_get_width)(const GdkPixbuf *pixbuf);
 GdkPixbuf *(*fp_gdk_pixbuf_new_from_file)(const char *filename, GError **error);
+GdkColorspace (*fp_gdk_pixbuf_get_colorspace)(const GdkPixbuf *pixbuf);
+
+GdkPixbuf *(*fp_gdk_pixbuf_get_from_drawable)(GdkPixbuf *dest,
+        GdkDrawable *src, GdkColormap *cmap, int src_x, int src_y,
+        int dest_x, int dest_y, int width, int height);
+
+
 void (*fp_gtk_widget_destroy)(GtkWidget *widget);
 void (*fp_gtk_window_present)(GtkWindow *window);
 void (*fp_gtk_window_move)(GtkWindow *window, gint x, gint y);
diff --git a/jdk/src/java.desktop/windows/native/libawt/windows/awt_Component.cpp b/jdk/src/java.desktop/windows/native/libawt/windows/awt_Component.cpp
index 26532bb..07669bc9 100644
--- a/jdk/src/java.desktop/windows/native/libawt/windows/awt_Component.cpp
+++ b/jdk/src/java.desktop/windows/native/libawt/windows/awt_Component.cpp
@@ -4954,6 +4954,10 @@
         return;
     }
     jobject target = GetTarget(env);
+    DWORD curMousePos = ::GetMessagePos();
+    int xAbs = GET_X_LPARAM(curMousePos);
+    int yAbs = GET_Y_LPARAM(curMousePos);
+
     DTRACE_PRINTLN("creating MWE in JNI");
 
     jobject mouseWheelEvent = env->NewObject(mouseWheelEventCls,
@@ -4961,7 +4965,7 @@
                                              target,
                                              id, when, modifiers,
                                              x+insets.left, y+insets.top,
-                                             0, 0,
+                                             xAbs, yAbs,
                                              clickCount, popupTrigger,
                                              scrollType, scrollAmount,
                                              roundedWheelRotation, preciseWheelRotation);
diff --git a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/Realm.java b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/Realm.java
index bc8ce33..e88e00a 100644
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/Realm.java
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/Realm.java
@@ -296,7 +296,7 @@
      *
      * @param cRealm the initiating realm
      * @param sRealm the target realm, not the same as cRealm
-     * @returns array of realms including at least cRealm as the first
+     * @return array of realms including at least cRealm as the first
      *          element
      * @throws KrbException if the config does not contain a sub-stanza
      *          for cRealm in [capaths] or the sub-stanza does not contain
@@ -347,7 +347,7 @@
      * for a service in the target realm sRealm.
      * @param cRealm the initiating realm
      * @param sRealm the target realm, not the same as cRealm
-     * @returns array of realms including cRealm as the first element
+     * @return array of realms including cRealm as the first element
      */
     private static String[] parseHierarchy(String cRealm, String sRealm) {
 
diff --git a/jdk/src/java.security.sasl/share/classes/com/sun/security/sasl/CramMD5Base.java b/jdk/src/java.security.sasl/share/classes/com/sun/security/sasl/CramMD5Base.java
index 3e0e6ba..88ddb7f 100644
--- a/jdk/src/java.security.sasl/share/classes/com/sun/security/sasl/CramMD5Base.java
+++ b/jdk/src/java.security.sasl/share/classes/com/sun/security/sasl/CramMD5Base.java
@@ -103,8 +103,8 @@
     /**
      * Retrieves the negotiated property.
      * This method can be called only after the authentication exchange has
-     * completed (i.e., when <tt>isComplete()</tt> returns true); otherwise, a
-     * <tt>SaslException</tt> is thrown.
+     * completed (i.e., when {@code isComplete()} returns true); otherwise, a
+     * {@code SaslException} is thrown.
      *
      * @return value of property; only QOP is applicable to CRAM-MD5.
      * @exception IllegalStateException if this authentication exchange has not completed
diff --git a/jdk/src/java.security.sasl/share/classes/com/sun/security/sasl/ExternalClient.java b/jdk/src/java.security.sasl/share/classes/com/sun/security/sasl/ExternalClient.java
index 3c6ddf8..3e9d59c 100644
--- a/jdk/src/java.security.sasl/share/classes/com/sun/security/sasl/ExternalClient.java
+++ b/jdk/src/java.security.sasl/share/classes/com/sun/security/sasl/ExternalClient.java
@@ -141,8 +141,8 @@
     /**
      * Retrieves the negotiated property.
      * This method can be called only after the authentication exchange has
-     * completed (i.e., when <tt>isComplete()</tt> returns true); otherwise, a
-     * <tt>IllegalStateException</tt> is thrown.
+     * completed (i.e., when {@code isComplete()} returns true);
+     * otherwise, an {@code IllegalStateException} is thrown.
      *
      * @return null No property is applicable to this mechanism.
      * @exception IllegalStateException if this authentication exchange
diff --git a/jdk/src/java.security.sasl/share/classes/com/sun/security/sasl/PlainClient.java b/jdk/src/java.security.sasl/share/classes/com/sun/security/sasl/PlainClient.java
index 8bb3f3e..ce92c29 100644
--- a/jdk/src/java.security.sasl/share/classes/com/sun/security/sasl/PlainClient.java
+++ b/jdk/src/java.security.sasl/share/classes/com/sun/security/sasl/PlainClient.java
@@ -170,8 +170,8 @@
     /**
      * Retrieves the negotiated property.
      * This method can be called only after the authentication exchange has
-     * completed (i.e., when <tt>isComplete()</tt> returns true); otherwise, a
-     * <tt>SaslException</tt> is thrown.
+     * completed (i.e., when {@code isComplete()} returns true); otherwise, a
+     * {@code SaslException} is thrown.
      *
      * @return value of property; only QOP is applicable to PLAIN.
      * @exception IllegalStateException if this authentication exchange
diff --git a/jdk/src/java.security.sasl/share/classes/com/sun/security/sasl/digest/DigestMD5Client.java b/jdk/src/java.security.sasl/share/classes/com/sun/security/sasl/digest/DigestMD5Client.java
index 6ac1c93..624f780 100644
--- a/jdk/src/java.security.sasl/share/classes/com/sun/security/sasl/digest/DigestMD5Client.java
+++ b/jdk/src/java.security.sasl/share/classes/com/sun/security/sasl/digest/DigestMD5Client.java
@@ -567,7 +567,7 @@
      *    username-value
      *    cnonce-value
      *    authzid-value
-     * @returns <tt>digest-response</tt> in a byte array
+     * @return {@code digest-response} in a byte array
      * @throws SaslException if there is an error generating the
      * response value or the cnonce value.
      */
diff --git a/jdk/src/java.sql/share/classes/java/sql/Date.java b/jdk/src/java.sql/share/classes/java/sql/Date.java
index 0c425de..40593e6 100644
--- a/jdk/src/java.sql/share/classes/java/sql/Date.java
+++ b/jdk/src/java.sql/share/classes/java/sql/Date.java
@@ -295,11 +295,8 @@
     }
 
     /**
-     * Converts this {@code Date} object to a {@code LocalDate}
-     * <p>
-     * The conversion creates a {@code LocalDate} that represents the same
-     * date value as this {@code Date} in local time zone
-     *
+     * Creates a {@code LocalDate} instance using the year, month and day
+     * from this {@code Date} object.
      * @return a {@code LocalDate} object representing the same date value
      *
      * @since 1.8
diff --git a/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/AgreementMethod.java b/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/AgreementMethod.java
index c1da9be..27d2bea 100644
--- a/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/AgreementMethod.java
+++ b/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/AgreementMethod.java
@@ -31,38 +31,38 @@
  * based on a shared secret computed from certain types of compatible public
  * keys from both the sender and the recipient. Information from the originator
  * to determine the secret is indicated by an optional OriginatorKeyInfo
- * parameter child of an <code>AgreementMethod</code> element while that
+ * parameter child of an {@code AgreementMethod} element while that
  * associated with the recipient is indicated by an optional RecipientKeyInfo. A
  * shared key is derived from this shared secret by a method determined by the
  * Key Agreement algorithm.
  * <p>
  * <b>Note:</b> XML Encryption does not provide an on-line key agreement
- * negotiation protocol. The <code>AgreementMethod</code> element can be used by
+ * negotiation protocol. The {@code AgreementMethod} element can be used by
  * the originator to identify the keys and computational procedure that were
  * used to obtain a shared encryption key. The method used to obtain or select
  * the keys or algorithm used for the agreement computation is beyond the scope
  * of this specification.
  * <p>
- * The <code>AgreementMethod</code> element appears as the content of a
- * <code>ds:KeyInfo</code> since, like other <code>ds:KeyInfo</code> children,
- * it yields a key. This <code>ds:KeyInfo</code> is in turn a child of an
- * <code>EncryptedData</code> or <code>EncryptedKey</code> element. The
- * Algorithm attribute and KeySize child of the <code>EncryptionMethod</code>
- * element under this <code>EncryptedData</code> or <code>EncryptedKey</code>
+ * The {@code AgreementMethod} element appears as the content of a
+ * {@code ds:KeyInfo} since, like other {@code ds:KeyInfo} children,
+ * it yields a key. This {@code ds:KeyInfo} is in turn a child of an
+ * {@code EncryptedData} or {@code EncryptedKey} element. The
+ * Algorithm attribute and KeySize child of the {@code EncryptionMethod}
+ * element under this {@code EncryptedData} or {@code EncryptedKey}
  * element are implicit parameters to the key agreement computation. In cases
- * where this <code>EncryptionMethod</code> algorithm <code>URI</code> is
+ * where this {@code EncryptionMethod} algorithm {@code URI} is
  * insufficient to determine the key length, a KeySize MUST have been included.
  * In addition, the sender may place a KA-Nonce element under
- * <code>AgreementMethod</code> to assure that different keying material is
+ * {@code AgreementMethod} to assure that different keying material is
  * generated even for repeated agreements using the same sender and recipient
  * public keys.
  * <p>
  * If the agreed key is being used to wrap a key, then
- * <code>AgreementMethod</code> would appear inside a <code>ds:KeyInfo</code>
- * inside an <code>EncryptedKey</code> element.
+ * {@code AgreementMethod} would appear inside a {@code ds:KeyInfo}
+ * inside an {@code EncryptedKey} element.
  * <p>
  * The Schema for AgreementMethod is as follows:
- * <xmp>
+ * <pre>{@code
  * <element name="AgreementMethod" type="xenc:AgreementMethodType"/>
  * <complexType name="AgreementMethodType" mixed="true">
  *     <sequence>
@@ -74,15 +74,15 @@
  *     </sequence>
  *     <attribute name="Algorithm" type="anyURI" use="required"/>
  * </complexType>
- * </xmp>
+ * }</pre>
  *
  * @author Axl Mattheus
  */
 public interface AgreementMethod {
 
     /**
-     * Returns a <code>byte</code> array.
-     * @return a <code>byte</code> array.
+     * Returns a {@code byte} array.
+     * @return a {@code byte} array.
      */
     byte[] getKANonce();
 
@@ -93,30 +93,30 @@
     void setKANonce(byte[] kanonce);
 
     /**
-     * Returns additional information regarding the <code>AgreementMethod</code>.
-     * @return additional information regarding the <code>AgreementMethod</code>.
+     * Returns additional information regarding the {@code AgreementMethod}.
+     * @return additional information regarding the {@code AgreementMethod}.
      */
     Iterator<Element> getAgreementMethodInformation();
 
     /**
-     * Adds additional <code>AgreementMethod</code> information.
+     * Adds additional {@code AgreementMethod} information.
      *
-     * @param info a <code>Element</code> that represents additional information
+     * @param info a {@code Element} that represents additional information
      * specified by
-     *   <xmp>
+     *   <pre>{@code
      *     <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
-     *   </xmp>
+     *   }</pre>
      */
     void addAgreementMethodInformation(Element info);
 
     /**
-     * Removes additional <code>AgreementMethod</code> information.
+     * Removes additional {@code AgreementMethod} information.
      *
-     * @param info a <code>Element</code> that represents additional information
+     * @param info a {@code Element} that represents additional information
      * specified by
-     *   <xmp>
+     *   <pre>{@code
      *     <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
-     *   </xmp>
+     *   }</pre>
      */
     void revoveAgreementMethodInformation(Element info);
 
@@ -149,9 +149,9 @@
     void setRecipientKeyInfo(KeyInfo keyInfo);
 
     /**
-     * Returns the algorithm URI of this <code>CryptographicMethod</code>.
+     * Returns the algorithm URI of this {@code CryptographicMethod}.
      *
-     * @return the algorithm URI of this <code>CryptographicMethod</code>
+     * @return the algorithm URI of this {@code CryptographicMethod}
      */
     String getAlgorithm();
 }
diff --git a/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/CipherData.java b/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/CipherData.java
index 39654a9..c7b2b79 100644
--- a/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/CipherData.java
+++ b/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/CipherData.java
@@ -23,14 +23,14 @@
 package com.sun.org.apache.xml.internal.security.encryption;
 
 /**
- * <code>CipherData</code> provides encrypted data. It must either contain the
+ * {@code CipherData} provides encrypted data. It must either contain the
  * encrypted octet sequence as base64 encoded text of the
- * <code>CipherValue</code> element, or provide a reference to an external
+ * {@code CipherValue} element, or provide a reference to an external
  * location containing the encrypted octet sequence via the
- * <code>CipherReference</code> element.
+ * {@code CipherReference} element.
  * <p>
  * The schema definition is as follows:
- * <xmp>
+ * <pre>{@code
  * <element name='CipherData' type='xenc:CipherDataType'/>
  * <complexType name='CipherDataType'>
  *     <choice>
@@ -38,7 +38,7 @@
  *         <element ref='xenc:CipherReference'/>
  *     </choice>
  * </complexType>
- * </xmp>
+ * }</pre>
  *
  * @author Axl Mattheus
  */
@@ -52,32 +52,32 @@
 
     /**
      * Returns the type of encrypted data contained in the
-     * <code>CipherData</code>.
+     * {@code CipherData}.
      *
-     * @return <code>VALUE_TYPE</code> if the encrypted data is contained as
-     *   <code>CipherValue</code> or <code>REFERENCE_TYPE</code> if the
-     *   encrypted data is contained as <code>CipherReference</code>.
+     * @return {@code VALUE_TYPE} if the encrypted data is contained as
+     *   {@code CipherValue} or {@code REFERENCE_TYPE} if the
+     *   encrypted data is contained as {@code CipherReference}.
      */
     int getDataType();
 
     /**
-     * Returns the cipher value as a base64 encoded <code>byte</code> array.
+     * Returns the cipher value as a base64 encoded {@code byte} array.
      *
-     * @return the <code>CipherData</code>'s value.
+     * @return the {@code CipherData}'s value.
      */
     CipherValue getCipherValue();
 
     /**
-     * Sets the <code>CipherData</code>'s value.
+     * Sets the {@code CipherData}'s value.
      *
-     * @param value the value of the <code>CipherData</code>.
+     * @param value the value of the {@code CipherData}.
      * @throws XMLEncryptionException
      */
     void setCipherValue(CipherValue value) throws XMLEncryptionException;
 
     /**
      * Returns a reference to an external location containing the encrypted
-     * octet sequence (<code>byte</code> array).
+     * octet sequence ({@code byte} array).
      *
      * @return the reference to an external location containing the encrypted
      * octet sequence.
@@ -85,7 +85,7 @@
     CipherReference getCipherReference();
 
     /**
-     * Sets the <code>CipherData</code>'s reference.
+     * Sets the {@code CipherData}'s reference.
      *
      * @param reference an external location containing the encrypted octet sequence.
      * @throws XMLEncryptionException
diff --git a/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/CipherReference.java b/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/CipherReference.java
index 75b0dcb..d0d2dce 100644
--- a/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/CipherReference.java
+++ b/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/CipherReference.java
@@ -25,18 +25,18 @@
 import org.w3c.dom.Attr;
 
 /**
- * <code>CipherReference</code> identifies a source which, when processed,
+ * {@code CipherReference} identifies a source which, when processed,
  * yields the encrypted octet sequence.
  * <p>
- * The actual value is obtained as follows. The <code>CipherReference URI</code>
+ * The actual value is obtained as follows. The {@code CipherReference URI}
  * contains an identifier that is dereferenced. Should the
- * Transforms, the data resulting from dereferencing the <code>URI</code> is
+ * Transforms, the data resulting from dereferencing the {@code URI} is
  * transformed as specified so as to yield the intended cipher value. For
  * example, if the value is base64 encoded within an XML document; the
  * transforms could specify an XPath expression followed by a base64 decoding so
  * as to extract the octets.
  * <p>
- * The syntax of the <code>URI</code> and Transforms is similar to that of
+ * The syntax of the {@code URI} and Transforms is similar to that of
  * [XML-DSIG]. However, there is a difference between signature and encryption
  * processing. In [XML-DSIG] both generation and validation processing start
  * with the same source data and perform that transform in the same order. In
@@ -46,7 +46,7 @@
  * the &xenc; namespace.
  * <p>
  * The schema definition is as follows:
- * <xmp>
+ * <pre>{@code
  * <element name='CipherReference' type='xenc:CipherReferenceType'/>
  * <complexType name='CipherReferenceType'>
  *     <sequence>
@@ -54,15 +54,15 @@
  *     </sequence>
  *     <attribute name='URI' type='anyURI' use='required'/>
  * </complexType>
- * </xmp>
+ * }</pre>
  *
  * @author Axl Mattheus
  */
 public interface CipherReference {
     /**
-     * Returns an <code>URI</code> that contains an identifier that should be
+     * Returns an {@code URI} that contains an identifier that should be
      * dereferenced.
-     * @return an <code>URI</code> that contains an identifier that should be
+     * @return an {@code URI} that contains an identifier that should be
      * dereferenced.
      */
     String getURI();
@@ -75,8 +75,8 @@
     Attr getURIAsAttr();
 
     /**
-     * Returns the <code>Transforms</code> that specifies how to transform the
-     * <code>URI</code> to yield the appropriate cipher value.
+     * Returns the {@code Transforms} that specifies how to transform the
+     * {@code URI} to yield the appropriate cipher value.
      *
      * @return the transform that specifies how to transform the reference to
      *   yield the intended cipher value.
@@ -84,10 +84,10 @@
     Transforms getTransforms();
 
     /**
-     * Sets the <code>Transforms</code> that specifies how to transform the
-     * <code>URI</code> to yield the appropriate cipher value.
+     * Sets the {@code Transforms} that specifies how to transform the
+     * {@code URI} to yield the appropriate cipher value.
      *
-     * @param transforms the set of <code>Transforms</code> that specifies how
+     * @param transforms the set of {@code Transforms} that specifies how
      *   to transform the reference to yield the intended cipher value.
      */
     void setTransforms(Transforms transforms);
diff --git a/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/EncryptedData.java b/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/EncryptedData.java
index c09eece..04003d9 100644
--- a/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/EncryptedData.java
+++ b/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/EncryptedData.java
@@ -23,21 +23,21 @@
 package com.sun.org.apache.xml.internal.security.encryption;
 
 /**
- * The <code>EncryptedData</code> element is the core element in the syntax. Not
- * only does its <code>CipherData</code> child contain the encrypted data, but
+ * The {@code EncryptedData} element is the core element in the syntax. Not
+ * only does its {@code CipherData} child contain the encrypted data, but
  * it's also the element that replaces the encrypted element, or serves as the
  * new document root.
  * <p>
  * It's schema definition is as follows:
  * <p>
- * <xmp>
+ * <pre>{@code
  * <element name='EncryptedData' type='xenc:EncryptedDataType'/>
  * <complexType name='EncryptedDataType'>
  *     <complexContent>
  *         <extension base='xenc:EncryptedType'/>
  *     </complexContent>
  * </complexType>
- * </xmp>
+ * }</pre>
  *
  * @author Axl Mattheus
  */
diff --git a/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/EncryptedKey.java b/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/EncryptedKey.java
index 05fafaf..4c846b7 100644
--- a/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/EncryptedKey.java
+++ b/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/EncryptedKey.java
@@ -23,17 +23,17 @@
 package com.sun.org.apache.xml.internal.security.encryption;
 
 /**
- * The <code>EncryptedKey</code> element is used to transport encryption keys
+ * The {@code EncryptedKey} element is used to transport encryption keys
  * from the originator to a known recipient(s). It may be used as a stand-alone
  * XML document, be placed within an application document, or appear inside an
- * <code>EncryptedData</code> element as a child of a <code>ds:KeyInfo</code>
+ * {@code EncryptedData} element as a child of a {@code ds:KeyInfo}
  * element. The key value is always encrypted to the recipient(s). When
- * <code>EncryptedKey</code> is decrypted the resulting octets are made
- * available to the <code>EncryptionMethod</code> algorithm without any
+ * {@code EncryptedKey} is decrypted the resulting octets are made
+ * available to the {@code EncryptionMethod} algorithm without any
  * additional processing.
  * <p>
  * Its schema definition is as follows:
- * <xmp>
+ * <pre>{@code
  * <element name='EncryptedKey' type='xenc:EncryptedKeyType'/>
  * <complexType name='EncryptedKeyType'>
  *     <complexContent>
@@ -46,7 +46,7 @@
  *         </extension>
  *     </complexContent>
  * </complexType>
- * </xmp>
+ * }</pre>
  *
  * @author Axl Mattheus
  */
@@ -55,31 +55,31 @@
     /**
      * Returns a hint as to which recipient this encrypted key value is intended for.
      *
-     * @return the recipient of the <code>EncryptedKey</code>.
+     * @return the recipient of the {@code EncryptedKey}.
      */
     String getRecipient();
 
     /**
-     * Sets the recipient for this <code>EncryptedKey</code>.
+     * Sets the recipient for this {@code EncryptedKey}.
      *
-     * @param recipient the recipient for this <code>EncryptedKey</code>.
+     * @param recipient the recipient for this {@code EncryptedKey}.
      */
     void setRecipient(String recipient);
 
     /**
      * Returns pointers to data and keys encrypted using this key. The reference
-     * list may contain multiple references to <code>EncryptedKey</code> and
-     * <code>EncryptedData</code> elements. This is done using
-     * <code>KeyReference</code> and <code>DataReference</code> elements
+     * list may contain multiple references to {@code EncryptedKey} and
+     * {@code EncryptedData} elements. This is done using
+     * {@code KeyReference} and {@code DataReference} elements
      * respectively.
      *
-     * @return an <code>Iterator</code> over all the <code>ReferenceList</code>s
-     *   contained in this <code>EncryptedKey</code>.
+     * @return an {@code Iterator} over all the {@code ReferenceList}s
+     *   contained in this {@code EncryptedKey}.
      */
     ReferenceList getReferenceList();
 
     /**
-     * Sets the <code>ReferenceList</code> to the <code>EncryptedKey</code>.
+     * Sets the {@code ReferenceList} to the {@code EncryptedKey}.
      *
      * @param list a list of pointers to data elements encrypted using this key.
      */
@@ -87,19 +87,19 @@
 
     /**
      * Returns a user readable name with the key value. This may then be used to
-     * reference the key using the <code>ds:KeyName</code> element within
-     * <code>ds:KeyInfo</code>. The same <code>CarriedKeyName</code> label,
+     * reference the key using the {@code ds:KeyName} element within
+     * {@code ds:KeyInfo}. The same {@code CarriedKeyName} label,
      * unlike an ID type, may occur multiple times within a single document. The
-     * value of the key is to be the same in all <code>EncryptedKey</code>
-     * elements identified with the same <code>CarriedKeyName</code> label
+     * value of the key is to be the same in all {@code EncryptedKey}
+     * elements identified with the same {@code CarriedKeyName} label
      * within a single XML document.
      * <br>
      * <b>Note</b> that because whitespace is significant in the value of
-     * the <code>ds:KeyName</code> element, whitespace is also significant in
-     * the value of the <code>CarriedKeyName</code> element.
+     * the {@code ds:KeyName} element, whitespace is also significant in
+     * the value of the {@code CarriedKeyName} element.
      *
      * @return over all the carried names contained in
-     *   this <code>EncryptedKey</code>.
+     *   this {@code EncryptedKey}.
      */
     String getCarriedName();
 
diff --git a/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/EncryptedType.java b/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/EncryptedType.java
index 61e7e51..6c78671 100644
--- a/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/EncryptedType.java
+++ b/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/EncryptedType.java
@@ -25,13 +25,13 @@
 import com.sun.org.apache.xml.internal.security.keys.KeyInfo;
 
 /**
- * EncryptedType is the abstract type from which <code>EncryptedData</code> and
- * <code>EncryptedKey</code> are derived. While these two latter element types
+ * EncryptedType is the abstract type from which {@code EncryptedData} and
+ * {@code EncryptedKey} are derived. While these two latter element types
  * are very similar with respect to their content models, a syntactical
  * distinction is useful to processing.
  * <p>
  * Its schema definition is as follows:
- * <xmp>
+ * <pre>{@code
  * <complexType name='EncryptedType' abstract='true'>
  *     <sequence>
  *         <element name='EncryptionMethod' type='xenc:EncryptionMethodType'
@@ -45,17 +45,17 @@
  *     <attribute name='MimeType' type='string' use='optional'/>
  *     <attribute name='Encoding' type='anyURI' use='optional'/>
  * </complexType>
- * </xmp>
+ * }</pre>
  *
  * @author Axl Mattheus
  */
 public interface EncryptedType {
 
     /**
-     * Returns a <code>String</code> providing for the standard method of
+     * Returns a {@code String} providing for the standard method of
      * assigning an id to the element within the document context.
      *
-     * @return the id for the <code>EncryptedType</code>.
+     * @return the id for the {@code EncryptedType}.
      */
     String getId();
 
@@ -67,11 +67,11 @@
     void setId(String id);
 
     /**
-     * Returns an <code>URI</code> identifying type information about the
+     * Returns an {@code URI} identifying type information about the
      * plaintext form of the encrypted content. While optional, this
      * specification takes advantage of it for mandatory processing described in
      * Processing Rules: Decryption (section 4.2). If the
-     * <code>EncryptedData</code> element contains data of Type 'element' or
+     * {@code EncryptedData} element contains data of Type 'element' or
      * element 'content', and replaces that data in an XML document context, it
      * is strongly recommended the Type attribute be provided. Without this
      * information, the decryptor will be unable to automatically restore the
@@ -85,13 +85,13 @@
     /**
      * Sets the type.
      *
-     * @param type an <code>URI</code> identifying type information about the
+     * @param type an {@code URI} identifying type information about the
      *   plaintext form of the encrypted content.
      */
     void setType(String type);
 
     /**
-     * Returns a <code>String</code> which describes the media type of the data
+     * Returns a {@code String} which describes the media type of the data
      * which has been encrypted. The value of this attribute has values defined
      * by [MIME]. For example, if the data that is encrypted is a base64 encoded
      * PNG, the transfer Encoding may be specified as
@@ -112,29 +112,29 @@
     /**
      * Sets the mime type.
      *
-     * @param type a <code>String</code> which describes the media type of the
+     * @param type a {@code String} which describes the media type of the
      *   data which has been encrypted.
      */
     void setMimeType(String type);
 
     /**
-     * Return an <code>URI</code> representing the encoding of the
-     * <code>EncryptedType</code>.
+     * Return an {@code URI} representing the encoding of the
+     * {@code EncryptedType}.
      *
-     * @return the encoding of this <code>EncryptedType</code>.
+     * @return the encoding of this {@code EncryptedType}.
      */
     String getEncoding();
 
     /**
-     * Sets the <code>URI</code> representing the encoding of the
-     * <code>EncryptedType</code>.
+     * Sets the {@code URI} representing the encoding of the
+     * {@code EncryptedType}.
      *
      * @param encoding
      */
     void setEncoding(String encoding);
 
     /**
-     * Returns an <code>EncryptionMethod</code> that describes the encryption
+     * Returns an {@code EncryptionMethod} that describes the encryption
      * algorithm applied to the cipher data. If the element is absent, the
      * encryption algorithm must be known by the recipient or the decryption
      * will fail.
@@ -144,17 +144,17 @@
     EncryptionMethod getEncryptionMethod();
 
     /**
-     * Sets the <code>EncryptionMethod</code> used to encrypt the cipher data.
+     * Sets the {@code EncryptionMethod} used to encrypt the cipher data.
      *
-     * @param method the <code>EncryptionMethod</code>.
+     * @param method the {@code EncryptionMethod}.
      */
     void setEncryptionMethod(EncryptionMethod method);
 
     /**
-     * Returns the <code>ds:KeyInfo</code>, that carries information about the
+     * Returns the {@code ds:KeyInfo}, that carries information about the
      * key used to encrypt the data. Subsequent sections of this specification
      * define new elements that may appear as children of
-     * <code>ds:KeyInfo</code>.
+     * {@code ds:KeyInfo}.
      *
      * @return information about the key that encrypted the cipher data.
      */
@@ -163,14 +163,14 @@
     /**
      * Sets the encryption key information.
      *
-     * @param info the <code>ds:KeyInfo</code>, that carries information about
+     * @param info the {@code ds:KeyInfo}, that carries information about
      *   the key used to encrypt the data.
      */
     void setKeyInfo(KeyInfo info);
 
     /**
-     * Returns the <code>CipherReference</code> that contains the
-     * <code>CipherValue</code> or <code>CipherReference</code> with the
+     * Returns the {@code CipherReference} that contains the
+     * {@code CipherValue} or {@code CipherReference} with the
      * encrypted data.
      *
      * @return the cipher data for the encrypted type.
@@ -179,16 +179,16 @@
 
     /**
      * Returns additional information concerning the generation of the
-     * <code>EncryptedType</code>.
+     * {@code EncryptedType}.
      *
      * @return information relating to the generation of the
-     *   <code>EncryptedType</code>.
+     *   {@code EncryptedType}.
      */
     EncryptionProperties getEncryptionProperties();
 
     /**
-     * Sets the <code>EncryptionProperties</code> that supplies additional
-     * information about the generation of the <code>EncryptedType</code>.
+     * Sets the {@code EncryptionProperties} that supplies additional
+     * information about the generation of the {@code EncryptedType}.
      *
      * @param properties
      */
diff --git a/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/EncryptionMethod.java b/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/EncryptionMethod.java
index b7fedd2..ddd066e 100644
--- a/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/EncryptionMethod.java
+++ b/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/EncryptionMethod.java
@@ -26,12 +26,12 @@
 import org.w3c.dom.Element;
 
 /**
- * <code>EncryptionMethod</code> describes the encryption algorithm applied to
+ * {@code EncryptionMethod} describes the encryption algorithm applied to
  * the cipher data. If the element is absent, the encryption algorithm must be
  * known by the recipient or the decryption will fail.
  * <p>
  * It is defined as follows:
- * <xmp>
+ * <pre>{@code
  * <complexType name='EncryptionMethodType' mixed='true'>
  *     <sequence>
  *         <element name='KeySize' minOccurs='0' type='xenc:KeySizeType'/>
@@ -40,7 +40,7 @@
  *     </sequence>
  *     <attribute name='Algorithm' type='anyURI' use='required'/>
  * </complexType>
- * </xmp>
+ * }</pre>
  *
  * @author Axl Mattheus
  */
@@ -108,10 +108,10 @@
 
     /**
      * Returns an iterator over all the additional elements contained in the
-     * <code>EncryptionMethod</code>.
+     * {@code EncryptionMethod}.
      *
-     * @return an <code>Iterator</code> over all the additional information
-     *   about the <code>EncryptionMethod</code>.
+     * @return an {@code Iterator} over all the additional information
+     *   about the {@code EncryptionMethod}.
      */
     Iterator<Element> getEncryptionMethodInformation();
 
@@ -126,7 +126,7 @@
      * Removes encryption method information.
      *
      * @param information the information to remove from the
-     *   <code>EncryptionMethod</code>.
+     *   {@code EncryptionMethod}.
      */
     void removeEncryptionMethodInformation(Element information);
 }
diff --git a/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/EncryptionProperties.java b/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/EncryptionProperties.java
index 736d63f..c559e4d 100644
--- a/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/EncryptionProperties.java
+++ b/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/EncryptionProperties.java
@@ -25,15 +25,15 @@
 import java.util.Iterator;
 
 /**
- * <code>EncryptionProperties</code> can hold additional information concerning
- * the generation of the <code>EncryptedData</code> or
- * <code>EncryptedKey</code>. This information is wraped int an
- * <code>EncryptionProperty</code> element. Examples of additional information
+ * {@code EncryptionProperties} can hold additional information concerning
+ * the generation of the {@code EncryptedData} or
+ * {@code EncryptedKey}. This information is wraped int an
+ * {@code EncryptionProperty} element. Examples of additional information
  * is e.g., a date/time stamp or the serial number of cryptographic hardware
  * used during encryption).
  * <p>
  * It is defined as follows:
- * <xmp>
+ * <pre>{@code
  * <element name='EncryptionProperties' type='xenc:EncryptionPropertiesType'/>
  * <complexType name='EncryptionPropertiesType'>
  *     <sequence>
@@ -41,14 +41,14 @@
  *     </sequence>
  *     <attribute name='Id' type='ID' use='optional'/>
  * </complexType>
- * </xmp>
+ * }</pre>
  *
  * @author Axl Mattheus
  */
 public interface EncryptionProperties {
 
     /**
-     * Returns the <code>EncryptionProperties</code>' id.
+     * Returns the {@code EncryptionProperties}' id.
      *
      * @return the id.
      */
@@ -62,23 +62,23 @@
     void setId(String id);
 
     /**
-     * Returns an <code>Iterator</code> over all the
-     * <code>EncryptionPropterty</code> elements contained in this
-     * <code>EncryptionProperties</code>.
+     * Returns an {@code Iterator} over all the
+     * {@code EncryptionPropterty} elements contained in this
+     * {@code EncryptionProperties}.
      *
-     * @return an <code>Iterator</code> over all the encryption properties.
+     * @return an {@code Iterator} over all the encryption properties.
      */
     Iterator<EncryptionProperty> getEncryptionProperties();
 
     /**
-     * Adds an <code>EncryptionProperty</code>.
+     * Adds an {@code EncryptionProperty}.
      *
      * @param property
      */
     void addEncryptionProperty(EncryptionProperty property);
 
     /**
-     * Removes the specified <code>EncryptionProperty</code>.
+     * Removes the specified {@code EncryptionProperty}.
      *
      * @param property
      */
diff --git a/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/EncryptionProperty.java b/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/EncryptionProperty.java
index fc96901..a7c29d9 100644
--- a/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/EncryptionProperty.java
+++ b/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/EncryptionProperty.java
@@ -27,16 +27,16 @@
 
 /**
  * Additional information items concerning the generation of the
- * <code>EncryptedData</code> or <code>EncryptedKey</code> can be placed in an
- * <code>EncryptionProperty</code> element (e.g., date/time stamp or the serial
+ * {@code EncryptedData} or {@code EncryptedKey} can be placed in an
+ * {@code EncryptionProperty} element (e.g., date/time stamp or the serial
  * number of cryptographic hardware used during encryption). The Target
- * attribute identifies the <code>EncryptedType</code> structure being
+ * attribute identifies the {@code EncryptedType} structure being
  * described. anyAttribute permits the inclusion of attributes from the XML
- * namespace to be included (i.e., <code>xml:space</code>,
- * <code>xml:lang</code>, and <code>xml:base</code>).
+ * namespace to be included (i.e., {@code xml:space},
+ * {@code xml:lang}, and {@code xml:base}).
  * <p>
  * It is defined as follows:
- * <xmp>
+ * <pre>{@code
  * <element name='EncryptionProperty' type='xenc:EncryptionPropertyType'/>
  * <complexType name='EncryptionPropertyType' mixed='true'>
  *     <choice maxOccurs='unbounded'>
@@ -46,17 +46,17 @@
  *     <attribute name='Id' type='ID' use='optional'/>
  *     <anyAttribute namespace="http://www.w3.org/XML/1998/namespace"/>
  * </complexType>
- * </xmp>
+ * }</pre>
  *
  * @author Axl Mattheus
  */
 public interface EncryptionProperty {
 
     /**
-     * Returns the <code>EncryptedType</code> being described.
+     * Returns the {@code EncryptedType} being described.
      *
-     * @return the <code>EncryptedType</code> being described by this
-     *   <code>EncryptionProperty</code>.
+     * @return the {@code EncryptedType} being described by this
+     *   {@code EncryptionProperty}.
      */
     String getTarget();
 
@@ -68,7 +68,7 @@
     void setTarget(String target);
 
     /**
-     * Returns the id of the <CODE>EncryptionProperty</CODE>.
+     * Returns the id of the {@code EncryptionProperty}.
      *
      * @return the id.
      */
@@ -82,7 +82,7 @@
     void setId(String id);
 
     /**
-     * Returns the attribute's value in the <code>xml</code> namespace.
+     * Returns the attribute's value in the {@code xml} namespace.
      *
      * @param attribute
      * @return the attribute's value.
@@ -98,9 +98,9 @@
     void setAttribute(String attribute, String value);
 
     /**
-     * Returns the properties of the <CODE>EncryptionProperty</CODE>.
+     * Returns the properties of the {@code EncryptionProperty}.
      *
-     * @return an <code>Iterator</code> over all the additional encryption
+     * @return an {@code Iterator} over all the additional encryption
      *   information contained in this class.
      */
     Iterator<Element> getEncryptionInformation();
diff --git a/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/Reference.java b/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/Reference.java
index dc528ce..9c7db20 100644
--- a/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/Reference.java
+++ b/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/Reference.java
@@ -26,55 +26,55 @@
 import org.w3c.dom.Element;
 
 /**
- * A wrapper for a pointer from a key value of an <code>EncryptedKey</code> to
- * items encrypted by that key value (<code>EncryptedData</code> or
- * <code>EncryptedKey</code> elements).
+ * A wrapper for a pointer from a key value of an {@code EncryptedKey} to
+ * items encrypted by that key value ({@code EncryptedData} or
+ * {@code EncryptedKey} elements).
  * <p>
  * It is defined as follows:
- * <xmp>
+ * <pre>{@code
  * <complexType name='ReferenceType'>
  *     <sequence>
  *         <any namespace='##other' minOccurs='0' maxOccurs='unbounded'/>
  *     </sequence>
  *     <attribute name='URI' type='anyURI' use='required'/>
  * </complexType>
- * </xmp>
+ * }</pre>
  *
  * @author Axl Mattheus
  * @see ReferenceList
  */
 public interface Reference {
     /**
-     * Returns the <code>Element</code> tag name for this <code>Reference</code>.
+     * Returns the {@code Element} tag name for this {@code Reference}.
      *
-     * @return the tag name of this <code>Reference</code>.
+     * @return the tag name of this {@code Reference}.
      */
     String getType();
 
     /**
-     * Returns a <code>URI</code> that points to an <code>Element</code> that
+     * Returns a {@code URI} that points to an {@code Element} that
      * were encrypted using the key defined in the enclosing
-     * <code>EncryptedKey</code> element.
+     * {@code EncryptedKey} element.
      *
      * @return an Uniform Resource Identifier that qualifies an
-     *   <code>EncryptedType</code>.
+     *   {@code EncryptedType}.
      */
     String getURI();
 
     /**
-     * Sets a <code>URI</code> that points to an <code>Element</code> that
+     * Sets a {@code URI} that points to an {@code Element} that
      * were encrypted using the key defined in the enclosing
-     * <code>EncryptedKey</code> element.
+     * {@code EncryptedKey} element.
      *
      * @param uri the Uniform Resource Identifier that qualifies an
-     *   <code>EncryptedType</code>.
+     *   {@code EncryptedType}.
      */
     void setURI(String uri);
 
     /**
-     * Returns an <code>Iterator</code> over all the child elements contained in
-     * this <code>Reference</code> that will aid the recipient in retrieving the
-     * <code>EncryptedKey</code> and/or <code>EncryptedData</code> elements.
+     * Returns an {@code Iterator} over all the child elements contained in
+     * this {@code Reference} that will aid the recipient in retrieving the
+     * {@code EncryptedKey} and/or {@code EncryptedData} elements.
      * These could include information such as XPath transforms, decompression
      * transforms, or information on how to retrieve the elements from a
      * document storage facility.
diff --git a/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/ReferenceList.java b/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/ReferenceList.java
index 73d46a2..50343e5 100644
--- a/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/ReferenceList.java
+++ b/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/ReferenceList.java
@@ -25,12 +25,12 @@
 import java.util.Iterator;
 
 /**
- * <code>ReferenceList</code> is an element that contains pointers from a key
- * value of an <code>EncryptedKey</code> to items encrypted by that key value
- * (<code>EncryptedData</code> or <code>EncryptedKey</code> elements).
+ * {@code ReferenceList} is an element that contains pointers from a key
+ * value of an {@code EncryptedKey} to items encrypted by that key value
+ * ({@code EncryptedData} or {@code EncryptedKey} elements).
  * <p>
  * It is defined as follows:
- * <xmp>
+ * <pre>{@code
  * <element name='ReferenceList'>
  *     <complexType>
  *         <choice minOccurs='1' maxOccurs='unbounded'>
@@ -39,7 +39,7 @@
  *         </choice>
  *     </complexType>
  * </element>
- * </xmp>
+ * }</pre>
  *
  * @author Axl Mattheus
  * @see Reference
@@ -56,54 +56,54 @@
      * Adds a reference to this reference list.
      *
      * @param reference the reference to add.
-     * @throws IllegalAccessException if the <code>Reference</code> is not an
-     *   instance of <code>DataReference</code> or <code>KeyReference</code>.
+     * @throws IllegalAccessException if the {@code Reference} is not an
+     *   instance of {@code DataReference} or {@code KeyReference}.
      */
     void add(Reference reference);
 
     /**
-     * Removes a reference from the <code>ReferenceList</code>.
+     * Removes a reference from the {@code ReferenceList}.
      *
      * @param reference the reference to remove.
      */
     void remove(Reference reference);
 
     /**
-     * Returns the size of the <code>ReferenceList</code>.
+     * Returns the size of the {@code ReferenceList}.
      *
-     * @return the size of the <code>ReferenceList</code>.
+     * @return the size of the {@code ReferenceList}.
      */
     int size();
 
     /**
-     * Indicates if the <code>ReferenceList</code> is empty.
+     * Indicates if the {@code ReferenceList} is empty.
      *
-     * @return <code><b>true</b></code> if the <code>ReferenceList</code> is
-     *     empty, else <code><b>false</b></code>.
+     * @return <b>{@code true}</b> if the {@code ReferenceList} is
+     *     empty, else <b>{@code false}</b>.
      */
     boolean isEmpty();
 
     /**
-     * Returns an <code>Iterator</code> over all the <code>Reference</code>s
-     * contained in this <code>ReferenceList</code>.
+     * Returns an {@code Iterator} over all the {@code Reference}s
+     * contained in this {@code ReferenceList}.
      *
      * @return Iterator.
      */
     Iterator<Reference> getReferences();
 
     /**
-     * <code>DataReference</code> factory method. Returns a
-     * <code>DataReference</code>.
+     * {@code DataReference} factory method. Returns a
+     * {@code DataReference}.
      * @param uri
-     * @return a <code>DataReference</code>.
+     * @return a {@code DataReference}.
      */
     Reference newDataReference(String uri);
 
     /**
-     * <code>KeyReference</code> factory method. Returns a
-     * <code>KeyReference</code>.
+     * {@code KeyReference} factory method. Returns a
+     * {@code KeyReference}.
      * @param uri
-     * @return a <code>KeyReference</code>.
+     * @return a {@code KeyReference}.
      */
     Reference newKeyReference(String uri);
 }
diff --git a/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/Transforms.java b/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/Transforms.java
index 02d083b..e6c8303 100644
--- a/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/Transforms.java
+++ b/jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/encryption/Transforms.java
@@ -23,16 +23,16 @@
 package com.sun.org.apache.xml.internal.security.encryption;
 
 /**
- * A container for <code>ds:Transform</code>s.
+ * A container for {@code ds:Transform}s.
  * <p>
  * It is defined as follows:
- * <xmp>
+ * <pre>{@code
  * <complexType name='TransformsType'>
  *     <sequence>
  *         <element ref='ds:Transform' maxOccurs='unbounded'/>
  *     </sequence>
  * </complexType>
- * </xmp>
+ * }</pre>
  *
  * @author Axl Mattheus
  * @see com.sun.org.apache.xml.internal.security.encryption.CipherReference
diff --git a/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/KeySelectorException.java b/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/KeySelectorException.java
index 5f55297..2b43f0d 100644
--- a/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/KeySelectorException.java
+++ b/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/KeySelectorException.java
@@ -33,8 +33,8 @@
 /**
  * Indicates an exceptional condition thrown by a {@link KeySelector}.
  *
- * <p>A <code>KeySelectorException</code> can contain a cause: another
- * throwable that caused this <code>KeySelectorException</code> to get thrown.
+ * <p>A {@code KeySelectorException} can contain a cause: another
+ * throwable that caused this {@code KeySelectorException} to get thrown.
  *
  * @author Sean Mullan
  * @author JSR 105 Expert Group
@@ -46,7 +46,7 @@
 
     /**
      * The throwable that caused this exception to get thrown, or
-     * <code>null</code> if this exception was not caused by another throwable
+     * {@code null} if this exception was not caused by another throwable
      * or if the causative throwable is unknown.
      *
      * @serial
@@ -54,15 +54,15 @@
     private Throwable cause;
 
     /**
-     * Constructs a new <code>KeySelectorException</code> with
-     * <code>null</code> as its detail message.
+     * Constructs a new {@code KeySelectorException} with
+     * {@code null} as its detail message.
      */
     public KeySelectorException() {
         super();
     }
 
     /**
-     * Constructs a new <code>KeySelectorException</code> with the specified
+     * Constructs a new {@code KeySelectorException} with the specified
      * detail message.
      *
      * @param message the detail message
@@ -72,14 +72,14 @@
     }
 
     /**
-     * Constructs a new <code>KeySelectorException</code> with the
+     * Constructs a new {@code KeySelectorException} with the
      * specified detail message and cause.
      * <p>Note that the detail message associated with
-     * <code>cause</code> is <i>not</i> automatically incorporated in
+     * {@code cause} is <i>not</i> automatically incorporated in
      * this exception's detail message.
      *
      * @param message the detail message
-     * @param cause the cause (A <tt>null</tt> value is permitted, and
+     * @param cause the cause (A {@code null} value is permitted, and
      *        indicates that the cause is nonexistent or unknown.)
      */
     public KeySelectorException(String message, Throwable cause) {
@@ -88,13 +88,13 @@
     }
 
     /**
-     * Constructs a new <code>KeySelectorException</code> with the specified
+     * Constructs a new {@code KeySelectorException} with the specified
      * cause and a detail message of
-     * <code>(cause==null ? null : cause.toString())</code>
+     * {@code (cause==null ? null : cause.toString())}
      * (which typically contains the class and detail message of
-     * <code>cause</code>).
+     * {@code cause}).
      *
-     * @param cause the cause (A <tt>null</tt> value is permitted, and
+     * @param cause the cause (A {@code null} value is permitted, and
      *        indicates that the cause is nonexistent or unknown.)
      */
     public KeySelectorException(Throwable cause) {
@@ -103,20 +103,20 @@
     }
 
     /**
-     * Returns the cause of this <code>KeySelectorException</code> or
-     * <code>null</code> if the cause is nonexistent or unknown.  (The
+     * Returns the cause of this {@code KeySelectorException} or
+     * {@code null} if the cause is nonexistent or unknown.  (The
      * cause is the throwable that caused this
-     * <code>KeySelectorException</code> to get thrown.)
+     * {@code KeySelectorException} to get thrown.)
      *
-     * @return the cause of this <code>KeySelectorException</code> or
-     *         <code>null</code> if the cause is nonexistent or unknown.
+     * @return the cause of this {@code KeySelectorException} or
+     *         {@code null} if the cause is nonexistent or unknown.
      */
     public Throwable getCause() {
         return cause;
     }
 
     /**
-     * Prints this <code>KeySelectorException</code>, its backtrace and
+     * Prints this {@code KeySelectorException}, its backtrace and
      * the cause's backtrace to the standard error stream.
      */
     public void printStackTrace() {
@@ -125,10 +125,10 @@
     }
 
     /**
-     * Prints this <code>KeySelectorException</code>, its backtrace and
+     * Prints this {@code KeySelectorException}, its backtrace and
      * the cause's backtrace to the specified print stream.
      *
-     * @param s <code>PrintStream</code> to use for output
+     * @param s {@code PrintStream} to use for output
      */
     public void printStackTrace(PrintStream s) {
         super.printStackTrace(s);
@@ -136,10 +136,10 @@
     }
 
     /**
-     * Prints this <code>KeySelectorException</code>, its backtrace and
+     * Prints this {@code KeySelectorException}, its backtrace and
      * the cause's backtrace to the specified print writer.
      *
-     * @param s <code>PrintWriter</code> to use for output
+     * @param s {@code PrintWriter} to use for output
      */
     public void printStackTrace(PrintWriter s) {
         super.printStackTrace(s);
diff --git a/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/MarshalException.java b/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/MarshalException.java
index 2d15b90..0636a4c 100644
--- a/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/MarshalException.java
+++ b/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/MarshalException.java
@@ -39,8 +39,8 @@
  * Indicates an exceptional condition that occurred during the XML
  * marshalling or unmarshalling process.
  *
- * <p>A <code>MarshalException</code> can contain a cause: another
- * throwable that caused this <code>MarshalException</code> to get thrown.
+ * <p>A {@code MarshalException} can contain a cause: another
+ * throwable that caused this {@code MarshalException} to get thrown.
  *
  * @author Sean Mullan
  * @author JSR 105 Expert Group
@@ -62,15 +62,15 @@
     private Throwable cause;
 
     /**
-     * Constructs a new <code>MarshalException</code> with
-     * <code>null</code> as its detail message.
+     * Constructs a new {@code MarshalException} with
+     * {@code null} as its detail message.
      */
     public MarshalException() {
         super();
     }
 
     /**
-     * Constructs a new <code>MarshalException</code> with the specified
+     * Constructs a new {@code MarshalException} with the specified
      * detail message.
      *
      * @param message the detail message
@@ -80,14 +80,14 @@
     }
 
     /**
-     * Constructs a new <code>MarshalException</code> with the
+     * Constructs a new {@code MarshalException} with the
      * specified detail message and cause.
      * <p>Note that the detail message associated with
-     * <code>cause</code> is <i>not</i> automatically incorporated in
+     * {@code cause} is <i>not</i> automatically incorporated in
      * this exception's detail message.
      *
      * @param message the detail message
-     * @param cause the cause (A <tt>null</tt> value is permitted, and
+     * @param cause the cause (A {@code null} value is permitted, and
      *        indicates that the cause is nonexistent or unknown.)
      */
     public MarshalException(String message, Throwable cause) {
@@ -96,12 +96,11 @@
     }
 
     /**
-     * Constructs a new <code>MarshalException</code> with the specified cause
-     * and a detail message of <code>(cause==null ? null : cause.toString())
-     * </code> (which typically contains the class and detail message of
-     * <code>cause</code>).
+     * Constructs a new {@code MarshalException} with the specified cause
+     * and a detail message of {@code (cause==null ? null : cause.toString())}
+     * (which typically contains the class and detail message of {@code cause}).
      *
-     * @param cause the cause (A <tt>null</tt> value is permitted, and
+     * @param cause the cause (A {@code null} value is permitted, and
      *        indicates that the cause is nonexistent or unknown.)
      */
     public MarshalException(Throwable cause) {
@@ -110,20 +109,20 @@
     }
 
     /**
-     * Returns the cause of this <code>MarshalException</code> or
-     * <code>null</code> if the cause is nonexistent or unknown.  (The
+     * Returns the cause of this {@code MarshalException} or
+     * {@code null} if the cause is nonexistent or unknown.  (The
      * cause is the throwable that caused this
-     * <code>MarshalException</code> to get thrown.)
+     * {@code MarshalException} to get thrown.)
      *
-     * @return the cause of this <code>MarshalException</code> or
-     *         <code>null</code> if the cause is nonexistent or unknown.
+     * @return the cause of this {@code MarshalException} or
+     *         {@code null} if the cause is nonexistent or unknown.
      */
     public Throwable getCause() {
         return cause;
     }
 
     /**
-     * Prints this <code>MarshalException</code>, its backtrace and
+     * Prints this {@code MarshalException}, its backtrace and
      * the cause's backtrace to the standard error stream.
      */
     public void printStackTrace() {
@@ -132,10 +131,10 @@
     }
 
     /**
-     * Prints this <code>MarshalException</code>, its backtrace and
+     * Prints this {@code MarshalException}, its backtrace and
      * the cause's backtrace to the specified print stream.
      *
-     * @param s <code>PrintStream</code> to use for output
+     * @param s {@code PrintStream} to use for output
      */
     public void printStackTrace(PrintStream s) {
         super.printStackTrace(s);
@@ -143,10 +142,10 @@
     }
 
     /**
-     * Prints this <code>MarshalException</code>, its backtrace and
+     * Prints this {@code MarshalException}, its backtrace and
      * the cause's backtrace to the specified print writer.
      *
-     * @param s <code>PrintWriter</code> to use for output
+     * @param s {@code PrintWriter} to use for output
      */
     public void printStackTrace(PrintWriter s) {
         super.printStackTrace(s);
diff --git a/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/NoSuchMechanismException.java b/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/NoSuchMechanismException.java
index a303278..2347743 100644
--- a/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/NoSuchMechanismException.java
+++ b/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/NoSuchMechanismException.java
@@ -39,8 +39,8 @@
  * This exception is thrown when a particular XML mechanism is requested but
  * is not available in the environment.
  *
- * <p>A <code>NoSuchMechanismException</code> can contain a cause: another
- * throwable that caused this <code>NoSuchMechanismException</code> to get
+ * <p>A {@code NoSuchMechanismException} can contain a cause: another
+ * throwable that caused this {@code NoSuchMechanismException} to get
  * thrown.
  *
  * @author Sean Mullan
@@ -63,15 +63,15 @@
     private Throwable cause;
 
     /**
-     * Constructs a new <code>NoSuchMechanismException</code> with
-     * <code>null</code> as its detail message.
+     * Constructs a new {@code NoSuchMechanismException} with
+     * {@code null} as its detail message.
      */
     public NoSuchMechanismException() {
         super();
     }
 
     /**
-     * Constructs a new <code>NoSuchMechanismException</code> with the
+     * Constructs a new {@code NoSuchMechanismException} with the
      * specified detail message.
      *
      * @param message the detail message
@@ -81,14 +81,14 @@
     }
 
     /**
-     * Constructs a new <code>NoSuchMechanismException</code> with the
+     * Constructs a new {@code NoSuchMechanismException} with the
      * specified detail message and cause.
      * <p>Note that the detail message associated with
-     * <code>cause</code> is <i>not</i> automatically incorporated in
+     * {@code cause} is <i>not</i> automatically incorporated in
      * this exception's detail message.
      *
      * @param message the detail message
-     * @param cause the cause (A <tt>null</tt> value is permitted, and
+     * @param cause the cause (A {@code null} value is permitted, and
      *        indicates that the cause is nonexistent or unknown.)
      */
     public NoSuchMechanismException(String message, Throwable cause) {
@@ -97,12 +97,12 @@
     }
 
     /**
-     * Constructs a new <code>NoSuchMechanismException</code> with the
+     * Constructs a new {@code NoSuchMechanismException} with the
      * specified cause and a detail message of
-     * <code>(cause==null ? null : cause.toString())</code> (which typically
-     * contains the class and detail message of <code>cause</code>).
+     * {@code (cause==null ? null : cause.toString())} (which typically
+     * contains the class and detail message of {@code cause}).
      *
-     * @param cause the cause (A <tt>null</tt> value is permitted, and
+     * @param cause the cause (A {@code null} value is permitted, and
      *        indicates that the cause is nonexistent or unknown.)
      */
     public NoSuchMechanismException(Throwable cause) {
@@ -111,20 +111,20 @@
     }
 
     /**
-     * Returns the cause of this <code>NoSuchMechanismException</code> or
-     * <code>null</code> if the cause is nonexistent or unknown.  (The
+     * Returns the cause of this {@code NoSuchMechanismException} or
+     * {@code null} if the cause is nonexistent or unknown.  (The
      * cause is the throwable that caused this
-     * <code>NoSuchMechanismException</code> to get thrown.)
+     * {@code NoSuchMechanismException} to get thrown.)
      *
-     * @return the cause of this <code>NoSuchMechanismException</code> or
-     *         <code>null</code> if the cause is nonexistent or unknown.
+     * @return the cause of this {@code NoSuchMechanismException} or
+     *         {@code null} if the cause is nonexistent or unknown.
      */
     public Throwable getCause() {
         return cause;
     }
 
     /**
-     * Prints this <code>NoSuchMechanismException</code>, its backtrace and
+     * Prints this {@code NoSuchMechanismException}, its backtrace and
      * the cause's backtrace to the standard error stream.
      */
     public void printStackTrace() {
@@ -133,10 +133,10 @@
     }
 
     /**
-     * Prints this <code>NoSuchMechanismException</code>, its backtrace and
+     * Prints this {@code NoSuchMechanismException}, its backtrace and
      * the cause's backtrace to the specified print stream.
      *
-     * @param s <code>PrintStream</code> to use for output
+     * @param s {@code PrintStream} to use for output
      */
     public void printStackTrace(PrintStream s) {
         super.printStackTrace(s);
@@ -144,10 +144,10 @@
     }
 
     /**
-     * Prints this <code>NoSuchMechanismException</code>, its backtrace and
+     * Prints this {@code NoSuchMechanismException}, its backtrace and
      * the cause's backtrace to the specified print writer.
      *
-     * @param s <code>PrintWriter</code> to use for output
+     * @param s {@code PrintWriter} to use for output
      */
     public void printStackTrace(PrintWriter s) {
         super.printStackTrace(s);
diff --git a/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/URIReferenceException.java b/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/URIReferenceException.java
index 5433185..5164138 100644
--- a/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/URIReferenceException.java
+++ b/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/URIReferenceException.java
@@ -35,8 +35,8 @@
  * Indicates an exceptional condition thrown while dereferencing a
  * {@link URIReference}.
  *
- * <p>A <code>URIReferenceException</code> can contain a cause: another
- * throwable that caused this <code>URIReferenceException</code> to get thrown.
+ * <p>A {@code URIReferenceException} can contain a cause: another
+ * throwable that caused this {@code URIReferenceException} to get thrown.
  *
  * @author Sean Mullan
  * @author JSR 105 Expert Group
@@ -60,15 +60,15 @@
     private URIReference uriReference;
 
     /**
-     * Constructs a new <code>URIReferenceException</code> with
-     * <code>null</code> as its detail message.
+     * Constructs a new {@code URIReferenceException} with
+     * {@code null} as its detail message.
      */
     public URIReferenceException() {
         super();
     }
 
     /**
-     * Constructs a new <code>URIReferenceException</code> with the specified
+     * Constructs a new {@code URIReferenceException} with the specified
      * detail message.
      *
      * @param message the detail message
@@ -78,14 +78,14 @@
     }
 
     /**
-     * Constructs a new <code>URIReferenceException</code> with the
+     * Constructs a new {@code URIReferenceException} with the
      * specified detail message and cause.
      * <p>Note that the detail message associated with
-     * <code>cause</code> is <i>not</i> automatically incorporated in
+     * {@code cause} is <i>not</i> automatically incorporated in
      * this exception's detail message.
      *
      * @param message the detail message
-     * @param cause the cause (A <tt>null</tt> value is permitted, and
+     * @param cause the cause (A {@code null} value is permitted, and
      *        indicates that the cause is nonexistent or unknown.)
      */
     public URIReferenceException(String message, Throwable cause) {
@@ -94,19 +94,19 @@
     }
 
     /**
-     * Constructs a new <code>URIReferenceException</code> with the
-     * specified detail message, cause and <code>URIReference</code>.
+     * Constructs a new {@code URIReferenceException} with the
+     * specified detail message, cause and {@code URIReference}.
      * <p>Note that the detail message associated with
-     * <code>cause</code> is <i>not</i> automatically incorporated in
+     * {@code cause} is <i>not</i> automatically incorporated in
      * this exception's detail message.
      *
      * @param message the detail message
-     * @param cause the cause (A <tt>null</tt> value is permitted, and
+     * @param cause the cause (A {@code null} value is permitted, and
      *        indicates that the cause is nonexistent or unknown.)
-     * @param uriReference the <code>URIReference</code> that was being
+     * @param uriReference the {@code URIReference} that was being
      *    dereferenced when the error was encountered
-     * @throws NullPointerException if <code>uriReference</code> is
-     *    <code>null</code>
+     * @throws NullPointerException if {@code uriReference} is
+     *    {@code null}
      */
     public URIReferenceException(String message, Throwable cause,
         URIReference uriReference) {
@@ -118,12 +118,12 @@
     }
 
     /**
-     * Constructs a new <code>URIReferenceException</code> with the specified
-     * cause and a detail message of <code>(cause==null ? null :
-     * cause.toString())</code> (which typically contains the class and detail
-     * message of <code>cause</code>).
+     * Constructs a new {@code URIReferenceException} with the specified
+     * cause and a detail message of {@code (cause==null ? null :
+     * cause.toString())} (which typically contains the class and detail
+     * message of {@code cause}).
      *
-     * @param cause the cause (A <tt>null</tt> value is permitted, and
+     * @param cause the cause (A {@code null} value is permitted, and
      *        indicates that the cause is nonexistent or unknown.)
      */
     public URIReferenceException(Throwable cause) {
@@ -132,31 +132,31 @@
     }
 
     /**
-     * Returns the <code>URIReference</code> that was being dereferenced
+     * Returns the {@code URIReference} that was being dereferenced
      * when the exception was thrown.
      *
-     * @return the <code>URIReference</code> that was being dereferenced
-     * when the exception was thrown, or <code>null</code> if not specified
+     * @return the {@code URIReference} that was being dereferenced
+     * when the exception was thrown, or {@code null} if not specified
      */
     public URIReference getURIReference() {
         return uriReference;
     }
 
     /**
-     * Returns the cause of this <code>URIReferenceException</code> or
-     * <code>null</code> if the cause is nonexistent or unknown.  (The
+     * Returns the cause of this {@code URIReferenceException} or
+     * {@code null} if the cause is nonexistent or unknown.  (The
      * cause is the throwable that caused this
-     * <code>URIReferenceException</code> to get thrown.)
+     * {@code URIReferenceException} to get thrown.)
      *
-     * @return the cause of this <code>URIReferenceException</code> or
-     *    <code>null</code> if the cause is nonexistent or unknown.
+     * @return the cause of this {@code URIReferenceException} or
+     *    {@code null} if the cause is nonexistent or unknown.
      */
     public Throwable getCause() {
         return cause;
     }
 
     /**
-     * Prints this <code>URIReferenceException</code>, its backtrace and
+     * Prints this {@code URIReferenceException}, its backtrace and
      * the cause's backtrace to the standard error stream.
      */
     public void printStackTrace() {
@@ -165,10 +165,10 @@
     }
 
     /**
-     * Prints this <code>URIReferenceException</code>, its backtrace and
+     * Prints this {@code URIReferenceException}, its backtrace and
      * the cause's backtrace to the specified print stream.
      *
-     * @param s <code>PrintStream</code> to use for output
+     * @param s {@code PrintStream} to use for output
      */
     public void printStackTrace(PrintStream s) {
         super.printStackTrace(s);
@@ -176,10 +176,10 @@
     }
 
     /**
-     * Prints this <code>URIReferenceException</code>, its backtrace and
+     * Prints this {@code URIReferenceException}, its backtrace and
      * the cause's backtrace to the specified print writer.
      *
-     * @param s <code>PrintWriter</code> to use for output
+     * @param s {@code PrintWriter} to use for output
      */
     public void printStackTrace(PrintWriter s) {
         super.printStackTrace(s);
diff --git a/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/dsig/TransformException.java b/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/dsig/TransformException.java
index 9fdd263..c57c74a 100644
--- a/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/dsig/TransformException.java
+++ b/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/dsig/TransformException.java
@@ -34,8 +34,8 @@
  * Indicates an exceptional condition that occurred while executing a
  * transform algorithm.
  *
- * <p>A <code>TransformException</code> can contain a cause: another
- * throwable that caused this <code>TransformException</code> to get thrown.
+ * <p>A {@code TransformException} can contain a cause: another
+ * throwable that caused this {@code TransformException} to get thrown.
  *
  * @see Transform#transform
  * @author Sean Mullan
@@ -56,15 +56,15 @@
     private Throwable cause;
 
     /**
-     * Constructs a new <code>TransformException</code> with
-     * <code>null</code> as its detail message.
+     * Constructs a new {@code TransformException} with
+     * {@code null} as its detail message.
      */
     public TransformException() {
         super();
     }
 
     /**
-     * Constructs a new <code>TransformException</code> with the specified
+     * Constructs a new {@code TransformException} with the specified
      * detail message.
      *
      * @param message the detail message
@@ -74,14 +74,14 @@
     }
 
     /**
-     * Constructs a new <code>TransformException</code> with the
+     * Constructs a new {@code TransformException} with the
      * specified detail message and cause.
      * <p>Note that the detail message associated with
-     * <code>cause</code> is <i>not</i> automatically incorporated in
+     * {@code cause} is <i>not</i> automatically incorporated in
      * this exception's detail message.
      *
      * @param message the detail message
-     * @param cause the cause (A <tt>null</tt> value is permitted, and
+     * @param cause the cause (A {@code null} value is permitted, and
      *        indicates that the cause is nonexistent or unknown.)
      */
     public TransformException(String message, Throwable cause) {
@@ -90,13 +90,13 @@
     }
 
     /**
-     * Constructs a new <code>TransformException</code> with the specified
+     * Constructs a new {@code TransformException} with the specified
      * cause and a detail message of
-     * <code>(cause==null ? null : cause.toString())</code>
+     * {@code (cause==null ? null : cause.toString())}
      * (which typically contains the class and detail message of
-     * <code>cause</code>).
+     * {@code cause}).
      *
-     * @param cause the cause (A <tt>null</tt> value is permitted, and
+     * @param cause the cause (A {@code null} value is permitted, and
      *        indicates that the cause is nonexistent or unknown.)
      */
     public TransformException(Throwable cause) {
@@ -105,20 +105,20 @@
     }
 
     /**
-     * Returns the cause of this <code>TransformException</code> or
-     * <code>null</code> if the cause is nonexistent or unknown.  (The
+     * Returns the cause of this {@code TransformException} or
+     * {@code null} if the cause is nonexistent or unknown.  (The
      * cause is the throwable that caused this
-     * <code>TransformException</code> to get thrown.)
+     * {@code TransformException} to get thrown.)
      *
-     * @return the cause of this <code>TransformException</code> or
-     *         <code>null</code> if the cause is nonexistent or unknown.
+     * @return the cause of this {@code TransformException} or
+     *         {@code null} if the cause is nonexistent or unknown.
      */
     public Throwable getCause() {
         return cause;
     }
 
     /**
-     * Prints this <code>TransformException</code>, its backtrace and
+     * Prints this {@code TransformException}, its backtrace and
      * the cause's backtrace to the standard error stream.
      */
     public void printStackTrace() {
@@ -129,10 +129,10 @@
     }
 
     /**
-     * Prints this <code>TransformException</code>, its backtrace and
+     * Prints this {@code TransformException}, its backtrace and
      * the cause's backtrace to the specified print stream.
      *
-     * @param s <code>PrintStream</code> to use for output
+     * @param s {@code PrintStream} to use for output
      */
     public void printStackTrace(PrintStream s) {
         super.printStackTrace(s);
@@ -142,10 +142,10 @@
     }
 
     /**
-     * Prints this <code>TransformException</code>, its backtrace and
+     * Prints this {@code TransformException}, its backtrace and
      * the cause's backtrace to the specified print writer.
      *
-     * @param s <code>PrintWriter</code> to use for output
+     * @param s {@code PrintWriter} to use for output
      */
     public void printStackTrace(PrintWriter s) {
         super.printStackTrace(s);
diff --git a/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/dsig/XMLSignatureException.java b/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/dsig/XMLSignatureException.java
index 773db09..621f4c7 100644
--- a/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/dsig/XMLSignatureException.java
+++ b/jdk/src/java.xml.crypto/share/classes/javax/xml/crypto/dsig/XMLSignatureException.java
@@ -34,8 +34,8 @@
  * Indicates an exceptional condition that occurred during the XML
  * signature generation or validation process.
  *
- * <p>An <code>XMLSignatureException</code> can contain a cause: another
- * throwable that caused this <code>XMLSignatureException</code> to get thrown.
+ * <p>An {@code XMLSignatureException} can contain a cause: another
+ * throwable that caused this {@code XMLSignatureException} to get thrown.
  *
  * @since 1.6
  */
@@ -53,15 +53,15 @@
     private Throwable cause;
 
     /**
-     * Constructs a new <code>XMLSignatureException</code> with
-     * <code>null</code> as its detail message.
+     * Constructs a new {@code XMLSignatureException} with
+     * {@code null} as its detail message.
      */
     public XMLSignatureException() {
         super();
     }
 
     /**
-     * Constructs a new <code>XMLSignatureException</code> with the specified
+     * Constructs a new {@code XMLSignatureException} with the specified
      * detail message.
      *
      * @param message the detail message
@@ -71,14 +71,14 @@
     }
 
     /**
-     * Constructs a new <code>XMLSignatureException</code> with the
+     * Constructs a new {@code XMLSignatureException} with the
      * specified detail message and cause.
      * <p>Note that the detail message associated with
-     * <code>cause</code> is <i>not</i> automatically incorporated in
+     * {@code cause} is <i>not</i> automatically incorporated in
      * this exception's detail message.
      *
      * @param message the detail message
-     * @param cause the cause (A <tt>null</tt> value is permitted, and
+     * @param cause the cause (A {@code null} value is permitted, and
      *        indicates that the cause is nonexistent or unknown.)
      */
     public XMLSignatureException(String message, Throwable cause) {
@@ -87,13 +87,13 @@
     }
 
     /**
-     * Constructs a new <code>XMLSignatureException</code> with the specified
+     * Constructs a new {@code XMLSignatureException} with the specified
      * cause and a detail message of
-     * <code>(cause==null ? null : cause.toString())</code>
+     * {@code (cause==null ? null : cause.toString())}
      * (which typically contains the class and detail message of
-     * <code>cause</code>).
+     * {@code cause}).
      *
-     * @param cause the cause (A <tt>null</tt> value is permitted, and
+     * @param cause the cause (A {@code null} value is permitted, and
      *        indicates that the cause is nonexistent or unknown.)
      */
     public XMLSignatureException(Throwable cause) {
@@ -102,20 +102,20 @@
     }
 
     /**
-     * Returns the cause of this <code>XMLSignatureException</code> or
-     * <code>null</code> if the cause is nonexistent or unknown.  (The
+     * Returns the cause of this {@code XMLSignatureException} or
+     * {@code null} if the cause is nonexistent or unknown.  (The
      * cause is the throwable that caused this
-     * <code>XMLSignatureException</code> to get thrown.)
+     * {@code XMLSignatureException} to get thrown.)
      *
-     * @return the cause of this <code>XMLSignatureException</code> or
-     *         <code>null</code> if the cause is nonexistent or unknown.
+     * @return the cause of this {@code XMLSignatureException} or
+     *         {@code null} if the cause is nonexistent or unknown.
      */
     public Throwable getCause() {
         return cause;
     }
 
     /**
-     * Prints this <code>XMLSignatureException</code>, its backtrace and
+     * Prints this {@code XMLSignatureException}, its backtrace and
      * the cause's backtrace to the standard error stream.
      */
     public void printStackTrace() {
@@ -126,10 +126,10 @@
     }
 
     /**
-     * Prints this <code>XMLSignatureException</code>, its backtrace and
+     * Prints this {@code XMLSignatureException}, its backtrace and
      * the cause's backtrace to the specified print stream.
      *
-     * @param s <code>PrintStream</code> to use for output
+     * @param s {@code PrintStream} to use for output
      */
     public void printStackTrace(PrintStream s) {
         super.printStackTrace(s);
@@ -139,10 +139,10 @@
     }
 
     /**
-     * Prints this <code>XMLSignatureException</code>, its backtrace and
+     * Prints this {@code XMLSignatureException}, its backtrace and
      * the cause's backtrace to the specified print writer.
      *
-     * @param s <code>PrintWriter</code> to use for output
+     * @param s {@code PrintWriter} to use for output
      */
     public void printStackTrace(PrintWriter s) {
         super.printStackTrace(s);
diff --git a/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/Translator.java b/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/Translator.java
index 2112bd2..743777c 100644
--- a/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/Translator.java
+++ b/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/Translator.java
@@ -78,8 +78,8 @@
             return null;
         }
         try {
-            t = Class.forName("com.sun.java.accessibility.util."
-                              + c.getName()
+            t = Class.forName("com.sun.java.accessibility.util.internal"
+                              + c.getSimpleName()
                               + "Translator");
             return t;
         } catch (Exception e) {
diff --git a/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/java/awt/ButtonTranslator.java b/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/internal/ButtonTranslator.java
similarity index 97%
rename from jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/java/awt/ButtonTranslator.java
rename to jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/internal/ButtonTranslator.java
index d775e6e..aed5427 100644
--- a/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/java/awt/ButtonTranslator.java
+++ b/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/internal/ButtonTranslator.java
@@ -23,7 +23,7 @@
  * questions.
  */
 
-package com.sun.java.accessibility.util.java.awt;
+package com.sun.java.accessibility.util.internal;
 
 import java.lang.*;
 import java.util.*;
diff --git a/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/java/awt/CheckboxTranslator.java b/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/internal/CheckboxTranslator.java
similarity index 98%
rename from jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/java/awt/CheckboxTranslator.java
rename to jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/internal/CheckboxTranslator.java
index 2f131e2..0c8d588 100644
--- a/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/java/awt/CheckboxTranslator.java
+++ b/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/internal/CheckboxTranslator.java
@@ -23,7 +23,7 @@
  * questions.
  */
 
-package com.sun.java.accessibility.util.java.awt;
+package com.sun.java.accessibility.util.internal;
 
 import java.lang.*;
 import java.util.*;
diff --git a/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/java/awt/LabelTranslator.java b/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/internal/LabelTranslator.java
similarity index 97%
rename from jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/java/awt/LabelTranslator.java
rename to jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/internal/LabelTranslator.java
index 33a2789..a5bcb57 100644
--- a/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/java/awt/LabelTranslator.java
+++ b/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/internal/LabelTranslator.java
@@ -23,7 +23,7 @@
  * questions.
  */
 
-package com.sun.java.accessibility.util.java.awt;
+package com.sun.java.accessibility.util.internal;
 
 import java.lang.*;
 import java.util.*;
diff --git a/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/java/awt/ListTranslator.java b/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/internal/ListTranslator.java
similarity index 98%
rename from jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/java/awt/ListTranslator.java
rename to jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/internal/ListTranslator.java
index de1c469..6fdf594 100644
--- a/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/java/awt/ListTranslator.java
+++ b/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/internal/ListTranslator.java
@@ -23,7 +23,7 @@
  * questions.
  */
 
-package com.sun.java.accessibility.util.java.awt;
+package com.sun.java.accessibility.util.internal;
 
 import java.lang.*;
 import java.util.*;
diff --git a/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/java/awt/TextComponentTranslator.java b/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/internal/TextComponentTranslator.java
similarity index 97%
rename from jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/java/awt/TextComponentTranslator.java
rename to jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/internal/TextComponentTranslator.java
index 3ac3fab..3969e2a 100644
--- a/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/java/awt/TextComponentTranslator.java
+++ b/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/internal/TextComponentTranslator.java
@@ -23,7 +23,7 @@
  * questions.
  */
 
-package com.sun.java.accessibility.util.java.awt;
+package com.sun.java.accessibility.util.internal;
 
 import java.lang.*;
 import java.util.*;
diff --git a/jdk/src/jdk.accessibility/windows/classes/META-INF/services/javax.accessibility.AccessibilityProvider b/jdk/src/jdk.accessibility/windows/classes/META-INF/services/javax.accessibility.AccessibilityProvider
index f3b2bcb9..0c0e2ac 100644
--- a/jdk/src/jdk.accessibility/windows/classes/META-INF/services/javax.accessibility.AccessibilityProvider
+++ b/jdk/src/jdk.accessibility/windows/classes/META-INF/services/javax.accessibility.AccessibilityProvider
@@ -22,5 +22,5 @@
 # questions.

 

 

-com.sun.java.accessibility.ProviderImpl

+com.sun.java.accessibility.internal.ProviderImpl

 

diff --git a/jdk/src/jdk.accessibility/windows/classes/com/sun/java/accessibility/AccessBridge.java b/jdk/src/jdk.accessibility/windows/classes/com/sun/java/accessibility/internal/AccessBridge.java
similarity index 99%
rename from jdk/src/jdk.accessibility/windows/classes/com/sun/java/accessibility/AccessBridge.java
rename to jdk/src/jdk.accessibility/windows/classes/com/sun/java/accessibility/internal/AccessBridge.java
index 5c47d38..ee1a63f 100644
--- a/jdk/src/jdk.accessibility/windows/classes/com/sun/java/accessibility/AccessBridge.java
+++ b/jdk/src/jdk.accessibility/windows/classes/com/sun/java/accessibility/internal/AccessBridge.java
@@ -23,7 +23,7 @@
  * questions.
  */
 
-package com.sun.java.accessibility;
+package com.sun.java.accessibility.internal;
 
 import java.awt.*;
 import java.awt.event.*;
diff --git a/jdk/src/jdk.accessibility/windows/classes/com/sun/java/accessibility/ProviderImpl.java b/jdk/src/jdk.accessibility/windows/classes/com/sun/java/accessibility/internal/ProviderImpl.java
similarity index 98%
rename from jdk/src/jdk.accessibility/windows/classes/com/sun/java/accessibility/ProviderImpl.java
rename to jdk/src/jdk.accessibility/windows/classes/com/sun/java/accessibility/internal/ProviderImpl.java
index 925ade1..271d3c8 100644
--- a/jdk/src/jdk.accessibility/windows/classes/com/sun/java/accessibility/ProviderImpl.java
+++ b/jdk/src/jdk.accessibility/windows/classes/com/sun/java/accessibility/internal/ProviderImpl.java
@@ -22,7 +22,7 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
-package com.sun.java.accessibility;
+package com.sun.java.accessibility.internal;
 
 import javax.accessibility.AccessibilityProvider;
 
diff --git a/jdk/src/jdk.accessibility/windows/native/libjabsysinfo/AccessBridgeSysInfo.cpp b/jdk/src/jdk.accessibility/windows/native/libjabsysinfo/AccessBridgeSysInfo.cpp
index 14e5ba4..0720934 100644
--- a/jdk/src/jdk.accessibility/windows/native/libjabsysinfo/AccessBridgeSysInfo.cpp
+++ b/jdk/src/jdk.accessibility/windows/native/libjabsysinfo/AccessBridgeSysInfo.cpp
@@ -37,7 +37,7 @@
 
 // Determine bitness of Win OS
 JNIEXPORT jboolean JNICALL
-Java_com_sun_java_accessibility_AccessBridge_isSysWow(JNIEnv *env, jobject callingObj) {
+Java_com_sun_java_accessibility_internal_AccessBridge_isSysWow(JNIEnv *env, jobject callingObj) {
     BOOL bIsWow64 = FALSE;
     typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
 
diff --git a/jdk/src/jdk.accessibility/windows/native/libjavaaccessbridge/AccessBridgeJavaEntryPoints.cpp b/jdk/src/jdk.accessibility/windows/native/libjavaaccessbridge/AccessBridgeJavaEntryPoints.cpp
index 9131f36..75a7b6d 100644
--- a/jdk/src/jdk.accessibility/windows/native/libjavaaccessbridge/AccessBridgeJavaEntryPoints.cpp
+++ b/jdk/src/jdk.accessibility/windows/native/libjavaaccessbridge/AccessBridgeJavaEntryPoints.cpp
@@ -103,7 +103,7 @@
 
     PrintDebugString("Calling BuildJavaEntryPoints():");
 
-    FIND_CLASS(bridgeClass, "com/sun/java/accessibility/AccessBridge");
+    FIND_CLASS(bridgeClass, "com/sun/java/accessibility/internal/AccessBridge");
 
     // ------- general methods
 
diff --git a/jdk/src/jdk.accessibility/windows/native/libjavaaccessbridge/JavaAccessBridge.cpp b/jdk/src/jdk.accessibility/windows/native/libjavaaccessbridge/JavaAccessBridge.cpp
index 40aba7c..7b9c60296 100644
--- a/jdk/src/jdk.accessibility/windows/native/libjavaaccessbridge/JavaAccessBridge.cpp
+++ b/jdk/src/jdk.accessibility/windows/native/libjavaaccessbridge/JavaAccessBridge.cpp
@@ -30,7 +30,7 @@
 
 #include "AccessBridgeDebug.h"
 #include "JavaAccessBridge.h"
-#include "com_sun_java_accessibility_AccessBridge.h" // programatically generated by JNI
+#include "com_sun_java_accessibility_internal_AccessBridge.h" // programatically generated by JNI
 #include "accessBridgeResource.h"
 #include "accessBridgeCallbacks.h"
 #include "AccessBridgeMessages.h"
@@ -84,7 +84,7 @@
      *
      */
     JNIEXPORT void JNICALL
-    Java_com_sun_java_accessibility_AccessBridge_runDLL(JNIEnv *env, jobject obj) {
+    Java_com_sun_java_accessibility_internal_AccessBridge_runDLL(JNIEnv *env, jobject obj) {
         PrintDebugString("\r\nJavaAccessBridge.DLL runDLL() called");
         theJavaAccessBridge->javaRun(env, obj);
     }
@@ -1711,7 +1711,7 @@
                                           jobject event, jobject source,
                                           jint oldValue, jint newValue) {
 
-    PrintDebugString("\r\nJava_com_sun_java_accessibility_AccessBridge_propertyCaretChanged(%p, %p, %p, %p, %d, %d)",
+    PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertyCaretChanged(%p, %p, %p, %p, %d, %d)",
                      env, callingObj, event,
                      source, oldValue, newValue);
 
@@ -1765,7 +1765,7 @@
                                                 jobject event, jobject source,
                                                 jstring oldValue, jstring newValue){
 
-    PrintDebugString("\r\nJava_com_sun_java_accessibility_AccessBridge_propertyDescriptionChanged(%p, %p, %p, %p, %p, %p)",
+    PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertyDescriptionChanged(%p, %p, %p, %p, %p, %p)",
                      env, callingObj, event,
                      source, oldValue, newValue);
 
@@ -1851,7 +1851,7 @@
                                          jobject event, jobject source,
                                          jstring oldValue, jstring newValue){
 
-    PrintDebugString("\r\nJava_com_sun_java_accessibility_AccessBridge_propertyNameChanged(%p, %p, %p, %p, %p, %p)",
+    PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertyNameChanged(%p, %p, %p, %p, %p, %p)",
                      env, callingObj, event,
                      source, oldValue, newValue);
 
@@ -1937,7 +1937,7 @@
 JavaAccessBridge::firePropertySelectionChange(JNIEnv *env, jobject callingObj,
                                               jobject event, jobject source) {
 
-    PrintDebugString("\r\nJava_com_sun_java_accessibility_AccessBridge_propertySelectionChanged(%p, %p, %p, %p)",
+    PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertySelectionChanged(%p, %p, %p, %p)",
                      env, callingObj, event, source);
 
     // sanity check
@@ -1988,7 +1988,7 @@
                                           jobject event, jobject source,
                                           jstring oldValue, jstring newValue){
 
-    PrintDebugString("\r\nJava_com_sun_java_accessibility_AccessBridge_propertyStateChanged(%p, %p, %p, %p, %p, %p)",
+    PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertyStateChanged(%p, %p, %p, %p, %p, %p)",
                      env, callingObj, event,
                      source, oldValue, newValue);
 
@@ -2074,7 +2074,7 @@
 JavaAccessBridge::firePropertyTextChange(JNIEnv *env, jobject callingObj,
                                          jobject event, jobject source) {
 
-    PrintDebugString("\r\nJava_com_sun_java_accessibility_AccessBridge_propertyTextChanged(%p, %p, %p, %p)",
+    PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertyTextChanged(%p, %p, %p, %p)",
                      env, callingObj, event, source);
 
     // sanity check
@@ -2125,7 +2125,7 @@
                                           jobject event, jobject source,
                                           jstring oldValue, jstring newValue){
 
-    PrintDebugString("\r\nJava_com_sun_java_accessibility_AccessBridge_propertyValueChanged(%p, %p, %p, %p, %p, %p)",
+    PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertyValueChanged(%p, %p, %p, %p, %p, %p)",
                      env, callingObj, event,
                      source, oldValue, newValue);
 
@@ -2210,7 +2210,7 @@
 JavaAccessBridge::firePropertyVisibleDataChange(JNIEnv *env, jobject callingObj,
                                                 jobject event, jobject source) {
 
-    PrintDebugString("\r\nJava_com_sun_java_accessibility_AccessBridge_propertyVisibleDataChanged(%p, %p, %p, %p)",
+    PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertyVisibleDataChanged(%p, %p, %p, %p)",
                      env, callingObj, event, source);
 
     // sanity check
@@ -2261,7 +2261,7 @@
                                           jobject event, jobject source,
                                           jobject oldValue, jobject newValue){
 
-    PrintDebugString("\r\nJava_com_sun_java_accessibility_AccessBridge_propertyChildPropertyChanged(%p, %p, %p, %p, %p, %p)",
+    PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertyChildPropertyChanged(%p, %p, %p, %p, %p, %p)",
                      env, callingObj, event,
                      source, oldValue, newValue);
 
@@ -2319,7 +2319,7 @@
                                                      jobject event, jobject source,
                                                      jobject oldValue, jobject newValue){
 
-    PrintDebugString("\r\nJava_com_sun_java_accessibility_AccessBridge_propertyActiveDescendentPropertyChanged(%p, %p, %p, %p, %p, %p)",
+    PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertyActiveDescendentPropertyChanged(%p, %p, %p, %p, %p, %p)",
                      env, callingObj, event,
                      source, oldValue, newValue);
 
@@ -2376,7 +2376,7 @@
                                                jobject event, jobject source,
                                                jstring oldValue, jstring newValue){
 
-    PrintDebugString("\r\nJava_com_sun_java_accessibility_AccessBridge_propertyTableModelChange(%p, %p, %p, %p, %p, %p)",
+    PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertyTableModelChange(%p, %p, %p, %p, %p, %p)",
                      env, callingObj, event,
                      source, oldValue, newValue);
 
@@ -2557,7 +2557,7 @@
 extern "C" {        // event stuff from AccessBridge.h, generated by JNI
 
     JNIEXPORT void JNICALL
-    Java_com_sun_java_accessibility_AccessBridge_sendDebugString(JNIEnv *env, jobject callingObj, jstring debugStr) {
+    Java_com_sun_java_accessibility_internal_AccessBridge_sendDebugString(JNIEnv *env, jobject callingObj, jstring debugStr) {
 
         const wchar_t *stringBytes;
         stringBytes = (const wchar_t *) env->GetStringChars(debugStr, 0);
@@ -2575,7 +2575,7 @@
     }
 
     JNIEXPORT void JNICALL
-    Java_com_sun_java_accessibility_AccessBridge_propertyCaretChange(JNIEnv *env, jobject callingObj,
+    Java_com_sun_java_accessibility_internal_AccessBridge_propertyCaretChange(JNIEnv *env, jobject callingObj,
                                                                         jobject event, jobject source,
                                                                         jint oldValue, jint newValue) {
         theJavaAccessBridge->firePropertyCaretChange(env, callingObj,
@@ -2584,7 +2584,7 @@
     }
 
     JNIEXPORT void JNICALL
-    Java_com_sun_java_accessibility_AccessBridge_propertyDescriptionChange(JNIEnv *env, jobject callingObj,
+    Java_com_sun_java_accessibility_internal_AccessBridge_propertyDescriptionChange(JNIEnv *env, jobject callingObj,
                                                                             jobject event, jobject source,
                                                                             jstring oldValue, jstring newValue) {
         theJavaAccessBridge->firePropertyDescriptionChange(env, callingObj,
@@ -2593,7 +2593,7 @@
     }
 
     JNIEXPORT void JNICALL
-    Java_com_sun_java_accessibility_AccessBridge_propertyNameChange(JNIEnv *env, jobject callingObj,
+    Java_com_sun_java_accessibility_internal_AccessBridge_propertyNameChange(JNIEnv *env, jobject callingObj,
                                                                     jobject event, jobject source,
                                                                     jstring oldValue, jstring newValue) {
         theJavaAccessBridge->firePropertyNameChange(env, callingObj,
@@ -2602,14 +2602,14 @@
     }
 
     JNIEXPORT void JNICALL
-    Java_com_sun_java_accessibility_AccessBridge_propertySelectionChange(JNIEnv *env, jobject callingObj,
+    Java_com_sun_java_accessibility_internal_AccessBridge_propertySelectionChange(JNIEnv *env, jobject callingObj,
                                                                             jobject event, jobject source) {
         theJavaAccessBridge->firePropertySelectionChange(env, callingObj,
                                                             event, source);
     }
 
     JNIEXPORT void JNICALL
-    Java_com_sun_java_accessibility_AccessBridge_propertyStateChange(JNIEnv *env, jobject callingObj,
+    Java_com_sun_java_accessibility_internal_AccessBridge_propertyStateChange(JNIEnv *env, jobject callingObj,
                                                                         jobject event, jobject source,
                                                                         jstring oldValue, jstring newValue) {
         theJavaAccessBridge->firePropertyStateChange(env, callingObj,
@@ -2618,14 +2618,14 @@
     }
 
     JNIEXPORT void JNICALL
-    Java_com_sun_java_accessibility_AccessBridge_propertyTextChange(JNIEnv *env, jobject callingObj,
+    Java_com_sun_java_accessibility_internal_AccessBridge_propertyTextChange(JNIEnv *env, jobject callingObj,
                                                                     jobject event,  jobject source) {
         theJavaAccessBridge->firePropertyTextChange(env, callingObj,
                                                     event, source);
     }
 
     JNIEXPORT void JNICALL
-    Java_com_sun_java_accessibility_AccessBridge_propertyValueChange(JNIEnv *env, jobject callingObj,
+    Java_com_sun_java_accessibility_internal_AccessBridge_propertyValueChange(JNIEnv *env, jobject callingObj,
                                                                         jobject event, jobject source,
                                                                         jstring oldValue, jstring newValue) {
         theJavaAccessBridge->firePropertyValueChange(env, callingObj,
@@ -2634,14 +2634,14 @@
     }
 
     JNIEXPORT void JNICALL
-    Java_com_sun_java_accessibility_AccessBridge_propertyVisibleDataChange(JNIEnv *env, jobject callingObj,
+    Java_com_sun_java_accessibility_internal_AccessBridge_propertyVisibleDataChange(JNIEnv *env, jobject callingObj,
                                                                             jobject event,  jobject source) {
         theJavaAccessBridge->firePropertyVisibleDataChange(env, callingObj,
                                                             event, source);
     }
 
     JNIEXPORT void JNICALL
-    Java_com_sun_java_accessibility_AccessBridge_propertyChildChange(JNIEnv *env, jobject callingObj,
+    Java_com_sun_java_accessibility_internal_AccessBridge_propertyChildChange(JNIEnv *env, jobject callingObj,
                                                                         jobject event, jobject source,
                                                                         jobject oldValue, jobject newValue) {
         theJavaAccessBridge->firePropertyChildChange(env, callingObj,
@@ -2650,7 +2650,7 @@
     }
 
     JNIEXPORT void JNICALL
-    Java_com_sun_java_accessibility_AccessBridge_propertyActiveDescendentChange(JNIEnv *env, jobject callingObj,
+    Java_com_sun_java_accessibility_internal_AccessBridge_propertyActiveDescendentChange(JNIEnv *env, jobject callingObj,
                                                                                 jobject event,  jobject source,
                                                                                 jobject oldValue,
                                                                                 jobject newValue) {
@@ -2660,7 +2660,7 @@
     }
 
     JNIEXPORT void JNICALL
-    Java_com_sun_java_accessibility_AccessBridge_propertyTableModelChange(JNIEnv *env, jobject callingObj,
+    Java_com_sun_java_accessibility_internal_AccessBridge_propertyTableModelChange(JNIEnv *env, jobject callingObj,
                                                                             jobject event,  jobject source,
                                                                             jstring oldValue, jstring newValue) {
 
@@ -2677,34 +2677,34 @@
 
 
     JNIEXPORT void JNICALL
-    Java_com_sun_java_accessibility_AccessBridge_javaShutdown(JNIEnv *env, jobject callingObj) {
+    Java_com_sun_java_accessibility_internal_AccessBridge_javaShutdown(JNIEnv *env, jobject callingObj) {
         theJavaAccessBridge->javaShutdown(env, callingObj);
     }
 
-    HANDLE_STANDARD_EVENT_FROM_JAVA(Java_com_sun_java_accessibility_AccessBridge_focusGained, fireFocusGained)
-    HANDLE_STANDARD_EVENT_FROM_JAVA(Java_com_sun_java_accessibility_AccessBridge_focusLost, fireFocusLost)
-    HANDLE_STANDARD_EVENT_FROM_JAVA(Java_com_sun_java_accessibility_AccessBridge_caretUpdate, fireCaretUpdate)
-    HANDLE_STANDARD_EVENT_FROM_JAVA(Java_com_sun_java_accessibility_AccessBridge_mouseClicked, fireMouseClicked)
-    HANDLE_STANDARD_EVENT_FROM_JAVA(Java_com_sun_java_accessibility_AccessBridge_mouseEntered, fireMouseEntered)
-    HANDLE_STANDARD_EVENT_FROM_JAVA(Java_com_sun_java_accessibility_AccessBridge_mouseExited, fireMouseExited)
-    HANDLE_STANDARD_EVENT_FROM_JAVA(Java_com_sun_java_accessibility_AccessBridge_mousePressed, fireMousePressed)
-    HANDLE_STANDARD_EVENT_FROM_JAVA(Java_com_sun_java_accessibility_AccessBridge_mouseReleased, fireMouseReleased)
-    HANDLE_STANDARD_EVENT_FROM_JAVA(Java_com_sun_java_accessibility_AccessBridge_menuCanceled, fireMenuCanceled)
-    HANDLE_STANDARD_EVENT_FROM_JAVA(Java_com_sun_java_accessibility_AccessBridge_menuDeselected, fireMenuDeselected)
-    HANDLE_STANDARD_EVENT_FROM_JAVA(Java_com_sun_java_accessibility_AccessBridge_menuSelected, fireMenuSelected)
-    HANDLE_STANDARD_EVENT_FROM_JAVA(Java_com_sun_java_accessibility_AccessBridge_popupMenuCanceled, firePopupMenuCanceled)
-    HANDLE_STANDARD_EVENT_FROM_JAVA(Java_com_sun_java_accessibility_AccessBridge_popupMenuWillBecomeInvisible, firePopupMenuWillBecomeInvisible)
-    HANDLE_STANDARD_EVENT_FROM_JAVA(Java_com_sun_java_accessibility_AccessBridge_popupMenuWillBecomeVisible, firePopupMenuWillBecomeVisible)
+    HANDLE_STANDARD_EVENT_FROM_JAVA(Java_com_sun_java_accessibility_internal_AccessBridge_focusGained, fireFocusGained)
+    HANDLE_STANDARD_EVENT_FROM_JAVA(Java_com_sun_java_accessibility_internal_AccessBridge_focusLost, fireFocusLost)
+    HANDLE_STANDARD_EVENT_FROM_JAVA(Java_com_sun_java_accessibility_internal_AccessBridge_caretUpdate, fireCaretUpdate)
+    HANDLE_STANDARD_EVENT_FROM_JAVA(Java_com_sun_java_accessibility_internal_AccessBridge_mouseClicked, fireMouseClicked)
+    HANDLE_STANDARD_EVENT_FROM_JAVA(Java_com_sun_java_accessibility_internal_AccessBridge_mouseEntered, fireMouseEntered)
+    HANDLE_STANDARD_EVENT_FROM_JAVA(Java_com_sun_java_accessibility_internal_AccessBridge_mouseExited, fireMouseExited)
+    HANDLE_STANDARD_EVENT_FROM_JAVA(Java_com_sun_java_accessibility_internal_AccessBridge_mousePressed, fireMousePressed)
+    HANDLE_STANDARD_EVENT_FROM_JAVA(Java_com_sun_java_accessibility_internal_AccessBridge_mouseReleased, fireMouseReleased)
+    HANDLE_STANDARD_EVENT_FROM_JAVA(Java_com_sun_java_accessibility_internal_AccessBridge_menuCanceled, fireMenuCanceled)
+    HANDLE_STANDARD_EVENT_FROM_JAVA(Java_com_sun_java_accessibility_internal_AccessBridge_menuDeselected, fireMenuDeselected)
+    HANDLE_STANDARD_EVENT_FROM_JAVA(Java_com_sun_java_accessibility_internal_AccessBridge_menuSelected, fireMenuSelected)
+    HANDLE_STANDARD_EVENT_FROM_JAVA(Java_com_sun_java_accessibility_internal_AccessBridge_popupMenuCanceled, firePopupMenuCanceled)
+    HANDLE_STANDARD_EVENT_FROM_JAVA(Java_com_sun_java_accessibility_internal_AccessBridge_popupMenuWillBecomeInvisible, firePopupMenuWillBecomeInvisible)
+    HANDLE_STANDARD_EVENT_FROM_JAVA(Java_com_sun_java_accessibility_internal_AccessBridge_popupMenuWillBecomeVisible, firePopupMenuWillBecomeVisible)
 
     /*
      * Map a HWND to a Java component
      *
-     * Class:     com_sun_java_accessibility_AccessBridge
+     * Class:     com_sun_java_accessibility_internal_AccessBridge
      * Method:    jawtGetComponentFromNativeWindowHandle
      * Signature: (I)Ljava/awt/Component;
      */
     JNIEXPORT jobject JNICALL
-    Java_com_sun_java_accessibility_AccessBridge_jawtGetComponentFromNativeWindowHandle
+    Java_com_sun_java_accessibility_internal_AccessBridge_jawtGetComponentFromNativeWindowHandle
         (JNIEnv *env, jobject callingObj, jint windowHandle) {
 
     JAWT awt;
@@ -2726,12 +2726,12 @@
     /*
      * Map a Java component to a HWND
      *
-     * Class:     com_sun_java_accessibility_AccessBridge
+     * Class:     com_sun_java_accessibility_internal_AccessBridge
      * Method:    jawtGetNativeWindowHandleFromComponent
      * Signature: (Ljava/awt/Component;)I
      */
     JNIEXPORT jint JNICALL
-    Java_com_sun_java_accessibility_AccessBridge_jawtGetNativeWindowHandleFromComponent
+    Java_com_sun_java_accessibility_internal_AccessBridge_jawtGetNativeWindowHandleFromComponent
         (JNIEnv *env, jobject callingObj, jobject component) {
 
         JAWT awt;
diff --git a/jdk/src/jdk.crypto.ucrypto/solaris/classes/com/oracle/security/ucrypto/NativeCipher.java b/jdk/src/jdk.crypto.ucrypto/solaris/classes/com/oracle/security/ucrypto/NativeCipher.java
index baf05f7..e8dd421 100644
--- a/jdk/src/jdk.crypto.ucrypto/solaris/classes/com/oracle/security/ucrypto/NativeCipher.java
+++ b/jdk/src/jdk.crypto.ucrypto/solaris/classes/com/oracle/security/ucrypto/NativeCipher.java
@@ -474,7 +474,7 @@
 
     /**
      * calls ucrypto_encrypt_update(...) or ucrypto_decrypt_update(...)
-     * @returns the length of output or if negative, an error status code
+     * @return the length of output or if negative, an error status code
      */
     private native static int nativeUpdate(long pContext, boolean encrypt,
                                            byte[] in, int inOfs, int inLen,
@@ -482,7 +482,7 @@
 
     /**
      * calls ucrypto_encrypt_final(...) or ucrypto_decrypt_final(...)
-     * @returns the length of output or if negative, an error status code
+     * @return the length of output or if negative, an error status code
      */
     native static int nativeFinal(long pContext, boolean encrypt,
                                           byte[] out, int outOfs);
diff --git a/jdk/src/jdk.crypto.ucrypto/solaris/classes/com/oracle/security/ucrypto/NativeRSACipher.java b/jdk/src/jdk.crypto.ucrypto/solaris/classes/com/oracle/security/ucrypto/NativeRSACipher.java
index a9ff2f0..df538c8 100644
--- a/jdk/src/jdk.crypto.ucrypto/solaris/classes/com/oracle/security/ucrypto/NativeRSACipher.java
+++ b/jdk/src/jdk.crypto.ucrypto/solaris/classes/com/oracle/security/ucrypto/NativeRSACipher.java
@@ -377,7 +377,7 @@
 
     /**
      * calls ucrypto_encrypt(...) or ucrypto_decrypt(...)
-     * @returns the length of output or an negative error status code
+     * @return the length of output or an negative error status code
      */
     private native static int nativeAtomic(int mech, boolean encrypt,
                                            long keyValue, int keyLength,
diff --git a/jdk/src/jdk.crypto.ucrypto/solaris/classes/com/oracle/security/ucrypto/NativeRSASignature.java b/jdk/src/jdk.crypto.ucrypto/solaris/classes/com/oracle/security/ucrypto/NativeRSASignature.java
index 14ba9ef..392d686 100644
--- a/jdk/src/jdk.crypto.ucrypto/solaris/classes/com/oracle/security/ucrypto/NativeRSASignature.java
+++ b/jdk/src/jdk.crypto.ucrypto/solaris/classes/com/oracle/security/ucrypto/NativeRSASignature.java
@@ -353,20 +353,20 @@
 
     /**
      * calls ucrypto_sign_update(...) or ucrypto_verify_update(...)
-     * @returns an error status code (0 means SUCCESS)
+     * @return an error status code (0 means SUCCESS)
      */
     private native static int nativeUpdate(long pContext, boolean sign,
                                            byte[] in, int inOfs, int inLen);
     /**
      * calls ucrypto_sign_update(...) or ucrypto_verify_update(...)
-     * @returns an error status code (0 means SUCCESS)
+     * @return an error status code (0 means SUCCESS)
      */
     private native static int nativeUpdate(long pContext, boolean sign,
                                            long pIn, int inLen);
 
     /**
      * calls ucrypto_sign_final(...) or ucrypto_verify_final(...)
-     * @returns the length of signature bytes or verification status.
+     * @return the length of signature bytes or verification status.
      * If negative, it indicates an error status code
      */
     private native static int nativeFinal(long pContext, boolean sign,
diff --git a/jdk/src/jdk.jartool/share/classes/com/sun/jarsigner/package-info.java b/jdk/src/jdk.jartool/share/classes/com/sun/jarsigner/package-info.java
index 6d0dfb1..278bb57 100644
--- a/jdk/src/jdk.jartool/share/classes/com/sun/jarsigner/package-info.java
+++ b/jdk/src/jdk.jartool/share/classes/com/sun/jarsigner/package-info.java
@@ -24,9 +24,9 @@
  */
 /**
  * This package comprises the interfaces and classes used to define the
- * signing mechanism used by the <tt>jarsigner</tt> tool.
+ * signing mechanism used by the {@code jarsigner} tool.
  * <p>
- * Clients may override the default signing mechanism of the <tt>jarsigner</tt>
+ * Clients may override the default signing mechanism of the {@code jarsigner}
  * tool by supplying an alternative implementation of
  * {@link com.sun.jarsigner.ContentSigner}.
  *
diff --git a/jdk/src/jdk.jartool/share/classes/sun/security/tools/jarsigner/TimestampedSigner.java b/jdk/src/jdk.jartool/share/classes/sun/security/tools/jarsigner/TimestampedSigner.java
index 3f440fe..c11a719 100644
--- a/jdk/src/jdk.jartool/share/classes/sun/security/tools/jarsigner/TimestampedSigner.java
+++ b/jdk/src/jdk.jartool/share/classes/sun/security/tools/jarsigner/TimestampedSigner.java
@@ -141,9 +141,9 @@
     /**
      * Examine the certificate for a Subject Information Access extension
      * (<a href="http://tools.ietf.org/html/rfc5280">RFC 5280</a>).
-     * The extension's <tt>accessMethod</tt> field should contain the object
+     * The extension's {@code accessMethod} field should contain the object
      * identifier defined for timestamping: 1.3.6.1.5.5.7.48.3 and its
-     * <tt>accessLocation</tt> field should contain an HTTP or HTTPS URL.
+     * {@code accessLocation} field should contain an HTTP or HTTPS URL.
      *
      * @param tsaCertificate An X.509 certificate for the TSA.
      * @return An HTTP or HTTPS URI or null if none was found.
diff --git a/jdk/src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipFileSystemProvider.java b/jdk/src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipFileSystemProvider.java
index 52063e4..3cb7ca4 100644
--- a/jdk/src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipFileSystemProvider.java
+++ b/jdk/src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipFileSystemProvider.java
@@ -65,8 +65,9 @@
             // only support legacy JAR URL syntax  jar:{uri}!/{entry} for now
             String spec = uri.getRawSchemeSpecificPart();
             int sep = spec.indexOf("!/");
-            if (sep != -1)
+            if (sep != -1) {
                 spec = spec.substring(0, sep);
+            }
             return Paths.get(new URI(spec)).toAbsolutePath();
         } catch (URISyntaxException e) {
             throw new IllegalArgumentException(e.getMessage(), e);
@@ -107,6 +108,9 @@
                 // assume NOT a zip/jar file
                 throw new UnsupportedOperationException();
             }
+            if (realPath == null) {  // newly created
+                realPath = path.toRealPath();
+            }
             filesystems.put(realPath, zipfs);
             return zipfs;
         }
@@ -132,7 +136,6 @@
 
     @Override
     public Path getPath(URI uri) {
-
         String spec = uri.getSchemeSpecificPart();
         int sep = spec.indexOf("!/");
         if (sep == -1)
diff --git a/jdk/src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipPath.java b/jdk/src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipPath.java
index 6e40ab5..edc6d3c 100644
--- a/jdk/src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipPath.java
+++ b/jdk/src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipPath.java
@@ -32,10 +32,10 @@
 import java.nio.file.DirectoryStream.Filter;
 import java.nio.file.attribute.*;
 import java.util.*;
+import static java.nio.charset.StandardCharsets.UTF_8;
 import static java.nio.file.StandardOpenOption.*;
 import static java.nio.file.StandardCopyOption.*;
 
-
 /**
  *
  * @author  Xueming Shen, Rajendra Gutupalli,Jaya Hangal
@@ -180,7 +180,7 @@
     public URI toUri() {
         try {
             return new URI("jar",
-                           zfs.getZipFile().toUri() +
+                           decodeUri(zfs.getZipFile().toUri().toString()) +
                            "!" +
                            zfs.getString(toAbsolutePath().path),
                            null);
@@ -866,4 +866,57 @@
             }
         }
     }
+
+    private static int decode(char c) {
+        if ((c >= '0') && (c <= '9'))
+            return c - '0';
+        if ((c >= 'a') && (c <= 'f'))
+            return c - 'a' + 10;
+        if ((c >= 'A') && (c <= 'F'))
+            return c - 'A' + 10;
+        assert false;
+        return -1;
+    }
+
+    // to avoid double escape
+    static String decodeUri(String s) {
+        if (s == null)
+            return s;
+        int n = s.length();
+        if (n == 0)
+            return s;
+        if (s.indexOf('%') < 0)
+            return s;
+
+        StringBuilder sb = new StringBuilder(n);
+        byte[] bb = new byte[n];
+        boolean betweenBrackets = false;
+
+        for (int i = 0; i < n;) {
+            char c = s.charAt(i);
+            if (c == '[') {
+                betweenBrackets = true;
+            } else if (betweenBrackets && c == ']') {
+                betweenBrackets = false;
+            }
+            if (c != '%' || betweenBrackets ) {
+                sb.append(c);
+                i++;
+                continue;
+            }
+            int nb = 0;
+            while (c == '%') {
+                assert (n - i >= 2);
+                bb[nb++] = (byte)(((decode(s.charAt(++i)) & 0xf) << 4) |
+                                  (decode(s.charAt(++i)) & 0xf));
+                if (++i >= n) {
+                    break;
+                }
+                c = s.charAt(i);
+            }
+            sb.append(new String(bb, 0, nb, UTF_8));
+        }
+        return sb.toString();
+    }
+
 }
diff --git a/jdk/test/ProblemList.txt b/jdk/test/ProblemList.txt
index 3cce490..aaa5576 100644
--- a/jdk/test/ProblemList.txt
+++ b/jdk/test/ProblemList.txt
@@ -122,6 +122,10 @@
 java/beans/XMLDecoder/8028054/TestConstructorFinder.java      generic-all
 java/beans/XMLDecoder/8028054/TestMethodFinder.java           generic-all
 
+# 8132565
+java/beans/Introspector/8132566/OverridePropertyInfoTest.java generic-all
+java/beans/Introspector/8132566/OverrideUserDefPropertyInfoTest.java generic-all
+
 ############################################################################
 
 # jdk_lang
diff --git a/jdk/test/TEST.ROOT b/jdk/test/TEST.ROOT
index 40887fe..0a601f2 100644
--- a/jdk/test/TEST.ROOT
+++ b/jdk/test/TEST.ROOT
@@ -18,7 +18,7 @@
 othervm.dirs=java/awt java/beans javax/accessibility javax/imageio javax/sound javax/print javax/management com/sun/awt sun/awt sun/java2d sun/pisces javax/xml/jaxp/testng/validation java/lang/ProcessHandle
 
 # Tests that cannot run concurrently
-exclusiveAccess.dirs=java/rmi/Naming java/util/prefs sun/management/jmxremote sun/tools/jstatd sun/security/mscapi java/util/stream javax/rmi
+exclusiveAccess.dirs=java/rmi/Naming java/util/prefs sun/management/jmxremote sun/tools/jstatd sun/security/mscapi java/util/stream javax/rmi sun/tools/jps
 
 # Group definitions
 groups=TEST.groups [closed/TEST.groups]
diff --git a/jdk/test/TEST.groups b/jdk/test/TEST.groups
index c83b2a5..2719e46 100644
--- a/jdk/test/TEST.groups
+++ b/jdk/test/TEST.groups
@@ -50,7 +50,8 @@
 tier3 = \
     :jdk_rmi \
     :jdk_beans \
-    :jdk_imageio
+    :jdk_imageio \
+    :jdk_sound
 
 ###############################################################################
 #
diff --git a/jdk/test/com/sun/java/accessibility/util/8051626/Bug8051626.java b/jdk/test/com/sun/java/accessibility/util/8051626/Bug8051626.java
new file mode 100644
index 0000000..4dccef5
--- /dev/null
+++ b/jdk/test/com/sun/java/accessibility/util/8051626/Bug8051626.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8051626
+ * @summary Ensure no failure when using Java Accessibility Utility with security manager
+ * @modules java.desktop jdk.accessibility
+ *
+ * @run main/othervm Bug8051626
+ */
+
+import com.sun.java.accessibility.util.AWTEventMonitor;
+import java.awt.Dimension;
+import java.lang.reflect.InvocationTargetException;
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.SwingUtilities;
+
+public class Bug8051626 {
+
+    public static void main(final String[] args) throws InterruptedException,
+                                                        InvocationTargetException {
+            final Bug8051626 app = new Bug8051626();
+            app.test();
+        }
+
+    private void test() throws InterruptedException, InvocationTargetException {
+        System.setSecurityManager(new SecurityManager());
+        SwingUtilities.invokeAndWait(new Runnable() {
+            @Override
+            public void run() {
+                final JFrame frame = new JFrame("Bug 8051626");
+                try {
+                    final JPanel panel = new JPanel();
+                    final JButton okButton = new JButton("OK");
+                    panel.add(okButton);
+                    frame.getContentPane().add(panel);
+                    frame.setMinimumSize(new Dimension(300, 180));
+                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+                    frame.pack();
+                    frame.setLocation(400, 300);
+                    frame.setVisible(true);
+                    // If the security manager is on this should not cause an exception.
+                    // Prior to the 8051626 fix it would as follows:
+                    // java.security.AccessControlException:
+                    //   access denied ("java.lang.RuntimePermission" "accessClassInPackage.com.sun.java.accessibility.util")
+                    AWTEventMonitor.getComponentWithFocus();
+                } finally {
+                    frame.dispose();
+                }
+            }
+        });
+    }
+
+}
diff --git a/jdk/test/com/sun/java/swing/plaf/windows/WindowsRadioButtonUI/7089914/bug7089914.java b/jdk/test/com/sun/java/swing/plaf/windows/WindowsRadioButtonUI/7089914/bug7089914.java
index c3f013c..3c0d03c 100644
--- a/jdk/test/com/sun/java/swing/plaf/windows/WindowsRadioButtonUI/7089914/bug7089914.java
+++ b/jdk/test/com/sun/java/swing/plaf/windows/WindowsRadioButtonUI/7089914/bug7089914.java
@@ -27,6 +27,8 @@
 
 /* @test
  * @bug 7089914
+ * @requires (os.family == "windows")
+ * @modules java.desktop/com.sun.java.swing.plaf.windows
  * @summary Focus on image icons are not visible in javaws cache with high contrast mode
  * @author Sean Chou
  */
diff --git a/jdk/test/com/sun/jndi/ldap/LdapTimeoutTest.java b/jdk/test/com/sun/jndi/ldap/LdapTimeoutTest.java
index e5bce16..2d9c97b 100644
--- a/jdk/test/com/sun/jndi/ldap/LdapTimeoutTest.java
+++ b/jdk/test/com/sun/jndi/ldap/LdapTimeoutTest.java
@@ -84,6 +84,10 @@
         throw new RuntimeException("Test failed");
     }
 
+    public void fail(Exception e) {
+        throw new RuntimeException("Test failed", e);
+    }
+
     boolean shutItDown(InitialContext ctx) {
         try {
             if (ctx != null) ctx.close();
@@ -232,7 +236,7 @@
             // SocketTimeoutException
             pass();
         } else {
-            fail();
+            fail(e);
         }
     }
 }
@@ -269,7 +273,8 @@
     }
 
     public void handleNamingException(NamingException e, long start, long end) {
-        if (NANOSECONDS.toMillis(end - start) < 2_900) {
+        System.out.println("ReadServerTimeoutTest: end-start=" + NANOSECONDS.toMillis(end - start));
+        if (NANOSECONDS.toMillis(end - start) < 2_500) {
             fail();
         } else {
             pass();
diff --git a/jdk/test/java/awt/Debug/DumpOnKey/DumpOnKey.java b/jdk/test/java/awt/Debug/DumpOnKey/DumpOnKey.java
new file mode 100644
index 0000000..694f572
--- /dev/null
+++ b/jdk/test/java/awt/Debug/DumpOnKey/DumpOnKey.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.AWTException;
+import java.awt.Frame;
+import java.awt.Robot;
+import java.awt.Window;
+import java.awt.event.InputEvent;
+import java.awt.event.KeyEvent;
+import java.io.PrintStream;
+
+/**
+ * @test
+ * @bug 4379403
+ * @run main/othervm DumpOnKey false
+ * @run main/othervm DumpOnKey -Dsun.awt.nativedebug=true true
+ * @run main/othervm DumpOnKey -Dsun.awt.nativedebug=true -Dawtdebug.on=true true
+ * @run main/othervm DumpOnKey -Dsun.awt.nativedebug=false -Dawtdebug.on=true false
+ * @run main/othervm DumpOnKey -Dsun.awt.nativedebug=true -Dawtdebug.on=false false
+ * @run main/othervm DumpOnKey -Dsun.awt.nativedebug=false -Dawtdebug.on=false false
+ * @run main/othervm/java.security.policy=dump.policy/secure=java.lang.SecurityManager DumpOnKey -Dsun.awt.nativedebug=true true
+ * @run main/othervm/java.security.policy=dump.policy/secure=java.lang.SecurityManager DumpOnKey -Dsun.awt.nativedebug=true -Dawtdebug.on=false false
+ */
+public final class DumpOnKey {
+
+    private static volatile boolean dumped;
+
+    public static void main(final String[] args) throws AWTException {
+        final boolean dump = Boolean.parseBoolean(args[0]);
+        final Window w = new Frame() {
+            @Override
+            public void list(final PrintStream out, final int indent) {
+                super.list(out, indent);
+                dumped = true;
+            }
+        };
+        w.setSize(200, 200);
+        w.setLocationRelativeTo(null);
+        w.setVisible(true);
+
+        final Robot robot = new Robot();
+        robot.setAutoDelay(50);
+        robot.setAutoWaitForIdle(true);
+        robot.mouseMove(w.getX() + w.getWidth() / 2,
+                        w.getY() + w.getHeight() / 2);
+        robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
+        robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
+
+        robot.keyPress(KeyEvent.VK_CONTROL);
+        robot.keyPress(KeyEvent.VK_SHIFT);
+        robot.keyPress(KeyEvent.VK_F1);
+        robot.keyRelease(KeyEvent.VK_F1);
+        robot.keyRelease(KeyEvent.VK_SHIFT);
+        robot.keyRelease(KeyEvent.VK_CONTROL);
+
+        w.dispose();
+        if (dumped != dump) {
+            throw new RuntimeException("Exp:" + dump + ", actual:" + dumped);
+        }
+    }
+}
diff --git a/jdk/test/java/awt/Debug/DumpOnKey/dump.policy b/jdk/test/java/awt/Debug/DumpOnKey/dump.policy
new file mode 100644
index 0000000..6dcf571
--- /dev/null
+++ b/jdk/test/java/awt/Debug/DumpOnKey/dump.policy
@@ -0,0 +1,3 @@
+grant {
+    permission java.awt.AWTPermission "createRobot";
+};
diff --git a/jdk/test/java/awt/Frame/ShapeNotSetSometimes/ShapeNotSetSometimes.java b/jdk/test/java/awt/Frame/ShapeNotSetSometimes/ShapeNotSetSometimes.java
index 751b38e..af9c361 100644
--- a/jdk/test/java/awt/Frame/ShapeNotSetSometimes/ShapeNotSetSometimes.java
+++ b/jdk/test/java/awt/Frame/ShapeNotSetSometimes/ShapeNotSetSometimes.java
@@ -46,11 +46,8 @@
     private static Robot robot;
 
     public ShapeNotSetSometimes() throws Exception {
-        EventQueue.invokeAndWait(new Runnable() {
-            public void run() {
-                initializeGUI();
-            }
-        });
+        EventQueue.invokeAndWait(this::initializeGUI);
+        robot.waitForIdle();
     }
 
     private void initializeGUI() {
@@ -119,7 +116,7 @@
     public static void main(String[] args) throws Exception {
         robot = new Robot();
 
-        for(int i = 0; i < 100; i++) {
+        for(int i = 0; i < 50; i++) {
             System.out.println("Attempt " + i);
             new ShapeNotSetSometimes().doTest();
         }
@@ -134,11 +131,7 @@
         robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
         robot.delay(500);
 
-        EventQueue.invokeAndWait(new Runnable() {
-            public void run() {
-                window.requestFocus();
-            }
-        });
+        EventQueue.invokeAndWait(window::requestFocus);
 
         robot.waitForIdle();
         try {
diff --git a/jdk/test/java/awt/Modal/LWModalTest/LWModalTest.java b/jdk/test/java/awt/Modal/LWModalTest/LWModalTest.java
index 791a3bf..272285e 100644
--- a/jdk/test/java/awt/Modal/LWModalTest/LWModalTest.java
+++ b/jdk/test/java/awt/Modal/LWModalTest/LWModalTest.java
@@ -40,8 +40,6 @@
 
 import javax.swing.*;
 
-import sun.awt.*;
-
 import test.java.awt.regtesthelpers.Util;
 
 public class LWModalTest
diff --git a/jdk/test/java/awt/Mouse/MouseWheelAbsXY/MouseWheelAbsXY.java b/jdk/test/java/awt/Mouse/MouseWheelAbsXY/MouseWheelAbsXY.java
new file mode 100644
index 0000000..f112132
--- /dev/null
+++ b/jdk/test/java/awt/Mouse/MouseWheelAbsXY/MouseWheelAbsXY.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.AWTException;
+import java.awt.Frame;
+import java.awt.GraphicsConfiguration;
+import java.awt.GraphicsDevice;
+import java.awt.GraphicsEnvironment;
+import java.awt.Robot;
+import java.awt.Window;
+import java.awt.event.InputEvent;
+
+import static java.awt.GraphicsEnvironment.*;
+
+/**
+ * @test
+ * @bug 6778087
+ */
+public final class MouseWheelAbsXY {
+
+    private static boolean done;
+    private static int wheelX;
+    private static int wheelY;
+    private static int mouseX;
+    private static int mouseY;
+
+    public static void main(final String[] args) throws AWTException {
+        GraphicsEnvironment ge = getLocalGraphicsEnvironment();
+        GraphicsDevice[] sds = ge.getScreenDevices();
+        for (GraphicsDevice gd : sds) {
+            test(gd.getDefaultConfiguration());
+        }
+    }
+
+    private static void test(GraphicsConfiguration gc) throws AWTException {
+        final Window frame = new Frame(gc);
+        try {
+            frame.addMouseWheelListener(e -> {
+                wheelX = e.getXOnScreen();
+                wheelY = e.getYOnScreen();
+                done = true;
+            });
+            frame.setSize(300, 300);
+            frame.setVisible(true);
+
+            final Robot robot = new Robot();
+            robot.setAutoDelay(50);
+            robot.setAutoWaitForIdle(true);
+            mouseX = frame.getX() + frame.getWidth() / 2;
+            mouseY = frame.getY() + frame.getHeight() / 2;
+
+            robot.mouseMove(mouseX, mouseY);
+            robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
+            robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
+            robot.mouseWheel(10);
+
+            validate();
+        } finally {
+            frame.dispose();
+        }
+    }
+
+    private static void validate() {
+        if (!done || wheelX != mouseX || wheelY != mouseY) {
+            System.err.println("Expected X: " + mouseX);
+            System.err.println("Expected Y: " + mouseY);
+            System.err.println("Actual X: " + wheelX);
+            System.err.println("Actual Y: " + wheelY);
+            throw new RuntimeException("Test failed");
+        }
+    }
+}
diff --git a/jdk/test/java/awt/TextArea/TextAreaCaretVisibilityTest/bug7129742.java b/jdk/test/java/awt/TextArea/TextAreaCaretVisibilityTest/bug7129742.java
index 577544d..7bbb230 100644
--- a/jdk/test/java/awt/TextArea/TextAreaCaretVisibilityTest/bug7129742.java
+++ b/jdk/test/java/awt/TextArea/TextAreaCaretVisibilityTest/bug7129742.java
@@ -29,8 +29,10 @@
 /* @test
  * @bug 7129742
  * @summary Focus in non-editable TextArea is not shown on Linux.
+ * @requires (os.family == "linux" | os.name == "solaris")
  * @modules java.desktop/sun.awt
  *          java.desktop/java.awt.peer
+ *          java.desktop/sun.awt.X11
  * @author Sean Chou
  */
 
diff --git a/jdk/test/java/awt/WMSpecificTests/Metacity/FullscreenDialogModality.java b/jdk/test/java/awt/WMSpecificTests/Metacity/FullscreenDialogModality.java
index eca63ff..ae07ffc 100644
--- a/jdk/test/java/awt/WMSpecificTests/Metacity/FullscreenDialogModality.java
+++ b/jdk/test/java/awt/WMSpecificTests/Metacity/FullscreenDialogModality.java
@@ -25,6 +25,8 @@
  * @test
  * @bug 8012586
  * @summary verify that modal dialog will appeared above fullscreen window under Metacity WM.
+ * @requires (os.name == "linux" | os.name == "solaris")
+ * @modules java.desktop/sun.awt.X11
  * @library ../../regtesthelpers
  * @build Util
  * @run main FullscreenDialogModality
diff --git a/jdk/test/java/awt/WMSpecificTests/Mutter/MutterMaximizeTest.java b/jdk/test/java/awt/WMSpecificTests/Mutter/MutterMaximizeTest.java
index a54f5c4..96506bf 100644
--- a/jdk/test/java/awt/WMSpecificTests/Mutter/MutterMaximizeTest.java
+++ b/jdk/test/java/awt/WMSpecificTests/Mutter/MutterMaximizeTest.java
@@ -28,6 +28,8 @@
   @bug      7043963
   @summary  Tests  that the screen location of windows is
             updated properly after a maximize.
+  @requires (os.name == "linux" | os.name == "solaris")
+  @modules java.desktop/sun.awt.X11
   @author   Denis Lila
   @library  ../../regtesthelpers
   @build    Util
diff --git a/jdk/test/java/awt/Window/TranslucentJAppletTest/TranslucentJAppletTest.java b/jdk/test/java/awt/Window/TranslucentJAppletTest/TranslucentJAppletTest.java
index 330a08e..de908c4 100644
--- a/jdk/test/java/awt/Window/TranslucentJAppletTest/TranslucentJAppletTest.java
+++ b/jdk/test/java/awt/Window/TranslucentJAppletTest/TranslucentJAppletTest.java
@@ -100,12 +100,10 @@
         if (!paintComponentCalled) {
             throw new RuntimeException("Test FAILED: panel's paintComponent() method is not called");
         }
+        Thread.sleep(1500);
 
         Color newColor1 = r.getPixelColor(100, 100);
-        // unfortunately, robot.getPixelColor() doesn't work for some unknown reason
-        // Color newColor2 = r.getPixelColor(200, 200);
-        BufferedImage bim = r.createScreenCapture(new Rectangle(200, 200, 1, 1));
-        Color newColor2 = new Color(bim.getRGB(0, 0));
+        Color newColor2 = r.getPixelColor(200, 200);
 
         // Frame must be transparent at (100, 100) in screen coords
         if (!color1.equals(newColor1)) {
diff --git a/jdk/test/java/awt/datatransfer/DataFlavor/XJavaUrlDataFlavorTest/XJavaUrlDataFlavorTest.java b/jdk/test/java/awt/datatransfer/DataFlavor/XJavaUrlDataFlavorTest/XJavaUrlDataFlavorTest.java
new file mode 100644
index 0000000..33b4f40
--- /dev/null
+++ b/jdk/test/java/awt/datatransfer/DataFlavor/XJavaUrlDataFlavorTest/XJavaUrlDataFlavorTest.java
@@ -0,0 +1,345 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+  @test
+  @bug 8081787
+  @summary MalformedURLException is thrown during reading data for application/x-java-url;class=java.net.URL flavor
+  @author Mikhail Cherkasov
+  @run main/manual XJavaUrlDataFlavorTest
+*/
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.datatransfer.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.net.URL;
+
+public class XJavaUrlDataFlavorTest {
+    private static void init() {
+        String[] instructions =
+                {"Test for MacOS X only:",
+                        "1. The aim is to test that java works fine with \"application/" +
+                                "x-java-url;class=java.net.URL\"falvor.",
+                        "2. Open finder and select any file.",
+                        "3. Press CMD+C or press \"Copy\" in context menu",
+                        "4. Focus window with \"Test\" Button.",
+                        "5. If you see URL for selected file, then test PASSED,",
+                        "otherwise test FAILED."
+                };
+
+        Sysout.createDialog();
+        Sysout.printInstructions(instructions);
+
+        final Frame frame = new Frame();
+        Panel panel = new Panel();
+        panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS));
+
+        frame.add(panel);
+        Button testButton = new Button("Test");
+        final TextField textField = new TextField(40);
+        testButton.addActionListener(new AbstractAction() {
+            @Override
+            public void actionPerformed(ActionEvent ae) {
+                try {
+                    Clipboard board = Toolkit.getDefaultToolkit().getSystemClipboard();
+                    URL url = (URL)board.getData(new DataFlavor("application/x-java-url;class=java.net.URL"));
+                    textField.setText(url.toString());
+                } catch (Exception e) {
+                    throw new RuntimeException(e);
+                }
+            }
+        });
+        panel.add(testButton);
+        panel.add(textField);
+        frame.setBounds(200, 200, 400, 400);
+        frame.setVisible(true);
+
+    }//End  init()
+
+
+    /*****************************************************
+     * Standard Test Machinery Section
+     * DO NOT modify anything in this section -- it's a
+     * standard chunk of code which has all of the
+     * synchronisation necessary for the test harness.
+     * By keeping it the same in all tests, it is easier
+     * to read and understand someone else's test, as
+     * well as insuring that all tests behave correctly
+     * with the test harness.
+     * There is a section following this for test-defined
+     * classes
+     ******************************************************/
+    private static boolean theTestPassed = false;
+    private static boolean testGeneratedInterrupt = false;
+    private static String failureMessage = "";
+
+    private static Thread mainThread = null;
+
+    private static int sleepTime = 300000;
+
+    public static void main(String args[]) throws InterruptedException {
+        mainThread = Thread.currentThread();
+        try {
+            init();
+        } catch (TestPassedException e) {
+            //The test passed, so just return from main and harness will
+            // interepret this return as a pass
+            return;
+        }
+        //At this point, neither test passed nor test failed has been
+        // called -- either would have thrown an exception and ended the
+        // test, so we know we have multiple threads.
+
+        //Test involves other threads, so sleep and wait for them to
+        // called pass() or fail()
+        try {
+            Thread.sleep(sleepTime);
+            //Timed out, so fail the test
+            throw new RuntimeException("Timed out after " + sleepTime / 1000 + " seconds");
+        } catch (InterruptedException e) {
+            if (!testGeneratedInterrupt) throw e;
+
+            //reset flag in case hit this code more than once for some reason (just safety)
+            testGeneratedInterrupt = false;
+            if (theTestPassed == false) {
+                throw new RuntimeException(failureMessage);
+            }
+        }
+
+    }//main
+
+    public static synchronized void setTimeoutTo(int seconds) {
+        sleepTime = seconds * 1000;
+    }
+
+    public static synchronized void pass() {
+        Sysout.println("The test passed.");
+        Sysout.println("The test is over, hit  Ctl-C to stop Java VM");
+        //first check if this is executing in main thread
+        if (mainThread == Thread.currentThread()) {
+            //Still in the main thread, so set the flag just for kicks,
+            // and throw a test passed exception which will be caught
+            // and end the test.
+            theTestPassed = true;
+            throw new TestPassedException();
+        }
+        //pass was called from a different thread, so set the flag and interrupt
+        // the main thead.
+        theTestPassed = true;
+        testGeneratedInterrupt = true;
+        if (mainThread != null) {
+            mainThread.interrupt();
+        }
+    }//pass()
+
+    public static synchronized void fail() {
+        //test writer didn't specify why test failed, so give generic
+        fail("it just plain failed! :-)");
+    }
+
+    public static synchronized void fail(String whyFailed) {
+        Sysout.println("The test failed: " + whyFailed);
+        Sysout.println("The test is over, hit  Ctl-C to stop Java VM");
+        //check if this called from main thread
+        if (mainThread == Thread.currentThread()) {
+            //If main thread, fail now 'cause not sleeping
+            throw new RuntimeException(whyFailed);
+        }
+        theTestPassed = false;
+        testGeneratedInterrupt = true;
+        failureMessage = whyFailed;
+        mainThread.interrupt();
+    }//fail()
+
+}// class ManualMainTest
+
+//This exception is used to exit from any level of call nesting
+// when it's determined that the test has passed, and immediately
+// end the test.
+class TestPassedException extends RuntimeException {
+}
+
+//*********** End Standard Test Machinery Section **********
+
+
+/****************************************************
+ * Standard Test Machinery
+ * DO NOT modify anything below -- it's a standard
+ * chunk of code whose purpose is to make user
+ * interaction uniform, and thereby make it simpler
+ * to read and understand someone else's test.
+ ****************************************************/
+
+/**
+ This is part of the standard test machinery.
+ It creates a dialog (with the instructions), and is the interface
+ for sending text messages to the user.
+ To print the instructions, send an array of strings to Sysout.createDialog
+ WithInstructions method.  Put one line of instructions per array entry.
+ To display a message for the tester to see, simply call Sysout.println
+ with the string to be displayed.
+ This mimics System.out.println but works within the test harness as well
+ as standalone.
+ */
+
+class Sysout {
+    private static TestDialog dialog;
+    private static boolean numbering = false;
+    private static int messageNumber = 0;
+
+    public static void createDialogWithInstructions(String[] instructions) {
+        dialog = new TestDialog(new Frame(), "Instructions");
+        dialog.printInstructions(instructions);
+        dialog.setVisible(true);
+        println("Any messages for the tester will display here.");
+    }
+
+    public static void createDialog() {
+        dialog = new TestDialog(new Frame(), "Instructions");
+        String[] defInstr = {"Instructions will appear here. ", ""};
+        dialog.printInstructions(defInstr);
+        dialog.setVisible(true);
+        println("Any messages for the tester will display here.");
+    }
+
+
+    /* Enables message counting for the tester. */
+    public static void enableNumbering(boolean enable) {
+        numbering = enable;
+    }
+
+    public static void printInstructions(String[] instructions) {
+        dialog.printInstructions(instructions);
+    }
+
+
+    public static void println(String messageIn) {
+        if (numbering) {
+            messageIn = "" + messageNumber + " " + messageIn;
+            messageNumber++;
+        }
+        dialog.displayMessage(messageIn);
+    }
+
+}// Sysout  class
+
+/**
+ This is part of the standard test machinery.  It provides a place for the
+ test instructions to be displayed, and a place for interactive messages
+ to the user to be displayed.
+ To have the test instructions displayed, see Sysout.
+ To have a message to the user be displayed, see Sysout.
+ Do not call anything in this dialog directly.
+ */
+class TestDialog extends Dialog implements ActionListener {
+
+    TextArea instructionsText;
+    TextArea messageText;
+    int maxStringLength = 80;
+    Panel buttonP = new Panel();
+    Button passB = new Button("pass");
+    Button failB = new Button("fail");
+
+    //DO NOT call this directly, go through Sysout
+    public TestDialog(Frame frame, String name) {
+        super(frame, name);
+        int scrollBoth = TextArea.SCROLLBARS_BOTH;
+        instructionsText = new TextArea("", 15, maxStringLength, scrollBoth);
+        add("North", instructionsText);
+
+        messageText = new TextArea("", 5, maxStringLength, scrollBoth);
+        add("Center", messageText);
+
+        passB = new Button("pass");
+        passB.setActionCommand("pass");
+        passB.addActionListener(this);
+        buttonP.add("East", passB);
+
+        failB = new Button("fail");
+        failB.setActionCommand("fail");
+        failB.addActionListener(this);
+        buttonP.add("West", failB);
+
+        add("South", buttonP);
+        pack();
+
+        setVisible(true);
+    }// TestDialog()
+
+    //DO NOT call this directly, go through Sysout
+    public void printInstructions(String[] instructions) {
+        //Clear out any current instructions
+        instructionsText.setText("");
+
+        //Go down array of instruction strings
+
+        String printStr, remainingStr;
+        for (int i = 0; i < instructions.length; i++) {
+            //chop up each into pieces maxSringLength long
+            remainingStr = instructions[i];
+            while (remainingStr.length() > 0) {
+                //if longer than max then chop off first max chars to print
+                if (remainingStr.length() >= maxStringLength) {
+                    //Try to chop on a word boundary
+                    int posOfSpace = remainingStr.
+                            lastIndexOf(' ', maxStringLength - 1);
+
+                    if (posOfSpace <= 0) posOfSpace = maxStringLength - 1;
+
+                    printStr = remainingStr.substring(0, posOfSpace + 1);
+                    remainingStr = remainingStr.substring(posOfSpace + 1);
+                }
+                //else just print
+                else {
+                    printStr = remainingStr;
+                    remainingStr = "";
+                }
+
+                instructionsText.append(printStr + "\n");
+
+            }// while
+
+        }// for
+
+    }//printInstructions()
+
+    //DO NOT call this directly, go through Sysout
+    public void displayMessage(String messageIn) {
+        messageText.append(messageIn + "\n");
+        System.out.println(messageIn);
+    }
+
+    //catch presses of the passed and failed buttons.
+    //simply call the standard pass() or fail() static methods of
+    //ManualMainTest
+    public void actionPerformed(ActionEvent e) {
+        if (e.getActionCommand() == "pass") {
+            XJavaUrlDataFlavorTest.pass();
+        } else {
+            XJavaUrlDataFlavorTest.fail();
+        }
+    }
+
+}// TestDialog  class
\ No newline at end of file
diff --git a/jdk/test/java/awt/font/FontNames/GetLCIDFromLocale.java b/jdk/test/java/awt/font/FontNames/GetLCIDFromLocale.java
new file mode 100644
index 0000000..fc5aed2
--- /dev/null
+++ b/jdk/test/java/awt/font/FontNames/GetLCIDFromLocale.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2002, 2015, Oracle and/or its affiliates. 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.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 4351212
+ * @modules java.desktop/sun.font
+ * @summary Verify that new getLCIDFromLocale method works
+ */
+
+import java.lang.reflect.Method;
+import java.util.Locale;
+
+public class GetLCIDFromLocale {
+
+     static Method getLCIDMethod = null;
+     public static void main(String args[]) {
+        try {
+            Class ttClass = Class.forName("sun.font.TrueTypeFont");
+            getLCIDMethod =
+                ttClass.getDeclaredMethod("getLCIDFromLocale",
+                                           java.util.Locale.class);
+            getLCIDMethod.setAccessible(true); // its private
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new RuntimeException("Reflection failed");
+        }
+        if (getLCIDMethod == null) {
+            throw new RuntimeException("No method found");
+        }
+
+        test(Locale.US, 0x0409);
+        test(Locale.GERMAN, 0x0407);
+        test(Locale.GERMANY, 0x0407);
+        test(new Locale("de", "AT"), 0x0c07);
+        test(new Locale("ar"), 0x0401);
+        test(new Locale("ar", "SA"), 0x0401);
+        test(new Locale("ar", "EG"), 0x0c01);
+        test(new Locale("??"), 0x0409);
+        test(new Locale("??", "??"), 0x0409);
+        test(Locale.KOREA, 0x0412);
+    }
+
+    private static void test(Locale locale, int expectedLCID) {
+        try {
+            short lcid = (Short)getLCIDMethod.invoke(null, locale);
+            System.out.println("lcid="+lcid+" expected="+expectedLCID);
+            if (lcid != expectedLCID) {
+                 throw new RuntimeException();
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new RuntimeException("Method invocation exception");
+        }
+    }
+}
diff --git a/jdk/test/java/awt/image/RescaleOp/RescaleAlphaTest.java b/jdk/test/java/awt/image/RescaleOp/RescaleAlphaTest.java
new file mode 100644
index 0000000..b6b16ee
--- /dev/null
+++ b/jdk/test/java/awt/image/RescaleOp/RescaleAlphaTest.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/**
+ * @test
+ * @bug 8080287
+ * @run RescaleAlphaTest
+ * @summary RescaleOp with scaleFactor/alpha should copy alpha to destination
+ * channel
+ */
+import java.awt.Graphics2D;
+import java.awt.image.BufferedImage;
+import java.awt.image.RescaleOp;
+import java.awt.Color;
+import java.awt.Frame;
+import java.io.IOException;
+
+public class RescaleAlphaTest {
+
+    BufferedImage bimg = null, bimg1;
+    int w = 10, h = 10;
+    float scaleFactor = 0.5f;
+    float offset = 0.0f;
+
+    public static void main(String[] args) throws Exception {
+        RescaleAlphaTest test = new RescaleAlphaTest();
+        test.startTest();
+    }
+
+    private void startTest() throws Exception {
+
+        // Test with source image with alpha channel
+
+        bimg = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
+        Graphics2D g2d = bimg.createGraphics();
+        g2d.setColor(Color.GREEN);
+        g2d.fillRect(0, 0, w, h);
+
+        RescaleOp res = new RescaleOp(scaleFactor, offset, null);
+        bimg1 = res.filter(bimg, null);
+
+        // check if destination image has alpha channel copied from src
+        checkForAlpha(bimg1);
+
+        // Test with source image without alpha channel
+        bimg = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
+        g2d = bimg.createGraphics();
+        g2d.setColor(Color.GREEN);
+        g2d.fillRect(0, 0, w, h);
+
+
+        res = new RescaleOp(scaleFactor, offset, null);
+
+        // Create destination image with alpha channel
+        bimg1 = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
+        bimg1 = res.filter(bimg, bimg1);
+
+        // check if filtered destination image has alpha channel
+        checkForAlpha(bimg1);
+
+    }
+
+    private void checkForAlpha(BufferedImage bi) throws IOException {
+        int argb = bi.getRGB(w/2, h/2);
+        if ((argb >>> 24) != 255) {
+            throw new
+            RuntimeException("Wrong alpha in destination image.RescaleOp with alpha failed.");
+        }
+    }
+}
diff --git a/jdk/test/java/beans/Introspector/8132566/CBase.java b/jdk/test/java/beans/Introspector/8132566/CBase.java
new file mode 100644
index 0000000..b772af9
--- /dev/null
+++ b/jdk/test/java/beans/Introspector/8132566/CBase.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.beans.BeanProperty;
+import java.beans.PropertyChangeListener;
+
+
+public class CBase {
+
+    private int value;
+
+    @BeanProperty(
+            bound        = true,
+            expert       = true,
+            hidden       = true,
+            preferred    = true,
+            required     = true,
+            visualUpdate = true,
+            description  = "BASE",
+            enumerationValues = {"javax.swing.SwingConstants.TOP"}
+            )
+    public void setValue(int v) { value = v; }
+    public  int getValue()      { return value; }
+
+    public void addPropertyChangeListener(PropertyChangeListener l)    {}
+    public void removePropertyChangeListener(PropertyChangeListener l) {}
+}
diff --git a/jdk/test/java/beans/Introspector/8132566/Checker.java b/jdk/test/java/beans/Introspector/8132566/Checker.java
new file mode 100644
index 0000000..6243663
--- /dev/null
+++ b/jdk/test/java/beans/Introspector/8132566/Checker.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.util.Arrays;
+
+public class Checker {
+
+    static void checkEq(String what, Object v, Object ref) throws Exception {
+        if ((v != null) && v.equals(ref)) {
+            System.out.println(what + ": ok (" + ref.toString() + ")");
+        } else { throw new Exception(
+                "invalid " + what + ", expected: \"" + ref + "\", got: \"" + v + "\"");
+        }
+    }
+
+    static void checkEnumEq(String what, Object v, Object ref[]) throws Exception {
+        if (v == null) { throw new Exception("null " + what); }
+        if (!(v instanceof Object[])) { throw new Exception("invalid " + what); }
+        if (Arrays.equals((Object []) v, ref)) { System.out.println(what + ": ok"); }
+        else { throw new Exception("invalid " + what); }
+    }
+}
diff --git a/jdk/test/java/beans/Introspector/8132566/InheritPropertyInfoTest.java b/jdk/test/java/beans/Introspector/8132566/InheritPropertyInfoTest.java
new file mode 100644
index 0000000..dab5b23
--- /dev/null
+++ b/jdk/test/java/beans/Introspector/8132566/InheritPropertyInfoTest.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.beans.BeanInfo;
+import java.beans.Introspector;
+import java.beans.PropertyDescriptor;
+
+/**
+ * @test
+ * @bug 8132566 8131939
+ * @summary Check if the derived class inherits the property info
+ *          from the base class.
+ * @author a.stepanov
+ */
+
+public class InheritPropertyInfoTest {
+
+    public static class C extends CBase {}
+
+    public static void main(String[] args) throws Exception {
+
+        BeanInfo i = Introspector.getBeanInfo(C.class, Object.class);
+        PropertyDescriptor[] pds = i.getPropertyDescriptors();
+
+        Checker.checkEq("number of properties", pds.length, 1);
+        PropertyDescriptor p = pds[0];
+
+        Checker.checkEq("property description", p.getShortDescription(), "BASE");
+
+        Checker.checkEq("isBound",  p.isBound(),  true);
+        Checker.checkEq("isExpert", p.isExpert(), true);
+        Checker.checkEq("isHidden", p.isHidden(), true);
+        Checker.checkEq("isPreferred", p.isPreferred(), true);
+        Checker.checkEq("required", p.getValue("required"), true);
+        Checker.checkEq("visualUpdate", p.getValue("visualUpdate"), true);
+
+        Checker.checkEnumEq("enumerationValues", p.getValue("enumerationValues"),
+            new Object[]{"TOP", 1, "javax.swing.SwingConstants.TOP"});
+    }
+}
diff --git a/jdk/test/java/beans/Introspector/8132566/OverridePropertyInfoTest.java b/jdk/test/java/beans/Introspector/8132566/OverridePropertyInfoTest.java
new file mode 100644
index 0000000..ffdb486
--- /dev/null
+++ b/jdk/test/java/beans/Introspector/8132566/OverridePropertyInfoTest.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.beans.BeanInfo;
+import java.beans.BeanProperty;
+import java.beans.Introspector;
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyDescriptor;
+
+/**
+ * @test
+ * @bug 8132566 8132565 8131939
+ * @summary Check if the derived class overrides
+ *           the parent's property info.
+ * @author a.stepanov
+ */
+
+public class OverridePropertyInfoTest {
+
+    public static class C extends CBase {
+
+        private int value;
+
+        @BeanProperty(
+                bound        = false,
+                expert       = false,
+                hidden       = false,
+                preferred    = false,
+                required     = false,
+                visualUpdate = false,
+                description = "CHILD",
+                enumerationValues = {"javax.swing.SwingConstants.BOTTOM"}
+                )
+        @Override
+        public void setValue(int v) { value = v; }
+        @Override
+        public  int getValue() { return value; }
+
+        @Override
+        public void addPropertyChangeListener(PropertyChangeListener l)    {}
+        @Override
+        public void removePropertyChangeListener(PropertyChangeListener l) {}
+    }
+
+    public static void main(String[] args) throws Exception {
+
+        BeanInfo i = Introspector.getBeanInfo(C.class, Object.class);
+        PropertyDescriptor[] pds = i.getPropertyDescriptors();
+
+        Checker.checkEq("number of properties", pds.length, 1);
+        PropertyDescriptor p = pds[0];
+        Checker.checkEq("property description", p.getShortDescription(), "CHILD");
+
+        Checker.checkEq("isBound",  p.isBound(),  false);
+        Checker.checkEq("isExpert", p.isExpert(), false);
+        Checker.checkEq("isHidden", p.isHidden(), false);
+        Checker.checkEq("isPreferred", p.isPreferred(), false);
+        Checker.checkEq("required", p.getValue("required"), false);
+        Checker.checkEq("visualUpdate", p.getValue("visualUpdate"), false);
+
+        Checker.checkEnumEq("enumerationValues", p.getValue("enumerationValues"),
+            new Object[]{"BOTTOM", 3, "javax.swing.SwingConstants.BOTTOM"});
+    }
+}
diff --git a/jdk/test/java/beans/Introspector/8132566/OverrideUserDefPropertyInfoTest.java b/jdk/test/java/beans/Introspector/8132566/OverrideUserDefPropertyInfoTest.java
new file mode 100644
index 0000000..0992e47
--- /dev/null
+++ b/jdk/test/java/beans/Introspector/8132566/OverrideUserDefPropertyInfoTest.java
@@ -0,0 +1,154 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.beans.BeanDescriptor;
+import java.beans.BeanInfo;
+import java.beans.BeanProperty;
+import java.beans.EventSetDescriptor;
+import java.beans.IntrospectionException;
+import java.beans.Introspector;
+import java.beans.JavaBean;
+import java.beans.MethodDescriptor;
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyDescriptor;
+import java.beans.SimpleBeanInfo;
+
+/**
+ * @test
+ * @bug 8132566 8132669 8131939
+ * @summary Check if the derived class overrides
+ *          the parent's user-defined property info.
+ * @author a.stepanov
+ */
+
+public class OverrideUserDefPropertyInfoTest {
+
+    private static final boolean baseFlag  = true;
+    private static final boolean childFlag = false;
+
+    @JavaBean(description = "CHILD")
+    public static class C extends Base {
+
+        private int x;
+
+        @BeanProperty(
+                bound        = childFlag,
+                expert       = childFlag,
+                hidden       = childFlag,
+                preferred    = childFlag,
+                required     = childFlag,
+                visualUpdate = childFlag,
+                description = "CHILDPROPERTY",
+                enumerationValues = {"javax.swing.SwingConstants.BOTTOM"}
+                )
+        @Override
+        public void setX(int v) { x = v; }
+        @Override
+        public  int getX() { return x; }
+
+        @Override
+        public void addPropertyChangeListener(PropertyChangeListener l)    {}
+        @Override
+        public void removePropertyChangeListener(PropertyChangeListener l) {}
+    }
+
+    public static class Base {
+        private int x;
+        public void setX(int v) { x = v; }
+        public  int getX() { return x; }
+        public void addPropertyChangeListener(PropertyChangeListener l)    {}
+        public void removePropertyChangeListener(PropertyChangeListener l) {}
+    }
+
+    public static class BaseBeanInfo extends SimpleBeanInfo {
+
+        @Override
+        public BeanDescriptor getBeanDescriptor() {
+            BeanDescriptor d = new BeanDescriptor(Base.class, null);
+            d.setShortDescription("BASE");
+            return d;
+        }
+
+        @Override
+        public PropertyDescriptor[] getPropertyDescriptors() {
+            PropertyDescriptor[] p = new PropertyDescriptor[1];
+
+            try {
+                p[0] = new PropertyDescriptor ("x", Base.class, "getX", null);
+                p[0].setShortDescription("BASEPROPERTY");
+                p[0].setBound (baseFlag);
+                p[0].setExpert(baseFlag);
+                p[0].setHidden(baseFlag);
+                p[0].setPreferred(baseFlag);
+                p[0].setValue("required", baseFlag);
+                p[0].setValue("visualUpdate", baseFlag);
+                p[0].setValue("enumerationValues",
+                    new Object[]{"TOP", 1, "javax.swing.SwingConstants.TOP"});
+            } catch(IntrospectionException e) { e.printStackTrace(); }
+
+            return p;
+        }
+
+        @Override
+        public EventSetDescriptor[] getEventSetDescriptors() { return new EventSetDescriptor[0]; }
+        @Override
+        public MethodDescriptor[] getMethodDescriptors() {
+            MethodDescriptor[] m = new MethodDescriptor[1];
+            try {
+                m[0] = new MethodDescriptor(Base.class.getMethod("setX", new Class[] {int.class}));
+                m[0].setDisplayName("");
+            }
+            catch( NoSuchMethodException | SecurityException e) {}
+            return m;
+        }
+
+        @Override
+        public int getDefaultPropertyIndex() { return -1; }
+        @Override
+        public int getDefaultEventIndex() { return -1; }
+        @Override
+        public java.awt.Image getIcon(int iconKind) { return null; }
+    }
+
+    public static void main(String[] args) throws Exception {
+
+        BeanInfo i = Introspector.getBeanInfo(C.class, Object.class);
+        Checker.checkEq("description",
+            i.getBeanDescriptor().getShortDescription(), "CHILD");
+
+        PropertyDescriptor[] pds = i.getPropertyDescriptors();
+        Checker.checkEq("number of properties", pds.length, 1);
+        PropertyDescriptor p = pds[0];
+
+        Checker.checkEq("property description", p.getShortDescription(), "CHILDPROPERTY");
+        Checker.checkEq("isBound",  p.isBound(),  childFlag);
+        Checker.checkEq("isExpert", p.isExpert(), childFlag);
+        Checker.checkEq("isHidden", p.isHidden(), childFlag);
+        Checker.checkEq("isPreferred", p.isPreferred(), childFlag);
+        Checker.checkEq("required", p.getValue("required"), childFlag);
+        Checker.checkEq("visualUpdate", p.getValue("visualUpdate"), childFlag);
+
+        Checker.checkEnumEq("enumerationValues", p.getValue("enumerationValues"),
+            new Object[]{"BOTTOM", 3, "javax.swing.SwingConstants.BOTTOM"});
+    }
+}
diff --git a/jdk/test/java/lang/SecurityManager/RestrictedPackages.java b/jdk/test/java/lang/SecurityManager/RestrictedPackages.java
index 7294327..9e0a393 100644
--- a/jdk/test/java/lang/SecurityManager/RestrictedPackages.java
+++ b/jdk/test/java/lang/SecurityManager/RestrictedPackages.java
@@ -77,7 +77,8 @@
         "jdk.nashorn.internal.",
         "jdk.nashorn.tools.",
         "jdk.tools.jimage.",
-        "com.sun.activation.registries."
+        "com.sun.activation.registries.",
+        "com.sun.java.accessibility.util.internal."
     };
 
     /*
@@ -126,6 +127,9 @@
         if (OS_NAME.contains("OS X")) {
             pkgs.add("apple.");  // add apple package for OS X
         }
+        if (OS_NAME.contains("Win")) {
+            pkgs.add("com.sun.java.accessibility.internal.");  // add Win only package
+        }
         return pkgs;
     }
 
diff --git a/jdk/test/java/lang/annotation/repeatingAnnotations/CustomRepeatingWithSecurityManager.java b/jdk/test/java/lang/annotation/repeatingAnnotations/CustomRepeatingWithSecurityManager.java
new file mode 100644
index 0000000..315f6b0
--- /dev/null
+++ b/jdk/test/java/lang/annotation/repeatingAnnotations/CustomRepeatingWithSecurityManager.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug     8073056
+ * @summary Repeating annotations throws java.security.AccessControlException with a SecurityManager
+ *
+ * @library /lib/testlibrary
+ * @build jdk.testlibrary.Asserts
+ * @run main CustomRepeatingWithSecurityManager
+ * @run main/othervm CustomRepeatingWithSecurityManager "withSM"
+ */
+
+import java.lang.annotation.*;
+import java.lang.reflect.*;
+
+import jdk.testlibrary.Asserts;
+
+public class CustomRepeatingWithSecurityManager {
+    public static void main(String[] args) throws Exception {
+        if (args.length == 1) {
+            SecurityManager sm = new SecurityManager();
+            System.setSecurityManager(sm);
+        }
+
+        Asserts.assertTrue(new CustomAnnotations().getAnnotationsByType(MyAnnotation.class).length == 2,
+                "Array should contain 2 annotations");
+        Asserts.assertEquals(new CustomAnnotations().getAnnotationsByType(MyAnnotation.class)[1].name(),
+                "Bar", "Should be 'Bar'");
+    }
+
+    static class CustomAnnotations implements AnnotatedElement {
+        @Override
+        public Annotation[] getDeclaredAnnotations() {
+            Annotation[] res = new Annotation[1];
+            res[0] = new MyAnnotationsImpl();
+            return res;
+        }
+
+        @Override
+        public Annotation[] getAnnotations() {
+            return getDeclaredAnnotations();
+        }
+
+        @Override
+        public <T extends Annotation> T getAnnotation(Class<T> annotationClass) {
+            return null;
+        }
+    }
+
+    static class MyAnnotationsImpl implements MyAnnotations {
+        public MyAnnotation[] value() {
+            MyAnnotation[] res = new MyAnnotation[2];
+            res[0] = new MyAnnotationImpl("Foo");
+            res[1] = new MyAnnotationImpl("Bar");
+            return res;
+        }
+
+        @Override
+        public Class<? extends Annotation> annotationType() {
+            return MyAnnotations.class;
+        }
+    }
+
+    static class MyAnnotationImpl implements MyAnnotation {
+        private String val;
+        MyAnnotationImpl(String val) {
+            this.val = val;
+        }
+
+        public String name() { return val; }
+
+        @Override
+        public Class<? extends Annotation> annotationType() {
+            return MyAnnotations.class;
+        }
+    }
+
+    @Retention(RetentionPolicy.RUNTIME)
+    @interface MyAnnotations {
+        MyAnnotation[] value();
+    }
+
+    @Retention(RetentionPolicy.RUNTIME)
+    @Repeatable(MyAnnotations.class)
+    @interface MyAnnotation {
+        String name();
+    }
+}
diff --git a/jdk/test/java/lang/annotation/repeatingAnnotations/RepeatingWithSecurityManager.java b/jdk/test/java/lang/annotation/repeatingAnnotations/RepeatingWithSecurityManager.java
new file mode 100644
index 0000000..f165ad0
--- /dev/null
+++ b/jdk/test/java/lang/annotation/repeatingAnnotations/RepeatingWithSecurityManager.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug     8073056
+ * @summary Repeating annotations throws java.security.AccessControlException with a SecurityManager
+ *
+ * @library /lib/testlibrary
+ * @build jdk.testlibrary.Asserts
+ * @run main RepeatingWithSecurityManager
+ * @run main/othervm RepeatingWithSecurityManager "withSM"
+ */
+
+import java.lang.annotation.*;
+import java.util.*;
+
+import jdk.testlibrary.Asserts;
+
+public class RepeatingWithSecurityManager {
+    public static void main(String[] args) throws Exception {
+        if (args.length == 1) {
+            SecurityManager sm = new SecurityManager();
+            System.setSecurityManager(sm);
+        }
+
+        Asserts.assertTrue(TwoAnnotations.class.getAnnotationsByType(MyAnnotation.class).length == 2,
+                "Array should contain 2 annotations: " +
+                Arrays.toString(TwoAnnotations.class.getAnnotationsByType(MyAnnotation.class)));
+    }
+
+    @MyAnnotation(name = "foo")
+    @MyAnnotation(name = "bar")
+    private static class TwoAnnotations {
+    }
+
+    @Retention(RetentionPolicy.RUNTIME)
+    @interface MyAnnotations {
+        MyAnnotation[] value();
+    }
+
+    @Retention(RetentionPolicy.RUNTIME)
+    @Repeatable(MyAnnotations.class)
+    @interface MyAnnotation {
+        String name();
+    }
+}
diff --git a/jdk/test/java/net/Inet4Address/PingThis.java b/jdk/test/java/net/Inet4Address/PingThis.java
index d302df5..4f9f3de 100644
--- a/jdk/test/java/net/Inet4Address/PingThis.java
+++ b/jdk/test/java/net/Inet4Address/PingThis.java
@@ -26,7 +26,7 @@
  */
 
 /* @test
- * @bug 7163874
+ * @bug 7163874 8133015
  * @summary InetAddress.isReachable is returning false
  *          for InetAdress 0.0.0.0 and ::0
  * @run main PingThis
diff --git a/jdk/test/java/net/Inet4Address/textToNumericFormat.java b/jdk/test/java/net/Inet4Address/textToNumericFormat.java
index aff278b..bcc57d8 100644
--- a/jdk/test/java/net/Inet4Address/textToNumericFormat.java
+++ b/jdk/test/java/net/Inet4Address/textToNumericFormat.java
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug 4749938
+ * @bug 4749938 8087190
  * @summary Bug in the parsing IPv4 literal addresses
  * @modules java.base/sun.net.spi.nameservice
  * @compile -XDignore.symbol.file=true DummyNameService.java DummyNameServiceDescriptor.java
@@ -63,7 +63,11 @@
                            "2380.255.255.255",
                            "239.255.65536",
                            "239.16777216",
-                           "4294967296" };
+                           "4294967296",
+                           ".1.1.1",
+                           "1..1.1",
+                           "1.1.1.",
+                           "..." };
 
         for (int i=0; i<goodAddrs.length; i++) {
             try {
diff --git a/jdk/test/java/net/InetAddress/IsHostReachableBug.java b/jdk/test/java/net/InetAddress/IsHostReachableBug.java
index c761b01..8f133ca 100644
--- a/jdk/test/java/net/InetAddress/IsHostReachableBug.java
+++ b/jdk/test/java/net/InetAddress/IsHostReachableBug.java
@@ -23,7 +23,7 @@
 
 /**
  * @test
- * @bug 4922568
+ * @bug 4922568 8133015
  * @run main/othervm -Djava.net.preferIPv4Stack=true IsHostReachableBug
  * @summary  isReachable returns true for IPv6
  */
diff --git a/jdk/test/java/net/InetAddress/IsReachable.java b/jdk/test/java/net/InetAddress/IsReachable.java
index da868c5..138ae53 100644
--- a/jdk/test/java/net/InetAddress/IsReachable.java
+++ b/jdk/test/java/net/InetAddress/IsReachable.java
@@ -23,7 +23,7 @@
 
 /**
  * @test
- * @bug 4639861
+ * @bug 4639861 8133015
  * @summary API to test reachability of a host
  */
 import java.net.InetAddress;
diff --git a/jdk/test/java/security/cert/CertPathValidator/OCSP/AIACheck.java b/jdk/test/java/security/cert/CertPathValidator/OCSP/AIACheck.java
index 8c6e045..8563f13 100644
--- a/jdk/test/java/security/cert/CertPathValidator/OCSP/AIACheck.java
+++ b/jdk/test/java/security/cert/CertPathValidator/OCSP/AIACheck.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2015, Oracle and/or its affiliates. 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
@@ -37,7 +37,7 @@
  */
 
 import java.io.*;
-import java.net.SocketException;
+import java.net.*;
 import java.util.*;
 import java.security.Security;
 import java.security.cert.*;
@@ -94,7 +94,9 @@
             throw new Exception("Successfully validated an invalid path");
 
         } catch (CertPathValidatorException e ) {
-            if (! (e.getCause() instanceof SocketException)) {
+            Throwable rootCause = e.getCause();
+            if (!(rootCause instanceof SocketException ||
+                  rootCause instanceof SocketTimeoutException)) {
                 throw e;
             }
 
diff --git a/jdk/test/javax/imageio/spi/ServiceRegistryRestriction.java b/jdk/test/javax/imageio/spi/ServiceRegistryRestriction.java
new file mode 100644
index 0000000..0ffc8b1
--- /dev/null
+++ b/jdk/test/javax/imageio/spi/ServiceRegistryRestriction.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8068749
+ * @run main ServiceRegistryRestriction
+ * @summary Tests ServiceRegistry's restriction on handling
+ *          only standard Image I/O service types.
+ */
+
+import java.util.*;
+import java.util.function.Consumer;
+import javax.imageio.spi.*;
+
+public class ServiceRegistryRestriction {
+    static class DummyTestSpi {
+    }
+
+    ClassLoader cl = ServiceRegistryRestriction.class.getClassLoader();
+
+    <T> void construct(Class<T> clazz) {
+        List<Class<?>> list = Arrays.<Class<?>>asList(clazz);
+        ServiceRegistry sr = new ServiceRegistry(list.iterator());
+    }
+
+    <T> void lookup(Class<T> clazz) {
+        Iterator<T> i = ServiceRegistry.lookupProviders(clazz);
+    }
+
+    <T> void lookupCL(Class<T> clazz) {
+        Iterator<T> i = ServiceRegistry.lookupProviders(clazz, cl);
+    }
+
+    <T> void doOneTest(String label, Class<T> clazz, boolean expectFail, Consumer<Class<T>> op) {
+        System.out.printf("testing %s with %s...", label, clazz.getName());
+        try {
+            op.accept(clazz);
+            if (expectFail) {
+                throw new AssertionError("fail, operation succeeded unexpectedly");
+            } else {
+                System.out.println("success");
+            }
+        } catch (IllegalArgumentException iae) {
+            if (expectFail) {
+                System.out.println("success, got expected IAE");
+            } else {
+                throw new AssertionError("fail, unexpected exception", iae);
+            }
+        }
+    }
+
+    void doTests(Class<?> clazz, boolean expectFail) {
+        doOneTest("constructor", clazz, expectFail, this::construct);
+        doOneTest("lookup", clazz, expectFail, this::lookup);
+        doOneTest("lookupCL", clazz, expectFail, this::lookupCL);
+    }
+
+    void run() {
+        doTests(ImageInputStreamSpi.class, false);
+        doTests(ImageOutputStreamSpi.class, false);
+        doTests(ImageReaderSpi.class, false);
+        doTests(ImageTranscoderSpi.class, false);
+        doTests(ImageWriterSpi.class, false);
+        doTests(DummyTestSpi.class, true);
+    }
+
+    public static void main(String[] args) {
+        new ServiceRegistryRestriction().run();
+    }
+}
diff --git a/jdk/test/javax/print/PrintSEUmlauts/PrintSEUmlauts.java b/jdk/test/javax/print/PrintSEUmlauts/PrintSEUmlauts.java
index 5285716..f875497 100644
--- a/jdk/test/javax/print/PrintSEUmlauts/PrintSEUmlauts.java
+++ b/jdk/test/javax/print/PrintSEUmlauts/PrintSEUmlauts.java
@@ -85,7 +85,7 @@
 
     private static final boolean DEBUG = false;
     private static void testPrintAndExit() {
-        String expected = "<e4> 7.44 100.0 100.0 S";
+        String expected = "<e4>";
         String content = "";
 
         File file = new File("out.ps");
diff --git a/jdk/test/javax/sound/midi/Devices/InitializationHang.java b/jdk/test/javax/sound/midi/Devices/InitializationHang.java
index c8e38d2..9b94a7a 100644
--- a/jdk/test/javax/sound/midi/Devices/InitializationHang.java
+++ b/jdk/test/javax/sound/midi/Devices/InitializationHang.java
@@ -28,6 +28,7 @@
 /**
  * @test
  * @bug 8068412
+ * @key headful
  * @author Sergey Bylokhov
  */
 public final class InitializationHang {
diff --git a/jdk/test/javax/swing/JComponent/6683775/bug6683775.java b/jdk/test/javax/swing/JComponent/6683775/bug6683775.java
index ba627d1..d0b8eac 100644
--- a/jdk/test/javax/swing/JComponent/6683775/bug6683775.java
+++ b/jdk/test/javax/swing/JComponent/6683775/bug6683775.java
@@ -31,13 +31,15 @@
 */
 
 import com.sun.awt.AWTUtilities;
-import sun.awt.SunToolkit;
 
 import javax.swing.*;
 import java.awt.*;
 import java.awt.image.BufferedImage;
 
 public class bug6683775 {
+    static final int LOC = 100,
+            SIZE = 200;
+
     public static void main(String[] args) throws Exception {
         GraphicsConfiguration gc = getGC();
        if (!AWTUtilities.isTranslucencySupported(
@@ -45,39 +47,37 @@
                 || gc == null) {
             return;
         }
-        SunToolkit toolkit = (SunToolkit) Toolkit.getDefaultToolkit();
         Robot robot = new Robot();
         final JFrame testFrame = new JFrame(gc);
 
-        SwingUtilities.invokeLater(new Runnable() {
-            public void run() {
-                JFrame backgroundFrame = new JFrame("Background frame");
-                backgroundFrame.setUndecorated(true);
-                JPanel panel = new JPanel();
-                panel.setBackground(Color.RED);
-                backgroundFrame.add(panel);
-                backgroundFrame.setSize(200, 200);
-                backgroundFrame.setVisible(true);
+        SwingUtilities.invokeAndWait(() -> {
+            JFrame backgroundFrame = new JFrame("Background frame");
+            backgroundFrame.setUndecorated(true);
+            JPanel panel = new JPanel();
+            panel.setBackground(Color.RED);
+            backgroundFrame.add(panel);
+            backgroundFrame.setBounds(LOC, LOC, SIZE, SIZE);
+            backgroundFrame.setVisible(true);
 
-                testFrame.setUndecorated(true);
-                JPanel p = new JPanel();
-                p.setOpaque(false);
-                testFrame.add(p);
-                AWTUtilities.setWindowOpaque(testFrame, false);
-                testFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
-                testFrame.setSize(400, 400);
-                testFrame.setLocation(0, 0);
-                testFrame.setVisible(true);
-            }
+            testFrame.setUndecorated(true);
+            JPanel p = new JPanel();
+            p.setOpaque(false);
+            testFrame.add(p);
+            AWTUtilities.setWindowOpaque(testFrame, false);
+            testFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+            testFrame.setBounds(LOC, LOC, SIZE, SIZE);
+            testFrame.setVisible(true);
         });
 
-        toolkit.realSync();
+        robot.waitForIdle();
+        Thread.sleep(1500);
 
         //robot.getPixelColor() didn't work right for some reason
-        BufferedImage capture = robot.createScreenCapture(new Rectangle(100, 100));
+        BufferedImage capture =
+                robot.createScreenCapture(new Rectangle(LOC, LOC, SIZE, SIZE));
 
         int redRGB = Color.RED.getRGB();
-        if (redRGB != capture.getRGB(10, 10)) {
+        if (redRGB != capture.getRGB(SIZE/2, SIZE/2)) {
             throw new RuntimeException("Transparent frame is not transparent!");
         }
     }
diff --git a/jdk/test/javax/swing/JScrollBar/bug4202954/bug4202954.java b/jdk/test/javax/swing/JScrollBar/bug4202954/bug4202954.java
index 07f5988..915a802 100644
--- a/jdk/test/javax/swing/JScrollBar/bug4202954/bug4202954.java
+++ b/jdk/test/javax/swing/JScrollBar/bug4202954/bug4202954.java
@@ -53,8 +53,8 @@
 
         if (rightScrollButton == null || bottomScrollButton == null) {
             String errMessage = "Test can't be executed: ";
-            errMessage = errMessage + rightScrollButton == null ? "can't find right button for horizontal scroll bar; " : ""
-                    + bottomScrollButton == null ? "can't find bottom scroll button for vertical scroll bar" : "";
+            errMessage = errMessage + (rightScrollButton == null ? "can't find right button for horizontal scroll bar; " : ""
+                    + (bottomScrollButton == null ? "can't find bottom scroll button for vertical scroll bar" : ""));
             throw new RuntimeException(errMessage);
         }
 
@@ -105,15 +105,25 @@
         JButton button = Util.invokeOnEDT(new java.util.concurrent.Callable<JButton>() {
             @Override
             public JButton call() throws Exception {
-                for (Component c: scrollBar.getComponents()) {
-                    if (c instanceof JButton) {
-                        Point p = c.getLocationOnScreen();
-                        if (p.x > minX && p.y > minY) {
-                            return (JButton) c;
-                        }
-                    }
-                }
-                return null;
+                int currentXorY = 0;
+                JButton scrollButton = null;
+                 for (Component c: scrollBar.getComponents()) {
+                     if (c instanceof JButton) {
+                         Point p = c.getLocationOnScreen();
+                         if (scrollBar.getOrientation() == Adjustable.VERTICAL){
+                             if (currentXorY <= p.y){
+                                 currentXorY = p.y;
+                                 scrollButton = (JButton)c;
+                             }
+                         }else  if (scrollBar.getOrientation() == Adjustable.HORIZONTAL){
+                             if (currentXorY <= p.x){
+                                 currentXorY = p.x;
+                                 scrollButton = (JButton)c;
+                             }
+                         }
+                     }
+                 }
+                return scrollButton;
             }
         });
         return button;
diff --git a/jdk/test/javax/swing/plaf/aqua/CustomComboBoxFocusTest.java b/jdk/test/javax/swing/plaf/aqua/CustomComboBoxFocusTest.java
index 76e8ab6..0c28983 100644
--- a/jdk/test/javax/swing/plaf/aqua/CustomComboBoxFocusTest.java
+++ b/jdk/test/javax/swing/plaf/aqua/CustomComboBoxFocusTest.java
@@ -22,9 +22,11 @@
  */
 
 /* @test
-   @bug     8073001
+   @bug     8073001 8081764
    @summary Test verifies that combo box with custom editor renders
             focus ring around arrow button correctly.
+   @library /lib/testlibrary
+   @build jdk.testlibrary.OSInfo
    @run     main CustomComboBoxFocusTest
 */
 
@@ -50,12 +52,17 @@
 import javax.swing.JPanel;
 import javax.swing.JTextField;
 import javax.swing.SwingUtilities;
+import jdk.testlibrary.OSInfo;
 
 public class CustomComboBoxFocusTest {
 
     private static CustomComboBoxFocusTest test = null;
 
     public static void main(String[] args) {
+        if (OSInfo.getOSType() != OSInfo.OSType.MACOSX) {
+            System.out.println("Only Mac platform test. Test is skipped for other OS.");
+            return;
+        }
 
         try {
             SwingUtilities.invokeAndWait(new Runnable() {
diff --git a/jdk/test/jdk/nio/zipfs/ZipFSTester.java b/jdk/test/jdk/nio/zipfs/ZipFSTester.java
index 69777e3..5838925 100644
--- a/jdk/test/jdk/nio/zipfs/ZipFSTester.java
+++ b/jdk/test/jdk/nio/zipfs/ZipFSTester.java
@@ -26,6 +26,7 @@
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.URI;
+import java.net.URLDecoder;
 import java.nio.ByteBuffer;
 import java.nio.channels.FileChannel;
 import java.nio.channels.SeekableByteChannel;
@@ -69,6 +70,7 @@
  * @test
  * @bug 6990846 7009092 7009085 7015391 7014948 7005986 7017840 7007596
  *      7157656 8002390 7012868 7012856 8015728 8038500 8040059 8069211
+ *      8131067
  * @summary Test Zip filesystem provider
  * @run main ZipFSTester
  * @run main/othervm/java.security.policy=test.policy ZipFSTester
@@ -91,6 +93,7 @@
         }
         testTime(jarFile);
         test8069211();
+        test8131067();
     }
 
     static void test0(FileSystem fs)
@@ -441,11 +444,34 @@
         }
     }
 
+    static void test8131067() throws Exception {
+        Map<String, Object> env = new HashMap<String, Object>();
+        env.put("create", "true");
+
+        // file name with space character for URI to quote it
+        File tmp = File.createTempFile("test zipfs", "zip");
+        tmp.delete();    // we need a clean path, no file
+        Path fsPath = tmp.toPath();
+        try (FileSystem fs = newZipFileSystem(fsPath, env);) {
+            Files.write(fs.getPath("/foo"), "hello".getBytes());
+            URI fooUri = fs.getPath("/foo").toUri();
+            if (!Arrays.equals(Files.readAllBytes(Paths.get(fooUri)),
+                               "hello".getBytes())) {
+                throw new RuntimeException("entry close() failed");
+            }
+        } finally {
+            Files.delete(fsPath);
+        }
+    }
+
     private static FileSystem newZipFileSystem(Path path, Map<String, ?> env)
         throws Exception
     {
+        // Use URLDecoder (for test only) to remove the double escaped space
+        // character
         return FileSystems.newFileSystem(
-            new URI("jar", path.toUri().toString(), null), env, null);
+            new URI("jar", URLDecoder.decode(path.toUri().toString(), "utf8"),
+                null), env, null);
     }
 
     private static Path getTempPath() throws IOException
diff --git a/jdk/test/sun/net/util/IPAddressUtilTest.java b/jdk/test/sun/net/util/IPAddressUtilTest.java
index 889518a..8c35ac7 100644
--- a/jdk/test/sun/net/util/IPAddressUtilTest.java
+++ b/jdk/test/sun/net/util/IPAddressUtilTest.java
@@ -21,6 +21,12 @@
  * questions.
  */
 
+/*
+ * @test
+ * @bug 8087190
+ * @summary Exercise the sun.net.util.IPAddressUtil class
+ */
+
 import sun.net.util.*;
 
 /*
@@ -39,6 +45,10 @@
         {"238.255.2550.255", bad},
         {"238.2550.255.255", bad},
         {"2380.255.255.255", bad},
+        {".1.1.1", bad},
+        {"1..1.1", bad},
+        {"1.1.1.", bad},
+        {"...", bad},
         {"10::10", good},
         {"10::10.1", bad},
         {"10::10.1.2", bad},
diff --git a/jdk/test/sun/security/krb5/auto/MaxRetries.java b/jdk/test/sun/security/krb5/auto/MaxRetries.java
index 880c023..5c5da91 100644
--- a/jdk/test/sun/security/krb5/auto/MaxRetries.java
+++ b/jdk/test/sun/security/krb5/auto/MaxRetries.java
@@ -34,14 +34,18 @@
 import java.security.Security;
 
 public class MaxRetries {
+
+    static int idlePort = -1;
+
     public static void main(String[] args)
             throws Exception {
 
         System.setProperty("sun.security.krb5.debug", "true");
         new OneKDC(null).writeJAASConf();
 
-        // An idle UDP socket to revent PortUnreachableException
-        DatagramSocket ds = new DatagramSocket(33333);
+        // An idle UDP socket to prevent PortUnreachableException
+        DatagramSocket ds = new DatagramSocket();
+        idlePort = ds.getLocalPort();
 
         System.setProperty("java.security.krb5.conf", "alternative-krb5.conf");
 
@@ -200,7 +204,7 @@
                     fw.write("    kdc_timeout = " + BadKdc.toReal(value*1000) + "\n");
                 }
                 // Add a bad KDC as the first candidate
-                fw.write("    kdc = localhost:33333\n");
+                fw.write("    kdc = localhost:" + idlePort + "\n");
             }
             fw.write(s + "\n");
         }
diff --git a/jdk/test/sun/util/resources/cldr/Bug8134250.java b/jdk/test/sun/util/resources/cldr/Bug8134250.java
new file mode 100644
index 0000000..95f827b
--- /dev/null
+++ b/jdk/test/sun/util/resources/cldr/Bug8134250.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8134250 8134520
+ * @summary Tests CLDR/LDML features are correctly reflected in JDK.
+ * @run main/othervm -Djava.locale.providers=CLDR Bug8134250
+ */
+
+// Note this test highly depends on a particular version of CLDR. Results
+// may vary in the future.
+
+import java.time.*;
+import java.time.chrono.*;
+import java.time.format.*;
+import java.util.*;
+
+public class Bug8134250 {
+    public static void main(String [] args) {
+        LocalDate d = LocalDate.of(1980, Month.JANUARY, 1);
+
+        // en-GB inherits from en-001 where its short tz name for
+        // America/Los_Angeles is "non-inheritance marker". Thus the
+        // resulting formatted text should be a custom ID.
+        DateTimeFormatterBuilder dtfb = new DateTimeFormatterBuilder();
+        dtfb.appendZoneText(TextStyle.SHORT);
+        DateTimeFormatter dtf = dtfb.toFormatter(Locale.UK)
+            .withZone(ZoneId.of("America/Los_Angeles"));
+        String result = dtf.format(d);
+        System.out.println(result);
+        if (!"GMT-08:00".equals(result)) {
+            throw new RuntimeException("short time zone name for America/Los_Angeles in en_GB is incorrect. Got: " + result + ", expected: GMT-08:00");
+        }
+
+        // Islamic Um-Alqura calendar is an alias to Islamic calendar.
+        // In Islamic calendar data, only month names are localized, also
+        // date/time format for FULL style should be inherited from "generic"
+        // calendar, where it includes ERA field.
+        Locale locale = Locale.forLanguageTag("en-US-u-ca-islamic-umalqura");
+        Chronology chrono = Chronology.ofLocale(locale);
+        dtf = DateTimeFormatter
+            .ofLocalizedDate(FormatStyle.FULL)
+            .withLocale(locale)
+            .withChronology(chrono);
+        result = dtf.format(d);
+        System.out.println(dtf.format(d));
+        if (!"Tuesday, Safar 12, 1400 AH".equals(result)) {
+            throw new RuntimeException("FULL date format of Islamic Um-Alqura calendar in en_US is incorrect. Got: " + result + ", expected: Tuesday, Safar 12, 1400 AH");
+        }
+    }
+}
diff --git a/jdk/test/tools/launcher/ArgFileSyntax.java b/jdk/test/tools/launcher/ArgFileSyntax.java
new file mode 100644
index 0000000..5f79a8f
--- /dev/null
+++ b/jdk/test/tools/launcher/ArgFileSyntax.java
@@ -0,0 +1,271 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test
+ * @bug 8027634
+ * @summary Verify syntax of argument file
+ * @build TestHelper
+ * @run main ArgFileSyntax
+ */
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class ArgFileSyntax extends TestHelper {
+    private File createArgFile(List<String> lines) throws IOException {
+        File argFile = new File("argfile");
+        argFile.delete();
+        createAFile(argFile, lines);
+        return argFile;
+    }
+
+    private void verifyOutput(List<String> args, TestResult tr) {
+        if (args.isEmpty()) {
+            return;
+        }
+
+        int i = 1;
+        for (String x : args) {
+            tr.matches(".*argv\\[" + i + "\\] = " + Pattern.quote(x) + ".*");
+            i++;
+        }
+        if (! tr.testStatus) {
+            System.out.println(tr);
+            throw new RuntimeException("test fails");
+        }
+    }
+
+    // arg file content,  expected options
+    static String[] testCases[][] = {
+        { // empty file
+            {}, {}
+        },
+        { // comments and # inside quote
+            { "# a couple of -X flags",
+              "-Xmx32m",
+              "-XshowSettings #inline comment",
+              "-Dpound.in.quote=\"This property contains #.\"",
+              "# add -version",
+              "-version",
+              "# trail comment"
+            },
+            { "-Xmx32m",
+              "-XshowSettings",
+              "-Dpound.in.quote=This property contains #.",
+              "-version"
+            }
+        },
+        { // open quote with continuation directive
+          // multiple options in a line
+            { "-cp \"c:\\\\java lib\\\\all;\\",
+              "     c:\\\\lib\"",
+              "-Xmx32m -XshowSettings",
+              "-version"
+            },
+            { "-cp",
+              "c:\\java lib\\all;c:\\lib",
+              "-Xmx32m",
+              "-XshowSettings",
+              "-version"
+            }
+        },
+        { // no continuation on open quote
+          // multiple lines in a property
+            { "-cp \"c:\\\\open quote\\\\all;",
+              "     # c:\\\\lib\"",
+              "-Dmultiple.lines=\"line 1\\nline 2\\n\\rline 3\"",
+              "-Dopen.quote=\"Open quote to EOL",
+              "-Dcontinue.with.leadingWS=\"Continue with\\",
+              "  \\ leading WS.",
+              "-Dcontinue.without.leadingWS=\"Continue without \\",
+              "   leading WS.",
+              "-Descape.seq=\"escaped chars: \\\"\\a\\b\\c\\f\\t\\v\\9\\6\\23\\82\\28\\377\\477\\278\\287\\n\"",
+              "-version"
+            },
+            { "-cp",
+              "c:\\open quote\\all;",
+              "-Dmultiple.lines=line 1",
+              // line 2 and line 3 shoule be in output, but not as arg[x]=
+              "-Dopen.quote=Open quote to EOL",
+              "-Dcontinue.with.leadingWS=Continue with leading WS.",
+              "-Dcontinue.without.leadingWS=Continue without leading WS.",
+              // cannot verify \n and \r as that break output lines
+              "-Descape.seq=escaped chars: \"abc\f\tv96238228377477278287",
+              "-version"
+            }
+        },
+        { // No need to escape if not in quote
+          // also quote part of a token
+            { "-cp c:\\\"partial quote\"\\all",
+              "-Xmx32m -XshowSettings",
+              "-version"
+            },
+            { "-cp",
+              "c:\\partial quote\\all",
+              "-Xmx32m",
+              "-XshowSettings",
+              "-version"
+            }
+        },
+        { // No recursive expansion
+            { "-Xmx32m",
+              "-cp",
+              " # @cpfile should remains @cpfile",
+              "@cpfile",
+              "-version"
+            },
+            { "-Xmx32m",
+              "-cp",
+              "@cpfile",
+              "-version"
+            }
+        },
+        { // Mix quotation
+            { "-Dsingle.in.double=\"Mix 'single' in double\"",
+              "-Ddouble.in.single='Mix \"double\" in single'",
+              "-Dsingle.in.single='Escape \\\'single\\\' in single'",
+              "-Ddouble.in.double=\"Escape \\\"double\\\" in double\""
+            },
+            { "-Dsingle.in.double=Mix 'single' in double",
+              "-Ddouble.in.single=Mix \"double\" in single",
+              "-Dsingle.in.single=Escape 'single' in single",
+              "-Ddouble.in.double=Escape \"double\" in double"
+            },
+        },
+        { // \t\f as whitespace and in escape
+            { "-Xmx32m\t-Xint\f-version",
+              "-Dcontinue.with.leadingws=\"Line1\\",
+              " \t\fcontinue with \\f<ff> and \\t<tab>"
+            },
+            { "-Xmx32m",
+              "-Xint",
+              "-version",
+              "-Dcontinue.with.leadingws=Line1continue with \f<ff> and \t<tab>"
+            }
+        }
+    };
+
+    public List<List<List<String>>> loadCases() {
+        List<List<List<String>>> rv = new ArrayList<>();
+        for (String[][] testCaseArray: testCases) {
+            List<List<String>> testCase = new ArrayList<>(2);
+            testCase.add(Arrays.asList(testCaseArray[0]));
+            testCase.add(Arrays.asList(testCaseArray[1]));
+            rv.add(testCase);
+        }
+
+        // long lines
+        String bag = "-Dgarbage=";
+        String ver = "-version";
+        // a token 8192 long
+        char[] data = new char[8192 - bag.length()];
+        Arrays.fill(data, 'O');
+        List<String> scratch = new ArrayList<>();
+        scratch.add("-Xmx32m");
+        scratch.add(bag + String.valueOf(data));
+        scratch.add(ver);
+        rv.add(Collections.nCopies(2, scratch));
+
+        data = new char[8192 + 1024];
+        Arrays.fill(data, 'O');
+        scratch = new ArrayList<>();
+        scratch.add(bag + String.valueOf(data));
+        scratch.add(ver);
+        rv.add(Collections.nCopies(2, scratch));
+
+        return rv;
+    }
+
+    // ensure the arguments in the file are read in correctly
+    private void verifyParsing(List<String> lines, List<String> args) throws IOException {
+        File argFile = createArgFile(lines);
+        String fname = "@" + argFile.getName();
+        Map<String, String> env = new HashMap<>();
+        env.put(JLDEBUG_KEY, "true");
+
+        TestResult tr;
+        if (args.contains("-version")) {
+            tr = doExec(env, javaCmd, fname);
+        } else {
+            tr = doExec(env, javaCmd, fname, "-version");
+        }
+        tr.checkPositive();
+        verifyOutput(args, tr);
+
+        String lastArg = args.contains("-version") ? "-Dlast.arg" : "-version";
+        tr = doExec(env, javaCmd, "-Xint", fname, lastArg);
+        List<String> scratch = new ArrayList<>();
+        scratch.add("-Xint");
+        scratch.addAll(args);
+        scratch.add(lastArg);
+        verifyOutput(scratch, tr);
+
+        argFile.delete();
+    }
+
+    @Test
+    public void testSyntax() throws IOException {
+        List<List<List<String>>> allcases = loadCases();
+        for (List<List<String>> test: allcases) {
+            verifyParsing(test.get(0), test.get(1));
+        }
+    }
+
+    @Test
+    public void badCases() throws IOException {
+        List<String> lines = Arrays.asList(
+            "-Dno.escape=\"Forgot to escape backslash\\\" -version");
+        File argFile = createArgFile(lines);
+        String fname = "@" + argFile.getName();
+        Map<String, String> env = new HashMap<>();
+        env.put(JLDEBUG_KEY, "true");
+
+        TestResult tr = doExec(env, javaCmd, fname);
+        tr.contains("argv[1] = -Dno.escape=Forgot to escape backslash\" -version");
+        tr.checkNegative();
+        if (!tr.testStatus) {
+            System.out.println(tr);
+            throw new RuntimeException("test fails");
+        }
+        argFile.delete();
+    }
+
+    public static void main(String... args) throws Exception {
+        ArgFileSyntax a = new ArgFileSyntax();
+        a.run(args);
+        if (testExitValue > 0) {
+            System.out.println("Total of " + testExitValue + " failed");
+            System.exit(1);
+        } else {
+            System.out.println("All tests pass");
+        }
+    }
+}
diff --git a/jdk/test/tools/launcher/ArgsFileTest.java b/jdk/test/tools/launcher/ArgsFileTest.java
new file mode 100644
index 0000000..62d6380
--- /dev/null
+++ b/jdk/test/tools/launcher/ArgsFileTest.java
@@ -0,0 +1,290 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test
+ * @bug 8027634
+ * @summary Argument parsing from file
+ * @build TestHelper
+ * @run main ArgsFileTest
+ */
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class ArgsFileTest extends TestHelper {
+    private static File testJar = null;
+    private static Map<String, String> env = new HashMap<>();
+
+    static void init() throws IOException {
+        if  (testJar != null) {
+            return;
+        }
+        testJar = new File("test.jar");
+        StringBuilder tsrc = new StringBuilder();
+        tsrc.append("public static void main(String... args) {\n");
+        tsrc.append("   for (String x : args) {\n");
+        tsrc.append("        System.out.println(x);\n");
+        tsrc.append("   }\n");
+        tsrc.append("}\n");
+        createJar(testJar, new File("Foo"), tsrc.toString());
+
+        env.put(JLDEBUG_KEY, "true");
+    }
+
+    private File createArgFile(String fname, List<String> lines) throws IOException {
+        File argFile = new File(fname);
+        argFile.delete();
+        createAFile(argFile, lines);
+        return argFile;
+    }
+
+    private void verifyOptions(List<String> args, TestResult tr) {
+        if (args.isEmpty()) {
+            return;
+        }
+
+        int i = 1;
+        for (String x : args) {
+            tr.matches(".*argv\\[" + i + "\\] = " + Pattern.quote(x) + ".*");
+            i++;
+        }
+        if (! tr.testStatus) {
+            System.out.println(tr);
+            throw new RuntimeException("test fails");
+        }
+    }
+
+    private void verifyUserArgs(List<String> args, TestResult tr, int index) {
+        if (javaCmd != TestHelper.javaCmd) {
+            tr.contains("\tFirst application arg index: 1");
+        } else {
+            tr.contains("\tFirst application arg index: " + index);
+
+            for (String arg: args) {
+                tr.matches("^" + Pattern.quote(arg) + "$");
+            }
+        }
+
+        if (! tr.testStatus) {
+            System.out.println(tr);
+            throw new RuntimeException("test fails");
+        }
+    }
+
+    @Test
+    public void expandAll() throws IOException {
+        List<String> lines = new ArrayList<>();
+        lines.add("-Xmx32m");
+        lines.add("-Xint");
+        File argFile1 = createArgFile("argFile1", lines);
+        lines = new ArrayList<>();
+        lines.add("-jar");
+        lines.add("test.jar");
+        lines.add("uarg1 @uarg2 @@uarg3 -uarg4 uarg5");
+        File argFile2 = createArgFile("argFile2", lines);
+
+        TestResult tr = doExec(env, javaCmd, "@argFile1", "@argFile2");
+
+        List<String> appArgs = new ArrayList<>();
+        appArgs.add("uarg1");
+        appArgs.add("@uarg2");
+        appArgs.add("@@uarg3");
+        appArgs.add("-uarg4");
+        appArgs.add("uarg5");
+
+        List<String> options = new ArrayList<>();
+        options.add("-Xmx32m");
+        options.add("-Xint");
+        options.add("-jar");
+        options.add("test.jar");
+        options.addAll(appArgs);
+
+        verifyOptions(options, tr);
+        verifyUserArgs(appArgs, tr, 5);
+        argFile1.delete();
+        argFile2.delete();
+
+        File cpFile = createArgFile("cpFile", Arrays.asList("-cp", "test.jar"));
+        List<String> appCmd = new ArrayList<>();
+        appCmd.add("Foo");
+        appCmd.addAll(appArgs);
+        File appFile = createArgFile("appFile", appCmd);
+
+        tr = doExec(env, javaCmd, "@cpFile", "@appFile");
+        verifyOptions(Arrays.asList("-cp", "test.jar", "Foo",
+                "uarg1", "@uarg2", "@@uarg3", "-uarg4", "uarg5"), tr);
+        verifyUserArgs(appArgs, tr, 4);
+        cpFile.delete();
+        appFile.delete();
+    }
+
+    @Test
+    public void escapeArg() throws IOException {
+        List<String> lines = new ArrayList<>();
+        lines.add("-Xmx32m");
+        lines.add("-Xint");
+        File argFile1 = createArgFile("argFile1", lines);
+
+        TestResult tr = doExec(env, javaCmd, "-cp", "@@arg", "-cp", "@",
+                "-cp", "@@@cp", "@argFile1", "@@@@Main@@@@", "-version");
+        List<String> options = new ArrayList<>();
+        options.add("-cp");
+        options.add("@arg");
+        options.add("-cp");
+        options.add("@");
+        options.add("-cp");
+        options.add("@@cp");
+        options.add("-Xmx32m");
+        options.add("-Xint");
+        options.add("@@@Main@@@@");
+        options.add("-version");
+        verifyOptions(options, tr);
+        verifyUserArgs(Collections.emptyList(), tr, options.size());
+        argFile1.delete();
+    }
+
+    @Test
+    public void killSwitch() throws IOException {
+        List<String> lines = new ArrayList<>();
+        lines.add("-Xmx32m");
+        lines.add("-Xint");
+        File argFile1 = createArgFile("argFile1", lines);
+        lines = new ArrayList<>();
+        lines.add("-jar");
+        lines.add("test.jar");
+        lines.add("uarg1 @uarg2 @@uarg3 -uarg4 uarg5");
+        File argFile2 = createArgFile("argFile2", lines);
+        File argKill = createArgFile("argKill",
+            Collections.singletonList("-Xdisable-@files"));
+
+        TestResult tr = doExec(env, javaCmd, "@argFile1", "-Xdisable-@files", "@argFile2");
+        List<String> options = new ArrayList<>();
+        options.add("-Xmx32m");
+        options.add("-Xint");
+        options.add("-Xdisable-@files");
+        options.add("@argFile2");
+        verifyOptions(options, tr);
+        // Main class is @argFile2
+        verifyUserArgs(Collections.emptyList(), tr, 5);
+
+        // Specify in file is same as specify inline
+        tr = doExec(env, javaCmd, "@argFile1", "@argKill", "@argFile2");
+        verifyOptions(options, tr);
+        // Main class is @argFile2
+        verifyUserArgs(Collections.emptyList(), tr, 5);
+
+        // multiple is fine, once on is on.
+        tr = doExec(env, javaCmd, "@argKill", "@argFile1", "-Xdisable-@files", "@argFile2");
+        options = Arrays.asList("-Xdisable-@files", "@argFile1",
+                "-Xdisable-@files", "@argFile2");
+        verifyOptions(options, tr);
+        verifyUserArgs(Collections.emptyList(), tr, 3);
+
+        // after main class, becoming an user application argument
+        tr = doExec(env, javaCmd, "@argFile2", "@argKill");
+        options = Arrays.asList("-jar", "test.jar", "uarg1", "@uarg2", "@@uarg3",
+                "-uarg4", "uarg5", "@argKill");
+        verifyOptions(options, tr);
+        verifyUserArgs(Arrays.asList("uarg1", "@uarg2", "@@uarg3",
+                "-uarg4", "uarg5", "@argKill"), tr, 3);
+
+        argFile1.delete();
+        argFile2.delete();
+        argKill.delete();
+    }
+
+    @Test
+    public void userApplication() throws IOException {
+        List<String> lines = new ArrayList<>();
+        lines.add("-Xmx32m");
+        lines.add("-Xint");
+        File vmArgs = createArgFile("vmArgs", lines);
+        File jarOpt = createArgFile("jarOpt", Arrays.asList("-jar"));
+        File cpOpt = createArgFile("cpOpt", Arrays.asList("-cp"));
+        File jarArg = createArgFile("jarArg", Arrays.asList("test.jar"));
+        File userArgs = createArgFile("userArgs", Arrays.asList("-opt", "arg", "--longopt"));
+
+        TestResult tr = doExec(env, javaCmd,
+                "@vmArgs", "@jarOpt", "test.jar", "-opt", "arg", "--longopt");
+        verifyOptions(Arrays.asList(
+                "-Xmx32m", "-Xint", "-jar", "test.jar", "-opt", "arg", "--longopt"), tr);
+        verifyUserArgs(Arrays.asList("-opt", "arg", "--longopt"), tr, 5);
+
+        tr = doExec(env, javaCmd, "@jarOpt", "@jarArg", "@vmArgs");
+        verifyOptions(Arrays.asList("-jar", "test.jar", "@vmArgs"), tr);
+        verifyUserArgs(Arrays.asList("@vmArgs"), tr, 3);
+
+        tr = doExec(env, javaCmd, "-cp", "@jarArg", "@vmArgs", "Foo", "@userArgs");
+        verifyOptions(Arrays.asList("-cp", "test.jar", "-Xmx32m", "-Xint",
+                "Foo", "@userArgs"), tr);
+        verifyUserArgs(Arrays.asList("@userArgs"), tr, 6);
+
+        tr = doExec(env, javaCmd, "@cpOpt", "@jarArg", "@vmArgs", "Foo", "@userArgs");
+        verifyOptions(Arrays.asList("-cp", "test.jar", "-Xmx32m", "-Xint",
+                "Foo", "@userArgs"), tr);
+        verifyUserArgs(Arrays.asList("@userArgs"), tr, 6);
+
+        tr = doExec(env, javaCmd, "@cpOpt", "test.jar", "@vmArgs", "Foo", "@userArgs");
+        verifyOptions(Arrays.asList("-cp", "test.jar", "-Xmx32m", "-Xint",
+                "Foo", "@userArgs"), tr);
+        verifyUserArgs(Arrays.asList("@userArgs"), tr, 6);
+
+        vmArgs.delete();
+        jarOpt.delete();
+        cpOpt.delete();
+        jarArg.delete();
+        userArgs.delete();
+    }
+
+    // test with missing file
+    @Test
+    public void missingFileNegativeTest() throws IOException {
+        TestResult tr = doExec(javaCmd, "@" + "missing.cmd");
+        tr.checkNegative();
+        tr.contains("Error: could not open `missing.cmd'");
+        if (!tr.testStatus) {
+            System.out.println(tr);
+            throw new RuntimeException("test fails");
+        }
+    }
+
+    public static void main(String... args) throws Exception {
+        init();
+        ArgsFileTest a = new ArgsFileTest();
+        a.run(args);
+        if (testExitValue > 0) {
+            System.out.println("Total of " + testExitValue + " failed");
+            System.exit(1);
+        } else {
+            System.out.println("All tests pass");
+        }
+    }
+}
diff --git a/jdk/test/tools/launcher/TestHelper.java b/jdk/test/tools/launcher/TestHelper.java
index 9a37c5a..402102b 100644
--- a/jdk/test/tools/launcher/TestHelper.java
+++ b/jdk/test/tools/launcher/TestHelper.java
@@ -594,7 +594,7 @@
         }
 
         boolean notContains(String str) {
-             for (String x : testOutput) {
+            for (String x : testOutput) {
                 if (x.contains(str)) {
                     appendError("string <" + str + "> found");
                     return false;
@@ -604,7 +604,7 @@
         }
 
         boolean matches(String stringToMatch) {
-          for (String x : testOutput) {
+            for (String x : testOutput) {
                 if (x.matches(stringToMatch)) {
                     return true;
                 }
diff --git a/langtools/.hgtags b/langtools/.hgtags
index 6436d1f..fbf671a 100644
--- a/langtools/.hgtags
+++ b/langtools/.hgtags
@@ -321,3 +321,4 @@
 80ab772222fb6b85f8174bf97261178ee4026620 jdk9-b76
 6ec3d5cb1bfcfba135c8d18866e567f1b1ada861 jdk9-b77
 7fd155b7041c8aba7084f03e2fd1d6f74cceda75 jdk9-b78
+eaab8a16dcfb807acacdb6d133f3ecd502667a8c jdk9-b79
diff --git a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java
index 3ff3c12..f57b01d 100644
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java
@@ -138,7 +138,7 @@
     /** The bootstrap methods to be written in the corresponding class attribute
      *  (one for each invokedynamic)
      */
-    Map<DynamicMethod, MethodHandle> bootstrapMethods;
+    Map<DynamicMethod.BootstrapMethodsKey, DynamicMethod.BootstrapMethodsValue> bootstrapMethods;
 
     /** The log to use for verbose output.
      */
@@ -401,8 +401,16 @@
                     //invokedynamic
                     DynamicMethodSymbol dynSym = (DynamicMethodSymbol)m;
                     MethodHandle handle = new MethodHandle(dynSym.bsmKind, dynSym.bsm, types);
-                    DynamicMethod dynMeth = new DynamicMethod(dynSym, types);
-                    bootstrapMethods.put(dynMeth, handle);
+                    DynamicMethod.BootstrapMethodsKey key = new DynamicMethod.BootstrapMethodsKey(dynSym, types);
+
+                    // Figure out the index for existing BSM; create a new BSM if no key
+                    DynamicMethod.BootstrapMethodsValue val = bootstrapMethods.get(key);
+                    if (val == null) {
+                        int index = bootstrapMethods.size();
+                        val = new DynamicMethod.BootstrapMethodsValue(handle, index);
+                        bootstrapMethods.put(key, val);
+                    }
+
                     //init cp entries
                     pool.put(names.BootstrapMethods);
                     pool.put(handle);
@@ -410,7 +418,7 @@
                         pool.put(staticArg);
                     }
                     poolbuf.appendByte(CONSTANT_InvokeDynamic);
-                    poolbuf.appendChar(bootstrapMethods.size() - 1);
+                    poolbuf.appendChar(val.index);
                     poolbuf.appendChar(pool.put(nameType(dynSym)));
                 }
             } else if (value instanceof VarSymbol) {
@@ -1024,15 +1032,14 @@
     void writeBootstrapMethods() {
         int alenIdx = writeAttr(names.BootstrapMethods);
         databuf.appendChar(bootstrapMethods.size());
-        for (Map.Entry<DynamicMethod, MethodHandle> entry : bootstrapMethods.entrySet()) {
-            DynamicMethod dmeth = entry.getKey();
-            DynamicMethodSymbol dsym = (DynamicMethodSymbol)dmeth.baseSymbol();
+        for (Map.Entry<DynamicMethod.BootstrapMethodsKey, DynamicMethod.BootstrapMethodsValue> entry : bootstrapMethods.entrySet()) {
+            DynamicMethod.BootstrapMethodsKey bsmKey = entry.getKey();
             //write BSM handle
-            databuf.appendChar(pool.get(entry.getValue()));
+            databuf.appendChar(pool.get(entry.getValue().mh));
+            Object[] uniqueArgs = bsmKey.getUniqueArgs();
             //write static args length
-            databuf.appendChar(dsym.staticArgs.length);
+            databuf.appendChar(uniqueArgs.length);
             //write static args array
-            Object[] uniqueArgs = dmeth.uniqueStaticArgs;
             for (Object o : uniqueArgs) {
                 databuf.appendChar(pool.get(o));
             }
diff --git a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Pool.java b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Pool.java
index 5c71f58..719950e 100644
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Pool.java
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Pool.java
@@ -190,7 +190,11 @@
 
         @Override @DefinedBy(Api.LANGUAGE_MODEL)
         public boolean equals(Object any) {
-            if (!super.equals(any)) return false;
+            return equalsImpl(any, true);
+        }
+
+        protected boolean equalsImpl(Object any, boolean includeDynamicArgs) {
+            if (includeDynamicArgs && !super.equals(any)) return false;
             if (!(any instanceof DynamicMethod)) return false;
             DynamicMethodSymbol dm1 = (DynamicMethodSymbol)other;
             DynamicMethodSymbol dm2 = (DynamicMethodSymbol)((DynamicMethod)any).other;
@@ -202,7 +206,11 @@
 
         @Override @DefinedBy(Api.LANGUAGE_MODEL)
         public int hashCode() {
-            int hash = super.hashCode();
+            return hashCodeImpl(true);
+        }
+
+        protected int hashCodeImpl(boolean includeDynamicArgs) {
+            int hash = includeDynamicArgs ? super.hashCode() : 0;
             DynamicMethodSymbol dm = (DynamicMethodSymbol)other;
             hash += dm.bsmKind * 7 +
                     dm.bsm.hashCode() * 11;
@@ -223,6 +231,36 @@
             }
             return result;
         }
+
+        static class BootstrapMethodsKey extends DynamicMethod {
+            BootstrapMethodsKey(DynamicMethodSymbol m, Types types) {
+                super(m, types);
+            }
+
+            @Override @DefinedBy(Api.LANGUAGE_MODEL)
+            public boolean equals(Object any) {
+                return equalsImpl(any, false);
+            }
+
+            @Override @DefinedBy(Api.LANGUAGE_MODEL)
+            public int hashCode() {
+                return hashCodeImpl(false);
+            }
+
+            Object[] getUniqueArgs() {
+                return uniqueStaticArgs;
+            }
+        }
+
+        static class BootstrapMethodsValue {
+            final MethodHandle mh;
+            final int index;
+
+            public BootstrapMethodsValue(MethodHandle mh, int index) {
+                this.mh = mh;
+                this.index = index;
+            }
+        }
     }
 
     static class Variable extends DelegatedSymbol<VarSymbol> {
diff --git a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/CleanProperties.java b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/CleanProperties.java
index 515beff..df0f157 100644
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/CleanProperties.java
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/CleanProperties.java
@@ -42,9 +42,9 @@
 import java.util.Properties;
 import java.util.Set;
 
+import com.sun.tools.sjavac.comp.CompilationService;
 import com.sun.tools.sjavac.options.Options;
 import com.sun.tools.sjavac.pubapi.PubApi;
-import com.sun.tools.sjavac.server.Sjavac;
 
 /**
  * The clean properties transform should not be necessary.
@@ -64,7 +64,7 @@
         // Any extra information is ignored for clean properties.
     }
 
-    public boolean transform(Sjavac sjavac,
+    public boolean transform(CompilationService sjavac,
                              Map<String,Set<URI>> pkgSrcs,
                              Set<URI>             visibleSrcs,
                              Map<URI,Set<String>> visibleClasses,
diff --git a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/CompileJavaPackages.java b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/CompileJavaPackages.java
index 7115176..baceabd 100644
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/CompileJavaPackages.java
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/CompileJavaPackages.java
@@ -32,12 +32,13 @@
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Random;
 import java.util.Set;
 
+import com.sun.tools.sjavac.comp.CompilationService;
 import com.sun.tools.sjavac.options.Options;
 import com.sun.tools.sjavac.pubapi.PubApi;
-import com.sun.tools.sjavac.server.CompilationResult;
-import com.sun.tools.sjavac.server.Sjavac;
+import com.sun.tools.sjavac.server.CompilationSubResult;
 import com.sun.tools.sjavac.server.SysInfo;
 
 /**
@@ -68,7 +69,7 @@
         args = a;
     }
 
-    public boolean transform(final Sjavac sjavac,
+    public boolean transform(final CompilationService sjavac,
                              Map<String,Set<URI>> pkgSrcs,
                              final Set<URI>             visibleSources,
                              final Map<URI,Set<String>> visibleClasses,
@@ -91,16 +92,11 @@
         boolean concurrentCompiles = true;
 
         // Fetch the id.
-        final String id = Util.extractStringOption("id", sjavac.serverSettings());
+        final String id = String.valueOf(new Random().nextInt());
         // Only keep portfile and sjavac settings..
         //String psServerSettings = Util.cleanSubOptions(Util.set("portfile","sjavac","background","keepalive"), sjavac.serverSettings());
 
-        // Get maximum heap size from the server!
         SysInfo sysinfo = sjavac.getSysInfo();
-        if (sysinfo == null) {
-            Log.error("Could not query server for sysinfo!");
-            return false;
-        }
         int numMBytes = (int)(sysinfo.maxMemory / ((long)(1024*1024)));
         Log.debug("Server reports "+numMBytes+"MiB of memory and "+sysinfo.numCores+" cores");
 
@@ -205,7 +201,7 @@
         }
 
         // The return values for each chunked compile.
-        final CompilationResult[] rn = new CompilationResult[numCompiles];
+        final CompilationSubResult[] rn = new CompilationSubResult[numCompiles];
         // The requets, might or might not run as a background thread.
         final Thread[] requests  = new Thread[numCompiles];
 
diff --git a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/CompileProperties.java b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/CompileProperties.java
index c8a7d16..996d2c1 100644
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/CompileProperties.java
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/CompileProperties.java
@@ -44,9 +44,9 @@
 import java.util.Properties;
 import java.util.Set;
 
+import com.sun.tools.sjavac.comp.CompilationService;
 import com.sun.tools.sjavac.options.Options;
 import com.sun.tools.sjavac.pubapi.PubApi;
-import com.sun.tools.sjavac.server.Sjavac;
 
 /**
  * Compile properties transform a properties file into a Java source file.
@@ -71,7 +71,7 @@
     public void setExtra(Options a) {
     }
 
-    public boolean transform(Sjavac sjavac,
+    public boolean transform(CompilationService compilationService,
                              Map<String,Set<URI>> pkgSrcs,
                              Set<URI>             visibleSrcs,
                              Map<URI,Set<String>> visibleClasses,
diff --git a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/CopyFile.java b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/CopyFile.java
index 0dfffb3..1c725f2 100644
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/CopyFile.java
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/CopyFile.java
@@ -37,9 +37,9 @@
 import java.util.Map;
 import java.util.Set;
 
+import com.sun.tools.sjavac.comp.CompilationService;
 import com.sun.tools.sjavac.options.Options;
 import com.sun.tools.sjavac.pubapi.PubApi;
-import com.sun.tools.sjavac.server.Sjavac;
 
 /**
  * The copy file transform simply copies a matching file from -src to -d .
@@ -58,7 +58,7 @@
     public void setExtra(Options a) {
     }
 
-    public boolean transform(Sjavac sjavac,
+    public boolean transform(CompilationService compilationService,
                              Map<String,Set<URI>> pkgSrcs,
                              Set<URI> visibleSrcs,
                              Map<URI,Set<String>> visibleClasses,
diff --git a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/JavacState.java b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/JavacState.java
index b2acd76..03179a9 100644
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/JavacState.java
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/JavacState.java
@@ -45,9 +45,9 @@
 import java.util.Set;
 import java.util.stream.Collectors;
 
+import com.sun.tools.sjavac.comp.CompilationService;
 import com.sun.tools.sjavac.options.Options;
 import com.sun.tools.sjavac.pubapi.PubApi;
-import com.sun.tools.sjavac.server.Sjavac;
 
 /**
  * The javac state class maintains the previous (prev) and the current (now)
@@ -748,7 +748,7 @@
     /**
      * Compile all the java sources. Return true, if it needs to be called again!
      */
-    public boolean performJavaCompilations(Sjavac sjavac,
+    public boolean performJavaCompilations(CompilationService sjavac,
                                            Options args,
                                            Set<String> recentlyCompiled,
                                            boolean[] rcValue) {
@@ -790,7 +790,7 @@
      * For all packages, find all sources belonging to the package, group the sources
      * based on their transformers and apply the transformers on each source code group.
      */
-    private boolean perform(Sjavac sjavac,
+    private boolean perform(CompilationService sjavac,
                             File outputDir,
                             Map<String,Transformer> suffixRules) {
         boolean rc = true;
diff --git a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/Transformer.java b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/Transformer.java
index b7cef72..75f5d11 100644
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/Transformer.java
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/Transformer.java
@@ -30,9 +30,9 @@
 import java.util.Map;
 import java.util.Set;
 
+import com.sun.tools.sjavac.comp.CompilationService;
 import com.sun.tools.sjavac.options.Options;
 import com.sun.tools.sjavac.pubapi.PubApi;
-import com.sun.tools.sjavac.server.Sjavac;
 
 /**
  * The transform interface is used to transform content inside a package, from one form to another.
@@ -83,7 +83,7 @@
      * If num_cores is set to a non-zero value. The transform should attempt to use no more than these
      * number of threads for heavy work.
      */
-    boolean transform(Sjavac sjavac,
+    boolean transform(CompilationService sjavac,
                       Map<String,Set<URI>> pkgSrcs,
                       Set<URI>             visibleSources,
                       Map<URI,Set<String>> visibleClasses,
diff --git a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/client/ClientMain.java b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/client/ClientMain.java
index 880c233..3878c98 100644
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/client/ClientMain.java
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/client/ClientMain.java
@@ -25,29 +25,13 @@
 
 package com.sun.tools.sjavac.client;
 
-import java.io.IOException;
 import java.io.PrintStream;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
 
-import com.sun.tools.sjavac.JavacState;
 import com.sun.tools.sjavac.Log;
-import com.sun.tools.sjavac.Module;
-import com.sun.tools.sjavac.ProblemException;
-import com.sun.tools.sjavac.Source;
-import com.sun.tools.sjavac.Transformer;
 import com.sun.tools.sjavac.Util;
-import com.sun.tools.sjavac.comp.PooledSjavac;
 import com.sun.tools.sjavac.comp.SjavacImpl;
 import com.sun.tools.sjavac.options.Options;
-import com.sun.tools.sjavac.options.SourceLocation;
+import com.sun.tools.sjavac.server.CompilationResult;
 import com.sun.tools.sjavac.server.Sjavac;
 
 /**
@@ -74,282 +58,34 @@
             return -1;
         }
 
-        Log.setLogLevel(options.getLogLevel());
-
-        if (!validateOptions(options))
-            return -1;
-
-        if (!createIfMissing(options.getDestDir()))
-            return -1;
-
-        if (!createIfMissing(options.getStateDir()))
-            return -1;
-
-        Path gensrc = options.getGenSrcDir();
-        if (gensrc != null && !createIfMissing(gensrc))
-            return -1;
-
-        Path hdrdir = options.getHeaderDir();
-        if (hdrdir != null && !createIfMissing(hdrdir))
-            return -1;
-
         Log.debug("==========================================================");
         Log.debug("Launching sjavac client with the following parameters:");
         Log.debug("    " + options.getStateArgsString());
         Log.debug("==========================================================");
 
-        // Load the prev build state database.
-        JavacState javac_state = JavacState.load(options, out, err);
-
-        // Setup the suffix rules from the command line.
-        Map<String, Transformer> suffixRules = new HashMap<>();
-
-        // Handling of .java-compilation
-        suffixRules.putAll(javac_state.getJavaSuffixRule());
-
-        // Handling of -copy and -tr
-        suffixRules.putAll(options.getTranslationRules());
-
-        // All found modules are put here.
-        Map<String,Module> modules = new HashMap<>();
-        // We start out in the legacy empty no-name module.
-        // As soon as we stumble on a module-info.java file we change to that module.
-        Module current_module = new Module("", "");
-        modules.put("", current_module);
-
-        // Find all sources, use the suffix rules to know which files are sources.
-        Map<String,Source> sources = new HashMap<>();
-
-        // Find the files, this will automatically populate the found modules
-        // with found packages where the sources are found!
-        findSourceFiles(options.getSources(),
-                        suffixRules.keySet(),
-                        sources,
-                        modules,
-                        current_module,
-                        options.isDefaultPackagePermitted(),
-                        false);
-
-        if (sources.isEmpty()) {
-            Log.error("Found nothing to compile!");
-            return -1;
-        }
-
-        // Create a map of all source files that are available for linking. Both -src and
-        // -sourcepath point to such files. It is possible to specify multiple
-        // -sourcepath options to enable different filtering rules. If the
-        // filters are the same for multiple sourcepaths, they may be concatenated
-        // using :(;). Before sending the list of sourcepaths to javac, they are
-        // all concatenated. The list created here is used by the SmartFileWrapper to
-        // make sure only the correct sources are actually available.
-        // We might find more modules here as well.
-        Map<String,Source> sources_to_link_to = new HashMap<>();
-
-        List<SourceLocation> sourceResolutionLocations = new ArrayList<>();
-        sourceResolutionLocations.addAll(options.getSources());
-        sourceResolutionLocations.addAll(options.getSourceSearchPaths());
-        findSourceFiles(sourceResolutionLocations,
-                        Collections.singleton(".java"),
-                        sources_to_link_to,
-                        modules,
-                        current_module,
-                        options.isDefaultPackagePermitted(),
-                        true);
-
-        // Find all class files allowable for linking.
-        // And pickup knowledge of all modules found here.
-        // This cannot currently filter classes inside jar files.
-//      Map<String,Source> classes_to_link_to = new HashMap<String,Source>();
-//      findFiles(args, "-classpath", Util.set(".class"), classes_to_link_to, modules, current_module, true);
-
-        // Find all module sources allowable for linking.
-//      Map<String,Source> modules_to_link_to = new HashMap<String,Source>();
-//      findFiles(args, "-modulepath", Util.set(".class"), modules_to_link_to, modules, current_module, true);
-
-        // Add the set of sources to the build database.
-        javac_state.now().flattenPackagesSourcesAndArtifacts(modules);
-        javac_state.now().checkInternalState("checking sources", false, sources);
-        javac_state.now().checkInternalState("checking linked sources", true, sources_to_link_to);
-        javac_state.setVisibleSources(sources_to_link_to);
-
-        int round = 0;
-        printRound(round);
-
-        // If there is any change in the source files, taint packages
-        // and mark the database in need of saving.
-        javac_state.checkSourceStatus(false);
-
-        // Find all existing artifacts. Their timestamp will match the last modified timestamps stored
-        // in javac_state, simply because loading of the JavacState will clean out all artifacts
-        // that do not match the javac_state database.
-        javac_state.findAllArtifacts();
-
-        // Remove unidentified artifacts from the bin, gensrc and header dirs.
-        // (Unless we allow them to be there.)
-        // I.e. artifacts that are not known according to the build database (javac_state).
-        // For examples, files that have been manually copied into these dirs.
-        // Artifacts with bad timestamps (ie the on disk timestamp does not match the timestamp
-        // in javac_state) have already been removed when the javac_state was loaded.
-        if (!options.areUnidentifiedArtifactsPermitted()) {
-            javac_state.removeUnidentifiedArtifacts();
-        }
-        // Go through all sources and taint all packages that miss artifacts.
-        javac_state.taintPackagesThatMissArtifacts();
-
-        // Check recorded classpath public apis. Taint packages that depend on
-        // classpath classes whose public apis have changed.
-        javac_state.taintPackagesDependingOnChangedClasspathPackages();
-
-        // Now clean out all known artifacts belonging to tainted packages.
-        javac_state.deleteClassArtifactsInTaintedPackages();
-        // Copy files, for example property files, images files, xml files etc etc.
-        javac_state.performCopying(Util.pathToFile(options.getDestDir()), suffixRules);
-        // Translate files, for example compile properties or compile idls.
-        javac_state.performTranslation(Util.pathToFile(gensrc), suffixRules);
-        // Add any potentially generated java sources to the tobe compiled list.
-        // (Generated sources must always have a package.)
-        Map<String,Source> generated_sources = new HashMap<>();
-
-        try {
-
-            Source.scanRoot(Util.pathToFile(options.getGenSrcDir()), Util.set(".java"), null, null, null, null,
-                    generated_sources, modules, current_module, false, true, false);
-            javac_state.now().flattenPackagesSourcesAndArtifacts(modules);
-            // Recheck the the source files and their timestamps again.
-            javac_state.checkSourceStatus(true);
-
-            // Now do a safety check that the list of source files is identical
-            // to the list Make believes we are compiling. If we do not get this
-            // right, then incremental builds will fail with subtility.
-            // If any difference is detected, then we will fail hard here.
-            // This is an important safety net.
-            javac_state.compareWithMakefileList(Util.pathToFile(options.getSourceReferenceList()));
-
-            // Do the compilations, repeatedly until no tainted packages exist.
-            boolean again;
-            // Collect the name of all compiled packages.
-            Set<String> recently_compiled = new HashSet<>();
-            boolean[] rc = new boolean[1];
-            boolean background = Util.extractBooleanOption("background", options.getServerConf(), true);
-            Sjavac sjavac;
-            // Create an sjavac implementation to be used for compilation
-            if (background) {
+        // Prepare sjavac object
+        boolean background = Util.extractBooleanOption("background", options.getServerConf(), true);
+        Sjavac sjavac;
+        // Create an sjavac implementation to be used for compilation
+        if (background) {
+            try {
                 sjavac = new SjavacClient(options);
-            } else {
-                int poolsize = Util.extractIntOption("poolsize", options.getServerConf());
-                if (poolsize <= 0)
-                    poolsize = Runtime.getRuntime().availableProcessors();
-                sjavac = new PooledSjavac(new SjavacImpl(), poolsize);
+            } catch (PortFileInaccessibleException e) {
+                Log.error("Port file inaccessible.");
+                return -1;
             }
-
-            do {
-                if (round > 0)
-                    printRound(round);
-                // Clean out artifacts in tainted packages.
-                javac_state.deleteClassArtifactsInTaintedPackages();
-                again = javac_state.performJavaCompilations(sjavac, options, recently_compiled, rc);
-                if (!rc[0]) {
-                    Log.debug("Compilation failed.");
-                    break;
-                }
-                if (!again) {
-                    Log.debug("Nothing left to do.");
-                }
-                round++;
-            } while (again);
-            Log.debug("No need to do another round.");
-
-            // Only update the state if the compile went well.
-            if (rc[0]) {
-                javac_state.save();
-                // Reflatten only the artifacts.
-                javac_state.now().flattenArtifacts(modules);
-                // Remove artifacts that were generated during the last compile, but not this one.
-                javac_state.removeSuperfluousArtifacts(recently_compiled);
-            }
-            if (!background)
-                sjavac.shutdown();
-
-            return rc[0] ? 0 : -1;
-        } catch (ProblemException e) {
-            Log.error(e.getMessage());
-            return -1;
-        } catch (Exception e) {
-            e.printStackTrace(err);
-            return -1;
-        }
-    }
-
-    private static boolean validateOptions(Options options) {
-
-        String err = null;
-
-        if (options.getDestDir() == null) {
-            err = "Please specify output directory.";
-        } else if (options.isJavaFilesAmongJavacArgs()) {
-            err = "Sjavac does not handle explicit compilation of single .java files.";
-        } else if (options.getServerConf() == null) {
-            err = "No server configuration provided.";
-        } else if (!options.getImplicitPolicy().equals("none")) {
-            err = "The only allowed setting for sjavac is -implicit:none";
-        } else if (options.getSources().isEmpty()) {
-            err = "You have to specify -src.";
-        } else if (options.getTranslationRules().size() > 1
-                && options.getGenSrcDir() == null) {
-            err = "You have translators but no gensrc dir (-s) specified!";
+        } else {
+            sjavac = new SjavacImpl();
         }
 
-        if (err != null)
-            Log.error(err);
+        CompilationResult cr = sjavac.compile(args);
 
-        return err == null;
+        out.print(cr.stdout);
+        err.print(cr.stderr);
 
+        if (!background)
+            sjavac.shutdown();
+
+        return cr.returnCode;
     }
-
-    private static boolean createIfMissing(Path dir) {
-
-        if (Files.isDirectory(dir))
-            return true;
-
-        if (Files.exists(dir)) {
-            Log.error(dir + " is not a directory.");
-            return false;
-        }
-
-        try {
-            Files.createDirectories(dir);
-        } catch (IOException e) {
-            Log.error("Could not create directory: " + e.getMessage());
-            return false;
-        }
-
-        return true;
-    }
-
-
-    /** Find source files in the given source locations. */
-    public static void findSourceFiles(List<SourceLocation> sourceLocations,
-                                       Set<String> sourceTypes,
-                                       Map<String,Source> foundFiles,
-                                       Map<String, Module> foundModules,
-                                       Module currentModule,
-                                       boolean permitSourcesInDefaultPackage,
-                                       boolean inLinksrc) {
-
-        for (SourceLocation source : sourceLocations) {
-            source.findSourceFiles(sourceTypes,
-                                   foundFiles,
-                                   foundModules,
-                                   currentModule,
-                                   permitSourcesInDefaultPackage,
-                                   inLinksrc);
-        }
-    }
-
-    private static void printRound(int round) {
-        Log.debug("****************************************");
-        Log.debug("* Round " + round + "                              *");
-        Log.debug("****************************************");
-    }
-
 }
diff --git a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/client/PortFileInaccessibleException.java b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/client/PortFileInaccessibleException.java
new file mode 100644
index 0000000..938c812
--- /dev/null
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/client/PortFileInaccessibleException.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. 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.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.sun.tools.sjavac.client;
+
+import java.io.IOException;
+
+public class PortFileInaccessibleException extends IOException {
+
+    private static final long serialVersionUID = -4755261881545398973L;
+
+    public PortFileInaccessibleException(Throwable cause) {
+        super(cause);
+    }
+}
diff --git a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/client/SjavacClient.java b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/client/SjavacClient.java
index b45b06b..d9a598b 100644
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/client/SjavacClient.java
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/client/SjavacClient.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2015, Oracle and/or its affiliates. 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
@@ -26,32 +26,27 @@
 package com.sun.tools.sjavac.client;
 
 import java.io.File;
-import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.io.PrintStream;
-import java.io.PrintWriter;
-import java.io.StringWriter;
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.net.Socket;
-import java.net.URI;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Scanner;
-import java.util.Set;
 
 import com.sun.tools.sjavac.Log;
 import com.sun.tools.sjavac.Util;
 import com.sun.tools.sjavac.options.OptionHelper;
 import com.sun.tools.sjavac.options.Options;
+import com.sun.tools.sjavac.server.CompilationSubResult;
 import com.sun.tools.sjavac.server.CompilationResult;
 import com.sun.tools.sjavac.server.PortFile;
 import com.sun.tools.sjavac.server.Sjavac;
 import com.sun.tools.sjavac.server.SjavacServer;
-import com.sun.tools.sjavac.server.SysInfo;
 
 /**
  * Sjavac implementation that delegates requests to a SjavacServer.
@@ -89,9 +84,7 @@
     // Store the server conf settings here.
     private final String settings;
 
-    // This constructor should not throw FileNotFoundException (to be resolved
-    // in JDK-8060030)
-    public SjavacClient(Options options) throws FileNotFoundException {
+    public SjavacClient(Options options) throws PortFileInaccessibleException {
         String tmpServerConf = options.getServerConf();
         String serverConf = (tmpServerConf!=null)? tmpServerConf : "";
         String tmpId = Util.extractStringOption("id", serverConf);
@@ -103,8 +96,7 @@
         String portfileName = Util.extractStringOption("portfile", serverConf, defaultPortfile);
         try {
             portFile = SjavacServer.getPortFile(portfileName);
-        } catch (FileNotFoundException e) {
-            // Reached for instance if directory of port file does not exist
+        } catch (PortFileInaccessibleException e) {
             Log.error("Port file inaccessable: " + e);
             throw e;
         }
@@ -126,40 +118,8 @@
         return settings;
     }
 
-    /**
-     * Make a request to the server only to get the maximum possible heap size to use for compilations.
-     */
     @Override
-    public SysInfo getSysInfo() {
-        try (Socket socket = tryConnect()) {
-            // The ObjectInputStream constructor will block until the
-            // corresponding ObjectOutputStream has written and flushed the
-            // header, so it is important that the ObjectOutputStreams on server
-            // and client are opened before the ObjectInputStreams.
-            ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
-            ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
-            oos.writeObject(id);
-            oos.writeObject(SjavacServer.CMD_SYS_INFO);
-            oos.flush();
-            return (SysInfo) ois.readObject();
-        } catch (IOException | ClassNotFoundException ex) {
-            Log.error("[CLIENT] Exception caught: " + ex);
-            Log.debug(Util.getStackTrace(ex));
-        } catch (InterruptedException ie) {
-            Thread.currentThread().interrupt(); // Restore interrupt
-            Log.error("[CLIENT] getSysInfo interrupted.");
-            Log.debug(Util.getStackTrace(ie));
-        }
-        return null;
-    }
-
-    @Override
-    public CompilationResult compile(String protocolId,
-                                     String invocationId,
-                                     String[] args,
-                                     List<File> explicitSources,
-                                     Set<URI> sourcesToCompile,
-                                     Set<URI> visibleSources) {
+    public CompilationResult compile(String[] args) {
         CompilationResult result;
         try (Socket socket = tryConnect()) {
             // The ObjectInputStream constructor will block until the
@@ -170,22 +130,17 @@
             ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
             oos.writeObject(id);
             oos.writeObject(SjavacServer.CMD_COMPILE);
-            oos.writeObject(protocolId);
-            oos.writeObject(invocationId);
             oos.writeObject(args);
-            oos.writeObject(explicitSources);
-            oos.writeObject(sourcesToCompile);
-            oos.writeObject(visibleSources);
             oos.flush();
             result = (CompilationResult) ois.readObject();
         } catch (IOException | ClassNotFoundException ex) {
             Log.error("[CLIENT] Exception caught: " + ex);
-            result = new CompilationResult(CompilationResult.ERROR_FATAL);
+            result = new CompilationResult(CompilationSubResult.ERROR_FATAL);
             result.stderr = Util.getStackTrace(ex);
         } catch (InterruptedException ie) {
             Thread.currentThread().interrupt(); // Restore interrupt
             Log.error("[CLIENT] compile interrupted.");
-            result = new CompilationResult(CompilationResult.ERROR_FATAL);
+            result = new CompilationResult(CompilationSubResult.ERROR_FATAL);
             result.stderr = Util.getStackTrace(ie);
         }
         return result;
diff --git a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/comp/CompilationService.java b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/comp/CompilationService.java
new file mode 100644
index 0000000..6569e28
--- /dev/null
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/comp/CompilationService.java
@@ -0,0 +1,171 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. 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.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.tools.sjavac.comp;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.net.URI;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import javax.tools.JavaFileObject;
+import javax.tools.StandardJavaFileManager;
+import javax.tools.StandardLocation;
+import javax.tools.ToolProvider;
+
+import com.sun.tools.javac.api.JavacTaskImpl;
+import com.sun.tools.javac.api.JavacTool;
+import com.sun.tools.javac.util.Context;
+import com.sun.tools.javac.util.Dependencies;
+import com.sun.tools.javac.util.ListBuffer;
+import com.sun.tools.sjavac.Log;
+import com.sun.tools.sjavac.Util;
+import com.sun.tools.sjavac.comp.dependencies.NewDependencyCollector;
+import com.sun.tools.sjavac.comp.dependencies.PublicApiCollector;
+import com.sun.tools.sjavac.server.CompilationSubResult;
+import com.sun.tools.sjavac.server.SysInfo;
+
+/**
+ *  <p><b>This is NOT part of any supported API.
+ *  If you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class CompilationService {
+
+    public SysInfo getSysInfo() {
+        return new SysInfo(Runtime.getRuntime().availableProcessors(),
+                           Runtime.getRuntime().maxMemory());
+    }
+
+    public CompilationSubResult compile(String protocolId,
+                                     String invocationId,
+                                     String[] args,
+                                     List<File> explicitSources,
+                                     Set<URI> sourcesToCompile,
+                                     Set<URI> visibleSources) {
+
+        JavacTool compiler = (JavacTool) ToolProvider.getSystemJavaCompiler();
+        try (StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null)) {
+            SmartFileManager sfm = new SmartFileManager(fm);
+            Context context = new Context();
+
+            Dependencies.GraphDependencies.preRegister(context);
+
+            // Now setup the actual compilation
+            CompilationSubResult compilationResult = new CompilationSubResult(0);
+
+            // First deal with explicit source files on cmdline and in at file
+            ListBuffer<JavaFileObject> explicitJFOs = new ListBuffer<>();
+            for (JavaFileObject jfo : fm.getJavaFileObjectsFromFiles(explicitSources)) {
+                explicitJFOs.append(SmartFileManager.locWrap(jfo, StandardLocation.SOURCE_PATH));
+            }
+            // Now deal with sources supplied as source_to_compile
+            ListBuffer<File> sourcesToCompileFiles = new ListBuffer<>();
+            for (URI u : sourcesToCompile)
+                sourcesToCompileFiles.append(new File(u));
+
+            for (JavaFileObject jfo : fm.getJavaFileObjectsFromFiles(sourcesToCompileFiles))
+                explicitJFOs.append(SmartFileManager.locWrap(jfo, StandardLocation.SOURCE_PATH));
+
+            // Create a new logger
+            StringWriter stdoutLog = new StringWriter();
+            StringWriter stderrLog = new StringWriter();
+            PrintWriter stdout = new PrintWriter(stdoutLog);
+            PrintWriter stderr = new PrintWriter(stderrLog);
+            com.sun.tools.javac.main.Main.Result rc = com.sun.tools.javac.main.Main.Result.OK;
+            PublicApiCollector pubApiCollector = new PublicApiCollector(context, explicitJFOs);
+            PathAndPackageVerifier papVerifier = new PathAndPackageVerifier();
+            NewDependencyCollector depsCollector = new NewDependencyCollector(context, explicitJFOs);
+            try {
+                if (explicitJFOs.size() > 0) {
+                    sfm.setVisibleSources(visibleSources);
+                    sfm.cleanArtifacts();
+                    sfm.setLog(stdout);
+
+                    // Do the compilation!
+                    JavacTaskImpl task =
+                            (JavacTaskImpl) compiler.getTask(stderr,
+                                                             sfm,
+                                                             null,
+                                                             Arrays.asList(args),
+                                                             null,
+                                                             explicitJFOs,
+                                                             context);
+                    sfm.setSymbolFileEnabled(!com.sun.tools.javac.util.Options.instance(context).isSet("ignore.symbol.file"));
+                    task.addTaskListener(depsCollector);
+                    task.addTaskListener(pubApiCollector);
+                    task.addTaskListener(papVerifier);
+                    logJavacInvocation(args);
+                    rc = task.doCall();
+                    Log.debug("javac returned with code " + rc);
+                    sfm.flush();
+                }
+            } catch (Exception e) {
+                Log.error(Util.getStackTrace(e));
+                stderrLog.append(Util.getStackTrace(e));
+                rc = com.sun.tools.javac.main.Main.Result.ERROR;
+            }
+
+            compilationResult.packageArtifacts = sfm.getPackageArtifacts();
+
+            if (papVerifier.errorsDiscovered())
+                rc = com.sun.tools.javac.main.Main.Result.ERROR;
+
+            compilationResult.packageDependencies = depsCollector.getDependencies(false);
+            compilationResult.packageCpDependencies = depsCollector.getDependencies(true);
+
+            compilationResult.packagePubapis = pubApiCollector.getPubApis(true);
+            compilationResult.dependencyPubapis = pubApiCollector.getPubApis(false);
+            compilationResult.stdout = stdoutLog.toString();
+            compilationResult.stderr = stderrLog.toString();
+            compilationResult.returnCode = rc.exitCode;
+
+            return compilationResult;
+        } catch (IOException e) {
+            throw new Error(e);
+        }
+    }
+
+    private void logJavacInvocation(String[] args) {
+        Log.debug("Invoking javac with args");
+        Iterator<String> argIter = Arrays.asList(args).iterator();
+        while (argIter.hasNext()) {
+            String arg = argIter.next();
+            String line = "    " + arg;
+            if (arg.matches("\\-(d|cp|classpath|sourcepath|source|target)")
+                    && argIter.hasNext()) {
+                line += " " + argIter.next();
+            }
+            Log.debug(line);
+        }
+    }
+
+}
diff --git a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/comp/PooledSjavac.java b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/comp/PooledSjavac.java
index 377ffaf..33f47b2 100644
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/comp/PooledSjavac.java
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/comp/PooledSjavac.java
@@ -24,11 +24,7 @@
  */
 package com.sun.tools.sjavac.comp;
 
-import java.io.File;
-import java.net.URI;
-import java.util.List;
 import java.util.Objects;
-import java.util.Set;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
@@ -36,7 +32,6 @@
 import com.sun.tools.sjavac.Log;
 import com.sun.tools.sjavac.server.CompilationResult;
 import com.sun.tools.sjavac.server.Sjavac;
-import com.sun.tools.sjavac.server.SysInfo;
 
 /**
  * An sjavac implementation that limits the number of concurrent calls by
@@ -59,30 +54,10 @@
     }
 
     @Override
-    public SysInfo getSysInfo() {
-        try {
-            return pool.submit(() -> delegate.getSysInfo()).get();
-        } catch (Exception e) {
-            e.printStackTrace();
-            throw new RuntimeException("Error during getSysInfo", e);
-        }
-    }
-
-    @Override
-    public CompilationResult compile(final String protocolId,
-                                     final String invocationId,
-                                     final String[] args,
-                                     final List<File> explicitSources,
-                                     final Set<URI> sourcesToCompile,
-                                     final Set<URI> visibleSources) {
+    public CompilationResult compile(String[] args) {
         try {
             return pool.submit(() -> {
-                return delegate.compile(protocolId,
-                                        invocationId,
-                                        args,
-                                        explicitSources,
-                                        sourcesToCompile,
-                                        visibleSources);
+                return delegate.compile(args);
             }).get();
         } catch (Exception e) {
             e.printStackTrace();
@@ -112,8 +87,4 @@
         delegate.shutdown();
     }
 
-    @Override
-    public String serverSettings() {
-        return delegate.serverSettings();
-    }
 }
diff --git a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/comp/SjavacImpl.java b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/comp/SjavacImpl.java
index 07a6199..93e8ff3 100644
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/comp/SjavacImpl.java
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/comp/SjavacImpl.java
@@ -24,34 +24,33 @@
  */
 package com.sun.tools.sjavac.comp;
 
-import java.io.File;
+import static com.sun.tools.sjavac.server.CompilationResult.ERROR_FATAL;
+import static java.nio.charset.StandardCharsets.UTF_8;
+
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.net.URI;
-import java.util.Arrays;
-import java.util.Iterator;
+import java.io.PrintStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
-import javax.tools.JavaFileObject;
-import javax.tools.StandardJavaFileManager;
-import javax.tools.StandardLocation;
-import javax.tools.ToolProvider;
-
-import com.sun.tools.javac.api.JavacTaskImpl;
-import com.sun.tools.javac.api.JavacTool;
-import com.sun.tools.javac.util.Context;
-import com.sun.tools.javac.util.Dependencies;
-import com.sun.tools.javac.util.ListBuffer;
-import com.sun.tools.javac.util.Options;
+import com.sun.tools.sjavac.JavacState;
 import com.sun.tools.sjavac.Log;
+import com.sun.tools.sjavac.Module;
+import com.sun.tools.sjavac.ProblemException;
+import com.sun.tools.sjavac.Source;
+import com.sun.tools.sjavac.Transformer;
 import com.sun.tools.sjavac.Util;
-import com.sun.tools.sjavac.comp.dependencies.NewDependencyCollector;
-import com.sun.tools.sjavac.comp.dependencies.PublicApiCollector;
+import com.sun.tools.sjavac.options.Options;
+import com.sun.tools.sjavac.options.SourceLocation;
 import com.sun.tools.sjavac.server.CompilationResult;
 import com.sun.tools.sjavac.server.Sjavac;
-import com.sun.tools.sjavac.server.SysInfo;
 
 /**
  * The sjavac implementation that interacts with javac and performs the actual
@@ -65,123 +64,282 @@
 public class SjavacImpl implements Sjavac {
 
     @Override
-    public SysInfo getSysInfo() {
-        return new SysInfo(Runtime.getRuntime().availableProcessors(),
-                           Runtime.getRuntime().maxMemory());
-    }
+    public CompilationResult compile(String[] args) {
 
-    @Override
-    public CompilationResult compile(String protocolId,
-                                     String invocationId,
-                                     String[] args,
-                                     List<File> explicitSources,
-                                     Set<URI> sourcesToCompile,
-                                     Set<URI> visibleSources) {
+        ByteArrayOutputStream outBaos = new ByteArrayOutputStream();
+        ByteArrayOutputStream errBaos = new ByteArrayOutputStream();
+        PrintStream out = new PrintStream(outBaos);
+        PrintStream err = new PrintStream(errBaos);
 
-        JavacTool compiler = (JavacTool) ToolProvider.getSystemJavaCompiler();
-        try (StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null)) {
-            SmartFileManager sfm = new SmartFileManager(fm);
-            Context context = new Context();
+        Options options;
+        try {
+            options = Options.parseArgs(args);
+        } catch (IllegalArgumentException e) {
+            Log.error(e.getMessage());
+            return new CompilationResult(ERROR_FATAL);
+        }
 
-            Dependencies.GraphDependencies.preRegister(context);
+        Log.setLogLevel(options.getLogLevel());
 
-            // Now setup the actual compilation
-            CompilationResult compilationResult = new CompilationResult(0);
+        if (!validateOptions(options))
+            return new CompilationResult(ERROR_FATAL);
 
-            // First deal with explicit source files on cmdline and in at file
-            ListBuffer<JavaFileObject> explicitJFOs = new ListBuffer<>();
-            for (JavaFileObject jfo : fm.getJavaFileObjectsFromFiles(explicitSources)) {
-                explicitJFOs.append(SmartFileManager.locWrap(jfo, StandardLocation.SOURCE_PATH));
-            }
-            // Now deal with sources supplied as source_to_compile
-            ListBuffer<File> sourcesToCompileFiles = new ListBuffer<>();
-            for (URI u : sourcesToCompile)
-                sourcesToCompileFiles.append(new File(u));
+        if (!createIfMissing(options.getDestDir()))
+            return new CompilationResult(ERROR_FATAL);
 
-            for (JavaFileObject jfo : fm.getJavaFileObjectsFromFiles(sourcesToCompileFiles))
-                explicitJFOs.append(SmartFileManager.locWrap(jfo, StandardLocation.SOURCE_PATH));
+        if (!createIfMissing(options.getStateDir()))
+            return new CompilationResult(ERROR_FATAL);
 
-            // Create a new logger
-            StringWriter stdoutLog = new StringWriter();
-            StringWriter stderrLog = new StringWriter();
-            PrintWriter stdout = new PrintWriter(stdoutLog);
-            PrintWriter stderr = new PrintWriter(stderrLog);
-            com.sun.tools.javac.main.Main.Result rc = com.sun.tools.javac.main.Main.Result.OK;
-            PublicApiCollector pubApiCollector = new PublicApiCollector(context, explicitJFOs);
-            PathAndPackageVerifier papVerifier = new PathAndPackageVerifier();
-            NewDependencyCollector depsCollector = new NewDependencyCollector(context, explicitJFOs);
-            try {
-                if (explicitJFOs.size() > 0) {
-                    sfm.setVisibleSources(visibleSources);
-                    sfm.cleanArtifacts();
-                    sfm.setLog(stdout);
+        Path gensrc = options.getGenSrcDir();
+        if (gensrc != null && !createIfMissing(gensrc))
+            return new CompilationResult(ERROR_FATAL);
 
-                    // Do the compilation!
-                    JavacTaskImpl task =
-                            (JavacTaskImpl) compiler.getTask(stderr,
-                                                             sfm,
-                                                             null,
-                                                             Arrays.asList(args),
-                                                             null,
-                                                             explicitJFOs,
-                                                             context);
-                    sfm.setSymbolFileEnabled(!Options.instance(context).isSet("ignore.symbol.file"));
-                    task.addTaskListener(depsCollector);
-                    task.addTaskListener(pubApiCollector);
-                    task.addTaskListener(papVerifier);
-                    logJavacInvocation(args);
-                    rc = task.doCall();
-                    Log.debug("javac returned with code " + rc);
-                    sfm.flush();
+        Path hdrdir = options.getHeaderDir();
+        if (hdrdir != null && !createIfMissing(hdrdir))
+            return new CompilationResult(ERROR_FATAL);
+
+        // Load the prev build state database.
+        JavacState javac_state = JavacState.load(options, out, err);
+
+        // Setup the suffix rules from the command line.
+        Map<String, Transformer> suffixRules = new HashMap<>();
+
+        // Handling of .java-compilation
+        suffixRules.putAll(javac_state.getJavaSuffixRule());
+
+        // Handling of -copy and -tr
+        suffixRules.putAll(options.getTranslationRules());
+
+        // All found modules are put here.
+        Map<String,Module> modules = new HashMap<>();
+        // We start out in the legacy empty no-name module.
+        // As soon as we stumble on a module-info.java file we change to that module.
+        Module current_module = new Module("", "");
+        modules.put("", current_module);
+
+        // Find all sources, use the suffix rules to know which files are sources.
+        Map<String,Source> sources = new HashMap<>();
+
+        // Find the files, this will automatically populate the found modules
+        // with found packages where the sources are found!
+        findSourceFiles(options.getSources(),
+                        suffixRules.keySet(),
+                        sources,
+                        modules,
+                        current_module,
+                        options.isDefaultPackagePermitted(),
+                        false);
+
+        if (sources.isEmpty()) {
+            Log.error("Found nothing to compile!");
+            return new CompilationResult(CompilationResult.ERROR_FATAL,
+                                          new String(outBaos.toByteArray(), UTF_8),
+                                          new String(errBaos.toByteArray(), UTF_8));
+        }
+
+
+        // Create a map of all source files that are available for linking. Both -src and
+        // -sourcepath point to such files. It is possible to specify multiple
+        // -sourcepath options to enable different filtering rules. If the
+        // filters are the same for multiple sourcepaths, they may be concatenated
+        // using :(;). Before sending the list of sourcepaths to javac, they are
+        // all concatenated. The list created here is used by the SmartFileWrapper to
+        // make sure only the correct sources are actually available.
+        // We might find more modules here as well.
+        Map<String,Source> sources_to_link_to = new HashMap<>();
+
+        List<SourceLocation> sourceResolutionLocations = new ArrayList<>();
+        sourceResolutionLocations.addAll(options.getSources());
+        sourceResolutionLocations.addAll(options.getSourceSearchPaths());
+        findSourceFiles(sourceResolutionLocations,
+                        Collections.singleton(".java"),
+                        sources_to_link_to,
+                        modules,
+                        current_module,
+                        options.isDefaultPackagePermitted(),
+                        true);
+
+        // Add the set of sources to the build database.
+        javac_state.now().flattenPackagesSourcesAndArtifacts(modules);
+        javac_state.now().checkInternalState("checking sources", false, sources);
+        javac_state.now().checkInternalState("checking linked sources", true, sources_to_link_to);
+        javac_state.setVisibleSources(sources_to_link_to);
+
+        int round = 0;
+        printRound(round);
+
+        // If there is any change in the source files, taint packages
+        // and mark the database in need of saving.
+        javac_state.checkSourceStatus(false);
+
+        // Find all existing artifacts. Their timestamp will match the last modified timestamps stored
+        // in javac_state, simply because loading of the JavacState will clean out all artifacts
+        // that do not match the javac_state database.
+        javac_state.findAllArtifacts();
+
+        // Remove unidentified artifacts from the bin, gensrc and header dirs.
+        // (Unless we allow them to be there.)
+        // I.e. artifacts that are not known according to the build database (javac_state).
+        // For examples, files that have been manually copied into these dirs.
+        // Artifacts with bad timestamps (ie the on disk timestamp does not match the timestamp
+        // in javac_state) have already been removed when the javac_state was loaded.
+        if (!options.areUnidentifiedArtifactsPermitted()) {
+            javac_state.removeUnidentifiedArtifacts();
+        }
+        // Go through all sources and taint all packages that miss artifacts.
+        javac_state.taintPackagesThatMissArtifacts();
+
+        // Check recorded classpath public apis. Taint packages that depend on
+        // classpath classes whose public apis have changed.
+        javac_state.taintPackagesDependingOnChangedClasspathPackages();
+
+        // Now clean out all known artifacts belonging to tainted packages.
+        javac_state.deleteClassArtifactsInTaintedPackages();
+        // Copy files, for example property files, images files, xml files etc etc.
+        javac_state.performCopying(Util.pathToFile(options.getDestDir()), suffixRules);
+        // Translate files, for example compile properties or compile idls.
+        javac_state.performTranslation(Util.pathToFile(gensrc), suffixRules);
+        // Add any potentially generated java sources to the tobe compiled list.
+        // (Generated sources must always have a package.)
+        Map<String,Source> generated_sources = new HashMap<>();
+
+        try {
+
+            Source.scanRoot(Util.pathToFile(options.getGenSrcDir()), Util.set(".java"), null, null, null, null,
+                    generated_sources, modules, current_module, false, true, false);
+            javac_state.now().flattenPackagesSourcesAndArtifacts(modules);
+            // Recheck the the source files and their timestamps again.
+            javac_state.checkSourceStatus(true);
+
+            // Now do a safety check that the list of source files is identical
+            // to the list Make believes we are compiling. If we do not get this
+            // right, then incremental builds will fail with subtility.
+            // If any difference is detected, then we will fail hard here.
+            // This is an important safety net.
+            javac_state.compareWithMakefileList(Util.pathToFile(options.getSourceReferenceList()));
+
+            // Do the compilations, repeatedly until no tainted packages exist.
+            boolean again;
+            // Collect the name of all compiled packages.
+            Set<String> recently_compiled = new HashSet<>();
+            boolean[] rc = new boolean[1];
+
+            CompilationService compilationService = new CompilationService();
+            do {
+                if (round > 0)
+                    printRound(round);
+                // Clean out artifacts in tainted packages.
+                javac_state.deleteClassArtifactsInTaintedPackages();
+                again = javac_state.performJavaCompilations(compilationService, options, recently_compiled, rc);
+                if (!rc[0]) {
+                    Log.debug("Compilation failed.");
+                    break;
                 }
-            } catch (Exception e) {
-                Log.error(Util.getStackTrace(e));
-                stderrLog.append(Util.getStackTrace(e));
-                rc = com.sun.tools.javac.main.Main.Result.ERROR;
+                if (!again) {
+                    Log.debug("Nothing left to do.");
+                }
+                round++;
+            } while (again);
+            Log.debug("No need to do another round.");
+
+            // Only update the state if the compile went well.
+            if (rc[0]) {
+                javac_state.save();
+                // Reflatten only the artifacts.
+                javac_state.now().flattenArtifacts(modules);
+                // Remove artifacts that were generated during the last compile, but not this one.
+                javac_state.removeSuperfluousArtifacts(recently_compiled);
             }
 
-            compilationResult.packageArtifacts = sfm.getPackageArtifacts();
-
-            if (papVerifier.errorsDiscovered())
-                rc = com.sun.tools.javac.main.Main.Result.ERROR;
-
-            compilationResult.packageDependencies = depsCollector.getDependencies(false);
-            compilationResult.packageCpDependencies = depsCollector.getDependencies(true);
-
-            compilationResult.packagePubapis = pubApiCollector.getPubApis(true);     // pubApis.getPubapis(explicitJFOs, true);
-            compilationResult.dependencyPubapis = pubApiCollector.getPubApis(false); // pubApis.getPubapis(explicitJFOs, false);
-            compilationResult.stdout = stdoutLog.toString();
-            compilationResult.stderr = stderrLog.toString();
-            compilationResult.returnCode = rc.exitCode;
-
-            return compilationResult;
-        } catch (IOException e) {
-            throw new Error(e);
+            return new CompilationResult(rc[0] ? 0 : ERROR_FATAL,
+                                          new String(outBaos.toByteArray(), UTF_8),
+                                          new String(errBaos.toByteArray(), UTF_8));
+        } catch (ProblemException e) {
+            Log.error(e.getMessage());
+            return new CompilationResult(ERROR_FATAL,
+                                          new String(outBaos.toByteArray(), UTF_8),
+                                          new String(errBaos.toByteArray(), UTF_8));
+        } catch (Exception e) {
+            e.printStackTrace(err);
+            return new CompilationResult(ERROR_FATAL,
+                                          new String(outBaos.toByteArray(), UTF_8),
+                                          new String(errBaos.toByteArray(), UTF_8));
         }
     }
 
     @Override
     public void shutdown() {
         // Nothing to clean up
-        // ... maybe we should wait for any current request to finish?
     }
 
-    @Override
-    public String serverSettings() {
-        return "";
-    }
+    private static boolean validateOptions(Options options) {
 
-    private void logJavacInvocation(String[] args) {
-        Log.debug("Invoking javac with args");
-        Iterator<String> argIter = Arrays.asList(args).iterator();
-        while (argIter.hasNext()) {
-            String arg = argIter.next();
-            String line = "    " + arg;
-            if (arg.matches("\\-(d|cp|classpath|sourcepath|source|target)")
-                    && argIter.hasNext()) {
-                line += " " + argIter.next();
-            }
-            Log.debug(line);
+        String err = null;
+
+        if (options.getDestDir() == null) {
+            err = "Please specify output directory.";
+        } else if (options.isJavaFilesAmongJavacArgs()) {
+            err = "Sjavac does not handle explicit compilation of single .java files.";
+        } else if (options.getServerConf() == null) {
+            err = "No server configuration provided.";
+        } else if (!options.getImplicitPolicy().equals("none")) {
+            err = "The only allowed setting for sjavac is -implicit:none";
+        } else if (options.getSources().isEmpty()) {
+            err = "You have to specify -src.";
+        } else if (options.getTranslationRules().size() > 1
+                && options.getGenSrcDir() == null) {
+            err = "You have translators but no gensrc dir (-s) specified!";
         }
+
+        if (err != null)
+            Log.error(err);
+
+        return err == null;
+
+    }
+
+    private static boolean createIfMissing(Path dir) {
+
+        if (Files.isDirectory(dir))
+            return true;
+
+        if (Files.exists(dir)) {
+            Log.error(dir + " is not a directory.");
+            return false;
+        }
+
+        try {
+            Files.createDirectories(dir);
+        } catch (IOException e) {
+            Log.error("Could not create directory: " + e.getMessage());
+            return false;
+        }
+
+        return true;
+    }
+
+    /** Find source files in the given source locations. */
+    public static void findSourceFiles(List<SourceLocation> sourceLocations,
+                                       Set<String> sourceTypes,
+                                       Map<String,Source> foundFiles,
+                                       Map<String, Module> foundModules,
+                                       Module currentModule,
+                                       boolean permitSourcesInDefaultPackage,
+                                       boolean inLinksrc) {
+
+        for (SourceLocation source : sourceLocations) {
+            source.findSourceFiles(sourceTypes,
+                                   foundFiles,
+                                   foundModules,
+                                   currentModule,
+                                   permitSourcesInDefaultPackage,
+                                   inLinksrc);
+        }
+    }
+
+    private static void printRound(int round) {
+        Log.debug("****************************************");
+        Log.debug("* Round " + round + "                              *");
+        Log.debug("****************************************");
     }
 }
diff --git a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/server/CompilationResult.java b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/server/CompilationResult.java
index 88cfea9..5c2fcd8 100644
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/server/CompilationResult.java
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/server/CompilationResult.java
@@ -26,15 +26,8 @@
 package com.sun.tools.sjavac.server;
 
 import java.io.Serializable;
-import java.net.URI;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-
-import com.sun.tools.sjavac.pubapi.PubApi;
 
 /**
- *
  *  <p><b>This is NOT part of any supported API.
  *  If you write code that depends on this, you do so at your own risk.
  *  This code and its internal interfaces are subject to change or
@@ -47,17 +40,18 @@
     // Return code constants
     public final static int ERROR_FATAL = -1;
 
+    public String stdout;
+    public String stderr;
     public int returnCode;
-    public Map<String, Set<URI>> packageArtifacts = new HashMap<>();
-    public Map<String, Map<String, Set<String>>> packageDependencies = new HashMap<>();
-    public Map<String, Map<String, Set<String>>> packageCpDependencies = new HashMap<>();
-    public Map<String, PubApi> packagePubapis = new HashMap<>();
-    public Map<String, PubApi> dependencyPubapis = new HashMap<>();
-    public String stdout = "";
-    public String stderr = "";
 
     public CompilationResult(int returnCode) {
+        this(returnCode, "", "");
+    }
+
+    public CompilationResult(int returnCode, String stdout, String stderr) {
         this.returnCode = returnCode;
+        this.stdout = stdout;
+        this.stderr = stderr;
     }
 
     public void setReturnCode(int returnCode) {
diff --git a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/server/CompilationSubResult.java b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/server/CompilationSubResult.java
new file mode 100644
index 0000000..1b96379
--- /dev/null
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/server/CompilationSubResult.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2014, 2015, Oracle and/or its affiliates. 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.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.tools.sjavac.server;
+
+import java.io.Serializable;
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+import com.sun.tools.sjavac.pubapi.PubApi;
+
+/**
+ *
+ *  <p><b>This is NOT part of any supported API.
+ *  If you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class CompilationSubResult implements Serializable {
+
+    static final long serialVersionUID = 46739181113L;
+
+    // Return code constants
+    public final static int ERROR_FATAL = -1;
+
+    public int returnCode;
+    public Map<String, Set<URI>> packageArtifacts = new HashMap<>();
+    public Map<String, Map<String, Set<String>>> packageDependencies = new HashMap<>();
+    public Map<String, Map<String, Set<String>>> packageCpDependencies = new HashMap<>();
+    public Map<String, PubApi> packagePubapis = new HashMap<>();
+    public Map<String, PubApi> dependencyPubapis = new HashMap<>();
+    public String stdout = "";
+    public String stderr = "";
+
+    public CompilationSubResult(int returnCode) {
+        this.returnCode = returnCode;
+    }
+
+    public void setReturnCode(int returnCode) {
+        this.returnCode = returnCode;
+    }
+}
diff --git a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/server/IdleResetSjavac.java b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/server/IdleResetSjavac.java
index 30435f4..e271398 100644
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/server/IdleResetSjavac.java
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/server/IdleResetSjavac.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2015, Oracle and/or its affiliates. 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
@@ -24,10 +24,6 @@
  */
 package com.sun.tools.sjavac.server;
 
-import java.io.File;
-import java.net.URI;
-import java.util.List;
-import java.util.Set;
 import java.util.Timer;
 import java.util.TimerTask;
 
@@ -64,30 +60,10 @@
     }
 
     @Override
-    public SysInfo getSysInfo() {
+    public CompilationResult compile(String[] args) {
         startCall();
         try {
-            return delegate.getSysInfo();
-        } finally {
-            endCall();
-        }
-    }
-
-    @Override
-    public CompilationResult compile(String protocolId,
-                                     String invocationId,
-                                     String[] args,
-                                     List<File> explicitSources,
-                                     Set<URI> sourcesToCompile,
-                                     Set<URI> visibleSources) {
-        startCall();
-        try {
-            return delegate.compile(protocolId,
-                                    invocationId,
-                                    args,
-                                    explicitSources,
-                                    sourcesToCompile,
-                                    visibleSources);
+            return delegate.compile(args);
         } finally {
             endCall();
         }
@@ -129,8 +105,4 @@
         delegate.shutdown();
     }
 
-    @Override
-    public String serverSettings() {
-        return delegate.serverSettings();
-    }
 }
diff --git a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/server/PortFile.java b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/server/PortFile.java
index a0806ce..3d5f195 100644
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/server/PortFile.java
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/server/PortFile.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2015, Oracle and/or its affiliates. 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
@@ -37,6 +37,7 @@
 
 import com.sun.tools.javac.util.Assert;
 import com.sun.tools.sjavac.Log;
+import com.sun.tools.sjavac.client.PortFileInaccessibleException;
 
 /**
  * The PortFile class mediates access to a short binary file containing the tcp/ip port (for the localhost)
@@ -80,11 +81,16 @@
      * Create a new portfile.
      * @param fn is the path to the file.
      */
-    public PortFile(String fn) throws FileNotFoundException {
+    public PortFile(String fn) throws PortFileInaccessibleException {
         filename = fn;
         file = new File(filename);
         stopFile = new File(filename+".stop");
-        rwfile = new RandomAccessFile(file, "rw");
+        try {
+            rwfile = new RandomAccessFile(file, "rw");
+        } catch (FileNotFoundException e) {
+            // Reached if file for instance already exists and is a directory
+            throw new PortFileInaccessibleException(e);
+        }
         // The rwfile should only be readable by the owner of the process
         // and no other! How do we do that on a RandomAccessFile?
         channel = rwfile.getChannel();
diff --git a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/server/RequestHandler.java b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/server/RequestHandler.java
index 8329f03..2f3a2c7 100644
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/server/RequestHandler.java
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/server/RequestHandler.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2015, Oracle and/or its affiliates. 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
@@ -24,16 +24,12 @@
  */
 package com.sun.tools.sjavac.server;
 
-import java.io.File;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.net.Socket;
-import java.net.URI;
-import java.util.List;
-import java.util.Set;
 
 import com.sun.tools.sjavac.Log;
 
@@ -71,8 +67,7 @@
             String cmd = (String) oin.readObject();
             Log.info("Handling request, id: " + id + " cmd: " + cmd);
             switch (cmd) {
-            case SjavacServer.CMD_SYS_INFO: handleSysInfoRequest(oin, oout); break;
-            case SjavacServer.CMD_COMPILE:  handleCompileRequest(oin, oout); break;
+            case SjavacServer.CMD_COMPILE: handleCompileRequest(oin, oout); break;
             default: Log.error("Unknown command: " + cmd);
             }
         } catch (Exception ex) {
@@ -85,31 +80,15 @@
         }
     }
 
-    private void handleSysInfoRequest(ObjectInputStream oin,
-                                      ObjectOutputStream oout) throws IOException {
-        oout.writeObject(sjavac.getSysInfo());
-        oout.flush();
-    }
-
-    @SuppressWarnings("unchecked")
     private void handleCompileRequest(ObjectInputStream oin,
                                       ObjectOutputStream oout) throws IOException {
         try {
             // Read request arguments
-            String protocolId = (String) oin.readObject();
-            String invocationId = (String) oin.readObject();
             String[] args = (String[]) oin.readObject();
-            List<File> explicitSources = (List<File>) oin.readObject();
-            Set<URI> sourcesToCompile = (Set<URI>) oin.readObject();
-            Set<URI> visibleSources = (Set<URI>) oin.readObject();
 
             // Perform compilation
-            CompilationResult cr = sjavac.compile(protocolId,
-                                                  invocationId,
-                                                  args,
-                                                  explicitSources,
-                                                  sourcesToCompile,
-                                                  visibleSources);
+            CompilationResult cr = sjavac.compile(args);
+
             // Write request response
             oout.writeObject(cr);
             oout.flush();
diff --git a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/server/Sjavac.java b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/server/Sjavac.java
index 7827f05..fe45310 100644
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/server/Sjavac.java
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/server/Sjavac.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2015, Oracle and/or its affiliates. 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
@@ -24,10 +24,6 @@
  */
 package com.sun.tools.sjavac.server;
 
-import java.io.File;
-import java.net.URI;
-import java.util.List;
-import java.util.Set;
 
 /**
  * Interface of the SjavacImpl, the sjavac client and all wrappers such as
@@ -39,16 +35,6 @@
  *  deletion without notice.</b>
  */
 public interface Sjavac {
-
-    SysInfo getSysInfo();
-
-    CompilationResult compile(String protocolId,
-                              String invocationId,
-                              String[] args,
-                              List<File> explicitSources,
-                              Set<URI> sourcesToCompile,
-                              Set<URI> visibleSources);
-
+    CompilationResult compile(String[] args);
     void shutdown();
-    String serverSettings();
 }
diff --git a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/server/SjavacServer.java b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/server/SjavacServer.java
index 6d7d473..66bf1ec 100644
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/server/SjavacServer.java
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/server/SjavacServer.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, Oracle and/or its affiliates. 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
@@ -39,6 +39,7 @@
 import java.util.concurrent.atomic.AtomicBoolean;
 
 import com.sun.tools.sjavac.Util;
+import com.sun.tools.sjavac.client.PortFileInaccessibleException;
 import com.sun.tools.sjavac.comp.PooledSjavac;
 import com.sun.tools.sjavac.comp.SjavacImpl;
 
@@ -54,7 +55,6 @@
 
     // Used in protocol to indicate which method to invoke
     public final static String CMD_COMPILE = "compile";
-    public final static String CMD_SYS_INFO = "sys-info";
 
     final private String portfilename;
     final private String logfile;
@@ -122,7 +122,7 @@
     /**
      * Acquire the port file. Synchronized since several threads inside an smart javac wrapper client acquires the same port file at the same time.
      */
-    public static synchronized PortFile getPortFile(String filename) throws FileNotFoundException {
+    public static synchronized PortFile getPortFile(String filename) throws PortFileInaccessibleException {
         if (allPortFiles == null) {
             allPortFiles = new HashMap<>();
         }
diff --git a/langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/TestHtmlDefinitionListTag.java b/langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/TestHtmlDefinitionListTag.java
index 27be6a7..6a1f316 100644
--- a/langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/TestHtmlDefinitionListTag.java
+++ b/langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/TestHtmlDefinitionListTag.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/pkg1/C1.java b/langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/pkg1/C1.java
index e4febd6..60110da 100644
--- a/langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/pkg1/C1.java
+++ b/langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/pkg1/C1.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/pkg1/C2.java b/langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/pkg1/C2.java
index d44f05a..0b67bae 100644
--- a/langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/pkg1/C2.java
+++ b/langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/pkg1/C2.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/pkg1/C3.java b/langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/pkg1/C3.java
index 9bef559..1ccc2f2 100644
--- a/langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/pkg1/C3.java
+++ b/langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/pkg1/C3.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/pkg1/C4.java b/langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/pkg1/C4.java
index 301ed55..fea124d 100644
--- a/langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/pkg1/C4.java
+++ b/langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/pkg1/C4.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/pkg1/C5.java b/langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/pkg1/C5.java
index 27fcb2c..5b5e4bc 100644
--- a/langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/pkg1/C5.java
+++ b/langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/pkg1/C5.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testHtmlDocument/TestHtmlDocument.java b/langtools/test/com/sun/javadoc/testHtmlDocument/TestHtmlDocument.java
index 8908770..1f4182c 100644
--- a/langtools/test/com/sun/javadoc/testHtmlDocument/TestHtmlDocument.java
+++ b/langtools/test/com/sun/javadoc/testHtmlDocument/TestHtmlDocument.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testHtmlStrongTag/TestHtmlStrongTag.java b/langtools/test/com/sun/javadoc/testHtmlStrongTag/TestHtmlStrongTag.java
index b31ce25..cf0db1e 100644
--- a/langtools/test/com/sun/javadoc/testHtmlStrongTag/TestHtmlStrongTag.java
+++ b/langtools/test/com/sun/javadoc/testHtmlStrongTag/TestHtmlStrongTag.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testHtmlStrongTag/pkg1/C1.java b/langtools/test/com/sun/javadoc/testHtmlStrongTag/pkg1/C1.java
index 1793bac..1249434 100644
--- a/langtools/test/com/sun/javadoc/testHtmlStrongTag/pkg1/C1.java
+++ b/langtools/test/com/sun/javadoc/testHtmlStrongTag/pkg1/C1.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testHtmlStrongTag/pkg2/C2.java b/langtools/test/com/sun/javadoc/testHtmlStrongTag/pkg2/C2.java
index 143fadd..94db0e4 100644
--- a/langtools/test/com/sun/javadoc/testHtmlStrongTag/pkg2/C2.java
+++ b/langtools/test/com/sun/javadoc/testHtmlStrongTag/pkg2/C2.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testHtmlTableTags/pkg2/C3.java b/langtools/test/com/sun/javadoc/testHtmlTableTags/pkg2/C3.java
index 18da4d0..f2c6177 100644
--- a/langtools/test/com/sun/javadoc/testHtmlTableTags/pkg2/C3.java
+++ b/langtools/test/com/sun/javadoc/testHtmlTableTags/pkg2/C3.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testHtmlTableTags/pkg2/C4.java b/langtools/test/com/sun/javadoc/testHtmlTableTags/pkg2/C4.java
index adf5986..990b437 100644
--- a/langtools/test/com/sun/javadoc/testHtmlTableTags/pkg2/C4.java
+++ b/langtools/test/com/sun/javadoc/testHtmlTableTags/pkg2/C4.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testHtmlTag/TestHtmlTag.java b/langtools/test/com/sun/javadoc/testHtmlTag/TestHtmlTag.java
index feae596..aa6527f 100644
--- a/langtools/test/com/sun/javadoc/testHtmlTag/TestHtmlTag.java
+++ b/langtools/test/com/sun/javadoc/testHtmlTag/TestHtmlTag.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testHtmlTag/pkg1/C1.java b/langtools/test/com/sun/javadoc/testHtmlTag/pkg1/C1.java
index 5354f59..2bf453e 100644
--- a/langtools/test/com/sun/javadoc/testHtmlTag/pkg1/C1.java
+++ b/langtools/test/com/sun/javadoc/testHtmlTag/pkg1/C1.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testHtmlTag/pkg2/C2.java b/langtools/test/com/sun/javadoc/testHtmlTag/pkg2/C2.java
index 8d4798f..56cf262 100644
--- a/langtools/test/com/sun/javadoc/testHtmlTag/pkg2/C2.java
+++ b/langtools/test/com/sun/javadoc/testHtmlTag/pkg2/C2.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testHtmlVersion/pkg/TestError.java b/langtools/test/com/sun/javadoc/testHtmlVersion/pkg/TestError.java
index 1023c59..6c83964 100644
--- a/langtools/test/com/sun/javadoc/testHtmlVersion/pkg/TestError.java
+++ b/langtools/test/com/sun/javadoc/testHtmlVersion/pkg/TestError.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testHtmlVersion/pkg/TestException.java b/langtools/test/com/sun/javadoc/testHtmlVersion/pkg/TestException.java
index 0da091f..43b5479 100644
--- a/langtools/test/com/sun/javadoc/testHtmlVersion/pkg/TestException.java
+++ b/langtools/test/com/sun/javadoc/testHtmlVersion/pkg/TestException.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testHtmlVersion/pkg1/NestedInnerClass.java b/langtools/test/com/sun/javadoc/testHtmlVersion/pkg1/NestedInnerClass.java
index 82d5812..fd1dcc5 100644
--- a/langtools/test/com/sun/javadoc/testHtmlVersion/pkg1/NestedInnerClass.java
+++ b/langtools/test/com/sun/javadoc/testHtmlVersion/pkg1/NestedInnerClass.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testHtmlVersion/pkg1/PrivateIncludeInnerClass.java b/langtools/test/com/sun/javadoc/testHtmlVersion/pkg1/PrivateIncludeInnerClass.java
index 38cb2bbf..c90d519 100644
--- a/langtools/test/com/sun/javadoc/testHtmlVersion/pkg1/PrivateIncludeInnerClass.java
+++ b/langtools/test/com/sun/javadoc/testHtmlVersion/pkg1/PrivateIncludeInnerClass.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testHtmlVersion/pkg1/ProtectedInnerClass.java b/langtools/test/com/sun/javadoc/testHtmlVersion/pkg1/ProtectedInnerClass.java
index cbdf5c1..0488e6c 100644
--- a/langtools/test/com/sun/javadoc/testHtmlVersion/pkg1/ProtectedInnerClass.java
+++ b/langtools/test/com/sun/javadoc/testHtmlVersion/pkg1/ProtectedInnerClass.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testHtmlVersion/pkg1/PublicExcludeInnerClass.java b/langtools/test/com/sun/javadoc/testHtmlVersion/pkg1/PublicExcludeInnerClass.java
index b1ce2fe..c888a1f 100644
--- a/langtools/test/com/sun/javadoc/testHtmlVersion/pkg1/PublicExcludeInnerClass.java
+++ b/langtools/test/com/sun/javadoc/testHtmlVersion/pkg1/PublicExcludeInnerClass.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testProfiles/pkg2/Anno1Pkg2.java b/langtools/test/com/sun/javadoc/testProfiles/pkg2/Anno1Pkg2.java
index 9ef89fc..54fd75f 100644
--- a/langtools/test/com/sun/javadoc/testProfiles/pkg2/Anno1Pkg2.java
+++ b/langtools/test/com/sun/javadoc/testProfiles/pkg2/Anno1Pkg2.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testProfiles/pkg2/Anno2Pkg2.java b/langtools/test/com/sun/javadoc/testProfiles/pkg2/Anno2Pkg2.java
index 204fbc4..87e657d 100644
--- a/langtools/test/com/sun/javadoc/testProfiles/pkg2/Anno2Pkg2.java
+++ b/langtools/test/com/sun/javadoc/testProfiles/pkg2/Anno2Pkg2.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testProfiles/pkg4/Anno1Pkg4.java b/langtools/test/com/sun/javadoc/testProfiles/pkg4/Anno1Pkg4.java
index f9816d3..9332690 100644
--- a/langtools/test/com/sun/javadoc/testProfiles/pkg4/Anno1Pkg4.java
+++ b/langtools/test/com/sun/javadoc/testProfiles/pkg4/Anno1Pkg4.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testSerializedForm/pkg1/NestedInnerClass.java b/langtools/test/com/sun/javadoc/testSerializedForm/pkg1/NestedInnerClass.java
index 2b7e291..cd43869 100644
--- a/langtools/test/com/sun/javadoc/testSerializedForm/pkg1/NestedInnerClass.java
+++ b/langtools/test/com/sun/javadoc/testSerializedForm/pkg1/NestedInnerClass.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testSerializedForm/pkg1/PrivateIncludeInnerClass.java b/langtools/test/com/sun/javadoc/testSerializedForm/pkg1/PrivateIncludeInnerClass.java
index e81ba18..a4156e9 100644
--- a/langtools/test/com/sun/javadoc/testSerializedForm/pkg1/PrivateIncludeInnerClass.java
+++ b/langtools/test/com/sun/javadoc/testSerializedForm/pkg1/PrivateIncludeInnerClass.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testSerializedForm/pkg1/ProtectedInnerClass.java b/langtools/test/com/sun/javadoc/testSerializedForm/pkg1/ProtectedInnerClass.java
index 8eee8e1..5177765 100644
--- a/langtools/test/com/sun/javadoc/testSerializedForm/pkg1/ProtectedInnerClass.java
+++ b/langtools/test/com/sun/javadoc/testSerializedForm/pkg1/ProtectedInnerClass.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testSerializedForm/pkg1/PublicExcludeInnerClass.java b/langtools/test/com/sun/javadoc/testSerializedForm/pkg1/PublicExcludeInnerClass.java
index 0c11060..76b6926 100644
--- a/langtools/test/com/sun/javadoc/testSerializedForm/pkg1/PublicExcludeInnerClass.java
+++ b/langtools/test/com/sun/javadoc/testSerializedForm/pkg1/PublicExcludeInnerClass.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testSerializedFormDeprecationInfo/TestSerializedFormDeprecationInfo.java b/langtools/test/com/sun/javadoc/testSerializedFormDeprecationInfo/TestSerializedFormDeprecationInfo.java
index 36d2d35..3e3d173 100644
--- a/langtools/test/com/sun/javadoc/testSerializedFormDeprecationInfo/TestSerializedFormDeprecationInfo.java
+++ b/langtools/test/com/sun/javadoc/testSerializedFormDeprecationInfo/TestSerializedFormDeprecationInfo.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testSerializedFormDeprecationInfo/pkg1/C1.java b/langtools/test/com/sun/javadoc/testSerializedFormDeprecationInfo/pkg1/C1.java
index e4febd6..60110da 100644
--- a/langtools/test/com/sun/javadoc/testSerializedFormDeprecationInfo/pkg1/C1.java
+++ b/langtools/test/com/sun/javadoc/testSerializedFormDeprecationInfo/pkg1/C1.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testSerializedFormDeprecationInfo/pkg1/C2.java b/langtools/test/com/sun/javadoc/testSerializedFormDeprecationInfo/pkg1/C2.java
index d44f05a..0b67bae 100644
--- a/langtools/test/com/sun/javadoc/testSerializedFormDeprecationInfo/pkg1/C2.java
+++ b/langtools/test/com/sun/javadoc/testSerializedFormDeprecationInfo/pkg1/C2.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testSerializedFormDeprecationInfo/pkg1/C3.java b/langtools/test/com/sun/javadoc/testSerializedFormDeprecationInfo/pkg1/C3.java
index b57bc5b..af9fe3c 100644
--- a/langtools/test/com/sun/javadoc/testSerializedFormDeprecationInfo/pkg1/C3.java
+++ b/langtools/test/com/sun/javadoc/testSerializedFormDeprecationInfo/pkg1/C3.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testSinceTag/pkg1/C1.java b/langtools/test/com/sun/javadoc/testSinceTag/pkg1/C1.java
index 4fe46e5..dff7294 100644
--- a/langtools/test/com/sun/javadoc/testSinceTag/pkg1/C1.java
+++ b/langtools/test/com/sun/javadoc/testSinceTag/pkg1/C1.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/com/sun/javadoc/testTagOutput/TestTagOutput.java b/langtools/test/com/sun/javadoc/testTagOutput/TestTagOutput.java
index 0281200..9c33514 100644
--- a/langtools/test/com/sun/javadoc/testTagOutput/TestTagOutput.java
+++ b/langtools/test/com/sun/javadoc/testTagOutput/TestTagOutput.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/6668794/badClass/A.java b/langtools/test/tools/javac/6668794/badClass/A.java
index 13ec54b..25fedff 100644
--- a/langtools/test/tools/javac/6668794/badClass/A.java
+++ b/langtools/test/tools/javac/6668794/badClass/A.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/6668794/badClass/Test.java b/langtools/test/tools/javac/6668794/badClass/Test.java
index 5fceea5..5edeb85 100644
--- a/langtools/test/tools/javac/6668794/badClass/Test.java
+++ b/langtools/test/tools/javac/6668794/badClass/Test.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/6668794/badSource/p/A.java b/langtools/test/tools/javac/6668794/badSource/p/A.java
index 13ec54b..25fedff 100644
--- a/langtools/test/tools/javac/6668794/badSource/p/A.java
+++ b/langtools/test/tools/javac/6668794/badSource/p/A.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/7129225/Anno.java b/langtools/test/tools/javac/7129225/Anno.java
index 7671829..cdf53b7 100644
--- a/langtools/test/tools/javac/7129225/Anno.java
+++ b/langtools/test/tools/javac/7129225/Anno.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/7129225/AnnoProcessor.java b/langtools/test/tools/javac/7129225/AnnoProcessor.java
index 949c6ce..50944a3 100644
--- a/langtools/test/tools/javac/7129225/AnnoProcessor.java
+++ b/langtools/test/tools/javac/7129225/AnnoProcessor.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/7153958/CPoolRefClassContainingInlinedCts.java b/langtools/test/tools/javac/7153958/CPoolRefClassContainingInlinedCts.java
index 89994f0..5489909 100644
--- a/langtools/test/tools/javac/7153958/CPoolRefClassContainingInlinedCts.java
+++ b/langtools/test/tools/javac/7153958/CPoolRefClassContainingInlinedCts.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/7153958/pkg/ClassToBeStaticallyImportedA.java b/langtools/test/tools/javac/7153958/pkg/ClassToBeStaticallyImportedA.java
index b8fb39f..1a92fcf 100644
--- a/langtools/test/tools/javac/7153958/pkg/ClassToBeStaticallyImportedA.java
+++ b/langtools/test/tools/javac/7153958/pkg/ClassToBeStaticallyImportedA.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/7153958/pkg/ClassToBeStaticallyImportedB.java b/langtools/test/tools/javac/7153958/pkg/ClassToBeStaticallyImportedB.java
index d05c6fb..b3ceaf7 100644
--- a/langtools/test/tools/javac/7153958/pkg/ClassToBeStaticallyImportedB.java
+++ b/langtools/test/tools/javac/7153958/pkg/ClassToBeStaticallyImportedB.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/7166455/CheckACC_STRICTFlagOnclinitTest.java b/langtools/test/tools/javac/7166455/CheckACC_STRICTFlagOnclinitTest.java
index 770b587..8eb455e 100644
--- a/langtools/test/tools/javac/7166455/CheckACC_STRICTFlagOnclinitTest.java
+++ b/langtools/test/tools/javac/7166455/CheckACC_STRICTFlagOnclinitTest.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/8005931/CheckACC_STRICTFlagOnPkgAccessClassTest.java b/langtools/test/tools/javac/8005931/CheckACC_STRICTFlagOnPkgAccessClassTest.java
index f4a9dfe..8b2053c 100644
--- a/langtools/test/tools/javac/8005931/CheckACC_STRICTFlagOnPkgAccessClassTest.java
+++ b/langtools/test/tools/javac/8005931/CheckACC_STRICTFlagOnPkgAccessClassTest.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/8074306/TestSyntheticNullChecks.java b/langtools/test/tools/javac/8074306/TestSyntheticNullChecks.java
index 823740f..9ba6ebf 100644
--- a/langtools/test/tools/javac/8074306/TestSyntheticNullChecks.java
+++ b/langtools/test/tools/javac/8074306/TestSyntheticNullChecks.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/T6668802.java b/langtools/test/tools/javac/T6668802.java
index 1549728..05e7a58 100644
--- a/langtools/test/tools/javac/T6668802.java
+++ b/langtools/test/tools/javac/T6668802.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/T7165659/InnerClassAttrMustNotHaveStrictFPFlagTest.java b/langtools/test/tools/javac/T7165659/InnerClassAttrMustNotHaveStrictFPFlagTest.java
index c8aae4b..d31c7e1 100644
--- a/langtools/test/tools/javac/T7165659/InnerClassAttrMustNotHaveStrictFPFlagTest.java
+++ b/langtools/test/tools/javac/T7165659/InnerClassAttrMustNotHaveStrictFPFlagTest.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/T8003967/DetectMutableStaticFields.java b/langtools/test/tools/javac/T8003967/DetectMutableStaticFields.java
index b1abda1..fb5fa80 100644
--- a/langtools/test/tools/javac/T8003967/DetectMutableStaticFields.java
+++ b/langtools/test/tools/javac/T8003967/DetectMutableStaticFields.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/T8009640/CheckRejectProfileBCPOptionsIfUsedTogetherTest.java b/langtools/test/tools/javac/T8009640/CheckRejectProfileBCPOptionsIfUsedTogetherTest.java
index edbfd6a..83fa742 100644
--- a/langtools/test/tools/javac/T8009640/CheckRejectProfileBCPOptionsIfUsedTogetherTest.java
+++ b/langtools/test/tools/javac/T8009640/CheckRejectProfileBCPOptionsIfUsedTogetherTest.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/T8010659/CompilerCrashWhenMixingBinariesAndSourcesTest.java b/langtools/test/tools/javac/T8010659/CompilerCrashWhenMixingBinariesAndSourcesTest.java
index ac0d44e..2f5fa54 100644
--- a/langtools/test/tools/javac/T8010659/CompilerCrashWhenMixingBinariesAndSourcesTest.java
+++ b/langtools/test/tools/javac/T8010659/CompilerCrashWhenMixingBinariesAndSourcesTest.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/T8011181/EmptyUTF8ForInnerClassNameTest.java b/langtools/test/tools/javac/T8011181/EmptyUTF8ForInnerClassNameTest.java
index 82f9756..014e655 100644
--- a/langtools/test/tools/javac/T8011181/EmptyUTF8ForInnerClassNameTest.java
+++ b/langtools/test/tools/javac/T8011181/EmptyUTF8ForInnerClassNameTest.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/T8013394/CompileErrorWithIteratorTest.java b/langtools/test/tools/javac/T8013394/CompileErrorWithIteratorTest.java
index 6ce7370..8f796fc 100644
--- a/langtools/test/tools/javac/T8013394/CompileErrorWithIteratorTest.java
+++ b/langtools/test/tools/javac/T8013394/CompileErrorWithIteratorTest.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/T8019486/WrongLNTForLambdaTest.java b/langtools/test/tools/javac/T8019486/WrongLNTForLambdaTest.java
index d034274..2d99fdc 100644
--- a/langtools/test/tools/javac/T8019486/WrongLNTForLambdaTest.java
+++ b/langtools/test/tools/javac/T8019486/WrongLNTForLambdaTest.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/T8022186/DeadCodeGeneratedForEmptyTryTest.java b/langtools/test/tools/javac/T8022186/DeadCodeGeneratedForEmptyTryTest.java
index b8f4c91..a35def7 100644
--- a/langtools/test/tools/javac/T8022186/DeadCodeGeneratedForEmptyTryTest.java
+++ b/langtools/test/tools/javac/T8022186/DeadCodeGeneratedForEmptyTryTest.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/T8022316/CompilerErrorGenericThrowPlusMethodRefTest.java b/langtools/test/tools/javac/T8022316/CompilerErrorGenericThrowPlusMethodRefTest.java
index f7d0391..2c3bc8a 100644
--- a/langtools/test/tools/javac/T8022316/CompilerErrorGenericThrowPlusMethodRefTest.java
+++ b/langtools/test/tools/javac/T8022316/CompilerErrorGenericThrowPlusMethodRefTest.java
@@ -1,30 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
+ * @test /nodynamiccopyright/
  * @bug 8022316
  * @summary Generic throws, overriding and method reference
  * @compile/fail/ref=CompilerErrorGenericThrowPlusMethodRefTest.out -XDrawDiagnostics CompilerErrorGenericThrowPlusMethodRefTest.java
diff --git a/langtools/test/tools/javac/T8022316/CompilerErrorGenericThrowPlusMethodRefTest.out b/langtools/test/tools/javac/T8022316/CompilerErrorGenericThrowPlusMethodRefTest.out
index 58015ae..c365409 100644
--- a/langtools/test/tools/javac/T8022316/CompilerErrorGenericThrowPlusMethodRefTest.out
+++ b/langtools/test/tools/javac/T8022316/CompilerErrorGenericThrowPlusMethodRefTest.out
@@ -1,2 +1,2 @@
-CompilerErrorGenericThrowPlusMethodRefTest.java:55:26: compiler.err.unreported.exception.need.to.catch.or.throw: java.lang.Exception
+CompilerErrorGenericThrowPlusMethodRefTest.java:30:26: compiler.err.unreported.exception.need.to.catch.or.throw: java.lang.Exception
 1 error
diff --git a/langtools/test/tools/javac/T8023112/SkipLazyConstantCreationForMethodRefTest.java b/langtools/test/tools/javac/T8023112/SkipLazyConstantCreationForMethodRefTest.java
index e0c530c..1eb824b 100644
--- a/langtools/test/tools/javac/T8023112/SkipLazyConstantCreationForMethodRefTest.java
+++ b/langtools/test/tools/javac/T8023112/SkipLazyConstantCreationForMethodRefTest.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/T8024039/NoDeadCodeGenerationOnTrySmtTest.java b/langtools/test/tools/javac/T8024039/NoDeadCodeGenerationOnTrySmtTest.java
index 2253407..b51d276 100644
--- a/langtools/test/tools/javac/T8024039/NoDeadCodeGenerationOnTrySmtTest.java
+++ b/langtools/test/tools/javac/T8024039/NoDeadCodeGenerationOnTrySmtTest.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/T8024398/NPETryTest.java b/langtools/test/tools/javac/T8024398/NPETryTest.java
index 7d5b11f..d5acd2f 100644
--- a/langtools/test/tools/javac/T8024398/NPETryTest.java
+++ b/langtools/test/tools/javac/T8024398/NPETryTest.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/T8024437/ExceptionInferenceFromClassFileTest.java b/langtools/test/tools/javac/T8024437/ExceptionInferenceFromClassFileTest.java
index 2d76a70..c4355fc 100644
--- a/langtools/test/tools/javac/T8024437/ExceptionInferenceFromClassFileTest.java
+++ b/langtools/test/tools/javac/T8024437/ExceptionInferenceFromClassFileTest.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/TestBootstrapMethodsCount.java b/langtools/test/tools/javac/TestBootstrapMethodsCount.java
new file mode 100644
index 0000000..3d5b043
--- /dev/null
+++ b/langtools/test/tools/javac/TestBootstrapMethodsCount.java
@@ -0,0 +1,236 @@
+/*
+ * Copyright (c) 2012, 2015, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8129547
+ * @summary Excess entries in BootstrapMethods with the same (bsm, bsmKind, bsmStaticArgs), but different dynamicArgs
+ * @library lib
+ * @modules jdk.jdeps/com.sun.tools.classfile
+ *          jdk.compiler/com.sun.tools.javac.api
+ *          jdk.compiler/com.sun.tools.javac.code
+ *          jdk.compiler/com.sun.tools.javac.jvm
+ *          jdk.compiler/com.sun.tools.javac.tree
+ *          jdk.compiler/com.sun.tools.javac.util
+ * @build JavacTestingAbstractThreadedTest
+ * @run main/othervm TestBootstrapMethodsCount
+ */
+
+import java.io.File;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Locale;
+
+import javax.tools.Diagnostic;
+import javax.tools.JavaFileObject;
+import javax.tools.SimpleJavaFileObject;
+
+import com.sun.source.tree.MethodInvocationTree;
+import com.sun.source.tree.MethodTree;
+import com.sun.source.util.TaskEvent;
+import com.sun.source.util.TaskListener;
+import com.sun.source.util.TreeScanner;
+
+import com.sun.tools.classfile.Attribute;
+import com.sun.tools.classfile.BootstrapMethods_attribute;
+import com.sun.tools.classfile.ClassFile;
+
+import com.sun.tools.javac.api.JavacTaskImpl;
+import com.sun.tools.javac.code.Symbol;
+import com.sun.tools.javac.code.Symbol.MethodSymbol;
+import com.sun.tools.javac.code.Symtab;
+import com.sun.tools.javac.code.Types;
+import com.sun.tools.javac.tree.JCTree.JCMethodInvocation;
+import com.sun.tools.javac.tree.JCTree.JCMethodDecl;
+import com.sun.tools.javac.tree.JCTree.JCIdent;
+import com.sun.tools.javac.util.Context;
+import com.sun.tools.javac.util.Names;
+
+import static com.sun.tools.javac.jvm.ClassFile.*;
+
+public class TestBootstrapMethodsCount
+        extends JavacTestingAbstractThreadedTest
+        implements Runnable {
+
+
+    public static void main(String... args) throws Exception {
+        pool.execute(new TestBootstrapMethodsCount());
+        checkAfterExec();
+    }
+
+    DiagChecker dc;
+
+    TestBootstrapMethodsCount() {
+        dc = new DiagChecker();
+    }
+
+    public void run() {
+        int id = checkCount.incrementAndGet();
+        JavaSource source = new JavaSource(id);
+        JavacTaskImpl ct = (JavacTaskImpl)comp.getTask(null, fm.get(), dc,
+                Arrays.asList("-g"), null, Arrays.asList(source));
+        Context context = ct.getContext();
+        Symtab syms = Symtab.instance(context);
+        Names names = Names.instance(context);
+        Types types = Types.instance(context);
+        ct.addTaskListener(new Indifier(syms, names, types));
+        try {
+            ct.generate();
+        } catch (Throwable t) {
+            t.printStackTrace();
+            throw new AssertionError(
+                    String.format("Error thrown when compiling following code\n%s",
+                            source.source));
+        }
+        if (dc.diagFound) {
+            throw new AssertionError(
+                    String.format("Diags found when compiling following code\n%s\n\n%s",
+                            source.source, dc.printDiags()));
+        }
+        verifyBytecode(id);
+    }
+
+    void verifyBytecode(int id) {
+        File compiledTest = new File(String.format("Test%d.class", id));
+        try {
+            ClassFile cf = ClassFile.read(compiledTest);
+            BootstrapMethods_attribute bsm_attr =
+                    (BootstrapMethods_attribute)cf
+                            .getAttribute(Attribute.BootstrapMethods);
+            int length = bsm_attr.bootstrap_method_specifiers.length;
+            if (length != 1) {
+                throw new Error("Bad number of method specifiers " +
+                        "in BootstrapMethods attribute: " + length);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new Error("error reading " + compiledTest +": " + e);
+        }
+    }
+
+    class JavaSource extends SimpleJavaFileObject {
+
+        static final String source_template = "import java.lang.invoke.*;\n" +
+                "class Bootstrap {\n" +
+                "   public static CallSite bsm(MethodHandles.Lookup lookup, " +
+                "String name, MethodType methodType) {\n" +
+                "       return null;\n" +
+                "   }\n" +
+                "}\n" +
+                "class Test#ID {\n" +
+                "   void m1() { }\n" +
+                "   void m2(Object arg1) { }\n" +
+                "   void test1() {\n" +
+                "      Object o = this; // marker statement \n" +
+                "      m1();\n" +
+                "   }\n" +
+                "   void test2(Object arg1) {\n" +
+                "      Object o = this; // marker statement \n" +
+                "      m2(arg1);\n" +
+                "   }\n" +
+                "}";
+
+        String source;
+
+        JavaSource(int id) {
+            super(URI.create("myfo:/Test.java"), JavaFileObject.Kind.SOURCE);
+            source = source_template.replace("#ID", String.valueOf(id));
+        }
+
+        @Override
+        public CharSequence getCharContent(boolean ignoreEncodingErrors) {
+            return source;
+        }
+    }
+
+    class Indifier extends TreeScanner<Void, Void> implements TaskListener {
+
+        MethodSymbol bsm;
+        Symtab syms;
+        Names names;
+        Types types;
+
+        Indifier(Symtab syms, Names names, Types types) {
+            this.syms = syms;
+            this.names = names;
+            this.types = types;
+        }
+
+        @Override
+        public void started(TaskEvent e) {
+            //do nothing
+        }
+
+        @Override
+        public void finished(TaskEvent e) {
+            if (e.getKind() == TaskEvent.Kind.ANALYZE) {
+                scan(e.getCompilationUnit(), null);
+            }
+        }
+
+        @Override
+        public Void visitMethodInvocation(MethodInvocationTree node, Void p) {
+            super.visitMethodInvocation(node, p);
+            JCMethodInvocation apply = (JCMethodInvocation)node;
+            JCIdent ident = (JCIdent)apply.meth;
+            Symbol oldSym = ident.sym;
+            if (!oldSym.isConstructor()) {
+                ident.sym = new Symbol.DynamicMethodSymbol(oldSym.name,
+                        oldSym.owner, REF_invokeStatic, bsm, oldSym.type, new Object[0]);
+            }
+            return null;
+        }
+
+        @Override
+        public Void visitMethod(MethodTree node, Void p) {
+            super.visitMethod(node, p);
+            if (node.getName().toString().equals("bsm")) {
+                bsm = ((JCMethodDecl)node).sym;
+            }
+            return null;
+        }
+    }
+
+    static class DiagChecker
+            implements javax.tools.DiagnosticListener<JavaFileObject> {
+
+        boolean diagFound;
+        ArrayList<String> diags = new ArrayList<>();
+
+        public void report(Diagnostic<? extends JavaFileObject> diagnostic) {
+            diags.add(diagnostic.getMessage(Locale.getDefault()));
+            diagFound = true;
+        }
+
+        String printDiags() {
+            StringBuilder buf = new StringBuilder();
+            for (String s : diags) {
+                buf.append(s);
+                buf.append("\n");
+            }
+            return buf.toString();
+        }
+    }
+
+}
diff --git a/langtools/test/tools/javac/defaultMethods/CheckACC_STRICTFlagOnDefaultMethodTest.java b/langtools/test/tools/javac/defaultMethods/CheckACC_STRICTFlagOnDefaultMethodTest.java
index 83e6d3d..d8391ae 100644
--- a/langtools/test/tools/javac/defaultMethods/CheckACC_STRICTFlagOnDefaultMethodTest.java
+++ b/langtools/test/tools/javac/defaultMethods/CheckACC_STRICTFlagOnDefaultMethodTest.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/diags/examples/BadSourceFileHeader/sourcepath/p/A.java b/langtools/test/tools/javac/diags/examples/BadSourceFileHeader/sourcepath/p/A.java
index ca342f9..734713d 100644
--- a/langtools/test/tools/javac/diags/examples/BadSourceFileHeader/sourcepath/p/A.java
+++ b/langtools/test/tools/javac/diags/examples/BadSourceFileHeader/sourcepath/p/A.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/diags/examples/MethodRedundantTypeargs.java b/langtools/test/tools/javac/diags/examples/MethodRedundantTypeargs.java
index 373be44..938650d 100644
--- a/langtools/test/tools/javac/diags/examples/MethodRedundantTypeargs.java
+++ b/langtools/test/tools/javac/diags/examples/MethodRedundantTypeargs.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/generics/6987475/T6987475pos.java b/langtools/test/tools/javac/generics/6987475/T6987475pos.java
index 0494718..dd7e9bf 100644
--- a/langtools/test/tools/javac/generics/6987475/T6987475pos.java
+++ b/langtools/test/tools/javac/generics/6987475/T6987475pos.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/generics/8064803/T8064803.java b/langtools/test/tools/javac/generics/8064803/T8064803.java
index c12abf2..929cb0c 100644
--- a/langtools/test/tools/javac/generics/8064803/T8064803.java
+++ b/langtools/test/tools/javac/generics/8064803/T8064803.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/generics/inference/8048838/T8048838.java b/langtools/test/tools/javac/generics/inference/8048838/T8048838.java
index 162d94c..82cf71e 100644
--- a/langtools/test/tools/javac/generics/inference/8048838/T8048838.java
+++ b/langtools/test/tools/javac/generics/inference/8048838/T8048838.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/generics/inference/8055963/T8055963.java b/langtools/test/tools/javac/generics/inference/8055963/T8055963.java
index 0d4e120..b28968f 100644
--- a/langtools/test/tools/javac/generics/inference/8055963/T8055963.java
+++ b/langtools/test/tools/javac/generics/inference/8055963/T8055963.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/generics/inference/8058199/T8058199.java b/langtools/test/tools/javac/generics/inference/8058199/T8058199.java
index 98ee2c4..bbf76b8 100644
--- a/langtools/test/tools/javac/generics/inference/8058199/T8058199.java
+++ b/langtools/test/tools/javac/generics/inference/8058199/T8058199.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/generics/inference/8058511/T8058511a.java b/langtools/test/tools/javac/generics/inference/8058511/T8058511a.java
index 6c1ffeb..7682c7d 100644
--- a/langtools/test/tools/javac/generics/inference/8058511/T8058511a.java
+++ b/langtools/test/tools/javac/generics/inference/8058511/T8058511a.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/generics/inference/8058511/T8058511b.java b/langtools/test/tools/javac/generics/inference/8058511/T8058511b.java
index 0dd5aef..df8fc69 100644
--- a/langtools/test/tools/javac/generics/inference/8058511/T8058511b.java
+++ b/langtools/test/tools/javac/generics/inference/8058511/T8058511b.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/generics/inference/8058511/T8058511c.java b/langtools/test/tools/javac/generics/inference/8058511/T8058511c.java
index c2ed03e..8cdfc5f 100644
--- a/langtools/test/tools/javac/generics/inference/8058511/T8058511c.java
+++ b/langtools/test/tools/javac/generics/inference/8058511/T8058511c.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/generics/inference/8078024/T8078024.java b/langtools/test/tools/javac/generics/inference/8078024/T8078024.java
index 86fe7da..ec22475 100644
--- a/langtools/test/tools/javac/generics/inference/8078024/T8078024.java
+++ b/langtools/test/tools/javac/generics/inference/8078024/T8078024.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/generics/inference/8130304/T8130304.java b/langtools/test/tools/javac/generics/inference/8130304/T8130304.java
index ebbecae..73e3f27 100644
--- a/langtools/test/tools/javac/generics/inference/8130304/T8130304.java
+++ b/langtools/test/tools/javac/generics/inference/8130304/T8130304.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/generics/inference/EagerReturnTypeResolution/EagerReturnTypeResolutionTesta.java b/langtools/test/tools/javac/generics/inference/EagerReturnTypeResolution/EagerReturnTypeResolutionTesta.java
index 860a959..e3936b6 100644
--- a/langtools/test/tools/javac/generics/inference/EagerReturnTypeResolution/EagerReturnTypeResolutionTesta.java
+++ b/langtools/test/tools/javac/generics/inference/EagerReturnTypeResolution/EagerReturnTypeResolutionTesta.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/generics/typevars/8129214/T8129214.java b/langtools/test/tools/javac/generics/typevars/8129214/T8129214.java
index 5d06889..0f15a60 100644
--- a/langtools/test/tools/javac/generics/typevars/8129214/T8129214.java
+++ b/langtools/test/tools/javac/generics/typevars/8129214/T8129214.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/generics/typevars/8129214/pkg/Foo.java b/langtools/test/tools/javac/generics/typevars/8129214/pkg/Foo.java
index 93cb2fc..e970ed4 100644
--- a/langtools/test/tools/javac/generics/typevars/8129214/pkg/Foo.java
+++ b/langtools/test/tools/javac/generics/typevars/8129214/pkg/Foo.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/8051958/T8051958.java b/langtools/test/tools/javac/lambda/8051958/T8051958.java
index 94fd9fd..834fc8b 100644
--- a/langtools/test/tools/javac/lambda/8051958/T8051958.java
+++ b/langtools/test/tools/javac/lambda/8051958/T8051958.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/8068399/T8068399.java b/langtools/test/tools/javac/lambda/8068399/T8068399.java
index 5d946f7..7df8a70 100644
--- a/langtools/test/tools/javac/lambda/8068399/T8068399.java
+++ b/langtools/test/tools/javac/lambda/8068399/T8068399.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/8068430/T8068430.java b/langtools/test/tools/javac/lambda/8068430/T8068430.java
index e78aa3d..7e29f65 100644
--- a/langtools/test/tools/javac/lambda/8068430/T8068430.java
+++ b/langtools/test/tools/javac/lambda/8068430/T8068430.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/8073842/T8073842.java b/langtools/test/tools/javac/lambda/8073842/T8073842.java
index c727108..0d9a808 100644
--- a/langtools/test/tools/javac/lambda/8073842/T8073842.java
+++ b/langtools/test/tools/javac/lambda/8073842/T8073842.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/8134329/T8134329.java b/langtools/test/tools/javac/lambda/8134329/T8134329.java
new file mode 100644
index 0000000..eccf9ae6
--- /dev/null
+++ b/langtools/test/tools/javac/lambda/8134329/T8134329.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. 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.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8134329
+ * @summary TeeOpTest.java fails across platforms after fix for JDK-8129547
+ */
+import java.util.function.Supplier;
+
+public class T8134329 {
+
+    static void assertEquals(Object o1, Object o2) {
+        if (!o1.equals(o2)) {
+            throw new AssertionError(String.format("Expected %s - found %s", o2, o1));
+        }
+    }
+
+    public static void main(String[] args) {
+        Supplier<String> s1 = new T8134329() { }::m;
+        assertEquals(s1.get(), "m");
+        Supplier<String> s2 = new T8134329() { }::g;
+        assertEquals(s2.get(), "g");
+        Supplier<String> s3 = new T8134329() { }::m;
+        assertEquals(s3.get(), "m");
+    }
+
+    String m() { return "m"; }
+    String g() { return "g"; }
+}
diff --git a/langtools/test/tools/javac/lambda/LambdaInterfaceStaticField.java b/langtools/test/tools/javac/lambda/LambdaInterfaceStaticField.java
index 5a8bf2e..f4b9b12 100644
--- a/langtools/test/tools/javac/lambda/LambdaInterfaceStaticField.java
+++ b/langtools/test/tools/javac/lambda/LambdaInterfaceStaticField.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/LambdaMultiCatchTest.java b/langtools/test/tools/javac/lambda/LambdaMultiCatchTest.java
index f6ff586..a10d189 100644
--- a/langtools/test/tools/javac/lambda/LambdaMultiCatchTest.java
+++ b/langtools/test/tools/javac/lambda/LambdaMultiCatchTest.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/T8038420/LambdaIncrement.java b/langtools/test/tools/javac/lambda/T8038420/LambdaIncrement.java
index 801bf06..2e9ce23 100644
--- a/langtools/test/tools/javac/lambda/T8038420/LambdaIncrement.java
+++ b/langtools/test/tools/javac/lambda/T8038420/LambdaIncrement.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/T8057800/NPEMethodReferenceAndGenericsTest.java b/langtools/test/tools/javac/lambda/T8057800/NPEMethodReferenceAndGenericsTest.java
index 696a811..c7bd3ff 100644
--- a/langtools/test/tools/javac/lambda/T8057800/NPEMethodReferenceAndGenericsTest.java
+++ b/langtools/test/tools/javac/lambda/T8057800/NPEMethodReferenceAndGenericsTest.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/lambdaExecution/InInterface.java b/langtools/test/tools/javac/lambda/lambdaExecution/InInterface.java
index 5c3f6df..91ba372 100644
--- a/langtools/test/tools/javac/lambda/lambdaExecution/InInterface.java
+++ b/langtools/test/tools/javac/lambda/lambdaExecution/InInterface.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/lambdaExecution/InnerConstructor.java b/langtools/test/tools/javac/lambda/lambdaExecution/InnerConstructor.java
index 21b747d..d5282af 100644
--- a/langtools/test/tools/javac/lambda/lambdaExecution/InnerConstructor.java
+++ b/langtools/test/tools/javac/lambda/lambdaExecution/InnerConstructor.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/lambdaExecution/LambdaTranslationTest1.java b/langtools/test/tools/javac/lambda/lambdaExecution/LambdaTranslationTest1.java
index 083d2ce..37033ff 100644
--- a/langtools/test/tools/javac/lambda/lambdaExecution/LambdaTranslationTest1.java
+++ b/langtools/test/tools/javac/lambda/lambdaExecution/LambdaTranslationTest1.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/lambdaExecution/LambdaTranslationTest2.java b/langtools/test/tools/javac/lambda/lambdaExecution/LambdaTranslationTest2.java
index 574bca3..fc03a86 100644
--- a/langtools/test/tools/javac/lambda/lambdaExecution/LambdaTranslationTest2.java
+++ b/langtools/test/tools/javac/lambda/lambdaExecution/LambdaTranslationTest2.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/lambdaExecution/TMapper.java b/langtools/test/tools/javac/lambda/lambdaExecution/TMapper.java
index 6a7096b..2ef5e7f 100644
--- a/langtools/test/tools/javac/lambda/lambdaExecution/TMapper.java
+++ b/langtools/test/tools/javac/lambda/lambdaExecution/TMapper.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/lambdaExecution/TPredicate.java b/langtools/test/tools/javac/lambda/lambdaExecution/TPredicate.java
index 2e98df26..4de2f27 100644
--- a/langtools/test/tools/javac/lambda/lambdaExecution/TPredicate.java
+++ b/langtools/test/tools/javac/lambda/lambdaExecution/TPredicate.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/methodReference/MethodReferenceComplexNullCheckTest.java b/langtools/test/tools/javac/lambda/methodReference/MethodReferenceComplexNullCheckTest.java
index 44935ab..a00220f 100644
--- a/langtools/test/tools/javac/lambda/methodReference/MethodReferenceComplexNullCheckTest.java
+++ b/langtools/test/tools/javac/lambda/methodReference/MethodReferenceComplexNullCheckTest.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceIntersection1.java b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceIntersection1.java
index aff05a7..1f586d3 100644
--- a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceIntersection1.java
+++ b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceIntersection1.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceIntersection2.java b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceIntersection2.java
index ef59451..dc07899 100644
--- a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceIntersection2.java
+++ b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceIntersection2.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceIntersection3.java b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceIntersection3.java
index 0eeb739..f143d0d 100644
--- a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceIntersection3.java
+++ b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceIntersection3.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceNullCheckTest.java b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceNullCheckTest.java
index c0fcedd..fdc9fb1 100644
--- a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceNullCheckTest.java
+++ b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceNullCheckTest.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferencePackagePrivateQualifier.java b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferencePackagePrivateQualifier.java
index 082def1..ae657e7 100644
--- a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferencePackagePrivateQualifier.java
+++ b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferencePackagePrivateQualifier.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestFDCCE.java b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestFDCCE.java
index 00eed06..a0ecb7c 100644
--- a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestFDCCE.java
+++ b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestFDCCE.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestInnerDefault.java b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestInnerDefault.java
index cdc9ef8..d2a9763 100644
--- a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestInnerDefault.java
+++ b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestInnerDefault.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestInnerInstance.java b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestInnerInstance.java
index 165b470..76a8289 100644
--- a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestInnerInstance.java
+++ b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestInnerInstance.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestInnerVarArgsThis.java b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestInnerVarArgsThis.java
index 791bafb..a9cc399 100644
--- a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestInnerVarArgsThis.java
+++ b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestInnerVarArgsThis.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestInstance.java b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestInstance.java
index 7aba6d9..15b4a48 100644
--- a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestInstance.java
+++ b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestInstance.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestKinds.java b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestKinds.java
index 2f885fd..e67ed37 100644
--- a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestKinds.java
+++ b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestKinds.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestMethodHandle.java b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestMethodHandle.java
index 4673643..05a9f9f 100644
--- a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestMethodHandle.java
+++ b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestMethodHandle.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestNew.java b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestNew.java
index c2f377f..15a35a7 100644
--- a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestNew.java
+++ b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestNew.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestNewInner.java b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestNewInner.java
index 9664957..1f61de4 100644
--- a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestNewInner.java
+++ b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestNewInner.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestNewInnerImplicitArgs.java b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestNewInnerImplicitArgs.java
index 4f91057..ae3d7d6 100644
--- a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestNewInnerImplicitArgs.java
+++ b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestNewInnerImplicitArgs.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestSueCase1.java b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestSueCase1.java
index 2579f9a..02fca01 100644
--- a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestSueCase1.java
+++ b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestSueCase1.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestSueCase2.java b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestSueCase2.java
index fefa3d2..4d55848 100644
--- a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestSueCase2.java
+++ b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestSueCase2.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestSueCase4.java b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestSueCase4.java
index 7f3de0e..9824163 100644
--- a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestSueCase4.java
+++ b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestSueCase4.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestSuper.java b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestSuper.java
index 9449b26..1c1afcb 100644
--- a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestSuper.java
+++ b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestSuper.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestSuperDefault.java b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestSuperDefault.java
index 753bace..316f876 100644
--- a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestSuperDefault.java
+++ b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestSuperDefault.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestTypeConversion.java b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestTypeConversion.java
index 6fd6de4..4696297 100644
--- a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestTypeConversion.java
+++ b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestTypeConversion.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestVarArgs.java b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestVarArgs.java
index bd811df..c430af2 100644
--- a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestVarArgs.java
+++ b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestVarArgs.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestVarArgsExt.java b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestVarArgsExt.java
index c515285..989ed97 100644
--- a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestVarArgsExt.java
+++ b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestVarArgsExt.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestVarArgsSuper.java b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestVarArgsSuper.java
index 88c4cd2..575cb2b 100644
--- a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestVarArgsSuper.java
+++ b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestVarArgsSuper.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestVarArgsSuperDefault.java b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestVarArgsSuperDefault.java
index 6e00605..81ea6cb 100644
--- a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestVarArgsSuperDefault.java
+++ b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestVarArgsSuperDefault.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestVarArgsThis.java b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestVarArgsThis.java
index 9c5e0d6..5066758 100644
--- a/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestVarArgsThis.java
+++ b/langtools/test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestVarArgsThis.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambda/methodReferenceExecution/pkg/B.java b/langtools/test/tools/javac/lambda/methodReferenceExecution/pkg/B.java
index c8ecbed..3233caa 100644
--- a/langtools/test/tools/javac/lambda/methodReferenceExecution/pkg/B.java
+++ b/langtools/test/tools/javac/lambda/methodReferenceExecution/pkg/B.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/AttributeInjector.java b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/AttributeInjector.java
index 5dd0055..58a8f37 100644
--- a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/AttributeInjector.java
+++ b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/AttributeInjector.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/ClassFile.java b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/ClassFile.java
index 9d460cb..99e1485 100644
--- a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/ClassFile.java
+++ b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/ClassFile.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/ClassFilePreprocessor.java b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/ClassFilePreprocessor.java
index 30e8422..ea9ce79 100644
--- a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/ClassFilePreprocessor.java
+++ b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/ClassFilePreprocessor.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/ClassToInterfaceConverter.java b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/ClassToInterfaceConverter.java
index 202441b..e9c1bf6 100644
--- a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/ClassToInterfaceConverter.java
+++ b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/ClassToInterfaceConverter.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/Compiler.java b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/Compiler.java
index 8e8dba1..f8137c4 100644
--- a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/Compiler.java
+++ b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/Compiler.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/DirectedClassLoader.java b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/DirectedClassLoader.java
index ba09714..945009b 100644
--- a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/DirectedClassLoader.java
+++ b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/DirectedClassLoader.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/SourceModel.java b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/SourceModel.java
index da2c9a0..cbd0132 100644
--- a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/SourceModel.java
+++ b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/SourceModel.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/TestHarness.java b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/TestHarness.java
index a9e472b..a1a3755 100644
--- a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/TestHarness.java
+++ b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/separate/TestHarness.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/ClassCase.java b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/ClassCase.java
index d3578ee..68421bf 100644
--- a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/ClassCase.java
+++ b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/ClassCase.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/Hierarchy.java b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/Hierarchy.java
index b594eec..f2cc229 100644
--- a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/Hierarchy.java
+++ b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/Hierarchy.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/HierarchyGenerator.java b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/HierarchyGenerator.java
index 828b313..5d18c74 100644
--- a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/HierarchyGenerator.java
+++ b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/HierarchyGenerator.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/Rule.java b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/Rule.java
index a02eea9..18a9abd 100644
--- a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/Rule.java
+++ b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/Rule.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/RuleGroup.java b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/RuleGroup.java
index 0ff573b..223c89f 100644
--- a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/RuleGroup.java
+++ b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/RuleGroup.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/TTNode.java b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/TTNode.java
index db0e835..b63428f 100644
--- a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/TTNode.java
+++ b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/TTNode.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/TTParser.java b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/TTParser.java
index f54eb37..20518e3 100644
--- a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/TTParser.java
+++ b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/TTParser.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/TTShape.java b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/TTShape.java
index 07a23da..958291f 100644
--- a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/TTShape.java
+++ b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/shapegen/TTShape.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/vm/DefaultMethodsTest.java b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/vm/DefaultMethodsTest.java
index c7c4619..9362994 100644
--- a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/vm/DefaultMethodsTest.java
+++ b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/vm/DefaultMethodsTest.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/vm/FDSeparateCompilationTest.java b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/vm/FDSeparateCompilationTest.java
index 9626b45..4fef2df 100644
--- a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/vm/FDSeparateCompilationTest.java
+++ b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/vm/FDSeparateCompilationTest.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/linenumbers/NestedLineNumberTest.java b/langtools/test/tools/javac/linenumbers/NestedLineNumberTest.java
index 9c43903..9f9d83c 100644
--- a/langtools/test/tools/javac/linenumbers/NestedLineNumberTest.java
+++ b/langtools/test/tools/javac/linenumbers/NestedLineNumberTest.java
@@ -1,30 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
+ * @test /nodynamiccopyright/
  * @bug 8061778
  * @summary  Wrong LineNumberTable for default constructors
  * @modules jdk.jdeps/com.sun.tools.classfile
@@ -50,8 +25,8 @@
         }
 
         int line = lines[0].line_number;
-        if (line != 79) {
-            error(String.format("LineNumberTable contains wrong line number - expected %d, found %d", 79, line));
+        if (line != 54) {
+            error(String.format("LineNumberTable contains wrong line number - expected %d, found %d", 54, line));
         }
     }
 
diff --git a/langtools/test/tools/javac/processing/messager/MessagerDiags.java b/langtools/test/tools/javac/processing/messager/MessagerDiags.java
index b5d3e68..217d93e 100644
--- a/langtools/test/tools/javac/processing/messager/MessagerDiags.java
+++ b/langtools/test/tools/javac/processing/messager/MessagerDiags.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javac/unicode/Wrapper.java b/langtools/test/tools/javac/unicode/Wrapper.java
index 90544dc..31091dd 100644
--- a/langtools/test/tools/javac/unicode/Wrapper.java
+++ b/langtools/test/tools/javac/unicode/Wrapper.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javap/T4884240.java b/langtools/test/tools/javap/T4884240.java
index c873cfc..4870e5f 100644
--- a/langtools/test/tools/javap/T4884240.java
+++ b/langtools/test/tools/javap/T4884240.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javap/classfile/deps/GetDeps.java b/langtools/test/tools/javap/classfile/deps/GetDeps.java
index 08ba6b0..5165e66 100644
--- a/langtools/test/tools/javap/classfile/deps/GetDeps.java
+++ b/langtools/test/tools/javap/classfile/deps/GetDeps.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javap/classfile/deps/T6907575.java b/langtools/test/tools/javap/classfile/deps/T6907575.java
index a7e40cc..81d80d9 100644
--- a/langtools/test/tools/javap/classfile/deps/T6907575.java
+++ b/langtools/test/tools/javap/classfile/deps/T6907575.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/javap/classfile/deps/p/C1.java b/langtools/test/tools/javap/classfile/deps/p/C1.java
index bf94d0e..4d9a8fb 100644
--- a/langtools/test/tools/javap/classfile/deps/p/C1.java
+++ b/langtools/test/tools/javap/classfile/deps/p/C1.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/sjavac/ApiExtraction.java b/langtools/test/tools/sjavac/ApiExtraction.java
index 66209ff..fafd474 100644
--- a/langtools/test/tools/sjavac/ApiExtraction.java
+++ b/langtools/test/tools/sjavac/ApiExtraction.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/sjavac/ClasspathDependencies.java b/langtools/test/tools/sjavac/ClasspathDependencies.java
index a05be8f..fc3f64c 100644
--- a/langtools/test/tools/sjavac/ClasspathDependencies.java
+++ b/langtools/test/tools/sjavac/ClasspathDependencies.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/sjavac/CompileCircularSources.java b/langtools/test/tools/sjavac/CompileCircularSources.java
index 50c7579..67a2111 100644
--- a/langtools/test/tools/sjavac/CompileCircularSources.java
+++ b/langtools/test/tools/sjavac/CompileCircularSources.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/sjavac/CompileExcludingDependency.java b/langtools/test/tools/sjavac/CompileExcludingDependency.java
index ea57798..dd28868 100644
--- a/langtools/test/tools/sjavac/CompileExcludingDependency.java
+++ b/langtools/test/tools/sjavac/CompileExcludingDependency.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/sjavac/CompileWithAtFile.java b/langtools/test/tools/sjavac/CompileWithAtFile.java
index 8b1ddfe..95717b8 100644
--- a/langtools/test/tools/sjavac/CompileWithAtFile.java
+++ b/langtools/test/tools/sjavac/CompileWithAtFile.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/sjavac/CompileWithInvisibleSources.java b/langtools/test/tools/sjavac/CompileWithInvisibleSources.java
index 9faddf7..a896410 100644
--- a/langtools/test/tools/sjavac/CompileWithInvisibleSources.java
+++ b/langtools/test/tools/sjavac/CompileWithInvisibleSources.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/sjavac/CompileWithOverrideSources.java b/langtools/test/tools/sjavac/CompileWithOverrideSources.java
index bc14a32..79ba0ef 100644
--- a/langtools/test/tools/sjavac/CompileWithOverrideSources.java
+++ b/langtools/test/tools/sjavac/CompileWithOverrideSources.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/sjavac/ExclPattern.java b/langtools/test/tools/sjavac/ExclPattern.java
index 1df3ddf..df699e4 100644
--- a/langtools/test/tools/sjavac/ExclPattern.java
+++ b/langtools/test/tools/sjavac/ExclPattern.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/sjavac/IdleShutdown.java b/langtools/test/tools/sjavac/IdleShutdown.java
index 7a84ce6..41744c8 100644
--- a/langtools/test/tools/sjavac/IdleShutdown.java
+++ b/langtools/test/tools/sjavac/IdleShutdown.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
@@ -31,17 +29,11 @@
  * @build Wrapper
  * @run main Wrapper IdleShutdown
  */
-import java.io.File;
-import java.net.URI;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
 import java.util.concurrent.atomic.AtomicLong;
 
 import com.sun.tools.sjavac.server.CompilationResult;
 import com.sun.tools.sjavac.server.IdleResetSjavac;
 import com.sun.tools.sjavac.server.Sjavac;
-import com.sun.tools.sjavac.server.SysInfo;
 import com.sun.tools.sjavac.server.Terminable;
 
 
@@ -70,35 +62,14 @@
         if (timeoutTimestamp.get() != -1)
             throw new AssertionError("Premature timeout detected.");
 
-        // Call various methods and wait less than TIMEOUT_MS in between
+        // Use Sjavac object and wait less than TIMEOUT_MS in between calls
         Thread.sleep(TIMEOUT_MS - 1000);
-        log("Getting sys info");
-        service.getSysInfo();
-
-        Thread.sleep(TIMEOUT_MS - 1000);
-        log("Getting sys info");
-        service.getSysInfo();
-
-        if (timeoutTimestamp.get() != -1)
-            throw new AssertionError("Premature timeout detected.");
+        log("Compiling");
+        service.compile(new String[0]);
 
         Thread.sleep(TIMEOUT_MS - 1000);
         log("Compiling");
-        service.compile("",
-                        "",
-                        new String[0],
-                        Collections.<File>emptyList(),
-                        Collections.<URI>emptySet(),
-                        Collections.<URI>emptySet());
-
-        Thread.sleep(TIMEOUT_MS - 1000);
-        log("Compiling");
-        service.compile("",
-                        "",
-                        new String[0],
-                        Collections.<File>emptyList(),
-                        Collections.<URI>emptySet(),
-                        Collections.<URI>emptySet());
+        service.compile(new String[0]);
 
         if (timeoutTimestamp.get() != -1)
             throw new AssertionError("Premature timeout detected.");
@@ -129,7 +100,10 @@
 
     private static class NoopJavacService implements Sjavac {
         @Override
-        public SysInfo getSysInfo() {
+        public void shutdown() {
+        }
+        @Override
+        public CompilationResult compile(String[] args) {
             // Attempt to trigger idle timeout during a call by sleeping
             try {
                 Thread.sleep(TIMEOUT_MS + 1000);
@@ -137,21 +111,5 @@
             }
             return null;
         }
-        @Override
-        public void shutdown() {
-        }
-        @Override
-        public CompilationResult compile(String protocolId,
-                                         String invocationId,
-                                         String[] args,
-                                         List<File> explicitSources,
-                                         Set<URI> sourcesToCompile,
-                                         Set<URI> visibleSources) {
-            return null;
-        }
-        @Override
-        public String serverSettings() {
-            return "";
-        }
     }
 }
diff --git a/langtools/test/tools/sjavac/IgnoreSymbolFile.java b/langtools/test/tools/sjavac/IgnoreSymbolFile.java
index 95f254f..29864bb 100644
--- a/langtools/test/tools/sjavac/IgnoreSymbolFile.java
+++ b/langtools/test/tools/sjavac/IgnoreSymbolFile.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/sjavac/IncCompInheritance.java b/langtools/test/tools/sjavac/IncCompInheritance.java
index fe6b44d..f1a003d 100644
--- a/langtools/test/tools/sjavac/IncCompInheritance.java
+++ b/langtools/test/tools/sjavac/IncCompInheritance.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/sjavac/IncCompileFullyQualifiedRef.java b/langtools/test/tools/sjavac/IncCompileFullyQualifiedRef.java
index 22e7b4b..a54cd86 100644
--- a/langtools/test/tools/sjavac/IncCompileFullyQualifiedRef.java
+++ b/langtools/test/tools/sjavac/IncCompileFullyQualifiedRef.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/sjavac/JavacOptionPrep.java b/langtools/test/tools/sjavac/JavacOptionPrep.java
index 0a0c4c0..650f368 100644
--- a/langtools/test/tools/sjavac/JavacOptionPrep.java
+++ b/langtools/test/tools/sjavac/JavacOptionPrep.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/sjavac/OptionDecoding.java b/langtools/test/tools/sjavac/OptionDecoding.java
index 4fbdb89..2a67506 100644
--- a/langtools/test/tools/sjavac/OptionDecoding.java
+++ b/langtools/test/tools/sjavac/OptionDecoding.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
@@ -51,10 +49,10 @@
 import java.util.Map;
 
 import com.sun.tools.sjavac.CopyFile;
-import com.sun.tools.sjavac.Main;
 import com.sun.tools.sjavac.Module;
 import com.sun.tools.sjavac.Source;
 import com.sun.tools.sjavac.client.ClientMain;
+import com.sun.tools.sjavac.comp.SjavacImpl;
 import com.sun.tools.sjavac.options.Options;
 import com.sun.tools.sjavac.options.SourceLocation;
 
@@ -136,7 +134,7 @@
             Options options = Options.parseArgs("-if", "root/pkg1/ClassA1.java", "root");
 
             Map<String, Source> foundFiles = new HashMap<>();
-            ClientMain.findSourceFiles(options.getSources(), Collections.singleton(".java"), foundFiles,
+            SjavacImpl.findSourceFiles(options.getSources(), Collections.singleton(".java"), foundFiles,
                     new HashMap<String, Module>(), new Module("", ""), false, true);
 
             checkFilesFound(foundFiles.keySet(), a1);
@@ -148,7 +146,7 @@
             Options options = Options.parseArgs("-i", "pkg1/*", "root");
 
             Map<String, Source> foundFiles = new HashMap<>();
-            ClientMain.findSourceFiles(options.getSources(), Collections.singleton(".java"), foundFiles,
+            SjavacImpl.findSourceFiles(options.getSources(), Collections.singleton(".java"), foundFiles,
                     new HashMap<String, Module>(), new Module("", ""), false, true);
 
             checkFilesFound(foundFiles.keySet(), a1, a2, b1, b2);
@@ -160,7 +158,7 @@
             Options options = Options.parseArgs("-xf", "root/pkg1/ClassA1.java", "root");
 
             Map<String, Source> foundFiles = new HashMap<>();
-            ClientMain.findSourceFiles(options.getSources(), Collections.singleton(".java"), foundFiles,
+            SjavacImpl.findSourceFiles(options.getSources(), Collections.singleton(".java"), foundFiles,
                     new HashMap<String, Module>(), new Module("", ""), false, true);
 
             checkFilesFound(foundFiles.keySet(), a2, b1, b2, c1, c2);
@@ -171,7 +169,7 @@
             Options options = Options.parseArgs("-i", "pkg1/*", "root");
 
             Map<String, Source> foundFiles = new HashMap<>();
-            ClientMain.findSourceFiles(options.getSources(), Collections.singleton(".java"), foundFiles,
+            SjavacImpl.findSourceFiles(options.getSources(), Collections.singleton(".java"), foundFiles,
                     new HashMap<String, Module>(), new Module("", ""), false, true);
 
             checkFilesFound(foundFiles.keySet(), a1, a2, b1, b2);
@@ -182,7 +180,7 @@
             Options options = Options.parseArgs("-i", "pkg1/*", "-x", "pkg1/pkg2/*", "root");
 
             Map<String, Source> foundFiles = new HashMap<>();
-            ClientMain.findSourceFiles(options.getSources(), Collections.singleton(".java"), foundFiles,
+            SjavacImpl.findSourceFiles(options.getSources(), Collections.singleton(".java"), foundFiles,
                     new HashMap<String, Module>(), new Module("", ""), false, true);
 
             checkFilesFound(foundFiles.keySet(), a1, a2);
diff --git a/langtools/test/tools/sjavac/PackagePathMismatch.java b/langtools/test/tools/sjavac/PackagePathMismatch.java
index 0db6c05a..9a2a891 100644
--- a/langtools/test/tools/sjavac/PackagePathMismatch.java
+++ b/langtools/test/tools/sjavac/PackagePathMismatch.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/sjavac/ParallelCompilations.java b/langtools/test/tools/sjavac/ParallelCompilations.java
index 09c051f..c99d91f 100644
--- a/langtools/test/tools/sjavac/ParallelCompilations.java
+++ b/langtools/test/tools/sjavac/ParallelCompilations.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/sjavac/PermittedArtifact.java b/langtools/test/tools/sjavac/PermittedArtifact.java
index 3d2664e..6d2e0db 100644
--- a/langtools/test/tools/sjavac/PermittedArtifact.java
+++ b/langtools/test/tools/sjavac/PermittedArtifact.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/sjavac/PooledExecution.java b/langtools/test/tools/sjavac/PooledExecution.java
index 3735ea5..35f5698 100644
--- a/langtools/test/tools/sjavac/PooledExecution.java
+++ b/langtools/test/tools/sjavac/PooledExecution.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
@@ -32,18 +30,12 @@
  * @build Wrapper
  * @run main Wrapper PooledExecution
  */
-import java.io.File;
-import java.net.URI;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import com.sun.tools.sjavac.comp.PooledSjavac;
 import com.sun.tools.sjavac.server.CompilationResult;
 import com.sun.tools.sjavac.server.Sjavac;
-import com.sun.tools.sjavac.server.SysInfo;
 
 
 public class PooledExecution {
@@ -75,12 +67,7 @@
             for (int i = 0; i < NUM_REQUESTS; i++) {
                 tasks[i] = new Thread() {
                     public void run() {
-                        service.compile("",
-                                        "",
-                                        new String[0],
-                                        Collections.<File>emptyList(),
-                                        Collections.<URI>emptySet(),
-                                        Collections.<URI>emptySet());
+                        service.compile(new String[0]);
                         tasksFinished.incrementAndGet();
                     }
                 };
@@ -122,12 +109,7 @@
             AtomicInteger activeRequests = new AtomicInteger(0);
 
             @Override
-            public CompilationResult compile(String protocolId,
-                                             String invocationId,
-                                             String[] args,
-                                             List<File> explicitSources,
-                                             Set<URI> sourcesToCompile,
-                                             Set<URI> visibleSources) {
+            public CompilationResult compile(String[] args) {
                 leftToStart.countDown();
                 int numActiveRequests = activeRequests.incrementAndGet();
                 System.out.printf("Left to start: %2d / Currently active: %2d%n",
@@ -145,18 +127,8 @@
             }
 
             @Override
-            public SysInfo getSysInfo() {
-                return null;
-            }
-
-            @Override
             public void shutdown() {
             }
-
-            @Override
-            public String serverSettings() {
-                return "";
-            }
         }
     }
 }
diff --git a/langtools/test/tools/sjavac/SjavacBase.java b/langtools/test/tools/sjavac/SjavacBase.java
index a9df325..ab3f38d 100644
--- a/langtools/test/tools/sjavac/SjavacBase.java
+++ b/langtools/test/tools/sjavac/SjavacBase.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/sjavac/StateDir.java b/langtools/test/tools/sjavac/StateDir.java
index 82496e8..6e904df 100644
--- a/langtools/test/tools/sjavac/StateDir.java
+++ b/langtools/test/tools/sjavac/StateDir.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/sjavac/Wrapper.java b/langtools/test/tools/sjavac/Wrapper.java
index f6268be..b2d52ea 100644
--- a/langtools/test/tools/sjavac/Wrapper.java
+++ b/langtools/test/tools/sjavac/Wrapper.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/langtools/test/tools/sjavac/util/OptionTestUtil.java b/langtools/test/tools/sjavac/util/OptionTestUtil.java
index 0fc9eb3..5458100 100644
--- a/langtools/test/tools/sjavac/util/OptionTestUtil.java
+++ b/langtools/test/tools/sjavac/util/OptionTestUtil.java
@@ -4,9 +4,7 @@
  *
  * 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * 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
diff --git a/make/Images.gmk b/make/Images.gmk
index 36b889e..c404a89 100644
--- a/make/Images.gmk
+++ b/make/Images.gmk
@@ -39,14 +39,14 @@
 
 MAIN_MODULES += java.se java.smartcardio jdk.httpserver jdk.sctp \
                jdk.security.auth jdk.security.jgss jdk.pack200 jdk.xml.dom \
-               jdk.accessibility
+               jdk.accessibility jdk.internal.le jdk.scripting.nashorn.shell
 
 # providers
 PROVIDER_MODULES += jdk.charsets jdk.crypto.ec jdk.crypto.pkcs11 jdk.jvmstat jdk.localedata \
                jdk.naming.dns jdk.naming.rmi jdk.scripting.nashorn jdk.zipfs
 
 # tools
-TOOLS_MODULES += jdk.attach jdk.compiler jdk.dev jdk.internal.le jdk.scripting.nashorn.shell \
+TOOLS_MODULES += jdk.attach jdk.compiler jdk.dev \
                jdk.javadoc jdk.jcmd jdk.jconsole jdk.hotspot.agent jdk.jartool \
                jdk.jdeps jdk.jdi jdk.jdwp.agent jdk.policytool jdk.rmic jdk.xml.bind jdk.xml.ws
 
diff --git a/modules.xml b/modules.xml
index 9259443..2f8ecea 100644
--- a/modules.xml
+++ b/modules.xml
@@ -1652,6 +1652,10 @@
       <name>jdk.internal.jline.console.history</name>
       <to>jdk.scripting.nashorn.shell</to>
     </export>
+    <export>
+      <name>jdk.internal.jline.internal</name>
+      <to>jdk.scripting.nashorn.shell</to>
+    </export>
   </module>
   <module>
     <name>jdk.jartool</name>
@@ -1818,7 +1822,9 @@
     <name>jdk.scripting.nashorn.shell</name>
     <depend>java.base</depend>
     <depend>jdk.scripting.nashorn</depend>
-    <depend>jdk.internal.le</depend>
+    <depend>jdk.internal.le</depend> <!-- jline -->
+    <depend>java.desktop</depend> <!-- EditPad -->
+    <depend>java.compiler</depend> <!-- java package completion -->
   </module>
   <module>
     <name>jdk.sctp</name>
diff --git a/nashorn/.hgtags b/nashorn/.hgtags
index e83176c..74131f9 100644
--- a/nashorn/.hgtags
+++ b/nashorn/.hgtags
@@ -312,3 +312,4 @@
 ab231613d7206431ba31917a02e7cedd70e88e70 jdk9-b76
 33cecbc59f2ad78ac0934cbc3e014d346077e848 jdk9-b77
 6f634e84387e97b2421d5e776e46935784156d1c jdk9-b78
+9b3eca69b88b2d1bebce92d58280ae66fc0b6091 jdk9-b79
diff --git a/nashorn/samples/classes.js b/nashorn/samples/classes.js
new file mode 100644
index 0000000..24f74d9
--- /dev/null
+++ b/nashorn/samples/classes.js
@@ -0,0 +1,47 @@
+// Usage: jjs classes.js [ -- <java_package_name > ]
+
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. 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 Oracle 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.
+ */
+
+// print all Java classes of the given package and its subpackages.
+var pkg = arguments.length > 0? arguments[0] : "java.lang";
+
+with (new JavaImporter(javax.tools, java.util)) {
+    var compiler = ToolProvider.systemJavaCompiler;
+    var fm = compiler.getStandardFileManager(null, null, null);
+    var kinds = EnumSet.of(JavaFileObject.Kind.CLASS);
+    var loc = StandardLocation.PLATFORM_CLASS_PATH;
+    var itr = fm.list(loc, pkg, kinds, true).iterator();
+    while(itr.hasNext()) {
+        print(fm.inferBinaryName(loc, itr.next()));
+    }
+    fm.close();
+}
diff --git a/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/Console.java b/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/Console.java
index 3ecee8c..484f1c23 100644
--- a/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/Console.java
+++ b/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/Console.java
@@ -34,6 +34,11 @@
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
+import jdk.internal.jline.NoInterruptUnixTerminal;
+import jdk.internal.jline.Terminal;
+import jdk.internal.jline.TerminalFactory;
+import jdk.internal.jline.TerminalFactory.Flavor;
+import jdk.internal.jline.WindowsTerminal;
 import jdk.internal.jline.console.ConsoleReader;
 import jdk.internal.jline.console.completer.Completer;
 import jdk.internal.jline.console.history.FileHistory;
@@ -45,6 +50,8 @@
     Console(final InputStream cmdin, final PrintStream cmdout, final File historyFile,
             final Completer completer) throws IOException {
         in = new ConsoleReader(cmdin, cmdout);
+        TerminalFactory.registerFlavor(Flavor.WINDOWS, JJSWindowsTerminal :: new);
+        TerminalFactory.registerFlavor(Flavor.UNIX, JJSUnixTerminal :: new);
         in.setExpandEvents(false);
         in.setHandleUserInterrupt(true);
         in.setBellEnabled(true);
@@ -71,4 +78,60 @@
     FileHistory getHistory() {
         return (FileHistory) in.getHistory();
     }
+
+    boolean terminalEditorRunning() {
+        Terminal terminal = in.getTerminal();
+        if (terminal instanceof JJSUnixTerminal) {
+            return ((JJSUnixTerminal) terminal).isRaw();
+        }
+        return false;
+    }
+
+    void suspend() {
+        try {
+            in.getTerminal().restore();
+        } catch (Exception ex) {
+            throw new IllegalStateException(ex);
+        }
+    }
+
+    void resume() {
+        try {
+            in.getTerminal().init();
+        } catch (Exception ex) {
+            throw new IllegalStateException(ex);
+        }
+    }
+
+    static final class JJSUnixTerminal extends NoInterruptUnixTerminal {
+        JJSUnixTerminal() throws Exception {
+        }
+
+        boolean isRaw() {
+            try {
+                return getSettings().get("-a").contains("-icanon");
+            } catch (IOException | InterruptedException ex) {
+                return false;
+            }
+        }
+
+        @Override
+        public void disableInterruptCharacter() {
+        }
+
+        @Override
+        public void enableInterruptCharacter() {
+        }
+    }
+
+    static final class JJSWindowsTerminal extends WindowsTerminal {
+        public JJSWindowsTerminal() throws Exception {
+        }
+
+        @Override
+        public void init() throws Exception {
+            super.init();
+            setAnsiSupported(false);
+        }
+    }
 }
diff --git a/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/EditObject.java b/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/EditObject.java
new file mode 100644
index 0000000..248e69f
--- /dev/null
+++ b/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/EditObject.java
@@ -0,0 +1,130 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. 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.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.nashorn.tools.jjs;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.function.Consumer;
+import jdk.nashorn.api.scripting.AbstractJSObject;
+import jdk.nashorn.internal.runtime.JSType;
+import static jdk.nashorn.internal.runtime.ScriptRuntime.UNDEFINED;
+
+/*
+ * "edit" top level script function which shows an external Window
+ * for editing and evaluating scripts from it.
+ */
+final class EditObject extends AbstractJSObject {
+    private static final Set<String> props;
+    static {
+        final HashSet<String> s = new HashSet<>();
+        s.add("editor");
+        props = Collections.unmodifiableSet(s);
+    }
+
+    private final Console console;
+    private final Consumer<String> errorHandler;
+    private final Consumer<String> evaluator;
+    private String editor;
+
+    EditObject(final Console console, final Consumer<String> errorHandler,
+            final Consumer<String> evaluator) {
+        this.console = console;
+        this.errorHandler = errorHandler;
+        this.evaluator = evaluator;
+    }
+
+    @Override
+    public Object getDefaultValue(final Class<?> hint) {
+        if (hint == String.class) {
+            return toString();
+        }
+        return UNDEFINED;
+    }
+
+    @Override
+    public String toString() {
+        return "function edit() { [native code] }";
+    }
+
+    @Override
+    public Set<String> keySet() {
+        return props;
+    }
+
+    @Override
+    public Object getMember(final String name) {
+        if (name.equals("editor")) {
+            return editor;
+        }
+        return UNDEFINED;
+    }
+
+    @Override
+    public void setMember(final String name, final Object value) {
+        if (name.equals("editor")) {
+            this.editor = value != null && value != UNDEFINED? JSType.toString(value) : "";
+        }
+    }
+
+    // called whenever user 'saves' script in editor
+    class SaveHandler implements Consumer<String> {
+         private String lastStr; // last seen code
+
+         SaveHandler(final String str) {
+             this.lastStr = str;
+         }
+
+         @Override
+         public void accept(final String str) {
+             // ignore repeated save of the same code!
+             if (! str.equals(lastStr)) {
+                 this.lastStr = str;
+                 // evaluate the new code
+                 evaluator.accept(str);
+             }
+         }
+    }
+
+    @Override
+    public Object call(final Object thiz, final Object... args) {
+        final String initText = args.length > 0? JSType.toString(args[0]) : "";
+        final SaveHandler saveHandler = new SaveHandler(initText);
+        if (editor != null && !editor.isEmpty()) {
+            ExternalEditor.edit(editor, errorHandler, initText, saveHandler, console);
+        } else if (! Main.HEADLESS) {
+            EditPad.edit(errorHandler, initText, saveHandler);
+        } else {
+            errorHandler.accept(Main.getMessage("no.editor"));
+        }
+        return UNDEFINED;
+    }
+
+    @Override
+    public boolean isFunction() {
+        return true;
+    }
+}
diff --git a/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/EditPad.java b/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/EditPad.java
new file mode 100644
index 0000000..9dbe2a8
--- /dev/null
+++ b/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/EditPad.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. 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.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.nashorn.tools.jjs;
+
+import java.awt.BorderLayout;
+import java.awt.FlowLayout;
+import java.awt.event.KeyEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.util.function.Consumer;
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+import javax.swing.SwingUtilities;
+
+/**
+ * A minimal Swing editor as a fallback when the user does not specify an
+ * external editor.
+ */
+final class EditPad extends JFrame implements Runnable {
+    private static final long serialVersionUID = 1;
+    private final Consumer<String> errorHandler;
+    private final String initialText;
+    private final boolean[] closeLock;
+    private final Consumer<String> saveHandler;
+
+    EditPad(Consumer<String> errorHandler, String initialText,
+            boolean[] closeLock, Consumer<String> saveHandler) {
+        super("Edit Pad (Experimental)");
+        this.errorHandler = errorHandler;
+        this.initialText = initialText;
+        this.closeLock = closeLock;
+        this.saveHandler = saveHandler;
+    }
+
+    @Override
+    public void run() {
+        addWindowListener(new WindowAdapter() {
+            @Override
+            public void windowClosing(WindowEvent e) {
+                EditPad.this.dispose();
+                notifyClose();
+            }
+        });
+        setLocationRelativeTo(null);
+        setLayout(new BorderLayout());
+        JTextArea textArea = new JTextArea(initialText);
+        add(new JScrollPane(textArea), BorderLayout.CENTER);
+        add(buttons(textArea), BorderLayout.SOUTH);
+
+        setSize(800, 600);
+        setVisible(true);
+    }
+
+    private JPanel buttons(JTextArea textArea) {
+        FlowLayout flow = new FlowLayout();
+        flow.setHgap(35);
+        JPanel buttons = new JPanel(flow);
+        JButton cancel = new JButton("Cancel");
+        cancel.setMnemonic(KeyEvent.VK_C);
+        JButton accept = new JButton("Accept");
+        accept.setMnemonic(KeyEvent.VK_A);
+        JButton exit = new JButton("Exit");
+        exit.setMnemonic(KeyEvent.VK_X);
+        buttons.add(cancel);
+        buttons.add(accept);
+        buttons.add(exit);
+
+        cancel.addActionListener(e -> {
+            close();
+        });
+        accept.addActionListener(e -> {
+            saveHandler.accept(textArea.getText());
+        });
+        exit.addActionListener(e -> {
+            saveHandler.accept(textArea.getText());
+            close();
+        });
+
+        return buttons;
+    }
+
+    private void close() {
+        setVisible(false);
+        dispose();
+        notifyClose();
+    }
+
+    private void notifyClose() {
+        synchronized (closeLock) {
+            closeLock[0] = true;
+            closeLock.notify();
+        }
+    }
+
+    static void edit(Consumer<String> errorHandler, String initialText,
+            Consumer<String> saveHandler) {
+        boolean[] closeLock = new boolean[1];
+        SwingUtilities.invokeLater(
+                new EditPad(errorHandler, initialText, closeLock, saveHandler));
+        synchronized (closeLock) {
+            while (!closeLock[0]) {
+                try {
+                    closeLock.wait();
+                } catch (InterruptedException ex) {
+                    // ignore and loop
+                }
+            }
+        }
+    }
+}
diff --git a/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/ExternalEditor.java b/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/ExternalEditor.java
new file mode 100644
index 0000000..d67add1
--- /dev/null
+++ b/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/ExternalEditor.java
@@ -0,0 +1,152 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. 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.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.nashorn.tools.jjs;
+
+import java.io.IOException;
+import java.nio.charset.Charset;
+import java.nio.file.ClosedWatchServiceException;
+import java.nio.file.FileSystems;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.WatchKey;
+import java.nio.file.WatchService;
+import java.util.List;
+import java.util.function.Consumer;
+import static java.nio.file.StandardWatchEventKinds.ENTRY_CREATE;
+import static java.nio.file.StandardWatchEventKinds.ENTRY_DELETE;
+import static java.nio.file.StandardWatchEventKinds.ENTRY_MODIFY;
+
+final class ExternalEditor {
+    private final Consumer<String> errorHandler;
+    private final Consumer<String> saveHandler;
+    private final Console input;
+
+    private WatchService watcher;
+    private Thread watchedThread;
+    private Path dir;
+    private Path tmpfile;
+
+    ExternalEditor(Consumer<String> errorHandler, Consumer<String> saveHandler, Console input) {
+        this.errorHandler = errorHandler;
+        this.saveHandler = saveHandler;
+        this.input = input;
+    }
+
+    private void edit(String cmd, String initialText) {
+        try {
+            setupWatch(initialText);
+            launch(cmd);
+        } catch (IOException ex) {
+            errorHandler.accept(ex.getMessage());
+        }
+    }
+
+    /**
+     * Creates a WatchService and registers the given directory
+     */
+    private void setupWatch(String initialText) throws IOException {
+        this.watcher = FileSystems.getDefault().newWatchService();
+        this.dir = Files.createTempDirectory("REPL");
+        this.tmpfile = Files.createTempFile(dir, null, ".js");
+        Files.write(tmpfile, initialText.getBytes(Charset.forName("UTF-8")));
+        dir.register(watcher,
+                ENTRY_CREATE,
+                ENTRY_DELETE,
+                ENTRY_MODIFY);
+        watchedThread = new Thread(() -> {
+            for (;;) {
+                WatchKey key;
+                try {
+                    key = watcher.take();
+                } catch (ClosedWatchServiceException ex) {
+                    break;
+                } catch (InterruptedException ex) {
+                    continue; // tolerate an intrupt
+                }
+
+                if (!key.pollEvents().isEmpty()) {
+                    if (!input.terminalEditorRunning()) {
+                        saveFile();
+                    }
+                }
+
+                boolean valid = key.reset();
+                if (!valid) {
+                    errorHandler.accept("Invalid key");
+                    break;
+                }
+            }
+        });
+        watchedThread.start();
+    }
+
+    private void launch(String cmd) throws IOException {
+        ProcessBuilder pb = new ProcessBuilder(cmd, tmpfile.toString());
+        pb = pb.inheritIO();
+
+        try {
+            input.suspend();
+            Process process = pb.start();
+            process.waitFor();
+        } catch (IOException ex) {
+            errorHandler.accept("process IO failure: " + ex.getMessage());
+        } catch (InterruptedException ex) {
+            errorHandler.accept("process interrupt: " + ex.getMessage());
+        } finally {
+            try {
+                watcher.close();
+                watchedThread.join(); //so that saveFile() is finished.
+                saveFile();
+            } catch (InterruptedException ex) {
+                errorHandler.accept("process interrupt: " + ex.getMessage());
+            } finally {
+                input.resume();
+            }
+        }
+    }
+
+    private void saveFile() {
+        List<String> lines;
+        try {
+            lines = Files.readAllLines(tmpfile);
+        } catch (IOException ex) {
+            errorHandler.accept("Failure read edit file: " + ex.getMessage());
+            return ;
+        }
+        StringBuilder sb = new StringBuilder();
+        for (String ln : lines) {
+            sb.append(ln);
+            sb.append('\n');
+        }
+        saveHandler.accept(sb.toString());
+    }
+
+    static void edit(String cmd, Consumer<String> errorHandler, String initialText,
+            Consumer<String> saveHandler, Console input) {
+        ExternalEditor ed = new ExternalEditor(errorHandler,  saveHandler, input);
+        ed.edit(cmd, initialText);
+    }
+}
diff --git a/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/HistoryObject.java b/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/HistoryObject.java
index 590108f..e7ae0db 100644
--- a/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/HistoryObject.java
+++ b/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/HistoryObject.java
@@ -25,16 +25,23 @@
 
 package jdk.nashorn.tools.jjs;
 
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
 import java.io.IOException;
+import java.io.PrintWriter;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
+import java.util.function.Consumer;
 import java.util.function.Function;
+import java.util.function.Supplier;
 import jdk.internal.jline.console.history.FileHistory;
 import jdk.internal.jline.console.history.History;
 import jdk.nashorn.api.scripting.AbstractJSObject;
 import jdk.nashorn.api.scripting.JSObject;
 import jdk.nashorn.internal.runtime.JSType;
+import static jdk.nashorn.internal.runtime.ECMAErrors.typeError;
 import static jdk.nashorn.internal.runtime.ScriptRuntime.UNDEFINED;
 
 /*
@@ -46,15 +53,51 @@
         final HashSet<String> s = new HashSet<>();
         s.add("clear");
         s.add("forEach");
+        s.add("load");
         s.add("print");
+        s.add("save");
         s.add("size");
+        s.add("toString");
         props = Collections.unmodifiableSet(s);
     }
 
     private final FileHistory hist;
+    private final PrintWriter err;
+    private final Consumer<String> evaluator;
 
-    HistoryObject(final FileHistory hist) {
+    HistoryObject(final FileHistory hist, final PrintWriter err,
+            final Consumer<String> evaluator) {
         this.hist = hist;
+        this.err = err;
+        this.evaluator = evaluator;
+    }
+
+    @Override
+    public boolean isFunction() {
+        return true;
+    }
+
+    @Override
+    public Object call(final Object thiz, final Object... args) {
+        if (args.length > 0) {
+            int index = JSType.toInteger(args[0]);
+            if (index < 0) {
+                index += (hist.size() - 1);
+            } else {
+                index--;
+            }
+
+            if (index >= 0 && index < (hist.size() - 1)) {
+                final CharSequence src = hist.get(index);
+                hist.replace(src);
+                err.println(src);
+                evaluator.accept(src.toString());
+            } else {
+                hist.removeLast();
+                err.println("no history entry @ " + (index + 1));
+            }
+        }
+        return UNDEFINED;
     }
 
     @Override
@@ -64,10 +107,16 @@
                 return (Runnable)hist::clear;
             case "forEach":
                 return (Function<JSObject, Object>)this::iterate;
+            case "load":
+                return (Consumer<Object>)this::load;
             case "print":
                 return (Runnable)this::print;
+            case "save":
+                return (Consumer<Object>)this::save;
             case "size":
                 return hist.size();
+            case "toString":
+                return (Supplier<String>)this::toString;
         }
         return UNDEFINED;
     }
@@ -82,7 +131,11 @@
 
     @Override
     public String toString() {
-        return "[object history]";
+        final StringBuilder buf = new StringBuilder();
+        for (History.Entry e : hist) {
+            buf.append(e.value()).append('\n');
+        }
+        return buf.toString();
     }
 
     @Override
@@ -90,9 +143,32 @@
         return props;
     }
 
+    private void save(final Object obj) {
+        final File file = getFile(obj);
+        try (final PrintWriter pw = new PrintWriter(file)) {
+            for (History.Entry e : hist) {
+                pw.println(e.value());
+            }
+        } catch (final IOException exp) {
+            throw new RuntimeException(exp);
+        }
+    }
+
+    private void load(final Object obj) {
+        final File file = getFile(obj);
+        String item = null;
+        try (final BufferedReader r = new BufferedReader(new FileReader(file))) {
+            while ((item = r.readLine()) != null) {
+                hist.add(item);
+            }
+        } catch (final IOException exp) {
+            throw new RuntimeException(exp);
+        }
+    }
+
     private void print() {
         for (History.Entry e : hist) {
-            System.out.println(e.value());
+            System.out.printf("%3d %s\n", e.index() + 1, e.value());
         }
     }
 
@@ -104,4 +180,17 @@
         }
         return UNDEFINED;
     }
+
+    private static File getFile(final Object obj) {
+        File file = null;
+        if (obj instanceof String) {
+            file = new File((String)obj);
+        } else if (obj instanceof File) {
+            file = (File)obj;
+        } else {
+            throw typeError("not.a.file", JSType.toString(obj));
+        }
+
+        return file;
+    }
 }
diff --git a/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/Main.java b/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/Main.java
index e0edd4d..71d759c 100644
--- a/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/Main.java
+++ b/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/Main.java
@@ -25,6 +25,7 @@
 
 package jdk.nashorn.tools.jjs;
 
+import java.awt.GraphicsEnvironment;
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.InputStream;
@@ -32,12 +33,14 @@
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.PrintWriter;
+import java.util.function.Consumer;
 import jdk.internal.jline.console.completer.Completer;
 import jdk.internal.jline.console.UserInterruptException;
 import jdk.nashorn.api.scripting.NashornException;
 import jdk.nashorn.internal.objects.Global;
 import jdk.nashorn.internal.runtime.Context;
 import jdk.nashorn.internal.runtime.JSType;
+import jdk.nashorn.internal.runtime.Property;
 import jdk.nashorn.internal.runtime.ScriptEnvironment;
 import jdk.nashorn.internal.runtime.ScriptRuntime;
 import jdk.nashorn.tools.Shell;
@@ -48,6 +51,9 @@
 public final class Main extends Shell {
     private Main() {}
 
+    static final boolean DEBUG = Boolean.getBoolean("nashorn.jjs.debug");
+    static final boolean HEADLESS = GraphicsEnvironment.isHeadless();
+
     // file where history is persisted.
     private static final File HIST_FILE = new File(new File(System.getProperty("user.home")), ".jjs.history");
 
@@ -96,10 +102,12 @@
     protected int readEvalPrint(final Context context, final Global global) {
         final ScriptEnvironment env = context.getEnv();
         final String prompt = bundle.getString("shell.prompt");
+        final String prompt2 = bundle.getString("shell.prompt2");
         final PrintWriter err = context.getErr();
         final Global oldGlobal = Context.getGlobal();
         final boolean globalChanged = (oldGlobal != global);
-        final Completer completer = new NashornCompleter(context, global, this);
+        final PropertiesHelper propsHelper = new PropertiesHelper(env._classpath);
+        final NashornCompleter completer = new NashornCompleter(context, global, this, propsHelper);
 
         try (final Console in = new Console(System.in, System.out, HIST_FILE, completer)) {
             if (globalChanged) {
@@ -107,8 +115,30 @@
             }
 
             global.addShellBuiltins();
-            // expose history object for reflecting on command line history
-            global.put("history", new HistoryObject(in.getHistory()), false);
+
+            if (System.getSecurityManager() == null) {
+                final Consumer<String> evaluator = str -> {
+                    // could be called from different thread (GUI), we need to handle Context set/reset
+                    final Global _oldGlobal = Context.getGlobal();
+                    final boolean _globalChanged = (oldGlobal != global);
+                    if (_globalChanged) {
+                        Context.setGlobal(global);
+                    }
+                    try {
+                        evalImpl(context, global, str, err, env._dump_on_error);
+                    } finally {
+                        if (_globalChanged) {
+                            Context.setGlobal(_oldGlobal);
+                        }
+                    }
+                };
+
+                // expose history object for reflecting on command line history
+                global.addOwnProperty("history", Property.NOT_ENUMERABLE, new HistoryObject(in.getHistory(), err, evaluator));
+
+                // 'edit' command
+                global.addOwnProperty("edit", Property.NOT_ENUMERABLE, new EditObject(in, err::println, evaluator));
+            }
 
             while (true) {
                 String source = "";
@@ -133,10 +163,25 @@
                     if (res != ScriptRuntime.UNDEFINED) {
                         err.println(JSType.toString(res));
                     }
-                } catch (final Exception e) {
-                    err.println(e);
-                    if (env._dump_on_error) {
-                        e.printStackTrace(err);
+                } catch (final Exception exp) {
+                    // Is this a ECMAScript SyntaxError at last column (of the single line)?
+                    // If so, it is because parser expected more input but got EOF. Try to
+                    // to more lines from the user (multiline edit support).
+
+                    if (completer.isSyntaxErrorAt(exp, 1, source.length())) {
+                        final String fullSrc = completer.readMoreLines(source, exp, in, prompt2, err);
+
+                        // check if we succeeded in getting complete code.
+                        if (fullSrc != null && !fullSrc.isEmpty()) {
+                            evalImpl(context, global, fullSrc, err, env._dump_on_error);
+                        } // else ignore, error reported already by 'completer.readMoreLines'
+                    } else {
+
+                        // can't read more lines to have parseable/complete code.
+                        err.println(exp);
+                        if (env._dump_on_error) {
+                            exp.printStackTrace(err);
+                        }
                     }
                 }
             }
@@ -149,8 +194,34 @@
             if (globalChanged) {
                 Context.setGlobal(oldGlobal);
             }
+            try {
+                propsHelper.close();
+            } catch (final Exception exp) {
+                if (DEBUG) {
+                    exp.printStackTrace();
+                }
+            }
         }
 
         return SUCCESS;
     }
+
+    static String getMessage(final String id) {
+        return bundle.getString(id);
+    }
+
+    private void evalImpl(final Context context, final Global global, final String source,
+            final PrintWriter err, final boolean doe) {
+        try {
+            final Object res = context.eval(global, source, global, "<shell>");
+            if (res != ScriptRuntime.UNDEFINED) {
+                err.println(JSType.toString(res));
+            }
+        } catch (final Exception e) {
+            err.println(e);
+            if (doe) {
+                e.printStackTrace(err);
+            }
+        }
+    }
 }
diff --git a/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/NashornCompleter.java b/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/NashornCompleter.java
index 5a676da..521bb6e 100644
--- a/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/NashornCompleter.java
+++ b/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/NashornCompleter.java
@@ -25,9 +25,18 @@
 
 package jdk.nashorn.tools.jjs;
 
+import java.io.File;
+import java.io.PrintWriter;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.FutureTask;
 import java.util.regex.Pattern;
+import javax.swing.JFileChooser;
+import javax.swing.filechooser.FileNameExtensionFilter;
+import javax.swing.SwingUtilities;
 import jdk.internal.jline.console.completer.Completer;
+import jdk.internal.jline.console.UserInterruptException;
 import jdk.nashorn.api.tree.AssignmentTree;
 import jdk.nashorn.api.tree.BinaryTree;
 import jdk.nashorn.api.tree.CompilationUnitTree;
@@ -46,28 +55,143 @@
 import jdk.nashorn.api.tree.Parser;
 import jdk.nashorn.api.scripting.NashornException;
 import jdk.nashorn.tools.PartialParser;
+import jdk.nashorn.internal.objects.NativeSyntaxError;
 import jdk.nashorn.internal.objects.Global;
+import jdk.nashorn.internal.runtime.ECMAException;
 import jdk.nashorn.internal.runtime.Context;
+import jdk.nashorn.internal.runtime.ScriptEnvironment;
 import jdk.nashorn.internal.runtime.ScriptRuntime;
 
-// A simple source completer for nashorn
+/**
+ * A simple source completer for nashorn. Handles code completion for
+ * expressions as well as handles incomplete single line code.
+ */
 final class NashornCompleter implements Completer {
     private final Context context;
     private final Global global;
+    private final ScriptEnvironment env;
     private final PartialParser partialParser;
+    private final PropertiesHelper propsHelper;
     private final Parser parser;
+    private static final boolean BACKSLASH_FILE_SEPARATOR = File.separatorChar == '\\';
 
-    NashornCompleter(final Context context, final Global global, final PartialParser partialParser) {
+    NashornCompleter(final Context context, final Global global,
+            final PartialParser partialParser, final PropertiesHelper propsHelper) {
         this.context = context;
         this.global = global;
+        this.env = context.getEnv();
         this.partialParser = partialParser;
-        this.parser = Parser.create();
+        this.propsHelper = propsHelper;
+        this.parser = createParser(env);
+    }
+
+
+    /**
+     * Is this a ECMAScript SyntaxError thrown for parse issue at the given line and column?
+     *
+     * @param exp Throwable to check
+     * @param line line number to check
+     * @param column column number to check
+     *
+     * @return true if the given Throwable is a ECMAScript SyntaxError at given line, column
+     */
+    boolean isSyntaxErrorAt(final Throwable exp, final int line, final int column) {
+        if (exp instanceof ECMAException) {
+            final ECMAException eexp = (ECMAException)exp;
+            if (eexp.getThrown() instanceof NativeSyntaxError) {
+                return isParseErrorAt(eexp.getCause(), line, column);
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Is this a parse error at the given line and column?
+     *
+     * @param exp Throwable to check
+     * @param line line number to check
+     * @param column column number to check
+     *
+     * @return true if the given Throwable is a parser error at given line, column
+     */
+    boolean isParseErrorAt(final Throwable exp, final int line, final int column) {
+        if (exp instanceof NashornException) {
+            final NashornException nexp = (NashornException)exp;
+            return nexp.getLineNumber() == line && nexp.getColumnNumber() == column;
+        }
+        return false;
+    }
+
+
+    /**
+     * Read more lines of code if we got SyntaxError at EOF and we can it fine by
+     * by reading more lines of code from the user. This is used for multiline editing.
+     *
+     * @param firstLine First line of code from the user
+     * @param exp       Exception thrown by evaluting first line code
+     * @param in        Console to get read more lines from the user
+     * @param prompt    Prompt to be printed to read more lines from the user
+     * @param err       PrintWriter to print any errors in the proecess of reading
+     *
+     * @return Complete code read from the user including the first line. This is null
+     *         if any error or the user discarded multiline editing by Ctrl-C.
+     */
+    String readMoreLines(final String firstLine, final Exception exp, final Console in,
+            final String prompt, final PrintWriter err) {
+        int line = 1;
+        final StringBuilder buf = new StringBuilder(firstLine);
+        while (true) {
+            buf.append('\n');
+            String curLine = null;
+            try {
+                curLine = in.readLine(prompt);
+                buf.append(curLine);
+                line++;
+            } catch (final Throwable th) {
+                if (th instanceof UserInterruptException) {
+                    // Ctrl-C from user - discard the whole thing silently!
+                    return null;
+                } else {
+                    // print anything else -- but still discard the code
+                    err.println(th);
+                    if (env._dump_on_error) {
+                        th.printStackTrace(err);
+                    }
+                    return null;
+                }
+            }
+
+            final String allLines = buf.toString();
+            try {
+                parser.parse("<shell>", allLines, null);
+            } catch (final Exception pexp) {
+                // Do we have a parse error at the end of current line?
+                // If so, read more lines from the console.
+                if (isParseErrorAt(pexp, line, curLine.length())) {
+                    continue;
+                } else {
+                    // print anything else and bail out!
+                    err.println(pexp);
+                    if (env._dump_on_error) {
+                        pexp.printStackTrace(err);
+                    }
+                    return null;
+                }
+            }
+
+            // We have complete parseable code!
+            return buf.toString();
+        }
     }
 
     // Pattern to match a unfinished member selection expression. object part and "."
     // but property name missing pattern.
     private static final Pattern SELECT_PROP_MISSING = Pattern.compile(".*\\.\\s*");
 
+    // Pattern to match load call
+    private static final Pattern LOAD_CALL = Pattern.compile("\\s*load\\s*\\(\\s*");
+
     @Override
     public int complete(final String test, final int cursor, final List<CharSequence> result) {
         // check that cursor is at the end of test string. Do not complete in the middle!
@@ -96,6 +220,19 @@
 
         final ExpressionTree topExpr = getTopLevelExpression(parser, completeExpr);
         if (topExpr == null) {
+            // special case for load call that looks like "load(" with optional whitespaces
+            if (LOAD_CALL.matcher(test).matches()) {
+                String name = readFileName(context.getErr());
+                if (name != null) {
+                    // handle '\' file separator
+                    if (BACKSLASH_FILE_SEPARATOR) {
+                        name = name.replace("\\", "\\\\");
+                    }
+                    result.add("\"" + name + "\")");
+                    return cursor + name.length() + 3;
+                }
+            }
+
             // did not parse to be a top level expression, no suggestions!
             return cursor;
         }
@@ -113,6 +250,38 @@
         }
     }
 
+    // Internals only below this point
+
+    // read file name from the user using by showing a swing file chooser diablog
+    private static String readFileName(final PrintWriter err) {
+        // if running on AWT Headless mode, don't attempt swing dialog box!
+        if (Main.HEADLESS) {
+            return null;
+        }
+
+        final FutureTask<String> fileChooserTask = new FutureTask<String>(() -> {
+            // show a file chooser dialog box
+            final JFileChooser chooser = new JFileChooser();
+            chooser.setFileFilter(new FileNameExtensionFilter("JavaScript Files", "js"));
+            final int retVal = chooser.showOpenDialog(null);
+            return retVal == JFileChooser.APPROVE_OPTION ?
+                chooser.getSelectedFile().getAbsolutePath() : null;
+        });
+
+        SwingUtilities.invokeLater(fileChooserTask);
+
+        try {
+            return fileChooserTask.get();
+        } catch (final ExecutionException | InterruptedException e) {
+            err.println(e);
+            if (Main.DEBUG) {
+                e.printStackTrace();
+            }
+        }
+        return null;
+    }
+
+    // fill properties of the incomplete member expression
     private int completeMemberSelect(final String exprStr, final int cursor, final List<CharSequence> result,
                 final MemberSelectTree select, final boolean endsWithDot) {
         final ExpressionTree objExpr = select.getExpression();
@@ -122,19 +291,22 @@
         Object obj = null;
         try {
             obj = context.eval(global, objExprCode, global, "<suggestions>");
-        } catch (Exception ignored) {
-            // throw the exception - this is during tab-completion
+        } catch (Exception exp) {
+            // throw away the exception - this is during tab-completion
+            if (Main.DEBUG) {
+                exp.printStackTrace();
+            }
         }
 
         if (obj != null && obj != ScriptRuntime.UNDEFINED) {
             if (endsWithDot) {
                 // no user specified "prefix". List all properties of the object
-                result.addAll(PropertiesHelper.getProperties(obj));
+                result.addAll(propsHelper.getProperties(obj));
                 return cursor;
             } else {
                 // list of properties matching the user specified prefix
                 final String prefix = select.getIdentifier();
-                result.addAll(PropertiesHelper.getProperties(obj, prefix));
+                result.addAll(propsHelper.getProperties(obj, prefix));
                 return cursor - prefix.length();
             }
         }
@@ -142,10 +314,11 @@
         return cursor;
     }
 
+    // fill properties for the given (partial) identifer
     private int completeIdentifier(final String test, final int cursor, final List<CharSequence> result,
                 final IdentifierTree ident) {
         final String name = ident.getName();
-        result.addAll(PropertiesHelper.getProperties(global, name));
+        result.addAll(propsHelper.getProperties(global, name));
         return cursor - name.length();
     }
 
@@ -169,6 +342,7 @@
         return null;
     }
 
+    // get the right most expreesion of the given expression
     private Tree getRightMostExpression(final ExpressionTree expr) {
         return expr.accept(new SimpleTreeVisitorES5_1<Tree, Void>() {
             @Override
@@ -228,4 +402,27 @@
             }
         }, null);
     }
+
+    // create a Parser instance that uses compatible command line options of the
+    // current ScriptEnvironment being used for REPL.
+    private static Parser createParser(final ScriptEnvironment env) {
+        final List<String> args = new ArrayList<>();
+        if (env._const_as_var) {
+            args.add("--const-as-var");
+        }
+
+        if (env._no_syntax_extensions) {
+            args.add("-nse");
+        }
+
+        if (env._scripting) {
+            args.add("-scripting");
+        }
+
+        if (env._strict) {
+            args.add("-strict");
+        }
+
+        return Parser.create(args.toArray(new String[0]));
+    }
 }
diff --git a/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/PackagesHelper.java b/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/PackagesHelper.java
new file mode 100644
index 0000000..57b7440
--- /dev/null
+++ b/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/PackagesHelper.java
@@ -0,0 +1,171 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. 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.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.nashorn.tools.jjs;
+
+import java.io.IOException;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.EnumSet;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import javax.tools.JavaCompiler;
+import javax.tools.JavaFileManager.Location;
+import javax.tools.JavaFileObject;
+import javax.tools.StandardJavaFileManager;
+import javax.tools.StandardLocation;
+import javax.tools.ToolProvider;
+
+/**
+ * A helper class to compute properties of a Java package object. Properties of
+ * package object are (simple) top level class names in that java package and
+ * immediate subpackages of that package.
+ */
+final class PackagesHelper {
+    // JavaCompiler may be null on certain platforms (eg. JRE)
+    private static final JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
+
+    /**
+     * Is Java package properties helper available?
+     *
+     * @return true if package properties support is available
+     */
+    static boolean isAvailable() {
+        return compiler != null;
+    }
+
+    private final StandardJavaFileManager fm;
+    private final Set<JavaFileObject.Kind> fileKinds;
+
+    /**
+     * Construct a new PackagesHelper.
+     *
+     * @param classPath Class path to compute properties of java package objects
+     */
+    PackagesHelper(final String classPath) throws IOException {
+        assert isAvailable() : "no java compiler found!";
+
+        fm = compiler.getStandardFileManager(null, null, null);
+        fileKinds = EnumSet.of(JavaFileObject.Kind.CLASS);
+
+        if (classPath != null && !classPath.isEmpty()) {
+            fm.setLocation(StandardLocation.CLASS_PATH, getFiles(classPath));
+        } else {
+            // no classpath set. Make sure that it is empty and not any default like "."
+            fm.setLocation(StandardLocation.CLASS_PATH, Collections.<File>emptyList());
+        }
+    }
+
+    // LRU cache for java package properties lists
+    private final LinkedHashMap<String, List<String>> propsCache =
+        new LinkedHashMap<String, List<String>>(32, 0.75f, true) {
+            private static final int CACHE_SIZE = 100;
+            private static final long serialVersionUID = 1;
+
+            @Override
+            protected boolean removeEldestEntry(final Map.Entry<String, List<String>> eldest) {
+                return size() > CACHE_SIZE;
+            }
+        };
+
+    /**
+     * Return the list of properties of the given Java package or package prefix
+     *
+     * @param pkg Java package name or package prefix name
+     * @return the list of properties of the given Java package or package prefix
+     */
+    List<String> getPackageProperties(final String pkg) {
+        // check the cache first
+        if (propsCache.containsKey(pkg)) {
+            return propsCache.get(pkg);
+        }
+
+        try {
+            // make sorted list of properties
+            final List<String> props = new ArrayList<>(listPackage(pkg));
+            Collections.sort(props);
+            propsCache.put(pkg, props);
+            return props;
+        } catch (final IOException exp) {
+            if (Main.DEBUG) {
+                exp.printStackTrace();
+            }
+            return Collections.<String>emptyList();
+        }
+    }
+
+    public void close() throws IOException {
+        fm.close();
+    }
+
+    private Set<String> listPackage(final String pkg) throws IOException {
+        final Set<String> props = new HashSet<>();
+        listPackage(StandardLocation.PLATFORM_CLASS_PATH, pkg, props);
+        listPackage(StandardLocation.CLASS_PATH, pkg, props);
+        return props;
+    }
+
+    private void listPackage(final Location loc, final String pkg, final Set<String> props)
+            throws IOException {
+        for (JavaFileObject file : fm.list(loc, pkg, fileKinds, true)) {
+            final String binaryName = fm.inferBinaryName(loc, file);
+            // does not start with the given package prefix
+            if (!binaryName.startsWith(pkg + ".")) {
+                continue;
+            }
+
+            final int nextDot = binaryName.indexOf('.', pkg.length() + 1);
+            final int start = pkg.length() + 1;
+
+            if (nextDot != -1) {
+                // subpackage - eg. "regex" for "java.util"
+                props.add(binaryName.substring(start, nextDot));
+            } else {
+                // class - filter out nested, inner, anonymous, local classes.
+                // Dynalink supported public nested classes as properties of
+                // StaticClass object anyway. We don't want to expose those
+                // "$" internal names as properties of package object.
+
+                final String clsName = binaryName.substring(start);
+                if (clsName.indexOf('$') == -1) {
+                    props.add(clsName);
+                }
+            }
+        }
+    }
+
+    // return list of File objects for the given class path
+    private static List<File> getFiles(final String classPath) {
+        return Stream.of(classPath.split(File.pathSeparator))
+                    .map(File::new)
+                    .collect(Collectors.toList());
+    }
+}
diff --git a/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/PropertiesHelper.java b/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/PropertiesHelper.java
index aada922..c37e1f4 100644
--- a/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/PropertiesHelper.java
+++ b/nashorn/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/PropertiesHelper.java
@@ -25,6 +25,7 @@
 
 package jdk.nashorn.tools.jjs;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -32,6 +33,7 @@
 import java.util.WeakHashMap;
 import java.util.stream.Collectors;
 import jdk.nashorn.internal.runtime.JSType;
+import jdk.nashorn.internal.runtime.NativeJavaPackage;
 import jdk.nashorn.internal.runtime.PropertyMap;
 import jdk.nashorn.internal.runtime.ScriptObject;
 import jdk.nashorn.internal.runtime.ScriptRuntime;
@@ -41,19 +43,59 @@
  * A helper class to get properties of a given object for source code completion.
  */
 final class PropertiesHelper {
-    private PropertiesHelper() {}
-
+    // Java package properties helper, may be null
+    private PackagesHelper pkgsHelper;
     // cached properties list
-    private static final WeakHashMap<Object, List<String>> propsCache = new WeakHashMap<>();
+    private final WeakHashMap<Object, List<String>> propsCache = new WeakHashMap<>();
 
-    // returns the list of properties of the given object
-    static List<String> getProperties(final Object obj) {
+    /**
+     * Construct a new PropertiesHelper.
+     *
+     * @param classPath Class path to compute properties of java package objects
+     */
+    PropertiesHelper(final String classPath) {
+        if (PackagesHelper.isAvailable()) {
+            try {
+                this.pkgsHelper = new PackagesHelper(classPath);
+            } catch (final IOException exp) {
+                if (Main.DEBUG) {
+                    exp.printStackTrace();
+                }
+                this.pkgsHelper = null;
+            }
+        }
+    }
+
+    void close() throws Exception {
+        propsCache.clear();
+        pkgsHelper.close();
+    }
+
+    /**
+     * returns the list of properties of the given object.
+     *
+     * @param obj object whose property list is returned
+     * @return the list of properties of the given object
+     */
+    List<String> getProperties(final Object obj) {
         assert obj != null && obj != ScriptRuntime.UNDEFINED;
 
+        // wrap JS primitives as objects before gettting properties
         if (JSType.isPrimitive(obj)) {
             return getProperties(JSType.toScriptObject(obj));
         }
 
+        // Handle Java package prefix case first. Should do it before checking
+        // for its super class ScriptObject!
+        if (obj instanceof NativeJavaPackage) {
+            if (pkgsHelper != null) {
+                return pkgsHelper.getPackageProperties(((NativeJavaPackage)obj).getName());
+            } else {
+                return Collections.<String>emptyList();
+            }
+        }
+
+        // script object - all inherited and non-enumerable, non-index properties
         if (obj instanceof ScriptObject) {
             final ScriptObject sobj = (ScriptObject)obj;
             final PropertyMap pmap = sobj.getMap();
@@ -71,6 +113,7 @@
             return props;
         }
 
+        // java class case - don't refer to StaticClass directly
         if (NativeJava.isType(ScriptRuntime.UNDEFINED, obj)) {
             if (propsCache.containsKey(obj)) {
                 return propsCache.get(obj);
@@ -82,6 +125,7 @@
             return props;
         }
 
+        // any other Java object
         final Class<?> clazz = obj.getClass();
         if (propsCache.containsKey(clazz)) {
             return propsCache.get(clazz);
@@ -94,8 +138,14 @@
         return props;
     }
 
-    // returns the list of properties of the given object that start with the given prefix
-    static List<String> getProperties(final Object obj, final String prefix) {
+    /**
+     * Returns the list of properties of the given object that start with the given prefix.
+     *
+     * @param obj object whose property list is returned
+     * @param prefix property prefix to be matched
+     * @return the list of properties of the given object
+     */
+    List<String> getProperties(final Object obj, final String prefix) {
         assert prefix != null && !prefix.isEmpty();
         return getProperties(obj).stream()
                    .filter(s -> s.startsWith(prefix))
diff --git a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/CodeGenerator.java b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/CodeGenerator.java
index 468683a..a9c4590 100644
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/CodeGenerator.java
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/CodeGenerator.java
@@ -249,7 +249,7 @@
     private final Set<String> emittedMethods = new HashSet<>();
 
     // Function Id -> ContinuationInfo. Used by compilation of rest-of function only.
-    private final Map<Integer, ContinuationInfo> fnIdToContinuationInfo = new HashMap<>();
+    private ContinuationInfo continuationInfo;
 
     private final Deque<Label> scopeEntryLabels = new ArrayDeque<>();
 
@@ -349,11 +349,20 @@
         final int flags = getScopeCallSiteFlags(symbol);
         if (isFastScope(symbol)) {
             // Only generate shared scope getter for fast-scope symbols so we know we can dial in correct scope.
-            if (symbol.getUseCount() > SharedScopeCall.FAST_SCOPE_GET_THRESHOLD && !isOptimisticOrRestOf()) {
-                method.loadCompilerConstant(SCOPE);
-                // As shared scope vars are only used in non-optimistic compilation, we switch from using TypeBounds to
+            if (symbol.getUseCount() > SharedScopeCall.FAST_SCOPE_GET_THRESHOLD && !identNode.isOptimistic()) {
+                // As shared scope vars are only used with non-optimistic identifiers, we switch from using TypeBounds to
                 // just a single definitive type, resultBounds.widest.
-                loadSharedScopeVar(resultBounds.widest, symbol, flags);
+                new OptimisticOperation(identNode, TypeBounds.OBJECT) {
+                    @Override
+                    void loadStack() {
+                        method.loadCompilerConstant(SCOPE);
+                    }
+
+                    @Override
+                    void consumeStack() {
+                        loadSharedScopeVar(resultBounds.widest, symbol, flags);
+                    }
+                }.emit();
             } else {
                 new LoadFastScopeVar(identNode, resultBounds, flags).emit();
             }
@@ -384,10 +393,6 @@
         return continuationEntryPoints != null;
     }
 
-    private boolean isOptimisticOrRestOf() {
-        return useOptimisticTypes() || isRestOf();
-    }
-
     private boolean isCurrentContinuationEntryPoint(final int programPoint) {
         return isRestOf() && getCurrentContinuationEntryPoint() == programPoint;
     }
@@ -464,12 +469,8 @@
     }
 
     private MethodEmitter loadSharedScopeVar(final Type valueType, final Symbol symbol, final int flags) {
-        assert !isOptimisticOrRestOf();
-        if (isFastScope(symbol)) {
-            method.load(getScopeProtoDepth(lc.getCurrentBlock(), symbol));
-        } else {
-            method.load(-1);
-        }
+        assert isFastScope(symbol);
+        method.load(getScopeProtoDepth(lc.getCurrentBlock(), symbol));
         return lc.getScopeGet(unit, symbol, valueType, flags).generateInvoke(method);
     }
 
@@ -1573,7 +1574,7 @@
                     } else if (useCount <= SharedScopeCall.FAST_SCOPE_CALL_THRESHOLD
                             || !isFastScope(symbol) && useCount <= SharedScopeCall.SLOW_SCOPE_CALL_THRESHOLD
                             || CodeGenerator.this.lc.inDynamicScope()
-                            || isOptimisticOrRestOf()) {
+                            || callNode.isOptimistic()) {
                         scopeCall(node, flags);
                     } else {
                         sharedScopeCall(node, flags);
@@ -2070,8 +2071,6 @@
 
     @Override
     public boolean enterFunctionNode(final FunctionNode functionNode) {
-        final int fnId = functionNode.getId();
-
         if (skipFunction(functionNode)) {
             // In case we are not generating code for the function, we must create or retrieve the function object and
             // load it on the stack here.
@@ -2109,9 +2108,9 @@
             method.begin();
 
             if (isRestOf()) {
-                final ContinuationInfo ci = new ContinuationInfo();
-                fnIdToContinuationInfo.put(fnId, ci);
-                method.gotoLoopStart(ci.getHandlerLabel());
+                assert continuationInfo == null;
+                continuationInfo = new ContinuationInfo();
+                method.gotoLoopStart(continuationInfo.getHandlerLabel());
             }
         }
 
@@ -5308,7 +5307,7 @@
     }
 
     private ContinuationInfo getContinuationInfo() {
-        return fnIdToContinuationInfo.get(lc.getCurrentFunction().getId());
+        return continuationInfo;
     }
 
     private void generateContinuationHandler() {
diff --git a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/parser/Lexer.java b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/parser/Lexer.java
index 3528ab6..c7b397f 100644
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/parser/Lexer.java
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/parser/Lexer.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2015, Oracle and/or its affiliates. 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
@@ -1451,9 +1451,22 @@
                 skip(3);
             }
 
-            // Scan identifier.
+            // Scan identifier. It might be quoted, indicating that no string editing should take place.
+            final char quoteChar = ch0;
+            final boolean noStringEditing = quoteChar == '"' || quoteChar == '\'';
+            if (noStringEditing) {
+                skip(1);
+            }
             final int identStart = position;
             final int identLength = scanIdentifier();
+            if (noStringEditing) {
+                if (ch0 != quoteChar) {
+                    error(Lexer.message("here.non.matching.delimiter"), last, position, position);
+                    restoreState(saved);
+                    return false;
+                }
+                skip(1);
+            }
 
             // Check for identifier.
             if (identLength == 0) {
@@ -1523,7 +1536,7 @@
             }
 
             // Edit string if appropriate.
-            if (scripting && !stringState.isEmpty()) {
+            if (!noStringEditing && !stringState.isEmpty()) {
                 editString(STRING, stringState);
             } else {
                 // Add here string.
diff --git a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/ScriptEnvironment.java b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/ScriptEnvironment.java
index 99cef12..e60e67b 100644
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/ScriptEnvironment.java
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/ScriptEnvironment.java
@@ -46,6 +46,11 @@
  * and output and error writers, top level Namespace etc.
  */
 public final class ScriptEnvironment {
+    // Primarily intended to be used in test environments so that eager compilation tests work without an
+    // error when tested with optimistic compilation.
+    private static final boolean ALLOW_EAGER_COMPILATION_SILENT_OVERRIDE = Options.getBooleanProperty(
+            "nashorn.options.allowEagerCompilationSilentOverride", false);
+
     /** Output writer for this environment */
     private final PrintWriter out;
 
@@ -61,6 +66,9 @@
     /** Size of the per-global Class cache size */
     public final int     _class_cache_size;
 
+    /** -classpath value. */
+    public final String  _classpath;
+
     /** Only compile script, do not run it or generate other ScriptObjects */
     public final boolean _compile_only;
 
@@ -220,6 +228,7 @@
         this.options = options;
 
         _class_cache_size     = options.getInteger("class.cache.size");
+        _classpath            = options.getString("classpath");
         _compile_only         = options.getBoolean("compile.only");
         _const_as_var         = options.getBoolean("const.as.var");
         _debug_lines          = options.getBoolean("debug.lines");
@@ -237,8 +246,20 @@
         }
         _fx                   = options.getBoolean("fx");
         _global_per_engine    = options.getBoolean("global.per.engine");
-        _lazy_compilation     = options.getBoolean("lazy.compilation");
         _optimistic_types     = options.getBoolean("optimistic.types");
+        final boolean lazy_compilation = options.getBoolean("lazy.compilation");
+        if (!lazy_compilation && _optimistic_types) {
+            if (!ALLOW_EAGER_COMPILATION_SILENT_OVERRIDE) {
+                throw new IllegalStateException(
+                        ECMAErrors.getMessage(
+                                "config.error.eagerCompilationConflictsWithOptimisticTypes",
+                                options.getOptionTemplateByKey("lazy.compilation").getName(),
+                                options.getOptionTemplateByKey("optimistic.types").getName()));
+            }
+            _lazy_compilation = true;
+        } else {
+            _lazy_compilation = lazy_compilation;
+        }
         _loader_per_compile   = options.getBoolean("loader.per.compile");
         _no_java              = options.getBoolean("no.java");
         _no_syntax_extensions = options.getBoolean("no.syntax.extensions");
diff --git a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/Timing.java b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/Timing.java
index e1d464d..2cc5257 100644
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/Timing.java
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/Timing.java
@@ -28,12 +28,14 @@
 import java.io.IOException;
 import java.io.StringReader;
 import java.util.ArrayList;
-import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.LongAdder;
+import java.util.function.Function;
 import java.util.function.Supplier;
-
 import jdk.nashorn.internal.codegen.CompileUnit;
 import jdk.nashorn.internal.runtime.logging.DebugLogger;
 import jdk.nashorn.internal.runtime.logging.Loggable;
@@ -156,11 +158,12 @@
     }
 
     final class TimeSupplier implements Supplier<String> {
-        private final Map<String, Long> timings;
-
-        TimeSupplier() {
-            timings   = new LinkedHashMap<>();
-        }
+        private final Map<String, LongAdder> timings = new ConcurrentHashMap<>();
+        private final LinkedBlockingQueue<String> orderedTimingNames = new LinkedBlockingQueue<>();
+        private final Function<String, LongAdder> newTimingCreator = s -> {
+            orderedTimingNames.add(s);
+            return new LongAdder();
+        };
 
         String[] getStrings() {
             final List<String> strs = new ArrayList<>();
@@ -184,26 +187,26 @@
             int  maxKeyLength = 0;
             int  maxValueLength = 0;
 
-            for (final Map.Entry<String, Long> entry : timings.entrySet()) {
+            for (final Map.Entry<String, LongAdder> entry : timings.entrySet()) {
                 maxKeyLength   = Math.max(maxKeyLength, entry.getKey().length());
-                maxValueLength = Math.max(maxValueLength, toMillisPrint(entry.getValue()).length());
+                maxValueLength = Math.max(maxValueLength, toMillisPrint(entry.getValue().longValue()).length());
             }
             maxKeyLength++;
 
             final StringBuilder sb = new StringBuilder();
             sb.append("Accumulated compilation phase timings:\n\n");
-            for (final Map.Entry<String, Long> entry : timings.entrySet()) {
+            for (final String timingName: orderedTimingNames) {
                 int len;
 
                 len = sb.length();
-                sb.append(entry.getKey());
+                sb.append(timingName);
                 len = sb.length() - len;
 
                 while (len++ < maxKeyLength) {
                     sb.append(' ');
                 }
 
-                final Long duration = entry.getValue();
+                final long duration = timings.get(timingName).longValue();
                 final String strDuration = toMillisPrint(duration);
                 len = strDuration.length();
                 for (int i = 0; i < maxValueLength - len; i++) {
@@ -233,11 +236,7 @@
         }
 
         private void accumulateTime(final String module, final long duration) {
-            Long accumulatedTime = timings.get(module);
-            if (accumulatedTime == null) {
-                accumulatedTime = 0L;
-            }
-            timings.put(module, accumulatedTime + duration);
+            timings.computeIfAbsent(module, newTimingCreator).add(duration);
         }
     }
 }
diff --git a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/UserAccessorProperty.java b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/UserAccessorProperty.java
index d14dd8e..5313d78 100644
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/UserAccessorProperty.java
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/UserAccessorProperty.java
@@ -24,7 +24,6 @@
  */
 
 package jdk.nashorn.internal.runtime;
-
 import static jdk.nashorn.internal.lookup.Lookup.MH;
 import static jdk.nashorn.internal.runtime.ECMAErrors.typeError;
 import static jdk.nashorn.internal.runtime.ScriptRuntime.UNDEFINED;
@@ -34,6 +33,7 @@
 import java.lang.invoke.MethodHandle;
 import java.lang.invoke.MethodHandles;
 import java.lang.invoke.MethodType;
+import java.util.concurrent.Callable;
 import jdk.nashorn.internal.lookup.Lookup;
 import jdk.nashorn.internal.runtime.linker.Bootstrap;
 import jdk.nashorn.internal.runtime.linker.NashornCallSiteDescriptor;
@@ -80,6 +80,15 @@
     private final static MethodHandle INVOKE_LONG_SETTER = findOwnMH_S("invokeLongSetter", void.class, Accessors.class, MethodHandle.class, String.class, Object.class, long.class);
     private final static MethodHandle INVOKE_NUMBER_SETTER = findOwnMH_S("invokeNumberSetter", void.class, Accessors.class, MethodHandle.class, String.class, Object.class, double.class);
 
+    private static final Object OBJECT_GETTER_INVOKER_KEY = new Object();
+    private static MethodHandle getObjectGetterInvoker() {
+        return Context.getGlobal().getDynamicInvoker(OBJECT_GETTER_INVOKER_KEY, new Callable<MethodHandle>() {
+            @Override
+            public MethodHandle call() throws Exception {
+                return getINVOKE_UA_GETTER(Object.class, INVALID_PROGRAM_POINT);
+            }
+        });
+    }
 
     static MethodHandle getINVOKE_UA_GETTER(final Class<?> returnType, final int programPoint) {
         if (UnwarrantedOptimismException.isValid(programPoint)) {
@@ -90,6 +99,16 @@
         }
     }
 
+    private static final Object OBJECT_SETTER_INVOKER_KEY = new Object();
+    private static MethodHandle getObjectSetterInvoker() {
+        return Context.getGlobal().getDynamicInvoker(OBJECT_SETTER_INVOKER_KEY, new Callable<MethodHandle>() {
+            @Override
+            public MethodHandle call() throws Exception {
+                return getINVOKE_UA_SETTER(Object.class);
+            }
+        });
+    }
+
     static MethodHandle getINVOKE_UA_SETTER(final Class<?> valueType) {
         return Bootstrap.createDynamicInvoker("dyn:call", void.class, Object.class, Object.class, valueType);
     }
@@ -181,7 +200,7 @@
     @Override
     public Object getObjectValue(final ScriptObject self, final ScriptObject owner) {
         try {
-            return invokeObjectGetter(getAccessors((owner != null) ? owner : self), getINVOKE_UA_GETTER(Object.class, INVALID_PROGRAM_POINT), self);
+            return invokeObjectGetter(getAccessors((owner != null) ? owner : self), getObjectGetterInvoker(), self);
         } catch (final Error | RuntimeException t) {
             throw t;
         } catch (final Throwable t) {
@@ -207,7 +226,7 @@
     @Override
     public void setValue(final ScriptObject self, final ScriptObject owner, final Object value, final boolean strict) {
         try {
-            invokeObjectSetter(getAccessors((owner != null) ? owner : self), getINVOKE_UA_SETTER(Object.class), strict ? getKey() : null, self, value);
+            invokeObjectSetter(getAccessors((owner != null) ? owner : self), getObjectSetterInvoker(), strict ? getKey() : null, self, value);
         } catch (final Error | RuntimeException t) {
             throw t;
         } catch (final Throwable t) {
diff --git a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/options/OptionTemplate.java b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/options/OptionTemplate.java
index 5ec3ed3..2fae703 100644
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/options/OptionTemplate.java
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/options/OptionTemplate.java
@@ -304,8 +304,8 @@
         }
     }
 
-    boolean matches(final String key0) {
-        return key0.equals(this.shortName) || key0.equals(this.name);
+    boolean nameMatches(final String aName) {
+        return aName.equals(this.shortName) || aName.equals(this.name);
     }
 
     private static final int LINE_BREAK = 64;
diff --git a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/options/Options.java b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/options/Options.java
index 58f3b27..b134742 100644
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/options/Options.java
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/options/Options.java
@@ -520,9 +520,25 @@
         }
     }
 
-    private static OptionTemplate getOptionTemplate(final String key) {
+    /**
+     * Retrieves an option template identified by key.
+     * @param shortKey the short (that is without the e.g. "nashorn.option." part) key
+     * @return the option template identified by the key
+     * @throws IllegalArgumentException if the key doesn't specify an existing template
+     */
+    public OptionTemplate getOptionTemplateByKey(final String shortKey) {
+        final String fullKey = key(shortKey);
+        for(final OptionTemplate t: validOptions) {
+            if(t.getKey().equals(fullKey)) {
+                return t;
+            }
+        }
+        throw new IllegalArgumentException(shortKey);
+    }
+
+    private static OptionTemplate getOptionTemplateByName(final String name) {
         for (final OptionTemplate t : Options.validOptions) {
-            if (t.matches(key)) {
+            if (t.nameMatches(name)) {
                 return t;
             }
         }
@@ -682,7 +698,7 @@
             }
 
             final String token = st.nextToken();
-            this.template = Options.getOptionTemplate(token);
+            this.template = getOptionTemplateByName(token);
             if (this.template == null) {
                 throw new IllegalArgumentException(argument);
             }
diff --git a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/resources/Messages.properties b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/resources/Messages.properties
index efb9998..ca026b5 100644
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/resources/Messages.properties
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/resources/Messages.properties
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2010, 2015, Oracle and/or its affiliates. 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
@@ -31,6 +31,7 @@
 lexer.error.json.invalid.number=Invalid JSON number format
 lexer.error.invalid.escape.char=Invalid escape character
 lexer.error.illegal.identifier.character=Illegal character in identifier
+lexer.error.here.non.matching.delimiter=Quoted here string end marker must have matching delimiters
 
 parser.error.illegal.continue.stmt=Illegal continue statement
 parser.error.illegal.break.stmt=Illegal break statement
@@ -172,7 +173,9 @@
 syntax.error.unprotected.switch.declaration=Unsupported {0} declaration in unprotected switch statement
 
 io.error.cant.write=cannot write "{0}"
+
 config.error.no.dest=no destination directory supplied
+config.error.eagerCompilationConflictsWithOptimisticTypes={0}=false (eager compilation) is not compatible with {1}=true.
 
 uri.error.bad.uri=Bad URI "{0}" near offset {1}
 list.adapter.null.global=Attempted to create the adapter from outside a JavaScript execution context.
diff --git a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/tools/resources/Shell.properties b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/tools/resources/Shell.properties
index 6f4c973..d18c21b 100644
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/tools/resources/Shell.properties
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/tools/resources/Shell.properties
@@ -29,4 +29,6 @@
 
 shell.prompt=jjs> 
 
+shell.prompt2=...> 
 
+no.editor=AWT Headless mode set and no external editor is configured!
diff --git a/nashorn/test/script/basic/JDK-8053905.js b/nashorn/test/script/basic/JDK-8053905.js
index aa6c9db..9d47c97 100644
--- a/nashorn/test/script/basic/JDK-8053905.js
+++ b/nashorn/test/script/basic/JDK-8053905.js
@@ -28,6 +28,7 @@
  * @runif external.octane
  * @fork
  * @option -Dnashorn.compiler.splitter.threshold=1000
+ * @option -Dnashorn.options.allowEagerCompilationSilentOverride
  * @option -scripting
  * @option --lazy-compilation=false
  */
diff --git a/nashorn/test/script/basic/JDK-8058561.js b/nashorn/test/script/basic/JDK-8058561.js
index f27d1d1..9f8f910 100644
--- a/nashorn/test/script/basic/JDK-8058561.js
+++ b/nashorn/test/script/basic/JDK-8058561.js
@@ -26,7 +26,9 @@
  *
  * @test
  * @run
+ * @fork
  * @option --lazy-compilation=false
+ * @option -Dnashorn.options.allowEagerCompilationSilentOverride
  */
 
 // Just attempting to compile this caused the NPE
diff --git a/nashorn/test/script/basic/JDK-8078612_eager_1a.js b/nashorn/test/script/basic/JDK-8078612_eager_1a.js
index 11d00c6..1ff5a65 100644
--- a/nashorn/test/script/basic/JDK-8078612_eager_1a.js
+++ b/nashorn/test/script/basic/JDK-8078612_eager_1a.js
@@ -29,6 +29,7 @@
  * @option -pcc
  * @option --lazy-compilation=false
  * @option -Dnashorn.persistent.code.cache=build/nashorn_code_cache
+ * @option -Dnashorn.options.allowEagerCompilationSilentOverride
  * @fork
  */
 
diff --git a/nashorn/test/script/basic/JDK-8078612_eager_1b.js b/nashorn/test/script/basic/JDK-8078612_eager_1b.js
index 11d00c6..1ff5a65 100644
--- a/nashorn/test/script/basic/JDK-8078612_eager_1b.js
+++ b/nashorn/test/script/basic/JDK-8078612_eager_1b.js
@@ -29,6 +29,7 @@
  * @option -pcc
  * @option --lazy-compilation=false
  * @option -Dnashorn.persistent.code.cache=build/nashorn_code_cache
+ * @option -Dnashorn.options.allowEagerCompilationSilentOverride
  * @fork
  */
 
diff --git a/nashorn/test/script/basic/JDK-8078612_eager_2a.js b/nashorn/test/script/basic/JDK-8078612_eager_2a.js
index 4904d8e..5915efc 100644
--- a/nashorn/test/script/basic/JDK-8078612_eager_2a.js
+++ b/nashorn/test/script/basic/JDK-8078612_eager_2a.js
@@ -29,6 +29,7 @@
  * @option -pcc
  * @option --lazy-compilation=false
  * @option -Dnashorn.persistent.code.cache=build/nashorn_code_cache
+ * @option -Dnashorn.options.allowEagerCompilationSilentOverride
  * @fork
  */
 
diff --git a/nashorn/test/script/basic/JDK-8078612_eager_2b.js b/nashorn/test/script/basic/JDK-8078612_eager_2b.js
index 4904d8e..5915efc 100644
--- a/nashorn/test/script/basic/JDK-8078612_eager_2b.js
+++ b/nashorn/test/script/basic/JDK-8078612_eager_2b.js
@@ -29,6 +29,7 @@
  * @option -pcc
  * @option --lazy-compilation=false
  * @option -Dnashorn.persistent.code.cache=build/nashorn_code_cache
+ * @option -Dnashorn.options.allowEagerCompilationSilentOverride
  * @fork
  */
 
diff --git a/nashorn/test/script/nosecurity/JDK-8073613.js b/nashorn/test/script/nosecurity/JDK-8073613.js
new file mode 100644
index 0000000..5376ba7
--- /dev/null
+++ b/nashorn/test/script/nosecurity/JDK-8073613.js
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * JDK-8073613: Here documents: how to avoid string interpolation?
+ *
+ * @test
+ * @option -scripting
+ * @run
+ */
+
+var a = 2,
+    b = 3
+
+print(<<EOD)
+${a}${b}
+EOD
+
+print(<<"EOD")
+${a}${b}
+EOD
+
+print(<<'EOM')
+${a}${b}
+EOM
+
+print(<<"EOM")
+$\{a}
+EOM
+
diff --git a/nashorn/test/script/nosecurity/JDK-8073613.js.EXPECTED b/nashorn/test/script/nosecurity/JDK-8073613.js.EXPECTED
new file mode 100644
index 0000000..7ef62b4
--- /dev/null
+++ b/nashorn/test/script/nosecurity/JDK-8073613.js.EXPECTED
@@ -0,0 +1,4 @@
+23
+${a}${b}
+${a}${b}
+$\{a}