Merge jdk8-b45
authorduke
Wed, 05 Jul 2017 18:14:56 +0200
changeset 13082 9b19b2302c28
parent 13081 3f079a7e0e94 (diff)
parent 12975 c5495c849267 (current diff)
child 13083 d159170bfc9f
child 13084 8e117f8b08eb
child 13085 d6b8d5c4b1b7
child 13119 c35f7a2acbec
child 13121 3b78e26c0c38
child 13123 b5166f281c42
child 13125 a454fca4fd87
child 13127 b7b7fb648bf6
child 13132 bd88bb8dd3af
child 13141 79e8276fc655
child 13146 6248ba961deb
child 13151 efb05678b628
child 13164 72c5d01a857d
child 13165 679567fae315
child 13171 1ac5e9a54a6e
child 13177 a2cf86579ad4
child 13184 8bc3123a920e
Merge
--- a/.hgtags-top-repo	Wed Jul 05 18:13:50 2017 +0200
+++ b/.hgtags-top-repo	Wed Jul 05 18:14:56 2017 +0200
@@ -165,3 +165,4 @@
 1a8c7c530f8a9b7f5bdb9b0693b2f5435ca5205e jdk8-b41
 1ce5dc16416611c58b7480ca67a2eee5153498a6 jdk8-b42
 661c9aae602bbd9766d12590800c90f1edd1d8dd jdk8-b43
+e4f81a817447c3a4f6868f083c81c2fb1b15d44c jdk8-b44
--- a/corba/.hgtags	Wed Jul 05 18:13:50 2017 +0200
+++ b/corba/.hgtags	Wed Jul 05 18:14:56 2017 +0200
@@ -165,3 +165,4 @@
 113f0d5f0a08aa0947b3edf783b603e7f042748a jdk8-b41
 79cc42c9c71bbd6630ede681642e98f5e4a841fa jdk8-b42
 cd879aff5d3cc1f58829aab3116880aa19525b78 jdk8-b43
+439d9bf8e4ff204cc89c9974c1515a508b2cc6ff jdk8-b44
--- a/corba/src/share/classes/com/sun/corba/se/impl/interceptors/ClientRequestInfoImpl.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/corba/src/share/classes/com/sun/corba/se/impl/interceptors/ClientRequestInfoImpl.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2012, 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
@@ -217,7 +217,7 @@
 
     // ClientRequestInfo validity table (see ptc/00-08-06 table 21-1).
     // Note: These must be in the same order as specified in contants.
-    protected static final boolean validCall[][] = {
+    private static final boolean validCall[][] = {
         // LEGEND:
         // s_req = send_request     r_rep = receive_reply
         // s_pol = send_poll        r_exc = receive_exception
--- a/corba/src/share/classes/com/sun/corba/se/impl/interceptors/ServerRequestInfoImpl.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/corba/src/share/classes/com/sun/corba/se/impl/interceptors/ServerRequestInfoImpl.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2012, 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
@@ -195,7 +195,7 @@
 
     // ServerRequestInfo validity table (see ptc/00-08-06 table 21-2).
     // Note: These must be in the same order as specified in contants.
-    protected static final boolean validCall[][] = {
+    private static final boolean validCall[][] = {
         // LEGEND:
         // r_rsc = receive_request_service_contexts
         // r_req = receive_request
--- a/corba/src/share/classes/com/sun/corba/se/impl/javax/rmi/CORBA/Util.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/corba/src/share/classes/com/sun/corba/se/impl/javax/rmi/CORBA/Util.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, 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
@@ -130,10 +130,23 @@
     private UtilSystemException utilWrapper = UtilSystemException.get(
                                                   CORBALogDomains.RPC_ENCODING);
 
-    public static Util instance = null;
+    private static Util instance = null;
 
     public Util() {
-        instance = this;
+        setInstance(this);
+    }
+
+    private static void setInstance( Util util ) {
+        assert instance == null : "Instance already defined";
+        instance = util;
+    }
+
+    public static Util getInstance() {
+        return instance;
+    }
+
+    public static boolean isInstanceDefined() {
+        return instance != null;
     }
 
     // Used by TOAFactory.shutdown to unexport all targets for this
--- a/corba/src/share/classes/com/sun/corba/se/impl/oa/poa/POAPolicyMediatorBase_R.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/corba/src/share/classes/com/sun/corba/se/impl/oa/poa/POAPolicyMediatorBase_R.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2012, 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
@@ -93,7 +93,7 @@
 
         activeObjectMap.putServant( servant, entry ) ;
 
-        if (Util.instance != null) {
+        if (Util.isInstanceDefined()) {
             POAManagerImpl pm = (POAManagerImpl)poa.the_POAManager() ;
             POAFactory factory = pm.getFactory() ;
             factory.registerPOAForServant(poa, servant);
@@ -129,7 +129,7 @@
 
         activeObjectMap.remove(key);
 
-        if (Util.instance != null) {
+        if (Util.isInstanceDefined()) {
             POAManagerImpl pm = (POAManagerImpl)poa.the_POAManager() ;
             POAFactory factory = pm.getFactory() ;
             factory.unregisterPOAForServant(poa, s);
--- a/corba/src/share/classes/com/sun/corba/se/impl/oa/toa/TOAFactory.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/corba/src/share/classes/com/sun/corba/se/impl/oa/toa/TOAFactory.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2012, 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
@@ -78,8 +78,8 @@
 
     public void shutdown( boolean waitForCompletion )
     {
-        if (Util.instance != null) {
-            Util.instance.unregisterTargetsForORB(orb);
+        if (Util.isInstanceDefined()) {
+            Util.getInstance().unregisterTargetsForORB(orb);
         }
     }
 
--- a/corba/src/share/classes/com/sun/corba/se/impl/orb/ParserTable.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orb/ParserTable.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2012, 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
@@ -106,7 +106,9 @@
 
     public ParserData[] getParserData()
     {
-        return parserData ;
+        ParserData[] parserArray = new ParserData[parserData.length];
+        System.arraycopy(parserData, 0, parserArray, 0, parserData.length);
+        return parserArray;
     }
 
     private ParserTable() {
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryId_1_3.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryId_1_3.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2012, 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
@@ -62,7 +62,7 @@
     // legal use of '.' in a Java name.
 
     public static final RepositoryIdCache_1_3 cache = new RepositoryIdCache_1_3();
-    public static final byte[] IDL_IDENTIFIER_CHARS = {
+    private static final byte[] IDL_IDENTIFIER_CHARS = {
 
         // 0 1 2 3  4 5 6 7  8 9 a b  c d e f
         0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // 00-0f
@@ -180,7 +180,7 @@
     public static final String kRemoteTypeStr = "";
     public static final String kRemoteValueRepID = "";
 
-    public static final Hashtable kSpecialArrayTypeStrings = new Hashtable();
+    private static final Hashtable kSpecialArrayTypeStrings = new Hashtable();
 
     static {
         kSpecialArrayTypeStrings.put("CORBA.WStringValue", new StringBuffer(java.lang.String.class.getName()));
@@ -189,7 +189,7 @@
 
     }
 
-    public static final Hashtable kSpecialCasesRepIDs = new Hashtable();
+    private static final Hashtable kSpecialCasesRepIDs = new Hashtable();
 
     static {
         kSpecialCasesRepIDs.put(java.lang.String.class, kWStringValueRepID);
@@ -197,7 +197,7 @@
         kSpecialCasesRepIDs.put(java.rmi.Remote.class, kRemoteValueRepID);
     }
 
-    public static final Hashtable kSpecialCasesStubValues = new Hashtable();
+    private static final Hashtable kSpecialCasesStubValues = new Hashtable();
 
     static {
         kSpecialCasesStubValues.put(java.lang.String.class, kWStringStubValue);
@@ -209,7 +209,7 @@
     }
 
 
-    public static final Hashtable kSpecialCasesVersions = new Hashtable();
+    private static final Hashtable kSpecialCasesVersions = new Hashtable();
 
     static {
         kSpecialCasesVersions.put(java.lang.String.class, kWStringValueHash);
@@ -220,7 +220,7 @@
         kSpecialCasesVersions.put(java.rmi.Remote.class, kRemoteValueHash);
     }
 
-    public static final Hashtable kSpecialCasesClasses = new Hashtable();
+    private static final Hashtable kSpecialCasesClasses = new Hashtable();
 
     static {
         kSpecialCasesClasses.put(kWStringTypeStr, java.lang.String.class);
@@ -232,7 +232,7 @@
         //kSpecialCasesClasses.put(kRemoteTypeStr, java.rmi.Remote.class);
     }
 
-    public static final Hashtable kSpecialCasesArrayPrefix = new Hashtable();
+    private static final Hashtable kSpecialCasesArrayPrefix = new Hashtable();
 
     static {
         kSpecialCasesArrayPrefix.put(java.lang.String.class, kValuePrefix + kSequencePrefix + kCORBAPrefix);
@@ -243,7 +243,7 @@
         kSpecialCasesArrayPrefix.put(java.rmi.Remote.class, kValuePrefix + kSequencePrefix + kCORBAPrefix);
     }
 
-    public static final Hashtable kSpecialPrimitives = new Hashtable();
+    private static final Hashtable kSpecialPrimitives = new Hashtable();
 
     static {
         kSpecialPrimitives.put("int","long");
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryId_1_3_1.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryId_1_3_1.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2012, 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
@@ -63,7 +63,7 @@
     // uniformly, and is safe because that is the only
     // legal use of '.' in a Java name.
 
-    public static final byte[] IDL_IDENTIFIER_CHARS = {
+    private static final byte[] IDL_IDENTIFIER_CHARS = {
 
         // 0 1 2 3  4 5 6 7  8 9 a b  c d e f
         0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // 00-0f
@@ -198,7 +198,7 @@
     public static final String kRemoteTypeStr = "";
     public static final String kRemoteValueRepID = "";
 
-    public static final Hashtable kSpecialArrayTypeStrings = new Hashtable();
+    private static final Hashtable kSpecialArrayTypeStrings = new Hashtable();
 
     static {
         kSpecialArrayTypeStrings.put("CORBA.WStringValue", new StringBuffer(java.lang.String.class.getName()));
@@ -207,7 +207,7 @@
 
     }
 
-    public static final Hashtable kSpecialCasesRepIDs = new Hashtable();
+    private static final Hashtable kSpecialCasesRepIDs = new Hashtable();
 
     static {
         kSpecialCasesRepIDs.put(java.lang.String.class, kWStringValueRepID);
@@ -215,7 +215,7 @@
         kSpecialCasesRepIDs.put(java.rmi.Remote.class, kRemoteValueRepID);
     }
 
-    public static final Hashtable kSpecialCasesStubValues = new Hashtable();
+    private static final Hashtable kSpecialCasesStubValues = new Hashtable();
 
     static {
         kSpecialCasesStubValues.put(java.lang.String.class, kWStringStubValue);
@@ -227,7 +227,7 @@
     }
 
 
-    public static final Hashtable kSpecialCasesVersions = new Hashtable();
+    private static final Hashtable kSpecialCasesVersions = new Hashtable();
 
     static {
         kSpecialCasesVersions.put(java.lang.String.class, kWStringValueHash);
@@ -238,7 +238,7 @@
         kSpecialCasesVersions.put(java.rmi.Remote.class, kRemoteValueHash);
     }
 
-    public static final Hashtable kSpecialCasesClasses = new Hashtable();
+    private static final Hashtable kSpecialCasesClasses = new Hashtable();
 
     static {
         kSpecialCasesClasses.put(kWStringTypeStr, java.lang.String.class);
@@ -250,7 +250,7 @@
         //kSpecialCasesClasses.put(kRemoteTypeStr, java.rmi.Remote.class);
     }
 
-    public static final Hashtable kSpecialCasesArrayPrefix = new Hashtable();
+    private static final Hashtable kSpecialCasesArrayPrefix = new Hashtable();
 
     static {
         kSpecialCasesArrayPrefix.put(java.lang.String.class, kValuePrefix + kSequencePrefix + kCORBAPrefix);
@@ -261,7 +261,7 @@
         kSpecialCasesArrayPrefix.put(java.rmi.Remote.class, kValuePrefix + kSequencePrefix + kCORBAPrefix);
     }
 
-    public static final Hashtable kSpecialPrimitives = new Hashtable();
+    private static final Hashtable kSpecialPrimitives = new Hashtable();
 
     static {
         kSpecialPrimitives.put("int","long");
--- a/corba/src/share/classes/com/sun/corba/se/impl/protocol/LocalClientRequestDispatcherBase.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/corba/src/share/classes/com/sun/corba/se/impl/protocol/LocalClientRequestDispatcherBase.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2012, 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
@@ -52,7 +52,7 @@
 
     // If isNextIsLocalValid.get() == Boolean.TRUE,
     // the next call to isLocal should be valid
-    protected static ThreadLocal isNextCallValid = new ThreadLocal() {
+    private static final ThreadLocal isNextCallValid = new ThreadLocal() {
             protected synchronized Object initialValue() {
                 return Boolean.TRUE;
             }
--- a/corba/src/share/classes/com/sun/corba/se/impl/util/RepositoryId.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/corba/src/share/classes/com/sun/corba/se/impl/util/RepositoryId.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2012, 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
@@ -57,7 +57,7 @@
     // uniformly, and is safe because that is the only
     // legal use of '.' in a Java name.
 
-    public static final byte[] IDL_IDENTIFIER_CHARS = {
+    private static final byte[] IDL_IDENTIFIER_CHARS = {
 
         // 0 1 2 3  4 5 6 7  8 9 a b  c d e f
         0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // 00-0f
@@ -95,7 +95,7 @@
     private static IdentityHashtable classIDLToRepStr = new IdentityHashtable();
     private static IdentityHashtable classSeqToRepStr = new IdentityHashtable();
 
-    private static IdentityHashtable repStrToByteArray = new IdentityHashtable();
+    private static final IdentityHashtable repStrToByteArray = new IdentityHashtable();
     private static Hashtable repStrToClass = new Hashtable();
 
     private String repId = null;
@@ -192,7 +192,7 @@
     public static final String kRemoteTypeStr = "";
     public static final String kRemoteValueRepID = "";
 
-    public static final Hashtable kSpecialArrayTypeStrings = new Hashtable();
+    private static final Hashtable kSpecialArrayTypeStrings = new Hashtable();
 
     static {
         kSpecialArrayTypeStrings.put("CORBA.WStringValue", new StringBuffer(java.lang.String.class.getName()));
@@ -201,7 +201,7 @@
 
     }
 
-    public static final Hashtable kSpecialCasesRepIDs = new Hashtable();
+    private static final Hashtable kSpecialCasesRepIDs = new Hashtable();
 
     static {
         kSpecialCasesRepIDs.put(java.lang.String.class, kWStringValueRepID);
@@ -209,7 +209,7 @@
         kSpecialCasesRepIDs.put(java.rmi.Remote.class, kRemoteValueRepID);
     }
 
-    public static final Hashtable kSpecialCasesStubValues = new Hashtable();
+    private static final Hashtable kSpecialCasesStubValues = new Hashtable();
 
     static {
         kSpecialCasesStubValues.put(java.lang.String.class, kWStringStubValue);
@@ -221,7 +221,7 @@
     }
 
 
-    public static final Hashtable kSpecialCasesVersions = new Hashtable();
+    private static final Hashtable kSpecialCasesVersions = new Hashtable();
 
     static {
         kSpecialCasesVersions.put(java.lang.String.class, kWStringValueHash);
@@ -232,7 +232,7 @@
         kSpecialCasesVersions.put(java.rmi.Remote.class, kRemoteValueHash);
     }
 
-    public static final Hashtable kSpecialCasesClasses = new Hashtable();
+    private static final Hashtable kSpecialCasesClasses = new Hashtable();
 
     static {
         kSpecialCasesClasses.put(kWStringTypeStr, java.lang.String.class);
@@ -244,7 +244,7 @@
         //kSpecialCasesClasses.put(kRemoteTypeStr, java.rmi.Remote.class);
     }
 
-    public static final Hashtable kSpecialCasesArrayPrefix = new Hashtable();
+    private static final Hashtable kSpecialCasesArrayPrefix = new Hashtable();
 
     static {
         kSpecialCasesArrayPrefix.put(java.lang.String.class, kValuePrefix + kSequencePrefix + kCORBAPrefix);
@@ -255,7 +255,7 @@
         kSpecialCasesArrayPrefix.put(java.rmi.Remote.class, kValuePrefix + kSequencePrefix + kCORBAPrefix);
     }
 
-    public static final Hashtable kSpecialPrimitives = new Hashtable();
+    private static final Hashtable kSpecialPrimitives = new Hashtable();
 
     static {
         kSpecialPrimitives.put("int","long");
--- a/corba/src/share/classes/com/sun/corba/se/spi/logging/CORBALogDomains.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/corba/src/share/classes/com/sun/corba/se/spi/logging/CORBALogDomains.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, 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
@@ -58,7 +58,7 @@
     private CORBALogDomains() {}
 
     // Top level log domain for CORBA
-    public static String TOP_LEVEL_DOMAIN  = "javax.enterprise.resource.corba";
+    public static final String TOP_LEVEL_DOMAIN  = "javax.enterprise.resource.corba";
 
     public static final String RPC              = "rpc" ;
 
--- a/corba/src/share/classes/sun/rmi/rmic/iiop/IDLNames.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/corba/src/share/classes/sun/rmi/rmic/iiop/IDLNames.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2012, 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,6 +71,34 @@
         (byte)'F',
     };
 
+    // Legal IDL Identifier characters (1 = legal). Note
+    // that '.' (2E) is marked as legal even though it is
+    // not legal in IDL. This allows us to treat a fully
+    // qualified Java name with '.' package separators
+    // uniformly, and is safe because that is the only
+    // legal use of '.' in a Java name.
+
+    private static final byte[] IDL_IDENTIFIER_CHARS = {
+
+        // 0 1 2 3  4 5 6 7  8 9 a b  c d e f
+        0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // 00-0f
+        0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // 10-1f
+        0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,1,0, // 20-2f
+        1,1,1,1, 1,1,1,1, 1,1,0,0, 0,0,0,0, // 30-3f
+        0,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, // 40-4f
+        1,1,1,1, 1,1,1,1, 1,1,1,0, 0,0,0,1, // 50-5f
+        0,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, // 60-6f
+        1,1,1,1, 1,1,1,1, 1,1,1,0, 0,0,0,0, // 70-7f
+        0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // 80-8f
+        0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // 90-9f
+        0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // a0-af
+        0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // b0-bf
+        1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, // c0-cf
+        0,1,1,1, 1,1,1,0, 1,1,1,1, 1,0,0,1, // d0-df
+        1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, // e0-ef
+        0,1,1,1, 1,1,1,0, 1,1,1,1, 1,0,0,1, // f0-ff
+    };
+
     //_____________________________________________________________________
     // Public Interfaces
     //_____________________________________________________________________
@@ -139,7 +167,7 @@
         result = replace(result,"x\\U","U");
 
         // Now see if we have any remaining illegal characters (see
-        // RepositoryId.IDL_IDENTIFIER_CHARS array)...
+        // IDL_IDENTIFIER_CHARS array)...
 
         int length = result.length();
         StringBuffer buffer = null;
@@ -148,7 +176,7 @@
 
             char c = result.charAt(i);
 
-            if (c > 255 || RepositoryId.IDL_IDENTIFIER_CHARS[c] == 0) {
+            if (c > 255 || IDL_IDENTIFIER_CHARS[c] == 0) {
 
                 // We gotta convert. Have we already started?
 
--- a/corba/src/share/classes/sun/rmi/rmic/iiop/StubGenerator.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/corba/src/share/classes/sun/rmi/rmic/iiop/StubGenerator.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2012, 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
@@ -425,7 +425,7 @@
         // Write the _ids() method...
 
         p.plnI("public String[] _ids() { ");
-        p.pln("return _type_ids;");
+        p.pln("return (String[]) _type_ids.clone();");
         p.pOln("}");
 
         // Get all the methods and write each stub method...
@@ -1860,11 +1860,11 @@
     {
         if(POATie){
         p.plnI("public String[] _all_interfaces(org.omg.PortableServer.POA poa, byte[] objectId){");
-        p.pln("return _type_ids;");
+        p.pln("return (String[]) _type_ids.clone();");
         p.pOln("}");
         } else {
         p.plnI("public String[] _ids() { ");
-        p.pln("return _type_ids;");
+        p.pln("return (String[]) _type_ids.clone();");
         p.pOln("}");
         }
     }
--- a/hotspot/.hgtags	Wed Jul 05 18:13:50 2017 +0200
+++ b/hotspot/.hgtags	Wed Jul 05 18:14:56 2017 +0200
@@ -255,3 +255,4 @@
 55954061c6e8750ea39a63523fd65d580db6eeb1 jdk8-b42
 e77b8e0ed1f84e3e268239e276c7ab64fa573baa jdk8-b43
 5ba29a1db46ecb80a321ca873adb56a3fe6ad320 hs24-b14
+831e5c76a20af18f3c08c5a95ed31be0e128a010 jdk8-b44
--- a/hotspot/src/share/vm/ci/ciField.cpp	Wed Jul 05 18:13:50 2017 +0200
+++ b/hotspot/src/share/vm/ci/ciField.cpp	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, 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
@@ -67,7 +67,7 @@
 
 // ------------------------------------------------------------------
 // ciField::ciField
-ciField::ciField(ciInstanceKlass* klass, int index): _known_to_link_with(NULL) {
+ciField::ciField(ciInstanceKlass* klass, int index): _known_to_link_with_put(NULL), _known_to_link_with_get(NULL) {
   ASSERT_IN_VM;
   CompilerThread *thread = CompilerThread::current();
 
@@ -143,7 +143,7 @@
   initialize_from(&field_desc);
 }
 
-ciField::ciField(fieldDescriptor *fd): _known_to_link_with(NULL) {
+ciField::ciField(fieldDescriptor *fd): _known_to_link_with_put(NULL), _known_to_link_with_get(NULL) {
   ASSERT_IN_VM;
 
   _cp_index = -1;
@@ -315,6 +315,10 @@
 bool ciField::will_link(ciInstanceKlass* accessing_klass,
                         Bytecodes::Code bc) {
   VM_ENTRY_MARK;
+  assert(bc == Bytecodes::_getstatic || bc == Bytecodes::_putstatic ||
+         bc == Bytecodes::_getfield  || bc == Bytecodes::_putfield,
+         "unexpected bytecode");
+
   if (_offset == -1) {
     // at creation we couldn't link to our holder so we need to
     // maintain that stance, otherwise there's no safe way to use this
@@ -322,8 +326,22 @@
     return false;
   }
 
-  if (_known_to_link_with == accessing_klass) {
-    return true;
+  // Check for static/nonstatic mismatch
+  bool is_static = (bc == Bytecodes::_getstatic || bc == Bytecodes::_putstatic);
+  if (is_static != this->is_static()) {
+    return false;
+  }
+
+  // Get and put can have different accessibility rules
+  bool is_put    = (bc == Bytecodes::_putfield  || bc == Bytecodes::_putstatic);
+  if (is_put) {
+    if (_known_to_link_with_put == accessing_klass) {
+      return true;
+    }
+  } else {
+    if (_known_to_link_with_get == accessing_klass) {
+      return true;
+    }
   }
 
   FieldAccessInfo result;
@@ -334,8 +352,13 @@
                               true, false, KILL_COMPILE_ON_FATAL_(false));
 
   // update the hit-cache, unless there is a problem with memory scoping:
-  if (accessing_klass->is_shared() || !is_shared())
-    _known_to_link_with = accessing_klass;
+  if (accessing_klass->is_shared() || !is_shared()) {
+    if (is_put) {
+      _known_to_link_with_put = accessing_klass;
+    } else {
+      _known_to_link_with_get = accessing_klass;
+    }
+  }
 
   return true;
 }
--- a/hotspot/src/share/vm/ci/ciField.hpp	Wed Jul 05 18:13:50 2017 +0200
+++ b/hotspot/src/share/vm/ci/ciField.hpp	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, 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,7 +49,8 @@
   ciType*          _type;
   int              _offset;
   bool             _is_constant;
-  ciInstanceKlass* _known_to_link_with;
+  ciInstanceKlass* _known_to_link_with_put;
+  ciInstanceKlass* _known_to_link_with_get;
   ciConstant       _constant_value;
 
   // Used for will_link
--- a/hotspot/src/share/vm/classfile/verifier.cpp	Wed Jul 05 18:13:50 2017 +0200
+++ b/hotspot/src/share/vm/classfile/verifier.cpp	Wed Jul 05 18:14:56 2017 +0200
@@ -1884,10 +1884,10 @@
   VerificationType type = current_frame->pop_stack(
     VerificationType::reference_check(), CHECK_VERIFY(this));
   if (type == VerificationType::uninitialized_this_type()) {
-    // The method must be an <init> method of either this class, or one of its
-    // superclasses
+    // The method must be an <init> method of this class or its superclass
+    klassOop superk = current_class()->super();
     if (ref_class_type.name() != current_class()->name() &&
-        !name_in_supers(ref_class_type.name(), current_class())) {
+        ref_class_type.name() != superk->klass_part()->name()) {
       verify_error(bci, "Bad <init> method call");
       return;
     }
--- a/hotspot/src/share/vm/compiler/compilerOracle.cpp	Wed Jul 05 18:13:50 2017 +0200
+++ b/hotspot/src/share/vm/compiler/compilerOracle.cpp	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2012, 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
@@ -551,13 +551,21 @@
 }
 
 static const char* cc_file() {
+#ifdef ASSERT
   if (CompileCommandFile == NULL)
     return ".hotspot_compiler";
+#endif
   return CompileCommandFile;
 }
+
+bool CompilerOracle::has_command_file() {
+  return cc_file() != NULL;
+}
+
 bool CompilerOracle::_quiet = false;
 
 void CompilerOracle::parse_from_file() {
+  assert(has_command_file(), "command file must be specified");
   FILE* stream = fopen(cc_file(), "rt");
   if (stream == NULL) return;
 
@@ -600,6 +608,7 @@
 }
 
 void CompilerOracle::append_comment_to_file(const char* message) {
+  assert(has_command_file(), "command file must be specified");
   fileStream stream(fopen(cc_file(), "at"));
   stream.print("# ");
   for (int index = 0; message[index] != '\0'; index++) {
@@ -610,6 +619,7 @@
 }
 
 void CompilerOracle::append_exclude_to_file(methodHandle method) {
+  assert(has_command_file(), "command file must be specified");
   fileStream stream(fopen(cc_file(), "at"));
   stream.print("exclude ");
   Klass::cast(method->method_holder())->name()->print_symbol_on(&stream);
@@ -624,7 +634,9 @@
 void compilerOracle_init() {
   CompilerOracle::parse_from_string(CompileCommand, CompilerOracle::parse_from_line);
   CompilerOracle::parse_from_string(CompileOnly, CompilerOracle::parse_compile_only);
-  CompilerOracle::parse_from_file();
+  if (CompilerOracle::has_command_file()) {
+    CompilerOracle::parse_from_file();
+  }
   if (lists[PrintCommand] != NULL) {
     if (PrintAssembly) {
       warning("CompileCommand and/or .hotspot_compiler file contains 'print' commands, but PrintAssembly is also enabled");
--- a/hotspot/src/share/vm/compiler/compilerOracle.hpp	Wed Jul 05 18:13:50 2017 +0200
+++ b/hotspot/src/share/vm/compiler/compilerOracle.hpp	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2012, 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,6 +36,10 @@
   static bool _quiet;
 
  public:
+
+  // True if the command file has been specified or is implicit
+  static bool has_command_file();
+
   // Reads from file and adds to lists
   static void parse_from_file();
 
--- a/hotspot/src/share/vm/opto/runtime.cpp	Wed Jul 05 18:13:50 2017 +0200
+++ b/hotspot/src/share/vm/opto/runtime.cpp	Wed Jul 05 18:14:56 2017 +0200
@@ -896,7 +896,8 @@
       methodOop method = ((nmethod*)n)->method();
       tty->print_cr("# Method where it happened %s.%s ", Klass::cast(method->method_holder())->name()->as_C_string(), method->name()->as_C_string());
       tty->print_cr("#");
-      if (ShowMessageBoxOnError && UpdateHotSpotCompilerFileOnError) {
+      if (ShowMessageBoxOnError && UpdateHotSpotCompilerFileOnError &&
+          CompilerOracle::has_command_file()) {
         const char* title    = "HotSpot Runtime Error";
         const char* question = "Do you want to exclude compilation of this method in future runs?";
         if (os::message_box(title, question)) {
--- a/hotspot/src/share/vm/runtime/arguments.cpp	Wed Jul 05 18:13:50 2017 +0200
+++ b/hotspot/src/share/vm/runtime/arguments.cpp	Wed Jul 05 18:14:56 2017 +0200
@@ -3017,12 +3017,14 @@
     }
   }
 
+#ifdef ASSERT
   // Parse default .hotspotrc settings file
   if (!settings_file_specified) {
     if (!process_settings_file(".hotspotrc", false, args->ignoreUnrecognized)) {
       return JNI_EINVAL;
     }
   }
+#endif
 
   if (PrintVMOptions) {
     for (index = 0; index < args->nOptions; index++) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/runtime/7110720/Test7110720.sh	Wed Jul 05 18:14:56 2017 +0200
@@ -0,0 +1,122 @@
+#
+#  Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+#  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+
+
+#
+# @test Test7110720.sh
+# @bug 7110720
+# @summary improve VM configuration file loading
+# @run shell Test7110720.sh
+#
+
+if [ "${TESTSRC}" = "" ]
+  then TESTSRC=.
+fi
+
+if [ "${TESTJAVA}" = "" ]
+then
+  PARENT=`dirname \`which java\``
+  TESTJAVA=`dirname ${PARENT}`
+  echo "TESTJAVA not set, selecting " ${TESTJAVA}
+  echo "If this is incorrect, try setting the variable manually."
+fi
+
+if [ "${TESTCLASSES}" = "" ]
+then
+  echo "TESTCLASSES not set.  Test cannot execute.  Failed."
+  exit 1
+fi
+
+# Jtreg sets TESTVMOPTS which may include -d64 which is
+# required to test a 64-bit JVM on some platforms.
+# If another test harness still creates HOME/JDK64BIT,
+# we can recognise that.
+
+# set platform-dependent variables
+OS=`uname -s`
+case "$OS" in
+  SunOS | Linux )
+    FS="/"
+    RM=/bin/rm
+    CP=/bin/cp
+    MV=/bin/mv
+    ## for solaris, linux it's HOME
+    FILE_LOCATION=$HOME
+    if [ -f ${FILE_LOCATION}${FS}JDK64BIT -a ${OS} = "SunOS" ]
+    then
+        TESTVMOPTS=`cat ${FILE_LOCATION}${FS}JDK64BIT`
+    fi
+    ;;
+  Windows_* )
+    FS="\\"
+    RM=rm
+    CP=cp
+    MV=mv
+    ;;
+  * )
+    echo "Unrecognized system!"
+    exit 1;
+    ;;
+esac
+
+
+JAVA=${TESTJAVA}${FS}bin${FS}java
+
+# Don't test debug builds, they do read the config files:
+${JAVA} ${TESTVMOPTS} -version 2>&1 | grep "debug" >/dev/null
+if [ "$?" = "0" ]; then
+  echo Skipping test for debug build.
+  exit 0
+fi
+
+ok=yes
+
+$RM -f .hotspot_compiler .hotspotrc
+
+${JAVA} ${TESTVMOPTS} -version 2>&1 | grep "garbage in" >/dev/null
+if [ "$?" = "0" ]; then
+  echo "FAILED: base case failure"
+  exit 1
+fi
+
+
+echo "garbage in, garbage out" > .hotspot_compiler
+${JAVA} ${TESTVMOPTS} -version 2>&1 | grep "garbage in" >/dev/null
+if [ "$?" = "0" ]; then
+  echo "FAILED: .hotspot_compiler was read"
+  ok=no
+fi
+
+$MV .hotspot_compiler hs_comp.txt
+${JAVA} ${TESTVMOPTS} -XX:CompileCommandFile=hs_comp.txt -version 2>&1 | grep "garbage in" >/dev/null
+if [ "$?" = "1" ]; then
+  echo "FAILED: explicit compiler command file not read"
+  ok=no
+fi
+
+$RM -f .hotspot_compiler hs_comp.txt
+
+echo "garbage" > .hotspotrc
+${JAVA} ${TESTVMOPTS} -version 2>&1 | grep "garbage" >/dev/null
+if [ "$?" = "0" ]; then
+  echo "FAILED: .hotspotrc was read"
+  ok=no
+fi
+
+$MV .hotspotrc hs_flags.txt
+${JAVA} ${TESTVMOPTS} -XX:Flags=hs_flags.txt -version 2>&1 | grep "garbage" >/dev/null
+if [ "$?" = "1" ]; then
+  echo "FAILED: explicit flags file not read"
+  ok=no
+fi
+
+if [ "${ok}" = "no" ]; then 
+  echo "Some tests failed."
+  exit 1
+else 
+  echo "Passed"
+  exit 0
+fi
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/runtime/7160757/Test7160757.java	Wed Jul 05 18:14:56 2017 +0200
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2012, 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 Test7160757.java
+ * @bug 7160757
+ * @summary Tests that superclass initialization is not skipped
+ */
+
+public class Test7160757 {
+
+    public static void main(String args[]) throws Exception {
+
+        ClassLoader loader = new SLoader();
+        try {
+            Class.forName("S", true, loader);
+            System.out.println("FAILED");
+            throw new Exception("Should have thrown a VerifyError.");
+        } catch (VerifyError e) {
+            System.out.println(e);
+            System.out.println("PASSED");
+        }
+    }
+
+    static class SLoader extends ClassLoader {
+
+        /**
+         * public class S extends Throwable {
+         *     public S() {
+         *         aload_0
+         *         invokespecial Object.<init>()
+         *         return
+         *     }
+         * }
+         */
+        static byte b(int i) { return (byte)i; }
+        static byte S_class[] = {
+            b(0xca), b(0xfe), b(0xba), b(0xbe), 0x00, 0x00, 0x00, 0x32,
+            0x00, 0x0c, 0x0a, 0x00, 0x0b, 0x00, 0x07, 0x07,
+            0x00, 0x08, 0x07, 0x00, 0x09, 0x01, 0x00, 0x06,
+            0x3c, 0x69, 0x6e, 0x69, 0x74, 0x3e, 0x01, 0x00,
+            0x03, 0x28, 0x29, 0x56, 0x01, 0x00, 0x04, 0x43,
+            0x6f, 0x64, 0x65, 0x0c, 0x00, 0x04, 0x00, 0x05,
+            0x01, 0x00, 0x01, 0x53, 0x01, 0x00, 0x13, 0x6a,
+            0x61, 0x76, 0x61, 0x2f, 0x6c, 0x61, 0x6e, 0x67,
+            0x2f, 0x54, 0x68, 0x72, 0x6f, 0x77, 0x61, 0x62,
+            0x6c, 0x65, 0x01, 0x00, 0x10, 0x6a, 0x61, 0x76,
+            0x61, 0x2f, 0x6c, 0x61, 0x6e, 0x67, 0x2f, 0x4f,
+            0x62, 0x6a, 0x65, 0x63, 0x74, 0x07, 0x00, 0x0a,
+            0x00, 0x21, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00,
+            0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x04,
+            0x00, 0x05, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00,
+            0x00, 0x11, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00,
+            0x00, 0x05, 0x2a, b(0xb7), 0x00, 0x01, b(0xb1), 0x00,
+            0x00, 0x00, 0x00, 0x00, 0x00
+        };
+
+        public Class findClass(String name) throws ClassNotFoundException {
+            return defineClass(name, S_class, 0, S_class.length);
+        }
+    }
+}
--- a/jaxp/.hgtags	Wed Jul 05 18:13:50 2017 +0200
+++ b/jaxp/.hgtags	Wed Jul 05 18:14:56 2017 +0200
@@ -165,3 +165,4 @@
 6f5c0e17415de7a9c74900ef4ba12f47accdf88b jdk8-b41
 39ee03c1602155ff02e5feb6cd44869452f24cf7 jdk8-b42
 eff4ece9c8bc43b3ce2b3758574c4c20147f0689 jdk8-b43
+0b3f3a4ce13930430b32b616a717dfc7fe385b28 jdk8-b44
--- a/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl.java	Wed Jul 05 18:14:56 2017 +0200
@@ -286,12 +286,13 @@
 
     //STAX related properties
     //defaultValues.
+    protected boolean fSupportDTD = true;
     protected boolean fReplaceEntityReferences = true;
     protected boolean fSupportExternalEntities = false;
     protected boolean fReportCdataEvent = false ;
     protected boolean fIsCoalesce = false ;
     protected String fDeclaredEncoding =  null;
-    /** Disallow doctype declaration. */
+    /** Xerces Feature: Disallow doctype declaration. */
     protected boolean fDisallowDoctype = false;
 
     // drivers
@@ -1847,7 +1848,7 @@
         // start general entity
         if (!fEntityStore.isDeclaredEntity(name)) {
             //SUPPORT_DTD=false && ReplaceEntityReferences should throw exception
-            if (fDisallowDoctype && fReplaceEntityReferences) {
+            if (!fSupportDTD && fReplaceEntityReferences) {
                 reportFatalError("EntityNotDeclared", new Object[]{name});
                 return;
             }
--- a/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDocumentScannerImpl.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDocumentScannerImpl.java	Wed Jul 05 18:14:56 2017 +0200
@@ -278,7 +278,7 @@
         fDoctypeSystemId = null;
         fSeenDoctypeDecl = false;
         fNamespaceContext.reset();
-        fDisallowDoctype = !((Boolean)propertyManager.getProperty(XMLInputFactory.SUPPORT_DTD)).booleanValue();
+        fSupportDTD = ((Boolean)propertyManager.getProperty(XMLInputFactory.SUPPORT_DTD)).booleanValue();
 
         // xerces features
         fLoadExternalDTD = !((Boolean)propertyManager.getProperty(Constants.ZEPHYR_PROPERTY_PREFIX + Constants.IGNORE_EXTERNAL_DTD)).booleanValue();
@@ -628,7 +628,7 @@
     // scanning methods
 
     /** Scans a doctype declaration. */
-    protected boolean scanDoctypeDecl(boolean ignore) throws IOException, XNIException {
+    protected boolean scanDoctypeDecl(boolean supportDTD) throws IOException, XNIException {
 
         // spaces
         if (!fEntityScanner.skipSpaces()) {
@@ -653,7 +653,7 @@
         fHasExternalDTD = fDoctypeSystemId != null;
 
         // Attempt to locate an external subset with an external subset resolver.
-        if (!ignore && !fHasExternalDTD && fExternalSubsetResolver != null) {
+        if (supportDTD && !fHasExternalDTD && fExternalSubsetResolver != null) {
             fDTDDescription.setValues(null, null, fEntityManager.getCurrentResourceIdentifier().getExpandedSystemId(), null);
             fDTDDescription.setRootName(fDoctypeName);
             fExternalSubsetSource = fExternalSubsetResolver.getExternalSubset(fDTDDescription);
@@ -661,7 +661,7 @@
         }
 
         // call handler
-        if (!ignore && fDocumentHandler != null) {
+        if (supportDTD && fDocumentHandler != null) {
             // NOTE: I don't like calling the doctypeDecl callback until
             //       end of the *full* doctype line (including internal
             //       subset) is parsed correctly but SAX2 requires that
@@ -916,6 +916,10 @@
                     }
 
                     case SCANNER_STATE_DOCTYPE: {
+                        if (fDisallowDoctype) {
+                            reportFatalError("DoctypeNotAllowed", null);
+                        }
+
 
                         if (fSeenDoctypeDecl) {
                             reportFatalError("AlreadySeenDoctype", null);
@@ -924,7 +928,7 @@
 
                         // scanDoctypeDecl() sends XNI doctypeDecl event that
                         // in SAX is converted to startDTD() event.
-                        if (scanDoctypeDecl(fDisallowDoctype)) {
+                        if (scanDoctypeDecl(fSupportDTD)) {
                             //allow parsing of entity decls to continue in order to stay well-formed
                             setScannerState(SCANNER_STATE_DTD_INTERNAL_DECLS);
                             fSeenInternalSubset = true;
@@ -934,8 +938,6 @@
                             setDriver(fContentDriver);
                             //always return DTD event, the event however, will not contain any entities
                             return fDTDDriver.next();
-                            // If no DTD support, ignore and continue parsing
-                            //return fDisallowDoctype ? next() : dtdEvent;
                         }
 
                         if(fSeenDoctypeDecl){
@@ -950,7 +952,7 @@
                         if (fDoctypeSystemId != null) {
                             if (((fValidation || fLoadExternalDTD)
                                 && (fValidationManager == null || !fValidationManager.isCachedDTD()))) {
-                            if (!fDisallowDoctype)
+                            if (fSupportDTD)
                                 setScannerState(SCANNER_STATE_DTD_EXTERNAL);
                             else
                                 setScannerState(SCANNER_STATE_PROLOG);
@@ -967,7 +969,7 @@
                                 // This handles the case of a DOCTYPE that had neither an internal subset or an external subset.
                                 fDTDScanner.setInputSource(fExternalSubsetSource);
                                 fExternalSubsetSource = null;
-                            if (!fDisallowDoctype)
+                            if (fSupportDTD)
                                 setScannerState(SCANNER_STATE_DTD_EXTERNAL_DECLS);
                             else
                                 setScannerState(SCANNER_STATE_PROLOG);
@@ -1113,7 +1115,7 @@
                                 }
                                 fMarkupDepth--;
 
-                                if (fDisallowDoctype) {
+                                if (!fSupportDTD) {
                                     //simply reset the entity store without having to mess around
                                     //with the DTD Scanner code
                                     fEntityStore = fEntityManager.getEntityStore();
--- a/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLScanner.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLScanner.java	Wed Jul 05 18:14:56 2017 +0200
@@ -402,6 +402,16 @@
 
         boolean dataFoundForTarget = false;
         boolean sawSpace = fEntityScanner.skipSpaces();
+        // since pseudoattributes are *not* attributes,
+        // their quotes don't need to be preserved in external parameter entities.
+        // the XMLEntityScanner#scanLiteral method will continue to
+        // emit -1 in such cases when it finds a quote; this is
+        // fine for other methods that parse scanned entities,
+        // but not for the scanning of pseudoattributes.  So,
+        // temporarily, we must mark the current entity as not being "literal"
+        Entity.ScannedEntity currEnt = fEntityManager.getCurrentEntity();
+        boolean currLiteral = currEnt.literal;
+        currEnt.literal = false;
         while (fEntityScanner.peekChar() != '?') {
             dataFoundForTarget = true;
             String name = scanPseudoAttribute(scanningTextDecl, fString);
@@ -499,6 +509,9 @@
             }
             sawSpace = fEntityScanner.skipSpaces();
         }
+        // restore original literal value
+        if(currLiteral)
+            currEnt.literal = true;
         // REVISIT: should we remove this error reporting?
         if (scanningTextDecl && state != STATE_DONE) {
             reportFatalError("MorePseudoAttributes", null);
--- a/jaxp/src/com/sun/xml/internal/stream/XMLEventReaderImpl.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jaxp/src/com/sun/xml/internal/stream/XMLEventReaderImpl.java	Wed Jul 05 18:14:56 2017 +0200
@@ -248,8 +248,11 @@
             object = nextEvent();
         }catch(XMLStreamException streamException){
             fLastEvent = null ;
-            //xxx: what should be done in this case ?
-            throw new NoSuchElementException();
+            //don't swallow the cause
+            NoSuchElementException e = new NoSuchElementException(streamException.getMessage());
+            e.initCause(streamException.getCause());
+            throw e;
+
         }
         return object;
     }
--- a/jaxws/.hgtags	Wed Jul 05 18:13:50 2017 +0200
+++ b/jaxws/.hgtags	Wed Jul 05 18:14:56 2017 +0200
@@ -165,3 +165,4 @@
 f2072b164b0519227833a2994f78e3988ee67827 jdk8-b41
 1f20f37818a91b66eaeba268d0b785718598ee0e jdk8-b42
 f00c12994562c2f68d348a7c3e829374a89294e2 jdk8-b43
+f6a417540ef124c9b4123d07da5e26f2ab909949 jdk8-b44
--- a/jdk/.hgtags	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/.hgtags	Wed Jul 05 18:14:56 2017 +0200
@@ -165,3 +165,4 @@
 4eac56f073ea8179b1a35fcd2af9b48b0088be9f jdk8-b41
 cf5c1f6fbc5ba14163fe0ef8eb8601b33f951372 jdk8-b42
 b3246687c3695dff6f461bb407f9db88f7d072e7 jdk8-b43
+db471a7af03168e4441c245b1d9976f720a7cb77 jdk8-b44
--- a/jdk/make/com/sun/jmx/Makefile	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/make/com/sun/jmx/Makefile	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 2012, 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
@@ -100,6 +100,23 @@
 # so that *_tie classes are generated in package without the prefix
 # org.omg.stub (6375696)
 # 
+# To ensure the latest stub generator files are picked up from corba repo
+# when available, we need to run with latest rmic version available. rmic 
+# launch tool not built at this stage but we can invoke via rmi class.
+
+RMIC_JAVA = $(OUTPUTDIR)/bin/java
+# need to treat 64bit solaris differently
+ifeq ($(PLATFORM)-$(LIBARCH), solaris-amd64)
+RMIC_JAVA = $(OUTPUTDIR)/bin/amd64/java
+endif
+ifeq ($(PLATFORM)-$(LIBARCH), solaris-sparcv9)
+RMIC_JAVA = $(OUTPUTDIR)/bin/sparcv9/java
+endif
+
+ifeq ($(CROSS_COMPILE_ARCH),)
+RMIC = $(RMIC_JAVA) $(JAVA_TOOLS_FLAGS) -cp $(OUTPUTDIR)/classes sun.rmi.rmic.Main
+endif  
+
 $(CLASSDESTDIR)/%_Stub.class: $(CLASSDESTDIR)/%.class
 	$(prep-target)
 	$(RMIC) -classpath "$(CLASSDESTDIR)"    \
--- a/jdk/make/common/Defs-embedded.gmk	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/make/common/Defs-embedded.gmk	Wed Jul 05 18:14:56 2017 +0200
@@ -42,7 +42,7 @@
 OTHER_CPPFLAGS += -DJAVASE_EMBEDDED
 
 # Product naming
-PRODUCT_SUFFIX = SE Runtime Environment for Embedded
+PRODUCT_SUFFIX = SE Embedded Runtime Environment
 RUNTIME_NAME = $(PRODUCT_NAME) $(PRODUCT_SUFFIX)
 
 # Reduced JRE locations
--- a/jdk/make/java/java/FILES_java.gmk	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/make/java/java/FILES_java.gmk	Wed Jul 05 18:14:56 2017 +0200
@@ -372,6 +372,7 @@
     java/util/spi/CurrencyNameProvider.java \
     java/util/spi/LocaleNameProvider.java \
     java/util/spi/LocaleServiceProvider.java \
+    java/util/spi/ResourceBundleControlProvider.java \
     java/util/spi/TimeZoneNameProvider.java \
     java/io/Closeable.java \
     java/io/Flushable.java \
--- a/jdk/make/java/nio/mapfile-linux	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/make/java/nio/mapfile-linux	Wed Jul 05 18:14:56 2017 +0200
@@ -88,6 +88,7 @@
                 Java_sun_nio_ch_IOUtil_fdVal;
 		Java_sun_nio_ch_IOUtil_fdLimit;
                 Java_sun_nio_ch_IOUtil_initIDs;
+		Java_sun_nio_ch_IOUtil_iovMax;
                 Java_sun_nio_ch_IOUtil_makePipe;
                 Java_sun_nio_ch_IOUtil_randomBytes;
                 Java_sun_nio_ch_IOUtil_setfdVal;
--- a/jdk/make/java/nio/mapfile-solaris	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/make/java/nio/mapfile-solaris	Wed Jul 05 18:14:56 2017 +0200
@@ -76,6 +76,7 @@
 		Java_sun_nio_ch_IOUtil_fdLimit;
                 Java_sun_nio_ch_IOUtil_fdVal;
                 Java_sun_nio_ch_IOUtil_initIDs;
+		Java_sun_nio_ch_IOUtil_iovMax;
                 Java_sun_nio_ch_IOUtil_makePipe;
                 Java_sun_nio_ch_IOUtil_randomBytes;
                 Java_sun_nio_ch_IOUtil_setfdVal;
--- a/jdk/src/macosx/classes/apple/applescript/AppleScriptEngine.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/macosx/classes/apple/applescript/AppleScriptEngine.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2012, 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,6 +26,7 @@
 package apple.applescript;
 
 import java.io.*;
+import java.nio.file.Files;
 import java.util.*;
 import java.util.Map.Entry;
 
@@ -297,7 +298,7 @@
         File tmpfile;
         FileWriter tmpwrite;
         try {
-            tmpfile = File.createTempFile("AppleScriptEngine.", ".scpt");
+            tmpfile = Files.createTempFile("AppleScriptEngine.", ".scpt").toFile();
             tmpwrite = new FileWriter(tmpfile);
 
             // read in our input and write directly to tmpfile
--- a/jdk/src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java	Wed Jul 05 18:14:56 2017 +0200
@@ -63,6 +63,7 @@
     private static native void nativeSetNSWindowSecurityWarningPositioning(long nsWindowPtr, double x, double y, float biasX, float biasY);
     private static native void nativeSetEnabled(long nsWindowPtr, boolean isEnabled);
     private static native void nativeSynthesizeMouseEnteredExitedEvents(long nsWindowPtr);
+    private static native void nativeDispose(long nsWindowPtr);
 
     private static native int nativeGetNSWindowDisplayID_AppKitThread(long nsWindowPtr);
 
@@ -423,6 +424,7 @@
         EventQueue.invokeLater(new Runnable() {
             public void run() {
                 contentView.dispose();
+                nativeDispose(getNSWindowPtr());
                 CPlatformWindow.super.dispose();
             }
         });
--- a/jdk/src/macosx/classes/sun/lwawt/macosx/CToolkitThreadBlockedHandler.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/macosx/classes/sun/lwawt/macosx/CToolkitThreadBlockedHandler.java	Wed Jul 05 18:14:56 2017 +0200
@@ -41,10 +41,11 @@
     }
 
     public void enter() {
-        toolkit.startNativeNestedEventLoop();
+        // Execute the next AppKit event while we are waiting for system to
+        // finish our request - this will save us from biting our own tail
+        toolkit.executeNextAppKitEvent();
     }
 
     public void exit() {
-        toolkit.stopNativeNestedEventLoop();
     }
 }
--- a/jdk/src/macosx/classes/sun/lwawt/macosx/LWCToolkit.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/macosx/classes/sun/lwawt/macosx/LWCToolkit.java	Wed Jul 05 18:14:56 2017 +0200
@@ -63,9 +63,7 @@
 
     private static native void initIDs();
 
-    static native void startNativeNestedEventLoop();
-
-    static native void stopNativeNestedEventLoop();
+    static native void executeNextAppKitEvent();
 
     private static CInputMethodDescriptor sInputMethodDescriptor;
 
@@ -361,9 +359,11 @@
             CWrapper.NSObject.release(screen);
         }
         // Convert between Cocoa's coordinate system and Java.
-        return new Insets(fullScreen.height - workArea.height - workArea.y,
-                          workArea.x, workArea.y,
-                          fullScreen.width - workArea.width - workArea.x);
+        int bottom = workArea.y - fullScreen.y;
+        int top = fullScreen.height - workArea.height - bottom;
+        int left = workArea.x - fullScreen.x;
+        int right = fullScreen.width - workArea.width - left;
+        return  new Insets(top, left, bottom, right);
     }
 
     @Override
--- a/jdk/src/macosx/native/sun/awt/AWTView.m	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/macosx/native/sun/awt/AWTView.m	Wed Jul 05 18:14:56 2017 +0200
@@ -188,7 +188,9 @@
 #endif
         }
     } else {
+#if IM_DEBUG
         NSLog(@"-> IM does not want to handle event");
+#endif
         [self deliverJavaMouseEvent: event];
     }
 }
--- a/jdk/src/macosx/native/sun/awt/AWTWindow.m	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/macosx/native/sun/awt/AWTWindow.m	Wed Jul 05 18:14:56 2017 +0200
@@ -228,6 +228,7 @@
     }
 
     if (self.nsWindow == nil) return nil; // no hope either
+    [self.nsWindow release]; // the property retains the object already
 
     self.isEnabled = YES;
     self.javaPlatformWindow = platformWindow;
@@ -677,9 +678,9 @@
                                                   styleBits:styleBits
                                                   frameRect:frameRect
                                                 contentView:contentView];
+        // the window is released is CPlatformWindow.nativeDispose()
 
-        if (window) CFRetain(window);
-        [window release]; // GC
+        if (window) CFRetain(window.nsWindow);
     }];
 
 JNF_COCOA_EXIT(env);
@@ -1160,3 +1161,24 @@
 JNF_COCOA_EXIT(env);
 }
 
+JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeDispose
+(JNIEnv *env, jclass clazz, jlong windowPtr)
+{
+JNF_COCOA_ENTER(env);
+
+    NSWindow *nsWindow = OBJC(windowPtr);
+    [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
+        AWTWindow *window = (AWTWindow*)[nsWindow delegate];
+
+        // AWTWindow holds a reference to the NSWindow in its nsWindow
+        // property. Unsetting the delegate allows it to be deallocated
+        // which releases the reference. This, in turn, allows the window
+        // itself be deallocated.
+        [nsWindow setDelegate: nil];
+
+        [window release];
+    }];
+
+JNF_COCOA_EXIT(env);
+}
+
--- a/jdk/src/macosx/native/sun/awt/LWCToolkit.m	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/macosx/native/sun/awt/LWCToolkit.m	Wed Jul 05 18:14:56 2017 +0200
@@ -42,7 +42,6 @@
 @implementation AWTToolkit
 
 static long eventCount;
-static bool shouldKeepRunningNestedLoop = NO;
 
 + (long) getEventCount{
     return eventCount;
@@ -460,33 +459,18 @@
 
 /*
  * Class:     sun_lwawt_macosx_LWCToolkit
- * Method:    startNativeNestedEventLoop
+ * Method:    executeNextAppKitEvent
  * Signature: ()V
  */
-JNIEXPORT void JNICALL Java_sun_lwawt_macosx_LWCToolkit_startNativeNestedEventLoop
+JNIEXPORT void JNICALL Java_sun_lwawt_macosx_LWCToolkit_executeNextAppKitEvent
 (JNIEnv *env, jclass cls)
 {
-    if(!shouldKeepRunningNestedLoop) {
-        NSRunLoop *theRL = [NSRunLoop currentRunLoop];
-        NSApplication * app = [NSApplication sharedApplication];
-        shouldKeepRunningNestedLoop = YES;
-        while (shouldKeepRunningNestedLoop && [theRL runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]])
-        {
-            NSEvent * event = [app nextEventMatchingMask: 0xFFFFFFFF untilDate:nil inMode:NSDefaultRunLoopMode dequeue:YES];
-            if (event != nil) {
-                [app sendEvent: event];
-            }
-        }
+    // Simply get the next event in native loop and pass it to execution
+    // We'll be called repeatedly so there's no need to block here
+    NSRunLoop *theRL = [NSRunLoop currentRunLoop];
+    NSApplication * app = [NSApplication sharedApplication];
+    NSEvent * event = [app nextEventMatchingMask: 0xFFFFFFFF untilDate:nil inMode:NSDefaultRunLoopMode dequeue:YES];
+    if (event != nil) {
+        [app sendEvent: event];
     }
 }
-
-/*
- * Class:     sun_lwawt_macosx_LWCToolkit
- * Method:    stopNativeNestedEventLoop
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_sun_lwawt_macosx_LWCToolkit_stopNativeNestedEventLoop
-(JNIEnv *env, jclass cls)
-{
-    shouldKeepRunningNestedLoop = NO;
-}
--- a/jdk/src/macosx/native/sun/java2d/opengl/CGLGraphicsConfig.m	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/macosx/native/sun/java2d/opengl/CGLGraphicsConfig.m	Wed Jul 05 18:14:56 2017 +0200
@@ -63,12 +63,14 @@
 
         CGLCtxInfo *ctxinfo = (CGLCtxInfo *)oglc->ctxInfo;
         if (ctxinfo != NULL) {
+            NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];        
             [NSOpenGLContext clearCurrentContext];
             [ctxinfo->context clearDrawable];
             [ctxinfo->context release];
             if (ctxinfo->scratchSurface != 0) {
                 [ctxinfo->scratchSurface release];
             }
+            [pool drain];
             free(ctxinfo);
         }
     }
--- a/jdk/src/macosx/native/sun/osxapp/QueuingApplicationDelegate.h	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/macosx/native/sun/osxapp/QueuingApplicationDelegate.h	Wed Jul 05 18:14:56 2017 +0200
@@ -30,6 +30,8 @@
     BOOL fHandlesDocumentTypes;
     BOOL fHandlesURLTypes;
 
+    id <NSApplicationDelegate> realDelegate;
+
     NSMutableArray* queue;
 }
 
@@ -40,5 +42,9 @@
 
 - (void)processQueuedEventsWithTargetDelegate:(id <NSApplicationDelegate>)delegate;
 
+@property(retain) id <NSApplicationDelegate> realDelegate;
+
+@property(retain) NSMutableArray* queue;
+
 @end
 
--- a/jdk/src/macosx/native/sun/osxapp/QueuingApplicationDelegate.m	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/macosx/native/sun/osxapp/QueuingApplicationDelegate.m	Wed Jul 05 18:14:56 2017 +0200
@@ -27,8 +27,6 @@
 
 #import "QueuingApplicationDelegate.h"
 
-static id <NSApplicationDelegate> realDelegate = nil;
-
 @interface NSBundle (EAWTOverrides)
 - (BOOL)_hasEAWTOverride:(NSString *)key;
 @end
@@ -44,6 +42,9 @@
 
 @implementation QueuingApplicationDelegate
 
+@synthesize realDelegate;
+@synthesize queue;
+
 + (QueuingApplicationDelegate*) sharedDelegate
 {
     static QueuingApplicationDelegate * qad = nil;
@@ -62,7 +63,7 @@
         return self;
     }
 
-    self->queue = [[NSMutableArray arrayWithCapacity: 0] retain];
+    self.queue = [NSMutableArray arrayWithCapacity: 0];
 
     // If the java application has a bundle with an Info.plist file with
     //  a CFBundleDocumentTypes entry, then it is set up to handle Open Doc
@@ -100,8 +101,8 @@
     Class clz = [QueuingApplicationDelegate class];
     [ctr removeObserver:clz];
 
-    [self->queue release];
-    self->queue = nil;
+    self.queue = nil;
+    self.realDelegate = nil;
 
     [super dealloc];
 }
@@ -109,16 +110,16 @@
 
 - (void)_handleOpenURLEvent:(NSAppleEventDescriptor *)openURLEvent withReplyEvent:(NSAppleEventDescriptor *)replyEvent
 {
-    [self->queue addObject:^(){
-        [realDelegate _handleOpenURLEvent:openURLEvent withReplyEvent:replyEvent];
-    }];
+    [self.queue addObject:[^(){
+        [self.realDelegate _handleOpenURLEvent:openURLEvent withReplyEvent:replyEvent];
+    } copy]];
 }
 
 - (void)application:(NSApplication *)theApplication openFiles:(NSArray *)fileNames
 {
-    [self->queue addObject:^(){
-        [realDelegate application:theApplication openFiles:fileNames];
-    }];
+    [self.queue addObject:[^(){
+        [self.realDelegate application:theApplication openFiles:fileNames];
+    } copy]];
 }
 
 - (NSApplicationPrintReply)application:(NSApplication *)application printFiles:(NSArray *)fileNames withSettings:(NSDictionary *)printSettings showPrintPanels:(BOOL)showPrintPanels
@@ -127,9 +128,9 @@
         return NSPrintingCancelled;
     }
 
-    [self->queue addObject:^(){
-        [realDelegate application:application printFiles:fileNames withSettings:printSettings showPrintPanels:showPrintPanels];
-    }];
+    [self.queue addObject:[^(){
+        [self.realDelegate application:application printFiles:fileNames withSettings:printSettings showPrintPanels:showPrintPanels];
+    } copy]];
 
     // well, a bit premature, but what else can we do?..
     return NSPrintingSuccess;
@@ -137,76 +138,76 @@
 
 - (void)_willFinishLaunching
 {
-    QueuingApplicationDelegate * q = self;
-    [self->queue addObject:^(){
-        [[realDelegate class] _willFinishLaunching];
-    }];
+    [self.queue addObject:[^(){
+        [[self.realDelegate class] _willFinishLaunching];
+    } copy]];
 }
 
 - (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)flag
 {
-    [self->queue addObject:^(){
-        [realDelegate applicationShouldHandleReopen:theApplication hasVisibleWindows:flag];
-    }];
+    [self.queue addObject:[^(){
+        [self.realDelegate applicationShouldHandleReopen:theApplication hasVisibleWindows:flag];
+    } copy]];
     return YES;
 }
 
 - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)app
 {
-    [self->queue addObject:^(){
-        [realDelegate applicationShouldTerminate:app];
-    }];
+    [self.queue addObject:[^(){
+        [self.realDelegate applicationShouldTerminate:app];
+    } copy]];
     return NSTerminateLater;
 }
 
 - (void)_systemWillPowerOff
 {
-    [self->queue addObject:^(){
-        [[realDelegate class] _systemWillPowerOff];
-    }];
+    [self.queue addObject:[^(){
+        [[self.realDelegate class] _systemWillPowerOff];
+    } copy]];
 }
 
 - (void)_appDidActivate
 {
-    [self->queue addObject:^(){
-        [[realDelegate class] _appDidActivate];
-    }];
+    [self.queue addObject:[^(){
+        [[self.realDelegate class] _appDidActivate];
+    } copy]];
 }
 
 - (void)_appDidDeactivate
 {
-    [self->queue addObject:^(){
-        [[realDelegate class] _appDidDeactivate];
-    }];
+    [self.queue addObject:[^(){
+        [[self.realDelegate class] _appDidDeactivate];
+    } copy]];
 }
 
 - (void)_appDidHide
 {
-    [self->queue addObject:^(){
-        [[realDelegate class] _appDidHide];
-    }];
+    [self.queue addObject:[^(){
+        [[self.realDelegate class] _appDidHide];
+    } copy]];
 }
 
 - (void)_appDidUnhide
 {
-    [self->queue addObject:^(){
-        [[realDelegate class] _appDidUnhide];
-    }];
+    [self.queue addObject:[^(){
+        [[self.realDelegate class] _appDidUnhide];
+    } copy]];
 }
 
 - (void)processQueuedEventsWithTargetDelegate:(id <NSApplicationDelegate>)delegate
 {
+    self.realDelegate = delegate;
+
     NSUInteger i;
-    NSUInteger count = [self->queue count];
-
-    realDelegate = delegate;
+    NSUInteger count = [self.queue count];
 
     for (i = 0; i < count; i++) {
-        void (^event)() = (void (^)())[self->queue objectAtIndex: i];
+        void (^event)() = (void (^)())[self.queue objectAtIndex: i];
         event();
+        [event release];
     }
 
-    [self->queue removeAllObjects];
+    [self.queue removeAllObjects];
 }
 
 @end
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKPainter.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKPainter.java	Wed Jul 05 18:14:56 2017 +0200
@@ -926,9 +926,20 @@
                                      int x, int y, int w, int h) {
         // Text is odd in that it uses the TEXT_BACKGROUND vs BACKGROUND.
         JComponent c = context.getComponent();
+        Container container = c.getParent();
+        Container containerParent = null;
         GTKStyle style = (GTKStyle)context.getStyle();
         Region id = context.getRegion();
         int state = context.getComponentState();
+
+        if (c instanceof ListCellRenderer && container != null) {
+            containerParent = container.getParent();
+            if (containerParent instanceof JComboBox
+                    && containerParent.hasFocus()) {
+                state |= SynthConstants.FOCUSED;
+            }
+        }
+
         synchronized (UNIXToolkit.GTK_LOCK) {
             if (ENGINE.paintCachedImage(g, x, y, w, h, id, state)) {
                 return;
@@ -938,9 +949,10 @@
             int focusSize = 0;
             boolean interiorFocus = style.getClassSpecificBoolValue(
                     context, "interior-focus", true);
+
+            focusSize = style.getClassSpecificIntValue(context,
+                    "focus-line-width",1);
             if (!interiorFocus && (state & SynthConstants.FOCUSED) != 0) {
-                focusSize = style.getClassSpecificIntValue(context,
-                        "focus-line-width",1);
                 x += focusSize;
                 y += focusSize;
                 w -= 2 * focusSize;
@@ -961,11 +973,25 @@
                                 h - (2 * yThickness),
                                 ColorType.TEXT_BACKGROUND);
 
-            if (focusSize > 0) {
-                x -= focusSize;
-                y -= focusSize;
-                w += 2 * focusSize;
-                h += 2 * focusSize;
+            if (focusSize > 0 && (state & SynthConstants.FOCUSED) != 0) {
+                if (!interiorFocus) {
+                    x -=  focusSize;
+                    y -=  focusSize;
+                    w +=  2 * focusSize;
+                    h +=  2 * focusSize;
+                } else {
+                    if (containerParent instanceof JComboBox) {
+                        x += (focusSize + 2);
+                        y += (focusSize + 1);
+                        w -= (2 * focusSize + 1);
+                        h -= (2 * focusSize + 2);
+                    } else {
+                        x += focusSize;
+                        y += focusSize;
+                        w -= 2 * focusSize;
+                        h -= 2 * focusSize;
+                    }
+                }
                 ENGINE.paintFocus(g, context, id, gtkState,
                         "entry", x, y, w, h);
             }
--- a/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, 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
@@ -35,6 +35,7 @@
 import java.io.OutputStream;
 import java.io.PrintStream;
 import java.text.MessageFormat;
+import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
@@ -385,9 +386,7 @@
         if ( base.getParentFile() == null && suffix.equals(".bak"))
             where = new File(".").getAbsoluteFile();
 
-
-        File f = File.createTempFile(prefix, suffix, where);
-        return f;
+        return Files.createTempFile(where.toPath(), prefix, suffix).toFile();
     }
 
     static private
--- a/jdk/src/share/classes/com/sun/rowset/CachedRowSetImpl.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/com/sun/rowset/CachedRowSetImpl.java	Wed Jul 05 18:14:56 2017 +0200
@@ -659,7 +659,7 @@
                  * us work with drivers that do not support
                  * getObject with a map in fairly sensible way
                  */
-                if (map == null) {
+                if (map == null || map.isEmpty()) {
                     obj = data.getObject(i);
                 } else {
                     obj = data.getObject(i, map);
--- a/jdk/src/share/classes/com/sun/rowset/internal/CachedRowSetWriter.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/com/sun/rowset/internal/CachedRowSetWriter.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, 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
@@ -812,101 +812,119 @@
         }
     }
 
-    /**
-         * Inserts a row that has been inserted into the given
-         * <code>CachedRowSet</code> object into the data source from which
-         * the rowset is derived, returning <code>false</code> if the insertion
-         * was successful.
-         *
-         * @param crs the <code>CachedRowSet</code> object that has had a row inserted
-         *            and to whose underlying data source the row will be inserted
-         * @param pstmt the <code>PreparedStatement</code> object that will be used
-         *              to execute the insertion
-         * @return <code>false</code> to indicate that the insertion was successful;
-         *         <code>true</code> otherwise
-         * @throws SQLException if a database access error occurs
-         */
-    private boolean insertNewRow(CachedRowSet crs,
-        PreparedStatement pstmt, CachedRowSetImpl crsRes) throws SQLException {
-        int i = 0;
-        int icolCount = crs.getMetaData().getColumnCount();
+   /**
+    * Inserts a row that has been inserted into the given
+    * <code>CachedRowSet</code> object into the data source from which
+    * the rowset is derived, returning <code>false</code> if the insertion
+    * was successful.
+    *
+    * @param crs the <code>CachedRowSet</code> object that has had a row inserted
+    *            and to whose underlying data source the row will be inserted
+    * @param pstmt the <code>PreparedStatement</code> object that will be used
+    *              to execute the insertion
+    * @return <code>false</code> to indicate that the insertion was successful;
+    *         <code>true</code> otherwise
+    * @throws SQLException if a database access error occurs
+    */
+   private boolean insertNewRow(CachedRowSet crs,
+       PreparedStatement pstmt, CachedRowSetImpl crsRes) throws SQLException {
+
+       boolean returnVal = false;
 
-        boolean returnVal = false;
-        PreparedStatement pstmtSel = con.prepareStatement(selectCmd,
-                        ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
-        ResultSet rs, rs2 = null;
-        DatabaseMetaData dbmd = con.getMetaData();
-        rs = pstmtSel.executeQuery();
-        String table = crs.getTableName();
-        rs2 = dbmd.getPrimaryKeys(null, null, table);
-        String [] primaryKeys = new String[icolCount];
-        int k = 0;
-        while(rs2.next()) {
-            String pkcolname = rs2.getString("COLUMN_NAME");
-            primaryKeys[k] = pkcolname;
-            k++;
-        }
+       try (PreparedStatement pstmtSel = con.prepareStatement(selectCmd,
+                       ResultSet.TYPE_SCROLL_SENSITIVE,
+                       ResultSet.CONCUR_READ_ONLY);
+            ResultSet rs = pstmtSel.executeQuery();
+            ResultSet rs2 = con.getMetaData().getPrimaryKeys(null, null,
+                       crs.getTableName())
+       ) {
+
+           ResultSetMetaData rsmd = crs.getMetaData();
+           int icolCount = rsmd.getColumnCount();
+           String[] primaryKeys = new String[icolCount];
+           int k = 0;
+           while (rs2.next()) {
+               primaryKeys[k] = rs2.getString("COLUMN_NAME");
+               k++;
+           }
+
+           if (rs.next()) {
+               for (String pkName : primaryKeys) {
+                   if (!isPKNameValid(pkName, rsmd)) {
+
+                       /* We came here as one of the the primary keys
+                        * of the table is not present in the cached
+                        * rowset object, it should be an autoincrement column
+                        * and not included while creating CachedRowSet
+                        * Object, proceed to check for other primary keys
+                        */
+                       continue;
+                   }
 
-        if(rs.next()) {
-            for(int j=0;j<primaryKeys.length;j++) {
-                if(primaryKeys[j] != null) {
-                    if(crs.getObject(primaryKeys[j]) == null){
-                        break;
-                    }
-                    String crsPK = (crs.getObject(primaryKeys[j])).toString();
-                    String rsPK = (rs.getObject(primaryKeys[j])).toString();
-                    if(crsPK.equals(rsPK)) {
-                        returnVal = true;
-                        this.crsResolve.moveToInsertRow();
-                        for(i = 1; i <= icolCount; i++) {
-                            String colname = (rs.getMetaData()).getColumnName(i);
-                            if(colname.equals(primaryKeys[j]))
-                                this.crsResolve.updateObject(i,rsPK);
-                            else
-                                this.crsResolve.updateNull(i);
-                        }
-                        this.crsResolve.insertRow();
-                        this.crsResolve.moveToCurrentRow();
-                    }
-                }
-            }
-        }
-        if(returnVal)
-            return returnVal;
+                   Object crsPK = crs.getObject(pkName);
+                   if (crsPK == null) {
+                       /*
+                        * It is possible that the PK is null on some databases
+                        * and will be filled in at insert time (MySQL for example)
+                        */
+                       break;
+                   }
+
+                   String rsPK = rs.getObject(pkName).toString();
+                   if (crsPK.toString().equals(rsPK)) {
+                       returnVal = true;
+                       this.crsResolve.moveToInsertRow();
+                       for (int i = 1; i <= icolCount; i++) {
+                           String colname = (rs.getMetaData()).getColumnName(i);
+                           if (colname.equals(pkName))
+                               this.crsResolve.updateObject(i,rsPK);
+                           else
+                               this.crsResolve.updateNull(i);
+                       }
+                       this.crsResolve.insertRow();
+                       this.crsResolve.moveToCurrentRow();
+                   }
+               }
+           }
+
+           if (returnVal) {
+               return returnVal;
+           }
 
-        try {
-            for (i = 1; i <= icolCount; i++) {
-                Object obj = crs.getObject(i);
-                if (obj != null) {
-                    pstmt.setObject(i, obj);
-                } else {
-                    pstmt.setNull(i,crs.getMetaData().getColumnType(i));
-                }
-            }
+           try {
+               for (int i = 1; i <= icolCount; i++) {
+                   Object obj = crs.getObject(i);
+                   if (obj != null) {
+                       pstmt.setObject(i, obj);
+                   } else {
+                       pstmt.setNull(i,crs.getMetaData().getColumnType(i));
+                   }
+               }
 
-             i = pstmt.executeUpdate();
-             return false;
+               pstmt.executeUpdate();
+               return false;
 
-        } catch (SQLException ex) {
-            /**
-             * Cursor will come here if executeUpdate fails.
-             * There can be many reasons why the insertion failed,
-             * one can be violation of primary key.
-             * Hence we cannot exactly identify why the insertion failed
-             * Present the current row as a null row to the user.
-             **/
-            this.crsResolve.moveToInsertRow();
+           } catch (SQLException ex) {
+               /*
+                * Cursor will come here if executeUpdate fails.
+                * There can be many reasons why the insertion failed,
+                * one can be violation of primary key.
+                * Hence we cannot exactly identify why the insertion failed,
+                * present the current row as a null row to the caller.
+                */
+               this.crsResolve.moveToInsertRow();
 
-            for(i = 1; i <= icolCount; i++) {
-               this.crsResolve.updateNull(i);
-            }
+               for (int i = 1; i <= icolCount; i++) {
+                   this.crsResolve.updateNull(i);
+               }
 
-            this.crsResolve.insertRow();
-            this.crsResolve.moveToCurrentRow();
+               this.crsResolve.insertRow();
+               this.crsResolve.moveToCurrentRow();
 
-            return true;
-        }
-    }
+               return true;
+           }
+       }
+   }
 
 /**
  * Deletes the row in the underlying data source that corresponds to
@@ -1437,4 +1455,25 @@
     }
 
     static final long serialVersionUID =-8506030970299413976L;
+
+    /**
+     * Validate whether the Primary Key is known to the CachedRowSet.  If it is
+     * not, it is an auto-generated key
+     * @param pk - Primary Key to validate
+     * @param rsmd - ResultSetMetadata for the RowSet
+     * @return true if found, false otherwise (auto generated key)
+     */
+    private boolean isPKNameValid(String pk, ResultSetMetaData rsmd) throws SQLException {
+        boolean isValid = false;
+        int cols = rsmd.getColumnCount();
+        for(int i = 1; i<= cols; i++) {
+            String colName = rsmd.getColumnClassName(i);
+            if(colName.equalsIgnoreCase(pk)) {
+                isValid = true;
+                break;
+            }
+        }
+
+        return isValid;
+    }
 }
--- a/jdk/src/share/classes/com/sun/rowset/internal/XmlReaderContentHandler.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/com/sun/rowset/internal/XmlReaderContentHandler.java	Wed Jul 05 18:14:56 2017 +0200
@@ -764,6 +764,7 @@
                     rs.next();
                     rs.setOriginalRow();
                     applyUpdates();
+                    rs.deleteRow();
                 } catch (SQLException ex) {
                     throw new SAXException(MessageFormat.format(resBundle.handleGetObject("xmlrch.errdel").toString() , ex.getMessage()));
                 }
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic.properties	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic.properties	Wed Jul 05 18:14:56 2017 +0200
@@ -1,189 +1,189 @@
-# This properties file is used to create a PropertyResourceBundle
-# It contains Locale specific strings used in Swing
-# Currently, the following components need this for support:
-#
-#    ColorChooser
-#    FileChooser
-#    OptionPane
-#
-# When this file is read in, the strings are put into the
-# defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.
-# This may change in future versions of Swing as we improve localization
-# support.
-#
-#                        MNEMONIC NOTE:
-# Many of strings in this file are used by widgets that have a
-# mnemonic, for example:
-#   ColorChooser.rgbNameTextAndMnemonic=R&GB
-#
-# Indicates that the tab in the ColorChooser for RGB colors will have
-# the text 'RGB', further the mnemonic character will be 'g' and that
-# a decoration will be provided under the 'G'. This will typically
-# look like:  RGB
-#              -
-#
-# One important thing to remember is that the mnemonic MUST exist in
-# the String, if it does not exist you should add text that makes it
-# exist. This will typically take the form 'XXXX (M)' where M is the
-# character for the mnemonic.
-#
-# @author Steve Wilson
-
-############ FILE CHOOSER STRINGS #############
-FileChooser.fileDescription.textAndMnemonic=Generic File
-FileChooser.directoryDescription.textAndMnemonic=Directory
-FileChooser.newFolderError.textAndMnemonic=Error creating new folder
-FileChooser.newFolderErrorSeparator= :
-FileChooser.newFolderParentDoesntExistTitle.textAndMnemonic=Unable to create folder
-FileChooser.newFolderParentDoesntExist.textAndMnemonic=Unable to create the folder.\n\nThe system cannot find the path specified.
-FileChooser.renameErrorTitle.textAndMnemonic=Error Renaming File or Folder
-FileChooser.renameError.textAndMnemonic=Cannot rename {0}
+# This properties file is used to create a PropertyResourceBundle
+# It contains Locale specific strings used in Swing
+# Currently, the following components need this for support:
+#
+#    ColorChooser
+#    FileChooser
+#    OptionPane
+#
+# When this file is read in, the strings are put into the
+# defaults table.  This is an implementation detail of the current
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
+# support.
+#
+#                        MNEMONIC NOTE:
+# Many of strings in this file are used by widgets that have a
+# mnemonic, for example:
+#   ColorChooser.rgbNameTextAndMnemonic=R&GB
+#
+# Indicates that the tab in the ColorChooser for RGB colors will have
+# the text 'RGB', further the mnemonic character will be 'g' and that
+# a decoration will be provided under the 'G'. This will typically
+# look like:  RGB
+#              -
+#
+# One important thing to remember is that the mnemonic MUST exist in
+# the String, if it does not exist you should add text that makes it
+# exist. This will typically take the form 'XXXX (M)' where M is the
+# character for the mnemonic.
+#
+# @author Steve Wilson
+
+############ FILE CHOOSER STRINGS #############
+FileChooser.fileDescription.textAndMnemonic=Generic File
+FileChooser.directoryDescription.textAndMnemonic=Directory
+FileChooser.newFolderError.textAndMnemonic=Error creating new folder
+FileChooser.newFolderErrorSeparator= :
+FileChooser.newFolderParentDoesntExistTitle.textAndMnemonic=Unable to create folder
+FileChooser.newFolderParentDoesntExist.textAndMnemonic=Unable to create the folder.\n\nThe system cannot find the path specified.
+FileChooser.renameErrorTitle.textAndMnemonic=Error Renaming File or Folder
+FileChooser.renameError.textAndMnemonic=Cannot rename {0}
 FileChooser.renameErrorFileExists.textAndMnemonic=Cannot rename {0}: A file with the name you specified already exists. \
-  Specify a different file name.
-FileChooser.acceptAllFileFilter.textAndMnemonic=All Files
-FileChooser.cancelButton.textAndMnemonic=Cancel
-FileChooser.saveButton.textAndMnemonic=&Save
-FileChooser.openButton.textAndMnemonic=&Open
-FileChooser.saveDialogTitle.textAndMnemonic=Save
-FileChooser.openDialogTitle.textAndMnemonic=Open
-FileChooser.updateButton.textAndMnemonic=&Update
-FileChooser.helpButton.textAndMnemonic=&Help
-FileChooser.directoryOpenButton.textAndMnemonic=&Open
-
-# File Size Units
-FileChooser.fileSizeKiloBytes={0} KB
-FileChooser.fileSizeMegaBytes={0} MB
-FileChooser.fileSizeGigaBytes={0} GB
-
-# These strings are platform dependent not look and feel dependent.
-FileChooser.win32.newFolder=New Folder
-FileChooser.win32.newFolder.subsequent=New Folder ({0})
-FileChooser.other.newFolder=NewFolder
-FileChooser.other.newFolder.subsequent=NewFolder.{0}
-
-
-## file chooser tooltips ###
-FileChooser.cancelButtonToolTip.textAndMnemonic=Abort file chooser dialog
-FileChooser.saveButtonToolTip.textAndMnemonic=Save selected file
-FileChooser.openButtonToolTip.textAndMnemonic=Open selected file
-FileChooser.updateButtonToolTip.textAndMnemonic=Update directory listing
-FileChooser.helpButtonToolTip.textAndMnemonic=FileChooser help
-FileChooser.directoryOpenButtonToolTip.textAndMnemonic=Open selected directory
-
-FileChooser.filesListAccessibleName=Files List
-FileChooser.filesDetailsAccessibleName=Files Details
-
-############ COLOR CHOOSER STRINGS #############
-ColorChooser.preview.textAndMnemonic=Preview
-ColorChooser.ok.textAndMnemonic=OK
-ColorChooser.cancel.textAndMnemonic=Cancel
-ColorChooser.reset.textAndMnemonic=&Reset
-ColorChooser.sample.textAndMnemonic=Sample Text  Sample Text
-ColorChooser.swatches.textAndMnemonic=&Swatches
-ColorChooser.swatchesRecent.textAndMnemonic=Recent:
-ColorChooser.hsv.textAndMnemonic=&HSV
-ColorChooser.hsvHue.textAndMnemonic=Hue
-ColorChooser.hsvSaturation.textAndMnemonic=Saturation
-ColorChooser.hsvValue.textAndMnemonic=Value
-ColorChooser.hsvTransparency.textAndMnemonic=Transparency
-ColorChooser.hsl.textAndMnemonic=HS&L
-ColorChooser.hslHue.textAndMnemonic=Hue
-ColorChooser.hslSaturation.textAndMnemonic=Saturation
-ColorChooser.hslLightness.textAndMnemonic=Lightness
-ColorChooser.hslTransparency.textAndMnemonic=Transparency
-ColorChooser.rgb.textAndMnemonic=R&GB
-ColorChooser.rgbRed.textAndMnemonic=Re&d
-ColorChooser.rgbGreen.textAndMnemonic=Gree&n
-ColorChooser.rgbBlue.textAndMnemonic=&Blue
-ColorChooser.rgbAlpha.textAndMnemonic=Alpha
-ColorChooser.rgbHexCode.textAndMnemonic=&Color Code
-ColorChooser.cmyk.textAndMnemonic=C&MYK
-ColorChooser.cmykCyan.textAndMnemonic=Cyan
-ColorChooser.cmykMagenta.textAndMnemonic=Magenta
-ColorChooser.cmykYellow.textAndMnemonic=Yellow
-ColorChooser.cmykBlack.textAndMnemonic=Black
-ColorChooser.cmykAlpha.textAndMnemonic=Alpha
-
-############ OPTION PANE STRINGS #############
-# We only define mnemonics for YES/NO, but for completeness you can
-# define mnemonics for any of the buttons.
-OptionPane.yesButton.textAndMnemonic=&Yes
-OptionPane.noButton.textAndMnemonic=&No
-OptionPane.okButton.textAndMnemonic=OK
-#OptionPane.okButtonMnemonic=0
-OptionPane.cancelButton.textAndMnemonic=Cancel
-#OptionPane.cancelButtonMnemonic=0
-OptionPane.title.textAndMnemonic=Select an Option
-# Title for the dialog for the showInputDialog methods. Only used if
-# the developer uses one of the variants that doesn't take a title.
-OptionPane.inputDialog.titleAndMnemonic=Input
-# Title for the dialog for the showMessageDialog methods. Only used if
-# the developer uses one of the variants that doesn't take a title.
-OptionPane.messageDialog.titleAndMnemonic=Message
-
-############ Printing Dialog Strings ############
-PrintingDialog.titleProgress.textAndMnemonic=Printing
-PrintingDialog.titleAborting.textAndMnemonic=Printing (Aborting)
-
-PrintingDialog.contentInitial.textAndMnemonic=Printing in progress...
-
-# The following string will be formatted by a MessageFormat
-# and {0} will be replaced by page number being printed
-PrintingDialog.contentProgress.textAndMnemonic=Printed page {0}...
-
-PrintingDialog.contentAborting.textAndMnemonic=Printing aborting...
-
-PrintingDialog.abortButton.textAndMnemonic=&Abort
-PrintingDialog.abortButtonToolTip.textAndMnemonic=Abort Printing
-
-############ Internal Frame Strings ############
-InternalFrame.iconButtonToolTip=Minimize
-InternalFrame.maxButtonToolTip=Maximize
-InternalFrame.restoreButtonToolTip=Restore
-InternalFrame.closeButtonToolTip=Close
-
-############ Internal Frame Title Pane Strings ############
-InternalFrameTitlePane.restoreButton.textAndMnemonic=Restore
-InternalFrameTitlePane.moveButton.textAndMnemonic=Move
-InternalFrameTitlePane.sizeButton.textAndMnemonic=Size
-InternalFrameTitlePane.minimizeButton.textAndMnemonic=Minimize
-InternalFrameTitlePane.maximizeButton.textAndMnemonic=Maximize
-InternalFrameTitlePane.closeButton.textAndMnemonic=Close
-
-############ Text strings #############
-# Used for html forms
-FormView.submitButton.textAndMnemonic=Submit Query
-FormView.resetButton.textAndMnemonic=Reset
-FormView.browseFileButton.textAndMnemonic=Browse...
-
-############ Abstract Document Strings ############
-AbstractDocument.styleChange.textAndMnemonic=style change
-AbstractDocument.addition.textAndMnemonic=addition
-AbstractDocument.deletion.textAndMnemonic=deletion
-AbstractDocument.undo.textAndMnemonic=Undo
-AbstractDocument.redo.textAndMnemonic=Redo
-
-############ Abstract Button Strings ############
-AbstractButton.click.textAndMnemonic=click
-
-############ Abstract Undoable Edit Strings ############
-AbstractUndoableEdit.undo.textAndMnemonic=Undo
-AbstractUndoableEdit.redo.textAndMnemonic=Redo
-
-############ Combo Box Strings ############
-ComboBox.togglePopup.textAndMnemonic=togglePopup
-
-############ Progress Monitor Strings ############
-ProgressMonitor.progress.textAndMnemonic=Progress...
-
-############ Split Pane Strings ############
-SplitPane.leftButton.textAndMnemonic=left button
-SplitPane.rightButton.textAndMnemonic=right button
-# Used for Isindex
-IsindexView.prompt=This is a searchable index.  Enter search keywords:
-
-############ InternalFrameTitlePane Strings ############
-InternalFrameTitlePane.iconifyButtonAccessibleName=Iconify
-InternalFrameTitlePane.maximizeButtonAccessibleName=Maximize
-InternalFrameTitlePane.closeButtonAccessibleName=Close
+  Specify a different file name.
+FileChooser.acceptAllFileFilter.textAndMnemonic=All Files
+FileChooser.cancelButton.textAndMnemonic=Cancel
+FileChooser.saveButton.textAndMnemonic=&Save
+FileChooser.openButton.textAndMnemonic=&Open
+FileChooser.saveDialogTitle.textAndMnemonic=Save
+FileChooser.openDialogTitle.textAndMnemonic=Open
+FileChooser.updateButton.textAndMnemonic=&Update
+FileChooser.helpButton.textAndMnemonic=&Help
+FileChooser.directoryOpenButton.textAndMnemonic=&Open
+
+# File Size Units
+FileChooser.fileSizeKiloBytes={0} KB
+FileChooser.fileSizeMegaBytes={0} MB
+FileChooser.fileSizeGigaBytes={0} GB
+
+# These strings are platform dependent not look and feel dependent.
+FileChooser.win32.newFolder=New Folder
+FileChooser.win32.newFolder.subsequent=New Folder ({0})
+FileChooser.other.newFolder=NewFolder
+FileChooser.other.newFolder.subsequent=NewFolder.{0}
+
+
+## file chooser tooltips ###
+FileChooser.cancelButtonToolTip.textAndMnemonic=Abort file chooser dialog
+FileChooser.saveButtonToolTip.textAndMnemonic=Save selected file
+FileChooser.openButtonToolTip.textAndMnemonic=Open selected file
+FileChooser.updateButtonToolTip.textAndMnemonic=Update directory listing
+FileChooser.helpButtonToolTip.textAndMnemonic=FileChooser help
+FileChooser.directoryOpenButtonToolTip.textAndMnemonic=Open selected directory
+
+FileChooser.filesListAccessibleName=Files List
+FileChooser.filesDetailsAccessibleName=Files Details
+
+############ COLOR CHOOSER STRINGS #############
+ColorChooser.preview.textAndMnemonic=Preview
+ColorChooser.ok.textAndMnemonic=OK
+ColorChooser.cancel.textAndMnemonic=Cancel
+ColorChooser.reset.textAndMnemonic=&Reset
+ColorChooser.sample.textAndMnemonic=Sample Text  Sample Text
+ColorChooser.swatches.textAndMnemonic=&Swatches
+ColorChooser.swatchesRecent.textAndMnemonic=Recent:
+ColorChooser.hsv.textAndMnemonic=&HSV
+ColorChooser.hsvHue.textAndMnemonic=Hue
+ColorChooser.hsvSaturation.textAndMnemonic=Saturation
+ColorChooser.hsvValue.textAndMnemonic=Value
+ColorChooser.hsvTransparency.textAndMnemonic=Transparency
+ColorChooser.hsl.textAndMnemonic=HS&L
+ColorChooser.hslHue.textAndMnemonic=Hue
+ColorChooser.hslSaturation.textAndMnemonic=Saturation
+ColorChooser.hslLightness.textAndMnemonic=Lightness
+ColorChooser.hslTransparency.textAndMnemonic=Transparency
+ColorChooser.rgb.textAndMnemonic=R&GB
+ColorChooser.rgbRed.textAndMnemonic=Re&d
+ColorChooser.rgbGreen.textAndMnemonic=Gree&n
+ColorChooser.rgbBlue.textAndMnemonic=&Blue
+ColorChooser.rgbAlpha.textAndMnemonic=Alpha
+ColorChooser.rgbHexCode.textAndMnemonic=&Color Code
+ColorChooser.cmyk.textAndMnemonic=C&MYK
+ColorChooser.cmykCyan.textAndMnemonic=Cyan
+ColorChooser.cmykMagenta.textAndMnemonic=Magenta
+ColorChooser.cmykYellow.textAndMnemonic=Yellow
+ColorChooser.cmykBlack.textAndMnemonic=Black
+ColorChooser.cmykAlpha.textAndMnemonic=Alpha
+
+############ OPTION PANE STRINGS #############
+# We only define mnemonics for YES/NO, but for completeness you can
+# define mnemonics for any of the buttons.
+OptionPane.yesButton.textAndMnemonic=&Yes
+OptionPane.noButton.textAndMnemonic=&No
+OptionPane.okButton.textAndMnemonic=OK
+#OptionPane.okButtonMnemonic=0
+OptionPane.cancelButton.textAndMnemonic=Cancel
+#OptionPane.cancelButtonMnemonic=0
+OptionPane.title.textAndMnemonic=Select an Option
+# Title for the dialog for the showInputDialog methods. Only used if
+# the developer uses one of the variants that doesn't take a title.
+OptionPane.inputDialog.titleAndMnemonic=Input
+# Title for the dialog for the showMessageDialog methods. Only used if
+# the developer uses one of the variants that doesn't take a title.
+OptionPane.messageDialog.titleAndMnemonic=Message
+
+############ Printing Dialog Strings ############
+PrintingDialog.titleProgress.textAndMnemonic=Printing
+PrintingDialog.titleAborting.textAndMnemonic=Printing (Aborting)
+
+PrintingDialog.contentInitial.textAndMnemonic=Printing in progress...
+
+# The following string will be formatted by a MessageFormat
+# and {0} will be replaced by page number being printed
+PrintingDialog.contentProgress.textAndMnemonic=Printed page {0}...
+
+PrintingDialog.contentAborting.textAndMnemonic=Printing aborting...
+
+PrintingDialog.abortButton.textAndMnemonic=&Abort
+PrintingDialog.abortButtonToolTip.textAndMnemonic=Abort Printing
+
+############ Internal Frame Strings ############
+InternalFrame.iconButtonToolTip=Minimize
+InternalFrame.maxButtonToolTip=Maximize
+InternalFrame.restoreButtonToolTip=Restore
+InternalFrame.closeButtonToolTip=Close
+
+############ Internal Frame Title Pane Strings ############
+InternalFrameTitlePane.restoreButton.textAndMnemonic=Restore
+InternalFrameTitlePane.moveButton.textAndMnemonic=Move
+InternalFrameTitlePane.sizeButton.textAndMnemonic=Size
+InternalFrameTitlePane.minimizeButton.textAndMnemonic=Minimize
+InternalFrameTitlePane.maximizeButton.textAndMnemonic=Maximize
+InternalFrameTitlePane.closeButton.textAndMnemonic=Close
+
+############ Text strings #############
+# Used for html forms
+FormView.submitButton.textAndMnemonic=Submit Query
+FormView.resetButton.textAndMnemonic=Reset
+FormView.browseFileButton.textAndMnemonic=Browse...
+
+############ Abstract Document Strings ############
+AbstractDocument.styleChange.textAndMnemonic=style change
+AbstractDocument.addition.textAndMnemonic=addition
+AbstractDocument.deletion.textAndMnemonic=deletion
+AbstractDocument.undo.textAndMnemonic=Undo
+AbstractDocument.redo.textAndMnemonic=Redo
+
+############ Abstract Button Strings ############
+AbstractButton.click.textAndMnemonic=click
+
+############ Abstract Undoable Edit Strings ############
+AbstractUndoableEdit.undo.textAndMnemonic=Undo
+AbstractUndoableEdit.redo.textAndMnemonic=Redo
+
+############ Combo Box Strings ############
+ComboBox.togglePopup.textAndMnemonic=togglePopup
+
+############ Progress Monitor Strings ############
+ProgressMonitor.progress.textAndMnemonic=Progress...
+
+############ Split Pane Strings ############
+SplitPane.leftButton.textAndMnemonic=left button
+SplitPane.rightButton.textAndMnemonic=right button
+# Used for Isindex
+IsindexView.prompt=This is a searchable index.  Enter search keywords:
+
+############ InternalFrameTitlePane Strings ############
+InternalFrameTitlePane.iconifyButtonAccessibleName=Iconify
+InternalFrameTitlePane.maximizeButtonAccessibleName=Maximize
+InternalFrameTitlePane.closeButtonAccessibleName=Close
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_de.properties	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_de.properties	Wed Jul 05 18:14:56 2017 +0200
@@ -1,187 +1,187 @@
-# This properties file is used to create a PropertyResourceBundle
-# It contains Locale specific strings used in Swing
-# Currently, the following components need this for support:
-#
-#    ColorChooser
-#    FileChooser
-#    OptionPane
-#
-# When this file is read in, the strings are put into the
-# defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.
-# This may change in future versions of Swing as we improve localization
-# support.
-#
-#                        MNEMONIC NOTE:
-# Many of strings in this file are used by widgets that have a
-# mnemonic, for example:
-#   ColorChooser.rgbNameTextAndMnemonic=R&GB
-#
-# Indicates that the tab in the ColorChooser for RGB colors will have
-# the text 'RGB', further the mnemonic character will be 'g' and that
-# a decoration will be provided under the 'G'. This will typically
-# look like:  RGB
-#              -
-#
-# One important thing to remember is that the mnemonic MUST exist in
-# the String, if it does not exist you should add text that makes it
-# exist. This will typically take the form 'XXXX (M)' where M is the
-# character for the mnemonic.
-#
-# @author Steve Wilson
-
-############ FILE CHOOSER STRINGS #############
-FileChooser.fileDescription.textAndMnemonic=Allgemeine Datei
-FileChooser.directoryDescription.textAndMnemonic=Verzeichnis
-FileChooser.newFolderError.textAndMnemonic=Fehler beim Erstellen eines neuen Ordners
-FileChooser.newFolderErrorSeparator= :
-FileChooser.newFolderParentDoesntExistTitle.textAndMnemonic=Ordner kann nicht erstellt werden
-FileChooser.newFolderParentDoesntExist.textAndMnemonic=Ordner kann nicht erstellt werden.\n\nSystem kann den angegebenen Pfad nicht finden.
-FileChooser.renameErrorTitle.textAndMnemonic=Fehler beim Umbenennen von Datei oder Ordner
-FileChooser.renameError.textAndMnemonic={0} kann nicht umbenannt werden
-FileChooser.renameErrorFileExists.textAndMnemonic={0} kann nicht umbenannt werden: Es ist bereits eine Datei mit dem angegebenen Namen vorhanden. Geben Sie einen anderen Dateinamen an.
-FileChooser.acceptAllFileFilter.textAndMnemonic=Alle Dateien
-FileChooser.cancelButton.textAndMnemonic=&Abbrechen
-FileChooser.saveButton.textAndMnemonic=&Speichern
-FileChooser.openButton.textAndMnemonic=\u00D6ffnen(&F)
-FileChooser.saveDialogTitle.textAndMnemonic=Speichern
-FileChooser.openDialogTitle.textAndMnemonic=\u00D6ffnen
-FileChooser.updateButton.textAndMnemonic=A&ktualisieren
-FileChooser.helpButton.textAndMnemonic=&Hilfe
-FileChooser.directoryOpenButton.textAndMnemonic=\u00D6ffnen(&F)
-
-# File Size Units
-FileChooser.fileSizeKiloBytes={0} KB
-FileChooser.fileSizeMegaBytes={0} MB
-FileChooser.fileSizeGigaBytes={0} GB
-
-# These strings are platform dependent not look and feel dependent.
-FileChooser.win32.newFolder=Neuer Ordner
-FileChooser.win32.newFolder.subsequent=Neuer Ordner ({0})
-FileChooser.other.newFolder=NewFolder
-FileChooser.other.newFolder.subsequent=NewFolder.{0}
-
-
-## file chooser tooltips ###
-FileChooser.cancelButtonToolTip.textAndMnemonic=Dialogfeld f\u00FCr Dateiauswahl schlie\u00DFen
-FileChooser.saveButtonToolTip.textAndMnemonic=Ausgew\u00E4hlte Datei speichern
-FileChooser.openButtonToolTip.textAndMnemonic=Ausgew\u00E4hlte Datei \u00F6ffnen
-FileChooser.updateButtonToolTip.textAndMnemonic=Verzeichnisliste aktualisieren
-FileChooser.helpButtonToolTip.textAndMnemonic=FileChooser-Hilfe
-FileChooser.directoryOpenButtonToolTip.textAndMnemonic=Ausgew\u00E4hltes Verzeichnis \u00F6ffnen
-
-FileChooser.filesListAccessibleName=Files List
-FileChooser.filesDetailsAccessibleName=Files Details
-
-############ COLOR CHOOSER STRINGS #############
-ColorChooser.preview.textAndMnemonic=Vorschau
-ColorChooser.ok.textAndMnemonic=OK
-ColorChooser.cancel.textAndMnemonic=Abbrechen
-ColorChooser.reset.textAndMnemonic=Zur\u00FCcksetzen(&Z)
-ColorChooser.sample.textAndMnemonic=Beispieltext  Beispieltext
-ColorChooser.swatches.textAndMnemonic=&Swatches
-ColorChooser.swatchesRecent.textAndMnemonic=Aktuell:
-ColorChooser.hsv.textAndMnemonic=&HSV
-ColorChooser.hsvHue.textAndMnemonic=Farbton
-ColorChooser.hsvSaturation.textAndMnemonic=S\u00E4ttigung
-ColorChooser.hsvValue.textAndMnemonic=Wert
-ColorChooser.hsvTransparency.textAndMnemonic=Transparenz
-ColorChooser.hsl.textAndMnemonic=HS&L
-ColorChooser.hslHue.textAndMnemonic=Farbton
-ColorChooser.hslSaturation.textAndMnemonic=S\u00E4ttigung
-ColorChooser.hslLightness.textAndMnemonic=Helligkeit
-ColorChooser.hslTransparency.textAndMnemonic=Transparenz
-ColorChooser.rgb.textAndMnemonic=R&GB
-ColorChooser.rgbRed.textAndMnemonic=Ro&t
-ColorChooser.rgbGreen.textAndMnemonic=Gr\u00FCn(&N)
-ColorChooser.rgbBlue.textAndMnemonic=&Blau
-ColorChooser.rgbAlpha.textAndMnemonic=Alpha
-ColorChooser.rgbHexCode.textAndMnemonic=&Farbcode
-ColorChooser.cmyk.textAndMnemonic=C&MYK
-ColorChooser.cmykCyan.textAndMnemonic=Zyan
-ColorChooser.cmykMagenta.textAndMnemonic=Magenta
-ColorChooser.cmykYellow.textAndMnemonic=Gelb
-ColorChooser.cmykBlack.textAndMnemonic=Schwarz
-ColorChooser.cmykAlpha.textAndMnemonic=Alpha
-
-############ OPTION PANE STRINGS #############
-# We only define mnemonics for YES/NO, but for completeness you can
-# define mnemonics for any of the buttons.
-OptionPane.yesButton.textAndMnemonic=&Ja
-OptionPane.noButton.textAndMnemonic=&Nein
-OptionPane.okButton.textAndMnemonic=&OK
-OptionPane.cancelButton.textAndMnemonic=&Abbrechen
-OptionPane.title.textAndMnemonic=Option ausw\u00E4hlen
-# Title for the dialog for the showInputDialog methods. Only used if
-# the developer uses one of the variants that doesn't take a title.
-OptionPane.inputDialog.titleAndMnemonic=Eingabe
-# Title for the dialog for the showMessageDialog methods. Only used if
-# the developer uses one of the variants that doesn't take a title.
-OptionPane.messageDialog.titleAndMnemonic=Meldung
-
-############ Printing Dialog Strings ############
-PrintingDialog.titleProgress.textAndMnemonic=Drucken
-PrintingDialog.titleAborting.textAndMnemonic=Drucken (Abbruch)
-
-PrintingDialog.contentInitial.textAndMnemonic=Druckvorgang l\u00E4uft...
-
-# The following string will be formatted by a MessageFormat
-# and {0} will be replaced by page number being printed
-PrintingDialog.contentProgress.textAndMnemonic=Seite {0} wurde gedruckt...
-
-PrintingDialog.contentAborting.textAndMnemonic=Druckvorgang wird abgebrochen...
-
-PrintingDialog.abortButton.textAndMnemonic=&Abbruch
-PrintingDialog.abortButtonToolTip.textAndMnemonic=Druckvorgang abbrechen
-
-############ Internal Frame Strings ############
-InternalFrame.iconButtonToolTip=Minimieren
-InternalFrame.maxButtonToolTip=Maximieren
-InternalFrame.restoreButtonToolTip=Wiederherstellen
-InternalFrame.closeButtonToolTip=Schlie\u00DFen
-
-############ Internal Frame Title Pane Strings ############
-InternalFrameTitlePane.restoreButton.textAndMnemonic=Wiederherstellen
-InternalFrameTitlePane.moveButton.textAndMnemonic=Verschieben
-InternalFrameTitlePane.sizeButton.textAndMnemonic=Gr\u00F6\u00DFe
-InternalFrameTitlePane.minimizeButton.textAndMnemonic=Minimieren
-InternalFrameTitlePane.maximizeButton.textAndMnemonic=Maximieren
-InternalFrameTitlePane.closeButton.textAndMnemonic=Schlie\u00DFen
-
-############ Text strings #############
-# Used for html forms
-FormView.submitButton.textAndMnemonic=Abfrage weiterleiten
-FormView.resetButton.textAndMnemonic=Zur\u00FCcksetzen
-FormView.browseFileButton.textAndMnemonic=Durchsuchen...
-
-############ Abstract Document Strings ############
-AbstractDocument.styleChange.textAndMnemonic=Formatvorlagen\u00E4nderung
-AbstractDocument.addition.textAndMnemonic=Hinzuf\u00FCgen
-AbstractDocument.deletion.textAndMnemonic=L\u00F6schen
-AbstractDocument.undo.textAndMnemonic=R\u00FCckg\u00E4ngig
-AbstractDocument.redo.textAndMnemonic=Wiederherstellen
-
-############ Abstract Button Strings ############
-AbstractButton.click.textAndMnemonic=Klicken
-
-############ Abstract Undoable Edit Strings ############
-AbstractUndoableEdit.undo.textAndMnemonic=R\u00FCckg\u00E4ngig
-AbstractUndoableEdit.redo.textAndMnemonic=Wiederherstellen
-
-############ Combo Box Strings ############
-ComboBox.togglePopup.textAndMnemonic=togglePopup
-
-############ Progress Monitor Strings ############
-ProgressMonitor.progress.textAndMnemonic=Fortschritt...
-
-############ Split Pane Strings ############
-SplitPane.leftButton.textAndMnemonic=linke Schaltfl\u00E4che
-SplitPane.rightButton.textAndMnemonic=rechte Schaltfl\u00E4che
-# Used for Isindex
-IsindexView.prompt=Dieser Index kann durchsucht werden. Geben Sie Schl\u00FCsselw\u00F6rter f\u00FCr die Suche ein:
-
-############ InternalFrameTitlePane Strings ############
-InternalFrameTitlePane.iconifyButtonAccessibleName=Als Symbol darstellen
-InternalFrameTitlePane.maximizeButtonAccessibleName=Maximieren
-InternalFrameTitlePane.closeButtonAccessibleName=Schlie\u00DFen
-
+# This properties file is used to create a PropertyResourceBundle
+# It contains Locale specific strings used in Swing
+# Currently, the following components need this for support:
+#
+#    ColorChooser
+#    FileChooser
+#    OptionPane
+#
+# When this file is read in, the strings are put into the
+# defaults table.  This is an implementation detail of the current
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
+# support.
+#
+#                        MNEMONIC NOTE:
+# Many of strings in this file are used by widgets that have a
+# mnemonic, for example:
+#   ColorChooser.rgbNameTextAndMnemonic=R&GB
+#
+# Indicates that the tab in the ColorChooser for RGB colors will have
+# the text 'RGB', further the mnemonic character will be 'g' and that
+# a decoration will be provided under the 'G'. This will typically
+# look like:  RGB
+#              -
+#
+# One important thing to remember is that the mnemonic MUST exist in
+# the String, if it does not exist you should add text that makes it
+# exist. This will typically take the form 'XXXX (M)' where M is the
+# character for the mnemonic.
+#
+# @author Steve Wilson
+
+############ FILE CHOOSER STRINGS #############
+FileChooser.fileDescription.textAndMnemonic=Allgemeine Datei
+FileChooser.directoryDescription.textAndMnemonic=Verzeichnis
+FileChooser.newFolderError.textAndMnemonic=Fehler beim Erstellen eines neuen Ordners
+FileChooser.newFolderErrorSeparator= :
+FileChooser.newFolderParentDoesntExistTitle.textAndMnemonic=Ordner kann nicht erstellt werden
+FileChooser.newFolderParentDoesntExist.textAndMnemonic=Ordner kann nicht erstellt werden.\n\nSystem kann den angegebenen Pfad nicht finden.
+FileChooser.renameErrorTitle.textAndMnemonic=Fehler beim Umbenennen von Datei oder Ordner
+FileChooser.renameError.textAndMnemonic={0} kann nicht umbenannt werden
+FileChooser.renameErrorFileExists.textAndMnemonic={0} kann nicht umbenannt werden: Es ist bereits eine Datei mit dem angegebenen Namen vorhanden. Geben Sie einen anderen Dateinamen an.
+FileChooser.acceptAllFileFilter.textAndMnemonic=Alle Dateien
+FileChooser.cancelButton.textAndMnemonic=Abbrechen
+FileChooser.saveButton.textAndMnemonic=&Speichern
+FileChooser.openButton.textAndMnemonic=\u00D6ffnen(&F)
+FileChooser.saveDialogTitle.textAndMnemonic=Speichern
+FileChooser.openDialogTitle.textAndMnemonic=\u00D6ffnen
+FileChooser.updateButton.textAndMnemonic=A&ktualisieren
+FileChooser.helpButton.textAndMnemonic=&Hilfe
+FileChooser.directoryOpenButton.textAndMnemonic=\u00D6ffnen(&F)
+
+# File Size Units
+FileChooser.fileSizeKiloBytes={0} KB
+FileChooser.fileSizeMegaBytes={0} MB
+FileChooser.fileSizeGigaBytes={0} GB
+
+# These strings are platform dependent not look and feel dependent.
+FileChooser.win32.newFolder=Neuer Ordner
+FileChooser.win32.newFolder.subsequent=Neuer Ordner ({0})
+FileChooser.other.newFolder=NewFolder
+FileChooser.other.newFolder.subsequent=NewFolder.{0}
+
+
+## file chooser tooltips ###
+FileChooser.cancelButtonToolTip.textAndMnemonic=Dialogfeld f\u00FCr Dateiauswahl schlie\u00DFen
+FileChooser.saveButtonToolTip.textAndMnemonic=Ausgew\u00E4hlte Datei speichern
+FileChooser.openButtonToolTip.textAndMnemonic=Ausgew\u00E4hlte Datei \u00F6ffnen
+FileChooser.updateButtonToolTip.textAndMnemonic=Verzeichnisliste aktualisieren
+FileChooser.helpButtonToolTip.textAndMnemonic=FileChooser-Hilfe
+FileChooser.directoryOpenButtonToolTip.textAndMnemonic=Ausgew\u00E4hltes Verzeichnis \u00F6ffnen
+
+FileChooser.filesListAccessibleName=Files List
+FileChooser.filesDetailsAccessibleName=Files Details
+
+############ COLOR CHOOSER STRINGS #############
+ColorChooser.preview.textAndMnemonic=Vorschau
+ColorChooser.ok.textAndMnemonic=OK
+ColorChooser.cancel.textAndMnemonic=Abbrechen
+ColorChooser.reset.textAndMnemonic=Zur\u00FCcksetzen(&Z)
+ColorChooser.sample.textAndMnemonic=Beispieltext  Beispieltext
+ColorChooser.swatches.textAndMnemonic=&Swatches
+ColorChooser.swatchesRecent.textAndMnemonic=Aktuell:
+ColorChooser.hsv.textAndMnemonic=&HSV
+ColorChooser.hsvHue.textAndMnemonic=Farbton
+ColorChooser.hsvSaturation.textAndMnemonic=S\u00E4ttigung
+ColorChooser.hsvValue.textAndMnemonic=Wert
+ColorChooser.hsvTransparency.textAndMnemonic=Transparenz
+ColorChooser.hsl.textAndMnemonic=HS&L
+ColorChooser.hslHue.textAndMnemonic=Farbton
+ColorChooser.hslSaturation.textAndMnemonic=S\u00E4ttigung
+ColorChooser.hslLightness.textAndMnemonic=Helligkeit
+ColorChooser.hslTransparency.textAndMnemonic=Transparenz
+ColorChooser.rgb.textAndMnemonic=R&GB
+ColorChooser.rgbRed.textAndMnemonic=Ro&t
+ColorChooser.rgbGreen.textAndMnemonic=Gr\u00FCn(&N)
+ColorChooser.rgbBlue.textAndMnemonic=&Blau
+ColorChooser.rgbAlpha.textAndMnemonic=Alpha
+ColorChooser.rgbHexCode.textAndMnemonic=&Farbcode
+ColorChooser.cmyk.textAndMnemonic=C&MYK
+ColorChooser.cmykCyan.textAndMnemonic=Zyan
+ColorChooser.cmykMagenta.textAndMnemonic=Magenta
+ColorChooser.cmykYellow.textAndMnemonic=Gelb
+ColorChooser.cmykBlack.textAndMnemonic=Schwarz
+ColorChooser.cmykAlpha.textAndMnemonic=Alpha
+
+############ OPTION PANE STRINGS #############
+# We only define mnemonics for YES/NO, but for completeness you can
+# define mnemonics for any of the buttons.
+OptionPane.yesButton.textAndMnemonic=&Ja
+OptionPane.noButton.textAndMnemonic=&Nein
+OptionPane.okButton.textAndMnemonic=&OK
+OptionPane.cancelButton.textAndMnemonic=&Abbrechen
+OptionPane.title.textAndMnemonic=Option ausw\u00E4hlen
+# Title for the dialog for the showInputDialog methods. Only used if
+# the developer uses one of the variants that doesn't take a title.
+OptionPane.inputDialog.titleAndMnemonic=Eingabe
+# Title for the dialog for the showMessageDialog methods. Only used if
+# the developer uses one of the variants that doesn't take a title.
+OptionPane.messageDialog.titleAndMnemonic=Meldung
+
+############ Printing Dialog Strings ############
+PrintingDialog.titleProgress.textAndMnemonic=Drucken
+PrintingDialog.titleAborting.textAndMnemonic=Drucken (Abbruch)
+
+PrintingDialog.contentInitial.textAndMnemonic=Druckvorgang l\u00E4uft...
+
+# The following string will be formatted by a MessageFormat
+# and {0} will be replaced by page number being printed
+PrintingDialog.contentProgress.textAndMnemonic=Seite {0} wurde gedruckt...
+
+PrintingDialog.contentAborting.textAndMnemonic=Druckvorgang wird abgebrochen...
+
+PrintingDialog.abortButton.textAndMnemonic=&Abbruch
+PrintingDialog.abortButtonToolTip.textAndMnemonic=Druckvorgang abbrechen
+
+############ Internal Frame Strings ############
+InternalFrame.iconButtonToolTip=Minimieren
+InternalFrame.maxButtonToolTip=Maximieren
+InternalFrame.restoreButtonToolTip=Wiederherstellen
+InternalFrame.closeButtonToolTip=Schlie\u00DFen
+
+############ Internal Frame Title Pane Strings ############
+InternalFrameTitlePane.restoreButton.textAndMnemonic=Wiederherstellen
+InternalFrameTitlePane.moveButton.textAndMnemonic=Verschieben
+InternalFrameTitlePane.sizeButton.textAndMnemonic=Gr\u00F6\u00DFe
+InternalFrameTitlePane.minimizeButton.textAndMnemonic=Minimieren
+InternalFrameTitlePane.maximizeButton.textAndMnemonic=Maximieren
+InternalFrameTitlePane.closeButton.textAndMnemonic=Schlie\u00DFen
+
+############ Text strings #############
+# Used for html forms
+FormView.submitButton.textAndMnemonic=Abfrage weiterleiten
+FormView.resetButton.textAndMnemonic=Zur\u00FCcksetzen
+FormView.browseFileButton.textAndMnemonic=Durchsuchen...
+
+############ Abstract Document Strings ############
+AbstractDocument.styleChange.textAndMnemonic=Formatvorlagen\u00E4nderung
+AbstractDocument.addition.textAndMnemonic=Hinzuf\u00FCgen
+AbstractDocument.deletion.textAndMnemonic=L\u00F6schen
+AbstractDocument.undo.textAndMnemonic=R\u00FCckg\u00E4ngig
+AbstractDocument.redo.textAndMnemonic=Wiederherstellen
+
+############ Abstract Button Strings ############
+AbstractButton.click.textAndMnemonic=Klicken
+
+############ Abstract Undoable Edit Strings ############
+AbstractUndoableEdit.undo.textAndMnemonic=R\u00FCckg\u00E4ngig
+AbstractUndoableEdit.redo.textAndMnemonic=Wiederherstellen
+
+############ Combo Box Strings ############
+ComboBox.togglePopup.textAndMnemonic=togglePopup
+
+############ Progress Monitor Strings ############
+ProgressMonitor.progress.textAndMnemonic=Fortschritt...
+
+############ Split Pane Strings ############
+SplitPane.leftButton.textAndMnemonic=linke Schaltfl\u00E4che
+SplitPane.rightButton.textAndMnemonic=rechte Schaltfl\u00E4che
+# Used for Isindex
+IsindexView.prompt=Dieser Index kann durchsucht werden. Geben Sie Schl\u00FCsselw\u00F6rter f\u00FCr die Suche ein:
+
+############ InternalFrameTitlePane Strings ############
+InternalFrameTitlePane.iconifyButtonAccessibleName=Als Symbol darstellen
+InternalFrameTitlePane.maximizeButtonAccessibleName=Maximieren
+InternalFrameTitlePane.closeButtonAccessibleName=Schlie\u00DFen
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_es.properties	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_es.properties	Wed Jul 05 18:14:56 2017 +0200
@@ -1,186 +1,186 @@
-# This properties file is used to create a PropertyResourceBundle
-# It contains Locale specific strings used in Swing
-# Currently, the following components need this for support:
-#
-#    ColorChooser
-#    FileChooser
-#    OptionPane
-#
-# When this file is read in, the strings are put into the
-# defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.
-# This may change in future versions of Swing as we improve localization
-# support.
-#
-#                        MNEMONIC NOTE:
-# Many of strings in this file are used by widgets that have a
-# mnemonic, for example:
-#   ColorChooser.rgbNameTextAndMnemonic=R&GB
-# Indicates that the tab in the ColorChooser for RGB colors will have
-# the text 'RGB', further the mnemonic character will be 'g' and that
-# a decoration will be provided under the 'G'. This will typically
-# look like:  RGB
-#              -
-#
-# One important thing to remember is that the mnemonic MUST exist in
-# the String, if it does not exist you should add text that makes it
-# exist. This will typically take the form 'XXXX (M)' where M is the
-# character for the mnemonic.
-#
-# @author Steve Wilson
-
-############ FILE CHOOSER STRINGS #############
-FileChooser.fileDescription.textAndMnemonic=Archivo Gen\u00E9rico
-FileChooser.directoryDescription.textAndMnemonic=Directorio
-FileChooser.newFolderError.textAndMnemonic=Error al crear una nueva carpeta
-FileChooser.newFolderErrorSeparator= :
-FileChooser.newFolderParentDoesntExistTitle.textAndMnemonic=No se ha podido crear la carpeta
-FileChooser.newFolderParentDoesntExist.textAndMnemonic=No se ha podido crear la carpeta.\n\nEl sistema no puede encontrar la ruta de acceso especificada.
-FileChooser.renameErrorTitle.textAndMnemonic=Error al cambiar el nombre del archivo o carpeta
-FileChooser.renameError.textAndMnemonic=No se puede cambiar el nombre de {0}
-FileChooser.renameErrorFileExists.textAndMnemonic=No se puede cambiar el nombre de {0}: ya existe un archivo con el nombre especificado. Especifique otro nombre de archivo.
-FileChooser.acceptAllFileFilter.textAndMnemonic=Todos los Archivos
-FileChooser.cancelButton.textAndMnemonic=&Cancelar
-FileChooser.saveButton.textAndMnemonic=&Guardar
-FileChooser.openButton.textAndMnemonic=A&brir
-FileChooser.saveDialogTitle.textAndMnemonic=Guardar
-FileChooser.openDialogTitle.textAndMnemonic=Abrir
-FileChooser.updateButton.textAndMnemonic=Act&ualizar
-FileChooser.helpButton.textAndMnemonic=A&yuda
-FileChooser.directoryOpenButton.textAndMnemonic=&Abrir
-
-# File Size Units
-FileChooser.fileSizeKiloBytes={0} KB
-FileChooser.fileSizeMegaBytes={0} MB
-FileChooser.fileSizeGigaBytes={0} GB
-
-# These strings are platform dependent not look and feel dependent.
-FileChooser.win32.newFolder=Nueva Carpeta
-FileChooser.win32.newFolder.subsequent=Nueva Carpeta ({0})
-FileChooser.other.newFolder=Nueva Carpeta
-FileChooser.other.newFolder.subsequent=Nueva Carpeta.{0}
-
-
-## file chooser tooltips ###
-FileChooser.cancelButtonToolTip.textAndMnemonic=Cuadro de di\u00E1logo para abortar el selector de archivos
-FileChooser.saveButtonToolTip.textAndMnemonic=Guardar archivo seleccionado
-FileChooser.openButtonToolTip.textAndMnemonic=Abrir archivo seleccionado
-FileChooser.updateButtonToolTip.textAndMnemonic=Actualizar lista de directorios
-FileChooser.helpButtonToolTip.textAndMnemonic=Ayuda del Selector de Archivos
-FileChooser.directoryOpenButtonToolTip.textAndMnemonic=Abrir directorio seleccionado
-
-FileChooser.filesListAccessibleName=Files List
-FileChooser.filesDetailsAccessibleName=Files Details
-
-############ COLOR CHOOSER STRINGS #############
-ColorChooser.preview.textAndMnemonic=Presentaci\u00F3n Preliminar
-ColorChooser.ok.textAndMnemonic=Aceptar
-ColorChooser.cancel.textAndMnemonic=Cancelar
-ColorChooser.reset.textAndMnemonic=&Restablecer
-ColorChooser.sample.textAndMnemonic=Texto de Ejemplo  Texto de Ejemplo
-ColorChooser.swatches.textAndMnemonic=Mue&stras
-ColorChooser.swatchesRecent.textAndMnemonic=Reciente:
-ColorChooser.hsv.textAndMnemonic=&HSV
-ColorChooser.hsvHue.textAndMnemonic=Matiz
-ColorChooser.hsvSaturation.textAndMnemonic=Saturaci\u00F3n
-ColorChooser.hsvValue.textAndMnemonic=Valor
-ColorChooser.hsvTransparency.textAndMnemonic=Transparencia
-ColorChooser.hsl.textAndMnemonic=HS&L
-ColorChooser.hslHue.textAndMnemonic=Matiz
-ColorChooser.hslSaturation.textAndMnemonic=Saturaci\u00F3n
-ColorChooser.hslLightness.textAndMnemonic=Iluminaci\u00F3n
-ColorChooser.hslTransparency.textAndMnemonic=Transparencia
-ColorChooser.rgb.textAndMnemonic=R&GB
-ColorChooser.rgbRed.textAndMnemonic=Ro&jo
-ColorChooser.rgbGreen.textAndMnemonic=&Verde
-ColorChooser.rgbBlue.textAndMnemonic=A&zul
-ColorChooser.rgbAlpha.textAndMnemonic=Alfa
-ColorChooser.rgbHexCode.textAndMnemonic=C\u00F3digo de Color(&C)
-ColorChooser.cmyk.textAndMnemonic=C&MYK
-ColorChooser.cmykCyan.textAndMnemonic=Cian
-ColorChooser.cmykMagenta.textAndMnemonic=Magenta
-ColorChooser.cmykYellow.textAndMnemonic=Amarillo
-ColorChooser.cmykBlack.textAndMnemonic=Negro
-ColorChooser.cmykAlpha.textAndMnemonic=Alfa
-
-############ OPTION PANE STRINGS #############
-# We only define mnemonics for YES/NO, but for completeness you can
-# define mnemonics for any of the buttons.
-OptionPane.yesButton.textAndMnemonic=S\u00ED(&S)
-OptionPane.noButton.textAndMnemonic=&No
-OptionPane.okButton.textAndMnemonic=Aceptar(&O)
-OptionPane.cancelButton.textAndMnemonic=&Cancelar
-OptionPane.title.textAndMnemonic=Seleccionar una Opci\u00F3n
-# Title for the dialog for the showInputDialog methods. Only used if
-# the developer uses one of the variants that doesn't take a title.
-OptionPane.inputDialog.titleAndMnemonic=Entrada
-# Title for the dialog for the showMessageDialog methods. Only used if
-# the developer uses one of the variants that doesn't take a title.
-OptionPane.messageDialog.titleAndMnemonic=Mensaje
-
-############ Printing Dialog Strings ############
-PrintingDialog.titleProgress.textAndMnemonic=Impresi\u00F3n
-PrintingDialog.titleAborting.textAndMnemonic=Impresi\u00F3n (Abortando)
-
-PrintingDialog.contentInitial.textAndMnemonic=Impresi\u00F3n en curso...
-
-# The following string will be formatted by a MessageFormat
-# and {0} will be replaced by page number being printed
-PrintingDialog.contentProgress.textAndMnemonic=P\u00E1gina impresa {0}...
-
-PrintingDialog.contentAborting.textAndMnemonic=Abortando la impresi\u00F3n...
-
-PrintingDialog.abortButton.textAndMnemonic=&Abortar
-PrintingDialog.abortButtonToolTip.textAndMnemonic=Abortar Impresi\u00F3n
-
-############ Internal Frame Strings ############
-InternalFrame.iconButtonToolTip=Minimizar
-InternalFrame.maxButtonToolTip=Maximizar
-InternalFrame.restoreButtonToolTip=Restaurar
-InternalFrame.closeButtonToolTip=Cerrar
-
-############ Internal Frame Title Pane Strings ############
-InternalFrameTitlePane.restoreButton.textAndMnemonic=Restaurar
-InternalFrameTitlePane.moveButton.textAndMnemonic=Mover
-InternalFrameTitlePane.sizeButton.textAndMnemonic=Tama\u00F1o
-InternalFrameTitlePane.minimizeButton.textAndMnemonic=Minimizar
-InternalFrameTitlePane.maximizeButton.textAndMnemonic=Maximizar
-InternalFrameTitlePane.closeButton.textAndMnemonic=Cerrar
-
-############ Text strings #############
-# Used for html forms
-FormView.submitButton.textAndMnemonic=Enviar Consulta
-FormView.resetButton.textAndMnemonic=Restablecer
-FormView.browseFileButton.textAndMnemonic=Examinar...
-
-############ Abstract Document Strings ############
-AbstractDocument.styleChange.textAndMnemonic=cambio de estilo
-AbstractDocument.addition.textAndMnemonic=agregaci\u00F3n
-AbstractDocument.deletion.textAndMnemonic=supresi\u00F3n
-AbstractDocument.undo.textAndMnemonic=Deshacer
-AbstractDocument.redo.textAndMnemonic=Rehacer
-
-############ Abstract Button Strings ############
-AbstractButton.click.textAndMnemonic=hacer clic
-
-############ Abstract Undoable Edit Strings ############
-AbstractUndoableEdit.undo.textAndMnemonic=Deshacer
-AbstractUndoableEdit.redo.textAndMnemonic=Rehacer
-
-############ Combo Box Strings ############
-ComboBox.togglePopup.textAndMnemonic=togglePopup
-
-############ Progress Monitor Strings ############
-ProgressMonitor.progress.textAndMnemonic=Progreso...
-
-############ Split Pane Strings ############
-SplitPane.leftButton.textAndMnemonic=bot\u00F3n izquierdo
-SplitPane.rightButton.textAndMnemonic=bot\u00F3n derecho
-# Used for Isindex
-IsindexView.prompt=En este \u00EDndice se pueden efectuar b\u00FAsquedas. Escriba las palabras clave de b\u00FAsqueda:
-
-############ InternalFrameTitlePane Strings ############
-InternalFrameTitlePane.iconifyButtonAccessibleName=Convertir en Icono
-InternalFrameTitlePane.maximizeButtonAccessibleName=Maximizar
-InternalFrameTitlePane.closeButtonAccessibleName=Cerrar
-
+# This properties file is used to create a PropertyResourceBundle
+# It contains Locale specific strings used in Swing
+# Currently, the following components need this for support:
+#
+#    ColorChooser
+#    FileChooser
+#    OptionPane
+#
+# When this file is read in, the strings are put into the
+# defaults table.  This is an implementation detail of the current
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
+# support.
+#
+#                        MNEMONIC NOTE:
+# Many of strings in this file are used by widgets that have a
+# mnemonic, for example:
+#   ColorChooser.rgbNameTextAndMnemonic=R&GB
+# Indicates that the tab in the ColorChooser for RGB colors will have
+# the text 'RGB', further the mnemonic character will be 'g' and that
+# a decoration will be provided under the 'G'. This will typically
+# look like:  RGB
+#              -
+#
+# One important thing to remember is that the mnemonic MUST exist in
+# the String, if it does not exist you should add text that makes it
+# exist. This will typically take the form 'XXXX (M)' where M is the
+# character for the mnemonic.
+#
+# @author Steve Wilson
+
+############ FILE CHOOSER STRINGS #############
+FileChooser.fileDescription.textAndMnemonic=Archivo Gen\u00E9rico
+FileChooser.directoryDescription.textAndMnemonic=Directorio
+FileChooser.newFolderError.textAndMnemonic=Error al crear una nueva carpeta
+FileChooser.newFolderErrorSeparator= :
+FileChooser.newFolderParentDoesntExistTitle.textAndMnemonic=No se ha podido crear la carpeta
+FileChooser.newFolderParentDoesntExist.textAndMnemonic=No se ha podido crear la carpeta.\n\nEl sistema no puede encontrar la ruta de acceso especificada.
+FileChooser.renameErrorTitle.textAndMnemonic=Error al cambiar el nombre del archivo o carpeta
+FileChooser.renameError.textAndMnemonic=No se puede cambiar el nombre de {0}
+FileChooser.renameErrorFileExists.textAndMnemonic=No se puede cambiar el nombre de {0}: ya existe un archivo con el nombre especificado. Especifique otro nombre de archivo.
+FileChooser.acceptAllFileFilter.textAndMnemonic=Todos los Archivos
+FileChooser.cancelButton.textAndMnemonic=Cancelar
+FileChooser.saveButton.textAndMnemonic=&Guardar
+FileChooser.openButton.textAndMnemonic=A&brir
+FileChooser.saveDialogTitle.textAndMnemonic=Guardar
+FileChooser.openDialogTitle.textAndMnemonic=Abrir
+FileChooser.updateButton.textAndMnemonic=Act&ualizar
+FileChooser.helpButton.textAndMnemonic=A&yuda
+FileChooser.directoryOpenButton.textAndMnemonic=&Abrir
+
+# File Size Units
+FileChooser.fileSizeKiloBytes={0} KB
+FileChooser.fileSizeMegaBytes={0} MB
+FileChooser.fileSizeGigaBytes={0} GB
+
+# These strings are platform dependent not look and feel dependent.
+FileChooser.win32.newFolder=Nueva Carpeta
+FileChooser.win32.newFolder.subsequent=Nueva Carpeta ({0})
+FileChooser.other.newFolder=Nueva Carpeta
+FileChooser.other.newFolder.subsequent=Nueva Carpeta.{0}
+
+
+## file chooser tooltips ###
+FileChooser.cancelButtonToolTip.textAndMnemonic=Cuadro de di\u00E1logo para abortar el selector de archivos
+FileChooser.saveButtonToolTip.textAndMnemonic=Guardar archivo seleccionado
+FileChooser.openButtonToolTip.textAndMnemonic=Abrir archivo seleccionado
+FileChooser.updateButtonToolTip.textAndMnemonic=Actualizar lista de directorios
+FileChooser.helpButtonToolTip.textAndMnemonic=Ayuda del Selector de Archivos
+FileChooser.directoryOpenButtonToolTip.textAndMnemonic=Abrir directorio seleccionado
+
+FileChooser.filesListAccessibleName=Files List
+FileChooser.filesDetailsAccessibleName=Files Details
+
+############ COLOR CHOOSER STRINGS #############
+ColorChooser.preview.textAndMnemonic=Presentaci\u00F3n Preliminar
+ColorChooser.ok.textAndMnemonic=Aceptar
+ColorChooser.cancel.textAndMnemonic=Cancelar
+ColorChooser.reset.textAndMnemonic=&Restablecer
+ColorChooser.sample.textAndMnemonic=Texto de Ejemplo  Texto de Ejemplo
+ColorChooser.swatches.textAndMnemonic=Mue&stras
+ColorChooser.swatchesRecent.textAndMnemonic=Reciente:
+ColorChooser.hsv.textAndMnemonic=&HSV
+ColorChooser.hsvHue.textAndMnemonic=Matiz
+ColorChooser.hsvSaturation.textAndMnemonic=Saturaci\u00F3n
+ColorChooser.hsvValue.textAndMnemonic=Valor
+ColorChooser.hsvTransparency.textAndMnemonic=Transparencia
+ColorChooser.hsl.textAndMnemonic=HS&L
+ColorChooser.hslHue.textAndMnemonic=Matiz
+ColorChooser.hslSaturation.textAndMnemonic=Saturaci\u00F3n
+ColorChooser.hslLightness.textAndMnemonic=Iluminaci\u00F3n
+ColorChooser.hslTransparency.textAndMnemonic=Transparencia
+ColorChooser.rgb.textAndMnemonic=R&GB
+ColorChooser.rgbRed.textAndMnemonic=Ro&jo
+ColorChooser.rgbGreen.textAndMnemonic=&Verde
+ColorChooser.rgbBlue.textAndMnemonic=A&zul
+ColorChooser.rgbAlpha.textAndMnemonic=Alfa
+ColorChooser.rgbHexCode.textAndMnemonic=C\u00F3digo de Color(&C)
+ColorChooser.cmyk.textAndMnemonic=C&MYK
+ColorChooser.cmykCyan.textAndMnemonic=Cian
+ColorChooser.cmykMagenta.textAndMnemonic=Magenta
+ColorChooser.cmykYellow.textAndMnemonic=Amarillo
+ColorChooser.cmykBlack.textAndMnemonic=Negro
+ColorChooser.cmykAlpha.textAndMnemonic=Alfa
+
+############ OPTION PANE STRINGS #############
+# We only define mnemonics for YES/NO, but for completeness you can
+# define mnemonics for any of the buttons.
+OptionPane.yesButton.textAndMnemonic=S\u00ED(&S)
+OptionPane.noButton.textAndMnemonic=&No
+OptionPane.okButton.textAndMnemonic=Aceptar(&O)
+OptionPane.cancelButton.textAndMnemonic=&Cancelar
+OptionPane.title.textAndMnemonic=Seleccionar una Opci\u00F3n
+# Title for the dialog for the showInputDialog methods. Only used if
+# the developer uses one of the variants that doesn't take a title.
+OptionPane.inputDialog.titleAndMnemonic=Entrada
+# Title for the dialog for the showMessageDialog methods. Only used if
+# the developer uses one of the variants that doesn't take a title.
+OptionPane.messageDialog.titleAndMnemonic=Mensaje
+
+############ Printing Dialog Strings ############
+PrintingDialog.titleProgress.textAndMnemonic=Impresi\u00F3n
+PrintingDialog.titleAborting.textAndMnemonic=Impresi\u00F3n (Abortando)
+
+PrintingDialog.contentInitial.textAndMnemonic=Impresi\u00F3n en curso...
+
+# The following string will be formatted by a MessageFormat
+# and {0} will be replaced by page number being printed
+PrintingDialog.contentProgress.textAndMnemonic=P\u00E1gina impresa {0}...
+
+PrintingDialog.contentAborting.textAndMnemonic=Abortando la impresi\u00F3n...
+
+PrintingDialog.abortButton.textAndMnemonic=&Abortar
+PrintingDialog.abortButtonToolTip.textAndMnemonic=Abortar Impresi\u00F3n
+
+############ Internal Frame Strings ############
+InternalFrame.iconButtonToolTip=Minimizar
+InternalFrame.maxButtonToolTip=Maximizar
+InternalFrame.restoreButtonToolTip=Restaurar
+InternalFrame.closeButtonToolTip=Cerrar
+
+############ Internal Frame Title Pane Strings ############
+InternalFrameTitlePane.restoreButton.textAndMnemonic=Restaurar
+InternalFrameTitlePane.moveButton.textAndMnemonic=Mover
+InternalFrameTitlePane.sizeButton.textAndMnemonic=Tama\u00F1o
+InternalFrameTitlePane.minimizeButton.textAndMnemonic=Minimizar
+InternalFrameTitlePane.maximizeButton.textAndMnemonic=Maximizar
+InternalFrameTitlePane.closeButton.textAndMnemonic=Cerrar
+
+############ Text strings #############
+# Used for html forms
+FormView.submitButton.textAndMnemonic=Enviar Consulta
+FormView.resetButton.textAndMnemonic=Restablecer
+FormView.browseFileButton.textAndMnemonic=Examinar...
+
+############ Abstract Document Strings ############
+AbstractDocument.styleChange.textAndMnemonic=cambio de estilo
+AbstractDocument.addition.textAndMnemonic=agregaci\u00F3n
+AbstractDocument.deletion.textAndMnemonic=supresi\u00F3n
+AbstractDocument.undo.textAndMnemonic=Deshacer
+AbstractDocument.redo.textAndMnemonic=Rehacer
+
+############ Abstract Button Strings ############
+AbstractButton.click.textAndMnemonic=hacer clic
+
+############ Abstract Undoable Edit Strings ############
+AbstractUndoableEdit.undo.textAndMnemonic=Deshacer
+AbstractUndoableEdit.redo.textAndMnemonic=Rehacer
+
+############ Combo Box Strings ############
+ComboBox.togglePopup.textAndMnemonic=togglePopup
+
+############ Progress Monitor Strings ############
+ProgressMonitor.progress.textAndMnemonic=Progreso...
+
+############ Split Pane Strings ############
+SplitPane.leftButton.textAndMnemonic=bot\u00F3n izquierdo
+SplitPane.rightButton.textAndMnemonic=bot\u00F3n derecho
+# Used for Isindex
+IsindexView.prompt=En este \u00EDndice se pueden efectuar b\u00FAsquedas. Escriba las palabras clave de b\u00FAsqueda:
+
+############ InternalFrameTitlePane Strings ############
+InternalFrameTitlePane.iconifyButtonAccessibleName=Convertir en Icono
+InternalFrameTitlePane.maximizeButtonAccessibleName=Maximizar
+InternalFrameTitlePane.closeButtonAccessibleName=Cerrar
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_fr.properties	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_fr.properties	Wed Jul 05 18:14:56 2017 +0200
@@ -1,186 +1,186 @@
-# This properties file is used to create a PropertyResourceBundle
-# It contains Locale specific strings used in Swing
-# Currently, the following components need this for support:
-#
-#    ColorChooser
-#    FileChooser
-#    OptionPane
-#
-# When this file is read in, the strings are put into the
-# defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.
-# This may change in future versions of Swing as we improve localization
-# support.
-#
-#                        MNEMONIC NOTE:
-# Many of strings in this file are used by widgets that have a
-# mnemonic, for example:
-#   ColorChooser.rgbNameTextAndMnemonic=R&GB
-# Indicates that the tab in the ColorChooser for RGB colors will have
-# the text 'RGB', further the mnemonic character will be 'g' and that
-# a decoration will be provided under the 'G'. This will typically
-# look like:  RGB
-#              -
-#
-# One important thing to remember is that the mnemonic MUST exist in
-# the String, if it does not exist you should add text that makes it
-# exist. This will typically take the form 'XXXX (M)' where M is the
-# character for the mnemonic.
-#
-# @author Steve Wilson
-
-############ FILE CHOOSER STRINGS #############
-FileChooser.fileDescription.textAndMnemonic=Fichier g\u00E9n\u00E9rique
-FileChooser.directoryDescription.textAndMnemonic=R\u00E9pertoire
-FileChooser.newFolderError.textAndMnemonic=Erreur lors de la cr\u00E9ation du dossier
-FileChooser.newFolderErrorSeparator= :
-FileChooser.newFolderParentDoesntExistTitle.textAndMnemonic=Impossible de cr\u00E9er le dossier
-FileChooser.newFolderParentDoesntExist.textAndMnemonic=Impossible de cr\u00E9er le dossier.\n\nLe syst\u00E8me ne parvient pas \u00E0 trouver le chemin indiqu\u00E9.
-FileChooser.renameErrorTitle.textAndMnemonic=Erreur lors du changement de nom du fichier ou du dossier
-FileChooser.renameError.textAndMnemonic=Impossible de renommer {0}
-FileChooser.renameErrorFileExists.textAndMnemonic=Impossible de renommer {0} : il existe d\u00E9j\u00E0 un fichier portant le nom indiqu\u00E9. Indiquez-en un autre.
-FileChooser.acceptAllFileFilter.textAndMnemonic=Tous les fichiers
-FileChooser.cancelButton.textAndMnemonic=&Annuler
-FileChooser.saveButton.textAndMnemonic=Enregi&strer
-FileChooser.openButton.textAndMnemonic=&Ouvrir
-FileChooser.saveDialogTitle.textAndMnemonic=Enregistrer
-FileChooser.openDialogTitle.textAndMnemonic=Ouvrir
-FileChooser.updateButton.textAndMnemonic=Mettre \u00E0 jour(&U)
-FileChooser.helpButton.textAndMnemonic=&Aide
-FileChooser.directoryOpenButton.textAndMnemonic=&Ouvrir
-
-# File Size Units
-FileChooser.fileSizeKiloBytes={0} KB
-FileChooser.fileSizeMegaBytes={0} MB
-FileChooser.fileSizeGigaBytes={0} GB
-
-# These strings are platform dependent not look and feel dependent.
-FileChooser.win32.newFolder=Nouveau dossier
-FileChooser.win32.newFolder.subsequent=Nouveau dossier ({0})
-FileChooser.other.newFolder=NewFolder
-FileChooser.other.newFolder.subsequent=NewFolder.{0}
-
-
-## file chooser tooltips ###
-FileChooser.cancelButtonToolTip.textAndMnemonic=Ferme la bo\u00EEte de dialogue du s\u00E9lecteur de fichiers
-FileChooser.saveButtonToolTip.textAndMnemonic=Enregistre le fichier s\u00E9lectionn\u00E9
-FileChooser.openButtonToolTip.textAndMnemonic=Ouvre le fichier s\u00E9lectionn\u00E9
-FileChooser.updateButtonToolTip.textAndMnemonic=Met \u00E0 jour la liste des r\u00E9pertoires
-FileChooser.helpButtonToolTip.textAndMnemonic=Aide du s\u00E9lecteur de fichiers
-FileChooser.directoryOpenButtonToolTip.textAndMnemonic=Ouvre le r\u00E9pertoire s\u00E9lectionn\u00E9
-
-FileChooser.filesListAccessibleName=Files List
-FileChooser.filesDetailsAccessibleName=Files Details
-
-############ COLOR CHOOSER STRINGS #############
-ColorChooser.preview.textAndMnemonic=Aper\u00E7u
-ColorChooser.ok.textAndMnemonic=OK
-ColorChooser.cancel.textAndMnemonic=Annuler
-ColorChooser.reset.textAndMnemonic=R\u00E9initialiser(&R)
-ColorChooser.sample.textAndMnemonic=Echantillon de texte  Echantillon de texte
-ColorChooser.swatches.textAndMnemonic=&Echantillons
-ColorChooser.swatchesRecent.textAndMnemonic=Dernier :
-ColorChooser.hsv.textAndMnemonic=&TSV
-ColorChooser.hsvHue.textAndMnemonic=Teinte
-ColorChooser.hsvSaturation.textAndMnemonic=Saturation
-ColorChooser.hsvValue.textAndMnemonic=Valeur
-ColorChooser.hsvTransparency.textAndMnemonic=Transparence
-ColorChooser.hsl.textAndMnemonic=TS&L
-ColorChooser.hslHue.textAndMnemonic=Teinte
-ColorChooser.hslSaturation.textAndMnemonic=Saturation
-ColorChooser.hslLightness.textAndMnemonic=Lumi\u00E8re
-ColorChooser.hslTransparency.textAndMnemonic=Transparence
-ColorChooser.rgb.textAndMnemonic=R&VB
-ColorChooser.rgbRed.textAndMnemonic=R&ouge
-ColorChooser.rgbGreen.textAndMnemonic=&Vert
-ColorChooser.rgbBlue.textAndMnemonic=&Bleu
-ColorChooser.rgbAlpha.textAndMnemonic=Alpha
-ColorChooser.rgbHexCode.textAndMnemonic=&Code couleur
-ColorChooser.cmyk.textAndMnemonic=C&MYK
-ColorChooser.cmykCyan.textAndMnemonic=Cyan
-ColorChooser.cmykMagenta.textAndMnemonic=Magenta
-ColorChooser.cmykYellow.textAndMnemonic=Jaune
-ColorChooser.cmykBlack.textAndMnemonic=Noir
-ColorChooser.cmykAlpha.textAndMnemonic=Alpha
-
-############ OPTION PANE STRINGS #############
-# We only define mnemonics for YES/NO, but for completeness you can
-# define mnemonics for any of the buttons.
-OptionPane.yesButton.textAndMnemonic=&Oui
-OptionPane.noButton.textAndMnemonic=&Non
-OptionPane.okButton.textAndMnemonic=&OK
-OptionPane.cancelButton.textAndMnemonic=&Annuler
-OptionPane.title.textAndMnemonic=S\u00E9lectionner une option
-# Title for the dialog for the showInputDialog methods. Only used if
-# the developer uses one of the variants that doesn't take a title.
-OptionPane.inputDialog.titleAndMnemonic=Entr\u00E9e
-# Title for the dialog for the showMessageDialog methods. Only used if
-# the developer uses one of the variants that doesn't take a title.
-OptionPane.messageDialog.titleAndMnemonic=Message
-
-############ Printing Dialog Strings ############
-PrintingDialog.titleProgress.textAndMnemonic=Impression
-PrintingDialog.titleAborting.textAndMnemonic=Impression (abandon)
-
-PrintingDialog.contentInitial.textAndMnemonic=Impression en cours...
-
-# The following string will be formatted by a MessageFormat
-# and {0} will be replaced by page number being printed
-PrintingDialog.contentProgress.textAndMnemonic=Page {0} imprim\u00E9e...
-
-PrintingDialog.contentAborting.textAndMnemonic=Abandon de l'impression...
-
-PrintingDialog.abortButton.textAndMnemonic=&Abandonner
-PrintingDialog.abortButtonToolTip.textAndMnemonic=Abandonner l'impression
-
-############ Internal Frame Strings ############
-InternalFrame.iconButtonToolTip=R\u00E9duire
-InternalFrame.maxButtonToolTip=Agrandir
-InternalFrame.restoreButtonToolTip=Restaurer
-InternalFrame.closeButtonToolTip=Fermer
-
-############ Internal Frame Title Pane Strings ############
-InternalFrameTitlePane.restoreButton.textAndMnemonic=Restaurer
-InternalFrameTitlePane.moveButton.textAndMnemonic=D\u00E9placer
-InternalFrameTitlePane.sizeButton.textAndMnemonic=Taille
-InternalFrameTitlePane.minimizeButton.textAndMnemonic=R\u00E9duire
-InternalFrameTitlePane.maximizeButton.textAndMnemonic=Agrandir
-InternalFrameTitlePane.closeButton.textAndMnemonic=Fermer
-
-############ Text strings #############
-# Used for html forms
-FormView.submitButton.textAndMnemonic=Soumettre la requ\u00EAte
-FormView.resetButton.textAndMnemonic=R\u00E9initialiser
-FormView.browseFileButton.textAndMnemonic=Parcourir...
-
-############ Abstract Document Strings ############
-AbstractDocument.styleChange.textAndMnemonic=modification de style
-AbstractDocument.addition.textAndMnemonic=ajout
-AbstractDocument.deletion.textAndMnemonic=suppression
-AbstractDocument.undo.textAndMnemonic=Annuler
-AbstractDocument.redo.textAndMnemonic=R\u00E9tablir
-
-############ Abstract Button Strings ############
-AbstractButton.click.textAndMnemonic=cliquer
-
-############ Abstract Undoable Edit Strings ############
-AbstractUndoableEdit.undo.textAndMnemonic=Annuler
-AbstractUndoableEdit.redo.textAndMnemonic=R\u00E9tablir
-
-############ Combo Box Strings ############
-ComboBox.togglePopup.textAndMnemonic=togglePopup
-
-############ Progress Monitor Strings ############
-ProgressMonitor.progress.textAndMnemonic=Progression...
-
-############ Split Pane Strings ############
-SplitPane.leftButton.textAndMnemonic=bouton gauche
-SplitPane.rightButton.textAndMnemonic=bouton droit
-# Used for Isindex
-IsindexView.prompt=Ceci est un index de recherche. Tapez des mots-cl\u00E9s pour la recherche :
-
-############ InternalFrameTitlePane Strings ############
-InternalFrameTitlePane.iconifyButtonAccessibleName=R\u00E9duire
-InternalFrameTitlePane.maximizeButtonAccessibleName=Agrandir
-InternalFrameTitlePane.closeButtonAccessibleName=Fermer
-
+# This properties file is used to create a PropertyResourceBundle
+# It contains Locale specific strings used in Swing
+# Currently, the following components need this for support:
+#
+#    ColorChooser
+#    FileChooser
+#    OptionPane
+#
+# When this file is read in, the strings are put into the
+# defaults table.  This is an implementation detail of the current
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
+# support.
+#
+#                        MNEMONIC NOTE:
+# Many of strings in this file are used by widgets that have a
+# mnemonic, for example:
+#   ColorChooser.rgbNameTextAndMnemonic=R&GB
+# Indicates that the tab in the ColorChooser for RGB colors will have
+# the text 'RGB', further the mnemonic character will be 'g' and that
+# a decoration will be provided under the 'G'. This will typically
+# look like:  RGB
+#              -
+#
+# One important thing to remember is that the mnemonic MUST exist in
+# the String, if it does not exist you should add text that makes it
+# exist. This will typically take the form 'XXXX (M)' where M is the
+# character for the mnemonic.
+#
+# @author Steve Wilson
+
+############ FILE CHOOSER STRINGS #############
+FileChooser.fileDescription.textAndMnemonic=Fichier g\u00E9n\u00E9rique
+FileChooser.directoryDescription.textAndMnemonic=R\u00E9pertoire
+FileChooser.newFolderError.textAndMnemonic=Erreur lors de la cr\u00E9ation du dossier
+FileChooser.newFolderErrorSeparator= :
+FileChooser.newFolderParentDoesntExistTitle.textAndMnemonic=Impossible de cr\u00E9er le dossier
+FileChooser.newFolderParentDoesntExist.textAndMnemonic=Impossible de cr\u00E9er le dossier.\n\nLe syst\u00E8me ne parvient pas \u00E0 trouver le chemin indiqu\u00E9.
+FileChooser.renameErrorTitle.textAndMnemonic=Erreur lors du changement de nom du fichier ou du dossier
+FileChooser.renameError.textAndMnemonic=Impossible de renommer {0}
+FileChooser.renameErrorFileExists.textAndMnemonic=Impossible de renommer {0} : il existe d\u00E9j\u00E0 un fichier portant le nom indiqu\u00E9. Indiquez-en un autre.
+FileChooser.acceptAllFileFilter.textAndMnemonic=Tous les fichiers
+FileChooser.cancelButton.textAndMnemonic=Annuler
+FileChooser.saveButton.textAndMnemonic=Enregi&strer
+FileChooser.openButton.textAndMnemonic=&Ouvrir
+FileChooser.saveDialogTitle.textAndMnemonic=Enregistrer
+FileChooser.openDialogTitle.textAndMnemonic=Ouvrir
+FileChooser.updateButton.textAndMnemonic=Mettre \u00E0 jour(&U)
+FileChooser.helpButton.textAndMnemonic=&Aide
+FileChooser.directoryOpenButton.textAndMnemonic=&Ouvrir
+
+# File Size Units
+FileChooser.fileSizeKiloBytes={0} KB
+FileChooser.fileSizeMegaBytes={0} MB
+FileChooser.fileSizeGigaBytes={0} GB
+
+# These strings are platform dependent not look and feel dependent.
+FileChooser.win32.newFolder=Nouveau dossier
+FileChooser.win32.newFolder.subsequent=Nouveau dossier ({0})
+FileChooser.other.newFolder=NewFolder
+FileChooser.other.newFolder.subsequent=NewFolder.{0}
+
+
+## file chooser tooltips ###
+FileChooser.cancelButtonToolTip.textAndMnemonic=Ferme la bo\u00EEte de dialogue du s\u00E9lecteur de fichiers
+FileChooser.saveButtonToolTip.textAndMnemonic=Enregistre le fichier s\u00E9lectionn\u00E9
+FileChooser.openButtonToolTip.textAndMnemonic=Ouvre le fichier s\u00E9lectionn\u00E9
+FileChooser.updateButtonToolTip.textAndMnemonic=Met \u00E0 jour la liste des r\u00E9pertoires
+FileChooser.helpButtonToolTip.textAndMnemonic=Aide du s\u00E9lecteur de fichiers
+FileChooser.directoryOpenButtonToolTip.textAndMnemonic=Ouvre le r\u00E9pertoire s\u00E9lectionn\u00E9
+
+FileChooser.filesListAccessibleName=Files List
+FileChooser.filesDetailsAccessibleName=Files Details
+
+############ COLOR CHOOSER STRINGS #############
+ColorChooser.preview.textAndMnemonic=Aper\u00E7u
+ColorChooser.ok.textAndMnemonic=OK
+ColorChooser.cancel.textAndMnemonic=Annuler
+ColorChooser.reset.textAndMnemonic=R\u00E9initialiser(&R)
+ColorChooser.sample.textAndMnemonic=Echantillon de texte  Echantillon de texte
+ColorChooser.swatches.textAndMnemonic=&Echantillons
+ColorChooser.swatchesRecent.textAndMnemonic=Dernier :
+ColorChooser.hsv.textAndMnemonic=&TSV
+ColorChooser.hsvHue.textAndMnemonic=Teinte
+ColorChooser.hsvSaturation.textAndMnemonic=Saturation
+ColorChooser.hsvValue.textAndMnemonic=Valeur
+ColorChooser.hsvTransparency.textAndMnemonic=Transparence
+ColorChooser.hsl.textAndMnemonic=TS&L
+ColorChooser.hslHue.textAndMnemonic=Teinte
+ColorChooser.hslSaturation.textAndMnemonic=Saturation
+ColorChooser.hslLightness.textAndMnemonic=Lumi\u00E8re
+ColorChooser.hslTransparency.textAndMnemonic=Transparence
+ColorChooser.rgb.textAndMnemonic=R&VB
+ColorChooser.rgbRed.textAndMnemonic=R&ouge
+ColorChooser.rgbGreen.textAndMnemonic=&Vert
+ColorChooser.rgbBlue.textAndMnemonic=&Bleu
+ColorChooser.rgbAlpha.textAndMnemonic=Alpha
+ColorChooser.rgbHexCode.textAndMnemonic=&Code couleur
+ColorChooser.cmyk.textAndMnemonic=C&MYK
+ColorChooser.cmykCyan.textAndMnemonic=Cyan
+ColorChooser.cmykMagenta.textAndMnemonic=Magenta
+ColorChooser.cmykYellow.textAndMnemonic=Jaune
+ColorChooser.cmykBlack.textAndMnemonic=Noir
+ColorChooser.cmykAlpha.textAndMnemonic=Alpha
+
+############ OPTION PANE STRINGS #############
+# We only define mnemonics for YES/NO, but for completeness you can
+# define mnemonics for any of the buttons.
+OptionPane.yesButton.textAndMnemonic=&Oui
+OptionPane.noButton.textAndMnemonic=&Non
+OptionPane.okButton.textAndMnemonic=&OK
+OptionPane.cancelButton.textAndMnemonic=&Annuler
+OptionPane.title.textAndMnemonic=S\u00E9lectionner une option
+# Title for the dialog for the showInputDialog methods. Only used if
+# the developer uses one of the variants that doesn't take a title.
+OptionPane.inputDialog.titleAndMnemonic=Entr\u00E9e
+# Title for the dialog for the showMessageDialog methods. Only used if
+# the developer uses one of the variants that doesn't take a title.
+OptionPane.messageDialog.titleAndMnemonic=Message
+
+############ Printing Dialog Strings ############
+PrintingDialog.titleProgress.textAndMnemonic=Impression
+PrintingDialog.titleAborting.textAndMnemonic=Impression (abandon)
+
+PrintingDialog.contentInitial.textAndMnemonic=Impression en cours...
+
+# The following string will be formatted by a MessageFormat
+# and {0} will be replaced by page number being printed
+PrintingDialog.contentProgress.textAndMnemonic=Page {0} imprim\u00E9e...
+
+PrintingDialog.contentAborting.textAndMnemonic=Abandon de l'impression...
+
+PrintingDialog.abortButton.textAndMnemonic=&Abandonner
+PrintingDialog.abortButtonToolTip.textAndMnemonic=Abandonner l'impression
+
+############ Internal Frame Strings ############
+InternalFrame.iconButtonToolTip=R\u00E9duire
+InternalFrame.maxButtonToolTip=Agrandir
+InternalFrame.restoreButtonToolTip=Restaurer
+InternalFrame.closeButtonToolTip=Fermer
+
+############ Internal Frame Title Pane Strings ############
+InternalFrameTitlePane.restoreButton.textAndMnemonic=Restaurer
+InternalFrameTitlePane.moveButton.textAndMnemonic=D\u00E9placer
+InternalFrameTitlePane.sizeButton.textAndMnemonic=Taille
+InternalFrameTitlePane.minimizeButton.textAndMnemonic=R\u00E9duire
+InternalFrameTitlePane.maximizeButton.textAndMnemonic=Agrandir
+InternalFrameTitlePane.closeButton.textAndMnemonic=Fermer
+
+############ Text strings #############
+# Used for html forms
+FormView.submitButton.textAndMnemonic=Soumettre la requ\u00EAte
+FormView.resetButton.textAndMnemonic=R\u00E9initialiser
+FormView.browseFileButton.textAndMnemonic=Parcourir...
+
+############ Abstract Document Strings ############
+AbstractDocument.styleChange.textAndMnemonic=modification de style
+AbstractDocument.addition.textAndMnemonic=ajout
+AbstractDocument.deletion.textAndMnemonic=suppression
+AbstractDocument.undo.textAndMnemonic=Annuler
+AbstractDocument.redo.textAndMnemonic=R\u00E9tablir
+
+############ Abstract Button Strings ############
+AbstractButton.click.textAndMnemonic=cliquer
+
+############ Abstract Undoable Edit Strings ############
+AbstractUndoableEdit.undo.textAndMnemonic=Annuler
+AbstractUndoableEdit.redo.textAndMnemonic=R\u00E9tablir
+
+############ Combo Box Strings ############
+ComboBox.togglePopup.textAndMnemonic=togglePopup
+
+############ Progress Monitor Strings ############
+ProgressMonitor.progress.textAndMnemonic=Progression...
+
+############ Split Pane Strings ############
+SplitPane.leftButton.textAndMnemonic=bouton gauche
+SplitPane.rightButton.textAndMnemonic=bouton droit
+# Used for Isindex
+IsindexView.prompt=Ceci est un index de recherche. Tapez des mots-cl\u00E9s pour la recherche :
+
+############ InternalFrameTitlePane Strings ############
+InternalFrameTitlePane.iconifyButtonAccessibleName=R\u00E9duire
+InternalFrameTitlePane.maximizeButtonAccessibleName=Agrandir
+InternalFrameTitlePane.closeButtonAccessibleName=Fermer
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_it.properties	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_it.properties	Wed Jul 05 18:14:56 2017 +0200
@@ -1,186 +1,186 @@
-# This properties file is used to create a PropertyResourceBundle
-# It contains Locale specific strings used in Swing
-# Currently, the following components need this for support:
-#
-#    ColorChooser
-#    FileChooser
-#    OptionPane
-#
-# When this file is read in, the strings are put into the
-# defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.
-# This may change in future versions of Swing as we improve localization
-# support.
-#
-#                        MNEMONIC NOTE:
-# Many of strings in this file are used by widgets that have a
-# mnemonic, for example:
-#   ColorChooser.rgbNameTextAndMnemonic=R&GB
-# Indicates that the tab in the ColorChooser for RGB colors will have
-# the text 'RGB', further the mnemonic character will be 'g' and that
-# a decoration will be provided under the 'G'. This will typically
-# look like:  RGB
-#              -
-#
-# One important thing to remember is that the mnemonic MUST exist in
-# the String, if it does not exist you should add text that makes it
-# exist. This will typically take the form 'XXXX (M)' where M is the
-# character for the mnemonic.
-#
-# @author Steve Wilson
-
-############ FILE CHOOSER STRINGS #############
-FileChooser.fileDescription.textAndMnemonic=File generico
-FileChooser.directoryDescription.textAndMnemonic=Directory
-FileChooser.newFolderError.textAndMnemonic=Errore durante la creazione della nuova cartella
-FileChooser.newFolderErrorSeparator= :
-FileChooser.newFolderParentDoesntExistTitle.textAndMnemonic=Impossibile creare la cartella
-FileChooser.newFolderParentDoesntExist.textAndMnemonic=Impossibile creare la cartella.\n\nIl sistema non \u00E8 in grado di trovare il percorso specificato.
-FileChooser.renameErrorTitle.textAndMnemonic=Errore durante la ridenominazione del file o della cartella
-FileChooser.renameError.textAndMnemonic=Impossibile rinominare {0}
-FileChooser.renameErrorFileExists.textAndMnemonic=Impossibile rinominare {0}: esiste gi\u00E0 un file con il nome specificato. Specificare un altro nome.
-FileChooser.acceptAllFileFilter.textAndMnemonic=Tutti i file
-FileChooser.cancelButton.textAndMnemonic=&Annulla
-FileChooser.saveButton.textAndMnemonic=Sal&va
-FileChooser.openButton.textAndMnemonic=A&pri
-FileChooser.saveDialogTitle.textAndMnemonic=Salva
-FileChooser.openDialogTitle.textAndMnemonic=Apri
-FileChooser.updateButton.textAndMnemonic=A&ggiorna
-FileChooser.helpButton.textAndMnemonic=?(&H)
-FileChooser.directoryOpenButton.textAndMnemonic=&Apri
-
-# File Size Units
-FileChooser.fileSizeKiloBytes={0} KB
-FileChooser.fileSizeMegaBytes={0} MB
-FileChooser.fileSizeGigaBytes={0} GB
-
-# These strings are platform dependent not look and feel dependent.
-FileChooser.win32.newFolder=Nuova cartella
-FileChooser.win32.newFolder.subsequent=Nuova cartella ({0})
-FileChooser.other.newFolder=NewFolder
-FileChooser.other.newFolder.subsequent=NewFolder.{0}
-
-
-## file chooser tooltips ###
-FileChooser.cancelButtonToolTip.textAndMnemonic=Chiude la finestra di dialogo di selezione file
-FileChooser.saveButtonToolTip.textAndMnemonic=Salva il file selezionato
-FileChooser.openButtonToolTip.textAndMnemonic=Apre il file selezionato
-FileChooser.updateButtonToolTip.textAndMnemonic=Aggiorna la lista directory
-FileChooser.helpButtonToolTip.textAndMnemonic=Guida FileChooser
-FileChooser.directoryOpenButtonToolTip.textAndMnemonic=Apre la directory selezionata
-
-FileChooser.filesListAccessibleName=Files List
-FileChooser.filesDetailsAccessibleName=Files Details
-
-############ COLOR CHOOSER STRINGS #############
-ColorChooser.preview.textAndMnemonic=Anteprima
-ColorChooser.ok.textAndMnemonic=OK
-ColorChooser.cancel.textAndMnemonic=Annulla
-ColorChooser.reset.textAndMnemonic=&Reimposta
-ColorChooser.sample.textAndMnemonic=Testo di prova          Testo di prova
-ColorChooser.swatches.textAndMnemonic=Colori cam&pione
-ColorChooser.swatchesRecent.textAndMnemonic=Recenti:
-ColorChooser.hsv.textAndMnemonic=&HSV
-ColorChooser.hsvHue.textAndMnemonic=Tonalit\u00E0
-ColorChooser.hsvSaturation.textAndMnemonic=Saturazione
-ColorChooser.hsvValue.textAndMnemonic=Valore
-ColorChooser.hsvTransparency.textAndMnemonic=Trasparenza
-ColorChooser.hsl.textAndMnemonic=HS&L
-ColorChooser.hslHue.textAndMnemonic=Tonalit\u00E0
-ColorChooser.hslSaturation.textAndMnemonic=Saturazione
-ColorChooser.hslLightness.textAndMnemonic=Luminosit\u00E0
-ColorChooser.hslTransparency.textAndMnemonic=Trasparenza
-ColorChooser.rgb.textAndMnemonic=R&GB
-ColorChooser.rgbRed.textAndMnemonic=Ro&sso
-ColorChooser.rgbGreen.textAndMnemonic=Ver&de
-ColorChooser.rgbBlue.textAndMnemonic=&Blu
-ColorChooser.rgbAlpha.textAndMnemonic=Alfa
-ColorChooser.rgbHexCode.textAndMnemonic=&Codice colori
-ColorChooser.cmyk.textAndMnemonic=C&MYK
-ColorChooser.cmykCyan.textAndMnemonic=Ciano
-ColorChooser.cmykMagenta.textAndMnemonic=Magenta
-ColorChooser.cmykYellow.textAndMnemonic=Giallo
-ColorChooser.cmykBlack.textAndMnemonic=Nero
-ColorChooser.cmykAlpha.textAndMnemonic=Alfa
-
-############ OPTION PANE STRINGS #############
-# We only define mnemonics for YES/NO, but for completeness you can
-# define mnemonics for any of the buttons.
-OptionPane.yesButton.textAndMnemonic=S\u00EC(&S)
-OptionPane.noButton.textAndMnemonic=&No
-OptionPane.okButton.textAndMnemonic=&OK
-OptionPane.cancelButton.textAndMnemonic=&Annulla
-OptionPane.title.textAndMnemonic=Selezionare una opzione
-# Title for the dialog for the showInputDialog methods. Only used if
-# the developer uses one of the variants that doesn't take a title.
-OptionPane.inputDialog.titleAndMnemonic=Input
-# Title for the dialog for the showMessageDialog methods. Only used if
-# the developer uses one of the variants that doesn't take a title.
-OptionPane.messageDialog.titleAndMnemonic=Messaggio
-
-############ Printing Dialog Strings ############
-PrintingDialog.titleProgress.textAndMnemonic=Stampa in corso
-PrintingDialog.titleAborting.textAndMnemonic=Stampa in corso (operazione interrotta)
-
-PrintingDialog.contentInitial.textAndMnemonic=Stampa in corso...
-
-# The following string will be formatted by a MessageFormat
-# and {0} will be replaced by page number being printed
-PrintingDialog.contentProgress.textAndMnemonic=Pagina stampata {0}...
-
-PrintingDialog.contentAborting.textAndMnemonic=Interruzione della stampa...
-
-PrintingDialog.abortButton.textAndMnemonic=I&nterrompi
-PrintingDialog.abortButtonToolTip.textAndMnemonic=Interrompi la stampa
-
-############ Internal Frame Strings ############
-InternalFrame.iconButtonToolTip=Riduci a icona
-InternalFrame.maxButtonToolTip=Ingrandisci
-InternalFrame.restoreButtonToolTip=Ripristina
-InternalFrame.closeButtonToolTip=Chiudi
-
-############ Internal Frame Title Pane Strings ############
-InternalFrameTitlePane.restoreButton.textAndMnemonic=Ripristina
-InternalFrameTitlePane.moveButton.textAndMnemonic=Sposta
-InternalFrameTitlePane.sizeButton.textAndMnemonic=Dimensioni
-InternalFrameTitlePane.minimizeButton.textAndMnemonic=Riduci a icona
-InternalFrameTitlePane.maximizeButton.textAndMnemonic=Ingrandisci
-InternalFrameTitlePane.closeButton.textAndMnemonic=Chiudi
-
-############ Text strings #############
-# Used for html forms
-FormView.submitButton.textAndMnemonic=Sottometti query
-FormView.resetButton.textAndMnemonic=Reimposta
-FormView.browseFileButton.textAndMnemonic=Sfoglia...
-
-############ Abstract Document Strings ############
-AbstractDocument.styleChange.textAndMnemonic=modifica di stile
-AbstractDocument.addition.textAndMnemonic=aggiunta
-AbstractDocument.deletion.textAndMnemonic=eliminazione
-AbstractDocument.undo.textAndMnemonic=Annulla
-AbstractDocument.redo.textAndMnemonic=Ripeti
-
-############ Abstract Button Strings ############
-AbstractButton.click.textAndMnemonic=fare clic
-
-############ Abstract Undoable Edit Strings ############
-AbstractUndoableEdit.undo.textAndMnemonic=Annulla
-AbstractUndoableEdit.redo.textAndMnemonic=Ripeti
-
-############ Combo Box Strings ############
-ComboBox.togglePopup.textAndMnemonic=togglePopup
-
-############ Progress Monitor Strings ############
-ProgressMonitor.progress.textAndMnemonic=Avanzamento...
-
-############ Split Pane Strings ############
-SplitPane.leftButton.textAndMnemonic=tasto sinistro
-SplitPane.rightButton.textAndMnemonic=tasto destro
-# Used for Isindex
-IsindexView.prompt=Questo \u00E8 un indice di ricerca. Immettere le parole chiave:
-
-############ InternalFrameTitlePane Strings ############
-InternalFrameTitlePane.iconifyButtonAccessibleName=Riduci a icona
-InternalFrameTitlePane.maximizeButtonAccessibleName=Ingrandisci
-InternalFrameTitlePane.closeButtonAccessibleName=Chiudi
-
+# This properties file is used to create a PropertyResourceBundle
+# It contains Locale specific strings used in Swing
+# Currently, the following components need this for support:
+#
+#    ColorChooser
+#    FileChooser
+#    OptionPane
+#
+# When this file is read in, the strings are put into the
+# defaults table.  This is an implementation detail of the current
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
+# support.
+#
+#                        MNEMONIC NOTE:
+# Many of strings in this file are used by widgets that have a
+# mnemonic, for example:
+#   ColorChooser.rgbNameTextAndMnemonic=R&GB
+# Indicates that the tab in the ColorChooser for RGB colors will have
+# the text 'RGB', further the mnemonic character will be 'g' and that
+# a decoration will be provided under the 'G'. This will typically
+# look like:  RGB
+#              -
+#
+# One important thing to remember is that the mnemonic MUST exist in
+# the String, if it does not exist you should add text that makes it
+# exist. This will typically take the form 'XXXX (M)' where M is the
+# character for the mnemonic.
+#
+# @author Steve Wilson
+
+############ FILE CHOOSER STRINGS #############
+FileChooser.fileDescription.textAndMnemonic=File generico
+FileChooser.directoryDescription.textAndMnemonic=Directory
+FileChooser.newFolderError.textAndMnemonic=Errore durante la creazione della nuova cartella
+FileChooser.newFolderErrorSeparator= :
+FileChooser.newFolderParentDoesntExistTitle.textAndMnemonic=Impossibile creare la cartella
+FileChooser.newFolderParentDoesntExist.textAndMnemonic=Impossibile creare la cartella.\n\nIl sistema non \u00E8 in grado di trovare il percorso specificato.
+FileChooser.renameErrorTitle.textAndMnemonic=Errore durante la ridenominazione del file o della cartella
+FileChooser.renameError.textAndMnemonic=Impossibile rinominare {0}
+FileChooser.renameErrorFileExists.textAndMnemonic=Impossibile rinominare {0}: esiste gi\u00E0 un file con il nome specificato. Specificare un altro nome.
+FileChooser.acceptAllFileFilter.textAndMnemonic=Tutti i file
+FileChooser.cancelButton.textAndMnemonic=Annulla
+FileChooser.saveButton.textAndMnemonic=Sal&va
+FileChooser.openButton.textAndMnemonic=A&pri
+FileChooser.saveDialogTitle.textAndMnemonic=Salva
+FileChooser.openDialogTitle.textAndMnemonic=Apri
+FileChooser.updateButton.textAndMnemonic=A&ggiorna
+FileChooser.helpButton.textAndMnemonic=?(&H)
+FileChooser.directoryOpenButton.textAndMnemonic=&Apri
+
+# File Size Units
+FileChooser.fileSizeKiloBytes={0} KB
+FileChooser.fileSizeMegaBytes={0} MB
+FileChooser.fileSizeGigaBytes={0} GB
+
+# These strings are platform dependent not look and feel dependent.
+FileChooser.win32.newFolder=Nuova cartella
+FileChooser.win32.newFolder.subsequent=Nuova cartella ({0})
+FileChooser.other.newFolder=NewFolder
+FileChooser.other.newFolder.subsequent=NewFolder.{0}
+
+
+## file chooser tooltips ###
+FileChooser.cancelButtonToolTip.textAndMnemonic=Chiude la finestra di dialogo di selezione file
+FileChooser.saveButtonToolTip.textAndMnemonic=Salva il file selezionato
+FileChooser.openButtonToolTip.textAndMnemonic=Apre il file selezionato
+FileChooser.updateButtonToolTip.textAndMnemonic=Aggiorna la lista directory
+FileChooser.helpButtonToolTip.textAndMnemonic=Guida FileChooser
+FileChooser.directoryOpenButtonToolTip.textAndMnemonic=Apre la directory selezionata
+
+FileChooser.filesListAccessibleName=Files List
+FileChooser.filesDetailsAccessibleName=Files Details
+
+############ COLOR CHOOSER STRINGS #############
+ColorChooser.preview.textAndMnemonic=Anteprima
+ColorChooser.ok.textAndMnemonic=OK
+ColorChooser.cancel.textAndMnemonic=Annulla
+ColorChooser.reset.textAndMnemonic=&Reimposta
+ColorChooser.sample.textAndMnemonic=Testo di prova          Testo di prova
+ColorChooser.swatches.textAndMnemonic=Colori cam&pione
+ColorChooser.swatchesRecent.textAndMnemonic=Recenti:
+ColorChooser.hsv.textAndMnemonic=&HSV
+ColorChooser.hsvHue.textAndMnemonic=Tonalit\u00E0
+ColorChooser.hsvSaturation.textAndMnemonic=Saturazione
+ColorChooser.hsvValue.textAndMnemonic=Valore
+ColorChooser.hsvTransparency.textAndMnemonic=Trasparenza
+ColorChooser.hsl.textAndMnemonic=HS&L
+ColorChooser.hslHue.textAndMnemonic=Tonalit\u00E0
+ColorChooser.hslSaturation.textAndMnemonic=Saturazione
+ColorChooser.hslLightness.textAndMnemonic=Luminosit\u00E0
+ColorChooser.hslTransparency.textAndMnemonic=Trasparenza
+ColorChooser.rgb.textAndMnemonic=R&GB
+ColorChooser.rgbRed.textAndMnemonic=Ro&sso
+ColorChooser.rgbGreen.textAndMnemonic=Ver&de
+ColorChooser.rgbBlue.textAndMnemonic=&Blu
+ColorChooser.rgbAlpha.textAndMnemonic=Alfa
+ColorChooser.rgbHexCode.textAndMnemonic=&Codice colori
+ColorChooser.cmyk.textAndMnemonic=C&MYK
+ColorChooser.cmykCyan.textAndMnemonic=Ciano
+ColorChooser.cmykMagenta.textAndMnemonic=Magenta
+ColorChooser.cmykYellow.textAndMnemonic=Giallo
+ColorChooser.cmykBlack.textAndMnemonic=Nero
+ColorChooser.cmykAlpha.textAndMnemonic=Alfa
+
+############ OPTION PANE STRINGS #############
+# We only define mnemonics for YES/NO, but for completeness you can
+# define mnemonics for any of the buttons.
+OptionPane.yesButton.textAndMnemonic=S\u00EC(&S)
+OptionPane.noButton.textAndMnemonic=&No
+OptionPane.okButton.textAndMnemonic=&OK
+OptionPane.cancelButton.textAndMnemonic=&Annulla
+OptionPane.title.textAndMnemonic=Selezionare una opzione
+# Title for the dialog for the showInputDialog methods. Only used if
+# the developer uses one of the variants that doesn't take a title.
+OptionPane.inputDialog.titleAndMnemonic=Input
+# Title for the dialog for the showMessageDialog methods. Only used if
+# the developer uses one of the variants that doesn't take a title.
+OptionPane.messageDialog.titleAndMnemonic=Messaggio
+
+############ Printing Dialog Strings ############
+PrintingDialog.titleProgress.textAndMnemonic=Stampa in corso
+PrintingDialog.titleAborting.textAndMnemonic=Stampa in corso (operazione interrotta)
+
+PrintingDialog.contentInitial.textAndMnemonic=Stampa in corso...
+
+# The following string will be formatted by a MessageFormat
+# and {0} will be replaced by page number being printed
+PrintingDialog.contentProgress.textAndMnemonic=Pagina stampata {0}...
+
+PrintingDialog.contentAborting.textAndMnemonic=Interruzione della stampa...
+
+PrintingDialog.abortButton.textAndMnemonic=I&nterrompi
+PrintingDialog.abortButtonToolTip.textAndMnemonic=Interrompi la stampa
+
+############ Internal Frame Strings ############
+InternalFrame.iconButtonToolTip=Riduci a icona
+InternalFrame.maxButtonToolTip=Ingrandisci
+InternalFrame.restoreButtonToolTip=Ripristina
+InternalFrame.closeButtonToolTip=Chiudi
+
+############ Internal Frame Title Pane Strings ############
+InternalFrameTitlePane.restoreButton.textAndMnemonic=Ripristina
+InternalFrameTitlePane.moveButton.textAndMnemonic=Sposta
+InternalFrameTitlePane.sizeButton.textAndMnemonic=Dimensioni
+InternalFrameTitlePane.minimizeButton.textAndMnemonic=Riduci a icona
+InternalFrameTitlePane.maximizeButton.textAndMnemonic=Ingrandisci
+InternalFrameTitlePane.closeButton.textAndMnemonic=Chiudi
+
+############ Text strings #############
+# Used for html forms
+FormView.submitButton.textAndMnemonic=Sottometti query
+FormView.resetButton.textAndMnemonic=Reimposta
+FormView.browseFileButton.textAndMnemonic=Sfoglia...
+
+############ Abstract Document Strings ############
+AbstractDocument.styleChange.textAndMnemonic=modifica di stile
+AbstractDocument.addition.textAndMnemonic=aggiunta
+AbstractDocument.deletion.textAndMnemonic=eliminazione
+AbstractDocument.undo.textAndMnemonic=Annulla
+AbstractDocument.redo.textAndMnemonic=Ripeti
+
+############ Abstract Button Strings ############
+AbstractButton.click.textAndMnemonic=fare clic
+
+############ Abstract Undoable Edit Strings ############
+AbstractUndoableEdit.undo.textAndMnemonic=Annulla
+AbstractUndoableEdit.redo.textAndMnemonic=Ripeti
+
+############ Combo Box Strings ############
+ComboBox.togglePopup.textAndMnemonic=togglePopup
+
+############ Progress Monitor Strings ############
+ProgressMonitor.progress.textAndMnemonic=Avanzamento...
+
+############ Split Pane Strings ############
+SplitPane.leftButton.textAndMnemonic=tasto sinistro
+SplitPane.rightButton.textAndMnemonic=tasto destro
+# Used for Isindex
+IsindexView.prompt=Questo \u00E8 un indice di ricerca. Immettere le parole chiave:
+
+############ InternalFrameTitlePane Strings ############
+InternalFrameTitlePane.iconifyButtonAccessibleName=Riduci a icona
+InternalFrameTitlePane.maximizeButtonAccessibleName=Ingrandisci
+InternalFrameTitlePane.closeButtonAccessibleName=Chiudi
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ja.properties	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ja.properties	Wed Jul 05 18:14:56 2017 +0200
@@ -1,186 +1,186 @@
-# This properties file is used to create a PropertyResourceBundle
-# It contains Locale specific strings used in Swing
-# Currently, the following components need this for support:
-#
-#    ColorChooser
-#    FileChooser
-#    OptionPane
-#
-# When this file is read in, the strings are put into the
-# defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.
-# This may change in future versions of Swing as we improve localization
-# support.
-#
-#                        MNEMONIC NOTE:
-# Many of strings in this file are used by widgets that have a
-# mnemonic, for example:
-#   ColorChooser.rgbNameTextAndMnemonic=R&GB
-# Indicates that the tab in the ColorChooser for RGB colors will have
-# the text 'RGB', further the mnemonic character will be 'g' and that
-# a decoration will be provided under the 'G'. This will typically
-# look like:  RGB
-#              -
-#
-# One important thing to remember is that the mnemonic MUST exist in
-# the String, if it does not exist you should add text that makes it
-# exist. This will typically take the form 'XXXX (M)' where M is the
-# character for the mnemonic.
-#
-# @author Steve Wilson
-
-############ FILE CHOOSER STRINGS #############
-FileChooser.fileDescription.textAndMnemonic=\u6C4E\u7528\u30D5\u30A1\u30A4\u30EB
-FileChooser.directoryDescription.textAndMnemonic=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA
-FileChooser.newFolderError.textAndMnemonic=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0\u306E\u4F5C\u6210\u30A8\u30E9\u30FC
-FileChooser.newFolderErrorSeparator= :
-FileChooser.newFolderParentDoesntExistTitle.textAndMnemonic=\u30D5\u30A9\u30EB\u30C0\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093
-FileChooser.newFolderParentDoesntExist.textAndMnemonic=\u30D5\u30A9\u30EB\u30C0\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3002\n\n\u6307\u5B9A\u3057\u305F\u30D1\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002
-FileChooser.renameErrorTitle.textAndMnemonic=\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u30D5\u30A9\u30EB\u30C0\u306E\u540D\u524D\u5909\u66F4\u30A8\u30E9\u30FC
-FileChooser.renameError.textAndMnemonic={0}\u306E\u540D\u524D\u3092\u5909\u66F4\u3067\u304D\u307E\u305B\u3093
-FileChooser.renameErrorFileExists.textAndMnemonic={0}\u306E\u540D\u524D\u3092\u5909\u66F4\u3067\u304D\u307E\u305B\u3093: \u6307\u5B9A\u3057\u305F\u540D\u524D\u306E\u30D5\u30A1\u30A4\u30EB\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059\u3002\u5225\u306E\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002
-FileChooser.acceptAllFileFilter.textAndMnemonic=\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB
-FileChooser.cancelButton.textAndMnemonic=\u53D6\u6D88(&C)
-FileChooser.saveButton.textAndMnemonic=\u4FDD\u5B58(&S)
-FileChooser.openButton.textAndMnemonic=\u958B\u304F(&O)
-FileChooser.saveDialogTitle.textAndMnemonic=\u4FDD\u5B58
-FileChooser.openDialogTitle.textAndMnemonic=\u958B\u304F
-FileChooser.updateButton.textAndMnemonic=\u66F4\u65B0(&U)
-FileChooser.helpButton.textAndMnemonic=\u30D8\u30EB\u30D7(&H)
-FileChooser.directoryOpenButton.textAndMnemonic=\u958B\u304F(&O)
-
-# File Size Units
-FileChooser.fileSizeKiloBytes={0} KB
-FileChooser.fileSizeMegaBytes={0} MB
-FileChooser.fileSizeGigaBytes={0} GB
-
-# These strings are platform dependent not look and feel dependent.
-FileChooser.win32.newFolder=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0
-FileChooser.win32.newFolder.subsequent=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0({0})
-FileChooser.other.newFolder=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0
-FileChooser.other.newFolder.subsequent=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0.{0}
-
-
-## file chooser tooltips ###
-FileChooser.cancelButtonToolTip.textAndMnemonic=\u30D5\u30A1\u30A4\u30EB\u30FB\u30C1\u30E5\u30FC\u30B6\u30FB\u30C0\u30A4\u30A2\u30ED\u30B0\u3092\u7D42\u4E86\u3057\u307E\u3059
-FileChooser.saveButtonToolTip.textAndMnemonic=\u9078\u629E\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u4FDD\u5B58\u3057\u307E\u3059
-FileChooser.openButtonToolTip.textAndMnemonic=\u9078\u629E\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304D\u307E\u3059
-FileChooser.updateButtonToolTip.textAndMnemonic=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30EA\u30B9\u30C8\u3092\u66F4\u65B0\u3057\u307E\u3059
-FileChooser.helpButtonToolTip.textAndMnemonic=FileChooser\u306E\u30D8\u30EB\u30D7\u3067\u3059
-FileChooser.directoryOpenButtonToolTip.textAndMnemonic=\u9078\u629E\u3057\u305F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u958B\u304D\u307E\u3059
-
-FileChooser.filesListAccessibleName=Files List
-FileChooser.filesDetailsAccessibleName=Files Details
-
-############ COLOR CHOOSER STRINGS #############
-ColorChooser.preview.textAndMnemonic=\u30D7\u30EC\u30D3\u30E5\u30FC
-ColorChooser.ok.textAndMnemonic=OK
-ColorChooser.cancel.textAndMnemonic=\u53D6\u6D88
-ColorChooser.reset.textAndMnemonic=\u30EA\u30BB\u30C3\u30C8(&R)
-ColorChooser.sample.textAndMnemonic=\u30B5\u30F3\u30D7\u30EB\u30FB\u30C6\u30AD\u30B9\u30C8  \u30B5\u30F3\u30D7\u30EB\u30FB\u30C6\u30AD\u30B9\u30C8
-ColorChooser.swatches.textAndMnemonic=\u30B5\u30F3\u30D7\u30EB(&S)
-ColorChooser.swatchesRecent.textAndMnemonic=\u6700\u65B0:
-ColorChooser.hsv.textAndMnemonic=&HSV
-ColorChooser.hsvHue.textAndMnemonic=\u8272\u76F8
-ColorChooser.hsvSaturation.textAndMnemonic=\u5F69\u5EA6
-ColorChooser.hsvValue.textAndMnemonic=\u5024
-ColorChooser.hsvTransparency.textAndMnemonic=\u900F\u660E\u5EA6
-ColorChooser.hsl.textAndMnemonic=HS&L
-ColorChooser.hslHue.textAndMnemonic=\u8272\u76F8
-ColorChooser.hslSaturation.textAndMnemonic=\u5F69\u5EA6
-ColorChooser.hslLightness.textAndMnemonic=\u660E\u5EA6
-ColorChooser.hslTransparency.textAndMnemonic=\u900F\u660E\u5EA6
-ColorChooser.rgb.textAndMnemonic=R&GB
-ColorChooser.rgbRed.textAndMnemonic=\u8D64(&D)
-ColorChooser.rgbGreen.textAndMnemonic=\u7DD1(&N)
-ColorChooser.rgbBlue.textAndMnemonic=\u9752(&B)
-ColorChooser.rgbAlpha.textAndMnemonic=\u30A2\u30EB\u30D5\u30A1
-ColorChooser.rgbHexCode.textAndMnemonic=\u8272\u30B3\u30FC\u30C9(&C)
-ColorChooser.cmyk.textAndMnemonic=C&MYK
-ColorChooser.cmykCyan.textAndMnemonic=\u30B7\u30A2\u30F3
-ColorChooser.cmykMagenta.textAndMnemonic=\u30DE\u30BC\u30F3\u30BF
-ColorChooser.cmykYellow.textAndMnemonic=\u9EC4
-ColorChooser.cmykBlack.textAndMnemonic=\u9ED2
-ColorChooser.cmykAlpha.textAndMnemonic=\u30A2\u30EB\u30D5\u30A1
-
-############ OPTION PANE STRINGS #############
-# We only define mnemonics for YES/NO, but for completeness you can
-# define mnemonics for any of the buttons.
-OptionPane.yesButton.textAndMnemonic=\u306F\u3044(&Y)
-OptionPane.noButton.textAndMnemonic=\u3044\u3044\u3048(&N)
-OptionPane.okButton.textAndMnemonic=&OK
-OptionPane.cancelButton.textAndMnemonic=\u53D6\u6D88
-OptionPane.title.textAndMnemonic=\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u9078\u629E
-# Title for the dialog for the showInputDialog methods. Only used if
-# the developer uses one of the variants that doesn't take a title.
-OptionPane.inputDialog.titleAndMnemonic=\u5165\u529B
-# Title for the dialog for the showMessageDialog methods. Only used if
-# the developer uses one of the variants that doesn't take a title.
-OptionPane.messageDialog.titleAndMnemonic=\u30E1\u30C3\u30BB\u30FC\u30B8
-
-############ Printing Dialog Strings ############
-PrintingDialog.titleProgress.textAndMnemonic=\u5370\u5237\u3057\u3066\u3044\u307E\u3059
-PrintingDialog.titleAborting.textAndMnemonic=\u5370\u5237\u3092\u4E2D\u6B62\u3057\u3066\u3044\u307E\u3059
-
-PrintingDialog.contentInitial.textAndMnemonic=\u5370\u5237\u4E2D...
-
-# The following string will be formatted by a MessageFormat
-# and {0} will be replaced by page number being printed
-PrintingDialog.contentProgress.textAndMnemonic=\u30DA\u30FC\u30B8{0}\u3092\u5370\u5237\u3057\u307E\u3057\u305F...
-
-PrintingDialog.contentAborting.textAndMnemonic=\u5370\u5237\u3092\u4E2D\u6B62\u3057\u3066\u3044\u307E\u3059...
-
-PrintingDialog.abortButton.textAndMnemonic=\u4E2D\u6B62(&A)
-PrintingDialog.abortButtonToolTip.textAndMnemonic=\u5370\u5237\u306E\u4E2D\u6B62
-
-############ Internal Frame Strings ############
-InternalFrame.iconButtonToolTip=\u6700\u5C0F\u5316
-InternalFrame.maxButtonToolTip=\u6700\u5927\u5316
-InternalFrame.restoreButtonToolTip=\u5FA9\u5143
-InternalFrame.closeButtonToolTip=\u9589\u3058\u308B
-
-############ Internal Frame Title Pane Strings ############
-InternalFrameTitlePane.restoreButton.textAndMnemonic=\u5FA9\u5143
-InternalFrameTitlePane.moveButton.textAndMnemonic=\u79FB\u52D5
-InternalFrameTitlePane.sizeButton.textAndMnemonic=\u30B5\u30A4\u30BA
-InternalFrameTitlePane.minimizeButton.textAndMnemonic=\u6700\u5C0F\u5316
-InternalFrameTitlePane.maximizeButton.textAndMnemonic=\u6700\u5927\u5316
-InternalFrameTitlePane.closeButton.textAndMnemonic=\u9589\u3058\u308B
-
-############ Text strings #############
-# Used for html forms
-FormView.submitButton.textAndMnemonic=\u554F\u5408\u305B\u306E\u5B9F\u884C
-FormView.resetButton.textAndMnemonic=\u30EA\u30BB\u30C3\u30C8
-FormView.browseFileButton.textAndMnemonic=\u53C2\u7167...
-
-############ Abstract Document Strings ############
-AbstractDocument.styleChange.textAndMnemonic=\u30B9\u30BF\u30A4\u30EB\u5909\u66F4
-AbstractDocument.addition.textAndMnemonic=\u8FFD\u52A0
-AbstractDocument.deletion.textAndMnemonic=\u524A\u9664
-AbstractDocument.undo.textAndMnemonic=\u5143\u306B\u623B\u3059
-AbstractDocument.redo.textAndMnemonic=\u3084\u308A\u76F4\u3057
-
-############ Abstract Button Strings ############
-AbstractButton.click.textAndMnemonic=\u30AF\u30EA\u30C3\u30AF
-
-############ Abstract Undoable Edit Strings ############
-AbstractUndoableEdit.undo.textAndMnemonic=\u5143\u306B\u623B\u3059
-AbstractUndoableEdit.redo.textAndMnemonic=\u3084\u308A\u76F4\u3057
-
-############ Combo Box Strings ############
-ComboBox.togglePopup.textAndMnemonic=\u30C8\u30B0\u30EB\u30FB\u30DD\u30C3\u30D7\u30A2\u30C3\u30D7
-
-############ Progress Monitor Strings ############
-ProgressMonitor.progress.textAndMnemonic=\u9032\u884C\u4E2D...
-
-############ Split Pane Strings ############
-SplitPane.leftButton.textAndMnemonic=\u5DE6\u30DC\u30BF\u30F3
-SplitPane.rightButton.textAndMnemonic=\u53F3\u30DC\u30BF\u30F3
-# Used for Isindex
-IsindexView.prompt=\u691C\u7D22\u7528\u306E\u7D22\u5F15\u3067\u3059\u3002\u691C\u7D22\u3059\u308B\u30AD\u30FC\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044:
-
-############ InternalFrameTitlePane Strings ############
-InternalFrameTitlePane.iconifyButtonAccessibleName=\u30A2\u30A4\u30B3\u30F3\u5316
-InternalFrameTitlePane.maximizeButtonAccessibleName=\u6700\u5927\u5316
-InternalFrameTitlePane.closeButtonAccessibleName=\u9589\u3058\u308B
-
+# This properties file is used to create a PropertyResourceBundle
+# It contains Locale specific strings used in Swing
+# Currently, the following components need this for support:
+#
+#    ColorChooser
+#    FileChooser
+#    OptionPane
+#
+# When this file is read in, the strings are put into the
+# defaults table.  This is an implementation detail of the current
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
+# support.
+#
+#                        MNEMONIC NOTE:
+# Many of strings in this file are used by widgets that have a
+# mnemonic, for example:
+#   ColorChooser.rgbNameTextAndMnemonic=R&GB
+# Indicates that the tab in the ColorChooser for RGB colors will have
+# the text 'RGB', further the mnemonic character will be 'g' and that
+# a decoration will be provided under the 'G'. This will typically
+# look like:  RGB
+#              -
+#
+# One important thing to remember is that the mnemonic MUST exist in
+# the String, if it does not exist you should add text that makes it
+# exist. This will typically take the form 'XXXX (M)' where M is the
+# character for the mnemonic.
+#
+# @author Steve Wilson
+
+############ FILE CHOOSER STRINGS #############
+FileChooser.fileDescription.textAndMnemonic=\u6C4E\u7528\u30D5\u30A1\u30A4\u30EB
+FileChooser.directoryDescription.textAndMnemonic=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA
+FileChooser.newFolderError.textAndMnemonic=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0\u306E\u4F5C\u6210\u30A8\u30E9\u30FC
+FileChooser.newFolderErrorSeparator= :
+FileChooser.newFolderParentDoesntExistTitle.textAndMnemonic=\u30D5\u30A9\u30EB\u30C0\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093
+FileChooser.newFolderParentDoesntExist.textAndMnemonic=\u30D5\u30A9\u30EB\u30C0\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3002\n\n\u6307\u5B9A\u3057\u305F\u30D1\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002
+FileChooser.renameErrorTitle.textAndMnemonic=\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u30D5\u30A9\u30EB\u30C0\u306E\u540D\u524D\u5909\u66F4\u30A8\u30E9\u30FC
+FileChooser.renameError.textAndMnemonic={0}\u306E\u540D\u524D\u3092\u5909\u66F4\u3067\u304D\u307E\u305B\u3093
+FileChooser.renameErrorFileExists.textAndMnemonic={0}\u306E\u540D\u524D\u3092\u5909\u66F4\u3067\u304D\u307E\u305B\u3093: \u6307\u5B9A\u3057\u305F\u540D\u524D\u306E\u30D5\u30A1\u30A4\u30EB\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059\u3002\u5225\u306E\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+FileChooser.acceptAllFileFilter.textAndMnemonic=\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB
+FileChooser.cancelButton.textAndMnemonic=\u53D6\u6D88
+FileChooser.saveButton.textAndMnemonic=\u4FDD\u5B58(&S)
+FileChooser.openButton.textAndMnemonic=\u958B\u304F(&O)
+FileChooser.saveDialogTitle.textAndMnemonic=\u4FDD\u5B58
+FileChooser.openDialogTitle.textAndMnemonic=\u958B\u304F
+FileChooser.updateButton.textAndMnemonic=\u66F4\u65B0(&U)
+FileChooser.helpButton.textAndMnemonic=\u30D8\u30EB\u30D7(&H)
+FileChooser.directoryOpenButton.textAndMnemonic=\u958B\u304F(&O)
+
+# File Size Units
+FileChooser.fileSizeKiloBytes={0} KB
+FileChooser.fileSizeMegaBytes={0} MB
+FileChooser.fileSizeGigaBytes={0} GB
+
+# These strings are platform dependent not look and feel dependent.
+FileChooser.win32.newFolder=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0
+FileChooser.win32.newFolder.subsequent=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0({0})
+FileChooser.other.newFolder=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0
+FileChooser.other.newFolder.subsequent=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0.{0}
+
+
+## file chooser tooltips ###
+FileChooser.cancelButtonToolTip.textAndMnemonic=\u30D5\u30A1\u30A4\u30EB\u30FB\u30C1\u30E5\u30FC\u30B6\u30FB\u30C0\u30A4\u30A2\u30ED\u30B0\u3092\u7D42\u4E86\u3057\u307E\u3059
+FileChooser.saveButtonToolTip.textAndMnemonic=\u9078\u629E\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u4FDD\u5B58\u3057\u307E\u3059
+FileChooser.openButtonToolTip.textAndMnemonic=\u9078\u629E\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304D\u307E\u3059
+FileChooser.updateButtonToolTip.textAndMnemonic=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30EA\u30B9\u30C8\u3092\u66F4\u65B0\u3057\u307E\u3059
+FileChooser.helpButtonToolTip.textAndMnemonic=FileChooser\u306E\u30D8\u30EB\u30D7\u3067\u3059
+FileChooser.directoryOpenButtonToolTip.textAndMnemonic=\u9078\u629E\u3057\u305F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u958B\u304D\u307E\u3059
+
+FileChooser.filesListAccessibleName=Files List
+FileChooser.filesDetailsAccessibleName=Files Details
+
+############ COLOR CHOOSER STRINGS #############
+ColorChooser.preview.textAndMnemonic=\u30D7\u30EC\u30D3\u30E5\u30FC
+ColorChooser.ok.textAndMnemonic=OK
+ColorChooser.cancel.textAndMnemonic=\u53D6\u6D88
+ColorChooser.reset.textAndMnemonic=\u30EA\u30BB\u30C3\u30C8(&R)
+ColorChooser.sample.textAndMnemonic=\u30B5\u30F3\u30D7\u30EB\u30FB\u30C6\u30AD\u30B9\u30C8  \u30B5\u30F3\u30D7\u30EB\u30FB\u30C6\u30AD\u30B9\u30C8
+ColorChooser.swatches.textAndMnemonic=\u30B5\u30F3\u30D7\u30EB(&S)
+ColorChooser.swatchesRecent.textAndMnemonic=\u6700\u65B0:
+ColorChooser.hsv.textAndMnemonic=&HSV
+ColorChooser.hsvHue.textAndMnemonic=\u8272\u76F8
+ColorChooser.hsvSaturation.textAndMnemonic=\u5F69\u5EA6
+ColorChooser.hsvValue.textAndMnemonic=\u5024
+ColorChooser.hsvTransparency.textAndMnemonic=\u900F\u660E\u5EA6
+ColorChooser.hsl.textAndMnemonic=HS&L
+ColorChooser.hslHue.textAndMnemonic=\u8272\u76F8
+ColorChooser.hslSaturation.textAndMnemonic=\u5F69\u5EA6
+ColorChooser.hslLightness.textAndMnemonic=\u660E\u5EA6
+ColorChooser.hslTransparency.textAndMnemonic=\u900F\u660E\u5EA6
+ColorChooser.rgb.textAndMnemonic=R&GB
+ColorChooser.rgbRed.textAndMnemonic=\u8D64(&D)
+ColorChooser.rgbGreen.textAndMnemonic=\u7DD1(&N)
+ColorChooser.rgbBlue.textAndMnemonic=\u9752(&B)
+ColorChooser.rgbAlpha.textAndMnemonic=\u30A2\u30EB\u30D5\u30A1
+ColorChooser.rgbHexCode.textAndMnemonic=\u8272\u30B3\u30FC\u30C9(&C)
+ColorChooser.cmyk.textAndMnemonic=C&MYK
+ColorChooser.cmykCyan.textAndMnemonic=\u30B7\u30A2\u30F3
+ColorChooser.cmykMagenta.textAndMnemonic=\u30DE\u30BC\u30F3\u30BF
+ColorChooser.cmykYellow.textAndMnemonic=\u9EC4
+ColorChooser.cmykBlack.textAndMnemonic=\u9ED2
+ColorChooser.cmykAlpha.textAndMnemonic=\u30A2\u30EB\u30D5\u30A1
+
+############ OPTION PANE STRINGS #############
+# We only define mnemonics for YES/NO, but for completeness you can
+# define mnemonics for any of the buttons.
+OptionPane.yesButton.textAndMnemonic=\u306F\u3044(&Y)
+OptionPane.noButton.textAndMnemonic=\u3044\u3044\u3048(&N)
+OptionPane.okButton.textAndMnemonic=&OK
+OptionPane.cancelButton.textAndMnemonic=\u53D6\u6D88
+OptionPane.title.textAndMnemonic=\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u9078\u629E
+# Title for the dialog for the showInputDialog methods. Only used if
+# the developer uses one of the variants that doesn't take a title.
+OptionPane.inputDialog.titleAndMnemonic=\u5165\u529B
+# Title for the dialog for the showMessageDialog methods. Only used if
+# the developer uses one of the variants that doesn't take a title.
+OptionPane.messageDialog.titleAndMnemonic=\u30E1\u30C3\u30BB\u30FC\u30B8
+
+############ Printing Dialog Strings ############
+PrintingDialog.titleProgress.textAndMnemonic=\u5370\u5237\u3057\u3066\u3044\u307E\u3059
+PrintingDialog.titleAborting.textAndMnemonic=\u5370\u5237\u3092\u4E2D\u6B62\u3057\u3066\u3044\u307E\u3059
+
+PrintingDialog.contentInitial.textAndMnemonic=\u5370\u5237\u4E2D...
+
+# The following string will be formatted by a MessageFormat
+# and {0} will be replaced by page number being printed
+PrintingDialog.contentProgress.textAndMnemonic=\u30DA\u30FC\u30B8{0}\u3092\u5370\u5237\u3057\u307E\u3057\u305F...
+
+PrintingDialog.contentAborting.textAndMnemonic=\u5370\u5237\u3092\u4E2D\u6B62\u3057\u3066\u3044\u307E\u3059...
+
+PrintingDialog.abortButton.textAndMnemonic=\u4E2D\u6B62(&A)
+PrintingDialog.abortButtonToolTip.textAndMnemonic=\u5370\u5237\u306E\u4E2D\u6B62
+
+############ Internal Frame Strings ############
+InternalFrame.iconButtonToolTip=\u6700\u5C0F\u5316
+InternalFrame.maxButtonToolTip=\u6700\u5927\u5316
+InternalFrame.restoreButtonToolTip=\u5FA9\u5143
+InternalFrame.closeButtonToolTip=\u9589\u3058\u308B
+
+############ Internal Frame Title Pane Strings ############
+InternalFrameTitlePane.restoreButton.textAndMnemonic=\u5FA9\u5143
+InternalFrameTitlePane.moveButton.textAndMnemonic=\u79FB\u52D5
+InternalFrameTitlePane.sizeButton.textAndMnemonic=\u30B5\u30A4\u30BA
+InternalFrameTitlePane.minimizeButton.textAndMnemonic=\u6700\u5C0F\u5316
+InternalFrameTitlePane.maximizeButton.textAndMnemonic=\u6700\u5927\u5316
+InternalFrameTitlePane.closeButton.textAndMnemonic=\u9589\u3058\u308B
+
+############ Text strings #############
+# Used for html forms
+FormView.submitButton.textAndMnemonic=\u554F\u5408\u305B\u306E\u5B9F\u884C
+FormView.resetButton.textAndMnemonic=\u30EA\u30BB\u30C3\u30C8
+FormView.browseFileButton.textAndMnemonic=\u53C2\u7167...
+
+############ Abstract Document Strings ############
+AbstractDocument.styleChange.textAndMnemonic=\u30B9\u30BF\u30A4\u30EB\u5909\u66F4
+AbstractDocument.addition.textAndMnemonic=\u8FFD\u52A0
+AbstractDocument.deletion.textAndMnemonic=\u524A\u9664
+AbstractDocument.undo.textAndMnemonic=\u5143\u306B\u623B\u3059
+AbstractDocument.redo.textAndMnemonic=\u3084\u308A\u76F4\u3057
+
+############ Abstract Button Strings ############
+AbstractButton.click.textAndMnemonic=\u30AF\u30EA\u30C3\u30AF
+
+############ Abstract Undoable Edit Strings ############
+AbstractUndoableEdit.undo.textAndMnemonic=\u5143\u306B\u623B\u3059
+AbstractUndoableEdit.redo.textAndMnemonic=\u3084\u308A\u76F4\u3057
+
+############ Combo Box Strings ############
+ComboBox.togglePopup.textAndMnemonic=\u30C8\u30B0\u30EB\u30FB\u30DD\u30C3\u30D7\u30A2\u30C3\u30D7
+
+############ Progress Monitor Strings ############
+ProgressMonitor.progress.textAndMnemonic=\u9032\u884C\u4E2D...
+
+############ Split Pane Strings ############
+SplitPane.leftButton.textAndMnemonic=\u5DE6\u30DC\u30BF\u30F3
+SplitPane.rightButton.textAndMnemonic=\u53F3\u30DC\u30BF\u30F3
+# Used for Isindex
+IsindexView.prompt=\u691C\u7D22\u7528\u306E\u7D22\u5F15\u3067\u3059\u3002\u691C\u7D22\u3059\u308B\u30AD\u30FC\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044:
+
+############ InternalFrameTitlePane Strings ############
+InternalFrameTitlePane.iconifyButtonAccessibleName=\u30A2\u30A4\u30B3\u30F3\u5316
+InternalFrameTitlePane.maximizeButtonAccessibleName=\u6700\u5927\u5316
+InternalFrameTitlePane.closeButtonAccessibleName=\u9589\u3058\u308B
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ko.properties	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ko.properties	Wed Jul 05 18:14:56 2017 +0200
@@ -1,186 +1,186 @@
-# This properties file is used to create a PropertyResourceBundle
-# It contains Locale specific strings used in Swing
-# Currently, the following components need this for support:
-#
-#    ColorChooser
-#    FileChooser
-#    OptionPane
-#
-# When this file is read in, the strings are put into the
-# defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.
-# This may change in future versions of Swing as we improve localization
-# support.
-#
-#                        MNEMONIC NOTE:
-# Many of strings in this file are used by widgets that have a
-# mnemonic, for example:
-#   ColorChooser.rgbNameTextAndMnemonic=R&GB
-# Indicates that the tab in the ColorChooser for RGB colors will have
-# the text 'RGB', further the mnemonic character will be 'g' and that
-# a decoration will be provided under the 'G'. This will typically
-# look like:  RGB
-#              -
-#
-# One important thing to remember is that the mnemonic MUST exist in
-# the String, if it does not exist you should add text that makes it
-# exist. This will typically take the form 'XXXX (M)' where M is the
-# character for the mnemonic.
-#
-# @author Steve Wilson
-
-############ FILE CHOOSER STRINGS #############
-FileChooser.fileDescription.textAndMnemonic=\uC77C\uBC18 \uD30C\uC77C
-FileChooser.directoryDescription.textAndMnemonic=\uB514\uB809\uD1A0\uB9AC
-FileChooser.newFolderError.textAndMnemonic=\uC0C8 \uD3F4\uB354\uB97C \uC0DD\uC131\uD558\uB294 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
-FileChooser.newFolderErrorSeparator= :
-FileChooser.newFolderParentDoesntExistTitle.textAndMnemonic=\uD3F4\uB354\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC74C
-FileChooser.newFolderParentDoesntExist.textAndMnemonic=\uD3F4\uB354\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.\n\n\uC2DC\uC2A4\uD15C\uC5D0\uC11C \uC9C0\uC815\uB41C \uACBD\uB85C\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-FileChooser.renameErrorTitle.textAndMnemonic=\uD30C\uC77C \uB610\uB294 \uD3F4\uB354 \uC774\uB984 \uBC14\uAFB8\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD
-FileChooser.renameError.textAndMnemonic={0}\uC758 \uC774\uB984\uC744 \uBC14\uAFC0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-FileChooser.renameErrorFileExists.textAndMnemonic={0}\uC758 \uC774\uB984\uC744 \uBC14\uAFC0 \uC218 \uC5C6\uC74C: \uC9C0\uC815\uD55C \uC774\uB984\uC744 \uC0AC\uC6A9\uD558\uB294 \uD30C\uC77C\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4. \uB2E4\uB978 \uD30C\uC77C \uC774\uB984\uC744 \uC9C0\uC815\uD558\uC2ED\uC2DC\uC624.
-FileChooser.acceptAllFileFilter.textAndMnemonic=\uBAA8\uB4E0 \uD30C\uC77C
-FileChooser.cancelButton.textAndMnemonic=\uCDE8\uC18C(&C)
-FileChooser.saveButton.textAndMnemonic=\uC800\uC7A5(&S)
-FileChooser.openButton.textAndMnemonic=\uC5F4\uAE30(&O)
-FileChooser.saveDialogTitle.textAndMnemonic=\uC800\uC7A5
-FileChooser.openDialogTitle.textAndMnemonic=\uC5F4\uAE30
-FileChooser.updateButton.textAndMnemonic=\uAC31\uC2E0(&U)
-FileChooser.helpButton.textAndMnemonic=\uB3C4\uC6C0\uB9D0(&H)
-FileChooser.directoryOpenButton.textAndMnemonic=\uC5F4\uAE30(&O)
-
-# File Size Units
-FileChooser.fileSizeKiloBytes={0} KB
-FileChooser.fileSizeMegaBytes={0} MB
-FileChooser.fileSizeGigaBytes={0} GB
-
-# These strings are platform dependent not look and feel dependent.
-FileChooser.win32.newFolder=\uC0C8 \uD3F4\uB354
-FileChooser.win32.newFolder.subsequent=\uC0C8 \uD3F4\uB354({0})
-FileChooser.other.newFolder=NewFolder
-FileChooser.other.newFolder.subsequent=NewFolder.{0}
-
-
-## file chooser tooltips ###
-FileChooser.cancelButtonToolTip.textAndMnemonic=\uD30C\uC77C \uC120\uD0DD\uAE30 \uB300\uD654\uC0C1\uC790 \uC911\uB2E8
-FileChooser.saveButtonToolTip.textAndMnemonic=\uC120\uD0DD\uB41C \uD30C\uC77C \uC800\uC7A5
-FileChooser.openButtonToolTip.textAndMnemonic=\uC120\uD0DD\uB41C \uD30C\uC77C \uC5F4\uAE30
-FileChooser.updateButtonToolTip.textAndMnemonic=\uB514\uB809\uD1A0\uB9AC \uBAA9\uB85D \uAC31\uC2E0
-FileChooser.helpButtonToolTip.textAndMnemonic=FileChooser \uB3C4\uC6C0\uB9D0
-FileChooser.directoryOpenButtonToolTip.textAndMnemonic=\uC120\uD0DD\uB41C \uB514\uB809\uD1A0\uB9AC \uC5F4\uAE30
-
-FileChooser.filesListAccessibleName=Files List
-FileChooser.filesDetailsAccessibleName=Files Details
-
-############ COLOR CHOOSER STRINGS #############
-ColorChooser.preview.textAndMnemonic=\uBBF8\uB9AC\uBCF4\uAE30
-ColorChooser.ok.textAndMnemonic=\uD655\uC778
-ColorChooser.cancel.textAndMnemonic=\uCDE8\uC18C
-ColorChooser.reset.textAndMnemonic=\uC7AC\uC124\uC815(&R)
-ColorChooser.sample.textAndMnemonic=\uC0D8\uD50C \uD14D\uC2A4\uD2B8  \uC0D8\uD50C \uD14D\uC2A4\uD2B8
-ColorChooser.swatches.textAndMnemonic=\uACAC\uBCF8(&S)
-ColorChooser.swatchesRecent.textAndMnemonic=\uCD5C\uADFC \uBAA9\uB85D:
-ColorChooser.hsv.textAndMnemonic=&HSV
-ColorChooser.hsvHue.textAndMnemonic=\uC0C9\uC870
-ColorChooser.hsvSaturation.textAndMnemonic=\uCC44\uB3C4
-ColorChooser.hsvValue.textAndMnemonic=\uAC12
-ColorChooser.hsvTransparency.textAndMnemonic=\uD22C\uBA85
-ColorChooser.hsl.textAndMnemonic=HS&L
-ColorChooser.hslHue.textAndMnemonic=\uC0C9\uC870
-ColorChooser.hslSaturation.textAndMnemonic=\uCC44\uB3C4
-ColorChooser.hslLightness.textAndMnemonic=\uBC1D\uAE30
-ColorChooser.hslTransparency.textAndMnemonic=\uD22C\uBA85
-ColorChooser.rgb.textAndMnemonic=R&GB
-ColorChooser.rgbRed.textAndMnemonic=\uBE68\uAC04\uC0C9(&D)
-ColorChooser.rgbGreen.textAndMnemonic=\uB179\uC0C9(&N)
-ColorChooser.rgbBlue.textAndMnemonic=\uD30C\uB780\uC0C9(&B)
-ColorChooser.rgbAlpha.textAndMnemonic=\uC54C\uD30C
-ColorChooser.rgbHexCode.textAndMnemonic=\uC0C9\uC0C1 \uCF54\uB4DC(&C)
-ColorChooser.cmyk.textAndMnemonic=C&MYK
-ColorChooser.cmykCyan.textAndMnemonic=\uCCAD\uB85D\uC0C9
-ColorChooser.cmykMagenta.textAndMnemonic=\uC9C4\uD64D\uC0C9
-ColorChooser.cmykYellow.textAndMnemonic=\uB178\uB780\uC0C9
-ColorChooser.cmykBlack.textAndMnemonic=\uAC80\uC815\uC0C9
-ColorChooser.cmykAlpha.textAndMnemonic=\uC54C\uD30C
-
-############ OPTION PANE STRINGS #############
-# We only define mnemonics for YES/NO, but for completeness you can
-# define mnemonics for any of the buttons.
-OptionPane.yesButton.textAndMnemonic=\uC608(&Y)
-OptionPane.noButton.textAndMnemonic=\uC544\uB2C8\uC624(&N)
-OptionPane.okButton.textAndMnemonic=\uD655\uC778(&O)
-OptionPane.cancelButton.textAndMnemonic=\uCDE8\uC18C
-OptionPane.title.textAndMnemonic=\uC635\uC158 \uC120\uD0DD
-# Title for the dialog for the showInputDialog methods. Only used if
-# the developer uses one of the variants that doesn't take a title.
-OptionPane.inputDialog.titleAndMnemonic=\uC785\uB825
-# Title for the dialog for the showMessageDialog methods. Only used if
-# the developer uses one of the variants that doesn't take a title.
-OptionPane.messageDialog.titleAndMnemonic=\uBA54\uC2DC\uC9C0
-
-############ Printing Dialog Strings ############
-PrintingDialog.titleProgress.textAndMnemonic=\uC778\uC1C4
-PrintingDialog.titleAborting.textAndMnemonic=\uC778\uC1C4(\uC911\uB2E8 \uC911)
-
-PrintingDialog.contentInitial.textAndMnemonic=\uC778\uC1C4 \uC9C4\uD589 \uC911...
-
-# The following string will be formatted by a MessageFormat
-# and {0} will be replaced by page number being printed
-PrintingDialog.contentProgress.textAndMnemonic=\uC778\uC1C4\uB41C \uD398\uC774\uC9C0 {0}...
-
-PrintingDialog.contentAborting.textAndMnemonic=\uC778\uC1C4 \uC911\uB2E8 \uC911...
-
-PrintingDialog.abortButton.textAndMnemonic=\uC911\uB2E8(&A)
-PrintingDialog.abortButtonToolTip.textAndMnemonic=\uC778\uC1C4 \uC911\uB2E8
-
-############ Internal Frame Strings ############
-InternalFrame.iconButtonToolTip=\uCD5C\uC18C\uD654
-InternalFrame.maxButtonToolTip=\uCD5C\uB300\uD654
-InternalFrame.restoreButtonToolTip=\uBCF5\uC6D0
-InternalFrame.closeButtonToolTip=\uB2EB\uAE30
-
-############ Internal Frame Title Pane Strings ############
-InternalFrameTitlePane.restoreButton.textAndMnemonic=\uBCF5\uC6D0
-InternalFrameTitlePane.moveButton.textAndMnemonic=\uC774\uB3D9
-InternalFrameTitlePane.sizeButton.textAndMnemonic=\uD06C\uAE30
-InternalFrameTitlePane.minimizeButton.textAndMnemonic=\uCD5C\uC18C\uD654
-InternalFrameTitlePane.maximizeButton.textAndMnemonic=\uCD5C\uB300\uD654
-InternalFrameTitlePane.closeButton.textAndMnemonic=\uB2EB\uAE30
-
-############ Text strings #############
-# Used for html forms
-FormView.submitButton.textAndMnemonic=\uC9C8\uC758 \uC81C\uCD9C
-FormView.resetButton.textAndMnemonic=\uC7AC\uC124\uC815
-FormView.browseFileButton.textAndMnemonic=\uCC3E\uC544\uBCF4\uAE30...
-
-############ Abstract Document Strings ############
-AbstractDocument.styleChange.textAndMnemonic=\uC2A4\uD0C0\uC77C \uBCC0\uACBD
-AbstractDocument.addition.textAndMnemonic=\uCD94\uAC00
-AbstractDocument.deletion.textAndMnemonic=\uC0AD\uC81C
-AbstractDocument.undo.textAndMnemonic=\uC2E4\uD589 \uCDE8\uC18C
-AbstractDocument.redo.textAndMnemonic=\uC7AC\uC2E4\uD589
-
-############ Abstract Button Strings ############
-AbstractButton.click.textAndMnemonic=\uB204\uB974\uAE30
-
-############ Abstract Undoable Edit Strings ############
-AbstractUndoableEdit.undo.textAndMnemonic=\uC2E4\uD589 \uCDE8\uC18C
-AbstractUndoableEdit.redo.textAndMnemonic=\uC7AC\uC2E4\uD589
-
-############ Combo Box Strings ############
-ComboBox.togglePopup.textAndMnemonic=togglePopup
-
-############ Progress Monitor Strings ############
-ProgressMonitor.progress.textAndMnemonic=\uC9C4\uD589...
-
-############ Split Pane Strings ############
-SplitPane.leftButton.textAndMnemonic=\uC67C\uCABD \uB2E8\uCD94
-SplitPane.rightButton.textAndMnemonic=\uC624\uB978\uCABD \uB2E8\uCD94
-# Used for Isindex
-IsindexView.prompt=\uB2E4\uC74C\uC740 \uAC80\uC0C9 \uAC00\uB2A5\uD55C \uC778\uB371\uC2A4\uC785\uB2C8\uB2E4. \uAC80\uC0C9 \uD0A4\uC6CC\uB4DC \uC785\uB825:
-
-############ InternalFrameTitlePane Strings ############
-InternalFrameTitlePane.iconifyButtonAccessibleName=\uC544\uC774\uCF58\uD654
-InternalFrameTitlePane.maximizeButtonAccessibleName=\uCD5C\uB300\uD654
-InternalFrameTitlePane.closeButtonAccessibleName=\uB2EB\uAE30
-
+# This properties file is used to create a PropertyResourceBundle
+# It contains Locale specific strings used in Swing
+# Currently, the following components need this for support:
+#
+#    ColorChooser
+#    FileChooser
+#    OptionPane
+#
+# When this file is read in, the strings are put into the
+# defaults table.  This is an implementation detail of the current
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
+# support.
+#
+#                        MNEMONIC NOTE:
+# Many of strings in this file are used by widgets that have a
+# mnemonic, for example:
+#   ColorChooser.rgbNameTextAndMnemonic=R&GB
+# Indicates that the tab in the ColorChooser for RGB colors will have
+# the text 'RGB', further the mnemonic character will be 'g' and that
+# a decoration will be provided under the 'G'. This will typically
+# look like:  RGB
+#              -
+#
+# One important thing to remember is that the mnemonic MUST exist in
+# the String, if it does not exist you should add text that makes it
+# exist. This will typically take the form 'XXXX (M)' where M is the
+# character for the mnemonic.
+#
+# @author Steve Wilson
+
+############ FILE CHOOSER STRINGS #############
+FileChooser.fileDescription.textAndMnemonic=\uC77C\uBC18 \uD30C\uC77C
+FileChooser.directoryDescription.textAndMnemonic=\uB514\uB809\uD1A0\uB9AC
+FileChooser.newFolderError.textAndMnemonic=\uC0C8 \uD3F4\uB354\uB97C \uC0DD\uC131\uD558\uB294 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
+FileChooser.newFolderErrorSeparator= :
+FileChooser.newFolderParentDoesntExistTitle.textAndMnemonic=\uD3F4\uB354\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC74C
+FileChooser.newFolderParentDoesntExist.textAndMnemonic=\uD3F4\uB354\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.\n\n\uC2DC\uC2A4\uD15C\uC5D0\uC11C \uC9C0\uC815\uB41C \uACBD\uB85C\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+FileChooser.renameErrorTitle.textAndMnemonic=\uD30C\uC77C \uB610\uB294 \uD3F4\uB354 \uC774\uB984 \uBC14\uAFB8\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD
+FileChooser.renameError.textAndMnemonic={0}\uC758 \uC774\uB984\uC744 \uBC14\uAFC0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+FileChooser.renameErrorFileExists.textAndMnemonic={0}\uC758 \uC774\uB984\uC744 \uBC14\uAFC0 \uC218 \uC5C6\uC74C: \uC9C0\uC815\uD55C \uC774\uB984\uC744 \uC0AC\uC6A9\uD558\uB294 \uD30C\uC77C\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4. \uB2E4\uB978 \uD30C\uC77C \uC774\uB984\uC744 \uC9C0\uC815\uD558\uC2ED\uC2DC\uC624.
+FileChooser.acceptAllFileFilter.textAndMnemonic=\uBAA8\uB4E0 \uD30C\uC77C
+FileChooser.cancelButton.textAndMnemonic=\uCDE8\uC18C
+FileChooser.saveButton.textAndMnemonic=\uC800\uC7A5(&S)
+FileChooser.openButton.textAndMnemonic=\uC5F4\uAE30(&O)
+FileChooser.saveDialogTitle.textAndMnemonic=\uC800\uC7A5
+FileChooser.openDialogTitle.textAndMnemonic=\uC5F4\uAE30
+FileChooser.updateButton.textAndMnemonic=\uAC31\uC2E0(&U)
+FileChooser.helpButton.textAndMnemonic=\uB3C4\uC6C0\uB9D0(&H)
+FileChooser.directoryOpenButton.textAndMnemonic=\uC5F4\uAE30(&O)
+
+# File Size Units
+FileChooser.fileSizeKiloBytes={0} KB
+FileChooser.fileSizeMegaBytes={0} MB
+FileChooser.fileSizeGigaBytes={0} GB
+
+# These strings are platform dependent not look and feel dependent.
+FileChooser.win32.newFolder=\uC0C8 \uD3F4\uB354
+FileChooser.win32.newFolder.subsequent=\uC0C8 \uD3F4\uB354({0})
+FileChooser.other.newFolder=NewFolder
+FileChooser.other.newFolder.subsequent=NewFolder.{0}
+
+
+## file chooser tooltips ###
+FileChooser.cancelButtonToolTip.textAndMnemonic=\uD30C\uC77C \uC120\uD0DD\uAE30 \uB300\uD654\uC0C1\uC790 \uC911\uB2E8
+FileChooser.saveButtonToolTip.textAndMnemonic=\uC120\uD0DD\uB41C \uD30C\uC77C \uC800\uC7A5
+FileChooser.openButtonToolTip.textAndMnemonic=\uC120\uD0DD\uB41C \uD30C\uC77C \uC5F4\uAE30
+FileChooser.updateButtonToolTip.textAndMnemonic=\uB514\uB809\uD1A0\uB9AC \uBAA9\uB85D \uAC31\uC2E0
+FileChooser.helpButtonToolTip.textAndMnemonic=FileChooser \uB3C4\uC6C0\uB9D0
+FileChooser.directoryOpenButtonToolTip.textAndMnemonic=\uC120\uD0DD\uB41C \uB514\uB809\uD1A0\uB9AC \uC5F4\uAE30
+
+FileChooser.filesListAccessibleName=Files List
+FileChooser.filesDetailsAccessibleName=Files Details
+
+############ COLOR CHOOSER STRINGS #############
+ColorChooser.preview.textAndMnemonic=\uBBF8\uB9AC\uBCF4\uAE30
+ColorChooser.ok.textAndMnemonic=\uD655\uC778
+ColorChooser.cancel.textAndMnemonic=\uCDE8\uC18C
+ColorChooser.reset.textAndMnemonic=\uC7AC\uC124\uC815(&R)
+ColorChooser.sample.textAndMnemonic=\uC0D8\uD50C \uD14D\uC2A4\uD2B8  \uC0D8\uD50C \uD14D\uC2A4\uD2B8
+ColorChooser.swatches.textAndMnemonic=\uACAC\uBCF8(&S)
+ColorChooser.swatchesRecent.textAndMnemonic=\uCD5C\uADFC \uBAA9\uB85D:
+ColorChooser.hsv.textAndMnemonic=&HSV
+ColorChooser.hsvHue.textAndMnemonic=\uC0C9\uC870
+ColorChooser.hsvSaturation.textAndMnemonic=\uCC44\uB3C4
+ColorChooser.hsvValue.textAndMnemonic=\uAC12
+ColorChooser.hsvTransparency.textAndMnemonic=\uD22C\uBA85
+ColorChooser.hsl.textAndMnemonic=HS&L
+ColorChooser.hslHue.textAndMnemonic=\uC0C9\uC870
+ColorChooser.hslSaturation.textAndMnemonic=\uCC44\uB3C4
+ColorChooser.hslLightness.textAndMnemonic=\uBC1D\uAE30
+ColorChooser.hslTransparency.textAndMnemonic=\uD22C\uBA85
+ColorChooser.rgb.textAndMnemonic=R&GB
+ColorChooser.rgbRed.textAndMnemonic=\uBE68\uAC04\uC0C9(&D)
+ColorChooser.rgbGreen.textAndMnemonic=\uB179\uC0C9(&N)
+ColorChooser.rgbBlue.textAndMnemonic=\uD30C\uB780\uC0C9(&B)
+ColorChooser.rgbAlpha.textAndMnemonic=\uC54C\uD30C
+ColorChooser.rgbHexCode.textAndMnemonic=\uC0C9\uC0C1 \uCF54\uB4DC(&C)
+ColorChooser.cmyk.textAndMnemonic=C&MYK
+ColorChooser.cmykCyan.textAndMnemonic=\uCCAD\uB85D\uC0C9
+ColorChooser.cmykMagenta.textAndMnemonic=\uC9C4\uD64D\uC0C9
+ColorChooser.cmykYellow.textAndMnemonic=\uB178\uB780\uC0C9
+ColorChooser.cmykBlack.textAndMnemonic=\uAC80\uC815\uC0C9
+ColorChooser.cmykAlpha.textAndMnemonic=\uC54C\uD30C
+
+############ OPTION PANE STRINGS #############
+# We only define mnemonics for YES/NO, but for completeness you can
+# define mnemonics for any of the buttons.
+OptionPane.yesButton.textAndMnemonic=\uC608(&Y)
+OptionPane.noButton.textAndMnemonic=\uC544\uB2C8\uC624(&N)
+OptionPane.okButton.textAndMnemonic=\uD655\uC778(&O)
+OptionPane.cancelButton.textAndMnemonic=\uCDE8\uC18C
+OptionPane.title.textAndMnemonic=\uC635\uC158 \uC120\uD0DD
+# Title for the dialog for the showInputDialog methods. Only used if
+# the developer uses one of the variants that doesn't take a title.
+OptionPane.inputDialog.titleAndMnemonic=\uC785\uB825
+# Title for the dialog for the showMessageDialog methods. Only used if
+# the developer uses one of the variants that doesn't take a title.
+OptionPane.messageDialog.titleAndMnemonic=\uBA54\uC2DC\uC9C0
+
+############ Printing Dialog Strings ############
+PrintingDialog.titleProgress.textAndMnemonic=\uC778\uC1C4
+PrintingDialog.titleAborting.textAndMnemonic=\uC778\uC1C4(\uC911\uB2E8 \uC911)
+
+PrintingDialog.contentInitial.textAndMnemonic=\uC778\uC1C4 \uC9C4\uD589 \uC911...
+
+# The following string will be formatted by a MessageFormat
+# and {0} will be replaced by page number being printed
+PrintingDialog.contentProgress.textAndMnemonic=\uC778\uC1C4\uB41C \uD398\uC774\uC9C0 {0}...
+
+PrintingDialog.contentAborting.textAndMnemonic=\uC778\uC1C4 \uC911\uB2E8 \uC911...
+
+PrintingDialog.abortButton.textAndMnemonic=\uC911\uB2E8(&A)
+PrintingDialog.abortButtonToolTip.textAndMnemonic=\uC778\uC1C4 \uC911\uB2E8
+
+############ Internal Frame Strings ############
+InternalFrame.iconButtonToolTip=\uCD5C\uC18C\uD654
+InternalFrame.maxButtonToolTip=\uCD5C\uB300\uD654
+InternalFrame.restoreButtonToolTip=\uBCF5\uC6D0
+InternalFrame.closeButtonToolTip=\uB2EB\uAE30
+
+############ Internal Frame Title Pane Strings ############
+InternalFrameTitlePane.restoreButton.textAndMnemonic=\uBCF5\uC6D0
+InternalFrameTitlePane.moveButton.textAndMnemonic=\uC774\uB3D9
+InternalFrameTitlePane.sizeButton.textAndMnemonic=\uD06C\uAE30
+InternalFrameTitlePane.minimizeButton.textAndMnemonic=\uCD5C\uC18C\uD654
+InternalFrameTitlePane.maximizeButton.textAndMnemonic=\uCD5C\uB300\uD654
+InternalFrameTitlePane.closeButton.textAndMnemonic=\uB2EB\uAE30
+
+############ Text strings #############
+# Used for html forms
+FormView.submitButton.textAndMnemonic=\uC9C8\uC758 \uC81C\uCD9C
+FormView.resetButton.textAndMnemonic=\uC7AC\uC124\uC815
+FormView.browseFileButton.textAndMnemonic=\uCC3E\uC544\uBCF4\uAE30...
+
+############ Abstract Document Strings ############
+AbstractDocument.styleChange.textAndMnemonic=\uC2A4\uD0C0\uC77C \uBCC0\uACBD
+AbstractDocument.addition.textAndMnemonic=\uCD94\uAC00
+AbstractDocument.deletion.textAndMnemonic=\uC0AD\uC81C
+AbstractDocument.undo.textAndMnemonic=\uC2E4\uD589 \uCDE8\uC18C
+AbstractDocument.redo.textAndMnemonic=\uC7AC\uC2E4\uD589
+
+############ Abstract Button Strings ############
+AbstractButton.click.textAndMnemonic=\uB204\uB974\uAE30
+
+############ Abstract Undoable Edit Strings ############
+AbstractUndoableEdit.undo.textAndMnemonic=\uC2E4\uD589 \uCDE8\uC18C
+AbstractUndoableEdit.redo.textAndMnemonic=\uC7AC\uC2E4\uD589
+
+############ Combo Box Strings ############
+ComboBox.togglePopup.textAndMnemonic=togglePopup
+
+############ Progress Monitor Strings ############
+ProgressMonitor.progress.textAndMnemonic=\uC9C4\uD589...
+
+############ Split Pane Strings ############
+SplitPane.leftButton.textAndMnemonic=\uC67C\uCABD \uB2E8\uCD94
+SplitPane.rightButton.textAndMnemonic=\uC624\uB978\uCABD \uB2E8\uCD94
+# Used for Isindex
+IsindexView.prompt=\uB2E4\uC74C\uC740 \uAC80\uC0C9 \uAC00\uB2A5\uD55C \uC778\uB371\uC2A4\uC785\uB2C8\uB2E4. \uAC80\uC0C9 \uD0A4\uC6CC\uB4DC \uC785\uB825:
+
+############ InternalFrameTitlePane Strings ############
+InternalFrameTitlePane.iconifyButtonAccessibleName=\uC544\uC774\uCF58\uD654
+InternalFrameTitlePane.maximizeButtonAccessibleName=\uCD5C\uB300\uD654
+InternalFrameTitlePane.closeButtonAccessibleName=\uB2EB\uAE30
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_pt_BR.properties	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_pt_BR.properties	Wed Jul 05 18:14:56 2017 +0200
@@ -1,186 +1,186 @@
-# This properties file is used to create a PropertyResourceBundle
-# It contains Locale specific strings used in Swing
-# Currently, the following components need this for support:
-#
-#    ColorChooser
-#    FileChooser
-#    OptionPane
-#
-# When this file is read in, the strings are put into the
-# defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.
-# This may change in future versions of Swing as we improve localization
-# support.
-#
-#                        MNEMONIC NOTE:
-# Many of strings in this file are used by widgets that have a
-# mnemonic, for example:
-#   ColorChooser.rgbNameTextAndMnemonic=R&GB
-# Indicates that the tab in the ColorChooser for RGB colors will have
-# the text 'RGB', further the mnemonic character will be 'g' and that
-# a decoration will be provided under the 'G'. This will typically
-# look like:  RGB
-#              -
-#
-# One important thing to remember is that the mnemonic MUST exist in
-# the String, if it does not exist you should add text that makes it
-# exist. This will typically take the form 'XXXX (M)' where M is the
-# character for the mnemonic.
-#
-# @author Steve Wilson
-
-############ FILE CHOOSER STRINGS #############
-FileChooser.fileDescription.textAndMnemonic=Arquivo Gen\u00E9rico
-FileChooser.directoryDescription.textAndMnemonic=Diret\u00F3rio
-FileChooser.newFolderError.textAndMnemonic=Erro ao criar nova pasta
-FileChooser.newFolderErrorSeparator= :
-FileChooser.newFolderParentDoesntExistTitle.textAndMnemonic=N\u00E3o \u00E9 poss\u00EDvel criar a pasta
-FileChooser.newFolderParentDoesntExist.textAndMnemonic=N\u00E3o \u00E9 poss\u00EDvel criar a pasta.\n\nO sistema n\u00E3o pode localizar o caminho especificado.
-FileChooser.renameErrorTitle.textAndMnemonic=Erro ao Renomear o Arquivo ou a Pasta
-FileChooser.renameError.textAndMnemonic=N\u00E3o \u00E9 poss\u00EDvel renomear {0}
-FileChooser.renameErrorFileExists.textAndMnemonic=N\u00E3o \u00E9 poss\u00EDvel renomear {0}: Um arquivo com o nome especificado j\u00E1 existe. Especifique outro nome de arquivo.
-FileChooser.acceptAllFileFilter.textAndMnemonic=Todos os Arquivos
-FileChooser.cancelButton.textAndMnemonic=&Cancelar
-FileChooser.saveButton.textAndMnemonic=&Salvar
-FileChooser.openButton.textAndMnemonic=A&brir
-FileChooser.saveDialogTitle.textAndMnemonic=Salvar
-FileChooser.openDialogTitle.textAndMnemonic=Abrir
-FileChooser.updateButton.textAndMnemonic=At&ualizar
-FileChooser.helpButton.textAndMnemonic=Aj&uda
-FileChooser.directoryOpenButton.textAndMnemonic=A&brir
-
-# File Size Units
-FileChooser.fileSizeKiloBytes={0} KB
-FileChooser.fileSizeMegaBytes={0} MB
-FileChooser.fileSizeGigaBytes={0} GB
-
-# These strings are platform dependent not look and feel dependent.
-FileChooser.win32.newFolder=Nova Pasta
-FileChooser.win32.newFolder.subsequent=Nova Pasta ({0})
-FileChooser.other.newFolder=NewFolder
-FileChooser.other.newFolder.subsequent=NewFolder.{0}
-
-
-## file chooser tooltips ###
-FileChooser.cancelButtonToolTip.textAndMnemonic=Abortar caixa de di\u00E1logo do seletor de arquivos
-FileChooser.saveButtonToolTip.textAndMnemonic=Salvar arquivo selecionado
-FileChooser.openButtonToolTip.textAndMnemonic=Abrir arquivo selecionado
-FileChooser.updateButtonToolTip.textAndMnemonic=Atualizar lista de diret\u00F3rios
-FileChooser.helpButtonToolTip.textAndMnemonic=Ajuda do FileChooser
-FileChooser.directoryOpenButtonToolTip.textAndMnemonic=Abrir diret\u00F3rio selecionado
-
-FileChooser.filesListAccessibleName=Files List
-FileChooser.filesDetailsAccessibleName=Files Details
-
-############ COLOR CHOOSER STRINGS #############
-ColorChooser.preview.textAndMnemonic=Visualizar
-ColorChooser.ok.textAndMnemonic=OK
-ColorChooser.cancel.textAndMnemonic=Cancelar
-ColorChooser.reset.textAndMnemonic=&Redefinir
-ColorChooser.sample.textAndMnemonic=Texto de Amostra Texto de Amostra
-ColorChooser.swatches.textAndMnemonic=Amo&stras
-ColorChooser.swatchesRecent.textAndMnemonic=Recente:
-ColorChooser.hsv.textAndMnemonic=&HSV
-ColorChooser.hsvHue.textAndMnemonic=Matiz
-ColorChooser.hsvSaturation.textAndMnemonic=Satura\u00E7\u00E3o
-ColorChooser.hsvValue.textAndMnemonic=Valor
-ColorChooser.hsvTransparency.textAndMnemonic=Transpar\u00EAncia
-ColorChooser.hsl.textAndMnemonic=HS&L
-ColorChooser.hslHue.textAndMnemonic=Matiz
-ColorChooser.hslSaturation.textAndMnemonic=Satura\u00E7\u00E3o
-ColorChooser.hslLightness.textAndMnemonic=Clareza
-ColorChooser.hslTransparency.textAndMnemonic=Transpar\u00EAncia
-ColorChooser.rgb.textAndMnemonic=R&GB
-ColorChooser.rgbRed.textAndMnemonic=&Vermelho
-ColorChooser.rgbGreen.textAndMnemonic=&Verde
-ColorChooser.rgbBlue.textAndMnemonic=&Azul
-ColorChooser.rgbAlpha.textAndMnemonic=Alfa
-ColorChooser.rgbHexCode.textAndMnemonic=C\u00F3digo da Cor(&C)
-ColorChooser.cmyk.textAndMnemonic=C&MYK
-ColorChooser.cmykCyan.textAndMnemonic=Ciano
-ColorChooser.cmykMagenta.textAndMnemonic=Magenta
-ColorChooser.cmykYellow.textAndMnemonic=Amarelo
-ColorChooser.cmykBlack.textAndMnemonic=Preto
-ColorChooser.cmykAlpha.textAndMnemonic=Alfa
-
-############ OPTION PANE STRINGS #############
-# We only define mnemonics for YES/NO, but for completeness you can
-# define mnemonics for any of the buttons.
-OptionPane.yesButton.textAndMnemonic=&Sim
-OptionPane.noButton.textAndMnemonic=N\u00E3o(&N)
-OptionPane.okButton.textAndMnemonic=&OK
-OptionPane.cancelButton.textAndMnemonic=&Cancelar
-OptionPane.title.textAndMnemonic=Selecionar uma Op\u00E7\u00E3o
-# Title for the dialog for the showInputDialog methods. Only used if
-# the developer uses one of the variants that doesn't take a title.
-OptionPane.inputDialog.titleAndMnemonic=Entrada
-# Title for the dialog for the showMessageDialog methods. Only used if
-# the developer uses one of the variants that doesn't take a title.
-OptionPane.messageDialog.titleAndMnemonic=Mensagem
-
-############ Printing Dialog Strings ############
-PrintingDialog.titleProgress.textAndMnemonic=Impress\u00E3o
-PrintingDialog.titleAborting.textAndMnemonic=Impress\u00E3o (Abortando)
-
-PrintingDialog.contentInitial.textAndMnemonic=Impress\u00E3o em andamento...
-
-# The following string will be formatted by a MessageFormat
-# and {0} will be replaced by page number being printed
-PrintingDialog.contentProgress.textAndMnemonic=P\u00E1gina impressa {0}...
-
-PrintingDialog.contentAborting.textAndMnemonic=Abortando impress\u00E3o...
-
-PrintingDialog.abortButton.textAndMnemonic=&Abortar
-PrintingDialog.abortButtonToolTip.textAndMnemonic=Abortar Impress\u00E3o
-
-############ Internal Frame Strings ############
-InternalFrame.iconButtonToolTip=Minimizar
-InternalFrame.maxButtonToolTip=Maximizar
-InternalFrame.restoreButtonToolTip=Restaurar
-InternalFrame.closeButtonToolTip=Fechar
-
-############ Internal Frame Title Pane Strings ############
-InternalFrameTitlePane.restoreButton.textAndMnemonic=Restaurar
-InternalFrameTitlePane.moveButton.textAndMnemonic=Mover
-InternalFrameTitlePane.sizeButton.textAndMnemonic=Tamanho
-InternalFrameTitlePane.minimizeButton.textAndMnemonic=Minimizar
-InternalFrameTitlePane.maximizeButton.textAndMnemonic=Maximizar
-InternalFrameTitlePane.closeButton.textAndMnemonic=Fechar
-
-############ Text strings #############
-# Used for html forms
-FormView.submitButton.textAndMnemonic=Submeter Consulta
-FormView.resetButton.textAndMnemonic=Redefinir
-FormView.browseFileButton.textAndMnemonic=Procurar...
-
-############ Abstract Document Strings ############
-AbstractDocument.styleChange.textAndMnemonic=altera\u00E7\u00E3o de estilo
-AbstractDocument.addition.textAndMnemonic=adi\u00E7\u00E3o
-AbstractDocument.deletion.textAndMnemonic=dele\u00E7\u00E3o
-AbstractDocument.undo.textAndMnemonic=Desfazer
-AbstractDocument.redo.textAndMnemonic=Refazer
-
-############ Abstract Button Strings ############
-AbstractButton.click.textAndMnemonic=clicar
-
-############ Abstract Undoable Edit Strings ############
-AbstractUndoableEdit.undo.textAndMnemonic=Desfazer
-AbstractUndoableEdit.redo.textAndMnemonic=Refazer
-
-############ Combo Box Strings ############
-ComboBox.togglePopup.textAndMnemonic=togglePopup
-
-############ Progress Monitor Strings ############
-ProgressMonitor.progress.textAndMnemonic=Progresso...
-
-############ Split Pane Strings ############
-SplitPane.leftButton.textAndMnemonic=bot\u00E3o esquerdo
-SplitPane.rightButton.textAndMnemonic=bot\u00E3o direito
-# Used for Isindex
-IsindexView.prompt=Trata-se de um \u00EDndice pesquis\u00E1vel. Informe as palavras-chave de pesquisa:
-
-############ InternalFrameTitlePane Strings ############
-InternalFrameTitlePane.iconifyButtonAccessibleName=Iconify
-InternalFrameTitlePane.maximizeButtonAccessibleName=Maximizar
-InternalFrameTitlePane.closeButtonAccessibleName=Fechar
-
+# This properties file is used to create a PropertyResourceBundle
+# It contains Locale specific strings used in Swing
+# Currently, the following components need this for support:
+#
+#    ColorChooser
+#    FileChooser
+#    OptionPane
+#
+# When this file is read in, the strings are put into the
+# defaults table.  This is an implementation detail of the current
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
+# support.
+#
+#                        MNEMONIC NOTE:
+# Many of strings in this file are used by widgets that have a
+# mnemonic, for example:
+#   ColorChooser.rgbNameTextAndMnemonic=R&GB
+# Indicates that the tab in the ColorChooser for RGB colors will have
+# the text 'RGB', further the mnemonic character will be 'g' and that
+# a decoration will be provided under the 'G'. This will typically
+# look like:  RGB
+#              -
+#
+# One important thing to remember is that the mnemonic MUST exist in
+# the String, if it does not exist you should add text that makes it
+# exist. This will typically take the form 'XXXX (M)' where M is the
+# character for the mnemonic.
+#
+# @author Steve Wilson
+
+############ FILE CHOOSER STRINGS #############
+FileChooser.fileDescription.textAndMnemonic=Arquivo Gen\u00E9rico
+FileChooser.directoryDescription.textAndMnemonic=Diret\u00F3rio
+FileChooser.newFolderError.textAndMnemonic=Erro ao criar nova pasta
+FileChooser.newFolderErrorSeparator= :
+FileChooser.newFolderParentDoesntExistTitle.textAndMnemonic=N\u00E3o \u00E9 poss\u00EDvel criar a pasta
+FileChooser.newFolderParentDoesntExist.textAndMnemonic=N\u00E3o \u00E9 poss\u00EDvel criar a pasta.\n\nO sistema n\u00E3o pode localizar o caminho especificado.
+FileChooser.renameErrorTitle.textAndMnemonic=Erro ao Renomear o Arquivo ou a Pasta
+FileChooser.renameError.textAndMnemonic=N\u00E3o \u00E9 poss\u00EDvel renomear {0}
+FileChooser.renameErrorFileExists.textAndMnemonic=N\u00E3o \u00E9 poss\u00EDvel renomear {0}: Um arquivo com o nome especificado j\u00E1 existe. Especifique outro nome de arquivo.
+FileChooser.acceptAllFileFilter.textAndMnemonic=Todos os Arquivos
+FileChooser.cancelButton.textAndMnemonic=Cancelar
+FileChooser.saveButton.textAndMnemonic=&Salvar
+FileChooser.openButton.textAndMnemonic=A&brir
+FileChooser.saveDialogTitle.textAndMnemonic=Salvar
+FileChooser.openDialogTitle.textAndMnemonic=Abrir
+FileChooser.updateButton.textAndMnemonic=At&ualizar
+FileChooser.helpButton.textAndMnemonic=Aj&uda
+FileChooser.directoryOpenButton.textAndMnemonic=A&brir
+
+# File Size Units
+FileChooser.fileSizeKiloBytes={0} KB
+FileChooser.fileSizeMegaBytes={0} MB
+FileChooser.fileSizeGigaBytes={0} GB
+
+# These strings are platform dependent not look and feel dependent.
+FileChooser.win32.newFolder=Nova Pasta
+FileChooser.win32.newFolder.subsequent=Nova Pasta ({0})
+FileChooser.other.newFolder=NewFolder
+FileChooser.other.newFolder.subsequent=NewFolder.{0}
+
+
+## file chooser tooltips ###
+FileChooser.cancelButtonToolTip.textAndMnemonic=Abortar caixa de di\u00E1logo do seletor de arquivos
+FileChooser.saveButtonToolTip.textAndMnemonic=Salvar arquivo selecionado
+FileChooser.openButtonToolTip.textAndMnemonic=Abrir arquivo selecionado
+FileChooser.updateButtonToolTip.textAndMnemonic=Atualizar lista de diret\u00F3rios
+FileChooser.helpButtonToolTip.textAndMnemonic=Ajuda do FileChooser
+FileChooser.directoryOpenButtonToolTip.textAndMnemonic=Abrir diret\u00F3rio selecionado
+
+FileChooser.filesListAccessibleName=Files List
+FileChooser.filesDetailsAccessibleName=Files Details
+
+############ COLOR CHOOSER STRINGS #############
+ColorChooser.preview.textAndMnemonic=Visualizar
+ColorChooser.ok.textAndMnemonic=OK
+ColorChooser.cancel.textAndMnemonic=Cancelar
+ColorChooser.reset.textAndMnemonic=&Redefinir
+ColorChooser.sample.textAndMnemonic=Texto de Amostra Texto de Amostra
+ColorChooser.swatches.textAndMnemonic=Amo&stras
+ColorChooser.swatchesRecent.textAndMnemonic=Recente:
+ColorChooser.hsv.textAndMnemonic=&HSV
+ColorChooser.hsvHue.textAndMnemonic=Matiz
+ColorChooser.hsvSaturation.textAndMnemonic=Satura\u00E7\u00E3o
+ColorChooser.hsvValue.textAndMnemonic=Valor
+ColorChooser.hsvTransparency.textAndMnemonic=Transpar\u00EAncia
+ColorChooser.hsl.textAndMnemonic=HS&L
+ColorChooser.hslHue.textAndMnemonic=Matiz
+ColorChooser.hslSaturation.textAndMnemonic=Satura\u00E7\u00E3o
+ColorChooser.hslLightness.textAndMnemonic=Clareza
+ColorChooser.hslTransparency.textAndMnemonic=Transpar\u00EAncia
+ColorChooser.rgb.textAndMnemonic=R&GB
+ColorChooser.rgbRed.textAndMnemonic=&Vermelho
+ColorChooser.rgbGreen.textAndMnemonic=&Verde
+ColorChooser.rgbBlue.textAndMnemonic=&Azul
+ColorChooser.rgbAlpha.textAndMnemonic=Alfa
+ColorChooser.rgbHexCode.textAndMnemonic=C\u00F3digo da Cor(&C)
+ColorChooser.cmyk.textAndMnemonic=C&MYK
+ColorChooser.cmykCyan.textAndMnemonic=Ciano
+ColorChooser.cmykMagenta.textAndMnemonic=Magenta
+ColorChooser.cmykYellow.textAndMnemonic=Amarelo
+ColorChooser.cmykBlack.textAndMnemonic=Preto
+ColorChooser.cmykAlpha.textAndMnemonic=Alfa
+
+############ OPTION PANE STRINGS #############
+# We only define mnemonics for YES/NO, but for completeness you can
+# define mnemonics for any of the buttons.
+OptionPane.yesButton.textAndMnemonic=&Sim
+OptionPane.noButton.textAndMnemonic=N\u00E3o(&N)
+OptionPane.okButton.textAndMnemonic=&OK
+OptionPane.cancelButton.textAndMnemonic=&Cancelar
+OptionPane.title.textAndMnemonic=Selecionar uma Op\u00E7\u00E3o
+# Title for the dialog for the showInputDialog methods. Only used if
+# the developer uses one of the variants that doesn't take a title.
+OptionPane.inputDialog.titleAndMnemonic=Entrada
+# Title for the dialog for the showMessageDialog methods. Only used if
+# the developer uses one of the variants that doesn't take a title.
+OptionPane.messageDialog.titleAndMnemonic=Mensagem
+
+############ Printing Dialog Strings ############
+PrintingDialog.titleProgress.textAndMnemonic=Impress\u00E3o
+PrintingDialog.titleAborting.textAndMnemonic=Impress\u00E3o (Abortando)
+
+PrintingDialog.contentInitial.textAndMnemonic=Impress\u00E3o em andamento...
+
+# The following string will be formatted by a MessageFormat
+# and {0} will be replaced by page number being printed
+PrintingDialog.contentProgress.textAndMnemonic=P\u00E1gina impressa {0}...
+
+PrintingDialog.contentAborting.textAndMnemonic=Abortando impress\u00E3o...
+
+PrintingDialog.abortButton.textAndMnemonic=&Abortar
+PrintingDialog.abortButtonToolTip.textAndMnemonic=Abortar Impress\u00E3o
+
+############ Internal Frame Strings ############
+InternalFrame.iconButtonToolTip=Minimizar
+InternalFrame.maxButtonToolTip=Maximizar
+InternalFrame.restoreButtonToolTip=Restaurar
+InternalFrame.closeButtonToolTip=Fechar
+
+############ Internal Frame Title Pane Strings ############
+InternalFrameTitlePane.restoreButton.textAndMnemonic=Restaurar
+InternalFrameTitlePane.moveButton.textAndMnemonic=Mover
+InternalFrameTitlePane.sizeButton.textAndMnemonic=Tamanho
+InternalFrameTitlePane.minimizeButton.textAndMnemonic=Minimizar
+InternalFrameTitlePane.maximizeButton.textAndMnemonic=Maximizar
+InternalFrameTitlePane.closeButton.textAndMnemonic=Fechar
+
+############ Text strings #############
+# Used for html forms
+FormView.submitButton.textAndMnemonic=Submeter Consulta
+FormView.resetButton.textAndMnemonic=Redefinir
+FormView.browseFileButton.textAndMnemonic=Procurar...
+
+############ Abstract Document Strings ############
+AbstractDocument.styleChange.textAndMnemonic=altera\u00E7\u00E3o de estilo
+AbstractDocument.addition.textAndMnemonic=adi\u00E7\u00E3o
+AbstractDocument.deletion.textAndMnemonic=dele\u00E7\u00E3o
+AbstractDocument.undo.textAndMnemonic=Desfazer
+AbstractDocument.redo.textAndMnemonic=Refazer
+
+############ Abstract Button Strings ############
+AbstractButton.click.textAndMnemonic=clicar
+
+############ Abstract Undoable Edit Strings ############
+AbstractUndoableEdit.undo.textAndMnemonic=Desfazer
+AbstractUndoableEdit.redo.textAndMnemonic=Refazer
+
+############ Combo Box Strings ############
+ComboBox.togglePopup.textAndMnemonic=togglePopup
+
+############ Progress Monitor Strings ############
+ProgressMonitor.progress.textAndMnemonic=Progresso...
+
+############ Split Pane Strings ############
+SplitPane.leftButton.textAndMnemonic=bot\u00E3o esquerdo
+SplitPane.rightButton.textAndMnemonic=bot\u00E3o direito
+# Used for Isindex
+IsindexView.prompt=Trata-se de um \u00EDndice pesquis\u00E1vel. Informe as palavras-chave de pesquisa:
+
+############ InternalFrameTitlePane Strings ############
+InternalFrameTitlePane.iconifyButtonAccessibleName=Iconify
+InternalFrameTitlePane.maximizeButtonAccessibleName=Maximizar
+InternalFrameTitlePane.closeButtonAccessibleName=Fechar
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_sv.properties	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_sv.properties	Wed Jul 05 18:14:56 2017 +0200
@@ -1,186 +1,186 @@
-# This properties file is used to create a PropertyResourceBundle
-# It contains Locale specific strings used in Swing
-# Currently, the following components need this for support:
-#
-#    ColorChooser
-#    FileChooser
-#    OptionPane
-#
-# When this file is read in, the strings are put into the
-# defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.
-# This may change in future versions of Swing as we improve localization
-# support.
-#
-#                        MNEMONIC NOTE:
-# Many of strings in this file are used by widgets that have a
-# mnemonic, for example:
-#   ColorChooser.rgbNameTextAndMnemonic=R&GB
-# Indicates that the tab in the ColorChooser for RGB colors will have
-# the text 'RGB', further the mnemonic character will be 'g' and that
-# a decoration will be provided under the 'G'. This will typically
-# look like:  RGB
-#              -
-#
-# One important thing to remember is that the mnemonic MUST exist in
-# the String, if it does not exist you should add text that makes it
-# exist. This will typically take the form 'XXXX (M)' where M is the
-# character for the mnemonic.
-#
-# @author Steve Wilson
-
-############ FILE CHOOSER STRINGS #############
-FileChooser.fileDescription.textAndMnemonic=Generisk fil
-FileChooser.directoryDescription.textAndMnemonic=Katalog
-FileChooser.newFolderError.textAndMnemonic=Fel uppstod n\u00E4r ny mapp skapades
-FileChooser.newFolderErrorSeparator= :
-FileChooser.newFolderParentDoesntExistTitle.textAndMnemonic=Kan inte skapa mappen
-FileChooser.newFolderParentDoesntExist.textAndMnemonic=Kan inte skapa mappen.\n\nSystemet kan inte hitta angiven s\u00F6kv\u00E4g.
-FileChooser.renameErrorTitle.textAndMnemonic=Ett fel intr\u00E4ffade vid f\u00F6rs\u00F6k att \u00E4ndra namn p\u00E5 fil eller mapp
-FileChooser.renameError.textAndMnemonic=Kan inte namn\u00E4ndra {0}
-FileChooser.renameErrorFileExists.textAndMnemonic=Kan inte namn\u00E4ndra {0}: En fil med angivet namn finns redan. Ange ett annat filnamn.
-FileChooser.acceptAllFileFilter.textAndMnemonic=Alla filer
-FileChooser.cancelButton.textAndMnemonic=&Avbryt
-FileChooser.saveButton.textAndMnemonic=&Spara
-FileChooser.openButton.textAndMnemonic=\u00D6ppna(&P)
-FileChooser.saveDialogTitle.textAndMnemonic=Spara
-FileChooser.openDialogTitle.textAndMnemonic=\u00D6ppna
-FileChooser.updateButton.textAndMnemonic=Upp&datera
-FileChooser.helpButton.textAndMnemonic=Hj\u00E4lp(&H)
-FileChooser.directoryOpenButton.textAndMnemonic=\u00D6ppna(&P)
-
-# File Size Units
-FileChooser.fileSizeKiloBytes={0} KB
-FileChooser.fileSizeMegaBytes={0} MB
-FileChooser.fileSizeGigaBytes={0} GB
-
-# These strings are platform dependent not look and feel dependent.
-FileChooser.win32.newFolder=Ny mapp
-FileChooser.win32.newFolder.subsequent=Ny mapp ({0})
-FileChooser.other.newFolder=Ny mapp
-FileChooser.other.newFolder.subsequent=Ny mapp.{0}
-
-
-## file chooser tooltips ###
-FileChooser.cancelButtonToolTip.textAndMnemonic=Avbryt filvalsdialogruta
-FileChooser.saveButtonToolTip.textAndMnemonic=Spara vald fil
-FileChooser.openButtonToolTip.textAndMnemonic=\u00D6ppna vald fil
-FileChooser.updateButtonToolTip.textAndMnemonic=Uppdatera kataloglistan
-FileChooser.helpButtonToolTip.textAndMnemonic=Hj\u00E4lp - Filv\u00E4ljare
-FileChooser.directoryOpenButtonToolTip.textAndMnemonic=\u00D6ppna vald katalog
-
-FileChooser.filesListAccessibleName=Files List
-FileChooser.filesDetailsAccessibleName=Files Details
-
-############ COLOR CHOOSER STRINGS #############
-ColorChooser.preview.textAndMnemonic=Granska
-ColorChooser.ok.textAndMnemonic=OK
-ColorChooser.cancel.textAndMnemonic=Avbryt
-ColorChooser.reset.textAndMnemonic=\u00C5terst\u00E4ll(&T)
-ColorChooser.sample.textAndMnemonic=Exempeltext  Exempeltext
-ColorChooser.swatches.textAndMnemonic=&Prov
-ColorChooser.swatchesRecent.textAndMnemonic=Senaste:
-ColorChooser.hsv.textAndMnemonic=&HSV
-ColorChooser.hsvHue.textAndMnemonic=Nyans
-ColorChooser.hsvSaturation.textAndMnemonic=M\u00E4ttnad
-ColorChooser.hsvValue.textAndMnemonic=V\u00E4rde
-ColorChooser.hsvTransparency.textAndMnemonic=Transparens
-ColorChooser.hsl.textAndMnemonic=HS&L
-ColorChooser.hslHue.textAndMnemonic=Nyans
-ColorChooser.hslSaturation.textAndMnemonic=M\u00E4ttnad
-ColorChooser.hslLightness.textAndMnemonic=Ljusstyrka
-ColorChooser.hslTransparency.textAndMnemonic=Transparens
-ColorChooser.rgb.textAndMnemonic=R&GB
-ColorChooser.rgbRed.textAndMnemonic=R\u00F6d(&D)
-ColorChooser.rgbGreen.textAndMnemonic=Gr\u00F6n(&N)
-ColorChooser.rgbBlue.textAndMnemonic=Bl\u00E5(&B)
-ColorChooser.rgbAlpha.textAndMnemonic=Alfa
-ColorChooser.rgbHexCode.textAndMnemonic=F\u00E4rgkod(&F)
-ColorChooser.cmyk.textAndMnemonic=C&MYK
-ColorChooser.cmykCyan.textAndMnemonic=Cyan
-ColorChooser.cmykMagenta.textAndMnemonic=Magenta
-ColorChooser.cmykYellow.textAndMnemonic=Gul
-ColorChooser.cmykBlack.textAndMnemonic=Svart
-ColorChooser.cmykAlpha.textAndMnemonic=Alfa
-
-############ OPTION PANE STRINGS #############
-# We only define mnemonics for YES/NO, but for completeness you can
-# define mnemonics for any of the buttons.
-OptionPane.yesButton.textAndMnemonic=&Ja
-OptionPane.noButton.textAndMnemonic=&Nej
-OptionPane.okButton.textAndMnemonic=&OK
-OptionPane.cancelButton.textAndMnemonic=&Avbryt
-OptionPane.title.textAndMnemonic=V\u00E4lj ett alternativ
-# Title for the dialog for the showInputDialog methods. Only used if
-# the developer uses one of the variants that doesn't take a title.
-OptionPane.inputDialog.titleAndMnemonic=Indata
-# Title for the dialog for the showMessageDialog methods. Only used if
-# the developer uses one of the variants that doesn't take a title.
-OptionPane.messageDialog.titleAndMnemonic=Meddelande
-
-############ Printing Dialog Strings ############
-PrintingDialog.titleProgress.textAndMnemonic=Skriver ut
-PrintingDialog.titleAborting.textAndMnemonic=Skriver ut (avbryter)
-
-PrintingDialog.contentInitial.textAndMnemonic=Utskrift p\u00E5g\u00E5r...
-
-# The following string will be formatted by a MessageFormat
-# and {0} will be replaced by page number being printed
-PrintingDialog.contentProgress.textAndMnemonic=Utskriven sida {0}...
-
-PrintingDialog.contentAborting.textAndMnemonic=Utskriften avbryts...
-
-PrintingDialog.abortButton.textAndMnemonic=&Avbryt
-PrintingDialog.abortButtonToolTip.textAndMnemonic=Avbryt utskrift
-
-############ Internal Frame Strings ############
-InternalFrame.iconButtonToolTip=Minimera
-InternalFrame.maxButtonToolTip=Maximera
-InternalFrame.restoreButtonToolTip=\u00C5terst\u00E4ll
-InternalFrame.closeButtonToolTip=St\u00E4ng
-
-############ Internal Frame Title Pane Strings ############
-InternalFrameTitlePane.restoreButton.textAndMnemonic=\u00C5terst\u00E4ll
-InternalFrameTitlePane.moveButton.textAndMnemonic=Flytta
-InternalFrameTitlePane.sizeButton.textAndMnemonic=Storlek
-InternalFrameTitlePane.minimizeButton.textAndMnemonic=Minimera
-InternalFrameTitlePane.maximizeButton.textAndMnemonic=Maximera
-InternalFrameTitlePane.closeButton.textAndMnemonic=St\u00E4ng
-
-############ Text strings #############
-# Used for html forms
-FormView.submitButton.textAndMnemonic=Skicka fr\u00E5ga
-FormView.resetButton.textAndMnemonic=\u00C5terst\u00E4ll
-FormView.browseFileButton.textAndMnemonic=Bl\u00E4ddra...
-
-############ Abstract Document Strings ############
-AbstractDocument.styleChange.textAndMnemonic=format\u00E4ndring
-AbstractDocument.addition.textAndMnemonic=till\u00E4gg
-AbstractDocument.deletion.textAndMnemonic=borttagning
-AbstractDocument.undo.textAndMnemonic=\u00C5ngra
-AbstractDocument.redo.textAndMnemonic=G\u00F6r om
-
-############ Abstract Button Strings ############
-AbstractButton.click.textAndMnemonic=klicka
-
-############ Abstract Undoable Edit Strings ############
-AbstractUndoableEdit.undo.textAndMnemonic=\u00C5ngra
-AbstractUndoableEdit.redo.textAndMnemonic=G\u00F6r om
-
-############ Combo Box Strings ############
-ComboBox.togglePopup.textAndMnemonic=v\u00E4xlaPopup
-
-############ Progress Monitor Strings ############
-ProgressMonitor.progress.textAndMnemonic=P\u00E5g\u00E5r...
-
-############ Split Pane Strings ############
-SplitPane.leftButton.textAndMnemonic=v\u00E4nster knapp
-SplitPane.rightButton.textAndMnemonic=h\u00F6ger knapp
-# Used for Isindex
-IsindexView.prompt=Detta \u00E4r ett s\u00F6kbart index. Ange s\u00F6kord:
-
-############ InternalFrameTitlePane Strings ############
-InternalFrameTitlePane.iconifyButtonAccessibleName=Minimera
-InternalFrameTitlePane.maximizeButtonAccessibleName=Maximera
-InternalFrameTitlePane.closeButtonAccessibleName=St\u00E4ng
-
+# This properties file is used to create a PropertyResourceBundle
+# It contains Locale specific strings used in Swing
+# Currently, the following components need this for support:
+#
+#    ColorChooser
+#    FileChooser
+#    OptionPane
+#
+# When this file is read in, the strings are put into the
+# defaults table.  This is an implementation detail of the current
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
+# support.
+#
+#                        MNEMONIC NOTE:
+# Many of strings in this file are used by widgets that have a
+# mnemonic, for example:
+#   ColorChooser.rgbNameTextAndMnemonic=R&GB
+# Indicates that the tab in the ColorChooser for RGB colors will have
+# the text 'RGB', further the mnemonic character will be 'g' and that
+# a decoration will be provided under the 'G'. This will typically
+# look like:  RGB
+#              -
+#
+# One important thing to remember is that the mnemonic MUST exist in
+# the String, if it does not exist you should add text that makes it
+# exist. This will typically take the form 'XXXX (M)' where M is the
+# character for the mnemonic.
+#
+# @author Steve Wilson
+
+############ FILE CHOOSER STRINGS #############
+FileChooser.fileDescription.textAndMnemonic=Generisk fil
+FileChooser.directoryDescription.textAndMnemonic=Katalog
+FileChooser.newFolderError.textAndMnemonic=Fel uppstod n\u00E4r ny mapp skapades
+FileChooser.newFolderErrorSeparator= :
+FileChooser.newFolderParentDoesntExistTitle.textAndMnemonic=Kan inte skapa mappen
+FileChooser.newFolderParentDoesntExist.textAndMnemonic=Kan inte skapa mappen.\n\nSystemet kan inte hitta angiven s\u00F6kv\u00E4g.
+FileChooser.renameErrorTitle.textAndMnemonic=Ett fel intr\u00E4ffade vid f\u00F6rs\u00F6k att \u00E4ndra namn p\u00E5 fil eller mapp
+FileChooser.renameError.textAndMnemonic=Kan inte namn\u00E4ndra {0}
+FileChooser.renameErrorFileExists.textAndMnemonic=Kan inte namn\u00E4ndra {0}: En fil med angivet namn finns redan. Ange ett annat filnamn.
+FileChooser.acceptAllFileFilter.textAndMnemonic=Alla filer
+FileChooser.cancelButton.textAndMnemonic=Avbryt
+FileChooser.saveButton.textAndMnemonic=&Spara
+FileChooser.openButton.textAndMnemonic=\u00D6ppna(&P)
+FileChooser.saveDialogTitle.textAndMnemonic=Spara
+FileChooser.openDialogTitle.textAndMnemonic=\u00D6ppna
+FileChooser.updateButton.textAndMnemonic=Upp&datera
+FileChooser.helpButton.textAndMnemonic=Hj\u00E4lp(&H)
+FileChooser.directoryOpenButton.textAndMnemonic=\u00D6ppna(&P)
+
+# File Size Units
+FileChooser.fileSizeKiloBytes={0} KB
+FileChooser.fileSizeMegaBytes={0} MB
+FileChooser.fileSizeGigaBytes={0} GB
+
+# These strings are platform dependent not look and feel dependent.
+FileChooser.win32.newFolder=Ny mapp
+FileChooser.win32.newFolder.subsequent=Ny mapp ({0})
+FileChooser.other.newFolder=Ny mapp
+FileChooser.other.newFolder.subsequent=Ny mapp.{0}
+
+
+## file chooser tooltips ###
+FileChooser.cancelButtonToolTip.textAndMnemonic=Avbryt filvalsdialogruta
+FileChooser.saveButtonToolTip.textAndMnemonic=Spara vald fil
+FileChooser.openButtonToolTip.textAndMnemonic=\u00D6ppna vald fil
+FileChooser.updateButtonToolTip.textAndMnemonic=Uppdatera kataloglistan
+FileChooser.helpButtonToolTip.textAndMnemonic=Hj\u00E4lp - Filv\u00E4ljare
+FileChooser.directoryOpenButtonToolTip.textAndMnemonic=\u00D6ppna vald katalog
+
+FileChooser.filesListAccessibleName=Files List
+FileChooser.filesDetailsAccessibleName=Files Details
+
+############ COLOR CHOOSER STRINGS #############
+ColorChooser.preview.textAndMnemonic=Granska
+ColorChooser.ok.textAndMnemonic=OK
+ColorChooser.cancel.textAndMnemonic=Avbryt
+ColorChooser.reset.textAndMnemonic=\u00C5terst\u00E4ll(&T)
+ColorChooser.sample.textAndMnemonic=Exempeltext  Exempeltext
+ColorChooser.swatches.textAndMnemonic=&Prov
+ColorChooser.swatchesRecent.textAndMnemonic=Senaste:
+ColorChooser.hsv.textAndMnemonic=&HSV
+ColorChooser.hsvHue.textAndMnemonic=Nyans
+ColorChooser.hsvSaturation.textAndMnemonic=M\u00E4ttnad
+ColorChooser.hsvValue.textAndMnemonic=V\u00E4rde
+ColorChooser.hsvTransparency.textAndMnemonic=Transparens
+ColorChooser.hsl.textAndMnemonic=HS&L
+ColorChooser.hslHue.textAndMnemonic=Nyans
+ColorChooser.hslSaturation.textAndMnemonic=M\u00E4ttnad
+ColorChooser.hslLightness.textAndMnemonic=Ljusstyrka
+ColorChooser.hslTransparency.textAndMnemonic=Transparens
+ColorChooser.rgb.textAndMnemonic=R&GB
+ColorChooser.rgbRed.textAndMnemonic=R\u00F6d(&D)
+ColorChooser.rgbGreen.textAndMnemonic=Gr\u00F6n(&N)
+ColorChooser.rgbBlue.textAndMnemonic=Bl\u00E5(&B)
+ColorChooser.rgbAlpha.textAndMnemonic=Alfa
+ColorChooser.rgbHexCode.textAndMnemonic=F\u00E4rgkod(&F)
+ColorChooser.cmyk.textAndMnemonic=C&MYK
+ColorChooser.cmykCyan.textAndMnemonic=Cyan
+ColorChooser.cmykMagenta.textAndMnemonic=Magenta
+ColorChooser.cmykYellow.textAndMnemonic=Gul
+ColorChooser.cmykBlack.textAndMnemonic=Svart
+ColorChooser.cmykAlpha.textAndMnemonic=Alfa
+
+############ OPTION PANE STRINGS #############
+# We only define mnemonics for YES/NO, but for completeness you can
+# define mnemonics for any of the buttons.
+OptionPane.yesButton.textAndMnemonic=&Ja
+OptionPane.noButton.textAndMnemonic=&Nej
+OptionPane.okButton.textAndMnemonic=&OK
+OptionPane.cancelButton.textAndMnemonic=&Avbryt
+OptionPane.title.textAndMnemonic=V\u00E4lj ett alternativ
+# Title for the dialog for the showInputDialog methods. Only used if
+# the developer uses one of the variants that doesn't take a title.
+OptionPane.inputDialog.titleAndMnemonic=Indata
+# Title for the dialog for the showMessageDialog methods. Only used if
+# the developer uses one of the variants that doesn't take a title.
+OptionPane.messageDialog.titleAndMnemonic=Meddelande
+
+############ Printing Dialog Strings ############
+PrintingDialog.titleProgress.textAndMnemonic=Skriver ut
+PrintingDialog.titleAborting.textAndMnemonic=Skriver ut (avbryter)
+
+PrintingDialog.contentInitial.textAndMnemonic=Utskrift p\u00E5g\u00E5r...
+
+# The following string will be formatted by a MessageFormat
+# and {0} will be replaced by page number being printed
+PrintingDialog.contentProgress.textAndMnemonic=Utskriven sida {0}...
+
+PrintingDialog.contentAborting.textAndMnemonic=Utskriften avbryts...
+
+PrintingDialog.abortButton.textAndMnemonic=&Avbryt
+PrintingDialog.abortButtonToolTip.textAndMnemonic=Avbryt utskrift
+
+############ Internal Frame Strings ############
+InternalFrame.iconButtonToolTip=Minimera
+InternalFrame.maxButtonToolTip=Maximera
+InternalFrame.restoreButtonToolTip=\u00C5terst\u00E4ll
+InternalFrame.closeButtonToolTip=St\u00E4ng
+
+############ Internal Frame Title Pane Strings ############
+InternalFrameTitlePane.restoreButton.textAndMnemonic=\u00C5terst\u00E4ll
+InternalFrameTitlePane.moveButton.textAndMnemonic=Flytta
+InternalFrameTitlePane.sizeButton.textAndMnemonic=Storlek
+InternalFrameTitlePane.minimizeButton.textAndMnemonic=Minimera
+InternalFrameTitlePane.maximizeButton.textAndMnemonic=Maximera
+InternalFrameTitlePane.closeButton.textAndMnemonic=St\u00E4ng
+
+############ Text strings #############
+# Used for html forms
+FormView.submitButton.textAndMnemonic=Skicka fr\u00E5ga
+FormView.resetButton.textAndMnemonic=\u00C5terst\u00E4ll
+FormView.browseFileButton.textAndMnemonic=Bl\u00E4ddra...
+
+############ Abstract Document Strings ############
+AbstractDocument.styleChange.textAndMnemonic=format\u00E4ndring
+AbstractDocument.addition.textAndMnemonic=till\u00E4gg
+AbstractDocument.deletion.textAndMnemonic=borttagning
+AbstractDocument.undo.textAndMnemonic=\u00C5ngra
+AbstractDocument.redo.textAndMnemonic=G\u00F6r om
+
+############ Abstract Button Strings ############
+AbstractButton.click.textAndMnemonic=klicka
+
+############ Abstract Undoable Edit Strings ############
+AbstractUndoableEdit.undo.textAndMnemonic=\u00C5ngra
+AbstractUndoableEdit.redo.textAndMnemonic=G\u00F6r om
+
+############ Combo Box Strings ############
+ComboBox.togglePopup.textAndMnemonic=v\u00E4xlaPopup
+
+############ Progress Monitor Strings ############
+ProgressMonitor.progress.textAndMnemonic=P\u00E5g\u00E5r...
+
+############ Split Pane Strings ############
+SplitPane.leftButton.textAndMnemonic=v\u00E4nster knapp
+SplitPane.rightButton.textAndMnemonic=h\u00F6ger knapp
+# Used for Isindex
+IsindexView.prompt=Detta \u00E4r ett s\u00F6kbart index. Ange s\u00F6kord:
+
+############ InternalFrameTitlePane Strings ############
+InternalFrameTitlePane.iconifyButtonAccessibleName=Minimera
+InternalFrameTitlePane.maximizeButtonAccessibleName=Maximera
+InternalFrameTitlePane.closeButtonAccessibleName=St\u00E4ng
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_CN.properties	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_CN.properties	Wed Jul 05 18:14:56 2017 +0200
@@ -1,186 +1,186 @@
-# This properties file is used to create a PropertyResourceBundle
-# It contains Locale specific strings used in Swing
-# Currently, the following components need this for support:
-#
-#    ColorChooser
-#    FileChooser
-#    OptionPane
-#
-# When this file is read in, the strings are put into the
-# defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.
-# This may change in future versions of Swing as we improve localization
-# support.
-#
-#                        MNEMONIC NOTE:
-# Many of strings in this file are used by widgets that have a
-# mnemonic, for example:
-#   ColorChooser.rgbNameTextAndMnemonic=R&GB
-# Indicates that the tab in the ColorChooser for RGB colors will have
-# the text 'RGB', further the mnemonic character will be 'g' and that
-# a decoration will be provided under the 'G'. This will typically
-# look like:  RGB
-#              -
-#
-# One important thing to remember is that the mnemonic MUST exist in
-# the String, if it does not exist you should add text that makes it
-# exist. This will typically take the form 'XXXX (M)' where M is the
-# character for the mnemonic.
-#
-# @author Steve Wilson
-
-############ FILE CHOOSER STRINGS #############
-FileChooser.fileDescription.textAndMnemonic=\u666E\u901A\u7684\u6587\u4EF6
-FileChooser.directoryDescription.textAndMnemonic=\u76EE\u5F55
-FileChooser.newFolderError.textAndMnemonic=\u521B\u5EFA\u65B0\u7684\u6587\u4EF6\u5939\u65F6\u51FA\u9519
-FileChooser.newFolderErrorSeparator= :
-FileChooser.newFolderParentDoesntExistTitle.textAndMnemonic=\u65E0\u6CD5\u521B\u5EFA\u6587\u4EF6\u5939
-FileChooser.newFolderParentDoesntExist.textAndMnemonic=\u65E0\u6CD5\u521B\u5EFA\u6587\u4EF6\u5939\u3002\n\n\u7CFB\u7EDF\u627E\u4E0D\u5230\u6307\u5B9A\u7684\u8DEF\u5F84\u3002
-FileChooser.renameErrorTitle.textAndMnemonic=\u91CD\u547D\u540D\u6587\u4EF6\u6216\u6587\u4EF6\u5939\u65F6\u51FA\u9519
-FileChooser.renameError.textAndMnemonic=\u65E0\u6CD5\u91CD\u547D\u540D{0}
-FileChooser.renameErrorFileExists.textAndMnemonic=\u65E0\u6CD5\u91CD\u547D\u540D{0}: \u5DF2\u5B58\u5728\u5177\u6709\u6240\u6307\u5B9A\u540D\u79F0\u7684\u6587\u4EF6\u3002\u8BF7\u6307\u5B9A\u5176\u4ED6\u6587\u4EF6\u540D\u3002
-FileChooser.acceptAllFileFilter.textAndMnemonic=\u6240\u6709\u6587\u4EF6
-FileChooser.cancelButton.textAndMnemonic=\u53D6\u6D88(&C)
-FileChooser.saveButton.textAndMnemonic=\u4FDD\u5B58(&S)
-FileChooser.openButton.textAndMnemonic=\u6253\u5F00(&O)
-FileChooser.saveDialogTitle.textAndMnemonic=\u4FDD\u5B58
-FileChooser.openDialogTitle.textAndMnemonic=\u6253\u5F00
-FileChooser.updateButton.textAndMnemonic=\u66F4\u65B0(&U)
-FileChooser.helpButton.textAndMnemonic=\u5E2E\u52A9(&H)
-FileChooser.directoryOpenButton.textAndMnemonic=\u6253\u5F00(&O)
-
-# File Size Units
-FileChooser.fileSizeKiloBytes={0} KB
-FileChooser.fileSizeMegaBytes={0} MB
-FileChooser.fileSizeGigaBytes={0} GB
-
-# These strings are platform dependent not look and feel dependent.
-FileChooser.win32.newFolder=\u65B0\u5EFA\u6587\u4EF6\u5939
-FileChooser.win32.newFolder.subsequent=\u65B0\u5EFA\u6587\u4EF6\u5939 ({0})
-FileChooser.other.newFolder=NewFolder
-FileChooser.other.newFolder.subsequent=NewFolder.{0}
-
-
-## file chooser tooltips ###
-FileChooser.cancelButtonToolTip.textAndMnemonic=\u4E2D\u6B62\u6587\u4EF6\u9009\u62E9\u5668\u5BF9\u8BDD\u6846
-FileChooser.saveButtonToolTip.textAndMnemonic=\u4FDD\u5B58\u6240\u9009\u6587\u4EF6
-FileChooser.openButtonToolTip.textAndMnemonic=\u6253\u5F00\u6240\u9009\u6587\u4EF6
-FileChooser.updateButtonToolTip.textAndMnemonic=\u66F4\u65B0\u76EE\u5F55\u5217\u8868
-FileChooser.helpButtonToolTip.textAndMnemonic=FileChooser \u5E2E\u52A9
-FileChooser.directoryOpenButtonToolTip.textAndMnemonic=\u6253\u5F00\u9009\u62E9\u7684\u76EE\u5F55
-
-FileChooser.filesListAccessibleName=Files List
-FileChooser.filesDetailsAccessibleName=Files Details
-
-############ COLOR CHOOSER STRINGS #############
-ColorChooser.preview.textAndMnemonic=\u9884\u89C8
-ColorChooser.ok.textAndMnemonic=\u786E\u5B9A
-ColorChooser.cancel.textAndMnemonic=\u53D6\u6D88
-ColorChooser.reset.textAndMnemonic=\u91CD\u7F6E(&R)
-ColorChooser.sample.textAndMnemonic=\u793A\u4F8B\u6587\u672C  \u793A\u4F8B\u6587\u672C
-ColorChooser.swatches.textAndMnemonic=\u793A\u4F8B(&S)
-ColorChooser.swatchesRecent.textAndMnemonic=\u6700\u8FD1:
-ColorChooser.hsv.textAndMnemonic=&HSV
-ColorChooser.hsvHue.textAndMnemonic=\u8272\u8C03
-ColorChooser.hsvSaturation.textAndMnemonic=\u9971\u548C\u5EA6
-ColorChooser.hsvValue.textAndMnemonic=\u503C
-ColorChooser.hsvTransparency.textAndMnemonic=\u900F\u660E\u5EA6
-ColorChooser.hsl.textAndMnemonic=HS&L
-ColorChooser.hslHue.textAndMnemonic=\u8272\u8C03
-ColorChooser.hslSaturation.textAndMnemonic=\u9971\u548C\u5EA6
-ColorChooser.hslLightness.textAndMnemonic=\u4EAE\u5EA6
-ColorChooser.hslTransparency.textAndMnemonic=\u900F\u660E\u5EA6
-ColorChooser.rgb.textAndMnemonic=R&GB
-ColorChooser.rgbRed.textAndMnemonic=\u7EA2\u8272(&D)
-ColorChooser.rgbGreen.textAndMnemonic=\u7EFF\u8272(&N)
-ColorChooser.rgbBlue.textAndMnemonic=\u84DD\u8272(&B)
-ColorChooser.rgbAlpha.textAndMnemonic=Alpha
-ColorChooser.rgbHexCode.textAndMnemonic=\u989C\u8272\u4EE3\u7801(&C)
-ColorChooser.cmyk.textAndMnemonic=C&MYK
-ColorChooser.cmykCyan.textAndMnemonic=\u9752\u8272
-ColorChooser.cmykMagenta.textAndMnemonic=\u7D2B\u7EA2\u8272
-ColorChooser.cmykYellow.textAndMnemonic=\u9EC4\u8272
-ColorChooser.cmykBlack.textAndMnemonic=\u9ED1\u8272
-ColorChooser.cmykAlpha.textAndMnemonic=Alpha
-
-############ OPTION PANE STRINGS #############
-# We only define mnemonics for YES/NO, but for completeness you can
-# define mnemonics for any of the buttons.
-OptionPane.yesButton.textAndMnemonic=\u662F(&Y)
-OptionPane.noButton.textAndMnemonic=\u5426(&N)
-OptionPane.okButton.textAndMnemonic=\u786E\u5B9A(&O)
-OptionPane.cancelButton.textAndMnemonic=\u53D6\u6D88
-OptionPane.title.textAndMnemonic=\u9009\u62E9\u4E00\u4E2A\u9009\u9879
-# Title for the dialog for the showInputDialog methods. Only used if
-# the developer uses one of the variants that doesn't take a title.
-OptionPane.inputDialog.titleAndMnemonic=\u8F93\u5165
-# Title for the dialog for the showMessageDialog methods. Only used if
-# the developer uses one of the variants that doesn't take a title.
-OptionPane.messageDialog.titleAndMnemonic=\u6D88\u606F
-
-############ Printing Dialog Strings ############
-PrintingDialog.titleProgress.textAndMnemonic=\u6253\u5370
-PrintingDialog.titleAborting.textAndMnemonic=\u6253\u5370 (\u6B63\u5728\u4E2D\u6B62)
-
-PrintingDialog.contentInitial.textAndMnemonic=\u6B63\u5728\u8FDB\u884C\u6253\u5370...
-
-# The following string will be formatted by a MessageFormat
-# and {0} will be replaced by page number being printed
-PrintingDialog.contentProgress.textAndMnemonic=\u5DF2\u6253\u5370\u9875 {0}...
-
-PrintingDialog.contentAborting.textAndMnemonic=\u6B63\u5728\u4E2D\u6B62\u6253\u5370...
-
-PrintingDialog.abortButton.textAndMnemonic=\u4E2D\u6B62(&A)
-PrintingDialog.abortButtonToolTip.textAndMnemonic=\u4E2D\u6B62\u6253\u5370
-
-############ Internal Frame Strings ############
-InternalFrame.iconButtonToolTip=\u6700\u5C0F\u5316
-InternalFrame.maxButtonToolTip=\u6700\u5927\u5316
-InternalFrame.restoreButtonToolTip=\u8FD8\u539F
-InternalFrame.closeButtonToolTip=\u5173\u95ED
-
-############ Internal Frame Title Pane Strings ############
-InternalFrameTitlePane.restoreButton.textAndMnemonic=\u8FD8\u539F
-InternalFrameTitlePane.moveButton.textAndMnemonic=\u79FB\u52A8
-InternalFrameTitlePane.sizeButton.textAndMnemonic=\u5927\u5C0F
-InternalFrameTitlePane.minimizeButton.textAndMnemonic=\u6700\u5C0F\u5316
-InternalFrameTitlePane.maximizeButton.textAndMnemonic=\u6700\u5927\u5316
-InternalFrameTitlePane.closeButton.textAndMnemonic=\u5173\u95ED
-
-############ Text strings #############
-# Used for html forms
-FormView.submitButton.textAndMnemonic=\u63D0\u4EA4\u67E5\u8BE2
-FormView.resetButton.textAndMnemonic=\u91CD\u8BBE
-FormView.browseFileButton.textAndMnemonic=\u6D4F\u89C8...
-
-############ Abstract Document Strings ############
-AbstractDocument.styleChange.textAndMnemonic=\u6837\u5F0F\u66F4\u6539
-AbstractDocument.addition.textAndMnemonic=\u6DFB\u52A0
-AbstractDocument.deletion.textAndMnemonic=\u5220\u9664
-AbstractDocument.undo.textAndMnemonic=\u64A4\u6D88
-AbstractDocument.redo.textAndMnemonic=\u91CD\u505A
-
-############ Abstract Button Strings ############
-AbstractButton.click.textAndMnemonic=\u5355\u51FB
-
-############ Abstract Undoable Edit Strings ############
-AbstractUndoableEdit.undo.textAndMnemonic=\u64A4\u6D88
-AbstractUndoableEdit.redo.textAndMnemonic=\u91CD\u505A
-
-############ Combo Box Strings ############
-ComboBox.togglePopup.textAndMnemonic=togglePopup
-
-############ Progress Monitor Strings ############
-ProgressMonitor.progress.textAndMnemonic=\u8FDB\u5EA6...
-
-############ Split Pane Strings ############
-SplitPane.leftButton.textAndMnemonic=\u5DE6\u952E
-SplitPane.rightButton.textAndMnemonic=\u53F3\u952E
-# Used for Isindex
-IsindexView.prompt=\u8FD9\u662F\u53EF\u641C\u7D22\u7D22\u5F15\u3002\u8BF7\u8F93\u5165\u641C\u7D22\u5173\u952E\u5B57:
-
-############ InternalFrameTitlePane Strings ############
-InternalFrameTitlePane.iconifyButtonAccessibleName=\u56FE\u6807\u5316
-InternalFrameTitlePane.maximizeButtonAccessibleName=\u6700\u5927\u5316
-InternalFrameTitlePane.closeButtonAccessibleName=\u5173\u95ED
-
+# This properties file is used to create a PropertyResourceBundle
+# It contains Locale specific strings used in Swing
+# Currently, the following components need this for support:
+#
+#    ColorChooser
+#    FileChooser
+#    OptionPane
+#
+# When this file is read in, the strings are put into the
+# defaults table.  This is an implementation detail of the current
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
+# support.
+#
+#                        MNEMONIC NOTE:
+# Many of strings in this file are used by widgets that have a
+# mnemonic, for example:
+#   ColorChooser.rgbNameTextAndMnemonic=R&GB
+# Indicates that the tab in the ColorChooser for RGB colors will have
+# the text 'RGB', further the mnemonic character will be 'g' and that
+# a decoration will be provided under the 'G'. This will typically
+# look like:  RGB
+#              -
+#
+# One important thing to remember is that the mnemonic MUST exist in
+# the String, if it does not exist you should add text that makes it
+# exist. This will typically take the form 'XXXX (M)' where M is the
+# character for the mnemonic.
+#
+# @author Steve Wilson
+
+############ FILE CHOOSER STRINGS #############
+FileChooser.fileDescription.textAndMnemonic=\u666E\u901A\u7684\u6587\u4EF6
+FileChooser.directoryDescription.textAndMnemonic=\u76EE\u5F55
+FileChooser.newFolderError.textAndMnemonic=\u521B\u5EFA\u65B0\u7684\u6587\u4EF6\u5939\u65F6\u51FA\u9519
+FileChooser.newFolderErrorSeparator= :
+FileChooser.newFolderParentDoesntExistTitle.textAndMnemonic=\u65E0\u6CD5\u521B\u5EFA\u6587\u4EF6\u5939
+FileChooser.newFolderParentDoesntExist.textAndMnemonic=\u65E0\u6CD5\u521B\u5EFA\u6587\u4EF6\u5939\u3002\n\n\u7CFB\u7EDF\u627E\u4E0D\u5230\u6307\u5B9A\u7684\u8DEF\u5F84\u3002
+FileChooser.renameErrorTitle.textAndMnemonic=\u91CD\u547D\u540D\u6587\u4EF6\u6216\u6587\u4EF6\u5939\u65F6\u51FA\u9519
+FileChooser.renameError.textAndMnemonic=\u65E0\u6CD5\u91CD\u547D\u540D{0}
+FileChooser.renameErrorFileExists.textAndMnemonic=\u65E0\u6CD5\u91CD\u547D\u540D{0}: \u5DF2\u5B58\u5728\u5177\u6709\u6240\u6307\u5B9A\u540D\u79F0\u7684\u6587\u4EF6\u3002\u8BF7\u6307\u5B9A\u5176\u4ED6\u6587\u4EF6\u540D\u3002
+FileChooser.acceptAllFileFilter.textAndMnemonic=\u6240\u6709\u6587\u4EF6
+FileChooser.cancelButton.textAndMnemonic=\u53D6\u6D88
+FileChooser.saveButton.textAndMnemonic=\u4FDD\u5B58(&S)
+FileChooser.openButton.textAndMnemonic=\u6253\u5F00(&O)
+FileChooser.saveDialogTitle.textAndMnemonic=\u4FDD\u5B58
+FileChooser.openDialogTitle.textAndMnemonic=\u6253\u5F00
+FileChooser.updateButton.textAndMnemonic=\u66F4\u65B0(&U)
+FileChooser.helpButton.textAndMnemonic=\u5E2E\u52A9(&H)
+FileChooser.directoryOpenButton.textAndMnemonic=\u6253\u5F00(&O)
+
+# File Size Units
+FileChooser.fileSizeKiloBytes={0} KB
+FileChooser.fileSizeMegaBytes={0} MB
+FileChooser.fileSizeGigaBytes={0} GB
+
+# These strings are platform dependent not look and feel dependent.
+FileChooser.win32.newFolder=\u65B0\u5EFA\u6587\u4EF6\u5939
+FileChooser.win32.newFolder.subsequent=\u65B0\u5EFA\u6587\u4EF6\u5939 ({0})
+FileChooser.other.newFolder=NewFolder
+FileChooser.other.newFolder.subsequent=NewFolder.{0}
+
+
+## file chooser tooltips ###
+FileChooser.cancelButtonToolTip.textAndMnemonic=\u4E2D\u6B62\u6587\u4EF6\u9009\u62E9\u5668\u5BF9\u8BDD\u6846
+FileChooser.saveButtonToolTip.textAndMnemonic=\u4FDD\u5B58\u6240\u9009\u6587\u4EF6
+FileChooser.openButtonToolTip.textAndMnemonic=\u6253\u5F00\u6240\u9009\u6587\u4EF6
+FileChooser.updateButtonToolTip.textAndMnemonic=\u66F4\u65B0\u76EE\u5F55\u5217\u8868
+FileChooser.helpButtonToolTip.textAndMnemonic=FileChooser \u5E2E\u52A9
+FileChooser.directoryOpenButtonToolTip.textAndMnemonic=\u6253\u5F00\u9009\u62E9\u7684\u76EE\u5F55
+
+FileChooser.filesListAccessibleName=Files List
+FileChooser.filesDetailsAccessibleName=Files Details
+
+############ COLOR CHOOSER STRINGS #############
+ColorChooser.preview.textAndMnemonic=\u9884\u89C8
+ColorChooser.ok.textAndMnemonic=\u786E\u5B9A
+ColorChooser.cancel.textAndMnemonic=\u53D6\u6D88
+ColorChooser.reset.textAndMnemonic=\u91CD\u7F6E(&R)
+ColorChooser.sample.textAndMnemonic=\u793A\u4F8B\u6587\u672C  \u793A\u4F8B\u6587\u672C
+ColorChooser.swatches.textAndMnemonic=\u793A\u4F8B(&S)
+ColorChooser.swatchesRecent.textAndMnemonic=\u6700\u8FD1:
+ColorChooser.hsv.textAndMnemonic=&HSV
+ColorChooser.hsvHue.textAndMnemonic=\u8272\u8C03
+ColorChooser.hsvSaturation.textAndMnemonic=\u9971\u548C\u5EA6
+ColorChooser.hsvValue.textAndMnemonic=\u503C
+ColorChooser.hsvTransparency.textAndMnemonic=\u900F\u660E\u5EA6
+ColorChooser.hsl.textAndMnemonic=HS&L
+ColorChooser.hslHue.textAndMnemonic=\u8272\u8C03
+ColorChooser.hslSaturation.textAndMnemonic=\u9971\u548C\u5EA6
+ColorChooser.hslLightness.textAndMnemonic=\u4EAE\u5EA6
+ColorChooser.hslTransparency.textAndMnemonic=\u900F\u660E\u5EA6
+ColorChooser.rgb.textAndMnemonic=R&GB
+ColorChooser.rgbRed.textAndMnemonic=\u7EA2\u8272(&D)
+ColorChooser.rgbGreen.textAndMnemonic=\u7EFF\u8272(&N)
+ColorChooser.rgbBlue.textAndMnemonic=\u84DD\u8272(&B)
+ColorChooser.rgbAlpha.textAndMnemonic=Alpha
+ColorChooser.rgbHexCode.textAndMnemonic=\u989C\u8272\u4EE3\u7801(&C)
+ColorChooser.cmyk.textAndMnemonic=C&MYK
+ColorChooser.cmykCyan.textAndMnemonic=\u9752\u8272
+ColorChooser.cmykMagenta.textAndMnemonic=\u7D2B\u7EA2\u8272
+ColorChooser.cmykYellow.textAndMnemonic=\u9EC4\u8272
+ColorChooser.cmykBlack.textAndMnemonic=\u9ED1\u8272
+ColorChooser.cmykAlpha.textAndMnemonic=Alpha
+
+############ OPTION PANE STRINGS #############
+# We only define mnemonics for YES/NO, but for completeness you can
+# define mnemonics for any of the buttons.
+OptionPane.yesButton.textAndMnemonic=\u662F(&Y)
+OptionPane.noButton.textAndMnemonic=\u5426(&N)
+OptionPane.okButton.textAndMnemonic=\u786E\u5B9A(&O)
+OptionPane.cancelButton.textAndMnemonic=\u53D6\u6D88
+OptionPane.title.textAndMnemonic=\u9009\u62E9\u4E00\u4E2A\u9009\u9879
+# Title for the dialog for the showInputDialog methods. Only used if
+# the developer uses one of the variants that doesn't take a title.
+OptionPane.inputDialog.titleAndMnemonic=\u8F93\u5165
+# Title for the dialog for the showMessageDialog methods. Only used if
+# the developer uses one of the variants that doesn't take a title.
+OptionPane.messageDialog.titleAndMnemonic=\u6D88\u606F
+
+############ Printing Dialog Strings ############
+PrintingDialog.titleProgress.textAndMnemonic=\u6253\u5370
+PrintingDialog.titleAborting.textAndMnemonic=\u6253\u5370 (\u6B63\u5728\u4E2D\u6B62)
+
+PrintingDialog.contentInitial.textAndMnemonic=\u6B63\u5728\u8FDB\u884C\u6253\u5370...
+
+# The following string will be formatted by a MessageFormat
+# and {0} will be replaced by page number being printed
+PrintingDialog.contentProgress.textAndMnemonic=\u5DF2\u6253\u5370\u9875 {0}...
+
+PrintingDialog.contentAborting.textAndMnemonic=\u6B63\u5728\u4E2D\u6B62\u6253\u5370...
+
+PrintingDialog.abortButton.textAndMnemonic=\u4E2D\u6B62(&A)
+PrintingDialog.abortButtonToolTip.textAndMnemonic=\u4E2D\u6B62\u6253\u5370
+
+############ Internal Frame Strings ############
+InternalFrame.iconButtonToolTip=\u6700\u5C0F\u5316
+InternalFrame.maxButtonToolTip=\u6700\u5927\u5316
+InternalFrame.restoreButtonToolTip=\u8FD8\u539F
+InternalFrame.closeButtonToolTip=\u5173\u95ED
+
+############ Internal Frame Title Pane Strings ############
+InternalFrameTitlePane.restoreButton.textAndMnemonic=\u8FD8\u539F
+InternalFrameTitlePane.moveButton.textAndMnemonic=\u79FB\u52A8
+InternalFrameTitlePane.sizeButton.textAndMnemonic=\u5927\u5C0F
+InternalFrameTitlePane.minimizeButton.textAndMnemonic=\u6700\u5C0F\u5316
+InternalFrameTitlePane.maximizeButton.textAndMnemonic=\u6700\u5927\u5316
+InternalFrameTitlePane.closeButton.textAndMnemonic=\u5173\u95ED
+
+############ Text strings #############
+# Used for html forms
+FormView.submitButton.textAndMnemonic=\u63D0\u4EA4\u67E5\u8BE2
+FormView.resetButton.textAndMnemonic=\u91CD\u8BBE
+FormView.browseFileButton.textAndMnemonic=\u6D4F\u89C8...
+
+############ Abstract Document Strings ############
+AbstractDocument.styleChange.textAndMnemonic=\u6837\u5F0F\u66F4\u6539
+AbstractDocument.addition.textAndMnemonic=\u6DFB\u52A0
+AbstractDocument.deletion.textAndMnemonic=\u5220\u9664
+AbstractDocument.undo.textAndMnemonic=\u64A4\u6D88
+AbstractDocument.redo.textAndMnemonic=\u91CD\u505A
+
+############ Abstract Button Strings ############
+AbstractButton.click.textAndMnemonic=\u5355\u51FB
+
+############ Abstract Undoable Edit Strings ############
+AbstractUndoableEdit.undo.textAndMnemonic=\u64A4\u6D88
+AbstractUndoableEdit.redo.textAndMnemonic=\u91CD\u505A
+
+############ Combo Box Strings ############
+ComboBox.togglePopup.textAndMnemonic=togglePopup
+
+############ Progress Monitor Strings ############
+ProgressMonitor.progress.textAndMnemonic=\u8FDB\u5EA6...
+
+############ Split Pane Strings ############
+SplitPane.leftButton.textAndMnemonic=\u5DE6\u952E
+SplitPane.rightButton.textAndMnemonic=\u53F3\u952E
+# Used for Isindex
+IsindexView.prompt=\u8FD9\u662F\u53EF\u641C\u7D22\u7D22\u5F15\u3002\u8BF7\u8F93\u5165\u641C\u7D22\u5173\u952E\u5B57:
+
+############ InternalFrameTitlePane Strings ############
+InternalFrameTitlePane.iconifyButtonAccessibleName=\u56FE\u6807\u5316
+InternalFrameTitlePane.maximizeButtonAccessibleName=\u6700\u5927\u5316
+InternalFrameTitlePane.closeButtonAccessibleName=\u5173\u95ED
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_TW.properties	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_TW.properties	Wed Jul 05 18:14:56 2017 +0200
@@ -1,186 +1,186 @@
-# This properties file is used to create a PropertyResourceBundle
-# It contains Locale specific strings used in Swing
-# Currently, the following components need this for support:
-#
-#    ColorChooser
-#    FileChooser
-#    OptionPane
-#
-# When this file is read in, the strings are put into the
-# defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.
-# This may change in future versions of Swing as we improve localization
-# support.
-#
-#                        MNEMONIC NOTE:
-# Many of strings in this file are used by widgets that have a
-# mnemonic, for example:
-#   ColorChooser.rgbNameTextAndMnemonic=R&GB
-# Indicates that the tab in the ColorChooser for RGB colors will have
-# the text 'RGB', further the mnemonic character will be 'g' and that
-# a decoration will be provided under the 'G'. This will typically
-# look like:  RGB
-#              -
-#
-# One important thing to remember is that the mnemonic MUST exist in
-# the String, if it does not exist you should add text that makes it
-# exist. This will typically take the form 'XXXX (M)' where M is the
-# character for the mnemonic.
-#
-# @author Steve Wilson
-
-############ FILE CHOOSER STRINGS #############
-FileChooser.fileDescription.textAndMnemonic=\u4E00\u822C\u6A94\u6848
-FileChooser.directoryDescription.textAndMnemonic=\u76EE\u9304
-FileChooser.newFolderError.textAndMnemonic=\u5EFA\u7ACB\u65B0\u8CC7\u6599\u593E\u6642\u767C\u751F\u932F\u8AA4
-FileChooser.newFolderErrorSeparator= :
-FileChooser.newFolderParentDoesntExistTitle.textAndMnemonic=\u7121\u6CD5\u5EFA\u7ACB\u8CC7\u6599\u593E
-FileChooser.newFolderParentDoesntExist.textAndMnemonic=\u7121\u6CD5\u5EFA\u7ACB\u8CC7\u6599\u593E\u3002\n\n\u7CFB\u7D71\u627E\u4E0D\u5230\u6307\u5B9A\u7684\u8DEF\u5F91\u3002
-FileChooser.renameErrorTitle.textAndMnemonic=\u91CD\u65B0\u547D\u540D\u6A94\u6848\u6216\u8CC7\u6599\u593E\u6642\u767C\u751F\u932F\u8AA4\u3002
-FileChooser.renameError.textAndMnemonic=\u7121\u6CD5\u91CD\u65B0\u547D\u540D {0}
-FileChooser.renameErrorFileExists.textAndMnemonic=\u7121\u6CD5\u91CD\u65B0\u547D\u540D {0}: \u5DF2\u7D93\u5B58\u5728\u60A8\u6240\u6307\u5B9A\u540D\u7A31\u7684\u6A94\u6848\u3002\u8ACB\u6307\u5B9A\u4E0D\u540C\u7684\u540D\u7A31\u3002
-FileChooser.acceptAllFileFilter.textAndMnemonic=\u6240\u6709\u6A94\u6848
-FileChooser.cancelButton.textAndMnemonic=\u53D6\u6D88(&C)
-FileChooser.saveButton.textAndMnemonic=\u5132\u5B58(&S)
-FileChooser.openButton.textAndMnemonic=\u958B\u555F(&O)
-FileChooser.saveDialogTitle.textAndMnemonic=\u5132\u5B58
-FileChooser.openDialogTitle.textAndMnemonic=\u958B\u555F
-FileChooser.updateButton.textAndMnemonic=\u66F4\u65B0(&U)
-FileChooser.helpButton.textAndMnemonic=\u8AAA\u660E(&H)
-FileChooser.directoryOpenButton.textAndMnemonic=\u958B\u555F(&O)
-
-# File Size Units
-FileChooser.fileSizeKiloBytes={0} KB
-FileChooser.fileSizeMegaBytes={0} MB
-FileChooser.fileSizeGigaBytes={0} GB
-
-# These strings are platform dependent not look and feel dependent.
-FileChooser.win32.newFolder=\u65B0\u8CC7\u6599\u593E
-FileChooser.win32.newFolder.subsequent=\u65B0\u8CC7\u6599\u593E ({0})
-FileChooser.other.newFolder=\u65B0\u8CC7\u6599\u593E
-FileChooser.other.newFolder.subsequent=\u65B0\u8CC7\u6599\u593E.{0}
-
-
-## file chooser tooltips ###
-FileChooser.cancelButtonToolTip.textAndMnemonic=\u4E2D\u6B62\u6A94\u6848\u9078\u64C7\u5668\u5C0D\u8A71\u65B9\u584A
-FileChooser.saveButtonToolTip.textAndMnemonic=\u5132\u5B58\u9078\u53D6\u7684\u6A94\u6848
-FileChooser.openButtonToolTip.textAndMnemonic=\u958B\u555F\u9078\u53D6\u7684\u6A94\u6848
-FileChooser.updateButtonToolTip.textAndMnemonic=\u66F4\u65B0\u76EE\u9304\u6E05\u55AE
-FileChooser.helpButtonToolTip.textAndMnemonic=\u300C\u6A94\u6848\u9078\u64C7\u5668\u300D\u8AAA\u660E
-FileChooser.directoryOpenButtonToolTip.textAndMnemonic=\u958B\u555F\u9078\u53D6\u7684\u76EE\u9304
-
-FileChooser.filesListAccessibleName=Files List
-FileChooser.filesDetailsAccessibleName=Files Details
-
-############ COLOR CHOOSER STRINGS #############
-ColorChooser.preview.textAndMnemonic=\u9810\u89BD
-ColorChooser.ok.textAndMnemonic=\u78BA\u5B9A
-ColorChooser.cancel.textAndMnemonic=\u53D6\u6D88
-ColorChooser.reset.textAndMnemonic=\u91CD\u8A2D(&R)
-ColorChooser.sample.textAndMnemonic=\u7BC4\u4F8B\u6587\u5B57  \u7BC4\u4F8B\u6587\u5B57
-ColorChooser.swatches.textAndMnemonic=\u8ABF\u8272\u677F(&S)
-ColorChooser.swatchesRecent.textAndMnemonic=\u6700\u65B0\u9078\u64C7:
-ColorChooser.hsv.textAndMnemonic=&HSV
-ColorChooser.hsvHue.textAndMnemonic=\u8272\u8ABF
-ColorChooser.hsvSaturation.textAndMnemonic=\u5F69\u5EA6
-ColorChooser.hsvValue.textAndMnemonic=\u6578\u503C
-ColorChooser.hsvTransparency.textAndMnemonic=\u900F\u660E\u5EA6
-ColorChooser.hsl.textAndMnemonic=HS&L
-ColorChooser.hslHue.textAndMnemonic=\u8272\u8ABF
-ColorChooser.hslSaturation.textAndMnemonic=\u5F69\u5EA6
-ColorChooser.hslLightness.textAndMnemonic=\u4EAE\u5EA6
-ColorChooser.hslTransparency.textAndMnemonic=\u900F\u660E\u5EA6
-ColorChooser.rgb.textAndMnemonic=R&GB
-ColorChooser.rgbRed.textAndMnemonic=\u7D05(&D)
-ColorChooser.rgbGreen.textAndMnemonic=\u7DA0(&N)
-ColorChooser.rgbBlue.textAndMnemonic=\u85CD(&B)
-ColorChooser.rgbAlpha.textAndMnemonic=Alpha
-ColorChooser.rgbHexCode.textAndMnemonic=\u984F\u8272\u4EE3\u78BC(&C)
-ColorChooser.cmyk.textAndMnemonic=C&MYK
-ColorChooser.cmykCyan.textAndMnemonic=\u85CD\u7DA0\u8272
-ColorChooser.cmykMagenta.textAndMnemonic=\u7D2B\u7D05\u8272
-ColorChooser.cmykYellow.textAndMnemonic=\u9EC3\u8272
-ColorChooser.cmykBlack.textAndMnemonic=\u9ED1\u8272
-ColorChooser.cmykAlpha.textAndMnemonic=Alpha
-
-############ OPTION PANE STRINGS #############
-# We only define mnemonics for YES/NO, but for completeness you can
-# define mnemonics for any of the buttons.
-OptionPane.yesButton.textAndMnemonic=\u662F(&Y)
-OptionPane.noButton.textAndMnemonic=\u5426(&N)
-OptionPane.okButton.textAndMnemonic=\u78BA\u5B9A(&O)
-OptionPane.cancelButton.textAndMnemonic=\u53D6\u6D88
-OptionPane.title.textAndMnemonic=\u9078\u53D6\u4E00\u500B\u9078\u9805
-# Title for the dialog for the showInputDialog methods. Only used if
-# the developer uses one of the variants that doesn't take a title.
-OptionPane.inputDialog.titleAndMnemonic=\u8F38\u5165
-# Title for the dialog for the showMessageDialog methods. Only used if
-# the developer uses one of the variants that doesn't take a title.
-OptionPane.messageDialog.titleAndMnemonic=\u8A0A\u606F
-
-############ Printing Dialog Strings ############
-PrintingDialog.titleProgress.textAndMnemonic=\u5217\u5370
-PrintingDialog.titleAborting.textAndMnemonic=\u5217\u5370 (\u4E2D\u6B62)
-
-PrintingDialog.contentInitial.textAndMnemonic=\u6B63\u5728\u5217\u5370...
-
-# The following string will be formatted by a MessageFormat
-# and {0} will be replaced by page number being printed
-PrintingDialog.contentProgress.textAndMnemonic=\u5DF2\u5217\u5370\u7684\u9801\u9762 {0}...
-
-PrintingDialog.contentAborting.textAndMnemonic=\u6B63\u5728\u4E2D\u6B62\u5217\u5370...
-
-PrintingDialog.abortButton.textAndMnemonic=\u4E2D\u6B62(&A)
-PrintingDialog.abortButtonToolTip.textAndMnemonic=\u4E2D\u6B62\u5217\u5370
-
-############ Internal Frame Strings ############
-InternalFrame.iconButtonToolTip=\u6700\u5C0F\u5316
-InternalFrame.maxButtonToolTip=\u6700\u5927\u5316
-InternalFrame.restoreButtonToolTip=\u5FA9\u539F
-InternalFrame.closeButtonToolTip=\u95DC\u9589
-
-############ Internal Frame Title Pane Strings ############
-InternalFrameTitlePane.restoreButton.textAndMnemonic=\u5FA9\u539F
-InternalFrameTitlePane.moveButton.textAndMnemonic=\u79FB\u52D5
-InternalFrameTitlePane.sizeButton.textAndMnemonic=\u5927\u5C0F
-InternalFrameTitlePane.minimizeButton.textAndMnemonic=\u6700\u5C0F\u5316
-InternalFrameTitlePane.maximizeButton.textAndMnemonic=\u6700\u5927\u5316
-InternalFrameTitlePane.closeButton.textAndMnemonic=\u95DC\u9589
-
-############ Text strings #############
-# Used for html forms
-FormView.submitButton.textAndMnemonic=\u9001\u51FA\u67E5\u8A62
-FormView.resetButton.textAndMnemonic=\u91CD\u8A2D
-FormView.browseFileButton.textAndMnemonic=\u700F\u89BD...
-
-############ Abstract Document Strings ############
-AbstractDocument.styleChange.textAndMnemonic=\u6A23\u5F0F\u8B8A\u66F4
-AbstractDocument.addition.textAndMnemonic=\u9644\u52A0
-AbstractDocument.deletion.textAndMnemonic=\u522A\u9664
-AbstractDocument.undo.textAndMnemonic=\u9084\u539F
-AbstractDocument.redo.textAndMnemonic=\u91CD\u505A
-
-############ Abstract Button Strings ############
-AbstractButton.click.textAndMnemonic=\u6309\u4E00\u4E0B
-
-############ Abstract Undoable Edit Strings ############
-AbstractUndoableEdit.undo.textAndMnemonic=\u9084\u539F
-AbstractUndoableEdit.redo.textAndMnemonic=\u91CD\u505A
-
-############ Combo Box Strings ############
-ComboBox.togglePopup.textAndMnemonic=\u5207\u63DB\u5373\u73FE\u5F0F\u8996\u7A97
-
-############ Progress Monitor Strings ############
-ProgressMonitor.progress.textAndMnemonic=\u9032\u5EA6...
-
-############ Split Pane Strings ############
-SplitPane.leftButton.textAndMnemonic=\u5DE6\u6309\u9215
-SplitPane.rightButton.textAndMnemonic=\u53F3\u6309\u9215
-# Used for Isindex
-IsindexView.prompt=\u9019\u662F\u4E00\u500B\u53EF\u641C\u5C0B\u7684\u7D22\u5F15\u3002\u8F38\u5165\u641C\u5C0B\u95DC\u9375\u5B57:
-
-############ InternalFrameTitlePane Strings ############
-InternalFrameTitlePane.iconifyButtonAccessibleName=\u5716\u793A\u5316
-InternalFrameTitlePane.maximizeButtonAccessibleName=\u6700\u5927\u5316
-InternalFrameTitlePane.closeButtonAccessibleName=\u95DC\u9589
-
+# This properties file is used to create a PropertyResourceBundle
+# It contains Locale specific strings used in Swing
+# Currently, the following components need this for support:
+#
+#    ColorChooser
+#    FileChooser
+#    OptionPane
+#
+# When this file is read in, the strings are put into the
+# defaults table.  This is an implementation detail of the current
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
+# support.
+#
+#                        MNEMONIC NOTE:
+# Many of strings in this file are used by widgets that have a
+# mnemonic, for example:
+#   ColorChooser.rgbNameTextAndMnemonic=R&GB
+# Indicates that the tab in the ColorChooser for RGB colors will have
+# the text 'RGB', further the mnemonic character will be 'g' and that
+# a decoration will be provided under the 'G'. This will typically
+# look like:  RGB
+#              -
+#
+# One important thing to remember is that the mnemonic MUST exist in
+# the String, if it does not exist you should add text that makes it
+# exist. This will typically take the form 'XXXX (M)' where M is the
+# character for the mnemonic.
+#
+# @author Steve Wilson
+
+############ FILE CHOOSER STRINGS #############
+FileChooser.fileDescription.textAndMnemonic=\u4E00\u822C\u6A94\u6848
+FileChooser.directoryDescription.textAndMnemonic=\u76EE\u9304
+FileChooser.newFolderError.textAndMnemonic=\u5EFA\u7ACB\u65B0\u8CC7\u6599\u593E\u6642\u767C\u751F\u932F\u8AA4
+FileChooser.newFolderErrorSeparator= :
+FileChooser.newFolderParentDoesntExistTitle.textAndMnemonic=\u7121\u6CD5\u5EFA\u7ACB\u8CC7\u6599\u593E
+FileChooser.newFolderParentDoesntExist.textAndMnemonic=\u7121\u6CD5\u5EFA\u7ACB\u8CC7\u6599\u593E\u3002\n\n\u7CFB\u7D71\u627E\u4E0D\u5230\u6307\u5B9A\u7684\u8DEF\u5F91\u3002
+FileChooser.renameErrorTitle.textAndMnemonic=\u91CD\u65B0\u547D\u540D\u6A94\u6848\u6216\u8CC7\u6599\u593E\u6642\u767C\u751F\u932F\u8AA4\u3002
+FileChooser.renameError.textAndMnemonic=\u7121\u6CD5\u91CD\u65B0\u547D\u540D {0}
+FileChooser.renameErrorFileExists.textAndMnemonic=\u7121\u6CD5\u91CD\u65B0\u547D\u540D {0}: \u5DF2\u7D93\u5B58\u5728\u60A8\u6240\u6307\u5B9A\u540D\u7A31\u7684\u6A94\u6848\u3002\u8ACB\u6307\u5B9A\u4E0D\u540C\u7684\u540D\u7A31\u3002
+FileChooser.acceptAllFileFilter.textAndMnemonic=\u6240\u6709\u6A94\u6848
+FileChooser.cancelButton.textAndMnemonic=\u53D6\u6D88
+FileChooser.saveButton.textAndMnemonic=\u5132\u5B58(&S)
+FileChooser.openButton.textAndMnemonic=\u958B\u555F(&O)
+FileChooser.saveDialogTitle.textAndMnemonic=\u5132\u5B58
+FileChooser.openDialogTitle.textAndMnemonic=\u958B\u555F
+FileChooser.updateButton.textAndMnemonic=\u66F4\u65B0(&U)
+FileChooser.helpButton.textAndMnemonic=\u8AAA\u660E(&H)
+FileChooser.directoryOpenButton.textAndMnemonic=\u958B\u555F(&O)
+
+# File Size Units
+FileChooser.fileSizeKiloBytes={0} KB
+FileChooser.fileSizeMegaBytes={0} MB
+FileChooser.fileSizeGigaBytes={0} GB
+
+# These strings are platform dependent not look and feel dependent.
+FileChooser.win32.newFolder=\u65B0\u8CC7\u6599\u593E
+FileChooser.win32.newFolder.subsequent=\u65B0\u8CC7\u6599\u593E ({0})
+FileChooser.other.newFolder=\u65B0\u8CC7\u6599\u593E
+FileChooser.other.newFolder.subsequent=\u65B0\u8CC7\u6599\u593E.{0}
+
+
+## file chooser tooltips ###
+FileChooser.cancelButtonToolTip.textAndMnemonic=\u4E2D\u6B62\u6A94\u6848\u9078\u64C7\u5668\u5C0D\u8A71\u65B9\u584A
+FileChooser.saveButtonToolTip.textAndMnemonic=\u5132\u5B58\u9078\u53D6\u7684\u6A94\u6848
+FileChooser.openButtonToolTip.textAndMnemonic=\u958B\u555F\u9078\u53D6\u7684\u6A94\u6848
+FileChooser.updateButtonToolTip.textAndMnemonic=\u66F4\u65B0\u76EE\u9304\u6E05\u55AE
+FileChooser.helpButtonToolTip.textAndMnemonic=\u300C\u6A94\u6848\u9078\u64C7\u5668\u300D\u8AAA\u660E
+FileChooser.directoryOpenButtonToolTip.textAndMnemonic=\u958B\u555F\u9078\u53D6\u7684\u76EE\u9304
+
+FileChooser.filesListAccessibleName=Files List
+FileChooser.filesDetailsAccessibleName=Files Details
+
+############ COLOR CHOOSER STRINGS #############
+ColorChooser.preview.textAndMnemonic=\u9810\u89BD
+ColorChooser.ok.textAndMnemonic=\u78BA\u5B9A
+ColorChooser.cancel.textAndMnemonic=\u53D6\u6D88
+ColorChooser.reset.textAndMnemonic=\u91CD\u8A2D(&R)
+ColorChooser.sample.textAndMnemonic=\u7BC4\u4F8B\u6587\u5B57  \u7BC4\u4F8B\u6587\u5B57
+ColorChooser.swatches.textAndMnemonic=\u8ABF\u8272\u677F(&S)
+ColorChooser.swatchesRecent.textAndMnemonic=\u6700\u65B0\u9078\u64C7:
+ColorChooser.hsv.textAndMnemonic=&HSV
+ColorChooser.hsvHue.textAndMnemonic=\u8272\u8ABF
+ColorChooser.hsvSaturation.textAndMnemonic=\u5F69\u5EA6
+ColorChooser.hsvValue.textAndMnemonic=\u6578\u503C
+ColorChooser.hsvTransparency.textAndMnemonic=\u900F\u660E\u5EA6
+ColorChooser.hsl.textAndMnemonic=HS&L
+ColorChooser.hslHue.textAndMnemonic=\u8272\u8ABF
+ColorChooser.hslSaturation.textAndMnemonic=\u5F69\u5EA6
+ColorChooser.hslLightness.textAndMnemonic=\u4EAE\u5EA6
+ColorChooser.hslTransparency.textAndMnemonic=\u900F\u660E\u5EA6
+ColorChooser.rgb.textAndMnemonic=R&GB
+ColorChooser.rgbRed.textAndMnemonic=\u7D05(&D)
+ColorChooser.rgbGreen.textAndMnemonic=\u7DA0(&N)
+ColorChooser.rgbBlue.textAndMnemonic=\u85CD(&B)
+ColorChooser.rgbAlpha.textAndMnemonic=Alpha
+ColorChooser.rgbHexCode.textAndMnemonic=\u984F\u8272\u4EE3\u78BC(&C)
+ColorChooser.cmyk.textAndMnemonic=C&MYK
+ColorChooser.cmykCyan.textAndMnemonic=\u85CD\u7DA0\u8272
+ColorChooser.cmykMagenta.textAndMnemonic=\u7D2B\u7D05\u8272
+ColorChooser.cmykYellow.textAndMnemonic=\u9EC3\u8272
+ColorChooser.cmykBlack.textAndMnemonic=\u9ED1\u8272
+ColorChooser.cmykAlpha.textAndMnemonic=Alpha
+
+############ OPTION PANE STRINGS #############
+# We only define mnemonics for YES/NO, but for completeness you can
+# define mnemonics for any of the buttons.
+OptionPane.yesButton.textAndMnemonic=\u662F(&Y)
+OptionPane.noButton.textAndMnemonic=\u5426(&N)
+OptionPane.okButton.textAndMnemonic=\u78BA\u5B9A(&O)
+OptionPane.cancelButton.textAndMnemonic=\u53D6\u6D88
+OptionPane.title.textAndMnemonic=\u9078\u53D6\u4E00\u500B\u9078\u9805
+# Title for the dialog for the showInputDialog methods. Only used if
+# the developer uses one of the variants that doesn't take a title.
+OptionPane.inputDialog.titleAndMnemonic=\u8F38\u5165
+# Title for the dialog for the showMessageDialog methods. Only used if
+# the developer uses one of the variants that doesn't take a title.
+OptionPane.messageDialog.titleAndMnemonic=\u8A0A\u606F
+
+############ Printing Dialog Strings ############
+PrintingDialog.titleProgress.textAndMnemonic=\u5217\u5370
+PrintingDialog.titleAborting.textAndMnemonic=\u5217\u5370 (\u4E2D\u6B62)
+
+PrintingDialog.contentInitial.textAndMnemonic=\u6B63\u5728\u5217\u5370...
+
+# The following string will be formatted by a MessageFormat
+# and {0} will be replaced by page number being printed
+PrintingDialog.contentProgress.textAndMnemonic=\u5DF2\u5217\u5370\u7684\u9801\u9762 {0}...
+
+PrintingDialog.contentAborting.textAndMnemonic=\u6B63\u5728\u4E2D\u6B62\u5217\u5370...
+
+PrintingDialog.abortButton.textAndMnemonic=\u4E2D\u6B62(&A)
+PrintingDialog.abortButtonToolTip.textAndMnemonic=\u4E2D\u6B62\u5217\u5370
+
+############ Internal Frame Strings ############
+InternalFrame.iconButtonToolTip=\u6700\u5C0F\u5316
+InternalFrame.maxButtonToolTip=\u6700\u5927\u5316
+InternalFrame.restoreButtonToolTip=\u5FA9\u539F
+InternalFrame.closeButtonToolTip=\u95DC\u9589
+
+############ Internal Frame Title Pane Strings ############
+InternalFrameTitlePane.restoreButton.textAndMnemonic=\u5FA9\u539F
+InternalFrameTitlePane.moveButton.textAndMnemonic=\u79FB\u52D5
+InternalFrameTitlePane.sizeButton.textAndMnemonic=\u5927\u5C0F
+InternalFrameTitlePane.minimizeButton.textAndMnemonic=\u6700\u5C0F\u5316
+InternalFrameTitlePane.maximizeButton.textAndMnemonic=\u6700\u5927\u5316
+InternalFrameTitlePane.closeButton.textAndMnemonic=\u95DC\u9589
+
+############ Text strings #############
+# Used for html forms
+FormView.submitButton.textAndMnemonic=\u9001\u51FA\u67E5\u8A62
+FormView.resetButton.textAndMnemonic=\u91CD\u8A2D
+FormView.browseFileButton.textAndMnemonic=\u700F\u89BD...
+
+############ Abstract Document Strings ############
+AbstractDocument.styleChange.textAndMnemonic=\u6A23\u5F0F\u8B8A\u66F4
+AbstractDocument.addition.textAndMnemonic=\u9644\u52A0
+AbstractDocument.deletion.textAndMnemonic=\u522A\u9664
+AbstractDocument.undo.textAndMnemonic=\u9084\u539F
+AbstractDocument.redo.textAndMnemonic=\u91CD\u505A
+
+############ Abstract Button Strings ############
+AbstractButton.click.textAndMnemonic=\u6309\u4E00\u4E0B
+
+############ Abstract Undoable Edit Strings ############
+AbstractUndoableEdit.undo.textAndMnemonic=\u9084\u539F
+AbstractUndoableEdit.redo.textAndMnemonic=\u91CD\u505A
+
+############ Combo Box Strings ############
+ComboBox.togglePopup.textAndMnemonic=\u5207\u63DB\u5373\u73FE\u5F0F\u8996\u7A97
+
+############ Progress Monitor Strings ############
+ProgressMonitor.progress.textAndMnemonic=\u9032\u5EA6...
+
+############ Split Pane Strings ############
+SplitPane.leftButton.textAndMnemonic=\u5DE6\u6309\u9215
+SplitPane.rightButton.textAndMnemonic=\u53F3\u6309\u9215
+# Used for Isindex
+IsindexView.prompt=\u9019\u662F\u4E00\u500B\u53EF\u641C\u5C0B\u7684\u7D22\u5F15\u3002\u8F38\u5165\u641C\u5C0B\u95DC\u9375\u5B57:
+
+############ InternalFrameTitlePane Strings ############
+InternalFrameTitlePane.iconifyButtonAccessibleName=\u5716\u793A\u5316
+InternalFrameTitlePane.maximizeButtonAccessibleName=\u6700\u5927\u5316
+InternalFrameTitlePane.closeButtonAccessibleName=\u95DC\u9589
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal.properties	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal.properties	Wed Jul 05 18:14:56 2017 +0200
@@ -1,51 +1,53 @@
-# This properties file is used to create a PropertyResourceBundle
-# It contains Locale specific strings used be the Metal Look and Feel.
-# Currently, the following components need this for support:
-#
-#    FileChooser
-#
-# When this file is read in, the strings are put into the
-# defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.
-# This may change in future versions of Swing as we improve localization
-# support.
-#
-# Refer to the note in basic.properties for a description as to what
-# the mnemonics correspond to and how to calculate them.
-#
-# @author Steve Wilson
-
-
-############ FILE CHOOSER STRINGS #############
-
-FileChooser.lookInLabel.textAndMnemonic=Look &In:
-FileChooser.saveInLabel.textAndMnemonic=Save In:
-FileChooser.fileNameLabel.textAndMnemonic=File &Name:
-FileChooser.folderNameLabel.textAndMnemonic=Folder &name:
-FileChooser.filesOfTypeLabel.textAndMnemonic=Files of &Type:
-FileChooser.upFolderToolTip.textAndMnemonic=Up One Level
-FileChooser.upFolderAccessibleName=Up
-FileChooser.homeFolderToolTip.textAndMnemonic=Home
-FileChooser.homeFolderAccessibleName=Home
-FileChooser.newFolderToolTip.textAndMnemonic=Create New Folder
-FileChooser.newFolderAccessibleName=New Folder
-FileChooser.newFolderActionLabel.textAndMnemonic=New Folder
-FileChooser.listViewButtonToolTip.textAndMnemonic=List
-FileChooser.listViewButtonAccessibleName=List
-FileChooser.listViewActionLabel.textAndMnemonic=List
-FileChooser.detailsViewButtonToolTip.textAndMnemonic=Details
-FileChooser.detailsViewButtonAccessibleName=Details
-FileChooser.detailsViewActionLabel.textAndMnemonic=Details
-FileChooser.refreshActionLabel.textAndMnemonic=Refresh
-FileChooser.viewMenuLabel.textAndMnemonic=View
-FileChooser.fileNameHeader.textAndMnemonic=Name
-FileChooser.fileSizeHeader.textAndMnemonic=Size
-FileChooser.fileTypeHeader.textAndMnemonic=Type
-FileChooser.fileDateHeader.textAndMnemonic=Modified
-FileChooser.fileAttrHeader.textAndMnemonic=Attributes
-
-############ Used by MetalTitlePane if rendering window decorations############
-MetalTitlePane.restore.titleAndMnemonic=&Restore
-MetalTitlePane.iconify.titleAndMnemonic=Minimiz&e
-MetalTitlePane.maximize.titleAndMnemonic=Ma&ximize
-MetalTitlePane.close.titleAndMnemonic=&Close
+# This properties file is used to create a PropertyResourceBundle
+# It contains Locale specific strings used be the Metal Look and Feel.
+# Currently, the following components need this for support:
+#
+#    FileChooser
+#
+# When this file is read in, the strings are put into the
+# defaults table.  This is an implementation detail of the current
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
+# support.
+#
+# Refer to the note in basic.properties for a description as to what
+# the mnemonics correspond to and how to calculate them.
+#
+# @author Steve Wilson
+
+
+############ FILE CHOOSER STRINGS #############
+
+FileChooser.lookInLabel.textAndMnemonic=Look &In:
+FileChooser.saveInLabel.textAndMnemonic=Save In:
+FileChooser.fileNameLabel.textAndMnemonic=File &Name:
+FileChooser.folderNameLabel.textAndMnemonic=Folder &name:
+FileChooser.filesOfTypeLabel.textAndMnemonic=Files of &Type:
+FileChooser.upFolderToolTip.textAndMnemonic=Up One Level
+FileChooser.upFolderAccessibleName=Up
+FileChooser.homeFolderToolTip.textAndMnemonic=Home
+FileChooser.homeFolderAccessibleName=Home
+FileChooser.newFolderToolTip.textAndMnemonic=Create New Folder
+FileChooser.newFolderAccessibleName=New Folder
+FileChooser.newFolderActionLabel.textAndMnemonic=New Folder
+FileChooser.listViewButtonToolTip.textAndMnemonic=List
+FileChooser.listViewButtonAccessibleName=List
+FileChooser.listViewActionLabel.textAndMnemonic=List
+FileChooser.detailsViewButtonToolTip.textAndMnemonic=Details
+FileChooser.detailsViewButtonAccessibleName=Details
+FileChooser.detailsViewActionLabel.textAndMnemonic=Details
+FileChooser.refreshActionLabel.textAndMnemonic=Refresh
+FileChooser.viewMenuLabel.textAndMnemonic=View
+FileChooser.fileNameHeader.textAndMnemonic=Name
+FileChooser.fileSizeHeader.textAndMnemonic=Size
+FileChooser.fileTypeHeader.textAndMnemonic=Type
+FileChooser.fileDateHeader.textAndMnemonic=Modified
+FileChooser.fileAttrHeader.textAndMnemonic=Attributes
+FileChooser.saveButton.textAndMnemonic=Save
+FileChooser.openButton.textAndMnemonic=Open
+
+############ Used by MetalTitlePane if rendering window decorations############
+MetalTitlePane.restore.titleAndMnemonic=&Restore
+MetalTitlePane.iconify.titleAndMnemonic=Minimiz&e
+MetalTitlePane.maximize.titleAndMnemonic=Ma&ximize
+MetalTitlePane.close.titleAndMnemonic=&Close
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_de.properties	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_de.properties	Wed Jul 05 18:14:56 2017 +0200
@@ -1,52 +1,54 @@
-# This properties file is used to create a PropertyResourceBundle
-# It contains Locale specific strings used be the Metal Look and Feel.
-# Currently, the following components need this for support:
-#
-#    FileChooser
-#
-# When this file is read in, the strings are put into the
-# defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.
-# This may change in future versions of Swing as we improve localization
-# support.
-#
-# Refer to the note in basic.properties for a description as to what
-# the mnemonics correspond to and how to calculate them.
-#
-# @author Steve Wilson
-
-
-############ FILE CHOOSER STRINGS #############
-
-FileChooser.lookInLabel.textAndMnemonic=Suchen &in:
-FileChooser.saveInLabel.textAndMnemonic=Speichern in:
-FileChooser.fileNameLabel.textAndMnemonic=Datei&name:
-FileChooser.folderNameLabel.textAndMnemonic=Ord&nername:
-FileChooser.filesOfTypeLabel.textAndMnemonic=Da&teityp:
-FileChooser.upFolderToolTip.textAndMnemonic=Eine Ebene h\u00F6her
-FileChooser.upFolderAccessibleName=Nach oben
-FileChooser.homeFolderToolTip.textAndMnemonic=Home
-FileChooser.homeFolderAccessibleName=Home
-FileChooser.newFolderToolTip.textAndMnemonic=Neuen Ordner erstellen
-FileChooser.newFolderAccessibleName=Neuer Ordner
-FileChooser.newFolderActionLabel.textAndMnemonic=Neuer Ordner
-FileChooser.listViewButtonToolTip.textAndMnemonic=Liste
-FileChooser.listViewButtonAccessibleName=Liste
-FileChooser.listViewActionLabel.textAndMnemonic=Liste
-FileChooser.detailsViewButtonToolTip.textAndMnemonic=Details
-FileChooser.detailsViewButtonAccessibleName=Details
-FileChooser.detailsViewActionLabel.textAndMnemonic=Details
-FileChooser.refreshActionLabel.textAndMnemonic=Aktualisieren
-FileChooser.viewMenuLabel.textAndMnemonic=Ansicht
-FileChooser.fileNameHeader.textAndMnemonic=Name
-FileChooser.fileSizeHeader.textAndMnemonic=Gr\u00F6\u00DFe
-FileChooser.fileTypeHeader.textAndMnemonic=Typ
-FileChooser.fileDateHeader.textAndMnemonic=Ge\u00E4ndert
-FileChooser.fileAttrHeader.textAndMnemonic=Attribute
-
-############ Used by MetalTitlePane if rendering window decorations############
-MetalTitlePane.restore.titleAndMnemonic=&Wiederherstellen
-MetalTitlePane.iconify.titleAndMnemonic=Minimie&ren
-MetalTitlePane.maximize.titleAndMnemonic=Ma&ximieren
-MetalTitlePane.close.titleAndMnemonic=Schlie\u00DFen(&S)
-
+# This properties file is used to create a PropertyResourceBundle
+# It contains Locale specific strings used be the Metal Look and Feel.
+# Currently, the following components need this for support:
+#
+#    FileChooser
+#
+# When this file is read in, the strings are put into the
+# defaults table.  This is an implementation detail of the current
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
+# support.
+#
+# Refer to the note in basic.properties for a description as to what
+# the mnemonics correspond to and how to calculate them.
+#
+# @author Steve Wilson
+
+
+############ FILE CHOOSER STRINGS #############
+
+FileChooser.lookInLabel.textAndMnemonic=Suchen &in:
+FileChooser.saveInLabel.textAndMnemonic=Speichern in:
+FileChooser.fileNameLabel.textAndMnemonic=Datei&name:
+FileChooser.folderNameLabel.textAndMnemonic=Ord&nername:
+FileChooser.filesOfTypeLabel.textAndMnemonic=Da&teityp:
+FileChooser.upFolderToolTip.textAndMnemonic=Eine Ebene h\u00F6her
+FileChooser.upFolderAccessibleName=Nach oben
+FileChooser.homeFolderToolTip.textAndMnemonic=Home
+FileChooser.homeFolderAccessibleName=Home
+FileChooser.newFolderToolTip.textAndMnemonic=Neuen Ordner erstellen
+FileChooser.newFolderAccessibleName=Neuer Ordner
+FileChooser.newFolderActionLabel.textAndMnemonic=Neuer Ordner
+FileChooser.listViewButtonToolTip.textAndMnemonic=Liste
+FileChooser.listViewButtonAccessibleName=Liste
+FileChooser.listViewActionLabel.textAndMnemonic=Liste
+FileChooser.detailsViewButtonToolTip.textAndMnemonic=Details
+FileChooser.detailsViewButtonAccessibleName=Details
+FileChooser.detailsViewActionLabel.textAndMnemonic=Details
+FileChooser.refreshActionLabel.textAndMnemonic=Aktualisieren
+FileChooser.viewMenuLabel.textAndMnemonic=Ansicht
+FileChooser.fileNameHeader.textAndMnemonic=Name
+FileChooser.fileSizeHeader.textAndMnemonic=Gr\u00F6\u00DFe
+FileChooser.fileTypeHeader.textAndMnemonic=Typ
+FileChooser.fileDateHeader.textAndMnemonic=Ge\u00E4ndert
+FileChooser.fileAttrHeader.textAndMnemonic=Attribute
+FileChooser.saveButton.textAndMnemonic=Speichern
+FileChooser.openButton.textAndMnemonic=\u00D6ffnen
+
+############ Used by MetalTitlePane if rendering window decorations############
+MetalTitlePane.restore.titleAndMnemonic=&Wiederherstellen
+MetalTitlePane.iconify.titleAndMnemonic=Minimie&ren
+MetalTitlePane.maximize.titleAndMnemonic=Ma&ximieren
+MetalTitlePane.close.titleAndMnemonic=Schlie\u00DFen(&S)
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_es.properties	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_es.properties	Wed Jul 05 18:14:56 2017 +0200
@@ -1,52 +1,54 @@
-# This properties file is used to create a PropertyResourceBundle
-# It contains Locale specific strings used be the Metal Look and Feel.
-# Currently, the following components need this for support:
-#
-#    FileChooser
-#
-# When this file is read in, the strings are put into the
-# defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.
-# This may change in future versions of Swing as we improve localization
-# support.
-#
-# Refer to the note in basic.properties for a description as to what
-# the mnemonics correspond to and how to calculate them.
-#
-# @author Steve Wilson
-
-
-############ FILE CHOOSER STRINGS #############
-
-FileChooser.lookInLabel.textAndMnemonic=Buscar en(&I):
-FileChooser.saveInLabel.textAndMnemonic=Guardar en:
-FileChooser.fileNameLabel.textAndMnemonic=&Nombre de Archivo:
-FileChooser.folderNameLabel.textAndMnemonic=&Nombre de la Carpeta:
-FileChooser.filesOfTypeLabel.textAndMnemonic=Archivos de &Tipo:
-FileChooser.upFolderToolTip.textAndMnemonic=Subir un Nivel
-FileChooser.upFolderAccessibleName=Arriba
-FileChooser.homeFolderToolTip.textAndMnemonic=Inicio
-FileChooser.homeFolderAccessibleName=Inicio
-FileChooser.newFolderToolTip.textAndMnemonic=Crear Nueva Carpeta
-FileChooser.newFolderAccessibleName=Nueva Carpeta
-FileChooser.newFolderActionLabel.textAndMnemonic=Nueva Carpeta
-FileChooser.listViewButtonToolTip.textAndMnemonic=Lista
-FileChooser.listViewButtonAccessibleName=Lista
-FileChooser.listViewActionLabel.textAndMnemonic=Lista
-FileChooser.detailsViewButtonToolTip.textAndMnemonic=Detalles
-FileChooser.detailsViewButtonAccessibleName=Detalles
-FileChooser.detailsViewActionLabel.textAndMnemonic=Detalles
-FileChooser.refreshActionLabel.textAndMnemonic=Refrescar
-FileChooser.viewMenuLabel.textAndMnemonic=Ver
-FileChooser.fileNameHeader.textAndMnemonic=Nombre
-FileChooser.fileSizeHeader.textAndMnemonic=Tama\u00F1o
-FileChooser.fileTypeHeader.textAndMnemonic=Tipo
-FileChooser.fileDateHeader.textAndMnemonic=Modificado
-FileChooser.fileAttrHeader.textAndMnemonic=Atributos
-
-############ Used by MetalTitlePane if rendering window decorations############
-MetalTitlePane.restore.titleAndMnemonic=&Restaurar
-MetalTitlePane.iconify.titleAndMnemonic=Minimi&zar
-MetalTitlePane.maximize.titleAndMnemonic=Ma&ximizar
-MetalTitlePane.close.titleAndMnemonic=&Cerrar
-
+# This properties file is used to create a PropertyResourceBundle
+# It contains Locale specific strings used be the Metal Look and Feel.
+# Currently, the following components need this for support:
+#
+#    FileChooser
+#
+# When this file is read in, the strings are put into the
+# defaults table.  This is an implementation detail of the current
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
+# support.
+#
+# Refer to the note in basic.properties for a description as to what
+# the mnemonics correspond to and how to calculate them.
+#
+# @author Steve Wilson
+
+
+############ FILE CHOOSER STRINGS #############
+
+FileChooser.lookInLabel.textAndMnemonic=Buscar en(&I):
+FileChooser.saveInLabel.textAndMnemonic=Guardar en:
+FileChooser.fileNameLabel.textAndMnemonic=&Nombre de Archivo:
+FileChooser.folderNameLabel.textAndMnemonic=&Nombre de la Carpeta:
+FileChooser.filesOfTypeLabel.textAndMnemonic=Archivos de &Tipo:
+FileChooser.upFolderToolTip.textAndMnemonic=Subir un Nivel
+FileChooser.upFolderAccessibleName=Arriba
+FileChooser.homeFolderToolTip.textAndMnemonic=Inicio
+FileChooser.homeFolderAccessibleName=Inicio
+FileChooser.newFolderToolTip.textAndMnemonic=Crear Nueva Carpeta
+FileChooser.newFolderAccessibleName=Nueva Carpeta
+FileChooser.newFolderActionLabel.textAndMnemonic=Nueva Carpeta
+FileChooser.listViewButtonToolTip.textAndMnemonic=Lista
+FileChooser.listViewButtonAccessibleName=Lista
+FileChooser.listViewActionLabel.textAndMnemonic=Lista
+FileChooser.detailsViewButtonToolTip.textAndMnemonic=Detalles
+FileChooser.detailsViewButtonAccessibleName=Detalles
+FileChooser.detailsViewActionLabel.textAndMnemonic=Detalles
+FileChooser.refreshActionLabel.textAndMnemonic=Refrescar
+FileChooser.viewMenuLabel.textAndMnemonic=Ver
+FileChooser.fileNameHeader.textAndMnemonic=Nombre
+FileChooser.fileSizeHeader.textAndMnemonic=Tama\u00F1o
+FileChooser.fileTypeHeader.textAndMnemonic=Tipo
+FileChooser.fileDateHeader.textAndMnemonic=Modificado
+FileChooser.fileAttrHeader.textAndMnemonic=Atributos
+FileChooser.saveButton.textAndMnemonic=Guardar
+FileChooser.openButton.textAndMnemonic=Abrir
+
+############ Used by MetalTitlePane if rendering window decorations############
+MetalTitlePane.restore.titleAndMnemonic=&Restaurar
+MetalTitlePane.iconify.titleAndMnemonic=Minimi&zar
+MetalTitlePane.maximize.titleAndMnemonic=Ma&ximizar
+MetalTitlePane.close.titleAndMnemonic=&Cerrar
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_fr.properties	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_fr.properties	Wed Jul 05 18:14:56 2017 +0200
@@ -1,52 +1,54 @@
-# This properties file is used to create a PropertyResourceBundle
-# It contains Locale specific strings used be the Metal Look and Feel.
-# Currently, the following components need this for support:
-#
-#    FileChooser
-#
-# When this file is read in, the strings are put into the
-# defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.
-# This may change in future versions of Swing as we improve localization
-# support.
-#
-# Refer to the note in basic.properties for a description as to what
-# the mnemonics correspond to and how to calculate them.
-#
-# @author Steve Wilson
-
-
-############ FILE CHOOSER STRINGS #############
-
-FileChooser.lookInLabel.textAndMnemonic=Rechercher dans (&I):
-FileChooser.saveInLabel.textAndMnemonic=Enregistrer dans :
-FileChooser.fileNameLabel.textAndMnemonic=&Nom du fichier :
-FileChooser.folderNameLabel.textAndMnemonic=&Nom du dossier :
-FileChooser.filesOfTypeLabel.textAndMnemonic=Fichiers de &type :
-FileChooser.upFolderToolTip.textAndMnemonic=Remonte d'un niveau.
-FileChooser.upFolderAccessibleName=Monter
-FileChooser.homeFolderToolTip.textAndMnemonic=R\u00E9pertoire d'origine
-FileChooser.homeFolderAccessibleName=R\u00E9pertoire d'origine
-FileChooser.newFolderToolTip.textAndMnemonic=Cr\u00E9e un dossier.
-FileChooser.newFolderAccessibleName=Nouveau dossier
-FileChooser.newFolderActionLabel.textAndMnemonic=Nouveau dossier
-FileChooser.listViewButtonToolTip.textAndMnemonic=Liste
-FileChooser.listViewButtonAccessibleName=Liste
-FileChooser.listViewActionLabel.textAndMnemonic=Liste
-FileChooser.detailsViewButtonToolTip.textAndMnemonic=D\u00E9tails
-FileChooser.detailsViewButtonAccessibleName=D\u00E9tails
-FileChooser.detailsViewActionLabel.textAndMnemonic=D\u00E9tails
-FileChooser.refreshActionLabel.textAndMnemonic=Actualiser
-FileChooser.viewMenuLabel.textAndMnemonic=Affichage
-FileChooser.fileNameHeader.textAndMnemonic=Nom
-FileChooser.fileSizeHeader.textAndMnemonic=Taille
-FileChooser.fileTypeHeader.textAndMnemonic=Type
-FileChooser.fileDateHeader.textAndMnemonic=Modifi\u00E9
-FileChooser.fileAttrHeader.textAndMnemonic=Attributs
-
-############ Used by MetalTitlePane if rendering window decorations############
-MetalTitlePane.restore.titleAndMnemonic=&Restaurer
-MetalTitlePane.iconify.titleAndMnemonic=R\u00E9duire(&D)
-MetalTitlePane.maximize.titleAndMnemonic=&Agrandir
-MetalTitlePane.close.titleAndMnemonic=&Fermer
-
+# This properties file is used to create a PropertyResourceBundle
+# It contains Locale specific strings used be the Metal Look and Feel.
+# Currently, the following components need this for support:
+#
+#    FileChooser
+#
+# When this file is read in, the strings are put into the
+# defaults table.  This is an implementation detail of the current
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
+# support.
+#
+# Refer to the note in basic.properties for a description as to what
+# the mnemonics correspond to and how to calculate them.
+#
+# @author Steve Wilson
+
+
+############ FILE CHOOSER STRINGS #############
+
+FileChooser.lookInLabel.textAndMnemonic=Rechercher dans (&I):
+FileChooser.saveInLabel.textAndMnemonic=Enregistrer dans :
+FileChooser.fileNameLabel.textAndMnemonic=&Nom du fichier :
+FileChooser.folderNameLabel.textAndMnemonic=&Nom du dossier :
+FileChooser.filesOfTypeLabel.textAndMnemonic=Fichiers de &type :
+FileChooser.upFolderToolTip.textAndMnemonic=Remonte d'un niveau.
+FileChooser.upFolderAccessibleName=Monter
+FileChooser.homeFolderToolTip.textAndMnemonic=R\u00E9pertoire d'origine
+FileChooser.homeFolderAccessibleName=R\u00E9pertoire d'origine
+FileChooser.newFolderToolTip.textAndMnemonic=Cr\u00E9e un dossier.
+FileChooser.newFolderAccessibleName=Nouveau dossier
+FileChooser.newFolderActionLabel.textAndMnemonic=Nouveau dossier
+FileChooser.listViewButtonToolTip.textAndMnemonic=Liste
+FileChooser.listViewButtonAccessibleName=Liste
+FileChooser.listViewActionLabel.textAndMnemonic=Liste
+FileChooser.detailsViewButtonToolTip.textAndMnemonic=D\u00E9tails
+FileChooser.detailsViewButtonAccessibleName=D\u00E9tails
+FileChooser.detailsViewActionLabel.textAndMnemonic=D\u00E9tails
+FileChooser.refreshActionLabel.textAndMnemonic=Actualiser
+FileChooser.viewMenuLabel.textAndMnemonic=Affichage
+FileChooser.fileNameHeader.textAndMnemonic=Nom
+FileChooser.fileSizeHeader.textAndMnemonic=Taille
+FileChooser.fileTypeHeader.textAndMnemonic=Type
+FileChooser.fileDateHeader.textAndMnemonic=Modifi\u00E9
+FileChooser.fileAttrHeader.textAndMnemonic=Attributs
+FileChooser.saveButton.textAndMnemonic=Enregistrer
+FileChooser.openButton.textAndMnemonic=Ouvrir
+
+############ Used by MetalTitlePane if rendering window decorations############
+MetalTitlePane.restore.titleAndMnemonic=&Restaurer
+MetalTitlePane.iconify.titleAndMnemonic=R\u00E9duire(&D)
+MetalTitlePane.maximize.titleAndMnemonic=&Agrandir
+MetalTitlePane.close.titleAndMnemonic=&Fermer
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_it.properties	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_it.properties	Wed Jul 05 18:14:56 2017 +0200
@@ -1,52 +1,54 @@
-# This properties file is used to create a PropertyResourceBundle
-# It contains Locale specific strings used be the Metal Look and Feel.
-# Currently, the following components need this for support:
-#
-#    FileChooser
-#
-# When this file is read in, the strings are put into the
-# defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.
-# This may change in future versions of Swing as we improve localization
-# support.
-#
-# Refer to the note in basic.properties for a description as to what
-# the mnemonics correspond to and how to calculate them.
-#
-# @author Steve Wilson
-
-
-############ FILE CHOOSER STRINGS #############
-
-FileChooser.lookInLabel.textAndMnemonic=Cerca &in:
-FileChooser.saveInLabel.textAndMnemonic=Salva in:
-FileChooser.fileNameLabel.textAndMnemonic=&Nome file:
-FileChooser.folderNameLabel.textAndMnemonic=&Nome della cartella:
-FileChooser.filesOfTypeLabel.textAndMnemonic=&Tipo file:
-FileChooser.upFolderToolTip.textAndMnemonic=Cartella superiore
-FileChooser.upFolderAccessibleName=Superiore
-FileChooser.homeFolderToolTip.textAndMnemonic=Home
-FileChooser.homeFolderAccessibleName=Home
-FileChooser.newFolderToolTip.textAndMnemonic=Crea nuova cartella
-FileChooser.newFolderAccessibleName=Nuova cartella
-FileChooser.newFolderActionLabel.textAndMnemonic=Nuova cartella
-FileChooser.listViewButtonToolTip.textAndMnemonic=Lista
-FileChooser.listViewButtonAccessibleName=Lista
-FileChooser.listViewActionLabel.textAndMnemonic=Lista
-FileChooser.detailsViewButtonToolTip.textAndMnemonic=Dettagli
-FileChooser.detailsViewButtonAccessibleName=Dettagli
-FileChooser.detailsViewActionLabel.textAndMnemonic=Dettagli
-FileChooser.refreshActionLabel.textAndMnemonic=Aggiorna
-FileChooser.viewMenuLabel.textAndMnemonic=Visualizza
-FileChooser.fileNameHeader.textAndMnemonic=Nome
-FileChooser.fileSizeHeader.textAndMnemonic=Dimensioni
-FileChooser.fileTypeHeader.textAndMnemonic=Tipo
-FileChooser.fileDateHeader.textAndMnemonic=Modificato
-FileChooser.fileAttrHeader.textAndMnemonic=Attributi
-
-############ Used by MetalTitlePane if rendering window decorations############
-MetalTitlePane.restore.titleAndMnemonic=&Ripristina
-MetalTitlePane.iconify.titleAndMnemonic=Rid&uci a icona
-MetalTitlePane.maximize.titleAndMnemonic=In&grandisci
-MetalTitlePane.close.titleAndMnemonic=&Chiudi
-
+# This properties file is used to create a PropertyResourceBundle
+# It contains Locale specific strings used be the Metal Look and Feel.
+# Currently, the following components need this for support:
+#
+#    FileChooser
+#
+# When this file is read in, the strings are put into the
+# defaults table.  This is an implementation detail of the current
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
+# support.
+#
+# Refer to the note in basic.properties for a description as to what
+# the mnemonics correspond to and how to calculate them.
+#
+# @author Steve Wilson
+
+
+############ FILE CHOOSER STRINGS #############
+
+FileChooser.lookInLabel.textAndMnemonic=Cerca &in:
+FileChooser.saveInLabel.textAndMnemonic=Salva in:
+FileChooser.fileNameLabel.textAndMnemonic=&Nome file:
+FileChooser.folderNameLabel.textAndMnemonic=&Nome della cartella:
+FileChooser.filesOfTypeLabel.textAndMnemonic=&Tipo file:
+FileChooser.upFolderToolTip.textAndMnemonic=Cartella superiore
+FileChooser.upFolderAccessibleName=Superiore
+FileChooser.homeFolderToolTip.textAndMnemonic=Home
+FileChooser.homeFolderAccessibleName=Home
+FileChooser.newFolderToolTip.textAndMnemonic=Crea nuova cartella
+FileChooser.newFolderAccessibleName=Nuova cartella
+FileChooser.newFolderActionLabel.textAndMnemonic=Nuova cartella
+FileChooser.listViewButtonToolTip.textAndMnemonic=Lista
+FileChooser.listViewButtonAccessibleName=Lista
+FileChooser.listViewActionLabel.textAndMnemonic=Lista
+FileChooser.detailsViewButtonToolTip.textAndMnemonic=Dettagli
+FileChooser.detailsViewButtonAccessibleName=Dettagli
+FileChooser.detailsViewActionLabel.textAndMnemonic=Dettagli
+FileChooser.refreshActionLabel.textAndMnemonic=Aggiorna
+FileChooser.viewMenuLabel.textAndMnemonic=Visualizza
+FileChooser.fileNameHeader.textAndMnemonic=Nome
+FileChooser.fileSizeHeader.textAndMnemonic=Dimensioni
+FileChooser.fileTypeHeader.textAndMnemonic=Tipo
+FileChooser.fileDateHeader.textAndMnemonic=Modificato
+FileChooser.fileAttrHeader.textAndMnemonic=Attributi
+FileChooser.saveButton.textAndMnemonic=Salva
+FileChooser.openButton.textAndMnemonic=Apri
+
+############ Used by MetalTitlePane if rendering window decorations############
+MetalTitlePane.restore.titleAndMnemonic=&Ripristina
+MetalTitlePane.iconify.titleAndMnemonic=Rid&uci a icona
+MetalTitlePane.maximize.titleAndMnemonic=In&grandisci
+MetalTitlePane.close.titleAndMnemonic=&Chiudi
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_ja.properties	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_ja.properties	Wed Jul 05 18:14:56 2017 +0200
@@ -1,52 +1,54 @@
-# This properties file is used to create a PropertyResourceBundle
-# It contains Locale specific strings used be the Metal Look and Feel.
-# Currently, the following components need this for support:
-#
-#    FileChooser
-#
-# When this file is read in, the strings are put into the
-# defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.
-# This may change in future versions of Swing as we improve localization
-# support.
-#
-# Refer to the note in basic.properties for a description as to what
-# the mnemonics correspond to and how to calculate them.
-#
-# @author Steve Wilson
-
-
-############ FILE CHOOSER STRINGS #############
-
-FileChooser.lookInLabel.textAndMnemonic=\u53C2\u7167(&I):
-FileChooser.saveInLabel.textAndMnemonic=\u4FDD\u5B58:
-FileChooser.fileNameLabel.textAndMnemonic=\u30D5\u30A1\u30A4\u30EB\u540D(&N):
-FileChooser.folderNameLabel.textAndMnemonic=\u30D5\u30A9\u30EB\u30C0\u540D(&N):
-FileChooser.filesOfTypeLabel.textAndMnemonic=\u30D5\u30A1\u30A4\u30EB\u306E\u30BF\u30A4\u30D7(&T):
-FileChooser.upFolderToolTip.textAndMnemonic=1\u30EC\u30D9\u30EB\u4E0A\u3078
-FileChooser.upFolderAccessibleName=\u4E0A\u3078
-FileChooser.homeFolderToolTip.textAndMnemonic=\u30DB\u30FC\u30E0
-FileChooser.homeFolderAccessibleName=\u30DB\u30FC\u30E0
-FileChooser.newFolderToolTip.textAndMnemonic=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0\u306E\u4F5C\u6210
-FileChooser.newFolderAccessibleName=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0
-FileChooser.newFolderActionLabel.textAndMnemonic=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0
-FileChooser.listViewButtonToolTip.textAndMnemonic=\u30EA\u30B9\u30C8
-FileChooser.listViewButtonAccessibleName=\u30EA\u30B9\u30C8
-FileChooser.listViewActionLabel.textAndMnemonic=\u30EA\u30B9\u30C8
-FileChooser.detailsViewButtonToolTip.textAndMnemonic=\u8A73\u7D30
-FileChooser.detailsViewButtonAccessibleName=\u8A73\u7D30
-FileChooser.detailsViewActionLabel.textAndMnemonic=\u8A73\u7D30
-FileChooser.refreshActionLabel.textAndMnemonic=\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5
-FileChooser.viewMenuLabel.textAndMnemonic=\u8868\u793A
-FileChooser.fileNameHeader.textAndMnemonic=\u540D\u524D
-FileChooser.fileSizeHeader.textAndMnemonic=\u30B5\u30A4\u30BA
-FileChooser.fileTypeHeader.textAndMnemonic=\u30BF\u30A4\u30D7
-FileChooser.fileDateHeader.textAndMnemonic=\u4FEE\u6B63\u65E5
-FileChooser.fileAttrHeader.textAndMnemonic=\u5C5E\u6027
-
-############ Used by MetalTitlePane if rendering window decorations############
-MetalTitlePane.restore.titleAndMnemonic=\u5FA9\u5143(&R)
-MetalTitlePane.iconify.titleAndMnemonic=\u6700\u5C0F\u5316(&E)
-MetalTitlePane.maximize.titleAndMnemonic=\u6700\u5927\u5316(&X)
-MetalTitlePane.close.titleAndMnemonic=\u9589\u3058\u308B(&C)
-
+# This properties file is used to create a PropertyResourceBundle
+# It contains Locale specific strings used be the Metal Look and Feel.
+# Currently, the following components need this for support:
+#
+#    FileChooser
+#
+# When this file is read in, the strings are put into the
+# defaults table.  This is an implementation detail of the current
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
+# support.
+#
+# Refer to the note in basic.properties for a description as to what
+# the mnemonics correspond to and how to calculate them.
+#
+# @author Steve Wilson
+
+
+############ FILE CHOOSER STRINGS #############
+
+FileChooser.lookInLabel.textAndMnemonic=\u53C2\u7167(&I):
+FileChooser.saveInLabel.textAndMnemonic=\u4FDD\u5B58:
+FileChooser.fileNameLabel.textAndMnemonic=\u30D5\u30A1\u30A4\u30EB\u540D(&N):
+FileChooser.folderNameLabel.textAndMnemonic=\u30D5\u30A9\u30EB\u30C0\u540D(&N):
+FileChooser.filesOfTypeLabel.textAndMnemonic=\u30D5\u30A1\u30A4\u30EB\u306E\u30BF\u30A4\u30D7(&T):
+FileChooser.upFolderToolTip.textAndMnemonic=1\u30EC\u30D9\u30EB\u4E0A\u3078
+FileChooser.upFolderAccessibleName=\u4E0A\u3078
+FileChooser.homeFolderToolTip.textAndMnemonic=\u30DB\u30FC\u30E0
+FileChooser.homeFolderAccessibleName=\u30DB\u30FC\u30E0
+FileChooser.newFolderToolTip.textAndMnemonic=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0\u306E\u4F5C\u6210
+FileChooser.newFolderAccessibleName=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0
+FileChooser.newFolderActionLabel.textAndMnemonic=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0
+FileChooser.listViewButtonToolTip.textAndMnemonic=\u30EA\u30B9\u30C8
+FileChooser.listViewButtonAccessibleName=\u30EA\u30B9\u30C8
+FileChooser.listViewActionLabel.textAndMnemonic=\u30EA\u30B9\u30C8
+FileChooser.detailsViewButtonToolTip.textAndMnemonic=\u8A73\u7D30
+FileChooser.detailsViewButtonAccessibleName=\u8A73\u7D30
+FileChooser.detailsViewActionLabel.textAndMnemonic=\u8A73\u7D30
+FileChooser.refreshActionLabel.textAndMnemonic=\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5
+FileChooser.viewMenuLabel.textAndMnemonic=\u8868\u793A
+FileChooser.fileNameHeader.textAndMnemonic=\u540D\u524D
+FileChooser.fileSizeHeader.textAndMnemonic=\u30B5\u30A4\u30BA
+FileChooser.fileTypeHeader.textAndMnemonic=\u30BF\u30A4\u30D7
+FileChooser.fileDateHeader.textAndMnemonic=\u4FEE\u6B63\u65E5
+FileChooser.fileAttrHeader.textAndMnemonic=\u5C5E\u6027
+FileChooser.saveButton.textAndMnemonic=\u4FDD\u5B58
+FileChooser.openButton.textAndMnemonic=\u958B\u304F
+
+############ Used by MetalTitlePane if rendering window decorations############
+MetalTitlePane.restore.titleAndMnemonic=\u5FA9\u5143(&R)
+MetalTitlePane.iconify.titleAndMnemonic=\u6700\u5C0F\u5316(&E)
+MetalTitlePane.maximize.titleAndMnemonic=\u6700\u5927\u5316(&X)
+MetalTitlePane.close.titleAndMnemonic=\u9589\u3058\u308B(&C)
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_ko.properties	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_ko.properties	Wed Jul 05 18:14:56 2017 +0200
@@ -1,52 +1,54 @@
-# This properties file is used to create a PropertyResourceBundle
-# It contains Locale specific strings used be the Metal Look and Feel.
-# Currently, the following components need this for support:
-#
-#    FileChooser
-#
-# When this file is read in, the strings are put into the
-# defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.
-# This may change in future versions of Swing as we improve localization
-# support.
-#
-# Refer to the note in basic.properties for a description as to what
-# the mnemonics correspond to and how to calculate them.
-#
-# @author Steve Wilson
-
-
-############ FILE CHOOSER STRINGS #############
-
-FileChooser.lookInLabel.textAndMnemonic=\uAC80\uC0C9 \uC704\uCE58(&I):
-FileChooser.saveInLabel.textAndMnemonic=\uC800\uC7A5 \uC704\uCE58:
-FileChooser.fileNameLabel.textAndMnemonic=\uD30C\uC77C \uC774\uB984(&N):
-FileChooser.folderNameLabel.textAndMnemonic=\uD3F4\uB354 \uC774\uB984(&N):
-FileChooser.filesOfTypeLabel.textAndMnemonic=\uD30C\uC77C \uC720\uD615(&T):
-FileChooser.upFolderToolTip.textAndMnemonic=\uD55C \uB808\uBCA8 \uC704\uB85C
-FileChooser.upFolderAccessibleName=\uC704\uB85C
-FileChooser.homeFolderToolTip.textAndMnemonic=\uD648
-FileChooser.homeFolderAccessibleName=\uD648
-FileChooser.newFolderToolTip.textAndMnemonic=\uC0C8 \uD3F4\uB354 \uC0DD\uC131
-FileChooser.newFolderAccessibleName=\uC0C8 \uD3F4\uB354
-FileChooser.newFolderActionLabel.textAndMnemonic=\uC0C8 \uD3F4\uB354
-FileChooser.listViewButtonToolTip.textAndMnemonic=\uBAA9\uB85D
-FileChooser.listViewButtonAccessibleName=\uBAA9\uB85D
-FileChooser.listViewActionLabel.textAndMnemonic=\uBAA9\uB85D
-FileChooser.detailsViewButtonToolTip.textAndMnemonic=\uC138\uBD80 \uC815\uBCF4
-FileChooser.detailsViewButtonAccessibleName=\uC138\uBD80 \uC815\uBCF4
-FileChooser.detailsViewActionLabel.textAndMnemonic=\uC138\uBD80 \uC815\uBCF4
-FileChooser.refreshActionLabel.textAndMnemonic=\uC0C8\uB85C \uACE0\uCE68
-FileChooser.viewMenuLabel.textAndMnemonic=\uBCF4\uAE30
-FileChooser.fileNameHeader.textAndMnemonic=\uC774\uB984
-FileChooser.fileSizeHeader.textAndMnemonic=\uD06C\uAE30
-FileChooser.fileTypeHeader.textAndMnemonic=\uC720\uD615
-FileChooser.fileDateHeader.textAndMnemonic=\uC218\uC815 \uB0A0\uC9DC
-FileChooser.fileAttrHeader.textAndMnemonic=\uC18D\uC131
-
-############ Used by MetalTitlePane if rendering window decorations############
-MetalTitlePane.restore.titleAndMnemonic=\uBCF5\uC6D0(&R)
-MetalTitlePane.iconify.titleAndMnemonic=\uCD5C\uC18C\uD654(&E)
-MetalTitlePane.maximize.titleAndMnemonic=\uCD5C\uB300\uD654(&X)
-MetalTitlePane.close.titleAndMnemonic=\uB2EB\uAE30(&C)
-
+# This properties file is used to create a PropertyResourceBundle
+# It contains Locale specific strings used be the Metal Look and Feel.
+# Currently, the following components need this for support:
+#
+#    FileChooser
+#
+# When this file is read in, the strings are put into the
+# defaults table.  This is an implementation detail of the current
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
+# support.
+#
+# Refer to the note in basic.properties for a description as to what
+# the mnemonics correspond to and how to calculate them.
+#
+# @author Steve Wilson
+
+
+############ FILE CHOOSER STRINGS #############
+
+FileChooser.lookInLabel.textAndMnemonic=\uAC80\uC0C9 \uC704\uCE58(&I):
+FileChooser.saveInLabel.textAndMnemonic=\uC800\uC7A5 \uC704\uCE58:
+FileChooser.fileNameLabel.textAndMnemonic=\uD30C\uC77C \uC774\uB984(&N):
+FileChooser.folderNameLabel.textAndMnemonic=\uD3F4\uB354 \uC774\uB984(&N):
+FileChooser.filesOfTypeLabel.textAndMnemonic=\uD30C\uC77C \uC720\uD615(&T):
+FileChooser.upFolderToolTip.textAndMnemonic=\uD55C \uB808\uBCA8 \uC704\uB85C
+FileChooser.upFolderAccessibleName=\uC704\uB85C
+FileChooser.homeFolderToolTip.textAndMnemonic=\uD648
+FileChooser.homeFolderAccessibleName=\uD648
+FileChooser.newFolderToolTip.textAndMnemonic=\uC0C8 \uD3F4\uB354 \uC0DD\uC131
+FileChooser.newFolderAccessibleName=\uC0C8 \uD3F4\uB354
+FileChooser.newFolderActionLabel.textAndMnemonic=\uC0C8 \uD3F4\uB354
+FileChooser.listViewButtonToolTip.textAndMnemonic=\uBAA9\uB85D
+FileChooser.listViewButtonAccessibleName=\uBAA9\uB85D
+FileChooser.listViewActionLabel.textAndMnemonic=\uBAA9\uB85D
+FileChooser.detailsViewButtonToolTip.textAndMnemonic=\uC138\uBD80 \uC815\uBCF4
+FileChooser.detailsViewButtonAccessibleName=\uC138\uBD80 \uC815\uBCF4
+FileChooser.detailsViewActionLabel.textAndMnemonic=\uC138\uBD80 \uC815\uBCF4
+FileChooser.refreshActionLabel.textAndMnemonic=\uC0C8\uB85C \uACE0\uCE68
+FileChooser.viewMenuLabel.textAndMnemonic=\uBCF4\uAE30
+FileChooser.fileNameHeader.textAndMnemonic=\uC774\uB984
+FileChooser.fileSizeHeader.textAndMnemonic=\uD06C\uAE30
+FileChooser.fileTypeHeader.textAndMnemonic=\uC720\uD615
+FileChooser.fileDateHeader.textAndMnemonic=\uC218\uC815 \uB0A0\uC9DC
+FileChooser.fileAttrHeader.textAndMnemonic=\uC18D\uC131
+FileChooser.saveButton.textAndMnemonic=\uC800\uC7A5
+FileChooser.openButton.textAndMnemonic=\uC5F4\uAE30
+
+############ Used by MetalTitlePane if rendering window decorations############
+MetalTitlePane.restore.titleAndMnemonic=\uBCF5\uC6D0(&R)
+MetalTitlePane.iconify.titleAndMnemonic=\uCD5C\uC18C\uD654(&E)
+MetalTitlePane.maximize.titleAndMnemonic=\uCD5C\uB300\uD654(&X)
+MetalTitlePane.close.titleAndMnemonic=\uB2EB\uAE30(&C)
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_pt_BR.properties	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_pt_BR.properties	Wed Jul 05 18:14:56 2017 +0200
@@ -1,52 +1,54 @@
-# This properties file is used to create a PropertyResourceBundle
-# It contains Locale specific strings used be the Metal Look and Feel.
-# Currently, the following components need this for support:
-#
-#    FileChooser
-#
-# When this file is read in, the strings are put into the
-# defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.
-# This may change in future versions of Swing as we improve localization
-# support.
-#
-# Refer to the note in basic.properties for a description as to what
-# the mnemonics correspond to and how to calculate them.
-#
-# @author Steve Wilson
-
-
-############ FILE CHOOSER STRINGS #############
-
-FileChooser.lookInLabel.textAndMnemonic=Consultar Em(&I):
-FileChooser.saveInLabel.textAndMnemonic=Salvar Em:
-FileChooser.fileNameLabel.textAndMnemonic=&Nome do Arquivo:
-FileChooser.folderNameLabel.textAndMnemonic=&Nome da pasta:
-FileChooser.filesOfTypeLabel.textAndMnemonic=Arquivos do &Tipo:
-FileChooser.upFolderToolTip.textAndMnemonic=Um N\u00EDvel Acima
-FileChooser.upFolderAccessibleName=Acima
-FileChooser.homeFolderToolTip.textAndMnemonic=In\u00EDcio
-FileChooser.homeFolderAccessibleName=In\u00EDcio
-FileChooser.newFolderToolTip.textAndMnemonic=Criar Nova Pasta
-FileChooser.newFolderAccessibleName=Nova Pasta
-FileChooser.newFolderActionLabel.textAndMnemonic=Nova Pasta
-FileChooser.listViewButtonToolTip.textAndMnemonic=Lista
-FileChooser.listViewButtonAccessibleName=Lista
-FileChooser.listViewActionLabel.textAndMnemonic=Lista
-FileChooser.detailsViewButtonToolTip.textAndMnemonic=Detalhes
-FileChooser.detailsViewButtonAccessibleName=Detalhes
-FileChooser.detailsViewActionLabel.textAndMnemonic=Detalhes
-FileChooser.refreshActionLabel.textAndMnemonic=Atualizar
-FileChooser.viewMenuLabel.textAndMnemonic=Exibir
-FileChooser.fileNameHeader.textAndMnemonic=Nome
-FileChooser.fileSizeHeader.textAndMnemonic=Tamanho
-FileChooser.fileTypeHeader.textAndMnemonic=Tipo
-FileChooser.fileDateHeader.textAndMnemonic=Modificado
-FileChooser.fileAttrHeader.textAndMnemonic=Atributos
-
-############ Used by MetalTitlePane if rendering window decorations############
-MetalTitlePane.restore.titleAndMnemonic=&Restaurar
-MetalTitlePane.iconify.titleAndMnemonic=&Minimizar
-MetalTitlePane.maximize.titleAndMnemonic=Ma&ximizar
-MetalTitlePane.close.titleAndMnemonic=&Fechar
-
+# This properties file is used to create a PropertyResourceBundle
+# It contains Locale specific strings used be the Metal Look and Feel.
+# Currently, the following components need this for support:
+#
+#    FileChooser
+#
+# When this file is read in, the strings are put into the
+# defaults table.  This is an implementation detail of the current
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
+# support.
+#
+# Refer to the note in basic.properties for a description as to what
+# the mnemonics correspond to and how to calculate them.
+#
+# @author Steve Wilson
+
+
+############ FILE CHOOSER STRINGS #############
+
+FileChooser.lookInLabel.textAndMnemonic=Consultar Em(&I):
+FileChooser.saveInLabel.textAndMnemonic=Salvar Em:
+FileChooser.fileNameLabel.textAndMnemonic=&Nome do Arquivo:
+FileChooser.folderNameLabel.textAndMnemonic=&Nome da pasta:
+FileChooser.filesOfTypeLabel.textAndMnemonic=Arquivos do &Tipo:
+FileChooser.upFolderToolTip.textAndMnemonic=Um N\u00EDvel Acima
+FileChooser.upFolderAccessibleName=Acima
+FileChooser.homeFolderToolTip.textAndMnemonic=In\u00EDcio
+FileChooser.homeFolderAccessibleName=In\u00EDcio
+FileChooser.newFolderToolTip.textAndMnemonic=Criar Nova Pasta
+FileChooser.newFolderAccessibleName=Nova Pasta
+FileChooser.newFolderActionLabel.textAndMnemonic=Nova Pasta
+FileChooser.listViewButtonToolTip.textAndMnemonic=Lista
+FileChooser.listViewButtonAccessibleName=Lista
+FileChooser.listViewActionLabel.textAndMnemonic=Lista
+FileChooser.detailsViewButtonToolTip.textAndMnemonic=Detalhes
+FileChooser.detailsViewButtonAccessibleName=Detalhes
+FileChooser.detailsViewActionLabel.textAndMnemonic=Detalhes
+FileChooser.refreshActionLabel.textAndMnemonic=Atualizar
+FileChooser.viewMenuLabel.textAndMnemonic=Exibir
+FileChooser.fileNameHeader.textAndMnemonic=Nome
+FileChooser.fileSizeHeader.textAndMnemonic=Tamanho
+FileChooser.fileTypeHeader.textAndMnemonic=Tipo
+FileChooser.fileDateHeader.textAndMnemonic=Modificado
+FileChooser.fileAttrHeader.textAndMnemonic=Atributos
+FileChooser.saveButton.textAndMnemonic=Salvar
+FileChooser.openButton.textAndMnemonic=Abrir
+
+############ Used by MetalTitlePane if rendering window decorations############
+MetalTitlePane.restore.titleAndMnemonic=&Restaurar
+MetalTitlePane.iconify.titleAndMnemonic=&Minimizar
+MetalTitlePane.maximize.titleAndMnemonic=Ma&ximizar
+MetalTitlePane.close.titleAndMnemonic=&Fechar
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_sv.properties	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_sv.properties	Wed Jul 05 18:14:56 2017 +0200
@@ -1,52 +1,54 @@
-# This properties file is used to create a PropertyResourceBundle
-# It contains Locale specific strings used be the Metal Look and Feel.
-# Currently, the following components need this for support:
-#
-#    FileChooser
-#
-# When this file is read in, the strings are put into the
-# defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.
-# This may change in future versions of Swing as we improve localization
-# support.
-#
-# Refer to the note in basic.properties for a description as to what
-# the mnemonics correspond to and how to calculate them.
-#
-# @author Steve Wilson
-
-
-############ FILE CHOOSER STRINGS #############
-
-FileChooser.lookInLabel.textAndMnemonic=Leta &i:
-FileChooser.saveInLabel.textAndMnemonic=Spara i:
-FileChooser.fileNameLabel.textAndMnemonic=Fil&namn:
-FileChooser.folderNameLabel.textAndMnemonic=Mapp(&N):
-FileChooser.filesOfTypeLabel.textAndMnemonic=Filforma&t:
-FileChooser.upFolderToolTip.textAndMnemonic=Upp en niv\u00E5
-FileChooser.upFolderAccessibleName=Upp
-FileChooser.homeFolderToolTip.textAndMnemonic=Hem
-FileChooser.homeFolderAccessibleName=Hem
-FileChooser.newFolderToolTip.textAndMnemonic=Skapa ny mapp
-FileChooser.newFolderAccessibleName=Ny mapp
-FileChooser.newFolderActionLabel.textAndMnemonic=Ny mapp
-FileChooser.listViewButtonToolTip.textAndMnemonic=Lista
-FileChooser.listViewButtonAccessibleName=Lista
-FileChooser.listViewActionLabel.textAndMnemonic=Lista
-FileChooser.detailsViewButtonToolTip.textAndMnemonic=Detaljer
-FileChooser.detailsViewButtonAccessibleName=Detaljer
-FileChooser.detailsViewActionLabel.textAndMnemonic=Detaljer
-FileChooser.refreshActionLabel.textAndMnemonic=F\u00F6rnya
-FileChooser.viewMenuLabel.textAndMnemonic=Vy
-FileChooser.fileNameHeader.textAndMnemonic=Namn
-FileChooser.fileSizeHeader.textAndMnemonic=Storlek
-FileChooser.fileTypeHeader.textAndMnemonic=Typ
-FileChooser.fileDateHeader.textAndMnemonic=\u00C4ndrad
-FileChooser.fileAttrHeader.textAndMnemonic=Attribut
-
-############ Used by MetalTitlePane if rendering window decorations############
-MetalTitlePane.restore.titleAndMnemonic=\u00C5terst\u00E4ll(&R)
-MetalTitlePane.iconify.titleAndMnemonic=Minim&era
-MetalTitlePane.maximize.titleAndMnemonic=Ma&ximera
-MetalTitlePane.close.titleAndMnemonic=St\u00E4ng(&S)
-
+# This properties file is used to create a PropertyResourceBundle
+# It contains Locale specific strings used be the Metal Look and Feel.
+# Currently, the following components need this for support:
+#
+#    FileChooser
+#
+# When this file is read in, the strings are put into the
+# defaults table.  This is an implementation detail of the current
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
+# support.
+#
+# Refer to the note in basic.properties for a description as to what
+# the mnemonics correspond to and how to calculate them.
+#
+# @author Steve Wilson
+
+
+############ FILE CHOOSER STRINGS #############
+
+FileChooser.lookInLabel.textAndMnemonic=Leta &i:
+FileChooser.saveInLabel.textAndMnemonic=Spara i:
+FileChooser.fileNameLabel.textAndMnemonic=Fil&namn:
+FileChooser.folderNameLabel.textAndMnemonic=Mapp(&N):
+FileChooser.filesOfTypeLabel.textAndMnemonic=Filforma&t:
+FileChooser.upFolderToolTip.textAndMnemonic=Upp en niv\u00E5
+FileChooser.upFolderAccessibleName=Upp
+FileChooser.homeFolderToolTip.textAndMnemonic=Hem
+FileChooser.homeFolderAccessibleName=Hem
+FileChooser.newFolderToolTip.textAndMnemonic=Skapa ny mapp
+FileChooser.newFolderAccessibleName=Ny mapp
+FileChooser.newFolderActionLabel.textAndMnemonic=Ny mapp
+FileChooser.listViewButtonToolTip.textAndMnemonic=Lista
+FileChooser.listViewButtonAccessibleName=Lista
+FileChooser.listViewActionLabel.textAndMnemonic=Lista
+FileChooser.detailsViewButtonToolTip.textAndMnemonic=Detaljer
+FileChooser.detailsViewButtonAccessibleName=Detaljer
+FileChooser.detailsViewActionLabel.textAndMnemonic=Detaljer
+FileChooser.refreshActionLabel.textAndMnemonic=F\u00F6rnya
+FileChooser.viewMenuLabel.textAndMnemonic=Vy
+FileChooser.fileNameHeader.textAndMnemonic=Namn
+FileChooser.fileSizeHeader.textAndMnemonic=Storlek
+FileChooser.fileTypeHeader.textAndMnemonic=Typ
+FileChooser.fileDateHeader.textAndMnemonic=\u00C4ndrad
+FileChooser.fileAttrHeader.textAndMnemonic=Attribut
+FileChooser.saveButton.textAndMnemonic=Spara
+FileChooser.openButton.textAndMnemonic=\u00D6ppna
+
+############ Used by MetalTitlePane if rendering window decorations############
+MetalTitlePane.restore.titleAndMnemonic=\u00C5terst\u00E4ll(&R)
+MetalTitlePane.iconify.titleAndMnemonic=Minim&era
+MetalTitlePane.maximize.titleAndMnemonic=Ma&ximera
+MetalTitlePane.close.titleAndMnemonic=St\u00E4ng(&S)
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_zh_CN.properties	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_zh_CN.properties	Wed Jul 05 18:14:56 2017 +0200
@@ -1,52 +1,54 @@
-# This properties file is used to create a PropertyResourceBundle
-# It contains Locale specific strings used be the Metal Look and Feel.
-# Currently, the following components need this for support:
-#
-#    FileChooser
-#
-# When this file is read in, the strings are put into the
-# defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.
-# This may change in future versions of Swing as we improve localization
-# support.
-#
-# Refer to the note in basic.properties for a description as to what
-# the mnemonics correspond to and how to calculate them.
-#
-# @author Steve Wilson
-
-
-############ FILE CHOOSER STRINGS #############
-
-FileChooser.lookInLabel.textAndMnemonic=\u67E5\u770B(&I):
-FileChooser.saveInLabel.textAndMnemonic=\u4FDD\u5B58:
-FileChooser.fileNameLabel.textAndMnemonic=\u6587\u4EF6\u540D(&N):
-FileChooser.folderNameLabel.textAndMnemonic=\u6587\u4EF6\u5939\u540D(&N):
-FileChooser.filesOfTypeLabel.textAndMnemonic=\u6587\u4EF6\u7C7B\u578B(&T):
-FileChooser.upFolderToolTip.textAndMnemonic=\u5411\u4E0A\u4E00\u7EA7
-FileChooser.upFolderAccessibleName=\u5411\u4E0A
-FileChooser.homeFolderToolTip.textAndMnemonic=\u4E3B\u76EE\u5F55
-FileChooser.homeFolderAccessibleName=\u4E3B\u76EE\u5F55
-FileChooser.newFolderToolTip.textAndMnemonic=\u521B\u5EFA\u65B0\u6587\u4EF6\u5939
-FileChooser.newFolderAccessibleName=\u65B0\u5EFA\u6587\u4EF6\u5939
-FileChooser.newFolderActionLabel.textAndMnemonic=\u65B0\u5EFA\u6587\u4EF6\u5939
-FileChooser.listViewButtonToolTip.textAndMnemonic=\u5217\u8868
-FileChooser.listViewButtonAccessibleName=\u5217\u8868
-FileChooser.listViewActionLabel.textAndMnemonic=\u5217\u8868
-FileChooser.detailsViewButtonToolTip.textAndMnemonic=\u8BE6\u7EC6\u8D44\u6599
-FileChooser.detailsViewButtonAccessibleName=\u8BE6\u7EC6\u8D44\u6599
-FileChooser.detailsViewActionLabel.textAndMnemonic=\u8BE6\u7EC6\u8D44\u6599
-FileChooser.refreshActionLabel.textAndMnemonic=\u5237\u65B0
-FileChooser.viewMenuLabel.textAndMnemonic=\u89C6\u56FE
-FileChooser.fileNameHeader.textAndMnemonic=\u540D\u79F0
-FileChooser.fileSizeHeader.textAndMnemonic=\u5927\u5C0F
-FileChooser.fileTypeHeader.textAndMnemonic=\u7C7B\u578B
-FileChooser.fileDateHeader.textAndMnemonic=\u4FEE\u6539\u65E5\u671F
-FileChooser.fileAttrHeader.textAndMnemonic=\u5C5E\u6027
-
-############ Used by MetalTitlePane if rendering window decorations############
-MetalTitlePane.restore.titleAndMnemonic=\u8FD8\u539F(&R)
-MetalTitlePane.iconify.titleAndMnemonic=\u6700\u5C0F\u5316(&E)
-MetalTitlePane.maximize.titleAndMnemonic=\u6700\u5927\u5316(&X)
-MetalTitlePane.close.titleAndMnemonic=\u5173\u95ED(&C)
-
+# This properties file is used to create a PropertyResourceBundle
+# It contains Locale specific strings used be the Metal Look and Feel.
+# Currently, the following components need this for support:
+#
+#    FileChooser
+#
+# When this file is read in, the strings are put into the
+# defaults table.  This is an implementation detail of the current
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
+# support.
+#
+# Refer to the note in basic.properties for a description as to what
+# the mnemonics correspond to and how to calculate them.
+#
+# @author Steve Wilson
+
+
+############ FILE CHOOSER STRINGS #############
+
+FileChooser.lookInLabel.textAndMnemonic=\u67E5\u770B(&I):
+FileChooser.saveInLabel.textAndMnemonic=\u4FDD\u5B58:
+FileChooser.fileNameLabel.textAndMnemonic=\u6587\u4EF6\u540D(&N):
+FileChooser.folderNameLabel.textAndMnemonic=\u6587\u4EF6\u5939\u540D(&N):
+FileChooser.filesOfTypeLabel.textAndMnemonic=\u6587\u4EF6\u7C7B\u578B(&T):
+FileChooser.upFolderToolTip.textAndMnemonic=\u5411\u4E0A\u4E00\u7EA7
+FileChooser.upFolderAccessibleName=\u5411\u4E0A
+FileChooser.homeFolderToolTip.textAndMnemonic=\u4E3B\u76EE\u5F55
+FileChooser.homeFolderAccessibleName=\u4E3B\u76EE\u5F55
+FileChooser.newFolderToolTip.textAndMnemonic=\u521B\u5EFA\u65B0\u6587\u4EF6\u5939
+FileChooser.newFolderAccessibleName=\u65B0\u5EFA\u6587\u4EF6\u5939
+FileChooser.newFolderActionLabel.textAndMnemonic=\u65B0\u5EFA\u6587\u4EF6\u5939
+FileChooser.listViewButtonToolTip.textAndMnemonic=\u5217\u8868
+FileChooser.listViewButtonAccessibleName=\u5217\u8868
+FileChooser.listViewActionLabel.textAndMnemonic=\u5217\u8868
+FileChooser.detailsViewButtonToolTip.textAndMnemonic=\u8BE6\u7EC6\u8D44\u6599
+FileChooser.detailsViewButtonAccessibleName=\u8BE6\u7EC6\u8D44\u6599
+FileChooser.detailsViewActionLabel.textAndMnemonic=\u8BE6\u7EC6\u8D44\u6599
+FileChooser.refreshActionLabel.textAndMnemonic=\u5237\u65B0
+FileChooser.viewMenuLabel.textAndMnemonic=\u89C6\u56FE
+FileChooser.fileNameHeader.textAndMnemonic=\u540D\u79F0
+FileChooser.fileSizeHeader.textAndMnemonic=\u5927\u5C0F
+FileChooser.fileTypeHeader.textAndMnemonic=\u7C7B\u578B
+FileChooser.fileDateHeader.textAndMnemonic=\u4FEE\u6539\u65E5\u671F
+FileChooser.fileAttrHeader.textAndMnemonic=\u5C5E\u6027
+FileChooser.saveButton.textAndMnemonic=\u4FDD\u5B58
+FileChooser.openButton.textAndMnemonic=\u6253\u5F00
+
+############ Used by MetalTitlePane if rendering window decorations############
+MetalTitlePane.restore.titleAndMnemonic=\u8FD8\u539F(&R)
+MetalTitlePane.iconify.titleAndMnemonic=\u6700\u5C0F\u5316(&E)
+MetalTitlePane.maximize.titleAndMnemonic=\u6700\u5927\u5316(&X)
+MetalTitlePane.close.titleAndMnemonic=\u5173\u95ED(&C)
+
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_zh_TW.properties	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_zh_TW.properties	Wed Jul 05 18:14:56 2017 +0200
@@ -1,52 +1,54 @@
-# This properties file is used to create a PropertyResourceBundle
-# It contains Locale specific strings used be the Metal Look and Feel.
-# Currently, the following components need this for support:
-#
-#    FileChooser
-#
-# When this file is read in, the strings are put into the
-# defaults table.  This is an implementation detail of the current
-# workings of Swing.  DO NOT DEPEND ON THIS.
-# This may change in future versions of Swing as we improve localization
-# support.
-#
-# Refer to the note in basic.properties for a description as to what
-# the mnemonics correspond to and how to calculate them.
-#
-# @author Steve Wilson
-
-
-############ FILE CHOOSER STRINGS #############
-
-FileChooser.lookInLabel.textAndMnemonic=\u67E5\u8A62(&I):
-FileChooser.saveInLabel.textAndMnemonic=\u5132\u5B58\u65BC:
-FileChooser.fileNameLabel.textAndMnemonic=\u6A94\u6848\u540D\u7A31(&N):
-FileChooser.folderNameLabel.textAndMnemonic=\u8CC7\u6599\u593E\u540D\u7A31(&N):
-FileChooser.filesOfTypeLabel.textAndMnemonic=\u6A94\u6848\u985E\u578B(&T):
-FileChooser.upFolderToolTip.textAndMnemonic=\u5F80\u4E0A\u4E00\u5C64
-FileChooser.upFolderAccessibleName=\u5F80\u4E0A
-FileChooser.homeFolderToolTip.textAndMnemonic=\u4E3B\u76EE\u9304
-FileChooser.homeFolderAccessibleName=\u4E3B\u76EE\u9304
-FileChooser.newFolderToolTip.textAndMnemonic=\u5EFA\u7ACB\u65B0\u8CC7\u6599\u593E
-FileChooser.newFolderAccessibleName=\u65B0\u8CC7\u6599\u593E
-FileChooser.newFolderActionLabel.textAndMnemonic=\u65B0\u8CC7\u6599\u593E
-FileChooser.listViewButtonToolTip.textAndMnemonic=\u6E05\u55AE
-FileChooser.listViewButtonAccessibleName=\u6E05\u55AE
-FileChooser.listViewActionLabel.textAndMnemonic=\u6E05\u55AE
-FileChooser.detailsViewButtonToolTip.textAndMnemonic=\u8A73\u7D30\u8CC7\u8A0A
-FileChooser.detailsViewButtonAccessibleName=\u8A73\u7D30\u8CC7\u8A0A
-FileChooser.detailsViewActionLabel.textAndMnemonic=\u8A73\u7D30\u8CC7\u8A0A
-FileChooser.refreshActionLabel.textAndMnemonic=\u91CD\u65B0\u6574\u7406
-FileChooser.viewMenuLabel.textAndMnemonic=\u6AA2\u8996
-FileChooser.fileNameHeader.textAndMnemonic=\u540D\u7A31
-FileChooser.fileSizeHeader.textAndMnemonic=\u5927\u5C0F
-FileChooser.fileTypeHeader.textAndMnemonic=\u985E\u578B
-FileChooser.fileDateHeader.textAndMnemonic=\u4FEE\u6539\u65E5\u671F
-FileChooser.fileAttrHeader.textAndMnemonic=\u5C6C\u6027
-
-############ Used by MetalTitlePane if rendering window decorations############
-MetalTitlePane.restore.titleAndMnemonic=\u56DE\u5FA9(&R)
-MetalTitlePane.iconify.titleAndMnemonic=\u6700\u5C0F\u5316(&E)
-MetalTitlePane.maximize.titleAndMnemonic=\u6700\u5927\u5316(&X)
-MetalTitlePane.close.titleAndMnemonic=\u95DC\u9589(&C)
-
+# This properties file is used to create a PropertyResourceBundle
+# It contains Locale specific strings used be the Metal Look and Feel.
+# Currently, the following components need this for support:
+#
+#    FileChooser
+#
+# When this file is read in, the strings are put into the
+# defaults table.  This is an implementation detail of the current
+# workings of Swing.  DO NOT DEPEND ON THIS.
+# This may change in future versions of Swing as we improve localization
+# support.
+#
+# Refer to the note in basic.properties for a description as to what
+# the mnemonics correspond to and how to calculate them.
+#
+# @author Steve Wilson
+
+
+############ FILE CHOOSER STRINGS #############
+
+FileChooser.lookInLabel.textAndMnemonic=\u67E5\u8A62(&I):
+FileChooser.saveInLabel.textAndMnemonic=\u5132\u5B58\u65BC:
+FileChooser.fileNameLabel.textAndMnemonic=\u6A94\u6848\u540D\u7A31(&N):
+FileChooser.folderNameLabel.textAndMnemonic=\u8CC7\u6599\u593E\u540D\u7A31(&N):
+FileChooser.filesOfTypeLabel.textAndMnemonic=\u6A94\u6848\u985E\u578B(&T):
+FileChooser.upFolderToolTip.textAndMnemonic=\u5F80\u4E0A\u4E00\u5C64
+FileChooser.upFolderAccessibleName=\u5F80\u4E0A
+FileChooser.homeFolderToolTip.textAndMnemonic=\u4E3B\u76EE\u9304
+FileChooser.homeFolderAccessibleName=\u4E3B\u76EE\u9304
+FileChooser.newFolderToolTip.textAndMnemonic=\u5EFA\u7ACB\u65B0\u8CC7\u6599\u593E
+FileChooser.newFolderAccessibleName=\u65B0\u8CC7\u6599\u593E
+FileChooser.newFolderActionLabel.textAndMnemonic=\u65B0\u8CC7\u6599\u593E
+FileChooser.listViewButtonToolTip.textAndMnemonic=\u6E05\u55AE
+FileChooser.listViewButtonAccessibleName=\u6E05\u55AE
+FileChooser.listViewActionLabel.textAndMnemonic=\u6E05\u55AE
+FileChooser.detailsViewButtonToolTip.textAndMnemonic=\u8A73\u7D30\u8CC7\u8A0A
+FileChooser.detailsViewButtonAccessibleName=\u8A73\u7D30\u8CC7\u8A0A
+FileChooser.detailsViewActionLabel.textAndMnemonic=\u8A73\u7D30\u8CC7\u8A0A
+FileChooser.refreshActionLabel.textAndMnemonic=\u91CD\u65B0\u6574\u7406
+FileChooser.viewMenuLabel.textAndMnemonic=\u6AA2\u8996
+FileChooser.fileNameHeader.textAndMnemonic=\u540D\u7A31
+FileChooser.fileSizeHeader.textAndMnemonic=\u5927\u5C0F
+FileChooser.fileTypeHeader.textAndMnemonic=\u985E\u578B
+FileChooser.fileDateHeader.textAndMnemonic=\u4FEE\u6539\u65E5\u671F
+FileChooser.fileAttrHeader.textAndMnemonic=\u5C6C\u6027
+FileChooser.saveButton.textAndMnemonic=\u5132\u5B58
+FileChooser.openButton.textAndMnemonic=\u958B\u555F
+
+############ Used by MetalTitlePane if rendering window decorations############
+MetalTitlePane.restore.titleAndMnemonic=\u56DE\u5FA9(&R)
+MetalTitlePane.iconify.titleAndMnemonic=\u6700\u5C0F\u5316(&E)
+MetalTitlePane.maximize.titleAndMnemonic=\u6700\u5927\u5316(&X)
+MetalTitlePane.close.titleAndMnemonic=\u95DC\u9589(&C)
+
--- a/jdk/src/share/classes/java/awt/Font.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/java/awt/Font.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2012, 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,6 +36,7 @@
 import java.awt.peer.FontPeer;
 import java.io.*;
 import java.lang.ref.SoftReference;
+import java.nio.file.Files;
 import java.security.AccessController;
 import java.security.PrivilegedExceptionAction;
 import java.text.AttributedCharacterIterator.Attribute;
@@ -831,7 +832,7 @@
         File f = null;
         boolean hasPerm = false;
         try {
-            f = File.createTempFile("+~JT", ".tmp", null);
+            f = Files.createTempFile("+~JT", ".tmp").toFile();
             f.delete();
             f = null;
             hasPerm = true;
@@ -881,7 +882,7 @@
             final File tFile = AccessController.doPrivileged(
                 new PrivilegedExceptionAction<File>() {
                     public File run() throws IOException {
-                        return File.createTempFile("+~JF", ".tmp", null);
+                        return Files.createTempFile("+~JF", ".tmp").toFile();
                     }
                 }
             );
--- a/jdk/src/share/classes/java/io/SerialCallbackContext.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/java/io/SerialCallbackContext.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,54 +1,74 @@
-  /*
-   * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
-   * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-   */
-
-  package java.io;
+/*
+ * Copyright (c) 2006, 2012, 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.
+ */
 
-  /**
-   * Context during upcalls from object stream to class-defined
-   * readObject/writeObject methods.
-   * Holds object currently being deserialized and descriptor for current class.
-   *
-   * This context keeps track of the thread it was constructed on, and allows
-   * only a single call of defaultReadObject, readFields, defaultWriteObject
-   * or writeFields which must be invoked on the same thread before the class's
-   * readObject/writeObject method has returned.
-   * If not set to the current thread, the getObj method throws NotActiveException.
-   */
-  final class SerialCallbackContext {
-      private final Object obj;
-      private final ObjectStreamClass desc;
-      /**
-       * Thread this context is in use by.
-       * As this only works in one thread, we do not need to worry about thread-safety.
-       */
-      private Thread thread;
+package java.io;
 
-      public SerialCallbackContext(Object obj, ObjectStreamClass desc) {
-          this.obj = obj;
-          this.desc = desc;
-          this.thread = Thread.currentThread();
-      }
-
-      public Object getObj() throws NotActiveException {
-          checkAndSetUsed();
-          return obj;
-      }
+/**
+ * Context during upcalls from object stream to class-defined
+ * readObject/writeObject methods.
+ * Holds object currently being deserialized and descriptor for current class.
+ *
+ * This context keeps track of the thread it was constructed on, and allows
+ * only a single call of defaultReadObject, readFields, defaultWriteObject
+ * or writeFields which must be invoked on the same thread before the class's
+ * readObject/writeObject method has returned.
+ * If not set to the current thread, the getObj method throws NotActiveException.
+ */
+final class SerialCallbackContext {
+    private final Object obj;
+    private final ObjectStreamClass desc;
+    /**
+     * Thread this context is in use by.
+     * As this only works in one thread, we do not need to worry about thread-safety.
+     */
+    private Thread thread;
 
-      public ObjectStreamClass getDesc() {
-          return desc;
-      }
+    public SerialCallbackContext(Object obj, ObjectStreamClass desc) {
+        this.obj = obj;
+        this.desc = desc;
+        this.thread = Thread.currentThread();
+    }
+
+    public Object getObj() throws NotActiveException {
+        checkAndSetUsed();
+        return obj;
+    }
 
-      private void checkAndSetUsed() throws NotActiveException {
-          if (thread != Thread.currentThread()) {
-               throw new NotActiveException(
-                "not in readObject invocation or fields already read");
-          }
-          thread = null;
-      }
+    public ObjectStreamClass getDesc() {
+        return desc;
+    }
 
-      public void setUsed() {
-          thread = null;
-      }
-  }
+    private void checkAndSetUsed() throws NotActiveException {
+        if (thread != Thread.currentThread()) {
+             throw new NotActiveException(
+              "not in readObject invocation or fields already read");
+        }
+        thread = null;
+    }
+
+    public void setUsed() {
+        thread = null;
+    }
+}
--- a/jdk/src/share/classes/java/lang/invoke/MethodHandles.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/java/lang/invoke/MethodHandles.java	Wed Jul 05 18:14:56 2017 +0200
@@ -407,7 +407,7 @@
          * an access$N method.
          */
         Lookup() {
-            this(getCallerClassAtEntryPoint(), ALL_MODES);
+            this(getCallerClassAtEntryPoint(false), ALL_MODES);
             // make sure we haven't accidentally picked up a privileged class:
             checkUnprivilegedlookupClass(lookupClass);
         }
@@ -461,8 +461,8 @@
                 && !VerifyAccess.isSamePackageMember(this.lookupClass, requestedLookupClass)) {
                 newModes &= ~PRIVATE;
             }
-            if (newModes == PUBLIC
-                && !VerifyAccess.isClassAccessible(requestedLookupClass, this.lookupClass)) {
+            if ((newModes & PUBLIC) != 0
+                && !VerifyAccess.isClassAccessible(requestedLookupClass, this.lookupClass, allowedModes)) {
                 // The requested class it not accessible from the lookup class.
                 // No permissions.
                 newModes = 0;
@@ -540,13 +540,17 @@
             }
         }
 
-        // call this from an entry point method in Lookup with extraFrames=0.
-        private static Class<?> getCallerClassAtEntryPoint() {
+        /* Obtain the external caller class, when called from Lookup.<init> or a first-level subroutine. */
+        private static Class<?> getCallerClassAtEntryPoint(boolean inSubroutine) {
             final int CALLER_DEPTH = 4;
+            //  Stack for the constructor entry point (inSubroutine=false):
             // 0: Reflection.getCC, 1: getCallerClassAtEntryPoint,
             // 2: Lookup.<init>, 3: MethodHandles.*, 4: caller
+            //  The stack is slightly different for a subroutine of a Lookup.find* method:
+            // 2: Lookup.*, 3: Lookup.find*.*, 4: caller
             // Note:  This should be the only use of getCallerClass in this file.
-            assert(Reflection.getCallerClass(CALLER_DEPTH-1) == MethodHandles.class);
+            assert(Reflection.getCallerClass(CALLER_DEPTH-2) == Lookup.class);
+            assert(Reflection.getCallerClass(CALLER_DEPTH-1) == (inSubroutine ? Lookup.class : MethodHandles.class));
             return Reflection.getCallerClass(CALLER_DEPTH);
         }
 
@@ -1087,7 +1091,7 @@
 
         void checkSymbolicClass(Class<?> refc) throws IllegalAccessException {
             Class<?> caller = lookupClassOrNull();
-            if (caller != null && !VerifyAccess.isClassAccessible(refc, caller))
+            if (caller != null && !VerifyAccess.isClassAccessible(refc, caller, allowedModes))
                 throw new MemberName(refc).makeAccessException("symbolic reference class is not public", this);
         }
 
@@ -1102,7 +1106,13 @@
             // Step 1:
             smgr.checkMemberAccess(refc, Member.PUBLIC);
             // Step 2:
-            if (!VerifyAccess.classLoaderIsAncestor(lookupClass, refc))
+            Class<?> callerClass = ((allowedModes & PRIVATE) != 0
+                                    ? lookupClass  // for strong access modes, no extra check
+                                    // next line does stack walk magic; do not refactor:
+                                    : getCallerClassAtEntryPoint(true));
+            if (!VerifyAccess.classLoaderIsAncestor(lookupClass, refc) ||
+                (callerClass != lookupClass &&
+                 !VerifyAccess.classLoaderIsAncestor(callerClass, refc)))
                 smgr.checkPackageAccess(VerifyAccess.getPackageName(refc));
             // Step 3:
             if (m.isPublic()) return;
@@ -1153,9 +1163,10 @@
             int requestedModes = fixmods(mods);  // adjust 0 => PACKAGE
             if ((requestedModes & allowedModes) != 0
                 && VerifyAccess.isMemberAccessible(refc, m.getDeclaringClass(),
-                                                   mods, lookupClass()))
+                                                   mods, lookupClass(), allowedModes))
                 return;
             if (((requestedModes & ~allowedModes) & PROTECTED) != 0
+                && (allowedModes & PACKAGE) != 0
                 && VerifyAccess.isSamePackage(m.getDeclaringClass(), lookupClass()))
                 // Protected members can also be checked as if they were package-private.
                 return;
@@ -1170,9 +1181,9 @@
                                (defc == refc ||
                                 Modifier.isPublic(refc.getModifiers())));
             if (!classOK && (allowedModes & PACKAGE) != 0) {
-                classOK = (VerifyAccess.isClassAccessible(defc, lookupClass()) &&
+                classOK = (VerifyAccess.isClassAccessible(defc, lookupClass(), ALL_MODES) &&
                            (defc == refc ||
-                            VerifyAccess.isClassAccessible(refc, lookupClass())));
+                            VerifyAccess.isClassAccessible(refc, lookupClass(), ALL_MODES)));
             }
             if (!classOK)
                 return "class is not public";
--- a/jdk/src/share/classes/java/util/HashMap.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/java/util/HashMap.java	Wed Jul 05 18:14:56 2017 +0200
@@ -288,12 +288,11 @@
      * in lower bits.
      */
     final int hash(Object k) {
-        int h = hashSeed;
         if (k instanceof String) {
-            return ((String)k).hash32();
+            return ((String) k).hash32();
         }
 
-        h ^= k.hashCode();
+        int  h = hashSeed ^ k.hashCode();
 
         // This function ensures that hashCodes that differ only by
         // constant multiples at each bit position have a bounded
--- a/jdk/src/share/classes/java/util/Hashtable.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/java/util/Hashtable.java	Wed Jul 05 18:14:56 2017 +0200
@@ -194,19 +194,17 @@
     transient final int hashSeed = sun.misc.Hashing.randomHashSeed(this);
 
     private int hash(Object k) {
-        int h = hashSeed;
-
         if (k instanceof String) {
             return ((String)k).hash32();
-        } else {
-            h ^= k.hashCode();
+        }
+
+        int h = hashSeed ^ k.hashCode();
 
-            // This function ensures that hashCodes that differ only by
-            // constant multiples at each bit position have a bounded
-            // number of collisions (approximately 8 at default load factor).
-            h ^= (h >>> 20) ^ (h >>> 12);
-            return h ^ (h >>> 7) ^ (h >>> 4);
-        }
+        // This function ensures that hashCodes that differ only by
+        // constant multiples at each bit position have a bounded
+        // number of collisions (approximately 8 at default load factor).
+        h ^= (h >>> 20) ^ (h >>> 12);
+        return h ^ (h >>> 7) ^ (h >>> 4);
     }
 
     /**
@@ -1015,7 +1013,7 @@
      */
     private static class Entry<K,V> implements Map.Entry<K,V> {
         final int hash;
-        K key;
+        final K key;
         V value;
         Entry<K,V> next;
 
--- a/jdk/src/share/classes/java/util/ResourceBundle.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/java/util/ResourceBundle.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2012, 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
@@ -55,6 +55,7 @@
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import java.util.jar.JarEntry;
+import java.util.spi.ResourceBundleControlProvider;
 
 import sun.util.locale.BaseLocale;
 import sun.util.locale.LocaleObjectCache;
@@ -192,6 +193,17 @@
  * {@link #getBundle(String, Locale, ClassLoader, Control) getBundle}
  * factory method for details.
  *
+ * <p><a name="modify_default_behavior">For the {@code getBundle} factory
+ * methods that take no {@link Control} instance, their <a
+ * href="#default_behavior"> default behavior</a> of resource bundle loading
+ * can be modified with <em>installed</em> {@link
+ * ResourceBundleControlProvider} implementations. Any installed providers are
+ * detected at the {@code ResourceBundle} class loading time. If any of the
+ * providers provides a {@link Control} for the given base name, that {@link
+ * Control} will be used instead of the default {@link Control}. If there is
+ * more than one service provider installed for supporting the same base name,
+ * the first one returned from {@link ServiceLoader} will be used.
+ *
  * <h4>Cache Management</h4>
  *
  * Resource bundle instances created by the <code>getBundle</code> factory
@@ -294,8 +306,7 @@
     /**
      * Queue for reference objects referring to class loaders or bundles.
      */
-    private static final ReferenceQueue<Object> referenceQueue =
-        new ReferenceQueue<>();
+    private static final ReferenceQueue<Object> referenceQueue = new ReferenceQueue<>();
 
     /**
      * The parent bundle of this bundle.
@@ -330,6 +341,21 @@
      */
     private volatile Set<String> keySet;
 
+    private static final List<ResourceBundleControlProvider> providers;
+
+    static {
+        List<ResourceBundleControlProvider> list = null;
+        ServiceLoader<ResourceBundleControlProvider> serviceLoaders
+                = ServiceLoader.loadInstalled(ResourceBundleControlProvider.class);
+        for (ResourceBundleControlProvider provider : serviceLoaders) {
+            if (list == null) {
+                list = new ArrayList<>();
+            }
+            list.add(provider);
+        }
+        providers = list;
+    }
+
     /**
      * Sole constructor.  (For invocation by subclass constructors, typically
      * implicit.)
@@ -725,7 +751,7 @@
         return getBundleImpl(baseName, Locale.getDefault(),
                              /* must determine loader here, else we break stack invariant */
                              getLoader(),
-                             Control.INSTANCE);
+                             getDefaultControl(baseName));
     }
 
     /**
@@ -797,7 +823,7 @@
         return getBundleImpl(baseName, locale,
                              /* must determine loader here, else we break stack invariant */
                              getLoader(),
-                             Control.INSTANCE);
+                             getDefaultControl(baseName));
     }
 
     /**
@@ -849,9 +875,15 @@
      * Gets a resource bundle using the specified base name, locale, and class
      * loader.
      *
-     * <p><a name="default_behavior"/>This method behaves the same as calling
+     * <p>This method behaves the same as calling
      * {@link #getBundle(String, Locale, ClassLoader, Control)} passing a
-     * default instance of {@link Control}. The following describes this behavior.
+     * default instance of {@link Control} unless another {@link Control} is
+     * provided with the {@link ResourceBundleControlProvider} SPI. Refer to the
+     * description of <a href="#modify_default_behavior">modifying the default
+     * behavior</a>.
+     *
+     * <p><a name="default_behavior"/>The following describes the default
+     * behavior.
      *
      * <p><code>getBundle</code> uses the base name, the specified locale, and
      * the default locale (obtained from {@link java.util.Locale#getDefault()
@@ -1026,7 +1058,7 @@
         if (loader == null) {
             throw new NullPointerException();
         }
-        return getBundleImpl(baseName, locale, loader, Control.INSTANCE);
+        return getBundleImpl(baseName, locale, loader, getDefaultControl(baseName));
     }
 
     /**
@@ -1247,6 +1279,18 @@
         return getBundleImpl(baseName, targetLocale, loader, control);
     }
 
+    private static Control getDefaultControl(String baseName) {
+        if (providers != null) {
+            for (ResourceBundleControlProvider provider : providers) {
+                Control control = provider.getControl(baseName);
+                if (control != null) {
+                    return control;
+                }
+            }
+        }
+        return Control.INSTANCE;
+    }
+
     private static ResourceBundle getBundleImpl(String baseName, Locale locale,
                                                 ClassLoader loader, Control control) {
         if (locale == null || control == null) {
--- a/jdk/src/share/classes/java/util/WeakHashMap.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/java/util/WeakHashMap.java	Wed Jul 05 18:14:56 2017 +0200
@@ -295,13 +295,11 @@
      * otherwise encounter collisions for hashCodes that do not differ
      * in lower bits.
      */
-    int hash(Object k) {
-        int h = hashSeed;
+    final int hash(Object k) {
         if (k instanceof String) {
             return ((String) k).hash32();
-        } else {
-            h ^= k.hashCode();
         }
+        int  h = hashSeed ^ k.hashCode();
 
         // This function ensures that hashCodes that differ only by
         // constant multiples at each bit position have a bounded
--- a/jdk/src/share/classes/java/util/concurrent/ConcurrentHashMap.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/java/util/concurrent/ConcurrentHashMap.java	Wed Jul 05 18:14:56 2017 +0200
@@ -269,13 +269,11 @@
      * differ in lower or upper bits.
      */
     private int hash(Object k) {
-       int h = hashSeed;
-
         if (k instanceof String) {
             return ((String) k).hash32();
         }
 
-        h ^= k.hashCode();
+        int h = hashSeed ^ k.hashCode();
 
         // Spread bits to regularize both segment and index locations,
         // using variant of single-word Wang/Jenkins hash.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/java/util/spi/ResourceBundleControlProvider.java	Wed Jul 05 18:14:56 2017 +0200
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2012, 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 java.util.spi;
+
+import java.util.ResourceBundle;
+
+/**
+ * An interface for service providers that provide implementations of {@link
+ * java.util.ResourceBundle.Control}. The <a
+ * href="../ResourceBundle.html#default_behavior">default resource bundle loading
+ * behavior</a> of the {@code ResourceBundle.getBundle} factory methods that take
+ * no {@link java.util.ResourceBundle.Control} instance can be modified with {@code
+ * ResourceBundleControlProvider} implementations.
+ *
+ * <p>Provider implementations must be packaged using the <a
+ * href="../../../../technotes/guides/extensions/index.html">Java Extension
+ * Mechanism</a> as installed extensions. Refer to {@link java.util.ServiceLoader}
+ * for the extension packaging. Any installed {@code
+ * ResourceBundleControlProvider} implementations are loaded using {@link
+ * java.util.ServiceLoader} at the {@code ResourceBundle} class loading time.
+ *
+ * @author Masayoshi Okutsu
+ * @since 1.8
+ * @see ResourceBundle#getBundle(String, java.util.Locale, ClassLoader, ResourceBundle.Control)
+ *      ResourceBundle.getBundle
+ * @see java.util.ServiceLoader#loadInstalled(Class)
+ */
+public interface ResourceBundleControlProvider {
+    /**
+     * Returns a {@code ResourceBundle.Control} instance that is used
+     * to handle resource bundle loading for the given {@code
+     * baseName}. This method must return {@code null} if the given
+     * {@code baseName} isn't handled by this provider.
+     *
+     * @param baseName the base name of the resource bundle
+     * @return a {@code ResourceBundle.Control} instance,
+     *         or {@code null} if the given {@code baseName} is not
+     *         applicable to this provider.
+     * @throws NullPointerException if {@code baseName} is {@code null}
+     */
+    public ResourceBundle.Control getControl(String baseName);
+}
--- a/jdk/src/share/classes/javax/imageio/stream/FileCacheImageInputStream.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/javax/imageio/stream/FileCacheImageInputStream.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2012, 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
@@ -29,6 +29,7 @@
 import java.io.InputStream;
 import java.io.IOException;
 import java.io.RandomAccessFile;
+import java.nio.file.Files;
 import com.sun.imageio.stream.StreamCloser;
 import com.sun.imageio.stream.StreamFinalizer;
 import sun.java2d.Disposer;
@@ -97,8 +98,11 @@
             throw new IllegalArgumentException("Not a directory!");
         }
         this.stream = stream;
-        this.cacheFile =
-            File.createTempFile("imageio", ".tmp", cacheDir);
+        if (cacheDir == null)
+            this.cacheFile = Files.createTempFile("imageio", ".tmp").toFile();
+        else
+            this.cacheFile = Files.createTempFile(cacheDir.toPath(), "imageio", ".tmp")
+                                  .toFile();
         this.cache = new RandomAccessFile(cacheFile, "rw");
 
         this.closeAction = StreamCloser.createCloseAction(this);
--- a/jdk/src/share/classes/javax/imageio/stream/FileCacheImageOutputStream.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/javax/imageio/stream/FileCacheImageOutputStream.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2012, 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
@@ -29,6 +29,7 @@
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.RandomAccessFile;
+import java.nio.file.Files;
 import com.sun.imageio.stream.StreamCloser;
 
 /**
@@ -83,8 +84,11 @@
             throw new IllegalArgumentException("Not a directory!");
         }
         this.stream = stream;
-        this.cacheFile =
-            File.createTempFile("imageio", ".tmp", cacheDir);
+        if (cacheDir == null)
+            this.cacheFile = Files.createTempFile("imageio", ".tmp").toFile();
+        else
+            this.cacheFile = Files.createTempFile(cacheDir.toPath(), "imageio", ".tmp")
+                                  .toFile();
         this.cache = new RandomAccessFile(cacheFile, "rw");
 
         this.closeAction = StreamCloser.createCloseAction(this);
--- a/jdk/src/share/classes/javax/management/loading/MLet.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/javax/management/loading/MLet.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, 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 @@
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLStreamHandlerFactory;
+import java.nio.file.Files;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 import java.util.ArrayList;
@@ -1160,8 +1161,9 @@
                  try {
                      File directory = new File(libraryDirectory);
                      directory.mkdirs();
-                     File file = File.createTempFile(libname + ".", null,
-                             directory);
+                     File file = Files.createTempFile(directory.toPath(),
+                                                      libname + ".", null)
+                                      .toFile();
                      file.deleteOnExit();
                      FileOutputStream fileOutput = new FileOutputStream(file);
                      try {
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthButtonUI.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthButtonUI.java	Wed Jul 05 18:14:56 2017 +0200
@@ -152,8 +152,8 @@
         if (!c.isEnabled()) {
             state = DISABLED;
         }
-        if (SynthLookAndFeel.selectedUI == this) {
-            return SynthLookAndFeel.selectedUIState | SynthConstants.ENABLED;
+        if (SynthLookAndFeel.getSelectedUI() == this) {
+            return SynthLookAndFeel.getSelectedUIState() | SynthConstants.ENABLED;
         }
         AbstractButton button = (AbstractButton) c;
         ButtonModel model = button.getModel();
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthLabelUI.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthLabelUI.java	Wed Jul 05 18:14:56 2017 +0200
@@ -97,9 +97,9 @@
 
     private int getComponentState(JComponent c) {
         int state = SynthLookAndFeel.getComponentState(c);
-        if (SynthLookAndFeel.selectedUI == this &&
+        if (SynthLookAndFeel.getSelectedUI() == this &&
                         state == SynthConstants.ENABLED) {
-            state = SynthLookAndFeel.selectedUIState | SynthConstants.ENABLED;
+            state = SynthLookAndFeel.getSelectedUIState() | SynthConstants.ENABLED;
         }
         return state;
     }
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthLookAndFeel.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthLookAndFeel.java	Wed Jul 05 18:14:56 2017 +0200
@@ -77,27 +77,25 @@
                   new StringBuffer("com.sun.java.swing.plaf.gtk.StyleCache");
 
     /**
+     * AppContext key to get selectedUI.
+     */
+    private static final Object SELECTED_UI_KEY = new StringBuilder("selectedUI");
+
+    /**
+     * AppContext key to get selectedUIState.
+     */
+    private static final Object SELECTED_UI_STATE_KEY = new StringBuilder("selectedUIState");
+
+    /**
      * The last SynthStyleFactory that was asked for from AppContext
      * <code>lastContext</code>.
      */
     private static SynthStyleFactory lastFactory;
     /**
-     * If this is true it indicates there is more than one AppContext active
-     * and that we need to make sure in getStyleCache the requesting
-     * AppContext matches that of <code>lastContext</code> before returning
-     * it.
-     */
-    private static boolean multipleApps;
-    /**
      * AppContext lastLAF came from.
      */
     private static AppContext lastContext;
 
-    // Refer to setSelectedUI
-    static ComponentUI selectedUI;
-    // Refer to setSelectedUI
-    static int selectedUIState;
-
     /**
      * SynthStyleFactory for the this SynthLookAndFeel.
      */
@@ -111,6 +109,10 @@
 
     private Handler _handler;
 
+    static ComponentUI getSelectedUI() {
+        return (ComponentUI) AppContext.getAppContext().get(SELECTED_UI_KEY);
+    }
+
     /**
      * Used by the renderers. For the most part the renderers are implemented
      * as Labels, which is problematic in so far as they are never selected.
@@ -122,8 +124,8 @@
     static void setSelectedUI(ComponentUI uix, boolean selected,
                               boolean focused, boolean enabled,
                               boolean rollover) {
-        selectedUI = uix;
-        selectedUIState = 0;
+        int selectedUIState = 0;
+
         if (selected) {
             selectedUIState = SynthConstants.SELECTED;
             if (focused) {
@@ -140,19 +142,32 @@
         else {
             if (enabled) {
                 selectedUIState |= SynthConstants.ENABLED;
-                selectedUIState = SynthConstants.FOCUSED;
+                if (focused) {
+                    selectedUIState |= SynthConstants.FOCUSED;
+                }
             }
             else {
                 selectedUIState |= SynthConstants.DISABLED;
             }
         }
+
+        AppContext context = AppContext.getAppContext();
+
+        context.put(SELECTED_UI_KEY, uix);
+        context.put(SELECTED_UI_STATE_KEY, Integer.valueOf(selectedUIState));
+    }
+
+    static int getSelectedUIState() {
+        Integer result = (Integer) AppContext.getAppContext().get(SELECTED_UI_STATE_KEY);
+
+        return result == null ? 0 : result.intValue();
     }
 
     /**
      * Clears out the selected UI that was last set in setSelectedUI.
      */
     static void resetSelectedUI() {
-        selectedUI = null;
+        AppContext.getAppContext().remove(SELECTED_UI_KEY);
     }
 
 
@@ -167,10 +182,6 @@
         // for a particular AppContext.
         synchronized(SynthLookAndFeel.class) {
             AppContext context = AppContext.getAppContext();
-            if (!multipleApps && context != lastContext &&
-                                 lastContext != null) {
-                multipleApps = true;
-            }
             lastFactory = cache;
             lastContext = context;
             context.put(STYLE_FACTORY_KEY, cache);
@@ -184,17 +195,13 @@
      */
     public static SynthStyleFactory getStyleFactory() {
         synchronized(SynthLookAndFeel.class) {
-            if (!multipleApps) {
-                return lastFactory;
-            }
             AppContext context = AppContext.getAppContext();
 
             if (lastContext == context) {
                 return lastFactory;
             }
             lastContext = context;
-            lastFactory = (SynthStyleFactory)AppContext.getAppContext().get
-                                           (STYLE_FACTORY_KEY);
+            lastFactory = (SynthStyleFactory) context.get(STYLE_FACTORY_KEY);
             return lastFactory;
         }
     }
--- a/jdk/src/share/classes/javax/swing/text/html/parser/Parser.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/javax/swing/text/html/parser/Parser.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1986,8 +1986,6 @@
             if (i == SCRIPT_END_TAG.length) {
 
                 /*  '</script>' tag detected */
-                /* Here, ch == '>' */
-                ch = readCh();
                 /* Here, ch == the first character after </script> */
                 return;
             } else {
@@ -2060,6 +2058,8 @@
                 handleComment(str.toCharArray());
                 endTag(false);
                 lastBlockStartPos = currentPosition;
+
+                continue;
             } else {
                 switch (c) {
                   case '<':
--- a/jdk/src/share/classes/sun/awt/dnd/SunDropTargetContextPeer.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/sun/awt/dnd/SunDropTargetContextPeer.java	Wed Jul 05 18:14:56 2017 +0200
@@ -498,7 +498,7 @@
         postDropTargetEvent(component, x, y, dropAction, actions,
                             formats, nativeCtxt,
                             SunDropTargetEvent.MOUSE_DROPPED,
-                            !SunDropTargetContextPeer.DISPATCH_SYNC);
+                            SunDropTargetContextPeer.DISPATCH_SYNC);
     }
 
     /**
--- a/jdk/src/share/classes/sun/font/SunLayoutEngine.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/sun/font/SunLayoutEngine.java	Wed Jul 05 18:14:56 2017 +0200
@@ -33,7 +33,7 @@
 import sun.font.GlyphLayout.*;
 import java.awt.geom.Point2D;
 import java.lang.ref.SoftReference;
-import java.util.HashMap;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.Locale;
 
 /*
@@ -129,9 +129,9 @@
 
   // !!! don't need this unless we have more than one sun layout engine...
     public LayoutEngine getEngine(LayoutEngineKey key) {
-        HashMap cache = (HashMap)cacheref.get();
+        ConcurrentHashMap cache = (ConcurrentHashMap)cacheref.get();
         if (cache == null) {
-            cache = new HashMap();
+            cache = new ConcurrentHashMap();
             cacheref = new SoftReference(cache);
         }
 
--- a/jdk/src/share/classes/sun/invoke/util/VerifyAccess.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/sun/invoke/util/VerifyAccess.java	Wed Jul 05 18:14:56 2017 +0200
@@ -37,6 +37,8 @@
     private VerifyAccess() { }  // cannot instantiate
 
     private static final int PACKAGE_ONLY = 0;
+    private static final int PACKAGE_ALLOWED = java.lang.invoke.MethodHandles.Lookup.PACKAGE;
+    private static final int PROTECTED_OR_PACKAGE_ALLOWED = (PACKAGE_ALLOWED|PROTECTED);
     private static final int ALL_ACCESS_MODES = (PUBLIC|PRIVATE|PROTECTED|PACKAGE_ONLY);
     private static final boolean ALLOW_NESTMATE_ACCESS = false;
 
@@ -82,14 +84,19 @@
     public static boolean isMemberAccessible(Class<?> refc,  // symbolic ref class
                                              Class<?> defc,  // actual def class
                                              int      mods,  // actual member mods
-                                             Class<?> lookupClass) {
+                                             Class<?> lookupClass,
+                                             int      allowedModes) {
+        if (allowedModes == 0)  return false;
+        assert((allowedModes & PUBLIC) != 0 &&
+               (allowedModes & ~(ALL_ACCESS_MODES|PACKAGE_ALLOWED)) == 0);
         // Usually refc and defc are the same, but if they differ, verify them both.
         if (refc != defc) {
-            if (!isClassAccessible(refc, lookupClass)) {
+            if (!isClassAccessible(refc, lookupClass, allowedModes)) {
                 // Note that defc is verified in the switch below.
                 return false;
             }
-            if ((mods & (ALL_ACCESS_MODES|STATIC)) == (PROTECTED|STATIC)) {
+            if ((mods & (ALL_ACCESS_MODES|STATIC)) == (PROTECTED|STATIC) &&
+                (allowedModes & PROTECTED_OR_PACKAGE_ALLOWED) != 0) {
                 // Apply the special rules for refc here.
                 if (!isRelatedClass(refc, lookupClass))
                     return isSamePackage(defc, lookupClass);
@@ -98,19 +105,28 @@
                 // a superclass of the lookup class.
             }
         }
-        if (defc == lookupClass)
+        if (defc == lookupClass &&
+            (allowedModes & PRIVATE) != 0)
             return true;        // easy check; all self-access is OK
         switch (mods & ALL_ACCESS_MODES) {
         case PUBLIC:
             if (refc != defc)  return true;  // already checked above
-            return isClassAccessible(refc, lookupClass);
+            return isClassAccessible(refc, lookupClass, allowedModes);
         case PROTECTED:
-            return isSamePackage(defc, lookupClass) || isPublicSuperClass(defc, lookupClass);
-        case PACKAGE_ONLY:
-            return isSamePackage(defc, lookupClass);
+            if ((allowedModes & PROTECTED_OR_PACKAGE_ALLOWED) != 0 &&
+                isSamePackage(defc, lookupClass))
+                return true;
+            if ((allowedModes & PROTECTED) != 0 &&
+                isPublicSuperClass(defc, lookupClass))
+                return true;
+            return false;
+        case PACKAGE_ONLY:  // That is, zero.  Unmarked member is package-only access.
+            return ((allowedModes & PACKAGE_ALLOWED) != 0 &&
+                    isSamePackage(defc, lookupClass));
         case PRIVATE:
             // Loosened rules for privates follows access rules for inner classes.
             return (ALLOW_NESTMATE_ACCESS &&
+                    (allowedModes & PRIVATE) != 0 &&
                     isSamePackageMember(defc, lookupClass));
         default:
             throw new IllegalArgumentException("bad modifiers: "+Modifier.toString(mods));
@@ -138,11 +154,16 @@
      * @param refc the symbolic reference class to which access is being checked (C)
      * @param lookupClass the class performing the lookup (D)
      */
-    public static boolean isClassAccessible(Class<?> refc, Class<?> lookupClass) {
+    public static boolean isClassAccessible(Class<?> refc, Class<?> lookupClass,
+                                            int allowedModes) {
+        if (allowedModes == 0)  return false;
+        assert((allowedModes & PUBLIC) != 0 &&
+               (allowedModes & ~(ALL_ACCESS_MODES|PACKAGE_ALLOWED)) == 0);
         int mods = refc.getModifiers();
         if (isPublic(mods))
             return true;
-        if (isSamePackage(lookupClass, refc))
+        if ((allowedModes & PACKAGE_ALLOWED) != 0 &&
+            isSamePackage(lookupClass, refc))
             return true;
         return false;
     }
@@ -157,7 +178,7 @@
         assert(!class1.isArray() && !class2.isArray());
         if (class1 == class2)
             return true;
-        if (!loadersAreRelated(class1.getClassLoader(), class2.getClassLoader(), false))
+        if (class1.getClassLoader() != class2.getClassLoader())
             return false;
         String name1 = class1.getName(), name2 = class2.getName();
         int dot = name1.lastIndexOf('.');
--- a/jdk/src/share/classes/sun/misc/JarIndex.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/sun/misc/JarIndex.java	Wed Jul 05 18:14:56 2017 +0200
@@ -201,23 +201,20 @@
             packageName = fileName;
         }
 
-        // add the mapping to indexMap
-        addToList(packageName, jarName, indexMap);
-
-        // add the mapping to jarMap
-        addToList(jarName, packageName, jarMap);
+        addMapping(packageName, jarName);
     }
 
     /**
      * Same as add(String,String) except that it doesn't strip off from the
-     * last index of '/'. It just adds the filename.
+     * last index of '/'. It just adds the jarItem (filename or package)
+     * as it is received.
      */
-    private void addExplicit(String fileName, String jarName) {
+    private void addMapping(String jarItem, String jarName) {
         // add the mapping to indexMap
-        addToList(fileName, jarName, indexMap);
+        addToList(jarItem, jarName, indexMap);
 
         // add the mapping to jarMap
-        addToList(jarName, fileName, jarMap);
+        addToList(jarName, jarItem, jarMap);
      }
 
     /**
@@ -248,18 +245,14 @@
                     fileName.equals(JarFile.MANIFEST_NAME))
                     continue;
 
-                if (!metaInfFilenames) {
+                if (!metaInfFilenames || !fileName.startsWith("META-INF/")) {
                     add(fileName, currentJar);
-                } else {
-                    if (!fileName.startsWith("META-INF/")) {
-                        add(fileName, currentJar);
-                    } else if (!entry.isDirectory()) {
+                } else if (!entry.isDirectory()) {
                         // Add files under META-INF explicitly so that certain
                         // services, like ServiceLoader, etc, can be located
                         // with greater accuracy. Directories can be skipped
                         // since each file will be added explicitly.
-                        addExplicit(fileName, currentJar);
-                    }
+                        addMapping(fileName, currentJar);
                 }
             }
 
@@ -324,8 +317,7 @@
                 jars.add(currentJar);
             } else {
                 String name = line;
-                addToList(name, currentJar, indexMap);
-                addToList(currentJar, name, jarMap);
+                addMapping(name, currentJar);
             }
         }
 
@@ -354,7 +346,7 @@
                 if (path != null) {
                     jarName = path.concat(jarName);
                 }
-                toIndex.add(packageName, jarName);
+                toIndex.addMapping(packageName, jarName);
             }
         }
     }
--- a/jdk/src/share/classes/sun/nio/ch/IOUtil.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/sun/nio/ch/IOUtil.java	Wed Jul 05 18:14:56 2017 +0200
@@ -36,6 +36,11 @@
 
 public class IOUtil {
 
+    /**
+     * Max number of iovec structures that readv/writev supports
+     */
+    static final int IOV_MAX;
+
     private IOUtil() { }                // No instantiation
 
     static int write(FileDescriptor fd, ByteBuffer src, long position,
@@ -111,7 +116,8 @@
 
             // Iterate over buffers to populate native iovec array.
             int count = offset + length;
-            for (int i=offset; i<count; i++) {
+            int i = offset;
+            while (i < count && iov_len < IOV_MAX) {
                 ByteBuffer buf = bufs[i];
                 int pos = buf.position();
                 int lim = buf.limit();
@@ -135,6 +141,7 @@
                     vec.putLen(iov_len, rem);
                     iov_len++;
                 }
+                i++;
             }
             if (iov_len == 0)
                 return 0L;
@@ -240,7 +247,8 @@
 
             // Iterate over buffers to populate native iovec array.
             int count = offset + length;
-            for (int i=offset; i<count; i++) {
+            int i = offset;
+            while (i < count && iov_len < IOV_MAX) {
                 ByteBuffer buf = bufs[i];
                 if (buf.isReadOnly())
                     throw new IllegalArgumentException("Read-only buffer");
@@ -264,6 +272,7 @@
                     vec.putLen(iov_len, rem);
                     iov_len++;
                 }
+                i++;
             }
             if (iov_len == 0)
                 return 0L;
@@ -336,11 +345,14 @@
 
     static native int fdLimit();
 
+    static native int iovMax();
+
     static native void initIDs();
 
     static {
         // Note that IOUtil.initIDs is called from within Util.load.
         Util.load();
+        IOV_MAX = iovMax();
     }
 
 }
--- a/jdk/src/share/classes/sun/nio/ch/Util.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/sun/nio/ch/Util.java	Wed Jul 05 18:14:56 2017 +0200
@@ -45,7 +45,7 @@
     // -- Caches --
 
     // The number of temp buffers in our pool
-    private static final int TEMP_BUF_POOL_SIZE = 8;
+    private static final int TEMP_BUF_POOL_SIZE = IOUtil.IOV_MAX;
 
     // Per-thread cache of temporary direct buffers
     private static ThreadLocal<BufferCache> bufferCache =
--- a/jdk/src/share/classes/sun/print/PSPrinterJob.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/sun/print/PSPrinterJob.java	Wed Jul 05 18:14:56 2017 +0200
@@ -97,6 +97,7 @@
 import java.nio.charset.*;
 import java.nio.CharBuffer;
 import java.nio.ByteBuffer;
+import java.nio.file.Files;
 
 //REMIND: Remove use of this class when IPPPrintService is moved to share directory.
 import java.lang.reflect.Method;
@@ -659,7 +660,7 @@
                      * is not removed for some reason, request that it is
                      * removed when the VM exits.
                      */
-                    spoolFile = File.createTempFile("javaprint", ".ps", null);
+                    spoolFile = Files.createTempFile("javaprint", ".ps").toFile();
                     spoolFile.deleteOnExit();
 
                 result = new FileOutputStream(spoolFile);
--- a/jdk/src/share/classes/sun/print/ServiceDialog.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/sun/print/ServiceDialog.java	Wed Jul 05 18:14:56 2017 +0200
@@ -429,6 +429,7 @@
         ValidatingFileChooser jfc = new ValidatingFileChooser();
         jfc.setApproveButtonText(getMsg("button.ok"));
         jfc.setDialogTitle(getMsg("dialog.printtofile"));
+        jfc.setDialogType(JFileChooser.SAVE_DIALOG);
         jfc.setSelectedFile(fileDest);
 
         int returnVal = jfc.showDialog(this, null);
--- a/jdk/src/share/classes/sun/rmi/server/Activation.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/sun/rmi/server/Activation.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, 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
@@ -43,6 +43,7 @@
 import java.net.Socket;
 import java.net.SocketAddress;
 import java.net.SocketException;
+import java.nio.file.Files;
 import java.nio.channels.Channel;
 import java.nio.channels.ServerSocketChannel;
 import java.rmi.AccessException;
@@ -1940,7 +1941,7 @@
                     new PrivilegedExceptionAction<Void>() {
                         public Void run() throws IOException {
                             File file =
-                                File.createTempFile("rmid-err", null, null);
+                                Files.createTempFile("rmid-err", null).toFile();
                             PrintStream errStream =
                                 new PrintStream(new FileOutputStream(file));
                             System.setErr(errStream);
--- a/jdk/src/share/classes/sun/security/provider/certpath/BasicChecker.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/sun/security/provider/certpath/BasicChecker.java	Wed Jul 05 18:14:56 2017 +0200
@@ -90,6 +90,7 @@
         this.date = date;
         this.sigProvider = sigProvider;
         this.sigOnly = sigOnly;
+        this.prevPubKey = trustedPubKey;
     }
 
     /**
--- a/jdk/src/share/classes/sun/security/ssl/SSLEngineImpl.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/sun/security/ssl/SSLEngineImpl.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1119,6 +1119,7 @@
                  * handle a few more records, so the sequence number
                  * of the last record cannot be wrapped.
                  */
+                hsStatus = getHSStatus(hsStatus);
                 if (connectionState < cs_ERROR && !isInboundDone() &&
                         (hsStatus == HandshakeStatus.NOT_HANDSHAKING)) {
                     if (checkSequenceNumber(readMAC,
@@ -1287,6 +1288,7 @@
          * handle a few more records, so the sequence number
          * of the last record cannot be wrapped.
          */
+        hsStatus = getHSStatus(hsStatus);
         if (connectionState < cs_ERROR && !isOutboundDone() &&
                 (hsStatus == HandshakeStatus.NOT_HANDSHAKING)) {
             if (checkSequenceNumber(writeMAC, eor.contentType())) {
--- a/jdk/src/share/classes/sun/security/x509/CRLExtensions.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/sun/security/x509/CRLExtensions.java	Wed Jul 05 18:14:56 2017 +0200
@@ -32,8 +32,10 @@
 import java.security.cert.CRLException;
 import java.security.cert.CertificateException;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.Enumeration;
-import java.util.Hashtable;
+import java.util.Map;
+import java.util.TreeMap;
 
 import sun.security.util.*;
 
@@ -61,7 +63,8 @@
  */
 public class CRLExtensions {
 
-    private Hashtable<String,Extension> map = new Hashtable<String,Extension>();
+    private Map<String,Extension> map = Collections.synchronizedMap(
+            new TreeMap<String,Extension>());
     private boolean unsupportedCritExt = false;
 
     /**
@@ -214,7 +217,7 @@
      * @return an enumeration of the extensions in this CRL.
      */
     public Enumeration<Extension> getElements() {
-        return map.elements();
+        return Collections.enumeration(map.values());
     }
 
     /**
--- a/jdk/src/share/classes/sun/security/x509/CertificateExtensions.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/sun/security/x509/CertificateExtensions.java	Wed Jul 05 18:14:56 2017 +0200
@@ -57,7 +57,8 @@
 
     private static final Debug debug = Debug.getInstance("x509");
 
-    private Hashtable<String,Extension> map = new Hashtable<String,Extension>();
+    private Map<String,Extension> map = Collections.synchronizedMap(
+            new TreeMap<String,Extension>());
     private boolean unsupportedCritExt = false;
 
     private Map<String,Extension> unparseableExtensions;
@@ -118,7 +119,7 @@
             if (ext.isCritical() == false) {
                 // ignore errors parsing non-critical extensions
                 if (unparseableExtensions == null) {
-                    unparseableExtensions = new HashMap<String,Extension>();
+                    unparseableExtensions = new TreeMap<String,Extension>();
                 }
                 unparseableExtensions.put(ext.getExtensionId().toString(),
                         new UnparseableExtension(ext, e));
@@ -219,6 +220,12 @@
         return (obj);
     }
 
+    // Similar to get(String), but throw no exception, might return null.
+    // Used in X509CertImpl::getExtension(OID).
+    Extension getExtension(String name) {
+        return map.get(name);
+    }
+
     /**
      * Delete the attribute value.
      * @param name the extension name used in the lookup.
@@ -246,7 +253,7 @@
      * attribute.
      */
     public Enumeration<Extension> getElements() {
-        return map.elements();
+        return Collections.enumeration(map.values());
     }
 
     /**
--- a/jdk/src/share/classes/sun/security/x509/X509CRLEntryImpl.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/sun/security/x509/X509CRLEntryImpl.java	Wed Jul 05 18:14:56 2017 +0200
@@ -30,14 +30,7 @@
 import java.security.cert.CRLReason;
 import java.security.cert.X509CRLEntry;
 import java.math.BigInteger;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Date;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-import java.util.HashSet;
+import java.util.*;
 
 import javax.security.auth.x500.X500Principal;
 
@@ -74,7 +67,8 @@
  * @author Hemma Prafullchandra
  */
 
-public class X509CRLEntryImpl extends X509CRLEntry {
+public class X509CRLEntryImpl extends X509CRLEntry
+        implements Comparable<X509CRLEntryImpl> {
 
     private SerialNumber serialNumber = null;
     private Date revocationDate = null;
@@ -195,9 +189,14 @@
      * @exception CRLException if an encoding error occurs.
      */
     public byte[] getEncoded() throws CRLException {
+        return getEncoded0().clone();
+    }
+
+    // Called internally to avoid clone
+    private byte[] getEncoded0() throws CRLException {
         if (revokedCert == null)
             this.encode(new DerOutputStream());
-        return revokedCert.clone();
+        return revokedCert;
     }
 
     @Override
@@ -351,7 +350,7 @@
         if (extensions == null) {
             return null;
         }
-        Set<String> extSet = new HashSet<String>();
+        Set<String> extSet = new TreeSet<>();
         for (Extension ex : extensions.getAllExtensions()) {
             if (ex.isCritical()) {
                 extSet.add(ex.getExtensionId().toString());
@@ -372,7 +371,7 @@
         if (extensions == null) {
             return null;
         }
-        Set<String> extSet = new HashSet<String>();
+        Set<String> extSet = new TreeSet<>();
         for (Extension ex : extensions.getAllExtensions()) {
             if (!ex.isCritical()) {
                 extSet.add(ex.getExtensionId().toString());
@@ -500,16 +499,39 @@
             getExtension(PKIXExtensions.CertificateIssuer_Id);
     }
 
+    /**
+     * Returns all extensions for this entry in a map
+     * @return the extension map, can be empty, but not null
+     */
     public Map<String, java.security.cert.Extension> getExtensions() {
         if (extensions == null) {
             return Collections.emptyMap();
         }
         Collection<Extension> exts = extensions.getAllExtensions();
-        HashMap<String, java.security.cert.Extension> map =
-            new HashMap<String, java.security.cert.Extension>(exts.size());
+        Map<String, java.security.cert.Extension> map = new TreeMap<>();
         for (Extension ext : exts) {
             map.put(ext.getId(), ext);
         }
         return map;
     }
+
+    @Override
+    public int compareTo(X509CRLEntryImpl that) {
+        int compSerial = getSerialNumber().compareTo(that.getSerialNumber());
+        if (compSerial != 0) {
+            return compSerial;
+        }
+        try {
+            byte[] thisEncoded = this.getEncoded0();
+            byte[] thatEncoded = that.getEncoded0();
+            for (int i=0; i<thisEncoded.length && i<thatEncoded.length; i++) {
+                int a = thisEncoded[i] & 0xff;
+                int b = thatEncoded[i] & 0xff;
+                if (a != b) return a-b;
+            }
+            return thisEncoded.length -thatEncoded.length;
+        } catch (CRLException ce) {
+            return -1;
+        }
+    }
 }
--- a/jdk/src/share/classes/sun/security/x509/X509CRLImpl.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/sun/security/x509/X509CRLImpl.java	Wed Jul 05 18:14:56 2017 +0200
@@ -52,7 +52,7 @@
 
 /**
  * <p>
- * An implmentation for X509 CRL (Certificate Revocation List).
+ * An implementation for X509 CRL (Certificate Revocation List).
  * <p>
  * The X.509 v2 CRL format is described below in ASN.1:
  * <pre>
@@ -103,7 +103,8 @@
     private X500Principal    issuerPrincipal = null;
     private Date             thisUpdate = null;
     private Date             nextUpdate = null;
-    private Map<X509IssuerSerial,X509CRLEntry> revokedCerts = new LinkedHashMap<X509IssuerSerial,X509CRLEntry>();
+    private Map<X509IssuerSerial,X509CRLEntry> revokedMap = new TreeMap<>();
+    private List<X509CRLEntry> revokedList = new LinkedList<>();
     private CRLExtensions    extensions = null;
     private final static boolean isExplicit = true;
     private static final long YR_2050 = 2524636800000L;
@@ -222,7 +223,8 @@
                 badCert.setCertificateIssuer(crlIssuer, badCertIssuer);
                 X509IssuerSerial issuerSerial = new X509IssuerSerial
                     (badCertIssuer, badCert.getSerialNumber());
-                this.revokedCerts.put(issuerSerial, badCert);
+                this.revokedMap.put(issuerSerial, badCert);
+                this.revokedList.add(badCert);
                 if (badCert.hasExtensions()) {
                     this.version = 1;
                 }
@@ -304,8 +306,8 @@
                     tmp.putGeneralizedTime(nextUpdate);
             }
 
-            if (!revokedCerts.isEmpty()) {
-                for (X509CRLEntry entry : revokedCerts.values()) {
+            if (!revokedList.isEmpty()) {
+                for (X509CRLEntry entry : revokedList) {
                     ((X509CRLEntryImpl)entry).encode(rCerts);
                 }
                 tmp.write(DerValue.tag_Sequence, rCerts);
@@ -489,14 +491,14 @@
             sb.append("\nThis Update: " + thisUpdate.toString() + "\n");
         if (nextUpdate != null)
             sb.append("Next Update: " + nextUpdate.toString() + "\n");
-        if (revokedCerts.isEmpty())
+        if (revokedList.isEmpty())
             sb.append("\nNO certificates have been revoked\n");
         else {
-            sb.append("\nRevoked Certificates: " + revokedCerts.size());
+            sb.append("\nRevoked Certificates: " + revokedList.size());
             int i = 1;
-            for (Iterator<X509CRLEntry> iter = revokedCerts.values().iterator();
-                                             iter.hasNext(); i++)
-                sb.append("\n[" + i + "] " + iter.next().toString());
+            for (X509CRLEntry entry: revokedList) {
+                sb.append("\n[" + i++ + "] " + entry.toString());
+            }
         }
         if (extensions != null) {
             Collection<Extension> allExts = extensions.getAllExtensions();
@@ -542,12 +544,12 @@
      * false otherwise.
      */
     public boolean isRevoked(Certificate cert) {
-        if (revokedCerts.isEmpty() || (!(cert instanceof X509Certificate))) {
+        if (revokedMap.isEmpty() || (!(cert instanceof X509Certificate))) {
             return false;
         }
         X509Certificate xcert = (X509Certificate) cert;
         X509IssuerSerial issuerSerial = new X509IssuerSerial(xcert);
-        return revokedCerts.containsKey(issuerSerial);
+        return revokedMap.containsKey(issuerSerial);
     }
 
     /**
@@ -637,24 +639,24 @@
      * @see X509CRLEntry
      */
     public X509CRLEntry getRevokedCertificate(BigInteger serialNumber) {
-        if (revokedCerts.isEmpty()) {
+        if (revokedMap.isEmpty()) {
             return null;
         }
         // assume this is a direct CRL entry (cert and CRL issuer are the same)
         X509IssuerSerial issuerSerial = new X509IssuerSerial
             (getIssuerX500Principal(), serialNumber);
-        return revokedCerts.get(issuerSerial);
+        return revokedMap.get(issuerSerial);
     }
 
     /**
      * Gets the CRL entry for the given certificate.
      */
     public X509CRLEntry getRevokedCertificate(X509Certificate cert) {
-        if (revokedCerts.isEmpty()) {
+        if (revokedMap.isEmpty()) {
             return null;
         }
         X509IssuerSerial issuerSerial = new X509IssuerSerial(cert);
-        return revokedCerts.get(issuerSerial);
+        return revokedMap.get(issuerSerial);
     }
 
     /**
@@ -666,10 +668,10 @@
      * @see X509CRLEntry
      */
     public Set<X509CRLEntry> getRevokedCertificates() {
-        if (revokedCerts.isEmpty()) {
+        if (revokedList.isEmpty()) {
             return null;
         } else {
-            return new HashSet<X509CRLEntry>(revokedCerts.values());
+            return new TreeSet<X509CRLEntry>(revokedList);
         }
     }
 
@@ -905,7 +907,7 @@
         if (extensions == null) {
             return null;
         }
-        Set<String> extSet = new HashSet<String>();
+        Set<String> extSet = new TreeSet<>();
         for (Extension ex : extensions.getAllExtensions()) {
             if (ex.isCritical()) {
                 extSet.add(ex.getExtensionId().toString());
@@ -926,7 +928,7 @@
         if (extensions == null) {
             return null;
         }
-        Set<String> extSet = new HashSet<String>();
+        Set<String> extSet = new TreeSet<>();
         for (Extension ex : extensions.getAllExtensions()) {
             if (!ex.isCritical()) {
                 extSet.add(ex.getExtensionId().toString());
@@ -1103,7 +1105,8 @@
                 entry.setCertificateIssuer(crlIssuer, badCertIssuer);
                 X509IssuerSerial issuerSerial = new X509IssuerSerial
                     (badCertIssuer, entry.getSerialNumber());
-                revokedCerts.put(issuerSerial, entry);
+                revokedMap.put(issuerSerial, entry);
+                revokedList.add(entry);
             }
         }
 
@@ -1207,7 +1210,8 @@
     /**
      * Immutable X.509 Certificate Issuer DN and serial number pair
      */
-    private final static class X509IssuerSerial {
+    private final static class X509IssuerSerial
+            implements Comparable<X509IssuerSerial> {
         final X500Principal issuer;
         final BigInteger serial;
         volatile int hashcode = 0;
@@ -1286,5 +1290,13 @@
             }
             return hashcode;
         }
+
+        @Override
+        public int compareTo(X509IssuerSerial another) {
+            int cissuer = issuer.toString()
+                    .compareTo(another.issuer.toString());
+            if (cissuer != 0) return cissuer;
+            return this.serial.compareTo(another.serial);
+        }
     }
 }
--- a/jdk/src/share/classes/sun/security/x509/X509CertImpl.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/sun/security/x509/X509CertImpl.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1202,7 +1202,7 @@
             if (exts == null) {
                 return null;
             }
-            Set<String> extSet = new HashSet<String>();
+            Set<String> extSet = new TreeSet<>();
             for (Extension ex : exts.getAllExtensions()) {
                 if (ex.isCritical()) {
                     extSet.add(ex.getExtensionId().toString());
@@ -1232,7 +1232,7 @@
             if (exts == null) {
                 return null;
             }
-            Set<String> extSet = new HashSet<String>();
+            Set<String> extSet = new TreeSet<>();
             for (Extension ex : exts.getAllExtensions()) {
                 if (!ex.isCritical()) {
                     extSet.add(ex.getExtensionId().toString());
@@ -1266,10 +1266,14 @@
             if (extensions == null) {
                 return null;
             } else {
-                for (Extension ex : extensions.getAllExtensions()) {
-                    if (ex.getExtensionId().equals((Object)oid)) {
+                Extension ex = extensions.getExtension(oid.toString());
+                if (ex != null) {
+                    return ex;
+                }
+                for (Extension ex2: extensions.getAllExtensions()) {
+                    if (ex2.getExtensionId().equals((Object)oid)) {
                         //XXXX May want to consider cloning this
-                        return ex;
+                        return ex2;
                     }
                 }
                 /* no such extension in this certificate */
@@ -1465,10 +1469,10 @@
         if (names.isEmpty()) {
             return Collections.<List<?>>emptySet();
         }
-        Set<List<?>> newNames = new HashSet<List<?>>();
+        List<List<?>> newNames = new ArrayList<>();
         for (GeneralName gname : names.names()) {
             GeneralNameInterface name = gname.getName();
-            List<Object> nameEntry = new ArrayList<Object>(2);
+            List<Object> nameEntry = new ArrayList<>(2);
             nameEntry.add(Integer.valueOf(name.getType()));
             switch (name.getType()) {
             case GeneralNameInterface.NAME_RFC822:
@@ -1526,12 +1530,12 @@
             }
         }
         if (mustClone) {
-            Set<List<?>> namesCopy = new HashSet<List<?>>();
+            List<List<?>> namesCopy = new ArrayList<>();
             for (List<?> nameEntry : altNames) {
                 Object nameObject = nameEntry.get(1);
                 if (nameObject instanceof byte[]) {
                     List<Object> nameEntryCopy =
-                                        new ArrayList<Object>(nameEntry);
+                                        new ArrayList<>(nameEntry);
                     nameEntryCopy.set(1, ((byte[])nameObject).clone());
                     namesCopy.add(Collections.unmodifiableList(nameEntryCopy));
                 } else {
--- a/jdk/src/share/classes/sun/tools/jar/Main.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/sun/tools/jar/Main.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2012, 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
@@ -137,7 +137,7 @@
         File dir = file.getParentFile();
         if (dir == null)
             dir = new File(".");
-        return File.createTempFile("jartmp", null, dir);
+        return Files.createTempFile(dir.toPath(), "jartmp", null).toFile();
     }
 
     private boolean ok;
--- a/jdk/src/share/classes/sun/tools/native2ascii/Main.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/classes/sun/tools/native2ascii/Main.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2012, 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,6 +71,7 @@
 import java.nio.charset.CharsetEncoder;
 import java.nio.charset.Charset;
 import java.nio.charset.IllegalCharsetNameException;
+import java.nio.file.Files;
 import java.io.UnsupportedEncodingException;
 import java.nio.charset.UnsupportedCharsetException;
 import sun.tools.native2ascii.A2NFilter;
@@ -240,9 +241,7 @@
             if (tempDir == null)
                 tempDir = new File(System.getProperty("user.dir"));
 
-            tempFile = File.createTempFile("_N2A",
-                                           ".TMP",
-                                            tempDir);
+            tempFile = Files.createTempFile(tempDir.toPath(), "_N2A", ".TMP").toFile();
             tempFile.deleteOnExit();
 
             try {
@@ -292,9 +291,7 @@
             File tempDir = f.getParentFile();
             if (tempDir == null)
                 tempDir = new File(System.getProperty("user.dir"));
-            tempFile =  File.createTempFile("_N2A",
-                                            ".TMP",
-                                            tempDir);
+            tempFile =  Files.createTempFile(tempDir.toPath(), "_N2A", ".TMP").toFile();
             tempFile.deleteOnExit();
 
             try {
--- a/jdk/src/share/demo/jvmti/hprof/hprof_table.c	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/demo/jvmti/hprof/hprof_table.c	Wed Jul 05 18:14:56 2017 +0200
@@ -120,7 +120,7 @@
     TableIndex     table_incr;          /* Suggested increment size. */
     TableIndex     hash_bucket_count;   /* Number of hash buckets. */
     int            elem_size;           /* Size of element. */
-    int            info_size;           /* Size of info structure. */
+    int            info_size;           /* Size of info structure (can be 0). */
     void          *freed_bv;            /* Freed element bit vector */
     int            freed_count;         /* Count of freed'd elements */
     TableIndex     freed_start;         /* First freed in table */
@@ -208,9 +208,6 @@
 {
     TableElement *element;
 
-    if ( ltable->info_size == 0 ) {
-        return NULL;
-    }
     element = (TableElement*)ELEMENT_PTR(ltable,index);
     return element->info;
 }
@@ -760,7 +757,11 @@
                 void *info;
 
                 get_key(ltable, index, &key_ptr, &key_len);
-                info = get_info(ltable, index);
+                if ( ltable->info_size == 0 ) {
+                    info = NULL;
+                } else {
+                    info = get_info(ltable, index);
+                }
                 (*func)(SANITY_ADD_HARE(index, ltable->hare), key_ptr, key_len, info, arg);
                 if ( is_freed_entry(ltable, index) ) {
                     fcount++;
--- a/jdk/src/share/lib/security/java.security	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/lib/security/java.security	Wed Jul 05 18:14:56 2017 +0200
@@ -132,10 +132,10 @@
 # corresponding RuntimePermission ("defineClassInPackage."+package) has
 # been granted.
 #
-# by default, no packages are restricted for definition, and none of
-# the class loaders supplied with the JDK call checkPackageDefinition.
+# by default, none of the class loaders supplied with the JDK call
+# checkPackageDefinition.
 #
-#package.definition=
+package.definition=sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.
 
 #
 # Determines whether this properties file can be appended to
--- a/jdk/src/share/lib/security/java.security-macosx	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/lib/security/java.security-macosx	Wed Jul 05 18:14:56 2017 +0200
@@ -133,10 +133,10 @@
 # corresponding RuntimePermission ("defineClassInPackage."+package) has
 # been granted.
 #
-# by default, no packages are restricted for definition, and none of
-# the class loaders supplied with the JDK call checkPackageDefinition.
+# by default, none of the class loaders supplied with the JDK call
+# checkPackageDefinition.
 #
-#package.definition=
+package.definition=sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,apple.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.
 
 #
 # Determines whether this properties file can be appended to
--- a/jdk/src/share/lib/security/java.security-solaris	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/lib/security/java.security-solaris	Wed Jul 05 18:14:56 2017 +0200
@@ -134,10 +134,10 @@
 # corresponding RuntimePermission ("defineClassInPackage."+package) has
 # been granted.
 #
-# by default, no packages are restricted for definition, and none of
-# the class loaders supplied with the JDK call checkPackageDefinition.
+# by default, none of the class loaders supplied with the JDK call
+# checkPackageDefinition.
 #
-#package.definition=
+package.definition=sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.
 
 #
 # Determines whether this properties file can be appended to
--- a/jdk/src/share/lib/security/java.security-windows	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/lib/security/java.security-windows	Wed Jul 05 18:14:56 2017 +0200
@@ -133,10 +133,10 @@
 # corresponding RuntimePermission ("defineClassInPackage."+package) has
 # been granted.
 #
-# by default, no packages are restricted for definition, and none of
-# the class loaders supplied with the JDK call checkPackageDefinition.
+# by default, none of the class loaders supplied with the JDK call
+# checkPackageDefinition.
 #
-#package.definition=
+package.definition=sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.
 
 #
 # Determines whether this properties file can be appended to
--- a/jdk/src/share/native/java/net/net_util.c	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/native/java/net/net_util.c	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2012, 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
@@ -68,6 +68,8 @@
     */
     IPv6_available = IPv6_supported() & (!preferIPv4Stack);
     initLocalAddrTable ();
+    parseExclusiveBindProperty(env);
+
     return JNI_VERSION_1_2;
 }
 
--- a/jdk/src/share/native/java/net/net_util.h	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/native/java/net/net_util.h	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, 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
@@ -120,6 +120,7 @@
 NET_SockaddrToInetAddress(JNIEnv *env, struct sockaddr *him, int *port);
 
 void initLocalAddrTable ();
+void parseExclusiveBindProperty(JNIEnv *env);
 
 void
 NET_SetTrafficClass(struct sockaddr *him, int trafficClass);
--- a/jdk/src/share/native/sun/awt/image/jpeg/jpegdecoder.c	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/native/sun/awt/image/jpeg/jpegdecoder.c	Wed Jul 05 18:14:56 2017 +0200
@@ -337,7 +337,7 @@
     /* Save the data currently in the buffer */
     offset = src->pub.bytes_in_buffer;
     if (src->pub.next_input_byte > src->inbuf) {
-        memcpy(src->inbuf, src->pub.next_input_byte, offset);
+        memmove(src->inbuf, src->pub.next_input_byte, offset);
     }
     RELEASE_ARRAYS(env, src);
     buflen = (*env)->GetArrayLength(env, src->hInputBuffer) - offset;
--- a/jdk/src/share/native/sun/font/layout/LookupProcessor.cpp	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/native/sun/font/layout/LookupProcessor.cpp	Wed Jul 05 18:14:56 2017 +0200
@@ -95,6 +95,10 @@
 
         if (selectMask != 0) {
             const LookupTable *lookupTable = lookupListTable->getLookupTable(lookup);
+
+            if (!lookupTable)
+                continue;
+
             le_uint16 lookupFlags = SWAPW(lookupTable->lookupFlags);
 
             glyphIterator.reset(lookupFlags, selectMask);
@@ -136,6 +140,9 @@
     for (le_uint16 lookup = 0; lookup < lookupCount; lookup += 1) {
         le_uint16 lookupListIndex = SWAPW(featureTable->lookupListIndexArray[lookup]);
 
+        if (lookupListIndex >= lookupSelectCount)
+            continue;
+
         lookupSelectArray[lookupListIndex] |= featureMask;
         lookupOrderArray[store++] = lookupListIndex;
     }
@@ -147,7 +154,7 @@
         Offset scriptListOffset, Offset featureListOffset, Offset lookupListOffset,
         LETag scriptTag, LETag languageTag, const FeatureMap *featureMap, le_int32 featureMapCount, le_bool orderFeatures,
         LEErrorCode& success)
-    : lookupListTable(NULL), featureListTable(NULL), lookupSelectArray(NULL),
+    : lookupListTable(NULL), featureListTable(NULL), lookupSelectArray(NULL), lookupSelectCount(0),
       lookupOrderArray(NULL), lookupOrderCount(0)
 {
     const ScriptListTable *scriptListTable = NULL;
@@ -195,6 +202,8 @@
         lookupSelectArray[i] = 0;
     }
 
+    lookupSelectCount = lookupListCount;
+
     le_int32 count, order = 0;
     le_int32 featureReferences = 0;
     const FeatureTable *featureTable = NULL;
@@ -211,6 +220,10 @@
         le_uint16 featureIndex = SWAPW(langSysTable->featureIndexArray[feature]);
 
         featureTable = featureListTable->getFeatureTable(featureIndex, &featureTag);
+
+        if (!featureTable)
+            continue;
+
         featureReferences += SWAPW(featureTable->lookupCount);
     }
 
--- a/jdk/src/share/native/sun/font/layout/LookupProcessor.h	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/share/native/sun/font/layout/LookupProcessor.h	Wed Jul 05 18:14:56 2017 +0200
@@ -90,6 +90,7 @@
     const FeatureListTable  *featureListTable;
 
     FeatureMask            *lookupSelectArray;
+    le_uint32              lookupSelectCount;
 
     le_uint16               *lookupOrderArray;
     le_uint32               lookupOrderCount;
--- a/jdk/src/solaris/classes/sun/font/FcFontConfiguration.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/solaris/classes/sun/font/FcFontConfiguration.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2012, 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
@@ -33,6 +33,7 @@
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.nio.charset.Charset;
+import java.nio.file.Files;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Properties;
@@ -387,7 +388,7 @@
             File fcInfoFile = getFcInfoFile();
             File dir = fcInfoFile.getParentFile();
             dir.mkdirs();
-            File tempFile = File.createTempFile("fcinfo", null, dir);
+            File tempFile = Files.createTempFile(dir.toPath(), "fcinfo", null).toFile();
             FileOutputStream fos = new FileOutputStream(tempFile);
             props.store(fos,
                       "JDK Font Configuration Generated File: *Do Not Edit*");
--- a/jdk/src/solaris/classes/sun/print/CUPSPrinter.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/solaris/classes/sun/print/CUPSPrinter.java	Wed Jul 05 18:14:56 2017 +0200
@@ -278,14 +278,26 @@
                                          is);
                     is.close();
 
-                    if (responseMap.length > 0) {
+                    if (responseMap != null && responseMap.length > 0) {
                         defaultMap = responseMap[0];
                     }
 
                     if (defaultMap == null) {
                         os.close();
                         urlConnection.disconnect();
-                        return null;
+
+                        /* CUPS on OS X, as initially configured, considers the
+                         * default printer to be the last one used that's
+                         * presently available. So if no default was
+                         * reported, exec lpstat -d which has all the Apple
+                         * special behaviour for this built in.
+                         */
+                         if (UnixPrintServiceLookup.isMac()) {
+                             return UnixPrintServiceLookup.
+                                                   getDefaultPrinterNameSysV();
+                         } else {
+                             return null;
+                         }
                     }
 
                     AttributeClass attribClass = (AttributeClass)
--- a/jdk/src/solaris/classes/sun/print/UnixPrintJob.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/solaris/classes/sun/print/UnixPrintJob.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2012, 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
@@ -42,6 +42,7 @@
 import java.io.Reader;
 import java.io.StringWriter;
 import java.io.UnsupportedEncodingException;
+import java.nio.file.Files;
 import java.util.Vector;
 
 import javax.print.CancelablePrintJob;
@@ -938,7 +939,7 @@
                      * is not removed for some reason, request that it is
                      * removed when the VM exits.
                      */
-                    spoolFile = File.createTempFile("javaprint", ".ps", null);
+                    spoolFile = Files.createTempFile("javaprint", ".ps").toFile();
                     spoolFile.deleteOnExit();
                 }
                 result = new FileOutputStream(spoolFile);
--- a/jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java	Wed Jul 05 18:14:56 2017 +0200
@@ -51,6 +51,7 @@
 import java.io.File;
 import java.io.FileReader;
 import java.net.URL;
+import java.nio.file.Files;
 
 /*
  * Remind: This class uses solaris commands. We also need a linux
@@ -114,6 +115,10 @@
             new sun.security.action.GetPropertyAction("os.name"));
     }
 
+    static boolean isMac() {
+        return osname.startsWith("Mac");
+    }
+
     static boolean isSysV() {
         return osname.equals("SunOS");
     }
@@ -212,7 +217,7 @@
                 }
             }
         } else {
-            if (isSysV()) {
+            if (isMac() || isSysV()) {
                 printers = getAllPrinterNamesSysV();
             } else { //BSD
                 printers = getAllPrinterNamesBSD();
@@ -361,7 +366,7 @@
         if (name == null || name.equals("") || !checkPrinterName(name)) {
             return null;
         }
-        if (isSysV()) {
+        if (isMac() || isSysV()) {
             printer = getNamedPrinterNameSysV(name);
         } else {
             printer = getNamedPrinterNameBSD(name);
@@ -523,7 +528,7 @@
         if (CUPSPrinter.isCupsRunning()) {
             defaultPrinter = CUPSPrinter.getDefaultPrinter();
         } else {
-            if (isSysV()) {
+            if (isMac() || isSysV()) {
                 defaultPrinter = getDefaultPrinterNameSysV();
             } else {
                 defaultPrinter = getDefaultPrinterNameBSD();
@@ -644,7 +649,7 @@
         return names;
     }
 
-    private String getDefaultPrinterNameSysV() {
+    static String getDefaultPrinterNameSysV() {
         String defaultPrinter = "lp";
         String command = "/usr/bin/lpstat -d";
 
@@ -714,7 +719,7 @@
 
                         Process proc;
                         BufferedReader bufferedReader = null;
-                        File f = File.createTempFile("prn","xc");
+                        File f = Files.createTempFile("prn","xc").toFile();
                         cmd[2] = cmd[2]+">"+f.getAbsolutePath();
 
                         proc = Runtime.getRuntime().exec(cmd);
--- a/jdk/src/solaris/demo/jvmti/hprof/hprof_md.c	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/solaris/demo/jvmti/hprof/hprof_md.c	Wed Jul 05 18:14:56 2017 +0200
@@ -119,9 +119,13 @@
 
     /* create a socket */
     fd = socket(AF_INET, SOCK_STREAM, 0);
+    if ( fd < 0 ) {
+        return -1;
+    }
 
     /* find remote host's addr from name */
     if ((hentry = gethostbyname(hostname)) == NULL) {
+        (void)close(fd);
         return -1;
     }
     (void)memset((char *)&s, 0, sizeof(s));
@@ -134,6 +138,7 @@
 
     /* now try connecting */
     if (-1 == connect(fd, (struct sockaddr*)&s, sizeof(s))) {
+        (void)close(fd);
         return 0;
     }
     return fd;
--- a/jdk/src/solaris/native/java/net/net_util_md.c	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/solaris/native/java/net/net_util_md.c	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, 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
@@ -76,7 +76,7 @@
 getnameinfo_f getnameinfo_ptr = NULL;
 
 /*
- * EXCLBIND socket options only on Solaris 8 & 9.
+ * EXCLBIND socket options only on Solaris
  */
 #if defined(__solaris__) && !defined(TCP_EXCLBIND)
 #define TCP_EXCLBIND            0x21
@@ -131,6 +131,7 @@
 static int init_tcp_max_buf, init_udp_max_buf;
 static int tcp_max_buf;
 static int udp_max_buf;
+static int useExclBind = 0;
 
 /*
  * Get the specified parameter from the specified driver. The value
@@ -765,6 +766,26 @@
 
 #endif
 
+void parseExclusiveBindProperty(JNIEnv *env) {
+#ifdef __solaris__
+    jstring s, flagSet;
+    jclass iCls;
+    jmethodID mid;
+
+    s = (*env)->NewStringUTF(env, "sun.net.useExclusiveBind");
+    CHECK_NULL(s);
+    iCls = (*env)->FindClass(env, "java/lang/System");
+    CHECK_NULL(iCls);
+    mid = (*env)->GetStaticMethodID(env, iCls, "getProperty",
+                "(Ljava/lang/String;)Ljava/lang/String;");
+    CHECK_NULL(mid);
+    flagSet = (*env)->CallStaticObjectMethod(env, iCls, mid, s);
+    if (flagSet != NULL) {
+        useExclBind = 1;
+    }
+#endif
+}
+
 /* In the case of an IPv4 Inetaddress this method will return an
  * IPv4 mapped address where IPv6 is available and v4MappedAddress is TRUE.
  * Otherwise it will return a sockaddr_in structure for an IPv4 InetAddress.
@@ -1478,8 +1499,8 @@
  * Linux allows a socket to bind to 127.0.0.255 which must be
  * caught.
  *
- * On Solaris 8/9 with IPv6 enabled we must use an exclusive
- * bind to guaranteed a unique port number across the IPv4 and
+ * On Solaris with IPv6 enabled we must use an exclusive
+ * bind to guarantee a unique port number across the IPv4 and
  * IPv6 port spaces.
  *
  */
@@ -1509,10 +1530,10 @@
 
 #if defined(__solaris__) && defined(AF_INET6)
     /*
-     * Solaris 8/9 have seperate IPv4 and IPv6 port spaces so we
+     * Solaris has separate IPv4 and IPv6 port spaces so we
      * use an exclusive bind when SO_REUSEADDR is not used to
      * give the illusion of a unified port space.
-     * This also avoid problems with IPv6 sockets connecting
+     * This also avoids problems with IPv6 sockets connecting
      * to IPv4 mapped addresses whereby the socket conversion
      * results in a late bind that fails because the
      * corresponding IPv4 port is in use.
@@ -1521,11 +1542,12 @@
         int arg, len;
 
         len = sizeof(arg);
-        if (getsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char *)&arg,
-                       &len) == 0) {
-            if (arg == 0) {
+        if (useExclBind || getsockopt(fd, SOL_SOCKET, SO_REUSEADDR,
+                       (char *)&arg, &len) == 0) {
+            if (useExclBind || arg == 0) {
                 /*
-                 * SO_REUSEADDR is disabled so enable TCP_EXCLBIND or
+                 * SO_REUSEADDR is disabled or sun.net.useExclusiveBind
+                 * property is true so enable TCP_EXCLBIND or
                  * UDP_EXCLBIND
                  */
                 len = sizeof(arg);
--- a/jdk/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c	Wed Jul 05 18:14:56 2017 +0200
@@ -94,9 +94,6 @@
 {
     jint fd = fdval(env, fdo);
     struct iovec *iov = (struct iovec *)jlong_to_ptr(address);
-    if (len > 16) {
-        len = 16;
-    }
     return convertLongReturnVal(env, readv(fd, iov, len), JNI_TRUE);
 }
 
@@ -126,9 +123,6 @@
 {
     jint fd = fdval(env, fdo);
     struct iovec *iov = (struct iovec *)jlong_to_ptr(address);
-    if (len > 16) {
-        len = 16;
-    }
     return convertLongReturnVal(env, writev(fd, iov, len), JNI_FALSE);
 }
 
--- a/jdk/src/solaris/native/sun/nio/ch/IOUtil.c	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/solaris/native/sun/nio/ch/IOUtil.c	Wed Jul 05 18:14:56 2017 +0200
@@ -136,6 +136,16 @@
     }
 }
 
+JNIEXPORT jint JNICALL
+Java_sun_nio_ch_IOUtil_iovMax(JNIEnv *env, jclass this)
+{
+    jlong iov_max = sysconf(_SC_IOV_MAX);
+    if (iov_max == -1)
+        iov_max = 16;
+    return (jint)iov_max;
+}
+
+
 /* Declared in nio_util.h for use elsewhere in NIO */
 
 jint
--- a/jdk/src/windows/native/java/net/net_util_md.c	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/windows/native/java/net/net_util_md.c	Wed Jul 05 18:14:56 2017 +0200
@@ -126,6 +126,7 @@
 }
 
 void initLocalAddrTable () {}
+void parseExclusiveBindProperty (JNIEnv *env) {}
 
 /*
  * Since winsock doesn't have the equivalent of strerror(errno)
--- a/jdk/src/windows/native/sun/net/www/protocol/http/ntlm/NTLMAuthSequence.c	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/windows/native/sun/net/www/protocol/http/ntlm/NTLMAuthSequence.c	Wed Jul 05 18:14:56 2017 +0200
@@ -151,7 +151,7 @@
 
     VOID        *pInput = 0;
     DWORD            inputLen;
-    CHAR         buffOut[512];
+    CHAR         buffOut[1024];
     jboolean         isCopy;
     SECURITY_STATUS      ss;
     SecBufferDesc        OutBuffDesc;
@@ -178,7 +178,7 @@
     OutBuffDesc.cBuffers  = 1;
     OutBuffDesc.pBuffers  = &OutSecBuff;
 
-    OutSecBuff.cbBuffer   = 512;
+    OutSecBuff.cbBuffer   = 1024;
     OutSecBuff.BufferType = SECBUFFER_TOKEN;
     OutSecBuff.pvBuffer   = buffOut;
 
--- a/jdk/src/windows/native/sun/nio/ch/IOUtil.c	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/windows/native/sun/nio/ch/IOUtil.c	Wed Jul 05 18:14:56 2017 +0200
@@ -41,9 +41,6 @@
 /* field id for jint 'fd' in java.io.FileDescriptor used for socket fds */
 static jfieldID fd_fdID;
 
-/* false for 95/98/ME, true for NT/W2K */
-static jboolean onNT = JNI_FALSE;
-
 JNIEXPORT jboolean JNICALL
 Java_sun_security_provider_NativeSeedGenerator_nativeGenerateSeed
 (JNIEnv *env, jclass clazz, jbyteArray randArray);
@@ -55,13 +52,6 @@
 JNIEXPORT void JNICALL
 Java_sun_nio_ch_IOUtil_initIDs(JNIEnv *env, jclass clazz)
 {
-    OSVERSIONINFO ver;
-    ver.dwOSVersionInfoSize = sizeof(ver);
-    GetVersionEx(&ver);
-    if (ver.dwPlatformId == VER_PLATFORM_WIN32_NT) {
-        onNT = JNI_TRUE;
-    }
-
     clazz = (*env)->FindClass(env, "java/io/FileDescriptor");
     fd_fdID = (*env)->GetFieldID(env, clazz, "fd", "I");
     handle_fdID = (*env)->GetFieldID(env, clazz, "handle", "J");
@@ -80,6 +70,13 @@
                                                                     randArray);
 }
 
+JNIEXPORT jint JNICALL
+Java_sun_nio_ch_IOUtil_iovMax(JNIEnv *env, jclass this)
+{
+    return 16;
+}
+
+
 jint
 convertReturnVal(JNIEnv *env, jint n, jboolean reading)
 {
@@ -205,9 +202,3 @@
 {
     return (*env)->GetLongField(env, fdo, handle_fdID);
 }
-
-jboolean
-isNT()
-{
-    return onNT;
-}
--- a/jdk/src/windows/native/sun/nio/ch/SocketDispatcher.c	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/windows/native/sun/nio/ch/SocketDispatcher.c	Wed Jul 05 18:14:56 2017 +0200
@@ -97,10 +97,6 @@
         return IOS_THROWN;
     }
 
-    if ((isNT() == JNI_FALSE) && (len > 16)) {
-        len = 16;
-    }
-
     /* copy iovec into WSABUF */
     for(i=0; i<len; i++) {
         jint iov_len = iovp[i].iov_len;
@@ -141,41 +137,54 @@
 
 JNIEXPORT jint JNICALL
 Java_sun_nio_ch_SocketDispatcher_write0(JNIEnv *env, jclass clazz, jobject fdo,
-                                       jlong address, jint len)
+                                       jlong address, jint total)
 {
     /* set up */
     int i = 0;
     DWORD written = 0;
+    jint count = 0;
     jint fd = fdval(env, fdo);
     WSABUF buf;
 
-    /* limit size */
-    if (len > MAX_BUFFER_SIZE)
-        len = MAX_BUFFER_SIZE;
+    do {
+        /* limit size */
+        jint len = total - count;
+        if (len > MAX_BUFFER_SIZE)
+            len = MAX_BUFFER_SIZE;
 
-    /* copy iovec into WSABUF */
-    buf.buf = (char *)address;
-    buf.len = (u_long)len;
+        /* copy iovec into WSABUF */
+        buf.buf = (char *)address;
+        buf.len = (u_long)len;
+
+        /* write from the buffer */
+        i = WSASend((SOCKET)fd,     /* Socket */
+                    &buf,           /* pointers to the buffers */
+                    (DWORD)1,       /* number of buffers to process */
+                    &written,       /* receives number of bytes written */
+                    0,              /* no flags */
+                    0,              /* no overlapped sockets */
+                    0);             /* no completion routine */
 
-    /* read into the buffers */
-    i = WSASend((SOCKET)fd, /* Socket */
-            &buf,           /* pointers to the buffers */
-            (DWORD)1,       /* number of buffers to process */
-            &written,       /* receives number of bytes written */
-            0,              /* no flags */
-            0,              /* no overlapped sockets */
-            0);             /* no completion routine */
+        if (i == SOCKET_ERROR) {
+            if (count > 0) {
+                /* can't throw exception when some bytes have been written */
+                break;
+            } else {
+               int theErr = (jint)WSAGetLastError();
+               if (theErr == WSAEWOULDBLOCK) {
+                   return IOS_UNAVAILABLE;
+               }
+               JNU_ThrowIOExceptionWithLastError(env, "Write failed");
+               return IOS_THROWN;
+            }
+        }
 
-    if (i == SOCKET_ERROR) {
-        int theErr = (jint)WSAGetLastError();
-        if (theErr == WSAEWOULDBLOCK) {
-            return IOS_UNAVAILABLE;
-        }
-        JNU_ThrowIOExceptionWithLastError(env, "Write failed");
-        return IOS_THROWN;
-    }
+        count += written;
+        address += written;
 
-    return convertReturnVal(env, (jint)written, JNI_FALSE);
+    } while ((count < total) && (written == MAX_BUFFER_SIZE));
+
+    return count;
 }
 
 JNIEXPORT jlong JNICALL
@@ -195,10 +204,6 @@
         return IOS_THROWN;
     }
 
-    if ((isNT() == JNI_FALSE) && (len > 16)) {
-        len = 16;
-    }
-
     /* copy iovec into WSABUF */
     for(i=0; i<len; i++) {
         jint iov_len = iovp[i].iov_len;
--- a/jdk/src/windows/native/sun/nio/ch/nio_util.h	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/src/windows/native/sun/nio/ch/nio_util.h	Wed Jul 05 18:14:56 2017 +0200
@@ -35,7 +35,6 @@
 
 jint fdval(JNIEnv *env, jobject fdo);
 jlong handleval(JNIEnv *env, jobject fdo);
-jboolean isNT();
 jint convertReturnVal(JNIEnv *env, jint n, jboolean r);
 jlong convertLongReturnVal(JNIEnv *env, jlong n, jboolean r);
 jboolean purgeOutstandingICMP(JNIEnv *env, jclass clazz, jint fd);
--- a/jdk/test/ProblemList.txt	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/test/ProblemList.txt	Wed Jul 05 18:14:56 2017 +0200
@@ -287,6 +287,9 @@
 
 # jdk_security
 
+# 7177556
+com/sun/crypto/provider/KeyFactory/TestProviderLeak.java        generic-all
+
 # 7147060
 com/sun/org/apache/xml/internal/security/transforms/ClassLoaderTest.java	generic-all
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/lang/invoke/AccessControlTest.java	Wed Jul 05 18:14:56 2017 +0200
@@ -0,0 +1,495 @@
+/*
+ * Copyright (c) 2012, 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
+ * @summary test access checking by java.lang.invoke.MethodHandles.Lookup
+ * @library ../../../..
+ * @build test.java.lang.invoke.AccessControlTest
+ * @build test.java.lang.invoke.AccessControlTest_subpkg.Acquaintance_remote
+ * @run junit/othervm test.java.lang.invoke.AccessControlTest
+ */
+
+package test.java.lang.invoke;
+
+import java.lang.invoke.*;
+import java.lang.reflect.*;
+import java.util.*;
+import org.junit.*;
+
+import static java.lang.invoke.MethodHandles.*;
+import static java.lang.invoke.MethodHandles.Lookup.*;
+import static java.lang.invoke.MethodType.*;
+import static org.junit.Assert.*;
+import test.java.lang.invoke.AccessControlTest_subpkg.Acquaintance_remote;
+
+
+/**
+ * Test many combinations of Lookup access and cross-class lookupStatic.
+ * @author jrose
+ */
+public class AccessControlTest {
+    static final Class<?> THIS_CLASS = AccessControlTest.class;
+    // How much output?
+    static int verbosity = 0;
+    static {
+        String vstr = System.getProperty(THIS_CLASS.getSimpleName()+".verbosity");
+        if (vstr == null)
+            vstr = System.getProperty(THIS_CLASS.getName()+".verbosity");
+        if (vstr != null)  verbosity = Integer.parseInt(vstr);
+    }
+
+    private class LookupCase implements Comparable<LookupCase> {
+        final Lookup   lookup;
+        final Class<?> lookupClass;
+        final int      lookupModes;
+        public LookupCase(Lookup lookup) {
+            this.lookup = lookup;
+            this.lookupClass = lookup.lookupClass();
+            this.lookupModes = lookup.lookupModes();
+            assert(lookupString().equals(lookup.toString()));
+            numberOf(lookupClass().getClassLoader()); // assign CL#
+        }
+        public LookupCase(Class<?> lookupClass, int lookupModes) {
+            this.lookup = null;
+            this.lookupClass = lookupClass;
+            this.lookupModes = lookupModes;
+            numberOf(lookupClass().getClassLoader()); // assign CL#
+        }
+
+        public final Class<?> lookupClass() { return lookupClass; }
+        public final int      lookupModes() { return lookupModes; }
+
+        public Lookup lookup() { lookup.getClass(); return lookup; }
+
+        @Override
+        public int compareTo(LookupCase that) {
+            Class<?> c1 = this.lookupClass();
+            Class<?> c2 = that.lookupClass();
+            if (c1 != c2) {
+                int cmp = c1.getName().compareTo(c2.getName());
+                if (cmp != 0)  return cmp;
+                cmp = numberOf(c1.getClassLoader()) - numberOf(c2.getClassLoader());
+                assert(cmp != 0);
+                return cmp;
+            }
+            return -(this.lookupModes() - that.lookupModes());
+        }
+
+        @Override
+        public boolean equals(Object that) {
+            return (that instanceof LookupCase && equals((LookupCase)that));
+        }
+        public boolean equals(LookupCase that) {
+            return (this.lookupClass() == that.lookupClass() &&
+                    this.lookupModes() == that.lookupModes());
+        }
+
+        @Override
+        public int hashCode() {
+            return lookupClass().hashCode() + (lookupModes() * 31);
+        }
+
+        /** Simulate all assertions in the spec. for Lookup.toString. */
+        private String lookupString() {
+            String name = lookupClass.getName();
+            String suffix = "";
+            if (lookupModes == 0)
+                suffix = "/noaccess";
+            else if (lookupModes == PUBLIC)
+                suffix = "/public";
+            else if (lookupModes == (PUBLIC|PACKAGE))
+                suffix = "/package";
+            else if (lookupModes == (PUBLIC|PACKAGE|PRIVATE))
+                suffix = "/private";
+            else if (lookupModes == (PUBLIC|PACKAGE|PRIVATE|PROTECTED))
+                suffix = "";
+            else
+                suffix = "/#"+Integer.toHexString(lookupModes);
+            return name+suffix;
+        }
+
+        /** Simulate all assertions from the spec. for Lookup.in:
+         * <hr/>
+         * Creates a lookup on the specified new lookup class.
+         * [A1] The resulting object will report the specified
+         * class as its own {@link #lookupClass lookupClass}.
+         * <p>
+         * [A2] However, the resulting {@code Lookup} object is guaranteed
+         * to have no more access capabilities than the original.
+         * In particular, access capabilities can be lost as follows:<ul>
+         * <li>[A3] If the new lookup class differs from the old one,
+         * protected members will not be accessible by virtue of inheritance.
+         * (Protected members may continue to be accessible because of package sharing.)
+         * <li>[A4] If the new lookup class is in a different package
+         * than the old one, protected and default (package) members will not be accessible.
+         * <li>[A5] If the new lookup class is not within the same package member
+         * as the old one, private members will not be accessible.
+         * <li>[A6] If the new lookup class is not accessible to the old lookup class,
+         * using the original access modes,
+         * then no members, not even public members, will be accessible.
+         * [A7] (In all other cases, public members will continue to be accessible.)
+         * </ul>
+         * Other than the above cases, the new lookup will have the same
+         * access capabilities as the original. [A8]
+         * <hr/>
+         */
+        public LookupCase in(Class<?> c2) {
+            Class<?> c1 = lookupClass();
+            int m1 = lookupModes();
+            int changed = 0;
+            boolean samePackage = (c1.getClassLoader() == c2.getClassLoader() &&
+                                   packagePrefix(c1).equals(packagePrefix(c2)));
+            boolean sameTopLevel = (topLevelClass(c1) == topLevelClass(c2));
+            boolean sameClass = (c1 == c2);
+            assert(samePackage  || !sameTopLevel);
+            assert(sameTopLevel || !sameClass);
+            boolean accessible = sameClass;  // [A6]
+            if ((m1 & PACKAGE) != 0)  accessible |= samePackage;
+            if ((m1 & PUBLIC ) != 0)  accessible |= (c2.getModifiers() & PUBLIC) != 0;
+            if (!accessible) {
+                // Different package and no access to c2; lose all access.
+                changed |= (PUBLIC|PACKAGE|PRIVATE|PROTECTED);  // [A6]
+            }
+            if (!samePackage) {
+                // Different package; lose PACKAGE and lower access.
+                changed |= (PACKAGE|PRIVATE|PROTECTED);  // [A4]
+            }
+            if (!sameTopLevel) {
+                // Different top-level class.  Lose PRIVATE and lower access.
+                changed |= (PRIVATE|PROTECTED);  // [A5]
+            }
+            if (!sameClass) {
+                changed |= (PROTECTED);     // [A3]
+            } else {
+                assert(changed == 0);       // [A8] (no deprivation if same class)
+            }
+            if (accessible)  assert((changed & PUBLIC) == 0);  // [A7]
+            int m2 = m1 & ~changed;
+            LookupCase l2 = new LookupCase(c2, m2);
+            assert(l2.lookupClass() == c2); // [A1]
+            assert((m1 | m2) == m1);        // [A2] (no elevation of access)
+            return l2;
+        }
+
+        @Override
+        public String toString() {
+            String s = lookupClass().getSimpleName();
+            String lstr = lookupString();
+            int sl = lstr.indexOf('/');
+            if (sl >= 0)  s += lstr.substring(sl);
+            ClassLoader cld = lookupClass().getClassLoader();
+            if (cld != THIS_LOADER)  s += "/loader#"+numberOf(cld);
+            return s;
+        }
+
+        /** Predict the success or failure of accessing this method. */
+        public boolean willAccess(Method m) {
+            Class<?> c1 = lookupClass();
+            Class<?> c2 = m.getDeclaringClass();
+            LookupCase lc = this.in(c2);
+            int m1 = lc.lookupModes();
+            int m2 = fixMods(m.getModifiers());
+            // privacy is strictly enforced on lookups
+            if (c1 != c2)  m1 &= ~PRIVATE;
+            // protected access is sometimes allowed
+            if ((m2 & PROTECTED) != 0) {
+                int prev = m2;
+                m2 |= PACKAGE;  // it acts like a package method also
+                if ((lookupModes() & PROTECTED) != 0 &&
+                    c2.isAssignableFrom(c1))
+                    m2 |= PUBLIC;  // from a subclass, it acts like a public method also
+            }
+            if (verbosity >= 2)
+                System.out.println(this+" willAccess "+lc+" m1="+m1+" m2="+m2+" => "+((m2 & m1) != 0));
+            return (m2 & m1) != 0;
+        }
+    }
+
+    private static Class<?> topLevelClass(Class<?> cls) {
+        Class<?> c = cls;
+        for (Class<?> ec; (ec = c.getEnclosingClass()) != null; )
+            c = ec;
+        assert(c.getEnclosingClass() == null);
+        assert(c == cls || cls.getEnclosingClass() != null);
+        return c;
+    }
+
+    private static String packagePrefix(Class<?> c) {
+        while (c.isArray())  c = c.getComponentType();
+        String s = c.getName();
+        assert(s.indexOf('/') < 0);
+        return s.substring(0, s.lastIndexOf('.')+1);
+    }
+
+
+    private final TreeSet<LookupCase> CASES = new TreeSet<>();
+    private final TreeMap<LookupCase,TreeSet<LookupCase>> CASE_EDGES = new TreeMap<>();
+    private final ArrayList<ClassLoader> LOADERS = new ArrayList<>();
+    private final ClassLoader THIS_LOADER = this.getClass().getClassLoader();
+    { if (THIS_LOADER != null)  LOADERS.add(THIS_LOADER); }  // #1
+
+    private LookupCase lookupCase(String name) {
+        for (LookupCase lc : CASES) {
+            if (lc.toString().equals(name))
+                return lc;
+        }
+        throw new AssertionError(name);
+    }
+
+    private int numberOf(ClassLoader cl) {
+        if (cl == null)  return 0;
+        int i = LOADERS.indexOf(cl);
+        if (i < 0) {
+            i = LOADERS.size();
+            LOADERS.add(cl);
+        }
+        return i+1;
+    }
+
+    private void addLookupEdge(LookupCase l1, Class<?> c2, LookupCase l2) {
+        TreeSet<LookupCase> edges = CASE_EDGES.get(l2);
+        if (edges == null)  CASE_EDGES.put(l2, edges = new TreeSet<>());
+        if (edges.add(l1)) {
+            Class<?> c1 = l1.lookupClass();
+            assert(l2.lookupClass() == c2); // [A1]
+            int m1 = l1.lookupModes();
+            int m2 = l2.lookupModes();
+            assert((m1 | m2) == m1);        // [A2] (no elevation of access)
+            LookupCase expect = l1.in(c2);
+            if (!expect.equals(l2))
+                System.out.println("*** expect "+l1+" => "+expect+" but got "+l2);
+            assertEquals(expect, l2);
+        }
+    }
+
+    private void makeCases(Lookup[] originalLookups) {
+        // make initial set of lookup test cases
+        CASES.clear(); LOADERS.clear(); CASE_EDGES.clear();
+        ArrayList<Class<?>> classes = new ArrayList<>();
+        for (Lookup l : originalLookups) {
+            CASES.add(new LookupCase(l));
+            classes.remove(l.lookupClass());  // no dups please
+            classes.add(l.lookupClass());
+        }
+        System.out.println("loaders = "+LOADERS);
+        int rounds = 0;
+        for (int lastCount = -1; lastCount != CASES.size(); ) {
+            lastCount = CASES.size();  // if CASES grow in the loop we go round again
+            for (LookupCase lc1 : CASES.toArray(new LookupCase[0])) {
+                for (Class<?> c2 : classes) {
+                    LookupCase lc2 = new LookupCase(lc1.lookup().in(c2));
+                    addLookupEdge(lc1, c2, lc2);
+                    CASES.add(lc2);
+                }
+            }
+            rounds++;
+        }
+        System.out.println("filled in "+CASES.size()+" cases from "+originalLookups.length+" original cases in "+rounds+" rounds");
+        if (false) {
+            System.out.println("CASES: {");
+            for (LookupCase lc : CASES) {
+                System.out.println(lc);
+                Set<LookupCase> edges = CASE_EDGES.get(lc);
+                if (edges != null)
+                    for (LookupCase prev : edges) {
+                        System.out.println("\t"+prev);
+                    }
+            }
+            System.out.println("}");
+        }
+    }
+
+    @Test public void test() {
+        makeCases(lookups());
+        if (verbosity > 0) {
+            verbosity += 9;
+            Method pro_in_self = targetMethod(THIS_CLASS, PROTECTED, methodType(void.class));
+            testOneAccess(lookupCase("AccessControlTest/public"),  pro_in_self, "find");
+            testOneAccess(lookupCase("Remote_subclass/public"),    pro_in_self, "find");
+            testOneAccess(lookupCase("Remote_subclass"),           pro_in_self, "find");
+            verbosity -= 9;
+        }
+        Set<Class<?>> targetClassesDone = new HashSet<>();
+        for (LookupCase targetCase : CASES) {
+            Class<?> targetClass = targetCase.lookupClass();
+            if (!targetClassesDone.add(targetClass))  continue;  // already saw this one
+            String targetPlace = placeName(targetClass);
+            if (targetPlace == null)  continue;  // Object, String, not a target
+            for (int targetAccess : ACCESS_CASES) {
+                MethodType methodType = methodType(void.class);
+                Method method = targetMethod(targetClass, targetAccess, methodType);
+                // Try to access target method from various contexts.
+                for (LookupCase sourceCase : CASES) {
+                    testOneAccess(sourceCase, method, "find");
+                    testOneAccess(sourceCase, method, "unreflect");
+                }
+            }
+        }
+        System.out.println("tested "+testCount+" access scenarios; "+testCountFails+" accesses were denied");
+    }
+
+    private int testCount, testCountFails;
+
+    private void testOneAccess(LookupCase sourceCase, Method method, String kind) {
+        Class<?> targetClass = method.getDeclaringClass();
+        String methodName = method.getName();
+        MethodType methodType = methodType(method.getReturnType(), method.getParameterTypes());
+        boolean willAccess = sourceCase.willAccess(method);
+        boolean didAccess = false;
+        ReflectiveOperationException accessError = null;
+        try {
+            switch (kind) {
+            case "find":
+                if ((method.getModifiers() & Modifier.STATIC) != 0)
+                    sourceCase.lookup().findStatic(targetClass, methodName, methodType);
+                else
+                    sourceCase.lookup().findVirtual(targetClass, methodName, methodType);
+                break;
+            case "unreflect":
+                sourceCase.lookup().unreflect(method);
+                break;
+            default:
+                throw new AssertionError(kind);
+            }
+            didAccess = true;
+        } catch (ReflectiveOperationException ex) {
+            accessError = ex;
+        }
+        if (willAccess != didAccess) {
+            System.out.println(sourceCase+" => "+targetClass.getSimpleName()+"."+methodName+methodType);
+            System.out.println("fail on "+method+" ex="+accessError);
+            assertEquals(willAccess, didAccess);
+        }
+        testCount++;
+        if (!didAccess)  testCountFails++;
+    }
+
+    static Method targetMethod(Class<?> targetClass, int targetAccess, MethodType methodType) {
+        String methodName = accessName(targetAccess)+placeName(targetClass);
+        if (verbosity >= 2)
+            System.out.println(targetClass.getSimpleName()+"."+methodName+methodType);
+        try {
+            Method method = targetClass.getDeclaredMethod(methodName, methodType.parameterArray());
+            assertEquals(method.getReturnType(), methodType.returnType());
+            int haveMods = method.getModifiers();
+            assert(Modifier.isStatic(haveMods));
+            assert(targetAccess == fixMods(haveMods));
+            return method;
+        } catch (NoSuchMethodException ex) {
+            throw new AssertionError(methodName, ex);
+        }
+    }
+
+    static String placeName(Class<?> cls) {
+        // return "self", "sibling", "nestmate", etc.
+        if (cls == AccessControlTest.class)  return "self";
+        String cln = cls.getSimpleName();
+        int under = cln.lastIndexOf('_');
+        if (under < 0)  return null;
+        return cln.substring(under+1);
+    }
+    static String accessName(int acc) {
+        switch (acc) {
+        case PUBLIC:     return "pub_in_";
+        case PROTECTED:  return "pro_in_";
+        case PACKAGE:    return "pkg_in_";
+        case PRIVATE:    return "pri_in_";
+        }
+        assert(false);
+        return "?";
+    }
+    private static final int[] ACCESS_CASES = {
+        PUBLIC, PACKAGE, PRIVATE, PROTECTED
+    };
+    /** Return one of the ACCESS_CASES. */
+    static int fixMods(int mods) {
+        mods &= (PUBLIC|PRIVATE|PROTECTED);
+        switch (mods) {
+        case PUBLIC: case PRIVATE: case PROTECTED: return mods;
+        case 0:  return PACKAGE;
+        }
+        throw new AssertionError(mods);
+    }
+
+    static Lookup[] lookups() {
+        ArrayList<Lookup> tem = new ArrayList<>();
+        Collections.addAll(tem,
+                           AccessControlTest.lookup_in_self(),
+                           Inner_nestmate.lookup_in_nestmate(),
+                           AccessControlTest_sibling.lookup_in_sibling());
+        if (true) {
+            Collections.addAll(tem,Acquaintance_remote.lookups());
+        } else {
+            try {
+                Class<?> remc = Class.forName("test.java.lang.invoke.AccessControlTest_subpkg.Acquaintance_remote");
+                Lookup[] remls = (Lookup[]) remc.getMethod("lookups").invoke(null);
+                Collections.addAll(tem, remls);
+            } catch (ReflectiveOperationException ex) {
+                throw new LinkageError("reflection failed", ex);
+            }
+        }
+        tem.add(publicLookup());
+        tem.add(publicLookup().in(String.class));
+        tem.add(publicLookup().in(List.class));
+        return tem.toArray(new Lookup[0]);
+    }
+
+    static Lookup lookup_in_self() {
+        return MethodHandles.lookup();
+    }
+    static public      void pub_in_self() { }
+    static protected   void pro_in_self() { }
+    static /*package*/ void pkg_in_self() { }
+    static private     void pri_in_self() { }
+
+    static class Inner_nestmate {
+        static Lookup lookup_in_nestmate() {
+            return MethodHandles.lookup();
+        }
+        static public      void pub_in_nestmate() { }
+        static protected   void pro_in_nestmate() { }
+        static /*package*/ void pkg_in_nestmate() { }
+        static private     void pri_in_nestmate() { }
+    }
+}
+class AccessControlTest_sibling {
+    static Lookup lookup_in_sibling() {
+        return MethodHandles.lookup();
+    }
+    static public      void pub_in_sibling() { }
+    static protected   void pro_in_sibling() { }
+    static /*package*/ void pkg_in_sibling() { }
+    static private     void pri_in_sibling() { }
+}
+
+// This guy tests access from outside the package:
+/*
+package test.java.lang.invoke.AccessControlTest_subpkg;
+public class Acquaintance_remote {
+    public static Lookup[] lookups() { ...
+    }
+    ...
+}
+*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/lang/invoke/AccessControlTest_subpkg/Acquaintance_remote.java	Wed Jul 05 18:14:56 2017 +0200
@@ -0,0 +1,42 @@
+package test.java.lang.invoke.AccessControlTest_subpkg;
+import test.java.lang.invoke.AccessControlTest;
+import java.lang.invoke.*;
+import static java.lang.invoke.MethodHandles.*;
+
+// This guy tests access from outside the package test.java.lang.invoke:
+public class Acquaintance_remote {
+    public static Lookup[] lookups() {
+        return new Lookup[] {
+            Acquaintance_remote.lookup_in_remote(),
+            Remote_subclass.lookup_in_subclass(),
+            Remote_hidden.lookup_in_hidden()
+        };
+    }
+
+    public static Lookup lookup_in_remote() {
+        return MethodHandles.lookup();
+    }
+    static public      void pub_in_remote() { }
+    static protected   void pro_in_remote() { }
+    static /*package*/ void pkg_in_remote() { }
+    static private     void pri_in_remote() { }
+
+    static public class Remote_subclass extends AccessControlTest {
+        static Lookup lookup_in_subclass() {
+            return MethodHandles.lookup();
+        }
+        static public      void pub_in_subclass() { }
+        static protected   void pro_in_subclass() { }
+        static /*package*/ void pkg_in_subclass() { }
+        static private     void pri_in_subclass() { }
+    }
+    static /*package*/ class Remote_hidden {
+        static Lookup lookup_in_hidden() {
+            return MethodHandles.lookup();
+        }
+        static public      void pub_in_hidden() { }
+        static protected   void pro_in_hidden() { }
+        static /*package*/ void pkg_in_hidden() { }
+        static private     void pri_in_hidden() { }
+    }
+}
--- a/jdk/test/java/net/Socket/setReuseAddress/Basic.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/test/java/net/Socket/setReuseAddress/Basic.java	Wed Jul 05 18:14:56 2017 +0200
@@ -26,6 +26,8 @@
  * @bug 4476378
  * @summary Check the specific behaviour of the setReuseAddress(boolean)
  * method.
+ * @run main Basic
+ * @run main/othervm -Dsun.net.useExclusiveBind Basic
  */
 import java.net.*;
 
@@ -170,7 +172,12 @@
             s2.bind( new InetSocketAddress(s1.getLocalPort()) );
             passed();
         } catch (BindException e) {
-            failed();
+            if (System.getProperty("sun.net.useExclusiveBind") != null) {
+                // exclusive bind enabled - expected result
+                passed();
+            } else {
+                failed();
+            }
         }
         s2.close();
 
--- a/jdk/test/java/net/Socket/setReuseAddress/Restart.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/test/java/net/Socket/setReuseAddress/Restart.java	Wed Jul 05 18:14:56 2017 +0200
@@ -26,6 +26,8 @@
  * @bug 4476378
  * @summary Check that SO_REUSEADDR allows a server to restart
  *          after a crash.
+ * @run main Restart
+ * @run main/othervm -Dsun.net.useExclusiveBind Restart
  */
 import java.net.*;
 
@@ -57,6 +59,12 @@
 
             // close the client socket
             s1.close();
+        } catch (BindException be) {
+            if (System.getProperty("sun.net.useExclusiveBind") != null) {
+                // exclusive bind, expected exception
+            } else {
+                throw be;
+            }
         } finally {
             if (ss != null) ss.close();
             if (s1 != null) s1.close();
--- a/jdk/test/java/nio/channels/AsyncCloseAndInterrupt.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/test/java/nio/channels/AsyncCloseAndInterrupt.java	Wed Jul 05 18:14:56 2017 +0200
@@ -644,9 +644,9 @@
         initPipes();
         initFile();
 
-        if (TestUtil.onME()) {
+        if (TestUtil.onWindows()) {
             log.println("WARNING: Cannot test FileChannel transfer operations"
-                        + " on Windows 95/98/ME");
+                        + " on Windows");
         } else {
             test(diskFileChannelFactory, TRANSFER_TO);
             test(diskFileChannelFactory, TRANSFER_FROM);
--- a/jdk/test/java/nio/channels/SocketChannel/AdaptSocket.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/test/java/nio/channels/SocketChannel/AdaptSocket.java	Wed Jul 05 18:14:56 2017 +0200
@@ -28,9 +28,7 @@
 
 import java.io.*;
 import java.net.*;
-import java.nio.*;
 import java.nio.channels.*;
-import java.nio.charset.*;
 
 
 public class AdaptSocket {
@@ -136,9 +134,8 @@
         out.println("timeout: " + so.getSoTimeout());
 
         testRead(so, shouldTimeout);
-        if (!TestUtil.onME())
-            for (int i = 0; i < 4; i++)
-                testRead(so, shouldTimeout);
+        for (int i = 0; i < 4; i++)
+            testRead(so, shouldTimeout);
 
         sc.close();
     }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/nio/channels/SocketChannel/CloseDuringWrite.java	Wed Jul 05 18:14:56 2017 +0200
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) 2012, 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
+ * @summary Test asynchronous close during a blocking write
+ */
+
+import java.io.Closeable;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.nio.channels.*;
+import java.net.*;
+import java.util.concurrent.*;
+import java.util.Random;
+
+public class CloseDuringWrite {
+
+    static final Random rand = new Random();
+
+    /**
+     * A task that closes a Closeable
+     */
+    static class Closer implements Callable<Void> {
+        final Closeable c;
+        Closer(Closeable c) {
+            this.c = c;
+        }
+        public Void call() throws IOException {
+            c.close();
+            return null;
+        }
+    }
+
+    public static void main(String[] args) throws Exception {
+        ScheduledExecutorService pool = Executors.newSingleThreadScheduledExecutor();
+        try {
+            try (ServerSocketChannel ssc = ServerSocketChannel.open()) {
+                ssc.bind(new InetSocketAddress(0));
+                InetAddress lh = InetAddress.getLocalHost();
+                int port = ssc.socket().getLocalPort();
+                SocketAddress sa = new InetSocketAddress(lh, port);
+
+                ByteBuffer bb = ByteBuffer.allocate(2*1024*1024);
+
+                for (int i=0; i<20; i++) {
+                    try (SocketChannel source = SocketChannel.open(sa);
+                         SocketChannel sink = ssc.accept())
+                    {
+                        // schedule channel to be closed
+                        Closer c = new Closer(source);
+                        int when = 1000 + rand.nextInt(2000);
+                        Future<Void> result = pool.schedule(c, when, TimeUnit.MILLISECONDS);
+
+                        // the write should either succeed or else throw a
+                        // ClosedChannelException (more likely an
+                        // AsynchronousCloseException)
+                        try {
+                            for (;;) {
+                                int limit = rand.nextInt(bb.capacity());
+                                bb.position(0);
+                                bb.limit(limit);
+                                int n = source.write(bb);
+                                System.out.format("wrote %d, expected %d%n", n, limit);
+                            }
+                        } catch (ClosedChannelException expected) {
+                            System.out.println(expected + " (expected)");
+                        } finally {
+                            result.get();
+                        }
+                    }
+                }
+            }
+        } finally {
+            pool.shutdown();
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/nio/channels/SocketChannel/ShortWrite.java	Wed Jul 05 18:14:56 2017 +0200
@@ -0,0 +1,136 @@
+/*
+ * Copyright (c) 2012, 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 7176630
+ * @summary Check for short writes on SocketChannels configured in blocking mode
+ */
+
+import java.net.*;
+import java.nio.ByteBuffer;
+import java.nio.channels.*;
+import java.util.concurrent.*;
+import java.util.Random;
+import java.util.zip.CRC32;
+
+public class ShortWrite {
+
+    static final Random rand = new Random();
+
+    /**
+     * Returns a checksum on the remaining bytes in the given buffer.
+     */
+    static long computeChecksum(ByteBuffer bb) {
+        CRC32 crc32 = new CRC32();
+        crc32.update(bb);
+        return crc32.getValue();
+    }
+
+    /**
+     * A task that reads the expected number of bytes and returns the CRC32
+     * of those bytes.
+     */
+    static class Reader implements Callable<Long> {
+        final SocketChannel sc;
+        final ByteBuffer buf;
+
+        Reader(SocketChannel sc, int expectedSize) {
+            this.sc = sc;
+            this.buf = ByteBuffer.allocate(expectedSize);
+        }
+
+        public Long call() throws Exception {
+            while (buf.hasRemaining()) {
+                int n = sc.read(buf);
+                if (n == -1)
+                    throw new RuntimeException("Premature EOF encountered");
+            }
+            buf.flip();
+            return computeChecksum(buf);
+        }
+    }
+
+    /**
+     * Run test with a write of the given number of bytes.
+     */
+    static void test(ExecutorService pool,
+                     SocketChannel source,
+                     SocketChannel sink,
+                     int size)
+        throws Exception
+    {
+        System.out.println(size);
+
+        // random bytes in the buffer
+        ByteBuffer buf = ByteBuffer.allocate(size);
+        rand.nextBytes(buf.array());
+
+        // submit task to read the bytes
+        Future<Long> result = pool.submit(new Reader(sink, size));
+
+        // write the bytes
+        int n = source.write(buf);
+        if (n != size)
+            throw new RuntimeException("Short write detected");
+
+        // check the bytes that were received match
+        buf.rewind();
+        long expected = computeChecksum(buf);
+        long actual = result.get();
+        if (actual != expected)
+            throw new RuntimeException("Checksum did not match");
+    }
+
+
+    public static void main(String[] args) throws Exception {
+        ExecutorService pool = Executors.newSingleThreadExecutor();
+        try {
+            try (ServerSocketChannel ssc = ServerSocketChannel.open()) {
+                ssc.bind(new InetSocketAddress(0));
+                InetAddress lh = InetAddress.getLocalHost();
+                int port = ssc.socket().getLocalPort();
+                SocketAddress sa = new InetSocketAddress(lh, port);
+
+                try (SocketChannel source = SocketChannel.open(sa);
+                     SocketChannel sink = ssc.accept())
+                {
+                    // run tests on sizes around 128k as that is the problem
+                    // area on Windows.
+                    int BOUNDARY = 128 * 1024;
+                    for (int size=(BOUNDARY-2); size<=(BOUNDARY+2); size++) {
+                        test(pool, source, sink, size);
+                    }
+
+                    // run tests on random sizes
+                    for (int i=0; i<20; i++) {
+                        int size = rand.nextInt(1024*1024);
+                        test(pool, source, sink, size);
+                    }
+                }
+            }
+
+        } finally {
+            pool.shutdown();
+        }
+    }
+}
--- a/jdk/test/java/nio/channels/TestUtil.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/test/java/nio/channels/TestUtil.java	Wed Jul 05 18:14:56 2017 +0200
@@ -81,20 +81,6 @@
 
     private static String osName = System.getProperty("os.name");
 
-    // Examines os.name property to determine if running on 95/98/ME.
-    //
-    // Returns true if running on windows95/98/ME.
-    //
-    static boolean onME() {
-        if (osName.startsWith("Windows")) {
-            if (osName.indexOf("9") > 0)
-                return true;
-            if (osName.indexOf("M") > 0)
-                return true;
-        }
-        return false;
-    }
-
     static boolean onSolaris() {
         return osName.startsWith("SunOS");
     }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/security/cert/CertPathBuilder/zeroLengthPath/ZeroLengthPath.java	Wed Jul 05 18:14:56 2017 +0200
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2012, 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 4442566 7176326
+ * @summary check that we can build and validate a zero-length
+ *    certpath when a trust anchor cert satisfies the target constraints
+ */
+import java.io.ByteArrayInputStream;
+import java.security.cert.*;
+import java.util.Collections;
+
+public class ZeroLengthPath {
+
+    private static final String ANCHOR =
+        "-----BEGIN CERTIFICATE-----\n" +
+        "MIIBFzCBwgIBATANBgkqhkiG9w0BAQQFADAXMRUwEwYDVQQDEwxUcnVzdCBBbmNo\n" +
+        "b3IwHhcNMDIxMTA3MTE1NzAzWhcNMjIxMTA3MTE1NzAzWjAXMRUwEwYDVQQDEwxU\n" +
+        "cnVzdCBBbmNob3IwXDANBgkqhkiG9w0BAQEFAANLADBIAkEA9uCj12hwDgC1n9go\n" +
+        "0ozQAVMM+DfX0vpKOemyGNp+ycSLfAq3pxBcUKbQhjSRL7YjPkEL8XC6pRLwyEoF\n" +
+        "osWweQIDAQABMA0GCSqGSIb3DQEBBAUAA0EAzZta5M1qbbozj7jWnNyTgB4HUpzv\n" +
+        "4eP0VYQb1pQY1/xEMczaRt+RuoIDnHCq5a1vOiwk6ZbdG6GlJKx9lj0oMQ==\n" +
+        "-----END CERTIFICATE-----";
+
+
+    public static void main(String[] args) throws Exception {
+
+        ByteArrayInputStream is = new ByteArrayInputStream(ANCHOR.getBytes());
+        CertificateFactory cf = CertificateFactory.getInstance("X.509");
+        X509Certificate cert = (X509Certificate)cf.generateCertificate(is);
+
+        X509CertSelector xcs = new X509CertSelector();
+        xcs.setSubject(cert.getSubjectX500Principal().getName());
+        PKIXBuilderParameters p = new PKIXBuilderParameters
+            (Collections.singleton(new TrustAnchor(cert, null)), xcs);
+        CertPathBuilder cpb = CertPathBuilder.getInstance("PKIX");
+        CertPath cp = buildCertPath(cpb, p);
+        validateCertPath(cp, p);
+    }
+
+    private static CertPath buildCertPath(CertPathBuilder cpb,
+                                          PKIXBuilderParameters params)
+        throws Exception
+    {
+        CertPathBuilderResult res = cpb.build(params);
+        if (res.getCertPath().getCertificates().size() != 0) {
+            throw new Exception("built path is not zero-length");
+        }
+        return res.getCertPath();
+    }
+
+    private static void validateCertPath(CertPath cp, PKIXParameters params)
+        throws Exception
+    {
+        CertPathValidator cpv = CertPathValidator.getInstance("PKIX");
+        CertPathValidatorResult cpvr = cpv.validate(cp, params);
+    }
+}
--- a/jdk/test/java/util/Map/Collisions.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/test/java/util/Map/Collisions.java	Wed Jul 05 18:14:56 2017 +0200
@@ -68,7 +68,7 @@
             return Integer.toString(value);
         }
     }
-    private static final int ITEMS = 10000;
+    private static final int ITEMS = 5000;
     private static final Object KEYS[][];
 
     static {
@@ -133,8 +133,8 @@
 
     private static void realMain(String[] args) throws Throwable {
         for (Object[] keys_desc : KEYS) {
-            Map<Object, Boolean>[] MAPS = (Map<Object, Boolean>[]) new Map[]{
-//                        new Hashtable<>(),
+            Map<Object, Object>[] MAPS = (Map<Object, Object>[]) new Map[]{
+                        new Hashtable<>(),
                         new HashMap<>(),
                         new IdentityHashMap<>(),
                         new LinkedHashMap<>(),
@@ -144,51 +144,69 @@
                         new ConcurrentSkipListMap<>()
                     };
 
-            for (Map<Object, Boolean> map : MAPS) {
+            for (Map<Object, Object> map : MAPS) {
                 String desc = (String) keys_desc[0];
                 Object[] keys = (Object[]) keys_desc[1];
+                try {
                 testMap(map, desc, keys);
+                } catch(Exception all) {
+                    unexpected("Failed for " + map.getClass().getName() + " with " + desc, all);
+                }
             }
         }
     }
 
-    private static <T> void testMap(Map<T, Boolean> map, String keys_desc, T[] keys) {
-        System.err.println(map.getClass() + " : " + keys_desc);
+    private static <T> void testMap(Map<T, T> map, String keys_desc, T[] keys) {
+        System.out.println(map.getClass() + " : " + keys_desc);
+        System.out.flush();
         testInsertion(map, keys_desc, keys);
 
         if (keys[0] instanceof HashableInteger) {
-            testIntegerIteration((Map<HashableInteger, Boolean>) map, (HashableInteger[]) keys);
+            testIntegerIteration((Map<HashableInteger, HashableInteger>) map, (HashableInteger[]) keys);
         } else {
-            testStringIteration((Map<String, Boolean>) map, (String[]) keys);
+            testStringIteration((Map<String, String>) map, (String[]) keys);
         }
 
         testContainsKey(map, keys_desc, keys);
 
         testRemove(map, keys_desc, keys);
 
+        map.clear();
+        testInsertion(map, keys_desc, keys);
+        testKeysIteratorRemove(map, keys_desc, keys);
+
+        map.clear();
+        testInsertion(map, keys_desc, keys);
+        testValuesIteratorRemove(map, keys_desc, keys);
+
+        map.clear();
+        testInsertion(map, keys_desc, keys);
+        testEntriesIteratorRemove(map, keys_desc, keys);
+
         check(map.isEmpty());
     }
 
-    private static <T> void testInsertion(Map<T, Boolean> map, String keys_desc, T[] keys) {
+    private static <T> void testInsertion(Map<T, T> map, String keys_desc, T[] keys) {
         check("map empty", (map.size() == 0) && map.isEmpty());
 
         for (int i = 0; i < keys.length; i++) {
             check(String.format("insertion: map expected size m%d != i%d", map.size(), i),
                     map.size() == i);
-            check(String.format("insertion: put(%s[%d])", keys_desc, i), null == map.put(keys[i], true));
+            check(String.format("insertion: put(%s[%d])", keys_desc, i), null == map.put(keys[i], keys[i]));
             check(String.format("insertion: containsKey(%s[%d])", keys_desc, i), map.containsKey(keys[i]));
+            check(String.format("insertion: containsValue(%s[%d])", keys_desc, i), map.containsValue(keys[i]));
         }
 
         check(String.format("map expected size m%d != k%d", map.size(), keys.length),
                 map.size() == keys.length);
     }
 
-    private static void testIntegerIteration(Map<HashableInteger, Boolean> map, HashableInteger[] keys) {
+    private static void testIntegerIteration(Map<HashableInteger, HashableInteger> map, HashableInteger[] keys) {
         check(String.format("map expected size m%d != k%d", map.size(), keys.length),
                 map.size() == keys.length);
 
         BitSet all = new BitSet(keys.length);
-        for (Map.Entry<HashableInteger, Boolean> each : map.entrySet()) {
+        for (Map.Entry<HashableInteger, HashableInteger> each : map.entrySet()) {
             check("Iteration: key already seen", !all.get(each.getKey().value));
             all.set(each.getKey().value);
         }
@@ -205,7 +223,7 @@
         check("Iteration: some keys not visited", all.isEmpty());
 
         int count = 0;
-        for (Boolean each : map.values()) {
+        for (HashableInteger each : map.values()) {
             count++;
         }
 
@@ -213,12 +231,12 @@
                 map.size() == count);
     }
 
-    private static void testStringIteration(Map<String, Boolean> map, String[] keys) {
+    private static void testStringIteration(Map<String, String> map, String[] keys) {
         check(String.format("map expected size m%d != k%d", map.size(), keys.length),
                 map.size() == keys.length);
 
         BitSet all = new BitSet(keys.length);
-        for (Map.Entry<String, Boolean> each : map.entrySet()) {
+        for (Map.Entry<String, String> each : map.entrySet()) {
             String key = each.getKey();
             boolean longKey = key.length() > 5;
             int index = key.hashCode() + (longKey ? keys.length / 2 : 0);
@@ -240,7 +258,7 @@
         check("some keys not visited", all.isEmpty());
 
         int count = 0;
-        for (Boolean each : map.values()) {
+        for (String each : map.values()) {
             count++;
         }
 
@@ -248,14 +266,14 @@
                 map.size() == keys.length);
     }
 
-    private static <T> void testContainsKey(Map<T, Boolean> map, String keys_desc, T[] keys) {
+    private static <T> void testContainsKey(Map<T, T> map, String keys_desc, T[] keys) {
         for (int i = 0; i < keys.length; i++) {
             T each = keys[i];
             check("containsKey: " + keys_desc + "[" + i + "]" + each, map.containsKey(each));
         }
     }
 
-    private static <T> void testRemove(Map<T, Boolean> map, String keys_desc, T[] keys) {
+    private static <T> void testRemove(Map<T, T> map, String keys_desc, T[] keys) {
         check(String.format("remove: map expected size m%d != k%d", map.size(), keys.length),
                 map.size() == keys.length);
 
@@ -267,6 +285,56 @@
         check(String.format("remove: map empty. size=%d", map.size()),
                 (map.size() == 0) && map.isEmpty());
     }
+
+    private static <T> void testKeysIteratorRemove(Map<T, T> map, String keys_desc, T[] keys) {
+        check(String.format("remove: map expected size m%d != k%d", map.size(), keys.length),
+                map.size() == keys.length);
+
+        Iterator<T> each = map.keySet().iterator();
+        while (each.hasNext()) {
+            T t = each.next();
+            each.remove();
+            check("not removed: " + each, !map.containsKey(t) );
+        }
+
+        check(String.format("remove: map empty. size=%d", map.size()),
+                (map.size() == 0) && map.isEmpty());
+    }
+
+    private static <T> void testValuesIteratorRemove(Map<T, T> map, String keys_desc, T[] keys) {
+        check(String.format("remove: map expected size m%d != k%d", map.size(), keys.length),
+                map.size() == keys.length);
+
+        Iterator<T> each = map.values().iterator();
+        while (each.hasNext()) {
+            T t = each.next();
+            each.remove();
+            check("not removed: " + each, !map.containsValue(t) );
+        }
+
+        check(String.format("remove: map empty. size=%d", map.size()),
+                (map.size() == 0) && map.isEmpty());
+    }
+
+    private static <T> void testEntriesIteratorRemove(Map<T, T> map, String keys_desc, T[] keys) {
+        check(String.format("remove: map expected size m%d != k%d", map.size(), keys.length),
+                map.size() == keys.length);
+
+        Iterator<Map.Entry<T,T>> each = map.entrySet().iterator();
+        while (each.hasNext()) {
+            Map.Entry<T,T> t = each.next();
+            T key = t.getKey();
+            T value = t.getValue();
+            each.remove();
+            check("not removed: " + each, (map instanceof IdentityHashMap) || !map.entrySet().contains(t) );
+            check("not removed: " + each, !map.containsKey(key) );
+            check("not removed: " + each, !map.containsValue(value));
+        }
+
+        check(String.format("remove: map empty. size=%d", map.size()),
+                (map.size() == 0) && map.isEmpty());
+    }
+
     //--------------------- Infrastructure ---------------------------
     static volatile int passed = 0, failed = 0;
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/spi/ResourceBundleControlProvider/UserDefaultControlTest.java	Wed Jul 05 18:14:56 2017 +0200
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2012, 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 6959653
+ * @summary Test ResourceBundle.Control provided using SPI.
+ * @build UserDefaultControlTest
+ * @run shell UserDefaultControlTest.sh
+ */
+
+import java.io.*;
+import java.net.*;
+import java.util.*;
+
+public class UserDefaultControlTest {
+    public static void main(String[] args) {
+        ResourceBundle rb = ResourceBundle.getBundle("com.foo.XmlRB", Locale.ROOT);
+        String type = rb.getString("type");
+        if (!type.equals("XML")) {
+            throw new RuntimeException("Root Locale: type: got " + type
+                                       + ", expected XML (ASCII)");
+        }
+
+        rb = ResourceBundle.getBundle("com.foo.XmlRB", Locale.JAPAN);
+        type = rb.getString("type");
+        // Expect fullwidth "XML"
+        if (!type.equals("\uff38\uff2d\uff2c")) {
+            throw new RuntimeException("Locale.JAPAN: type: got " + type
+                                       + ", expected \uff38\uff2d\uff2c (fullwidth XML)");
+        }
+
+        try {
+            rb = ResourceBundle.getBundle("com.bar.XmlRB", Locale.JAPAN);
+            throw new RuntimeException("com.bar.XmlRB test failed.");
+        } catch (MissingResourceException e) {
+            // OK
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/spi/ResourceBundleControlProvider/UserDefaultControlTest.sh	Wed Jul 05 18:14:56 2017 +0200
@@ -0,0 +1,24 @@
+# 
+# Copyright (c) 2012, 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.
+#
+
+${TESTJAVA}/bin/java -Djava.ext.dirs=${TESTSRC} -cp ${TESTCLASSES} UserDefaultControlTest
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/spi/ResourceBundleControlProvider/providersrc/Makefile	Wed Jul 05 18:14:56 2017 +0200
@@ -0,0 +1,63 @@
+#
+# Copyright (c) 2012, 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.
+#
+
+#
+# Makefile for building a ResourceBundleControlProvider jar file for testing.
+#
+#    Usage: make JDK_HOME=... all install
+#
+
+DESTDIR = ..
+TMPDIR = tmp
+SERVICESDIR = $(TMPDIR)/META-INF/services
+TARGETJAR = rbcontrolprovider.jar
+BINDIR = $(JDK_HOME)/bin
+
+
+all: $(TARGETJAR)
+
+install: all
+	cp $(TARGETJAR) $(DESTDIR)
+
+SERVICES = java.util.spi.ResourceBundleControlProvider
+
+FILES_JAVA = UserControlProvider.java \
+             UserXMLControl.java
+
+RESOURCE_FILES = XmlRB.xml \
+                 XmlRB_ja.xml
+
+$(TARGETJAR): $(SERVICES) $(FILES_JAVA) $(RESOURCE_FILES)
+	rm -rf $(TMPDIR) $@
+	mkdir -p $(SERVICESDIR)
+	$(BINDIR)/javac -d $(TMPDIR) $(FILES_JAVA)
+	cp $(SERVICES) $(SERVICESDIR)
+	cp $(RESOURCE_FILES) $(TMPDIR)/com/foo
+	$(BINDIR)/jar  cvf $@ -C $(TMPDIR) .
+
+clean:
+	rm -rf $(TMPDIR) $(TARGETJAR)
+
+.PHONY: all install clean
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/spi/ResourceBundleControlProvider/providersrc/UserControlProvider.java	Wed Jul 05 18:14:56 2017 +0200
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2012, 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.foo;
+
+import java.util.ResourceBundle;
+import java.util.spi.ResourceBundleControlProvider;
+
+public class UserControlProvider implements ResourceBundleControlProvider {
+    static final ResourceBundle.Control XMLCONTROL = new UserXMLControl();
+
+    public ResourceBundle.Control getControl(String baseName) {
+        System.out.println(getClass().getName()+".getControl called for " + baseName);
+
+        // Throws a NPE if baseName is null.
+        if (baseName.startsWith("com.foo.Xml")) {
+            System.out.println("\treturns " + XMLCONTROL);
+            return XMLCONTROL;
+        }
+        System.out.println("\treturns null");
+        return null;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/spi/ResourceBundleControlProvider/providersrc/UserXMLControl.java	Wed Jul 05 18:14:56 2017 +0200
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 2012, 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.
+ */
+
+package com.foo;
+
+import java.io.*;
+import java.net.*;
+import java.util.*;
+import static java.util.ResourceBundle.Control.*;
+
+public class UserXMLControl extends ResourceBundle.Control {
+    @Override
+    public List<String> getFormats(String baseName) {
+        if (baseName == null) {
+            throw new NullPointerException();
+        }
+        return Arrays.asList("xml");
+    }
+
+    @Override
+    public ResourceBundle newBundle(String baseName, Locale locale,
+                                    String format,
+                                    ClassLoader loader,
+                                    boolean reload)
+        throws IllegalAccessException,
+               InstantiationException, IOException {
+        if (baseName == null || locale == null
+            || format == null || loader == null) {
+            throw new NullPointerException();
+        }
+        ResourceBundle bundle = null;
+        if (format.equals("xml")) {
+            String bundleName = toBundleName(baseName, locale);
+            String resourceName = toResourceName(bundleName, format);
+            URL url = loader.getResource(resourceName);
+            if (url != null) {
+                URLConnection connection = url.openConnection();
+                if (connection != null) {
+                    if (reload) {
+                        // disable caches if reloading
+                        connection.setUseCaches(false);
+                    }
+                    try (InputStream stream = connection.getInputStream()) {
+                        if (stream != null) {
+                            BufferedInputStream bis = new BufferedInputStream(stream);
+                            bundle = new XMLResourceBundle(bis);
+                        }
+                    }
+                }
+            }
+        }
+        return bundle;
+    }
+
+    private static class XMLResourceBundle extends ResourceBundle {
+        private Properties props;
+
+        XMLResourceBundle(InputStream stream) throws IOException {
+            props = new Properties();
+            props.loadFromXML(stream);
+        }
+
+        protected Object handleGetObject(String key) {
+            if (key == null) {
+                throw new NullPointerException();
+            }
+            return props.get(key);
+        }
+
+        public Enumeration<String> getKeys() {
+            // Not implemented
+            return null;
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/spi/ResourceBundleControlProvider/providersrc/XmlRB.xml	Wed Jul 05 18:14:56 2017 +0200
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2012, 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.
+-->
+<!---->
+
+<!-- DTD for properties -->
+<!DOCTYPE properties [
+<!ELEMENT properties ( comment?, entry* ) >
+<!ATTLIST properties version CDATA #FIXED "1.0">
+<!ELEMENT comment (#PCDATA) >
+<!ELEMENT entry (#PCDATA) >
+<!ATTLIST entry key CDATA #REQUIRED>
+]>
+
+<properties>
+    <comment>Test data for UserDefaultControlTest.java</comment>
+    <entry key="type">XML</entry>
+</properties>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/spi/ResourceBundleControlProvider/providersrc/XmlRB_ja.xml	Wed Jul 05 18:14:56 2017 +0200
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2012, 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.
+-->
+<!---->
+
+<!-- DTD for properties -->
+<!DOCTYPE properties [
+<!ELEMENT properties ( comment?, entry* ) >
+<!ATTLIST properties version CDATA #FIXED "1.0">
+<!ELEMENT comment (#PCDATA) >
+<!ELEMENT entry (#PCDATA) >
+<!ATTLIST entry key CDATA #REQUIRED>
+]>
+
+<properties>
+    <comment>Test data for UserDefaultControlTest.java</comment>
+    <entry key="type">XML</entry>
+</properties>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/spi/ResourceBundleControlProvider/providersrc/java.util.spi.ResourceBundleControlProvider	Wed Jul 05 18:14:56 2017 +0200
@@ -0,0 +1,1 @@
+com.foo.UserControlProvider
Binary file jdk/test/java/util/spi/ResourceBundleControlProvider/rbcontrolprovider.jar has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/JCheckBox/4449413/bug4449413.html	Wed Jul 05 18:14:56 2017 +0200
@@ -0,0 +1,17 @@
+<html>
+<body>
+When the applet starts, you'll see eight controls with black backgrounds.
+Four enabled (on the left side) and four disabled (on the right side)
+checkboxes and radiobuttons.
+
+1. If at least one of the controls' check marks is not visible:
+   the test fails.
+
+2. Uncheck the "Use Ocean Theme" check box. 
+   If now at least one of the controls' check marks is not visible:
+   the test fails.
+
+<applet  code="bug4449413.class" width=250 height=190></applet>
+
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/JCheckBox/4449413/bug4449413.java	Wed Jul 05 18:14:56 2017 +0200
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) 2012, 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 4449413
+ * @summary Tests that checkbox and radiobuttons' check marks are visible when background is black
+ * @author Ilya Boyandin
+ * @run applet/manual=yesno bug4449413.html
+ */
+
+import javax.swing.*;
+import javax.swing.plaf.metal.*;
+import java.awt.event.*;
+import java.awt.*;
+import sun.awt.OSInfo;
+
+public class bug4449413 extends JApplet {
+
+    @Override
+    public void init() {
+
+        try {
+
+            if (OSInfo.getOSType() == OSInfo.OSType.MACOSX) {
+                UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
+            }
+
+            final MetalTheme oceanTheme = (MetalTheme) sun.awt.AppContext.getAppContext().get("currentMetalTheme");
+
+
+            SwingUtilities.invokeAndWait(new Runnable() {
+
+                @Override
+                public void run() {
+                    getContentPane().setLayout(new FlowLayout());
+                    final JPanel panel = new JPanel();
+
+                    JCheckBox box = new JCheckBox("Use Ocean theme", true);
+                    getContentPane().add(box);
+                    box.addItemListener(new ItemListener() {
+
+                        @Override
+                        public void itemStateChanged(ItemEvent e) {
+                            if (e.getStateChange() == ItemEvent.SELECTED) {
+                                MetalLookAndFeel.setCurrentTheme(oceanTheme);
+                            } else {
+                                MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+                            }
+                            SwingUtilities.updateComponentTreeUI(panel);
+                        }
+                    });
+
+                    getContentPane().add(panel);
+                    panel.setLayout(new GridLayout(4, 6, 10, 15));
+                    for (int k = 0; k <= 3; k++) {
+                        for (int j = 1; j >= 0; j--) {
+                            AbstractButton b = createButton(j, k);
+                            panel.add(b);
+                        }
+                    }
+                }
+            });
+
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    static AbstractButton createButton(int enabled, int type) {
+        AbstractButton b = null;
+        switch (type) {
+            case 0:
+                b = new JRadioButton("RadioButton");
+                break;
+            case 1:
+                b = new JCheckBox("CheckBox");
+                break;
+            case 2:
+                b = new JRadioButtonMenuItem("RBMenuItem");
+                break;
+            case 3:
+                b = new JCheckBoxMenuItem("CBMenuItem");
+                break;
+        }
+        b.setBackground(Color.black);
+        b.setForeground(Color.white);
+        b.setEnabled(enabled == 1);
+        b.setSelected(true);
+        return b;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/plaf/synth/7143614/bug7143614.java	Wed Jul 05 18:14:56 2017 +0200
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) 2012, 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 7143614
+ * @summary Issues with Synth Look&Feel
+ * @author Pavel Porvatov
+ */
+
+import sun.awt.SunToolkit;
+
+import javax.swing.plaf.ComponentUI;
+import javax.swing.plaf.basic.BasicButtonUI;
+import javax.swing.plaf.synth.SynthConstants;
+import javax.swing.plaf.synth.SynthLookAndFeel;
+import java.lang.reflect.Method;
+
+public class bug7143614 {
+    private static Method setSelectedUIMethod;
+
+    private static ComponentUI componentUI = new BasicButtonUI();
+
+    public static void main(String[] args) throws Exception {
+        setSelectedUIMethod = SynthLookAndFeel.class.getDeclaredMethod("setSelectedUI", ComponentUI.class,
+                boolean.class, boolean.class, boolean.class, boolean.class);
+        setSelectedUIMethod.setAccessible(true);
+
+        setSelectedUIMethod.invoke(null, componentUI, true, true, true, true);
+
+        validate();
+
+        Thread thread = new ThreadInAnotherAppContext();
+
+        thread.start();
+        thread.join();
+
+        validate();
+
+        System.out.println("Test bug7143614 passed.");
+    }
+
+    private static void validate() throws Exception {
+        Method getSelectedUIMethod = SynthLookAndFeel.class.getDeclaredMethod("getSelectedUI");
+
+        getSelectedUIMethod.setAccessible(true);
+
+        Method getSelectedUIStateMethod = SynthLookAndFeel.class.getDeclaredMethod("getSelectedUIState");
+
+        getSelectedUIStateMethod.setAccessible(true);
+
+        if (getSelectedUIMethod.invoke(null) != componentUI) {
+            throw new RuntimeException("getSelectedUI returns invalid value");
+        }
+        if (((Integer) getSelectedUIStateMethod.invoke(null)).intValue() !=
+                (SynthConstants.SELECTED | SynthConstants.FOCUSED)) {
+            throw new RuntimeException("getSelectedUIState returns invalid value");
+        }
+
+    }
+
+    private static class ThreadInAnotherAppContext extends Thread {
+        public ThreadInAnotherAppContext() {
+            super(new ThreadGroup("7143614"), "ThreadInAnotherAppContext");
+        }
+
+        public void run() {
+            SunToolkit.createNewAppContext();
+
+            try {
+                setSelectedUIMethod.invoke(null, null, false, false, false, false);
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/text/html/parser/Parser/7165725/bug7165725.java	Wed Jul 05 18:14:56 2017 +0200
@@ -0,0 +1,305 @@
+/*
+ * Copyright (c) 2012, 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 7165725
+   @summary  Tests if HTML parser can handle successive script tags in a line
+             and it does not call false text callback after script tags.
+   @run main bug7165725
+*/
+
+import sun.awt.SunToolkit;
+
+import java.awt.BorderLayout;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import javax.swing.*;
+import javax.swing.text.AbstractDocument.AbstractElement;
+import javax.swing.text.AbstractDocument;
+import javax.swing.text.Document;
+import javax.swing.text.MutableAttributeSet;
+import javax.swing.text.html.HTML;
+import javax.swing.text.html.HTMLDocument;
+import javax.swing.text.html.HTMLEditorKit;
+import javax.swing.text.html.parser.ParserDelegator;
+
+public class bug7165725 extends JFrame {
+    private static class GoldenElement {
+
+        private String goldenName;
+        private List<GoldenElement> goldenChildren;
+
+        GoldenElement(String goldenName, GoldenElement... goldenChildren){
+            this.goldenName = goldenName;
+            if (goldenChildren != null) {
+                this.goldenChildren = Arrays.asList(goldenChildren);
+            } else {
+                this.goldenChildren = new ArrayList<>();
+            }
+        }
+
+        // throws RuntimeException if not ok
+        public void checkStructureEquivalence(AbstractDocument.AbstractElement elem) {
+            String name = elem.getName();
+            if (!goldenName.equals(name)) {
+                throw new RuntimeException("Bad structure: expected element name is '" + goldenName + "' but the actual name was '" + name + "'.");
+            }
+            int goldenChildCount = goldenChildren.size();
+            int childCount = elem.getChildCount();
+            if (childCount != goldenChildCount) {
+                System.out.print("D: children: ");
+                for (int i = 0; i < childCount; i++) {
+                    System.out.print(" " + elem.getElement(i).getName());
+                }
+                System.out.println("");
+                System.out.print("D: goldenChildren: ");
+                for (GoldenElement ge : goldenChildren) {
+                    System.out.print(" " + ge.goldenName);
+                }
+                System.out.println("");
+
+                throw new RuntimeException("Bad structure: expected child count of element '" + goldenName + "' is '" + goldenChildCount + "' but the actual count was '" + childCount + "'.");
+            }
+            for (int i = 0; i < childCount; i++) {
+                AbstractDocument.AbstractElement nextElem = (AbstractDocument.AbstractElement) elem.getElement(i);
+                GoldenElement goldenElement = goldenChildren.get(i);
+                goldenElement.checkStructureEquivalence(nextElem);
+            }
+        }
+    }
+
+    private JEditorPane editorPane;
+    public void execute(final String urlStr, final GoldenElement goldenElement) throws Exception {
+        System.out.println();
+        System.out.println("***** TEST: " + urlStr + " *****");
+        System.out.println();
+
+        SwingUtilities.invokeAndWait(new Runnable() {
+            public void run() {
+                try {
+                    editorPane = new JEditorPane();
+                    editorPane.setEditorKit(new HTMLEditorKit() {
+                        public Document createDefaultDocument() {
+                            AbstractDocument doc =
+                                    (AbstractDocument) super.createDefaultDocument();
+                            doc.setAsynchronousLoadPriority(-1);
+                            return doc;
+                        }
+                    });
+                    editorPane.setPage(new URL(urlStr));
+                } catch (IOException ex) {
+                    throw new RuntimeException("Test failed", ex);
+                }
+                editorPane.setEditable(false);
+                JScrollPane scroller = new JScrollPane();
+                JViewport vp = scroller.getViewport();
+                vp.add(editorPane);
+                add(scroller, BorderLayout.CENTER);
+                setDefaultCloseOperation(EXIT_ON_CLOSE);
+                setSize(400, 400);
+                setLocationRelativeTo(null);
+                setVisible(true);
+            }
+        });
+
+        ((SunToolkit) SunToolkit.getDefaultToolkit()).realSync();
+
+        SwingUtilities.invokeAndWait(new Runnable() {
+            public void run() {
+                HTMLDocument doc = (HTMLDocument) editorPane.getDocument();
+                doc.dump(System.out);
+                goldenElement.checkStructureEquivalence((AbstractElement) doc.getDefaultRootElement());
+                dispose();
+            }
+        });
+
+        System.out.println();
+        System.out.println("*********************************");
+        System.out.println();
+    }
+
+    public static void main(String[] args) throws Exception {
+
+        String dirURL = getDirURL();
+
+        System.out.println("dirURL = " + dirURL);
+
+        new bug7165725().execute(dirURL + "successive-script-tag.html", createSuccessiveScriptTags());
+        new bug7165725().execute(dirURL + "false-text-after-script.html", createFalseTextAfterScript());
+
+        checkByCallbackForSuccessiveScript();
+        checkByCallbackForFalseTextAfterScript();
+
+        System.out.println();
+        System.out.println();
+        System.out.println("Test passed.");
+    }
+
+    static String getDirURL() {
+        return "file:///" +
+                new File(System.getProperty("test.src", ".")).getAbsolutePath() +
+                File.separator;
+    }
+
+    static String getParsedContentOneLine(String path) throws Exception {
+        File f = new File(path);
+        FileReader fr = new FileReader(f);
+        ParserDelegator pd = new ParserDelegator();
+        SBParserCallback sbcallback = new SBParserCallback();
+        pd.parse(fr, sbcallback, true);
+        fr.close();
+        return sbcallback.getStringOneLine();
+    }
+
+    static String getParsedContentOneLine(URL url) throws Exception {
+        return getParsedContentOneLine(url.getPath());
+    }
+
+    static void checkByCallbackForSuccessiveScript() throws Exception {
+        String content = getParsedContentOneLine(new URL(getDirURL() + "successive-script-tag.html"));
+        if (!content.matches(".*<script .*/js/js1\\.js.*<script .*/js/js2\\.js.*<script .*/js/js3\\.js.*"))
+            throw new RuntimeException("Failed to lookup script tags/attributes.");
+        if (!content.matches(".*<style .*stylesheets/base\\.css.*<style .*stylesheets/adv\\.css.*"))
+            throw new RuntimeException("Failed to lookup style tags.");
+    }
+
+    static void checkByCallbackForFalseTextAfterScript() throws Exception {
+        String content = getParsedContentOneLine(new URL(getDirURL() + "false-text-after-script.html"));
+        final int bodyIdx = content.indexOf("<body ");
+        if (bodyIdx > 0) {
+            String sbody = content.substring(bodyIdx);
+            // There should be no Text(...) in this html
+            if (sbody.indexOf("Text(") >= 0)
+                throw new RuntimeException("Unexpected text found.");
+        } else {
+            throw new RuntimeException("Failed to find body tag.");
+        }
+    }
+
+    private static GoldenElement createSuccessiveScriptTags() {
+        return new GoldenElement("html",
+                new GoldenElement("head",
+                        new GoldenElement("p-implied",
+                                new GoldenElement("title"),
+                                new GoldenElement("title"),
+                                new GoldenElement("script"),
+                                new GoldenElement("comment"),
+                                new GoldenElement("script"),
+                                new GoldenElement("script"),
+                                new GoldenElement("comment"),
+                                new GoldenElement("script"),
+                                new GoldenElement("script"),
+                                new GoldenElement("comment"),
+                                new GoldenElement("script"),
+                                new GoldenElement("content"))),
+                new GoldenElement("body",
+                        new GoldenElement("p-implied",
+                                new GoldenElement("content"))));
+    }
+
+    private static GoldenElement createFalseTextAfterScript() {
+        return new GoldenElement("html",
+                new GoldenElement("head",
+                        new GoldenElement("p-implied",
+                                new GoldenElement("title"),
+                                new GoldenElement("title"),
+                                new GoldenElement("content"))),
+                new GoldenElement("body",
+                        new GoldenElement("form",
+                                new GoldenElement("p-implied",
+                                        new GoldenElement("input"),
+                                        new GoldenElement("input"),
+                                        new GoldenElement("content"))),
+                        new GoldenElement("p-implied",
+                                new GoldenElement("script"),
+                                new GoldenElement("comment"),
+                                new GoldenElement("script"),
+                                new GoldenElement("script"),
+                                new GoldenElement("comment"),
+                                new GoldenElement("script"),
+                                new GoldenElement("content"))));
+    }
+
+    static class SBParserCallback extends HTMLEditorKit.ParserCallback
+    {
+        private int indentSize = 0;
+        private ArrayList<String> elist = new ArrayList<>();
+
+        public String getStringOneLine() {
+            StringBuilder sb = new StringBuilder();
+            for (String s : elist) sb.append(s);
+            return sb.toString();
+        }
+
+        public String toString() {
+            StringBuffer sb = new StringBuffer();
+            for (String s : elist) sb.append(s + "\n");
+            return sb.toString();
+        }
+
+        protected void indent() {
+            indentSize += 3;
+        }
+        protected void unIndent() {
+            indentSize -= 3; if (indentSize < 0) indentSize = 0;
+        }
+
+        protected String pIndent() {
+            StringBuilder sb = new StringBuilder();
+            for(int i = 0; i < indentSize; i++) sb.append(" ");
+            return sb.toString();
+        }
+
+        public void handleText(char[] data, int pos) {
+            elist.add(pIndent() + "Text(" + data.length + " chars) \"" + new String(data) + "\"");
+        }
+
+        public void handleComment(char[] data, int pos) {
+            elist.add(pIndent() + "Comment(" + data.length + " chars)");
+        }
+
+        public void handleStartTag(HTML.Tag t, MutableAttributeSet a, int pos) {
+            elist.add(pIndent() + "Tag start(<" + t.toString() + " " + a + ">, " +
+                    a.getAttributeCount() + " attrs)");
+            indent();
+        }
+
+        public void handleEndTag(HTML.Tag t, int pos) {
+            unIndent();
+            elist.add(pIndent() + "Tag end(</" + t.toString() + ">)");
+        }
+
+        public void handleSimpleTag(HTML.Tag t, MutableAttributeSet a, int pos) {
+            elist.add(pIndent() + "Tag(<" + t.toString() + ">, " +
+                    a.getAttributeCount() + " attrs)");
+        }
+
+        public void handleError(String errorMsg, int pos){
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/text/html/parser/Parser/7165725/false-text-after-script.html	Wed Jul 05 18:14:56 2017 +0200
@@ -0,0 +1,20 @@
+<html>
+<head> <title> Testing </title> </head>
+<body>
+<form>
+
+  <input type="text" name="text1" >
+  <input type="button" name="button1" value="button" onclick="test1(this.form)">
+
+</form>
+
+<SCRIPT LANGUAGE="JavaScript">
+  function test1(form) {
+  alert(form.text1.value);
+  }
+</SCRIPT>
+<SCRIPT>
+  history.forward();
+</SCRIPT>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/text/html/parser/Parser/7165725/successive-script-tag.html	Wed Jul 05 18:14:56 2017 +0200
@@ -0,0 +1,8 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head><title>my title</title>
+  <script src="../../js/js1.js" language="JavaScript"></script><script src="../../js/js2.js" language="JavaScript"></script><script src="../../js/js3.js" language="JavaScript"></script><style type="text/css" media="screen">@import "stylesheets/base.css";</style><style type="text/css" media="screen">@import "stylesheets/adv.css";</style>
+</head>
+<body>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/misc/JarIndex/JarIndexMergeForClassLoaderTest.java	Wed Jul 05 18:14:56 2017 +0200
@@ -0,0 +1,222 @@
+/*
+ * Copyright (c) 2012, 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     6901992
+ * @summary InvalidJarIndexException due to bug in sun.misc.JarIndex.merge()
+ *          Test URLClassLoader usage of the merge method when using indexes
+ * @author  Diego Belfer
+ */
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.jar.JarEntry;
+import java.util.jar.JarOutputStream;
+
+public class JarIndexMergeForClassLoaderTest {
+    static final String slash = File.separator;
+    static final String testClassesDir = System.getProperty("test.classes", ".");
+    static final String jar;
+    static final boolean debug = true;
+    static final File tmpFolder = new File(testClassesDir);
+
+    static {
+        String javaHome = System.getProperty("java.home");
+        if (javaHome.endsWith("jre")) {
+            int index = javaHome.lastIndexOf(slash);
+            if (index != -1)
+                javaHome = javaHome.substring(0, index);
+        }
+
+        jar = javaHome + slash + "bin" + slash + "jar";
+    }
+
+    public static void main(String[] args) throws Exception {
+        // Create the jars file
+        File jar1 = buildJar1();
+        File jar2 = buildJar2();
+        File jar3 = buildJar3();
+
+        // Index jar files in two levels: jar1 -> jar2 -> jar3
+        createIndex(jar2.getName(), jar3.getName());
+        createIndex(jar1.getName(), jar2.getName());
+
+        // Get root jar of the URLClassLoader
+        URL url = jar1.toURI().toURL();
+
+        URLClassLoader classLoader = new URLClassLoader(new URL[] { url });
+
+        assertResource(classLoader, "com/jar1/resource.file", "jar1");
+        assertResource(classLoader, "com/test/resource1.file", "resource1");
+        assertResource(classLoader, "com/jar2/resource.file", "jar2");
+        assertResource(classLoader, "com/test/resource2.file", "resource2");
+        assertResource(classLoader, "com/test/resource3.file", "resource3");
+
+        /*
+         * The following two asserts failed before the fix of the bug 6901992
+         */
+        // Check that an existing file is found using the merged index
+        assertResource(classLoader, "com/missing/jar3/resource.file", "jar3");
+        // Check that a non existent file in directory which does not contain
+        // any file is not found and it does not throw InvalidJarIndexException
+        assertResource(classLoader, "com/missing/nofile", null);
+    }
+
+    private static File buildJar3() throws FileNotFoundException, IOException {
+        JarBuilder jar3Builder = new JarBuilder(tmpFolder, "jar3.jar");
+        jar3Builder.addResourceFile("com/test/resource3.file", "resource3");
+        jar3Builder.addResourceFile("com/missing/jar3/resource.file", "jar3");
+        return jar3Builder.build();
+    }
+
+    private static File buildJar2() throws FileNotFoundException, IOException {
+        JarBuilder jar2Builder = new JarBuilder(tmpFolder, "jar2.jar");
+        jar2Builder.addResourceFile("com/jar2/resource.file", "jar2");
+        jar2Builder.addResourceFile("com/test/resource2.file", "resource2");
+        return jar2Builder.build();
+    }
+
+    private static File buildJar1() throws FileNotFoundException, IOException {
+        JarBuilder jar1Builder = new JarBuilder(tmpFolder, "jar1.jar");
+        jar1Builder.addResourceFile("com/jar1/resource.file", "jar1");
+        jar1Builder.addResourceFile("com/test/resource1.file", "resource1");
+        return jar1Builder.build();
+    }
+
+    /* create the index */
+    static void createIndex(String parentJar, String childJar) {
+        // ProcessBuilder is used so that the current directory can be set
+        // to the directory that directly contains the jars.
+        debug("Running jar to create the index for: " + parentJar + " and "
+                + childJar);
+        ProcessBuilder pb = new ProcessBuilder(jar, "-i", parentJar, childJar);
+
+        pb.directory(tmpFolder);
+        // pd.inheritIO();
+        try {
+            Process p = pb.start();
+            if (p.waitFor() != 0)
+                throw new RuntimeException("jar indexing failed");
+
+            if (debug && p != null) {
+                debugStream(p.getInputStream());
+                debugStream(p.getErrorStream());
+            }
+        } catch (InterruptedException | IOException x) {
+            throw new RuntimeException(x);
+        }
+    }
+
+    private static void debugStream(InputStream is) throws IOException {
+        try (BufferedReader reader = new BufferedReader(new InputStreamReader(is))) {
+            String line;
+            while ((line = reader.readLine()) != null) {
+                debug(line);
+            }
+        }
+    }
+
+    private static void assertResource(URLClassLoader classLoader, String file,
+            String expectedContent) throws IOException {
+        InputStream fileStream = classLoader.getResourceAsStream(file);
+
+        if (fileStream == null && expectedContent == null) {
+            return;
+        }
+        if (fileStream == null && expectedContent != null) {
+            throw new RuntimeException(
+                    buildMessage(file, expectedContent, null));
+        }
+        try {
+            String actualContent = readAsString(fileStream);
+
+            if (fileStream != null && expectedContent == null) {
+                throw new RuntimeException(buildMessage(file, null,
+                        actualContent));
+            }
+            if (!expectedContent.equals(actualContent)) {
+                throw new RuntimeException(buildMessage(file, expectedContent,
+                        actualContent));
+            }
+        } finally {
+            fileStream.close();
+        }
+    }
+
+    private static String buildMessage(String file, String expectedContent,
+            String actualContent) {
+        return "Expected: " + expectedContent + " for: " + file + " was: "
+                + actualContent;
+    }
+
+    private static String readAsString(InputStream fileStream)
+            throws IOException {
+        byte[] buffer = new byte[1024];
+        int count, len = 0;
+        while ((count = fileStream.read(buffer, len, buffer.length-len)) != -1)
+                len += count;
+        return new String(buffer, 0, len, "ASCII");
+    }
+
+    static void debug(Object message) {
+        if (debug)
+            System.out.println(message);
+    }
+
+    /*
+     * Helper class for building jar files
+     */
+    public static class JarBuilder {
+        private JarOutputStream os;
+        private File jarFile;
+
+        public JarBuilder(File tmpFolder, String jarName)
+            throws FileNotFoundException, IOException
+        {
+            this.jarFile = new File(tmpFolder, jarName);
+            this.os = new JarOutputStream(new FileOutputStream(jarFile));
+        }
+
+        public void addResourceFile(String pathFromRoot, String content)
+            throws IOException
+        {
+            JarEntry entry = new JarEntry(pathFromRoot);
+            os.putNextEntry(entry);
+            os.write(content.getBytes("ASCII"));
+            os.closeEntry();
+        }
+
+        public File build() throws IOException {
+            os.close();
+            return jarFile;
+        }
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/misc/JarIndex/JarIndexMergeTest.java	Wed Jul 05 18:14:56 2017 +0200
@@ -0,0 +1,116 @@
+/*
+ * Copyright (c) 2012, 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 6901992
+ * @compile -XDignore.symbol.file JarIndexMergeTest.java
+ * @run main JarIndexMergeTest
+ * @summary InvalidJarIndexException due to bug in sun.misc.JarIndex.merge()
+ * @author  Diego Belfer
+ */
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.LinkedList;
+import java.util.jar.JarEntry;
+import java.util.jar.JarOutputStream;
+// implementation specific API
+import sun.misc.JarIndex;
+
+public class JarIndexMergeTest {
+    static final String slash = File.separator;
+    static final String testClassesDir = System.getProperty("test.classes", ".");
+    static final File tmpFolder = new File(testClassesDir);
+
+    public static void main(String[] args) throws Exception {
+        File jar1 = buildJar1();
+        File jar2 = buildJar2();
+
+        JarIndex jarIndex1 = new JarIndex(new String[] { jar1.getAbsolutePath() });
+        JarIndex jarIndex2 = new JarIndex(new String[] { jar2.getAbsolutePath() });
+
+        jarIndex1.merge(jarIndex2, null);
+
+        assertFileResolved(jarIndex2, "com/test1/resource1.file",
+                           jar1.getAbsolutePath());
+        assertFileResolved(jarIndex2, "com/test2/resource2.file",
+                           jar2.getAbsolutePath());
+    }
+
+    static void assertFileResolved(JarIndex jarIndex2, String file,
+                                   String jarName) {
+        @SuppressWarnings("unchecked")
+        LinkedList<String> jarLists = (LinkedList<String>)jarIndex2.get(file);
+        if (jarLists == null || jarLists.size() == 0 ||
+            !jarName.equals(jarLists.get(0))) {
+            throw new RuntimeException(
+                "Unexpected result: the merged index must resolve file: "
+                + file);
+        }
+    }
+
+    private static File buildJar1() throws FileNotFoundException, IOException {
+        JarBuilder jar1Builder = new JarBuilder(tmpFolder, "jar1-merge.jar");
+        jar1Builder.addResourceFile("com/test1/resource1.file", "resource1");
+        return jar1Builder.build();
+    }
+
+    private static File buildJar2() throws FileNotFoundException, IOException {
+        JarBuilder jar2Builder = new JarBuilder(tmpFolder, "jar2-merge.jar");
+        jar2Builder.addResourceFile("com/test2/resource2.file", "resource2");
+        return jar2Builder.build();
+    }
+
+    /*
+     * Helper class for building jar files
+     */
+    public static class JarBuilder {
+        private JarOutputStream os;
+        private File jarFile;
+
+        public JarBuilder(File tmpFolder, String jarName)
+            throws FileNotFoundException, IOException
+        {
+            this.jarFile = new File(tmpFolder, jarName);
+            this.os = new JarOutputStream(new FileOutputStream(jarFile));
+        }
+
+        public void addResourceFile(String pathFromRoot, String content)
+            throws IOException
+        {
+            JarEntry entry = new JarEntry(pathFromRoot);
+            os.putNextEntry(entry);
+            os.write(content.getBytes("ASCII"));
+            os.closeEntry();
+        }
+
+        public File build() throws IOException {
+            os.close();
+            return jarFile;
+        }
+    }
+}
+
--- a/jdk/test/sun/security/krb5/auto/TcpTimeout.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/test/sun/security/krb5/auto/TcpTimeout.java	Wed Jul 05 18:14:56 2017 +0200
@@ -48,49 +48,60 @@
         k.addPrincipalRandKey("krbtgt/" + OneKDC.REALM);
 
         // Start two listener that does not communicate, simulate timeout
-        int p1 = new ServerSocket(0).getLocalPort();
-        int p2 = new ServerSocket(0).getLocalPort();
+        ServerSocket ss1 = null;
+        ServerSocket ss2 = null;
 
-        FileWriter fw = new FileWriter("alternative-krb5.conf");
+        try {
+            ss1 = new ServerSocket(0);
+            ss2 = new ServerSocket(0);
+            int p1 = ss1.getLocalPort();
+            int p2 = ss2.getLocalPort();
+
+            FileWriter fw = new FileWriter("alternative-krb5.conf");
 
-        fw.write("[libdefaults]\n" +
-                "udp_preference_limit = 1\n" +
-                "max_retries = 2\n" +
-                "default_realm = " + OneKDC.REALM + "\n" +
-                "kdc_timeout = 5000\n");
-        fw.write("[realms]\n" + OneKDC.REALM + " = {\n" +
-                "kdc = " + OneKDC.KDCHOST + ":" + p1 + "\n" +
-                "kdc = " + OneKDC.KDCHOST + ":" + p2 + "\n" +
-                "kdc = " + OneKDC.KDCHOST + ":" + p3 + "\n" +
-                "}\n");
+            fw.write("[libdefaults]\n" +
+                    "udp_preference_limit = 1\n" +
+                    "max_retries = 2\n" +
+                    "default_realm = " + OneKDC.REALM + "\n" +
+                    "kdc_timeout = 5000\n");
+            fw.write("[realms]\n" + OneKDC.REALM + " = {\n" +
+                    "kdc = " + OneKDC.KDCHOST + ":" + p1 + "\n" +
+                    "kdc = " + OneKDC.KDCHOST + ":" + p2 + "\n" +
+                    "kdc = " + OneKDC.KDCHOST + ":" + p3 + "\n" +
+                    "}\n");
 
-        fw.close();
-        System.setProperty("java.security.krb5.conf", "alternative-krb5.conf");
-        Config.refresh();
-
-        System.out.println("Ports opened on " + p1 + ", " + p2 + ", " + p3);
+            fw.close();
+            System.setProperty("java.security.krb5.conf",
+                    "alternative-krb5.conf");
+            Config.refresh();
 
-        // The correct behavior should be:
-        // 5 sec on p1, 5 sec on p1, fail
-        // 5 sec on p2, 5 sec on p2, fail
-        // p3 ok, p3 ok again for preauth.
-        int count = 6;
+            System.out.println("Ports opened on " + p1 + ", " + p2 + ", " + p3);
+
+            // The correct behavior should be:
+            // 5 sec on p1, 5 sec on p1, fail
+            // 5 sec on p2, 5 sec on p2, fail
+            // p3 ok, p3 ok again for preauth.
+            int count = 6;
+
+            ByteArrayOutputStream bo = new ByteArrayOutputStream();
+            PrintStream oldout = System.out;
+            System.setOut(new PrintStream(bo));
+            Context c = Context.fromUserPass(OneKDC.USER, OneKDC.PASS, false);
+            System.setOut(oldout);
 
-        ByteArrayOutputStream bo = new ByteArrayOutputStream();
-        PrintStream oldout = System.out;
-        System.setOut(new PrintStream(bo));
-        Context c = Context.fromUserPass(OneKDC.USER, OneKDC.PASS, false);
-        System.setOut(oldout);
-
-        String[] lines = new String(bo.toByteArray()).split("\n");
-        for (String line: lines) {
-            if (line.startsWith(">>> KDCCommunication")) {
-                System.out.println(line);
-                count--;
+            String[] lines = new String(bo.toByteArray()).split("\n");
+            for (String line: lines) {
+                if (line.startsWith(">>> KDCCommunication")) {
+                    System.out.println(line);
+                    count--;
+                }
             }
-        }
-        if (count != 0) {
-            throw new Exception("Retry count is " + count + " less");
+            if (count != 0) {
+                throw new Exception("Retry count is " + count + " less");
+            }
+        } finally {
+            if (ss1 != null) ss1.close();
+            if (ss2 != null) ss2.close();
         }
     }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/x509/X509CRLImpl/OrderAndDup.java	Wed Jul 05 18:14:56 2017 +0200
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) 2012, 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 7143872
+ * @summary Improve certificate extension processing
+ */
+import java.io.ByteArrayInputStream;
+import java.math.BigInteger;
+import java.security.KeyPairGenerator;
+import java.security.cert.CertificateFactory;
+import java.security.cert.X509CRLEntry;
+import java.util.Date;
+import sun.security.util.DerInputStream;
+import sun.security.util.DerValue;
+import sun.security.x509.*;
+
+public class OrderAndDup {
+    public static void main(String[] args) throws Exception {
+
+        // Generate 20 serial numbers with dup and a special order
+        int count = 20;
+        BigInteger[] serials = new BigInteger[count];
+        for (int i=0; i<count; i++) {
+            serials[i] = BigInteger.valueOf(i*7%10);
+        }
+
+        // Generates a CRL
+        X509CRLEntry[] badCerts = new X509CRLEntry[count];
+        for (int i=0; i<count; i++) {
+            badCerts[i] = new X509CRLEntryImpl(serials[i],
+                    new Date(System.currentTimeMillis()+i*1000));
+        }
+        X500Name owner = new X500Name("CN=CA");
+        X509CRLImpl crl = new X509CRLImpl(owner, new Date(), new Date(), badCerts);
+        KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
+        crl.sign(kpg.genKeyPair().getPrivate(), "SHA1withRSA");
+        byte[] data = crl.getEncodedInternal();
+
+        // Check the encoding
+        checkData(crl, data, serials);
+
+        // Load a CRL from raw data
+        CertificateFactory cf = CertificateFactory.getInstance("X.509");
+        X509CRLImpl crl2 = (X509CRLImpl)cf.generateCRL(new ByteArrayInputStream(data));
+
+        // Check the encoding again
+        data = crl2.getEncodedInternal();
+        checkData(crl2, data, serials);
+    }
+
+    // Check the raw data's ASN.1 structure to see if the revoked certs
+    // have the same number and correct order as inserted
+    static void checkData(X509CRLImpl c, byte[] data, BigInteger[] expected)
+            throws Exception {
+        if (c.getRevokedCertificates().size() != expected.length) {
+            throw new Exception("Wrong count in CRL object, now " +
+                    c.getRevokedCertificates().size());
+        }
+        DerValue d1 = new DerValue(data);
+        // revokedCertificates at 5th place of TBSCertList
+        DerValue[] d2 = new DerInputStream(
+                d1.data.getSequence(0)[4].toByteArray())
+                .getSequence(0);
+        if (d2.length != expected.length) {
+            throw new Exception("Wrong count in raw data, now " + d2.length);
+        }
+        for (int i=0; i<d2.length; i++) {
+            // Serial is first in revokedCertificates entry
+            BigInteger bi = d2[i].data.getBigInteger();
+            if (!bi.equals(expected[i])) {
+                throw new Exception("Entry at #" + i + " is " + bi
+                        + ", should be " + expected[i]);
+            }
+        }
+    }
+}
+
--- a/jdk/test/sun/tools/jinfo/Basic.sh	Wed Jul 05 18:13:50 2017 +0200
+++ b/jdk/test/sun/tools/jinfo/Basic.sh	Wed Jul 05 18:14:56 2017 +0200
@@ -43,7 +43,8 @@
 
 failed=0
 
-runSA=true
+# Skip SA options for now, see 7175133
+runSA=false
 
 if [ $isMacos = true ]; then
     runSA=false
--- a/langtools/.hgtags	Wed Jul 05 18:13:50 2017 +0200
+++ b/langtools/.hgtags	Wed Jul 05 18:14:56 2017 +0200
@@ -165,3 +165,4 @@
 179fa85aeefab338cccf1cbe8b494c59bc5df122 jdk8-b41
 02c5a3575539e737a1855b31287654e843edd6da jdk8-b42
 f8c64d835b2806293b8e924b44f0e32b20657ed3 jdk8-b43
+59cbead12ff46dbb397120bd26635bcd7d41ff21 jdk8-b44
--- a/langtools/src/share/classes/com/sun/tools/javac/api/JavacTrees.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/langtools/src/share/classes/com/sun/tools/javac/api/JavacTrees.java	Wed Jul 05 18:14:56 2017 +0200
@@ -60,7 +60,7 @@
 import com.sun.tools.javac.comp.MemberEnter;
 import com.sun.tools.javac.comp.Resolve;
 import com.sun.tools.javac.model.JavacElements;
-import com.sun.tools.javac.parser.EndPosTable;
+import com.sun.tools.javac.tree.EndPosTable;
 import com.sun.tools.javac.processing.JavacProcessingEnvironment;
 import com.sun.tools.javac.tree.JCTree;
 import com.sun.tools.javac.tree.JCTree.*;
@@ -240,10 +240,11 @@
 
     public String getDocComment(TreePath path) {
         CompilationUnitTree t = path.getCompilationUnit();
-        if (t instanceof JCTree.JCCompilationUnit) {
+        Tree leaf = path.getLeaf();
+        if (t instanceof JCTree.JCCompilationUnit && leaf instanceof JCTree) {
             JCCompilationUnit cu = (JCCompilationUnit) t;
             if (cu.docComments != null) {
-                return cu.docComments.get(path.getLeaf());
+                return cu.docComments.getCommentText((JCTree) leaf);
             }
         }
         return null;
--- a/langtools/src/share/classes/com/sun/tools/javac/comp/Enter.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Enter.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, 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
@@ -312,7 +312,7 @@
                                 tree.packge);
                     if (addEnv || (tree0.packageAnnotations.isEmpty() &&
                                    tree.docComments != null &&
-                                   tree.docComments.get(tree) != null)) {
+                                   tree.docComments.hasComment(tree))) {
                         typeEnvs.put(tree.packge, topEnv);
                     }
                 }
--- a/langtools/src/share/classes/com/sun/tools/javac/comp/Lower.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Lower.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, 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
@@ -40,7 +40,7 @@
 import com.sun.tools.javac.code.Type.*;
 
 import com.sun.tools.javac.jvm.Target;
-import com.sun.tools.javac.parser.EndPosTable;
+import com.sun.tools.javac.tree.EndPosTable;
 
 import static com.sun.tools.javac.code.Flags.*;
 import static com.sun.tools.javac.code.Flags.BLOCK;
--- a/langtools/src/share/classes/com/sun/tools/javac/file/ZipFileIndex.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/langtools/src/share/classes/com/sun/tools/javac/file/ZipFileIndex.java	Wed Jul 05 18:14:56 2017 +0200
@@ -36,6 +36,7 @@
 import java.util.Arrays;
 import java.util.Calendar;
 import java.util.Collections;
+import java.util.LinkedHashMap;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -284,7 +285,7 @@
         try {
             checkIndex();
             if (allDirs == Collections.EMPTY_SET) {
-                allDirs = new HashSet<RelativeDirectory>(directories.keySet());
+                allDirs = new java.util.LinkedHashSet<RelativeDirectory>(directories.keySet());
             }
 
             return allDirs;
@@ -572,7 +573,7 @@
 
             // Add each of the files
             if (entryCount > 0) {
-                directories = new HashMap<RelativeDirectory, DirectoryEntry>();
+                directories = new LinkedHashMap<RelativeDirectory, DirectoryEntry>();
                 ArrayList<Entry> entryList = new ArrayList<Entry>();
                 int pos = 2;
                 for (int i = 0; i < entryCount; i++) {
@@ -867,7 +868,7 @@
                 if (zipFile.lastModified() != fileStamp) {
                     ret = false;
                 } else {
-                    directories = new HashMap<RelativeDirectory, DirectoryEntry>();
+                    directories = new LinkedHashMap<RelativeDirectory, DirectoryEntry>();
                     int numDirs = raf.readInt();
                     for (int nDirs = 0; nDirs < numDirs; nDirs++) {
                         int dirNameBytesLen = raf.readInt();
--- a/langtools/src/share/classes/com/sun/tools/javac/jvm/CRTable.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/langtools/src/share/classes/com/sun/tools/javac/jvm/CRTable.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2012, 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,7 +31,7 @@
 import com.sun.tools.javac.util.*;
 import com.sun.tools.javac.util.List;
 import com.sun.tools.javac.tree.JCTree.*;
-import com.sun.tools.javac.parser.EndPosTable;
+import com.sun.tools.javac.tree.EndPosTable;
 
 /** This class contains the CharacterRangeTable for some method
  *  and the hashtable for mapping trees or lists of trees to their
--- a/langtools/src/share/classes/com/sun/tools/javac/jvm/Gen.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/langtools/src/share/classes/com/sun/tools/javac/jvm/Gen.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, 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 com.sun.tools.javac.code.Type.*;
 import com.sun.tools.javac.jvm.Code.*;
 import com.sun.tools.javac.jvm.Items.*;
-import com.sun.tools.javac.parser.EndPosTable;
+import com.sun.tools.javac.tree.EndPosTable;
 import com.sun.tools.javac.tree.JCTree.*;
 
 import static com.sun.tools.javac.code.Flags.*;
--- a/langtools/src/share/classes/com/sun/tools/javac/model/JavacElements.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/langtools/src/share/classes/com/sun/tools/javac/model/JavacElements.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2012, 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
@@ -28,11 +28,14 @@
 import java.lang.annotation.Annotation;
 import java.lang.annotation.Inherited;
 import java.util.Map;
+
 import javax.lang.model.SourceVersion;
 import javax.lang.model.element.*;
 import javax.lang.model.type.DeclaredType;
 import javax.lang.model.util.Elements;
 import javax.tools.JavaFileObject;
+import static javax.lang.model.util.ElementFilter.methodsIn;
+
 import com.sun.tools.javac.code.*;
 import com.sun.tools.javac.code.Symbol.*;
 import com.sun.tools.javac.code.TypeTags;
@@ -47,9 +50,7 @@
 import com.sun.tools.javac.tree.TreeScanner;
 import com.sun.tools.javac.util.*;
 import com.sun.tools.javac.util.Name;
-
 import static com.sun.tools.javac.tree.JCTree.Tag.*;
-import static javax.lang.model.util.ElementFilter.methodsIn;
 
 /**
  * Utility methods for operating on program elements.
@@ -361,7 +362,7 @@
         JCCompilationUnit toplevel = treeTop.snd;
         if (toplevel.docComments == null)
             return null;
-        return toplevel.docComments.get(tree);
+        return toplevel.docComments.getCommentText(tree);
     }
 
     public PackageElement getPackageOf(Element e) {
--- a/langtools/src/share/classes/com/sun/tools/javac/parser/EndPosTable.java	Wed Jul 05 18:13:50 2017 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2011, 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.javac.parser;
-
-import com.sun.tools.javac.tree.JCTree;
-
-/**
- * Specifies the methods to access a mappings of syntax trees to end positions.
- * <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></p>
- */
-public interface EndPosTable {
-
-    /**
-     * This method will return the end position of a given tree, otherwise a
-     * Positions.NOPOS will be returned.
-     * @param tree JCTree
-     * @return position of the source tree or Positions.NOPOS for non-existent mapping
-     */
-    public int getEndPos(JCTree tree);
-
-    /**
-     * Give an old tree and a new tree, the old tree will be replaced with
-     * the new tree, the position of the new tree will be that of the old
-     * tree.
-     * not exist.
-     * @param oldtree a JCTree to be replaced
-     * @param newtree a JCTree to be replaced with
-     * @return position of the old tree or Positions.NOPOS for non-existent mapping
-     */
-    public int replaceTree(JCTree oldtree, JCTree newtree);
-}
--- a/langtools/src/share/classes/com/sun/tools/javac/parser/JavaTokenizer.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/langtools/src/share/classes/com/sun/tools/javac/parser/JavaTokenizer.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, 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
@@ -571,7 +571,7 @@
                             reader.scanCommentChar();
                         } while (reader.ch != CR && reader.ch != LF && reader.bp < reader.buflen);
                         if (reader.bp < reader.buflen) {
-                            comments = addDocReader(comments, processComment(pos, reader.bp, CommentStyle.LINE));
+                            comments = addComment(comments, processComment(pos, reader.bp, CommentStyle.LINE));
                         }
                         break;
                     } else if (reader.ch == '*') {
@@ -597,7 +597,7 @@
                         }
                         if (reader.ch == '/') {
                             reader.scanChar();
-                            comments = addDocReader(comments, processComment(pos, reader.bp, style));
+                            comments = addComment(comments, processComment(pos, reader.bp, style));
                             break;
                         } else {
                             lexError(pos, "unclosed.comment");
@@ -693,10 +693,10 @@
         }
     }
     //where
-        List<Comment> addDocReader(List<Comment> docReaders, Comment docReader) {
-            return docReaders == null ?
-                    List.of(docReader) :
-                    docReaders.prepend(docReader);
+        List<Comment> addComment(List<Comment> comments, Comment comment) {
+            return comments == null ?
+                    List.of(comment) :
+                    comments.prepend(comment);
         }
 
     /** Return the position where a lexical error occurred;
@@ -780,6 +780,10 @@
             return null;
         }
 
+        public int getSourcePos(int pos) {
+            return -1;
+        }
+
         public CommentStyle getStyle() {
             return cs;
         }
--- a/langtools/src/share/classes/com/sun/tools/javac/parser/JavacParser.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/langtools/src/share/classes/com/sun/tools/javac/parser/JavacParser.java	Wed Jul 05 18:14:56 2017 +0200
@@ -117,7 +117,7 @@
         this.allowMethodReferences = source.allowMethodReferences() &&
                 fac.options.isSet("allowMethodReferences");
         this.keepDocComments = keepDocComments;
-        docComments = keepDocComments ? new HashMap<JCTree,String>() : null;
+        docComments = newDocCommentTable(keepDocComments);
         this.keepLineMap = keepLineMap;
         this.errorTree = F.Erroneous();
         endPosTable = newEndPosTable(keepEndPositions);
@@ -128,6 +128,11 @@
                 ? new SimpleEndPosTable()
                 : new EmptyEndPosTable();
     }
+
+    protected DocCommentTable newDocCommentTable(boolean keepDocComments) {
+        return keepDocComments ? new SimpleDocCommentTable() : null;
+    }
+
     /** Switch: Should generics be recognized?
      */
     boolean allowGenerics;
@@ -417,21 +422,21 @@
 
 /* ---------- doc comments --------- */
 
-    /** A hashtable to store all documentation comments
+    /** A table to store all documentation comments
      *  indexed by the tree nodes they refer to.
      *  defined only if option flag keepDocComment is set.
      */
-    private final Map<JCTree, String> docComments;
+    private final DocCommentTable docComments;
 
     /** Make an entry into docComments hashtable,
      *  provided flag keepDocComments is set and given doc comment is non-null.
      *  @param tree   The tree to be used as index in the hashtable
      *  @param dc     The doc comment to associate with the tree, or null.
      */
-    void attach(JCTree tree, String dc) {
+    void attach(JCTree tree, Comment dc) {
         if (keepDocComments && dc != null) {
 //          System.out.println("doc comment = ");System.out.println(dc);//DEBUG
-            docComments.put(tree, dc);
+            docComments.putComment(tree, dc);
         }
     }
 
@@ -1858,7 +1863,7 @@
             return List.of(parseStatement());
         case MONKEYS_AT:
         case FINAL: {
-            String dc = token.comment(CommentStyle.JAVADOC);
+            Comment dc = token.comment(CommentStyle.JAVADOC);
             JCModifiers mods = modifiersOpt();
             if (token.kind == INTERFACE ||
                 token.kind == CLASS ||
@@ -1875,13 +1880,13 @@
             }
         }
         case ABSTRACT: case STRICTFP: {
-            String dc = token.comment(CommentStyle.JAVADOC);
+            Comment dc = token.comment(CommentStyle.JAVADOC);
             JCModifiers mods = modifiersOpt();
             return List.of(classOrInterfaceOrEnumDeclaration(mods, dc));
         }
         case INTERFACE:
         case CLASS:
-            String dc = token.comment(CommentStyle.JAVADOC);
+            Comment dc = token.comment(CommentStyle.JAVADOC);
             return List.of(classOrInterfaceOrEnumDeclaration(modifiersOpt(), dc));
         case ENUM:
         case ASSERT:
@@ -2418,7 +2423,7 @@
                                                                      JCExpression type,
                                                                      Name name,
                                                                      boolean reqInit,
-                                                                     String dc,
+                                                                     Comment dc,
                                                                      T vdefs)
     {
         vdefs.append(variableDeclaratorRest(pos, mods, type, name, reqInit, dc));
@@ -2434,7 +2439,7 @@
     /** VariableDeclarator = Ident VariableDeclaratorRest
      *  ConstantDeclarator = Ident ConstantDeclaratorRest
      */
-    JCVariableDecl variableDeclarator(JCModifiers mods, JCExpression type, boolean reqInit, String dc) {
+    JCVariableDecl variableDeclarator(JCModifiers mods, JCExpression type, boolean reqInit, Comment dc) {
         return variableDeclaratorRest(token.pos, mods, type, ident(), reqInit, dc);
     }
 
@@ -2445,7 +2450,7 @@
      *  @param dc       The documentation comment for the variable declarations, or null.
      */
     JCVariableDecl variableDeclaratorRest(int pos, JCModifiers mods, JCExpression type, Name name,
-                                  boolean reqInit, String dc) {
+                                  boolean reqInit, Comment dc) {
         type = bracketsOpt(type);
         JCExpression init = null;
         if (token.kind == EQ) {
@@ -2539,7 +2544,7 @@
                 seenImport = true;
                 defs.append(importDeclaration());
             } else {
-                String docComment = token.comment(CommentStyle.JAVADOC);
+                Comment docComment = token.comment(CommentStyle.JAVADOC);
                 if (firstTypeDecl && !seenImport && !seenPackage) {
                     docComment = firstToken.comment(CommentStyle.JAVADOC);
                     consumedToplevelDoc = true;
@@ -2597,7 +2602,7 @@
     /** TypeDeclaration = ClassOrInterfaceOrEnumDeclaration
      *                  | ";"
      */
-    JCTree typeDeclaration(JCModifiers mods, String docComment) {
+    JCTree typeDeclaration(JCModifiers mods, Comment docComment) {
         int pos = token.pos;
         if (mods == null && token.kind == SEMI) {
             nextToken();
@@ -2612,7 +2617,7 @@
      *  @param mods     Any modifiers starting the class or interface declaration
      *  @param dc       The documentation comment for the class, or null.
      */
-    JCStatement classOrInterfaceOrEnumDeclaration(JCModifiers mods, String dc) {
+    JCStatement classOrInterfaceOrEnumDeclaration(JCModifiers mods, Comment dc) {
         if (token.kind == CLASS) {
             return classDeclaration(mods, dc);
         } else if (token.kind == INTERFACE) {
@@ -2656,7 +2661,7 @@
      *  @param mods    The modifiers starting the class declaration
      *  @param dc       The documentation comment for the class, or null.
      */
-    protected JCClassDecl classDeclaration(JCModifiers mods, String dc) {
+    protected JCClassDecl classDeclaration(JCModifiers mods, Comment dc) {
         int pos = token.pos;
         accept(CLASS);
         Name name = ident();
@@ -2685,7 +2690,7 @@
      *  @param mods    The modifiers starting the interface declaration
      *  @param dc       The documentation comment for the interface, or null.
      */
-    protected JCClassDecl interfaceDeclaration(JCModifiers mods, String dc) {
+    protected JCClassDecl interfaceDeclaration(JCModifiers mods, Comment dc) {
         int pos = token.pos;
         accept(INTERFACE);
         Name name = ident();
@@ -2708,7 +2713,7 @@
      *  @param mods    The modifiers starting the enum declaration
      *  @param dc       The documentation comment for the enum, or null.
      */
-    protected JCClassDecl enumDeclaration(JCModifiers mods, String dc) {
+    protected JCClassDecl enumDeclaration(JCModifiers mods, Comment dc) {
         int pos = token.pos;
         accept(ENUM);
         Name name = ident();
@@ -2767,7 +2772,7 @@
     /** EnumeratorDeclaration = AnnotationsOpt [TypeArguments] IDENTIFIER [ Arguments ] [ "{" ClassBody "}" ]
      */
     JCTree enumeratorDeclaration(Name enumName) {
-        String dc = token.comment(CommentStyle.JAVADOC);
+        Comment dc = token.comment(CommentStyle.JAVADOC);
         int flags = Flags.PUBLIC|Flags.STATIC|Flags.FINAL|Flags.ENUM;
         if (token.deprecatedFlag()) {
             flags |= Flags.DEPRECATED;
@@ -2856,7 +2861,7 @@
             nextToken();
             return List.<JCTree>nil();
         } else {
-            String dc = token.comment(CommentStyle.JAVADOC);
+            Comment dc = token.comment(CommentStyle.JAVADOC);
             int pos = token.pos;
             JCModifiers mods = modifiersOpt();
             if (token.kind == CLASS ||
@@ -2936,7 +2941,7 @@
                               Name name,
                               List<JCTypeParameter> typarams,
                               boolean isInterface, boolean isVoid,
-                              String dc) {
+                              Comment dc) {
         List<JCVariableDecl> params = formalParameters();
         if (!isVoid) type = bracketsOpt(type);
         List<JCExpression> thrown = List.nil();
--- a/langtools/src/share/classes/com/sun/tools/javac/parser/JavadocTokenizer.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/langtools/src/share/classes/com/sun/tools/javac/parser/JavadocTokenizer.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2012, 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
@@ -62,19 +62,54 @@
     @Override
     protected Comment processComment(int pos, int endPos, CommentStyle style) {
         char[] buf = reader.getRawCharacters(pos, endPos);
-        return new JavadocComment(new ColReader(fac, buf, buf.length), style);
+        return new JavadocComment(new DocReader(fac, buf, buf.length, pos), style);
     }
 
     /**
      * This is a specialized version of UnicodeReader that keeps track of the
-     * column position within a given character stream (used for Javadoc processing).
+     * column position within a given character stream (used for Javadoc processing),
+     * and which builds a table for mapping positions in the comment string to
+     * positions in the source file.
      */
-    static class ColReader extends UnicodeReader {
+    static class DocReader extends UnicodeReader {
 
          int col;
+         int startPos;
 
-         ColReader(ScannerFactory fac, char[] input, int inputLength) {
+         /**
+          * A buffer for building a table for mapping positions in {@link #sbuf}
+          * to positions in the source buffer.
+          *
+          * The array is organized as a series of pairs of integers: the first
+          * number in each pair specifies a position in the comment text,
+          * the second number in each pair specifies the corresponding position
+          * in the source buffer. The pairs are sorted in ascending order.
+          *
+          * Since the mapping function is generally continuous, with successive
+          * positions in the string corresponding to successive positions in the
+          * source buffer, the table only needs to record discontinuities in
+          * the mapping. The values of intermediate positions can be inferred.
+          *
+          * Discontinuities may occur in a number of places: when a newline
+          * is followed by whitespace and asterisks (which are ignored),
+          * when a tab is expanded into spaces, and when unicode escapes
+          * are used in the source buffer.
+          *
+          * Thus, to find the source position of any position, p, in the comment
+          * string, find the index, i, of the pair whose string offset
+          * ({@code pbuf[i] }) is closest to but not greater than p. Then,
+          * {@code sourcePos(p) = pbuf[i+1] + (p - pbuf[i]) }.
+          */
+         int[] pbuf = new int[128];
+
+         /**
+          * The index of the next empty slot in the pbuf buffer.
+          */
+         int pp = 0;
+
+         DocReader(ScannerFactory fac, char[] input, int inputLength, int startPos) {
              super(fac, input, inputLength);
+             this.startPos = startPos;
          }
 
          @Override
@@ -147,19 +182,43 @@
                  break;
              }
          }
+
+         @Override
+         public void putChar(char ch, boolean scan) {
+             // At this point, bp is the position of the current character in buf,
+             // and sp is the position in sbuf where this character will be put.
+             // Record a new entry in pbuf if pbuf is empty or if sp and its
+             // corresponding source position are not equidistant from the
+             // corresponding values in the latest entry in the pbuf array.
+             // (i.e. there is a discontinuity in the map function.)
+             if ((pp == 0)
+                     || (sp - pbuf[pp - 2] != (startPos + bp) - pbuf[pp - 1])) {
+                 if (pp + 1 >= pbuf.length) {
+                     int[] new_pbuf = new int[pbuf.length * 2];
+                     System.arraycopy(pbuf, 0, new_pbuf, 0, pbuf.length);
+                     pbuf = new_pbuf;
+                 }
+                 pbuf[pp] = sp;
+                 pbuf[pp + 1] = startPos + bp;
+                 pp += 2;
+             }
+             super.putChar(ch, scan);
+         }
      }
 
-     protected class JavadocComment extends JavaTokenizer.BasicComment<ColReader> {
+     protected class JavadocComment extends JavaTokenizer.BasicComment<DocReader> {
 
         /**
         * Translated and stripped contents of doc comment
         */
         private String docComment = null;
+        private int[] docPosns = null;
 
-        JavadocComment(ColReader comment_reader, CommentStyle cs) {
-            super(comment_reader, cs);
+        JavadocComment(DocReader reader, CommentStyle cs) {
+            super(reader, cs);
         }
 
+        @Override
         public String getText() {
             if (!scanned && cs == CommentStyle.JAVADOC) {
                 scanDocComment();
@@ -168,6 +227,33 @@
         }
 
         @Override
+        public int getSourcePos(int pos) {
+            // Binary search to find the entry for which the string index is
+            // less than pos. Since docPosns is a list of pairs of integers
+            // we must make sure the index is always even.
+            // If we find an exact match for pos, the other item in the pair
+            // gives the source pos; otherwise, compute the source position
+            // relative to the best match found in the array.
+            if (pos < 0 || pos >= docComment.length())
+                throw new StringIndexOutOfBoundsException();
+            if (docPosns == null)
+                return -1;
+            int start = 0;
+            int end = docPosns.length;
+            while (start < end - 2) {
+                // find an even index midway between start and end
+                int index = ((start  + end) / 4) * 2;
+                if (docPosns[index] < pos)
+                    start = index;
+                else if (docPosns[index] == pos)
+                    return docPosns[index + 1];
+                else
+                    end = index;
+            }
+            return docPosns[start + 1] + (pos - docPosns[start]);
+        }
+
+        @Override
         @SuppressWarnings("fallthrough")
         protected void scanDocComment() {
              try {
@@ -209,7 +295,8 @@
                  // whitespace, then it consumes any stars, then it
                  // puts the rest of the line into our buffer.
                  while (comment_reader.bp < comment_reader.buflen) {
-
+                     int begin_bp = comment_reader.bp;
+                     char begin_ch = comment_reader.ch;
                      // The wsLoop consumes whitespace from the beginning
                      // of each line.
                  wsLoop:
@@ -263,10 +350,10 @@
                              break outerLoop;
                          }
                      } else if (! firstLine) {
-                         //The current line does not begin with a '*' so we will indent it.
-                         for (int i = 1; i < comment_reader.col; i++) {
-                             comment_reader.putChar(' ', false);
-                         }
+                         // The current line does not begin with a '*' so we will
+                         // treat it as comment
+                         comment_reader.bp = begin_bp;
+                         comment_reader.ch = begin_ch;
                      }
                      // The textLoop processes the rest of the characters
                      // on the line, adding them to our buffer.
@@ -334,11 +421,14 @@
 
                      // Store the text of the doc comment
                     docComment = comment_reader.chars();
+                    docPosns = new int[comment_reader.pp];
+                    System.arraycopy(comment_reader.pbuf, 0, docPosns, 0, docPosns.length);
                 } else {
                     docComment = "";
                 }
             } finally {
                 scanned = true;
+                comment_reader = null;
                 if (docComment != null &&
                         docComment.matches("(?sm).*^\\s*@deprecated( |$).*")) {
                     deprecatedFlag = true;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javac/parser/SimpleDocCommentTable.java	Wed Jul 05 18:14:56 2017 +0200
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 1999, 2012, 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.javac.parser;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import com.sun.tools.javac.parser.Tokens.Comment;
+import com.sun.tools.javac.tree.DocCommentTable;
+import com.sun.tools.javac.tree.JCTree;
+
+
+/**
+ *
+ *  <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 SimpleDocCommentTable implements DocCommentTable {
+    Map<JCTree, Comment> table;
+
+    SimpleDocCommentTable() {
+        table = new HashMap<JCTree, Comment>();
+    }
+
+    public boolean hasComment(JCTree tree) {
+        return table.containsKey(tree);
+    }
+
+    public Comment getComment(JCTree tree) {
+        return table.get(tree);
+    }
+
+    public String getCommentText(JCTree tree) {
+        Comment c = getComment(tree);
+        return (c == null) ? null : c.getText();
+    }
+
+    public void putComment(JCTree tree, Comment c) {
+        table.put(tree, c);
+    }
+
+}
--- a/langtools/src/share/classes/com/sun/tools/javac/parser/Tokens.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/langtools/src/share/classes/com/sun/tools/javac/parser/Tokens.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, 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
@@ -294,6 +294,7 @@
         }
 
         String getText();
+        int getSourcePos(int index);
         CommentStyle getStyle();
         boolean isDeprecated();
     }
@@ -371,11 +372,11 @@
          * Preserve classic semantics - if multiple javadocs are found on the token
          * the last one is returned
          */
-        public String comment(Comment.CommentStyle style) {
-            List<Comment> readers = getReaders(Comment.CommentStyle.JAVADOC);
-            return readers.isEmpty() ?
+        public Comment comment(Comment.CommentStyle style) {
+            List<Comment> comments = getComments(Comment.CommentStyle.JAVADOC);
+            return comments.isEmpty() ?
                     null :
-                    readers.head.getText();
+                    comments.head;
         }
 
         /**
@@ -383,22 +384,22 @@
          * javadoc comment attached to this token contains the '@deprecated' string
          */
         public boolean deprecatedFlag() {
-            for (Comment r : getReaders(Comment.CommentStyle.JAVADOC)) {
-                if (r.isDeprecated()) {
+            for (Comment c : getComments(Comment.CommentStyle.JAVADOC)) {
+                if (c.isDeprecated()) {
                     return true;
                 }
             }
             return false;
         }
 
-        private List<Comment> getReaders(Comment.CommentStyle style) {
+        private List<Comment> getComments(Comment.CommentStyle style) {
             if (comments == null) {
                 return List.nil();
             } else {
                 ListBuffer<Comment> buf = ListBuffer.lb();
-                for (Comment r : comments) {
-                    if (r.getStyle() == style) {
-                        buf.add(r);
+                for (Comment c : comments) {
+                    if (c.getStyle() == style) {
+                        buf.add(c);
                     }
                 }
                 return buf.toList();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javac/tree/DocCommentTable.java	Wed Jul 05 18:14:56 2017 +0200
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2012, 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.javac.tree;
+
+import com.sun.tools.javac.parser.Tokens.Comment;
+
+/**
+ * A table giving the doc comment, if any, for any tree node.
+ *
+ *  <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 interface DocCommentTable {
+    /**
+     * Check if a tree node has a corresponding doc comment.
+     */
+    public boolean hasComment(JCTree tree);
+
+    /**
+     * Get the Comment token containing the doc comment, if any, for a tree node.
+     */
+    public Comment getComment(JCTree tree);
+
+    /**
+     * Get the plain text of the doc comment, if any, for a tree node.
+     */
+    public String getCommentText(JCTree tree);
+
+    /**
+     * Set the Comment to be associated with a tree node.
+     */
+    public void putComment(JCTree tree, Comment c);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javac/tree/EndPosTable.java	Wed Jul 05 18:14:56 2017 +0200
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2011, 2012, 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.javac.tree;
+
+/**
+ * Specifies the methods to access a mappings of syntax trees to end positions.
+ * <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></p>
+ */
+public interface EndPosTable {
+
+    /**
+     * This method will return the end position of a given tree, otherwise a
+     * Positions.NOPOS will be returned.
+     * @param tree JCTree
+     * @return position of the source tree or Positions.NOPOS for non-existent mapping
+     */
+    public int getEndPos(JCTree tree);
+
+    /**
+     * Give an old tree and a new tree, the old tree will be replaced with
+     * the new tree, the position of the new tree will be that of the old
+     * tree.
+     * not exist.
+     * @param oldtree a JCTree to be replaced
+     * @param newtree a JCTree to be replaced with
+     * @return position of the old tree or Positions.NOPOS for non-existent mapping
+     */
+    public int replaceTree(JCTree oldtree, JCTree newtree);
+}
--- a/langtools/src/share/classes/com/sun/tools/javac/tree/JCTree.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/langtools/src/share/classes/com/sun/tools/javac/tree/JCTree.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, 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,25 +25,23 @@
 
 package com.sun.tools.javac.tree;
 
+import java.io.IOException;
+import java.io.StringWriter;
 import java.util.*;
 
-import java.io.IOException;
-import java.io.StringWriter;
 import javax.lang.model.element.Modifier;
 import javax.lang.model.type.TypeKind;
 import javax.tools.JavaFileObject;
 
-import com.sun.tools.javac.util.*;
-import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
-import com.sun.tools.javac.util.List;
+import com.sun.source.tree.*;
+import com.sun.source.tree.LambdaExpressionTree.BodyKind;
+import com.sun.source.tree.MemberReferenceTree.ReferenceMode;
 import com.sun.tools.javac.code.*;
 import com.sun.tools.javac.code.Scope.*;
 import com.sun.tools.javac.code.Symbol.*;
-import com.sun.tools.javac.parser.EndPosTable;
-import com.sun.source.tree.*;
-import com.sun.source.tree.LambdaExpressionTree.BodyKind;
-import com.sun.source.tree.MemberReferenceTree.ReferenceMode;
-
+import com.sun.tools.javac.util.*;
+import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
+import com.sun.tools.javac.util.List;
 import static com.sun.tools.javac.code.BoundKind.*;
 import static com.sun.tools.javac.tree.JCTree.Tag.*;
 
@@ -491,7 +489,7 @@
         public ImportScope namedImportScope;
         public StarImportScope starImportScope;
         public Position.LineMap lineMap = null;
-        public Map<JCTree, String> docComments = null;
+        public DocCommentTable docComments = null;
         public EndPosTable endPositions = null;
         protected JCCompilationUnit(List<JCAnnotation> packageAnnotations,
                         JCExpression pid,
--- a/langtools/src/share/classes/com/sun/tools/javac/tree/Pretty.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/langtools/src/share/classes/com/sun/tools/javac/tree/Pretty.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, 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
@@ -29,14 +29,12 @@
 import java.util.*;
 
 import com.sun.source.tree.MemberReferenceTree.ReferenceMode;
-
+import com.sun.tools.javac.code.*;
+import com.sun.tools.javac.code.Symbol.*;
+import com.sun.tools.javac.parser.Tokens.Comment;
+import com.sun.tools.javac.tree.JCTree.*;
 import com.sun.tools.javac.util.*;
 import com.sun.tools.javac.util.List;
-import com.sun.tools.javac.code.*;
-
-import com.sun.tools.javac.code.Symbol.*;
-import com.sun.tools.javac.tree.JCTree.*;
-
 import static com.sun.tools.javac.code.Flags.*;
 import static com.sun.tools.javac.code.Flags.ANNOTATION;
 import static com.sun.tools.javac.tree.JCTree.Tag.*;
@@ -78,10 +76,10 @@
      */
     Name enclClassName;
 
-    /** A hashtable mapping trees to their documentation comments
+    /** A table mapping trees to their documentation comments
      *  (can be null)
      */
-    Map<JCTree, String> docComments = null;
+    DocCommentTable docComments = null;
 
     /** Align code to be indented to left margin.
      */
@@ -233,7 +231,7 @@
      */
     public void printDocComment(JCTree tree) throws IOException {
         if (docComments != null) {
-            String dc = docComments.get(tree);
+            String dc = docComments.getCommentText(tree);
             if (dc != null) {
                 print("/**"); println();
                 int pos = 0;
@@ -480,7 +478,7 @@
 
     public void visitVarDef(JCVariableDecl tree) {
         try {
-            if (docComments != null && docComments.get(tree) != null) {
+            if (docComments != null && docComments.hasComment(tree)) {
                 println(); align();
             }
             printDocComment(tree);
--- a/langtools/src/share/classes/com/sun/tools/javac/tree/TreeInfo.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/langtools/src/share/classes/com/sun/tools/javac/tree/TreeInfo.java	Wed Jul 05 18:14:56 2017 +0200
@@ -25,15 +25,14 @@
 
 package com.sun.tools.javac.tree;
 
+
 import com.sun.source.tree.Tree;
+import com.sun.tools.javac.code.*;
 import com.sun.tools.javac.comp.AttrContext;
 import com.sun.tools.javac.comp.Env;
+import com.sun.tools.javac.tree.JCTree.*;
 import com.sun.tools.javac.util.*;
 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
-import com.sun.tools.javac.code.*;
-import com.sun.tools.javac.parser.EndPosTable;
-import com.sun.tools.javac.tree.JCTree.*;
-
 import static com.sun.tools.javac.code.Flags.*;
 import static com.sun.tools.javac.tree.JCTree.Tag.*;
 import static com.sun.tools.javac.tree.JCTree.Tag.BLOCK;
@@ -282,6 +281,13 @@
         return (lit.typetag == TypeTags.BOT);
     }
 
+    public static String getCommentText(Env<?> env, JCTree tree) {
+        DocCommentTable docComments = (tree.hasTag(JCTree.Tag.TOPLEVEL))
+                ? ((JCCompilationUnit) tree).docComments
+                : env.toplevel.docComments;
+        return (docComments == null) ? null : docComments.getCommentText(tree);
+    }
+
     /** The position of the first statement in a block, or the position of
      *  the block itself if it is empty.
      */
--- a/langtools/src/share/classes/com/sun/tools/javac/util/DiagnosticSource.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/langtools/src/share/classes/com/sun/tools/javac/util/DiagnosticSource.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, 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
@@ -32,7 +32,7 @@
 import javax.tools.JavaFileObject;
 
 import com.sun.tools.javac.file.JavacFileManager;
-import com.sun.tools.javac.parser.EndPosTable;
+import com.sun.tools.javac.tree.EndPosTable;
 import com.sun.tools.javac.tree.JCTree;
 
 import static com.sun.tools.javac.util.LayoutCharacters.*;
--- a/langtools/src/share/classes/com/sun/tools/javac/util/JCDiagnostic.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/langtools/src/share/classes/com/sun/tools/javac/util/JCDiagnostic.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, 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
@@ -35,7 +35,7 @@
 
 import com.sun.tools.javac.api.DiagnosticFormatter;
 import com.sun.tools.javac.code.Lint.LintCategory;
-import com.sun.tools.javac.parser.EndPosTable;
+import com.sun.tools.javac.tree.EndPosTable;
 import com.sun.tools.javac.tree.JCTree;
 
 import static com.sun.tools.javac.util.JCDiagnostic.DiagnosticType.*;
--- a/langtools/src/share/classes/com/sun/tools/javac/util/Log.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/langtools/src/share/classes/com/sun/tools/javac/util/Log.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, 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 com.sun.tools.javac.api.DiagnosticFormatter;
 import com.sun.tools.javac.main.Main;
 import com.sun.tools.javac.main.Option;
-import com.sun.tools.javac.parser.EndPosTable;
+import com.sun.tools.javac.tree.EndPosTable;
 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticType;
 
--- a/langtools/src/share/classes/com/sun/tools/javadoc/JavadocEnter.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/langtools/src/share/classes/com/sun/tools/javadoc/JavadocEnter.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2012, 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,14 +25,17 @@
 
 package com.sun.tools.javadoc;
 
-import com.sun.tools.javac.util.Context;
-import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
-import com.sun.tools.javac.util.List;
+
+import javax.tools.JavaFileObject;
+
 import com.sun.tools.javac.code.Kinds;
 import com.sun.tools.javac.code.Symbol.*;
 import com.sun.tools.javac.comp.Enter;
 import com.sun.tools.javac.tree.JCTree.*;
-import javax.tools.JavaFileObject;
+import com.sun.tools.javac.tree.TreeInfo;
+import com.sun.tools.javac.util.Context;
+import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
+import com.sun.tools.javac.util.List;
 
 /**
  *  Javadoc's own enter phase does a few things above and beyond that
@@ -77,7 +80,7 @@
     public void visitTopLevel(JCCompilationUnit tree) {
         super.visitTopLevel(tree);
         if (tree.sourcefile.isNameCompatible("package-info", JavaFileObject.Kind.SOURCE)) {
-            String comment = tree.docComments.get(tree);
+            String comment = TreeInfo.getCommentText(env, tree);
             docenv.makePackageDoc(tree.packge, comment, tree);
         }
     }
@@ -87,7 +90,7 @@
         super.visitClassDef(tree);
         if (tree.sym == null) return;
         if (tree.sym.kind == Kinds.TYP || tree.sym.kind == Kinds.ERR) {
-            String comment = env.toplevel.docComments.get(tree);
+            String comment = TreeInfo.getCommentText(env, tree);
             ClassSymbol c = tree.sym;
             docenv.makeClassDoc(c, comment, tree, env.toplevel.lineMap);
         }
--- a/langtools/src/share/classes/com/sun/tools/javadoc/JavadocMemberEnter.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/langtools/src/share/classes/com/sun/tools/javadoc/JavadocMemberEnter.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, 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,13 +25,14 @@
 
 package com.sun.tools.javadoc;
 
-import com.sun.tools.javac.util.Context;
-import com.sun.tools.javac.util.Position;
 import com.sun.tools.javac.code.Flags;
 import com.sun.tools.javac.code.Kinds;
 import com.sun.tools.javac.code.Symbol.*;
 import com.sun.tools.javac.comp.MemberEnter;
 import com.sun.tools.javac.tree.JCTree.*;
+import com.sun.tools.javac.tree.TreeInfo;
+import com.sun.tools.javac.util.Context;
+import com.sun.tools.javac.util.Position;
 
 /**
  *  Javadoc's own memberEnter phase does a few things above and beyond that
@@ -61,11 +62,12 @@
         docenv = DocEnv.instance(context);
     }
 
+    @Override
     public void visitMethodDef(JCMethodDecl tree) {
         super.visitMethodDef(tree);
         MethodSymbol meth = tree.sym;
         if (meth == null || meth.kind != Kinds.MTH) return;
-        String docComment = env.toplevel.docComments.get(tree);
+        String docComment = TreeInfo.getCommentText(env, tree);
         Position.LineMap lineMap = env.toplevel.lineMap;
         if (meth.isConstructor())
             docenv.makeConstructorDoc(meth, docComment, tree, lineMap);
@@ -75,12 +77,13 @@
             docenv.makeMethodDoc(meth, docComment, tree, lineMap);
     }
 
+    @Override
     public void visitVarDef(JCVariableDecl tree) {
         super.visitVarDef(tree);
         if (tree.sym != null &&
                 tree.sym.kind == Kinds.VAR &&
                 !isParameter(tree.sym)) {
-            String docComment = env.toplevel.docComments.get(tree);
+            String docComment = TreeInfo.getCommentText(env, tree);
             Position.LineMap lineMap = env.toplevel.lineMap;
             docenv.makeFieldDoc(tree.sym, docComment, tree, lineMap);
         }
--- a/langtools/test/tools/javac/6304921/TestLog.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/langtools/test/tools/javac/6304921/TestLog.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2012, 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
@@ -33,9 +33,9 @@
 import javax.tools.JavaFileObject;
 import javax.tools.SimpleJavaFileObject;
 import com.sun.tools.javac.file.JavacFileManager;
-import com.sun.tools.javac.parser.EndPosTable;
 import com.sun.tools.javac.parser.Parser;
 import com.sun.tools.javac.parser.ParserFactory;
+import com.sun.tools.javac.tree.EndPosTable;
 import com.sun.tools.javac.tree.JCTree;
 import com.sun.tools.javac.tree.TreeScanner;
 import com.sun.tools.javac.util.Context;
--- a/langtools/test/tools/javac/failover/CheckAttributedTree.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/langtools/test/tools/javac/failover/CheckAttributedTree.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2012, 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
@@ -68,7 +68,7 @@
 import com.sun.tools.javac.api.JavacTool;
 import com.sun.tools.javac.code.Symbol;
 import com.sun.tools.javac.code.Type;
-import com.sun.tools.javac.parser.EndPosTable;
+import com.sun.tools.javac.tree.EndPosTable;
 import com.sun.tools.javac.tree.JCTree;
 import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
 import com.sun.tools.javac.tree.JCTree.JCImport;
--- a/langtools/test/tools/javac/parser/JavacParserTest.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/langtools/test/tools/javac/parser/JavacParserTest.java	Wed Jul 05 18:14:56 2017 +0200
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug 7073631 7159445
+ * @bug 7073631 7159445 7156633
  * @summary tests error and diagnostics positions
  * @author  Jan Lahoda
  */
@@ -49,11 +49,17 @@
 import com.sun.tools.javac.api.JavacTaskImpl;
 import com.sun.tools.javac.tree.JCTree;
 import java.io.IOException;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.lang.reflect.Method;
 import java.net.URI;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.regex.Pattern;
 import javax.tools.Diagnostic;
 import javax.tools.DiagnosticCollector;
 import javax.tools.DiagnosticListener;
@@ -63,13 +69,15 @@
 import javax.tools.ToolProvider;
 
 public class JavacParserTest extends TestCase {
-    final JavaCompiler tool;
-    public JavacParserTest(String testName) {
-        tool = ToolProvider.getSystemJavaCompiler();
-        System.out.println("java.home=" + System.getProperty("java.home"));
+    static final JavaCompiler tool = ToolProvider.getSystemJavaCompiler();
+
+    private JavacParserTest(){}
+
+    public static void main(String... args) throws Exception {
+        new JavacParserTest().run(args);
     }
 
-    static class MyFileObject extends SimpleJavaFileObject {
+    class MyFileObject extends SimpleJavaFileObject {
 
         private String text;
 
@@ -86,11 +94,11 @@
     /*
      * converts Windows to Unix style LFs for comparing strings
      */
-    private String normalize(String in) {
+    String normalize(String in) {
         return in.replace(System.getProperty("line.separator"), "\n");
     }
 
-    public CompilationUnitTree getCompilationUnitTree(String code) throws IOException {
+    CompilationUnitTree getCompilationUnitTree(String code) throws IOException {
 
         JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, null, null, null,
                 null, Arrays.asList(new MyFileObject(code)));
@@ -98,7 +106,7 @@
         return cut;
     }
 
-    public List<String> getErroneousTreeValues(ErroneousTree node) {
+    List<String> getErroneousTreeValues(ErroneousTree node) {
 
         List<String> values = new ArrayList<>();
         if (node.getErrorTrees() != null) {
@@ -112,7 +120,8 @@
         return values;
     }
 
-    public void testPositionForSuperConstructorCalls() throws IOException {
+    @Test
+    void testPositionForSuperConstructorCalls() throws IOException {
         assert tool != null;
 
         String code = "package test; public class Test {public Test() {super();}}";
@@ -149,12 +158,12 @@
                 methodStartPos, pos.getStartPosition(cut, mit.getMethodSelect()));
         assertEquals("testPositionForSuperConstructorCalls",
                 methodEndPos, pos.getEndPosition(cut, mit.getMethodSelect()));
-
     }
 
-    public void testPositionForEnumModifiers() throws IOException {
-
-        String code = "package test; public enum Test {A;}";
+    @Test
+    void testPositionForEnumModifiers() throws IOException {
+        final String theString = "public";
+        String code = "package test; " + theString + " enum Test {A;}";
 
         JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, null, null, null,
                 null, Arrays.asList(new MyFileObject(code)));
@@ -163,19 +172,21 @@
 
         ClassTree clazz = (ClassTree) cut.getTypeDecls().get(0);
         ModifiersTree mt = clazz.getModifiers();
-
+        int spos = code.indexOf(theString);
+        int epos = spos + theString.length();
         assertEquals("testPositionForEnumModifiers",
-                38 - 24, pos.getStartPosition(cut, mt));
+                spos, pos.getStartPosition(cut, mt));
         assertEquals("testPositionForEnumModifiers",
-                44 - 24, pos.getEndPosition(cut, mt));
+                epos, pos.getEndPosition(cut, mt));
     }
 
-    public void testNewClassWithEnclosing() throws IOException {
+    @Test
+    void testNewClassWithEnclosing() throws IOException {
 
-
+        final String theString = "Test.this.new d()";
         String code = "package test; class Test { " +
                 "class d {} private void method() { " +
-                "Object o = Test.this.new d(); } }";
+                "Object o = " + theString + "; } }";
 
         JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, null, null, null,
                 null, Arrays.asList(new MyFileObject(code)));
@@ -186,13 +197,16 @@
         ExpressionTree est =
                 ((VariableTree) ((MethodTree) clazz.getMembers().get(1)).getBody().getStatements().get(0)).getInitializer();
 
+        final int spos = code.indexOf(theString);
+        final int epos = spos + theString.length();
         assertEquals("testNewClassWithEnclosing",
-                97 - 24, pos.getStartPosition(cut, est));
+                spos, pos.getStartPosition(cut, est));
         assertEquals("testNewClassWithEnclosing",
-                114 - 24, pos.getEndPosition(cut, est));
+                epos, pos.getEndPosition(cut, est));
     }
 
-    public void testPreferredPositionForBinaryOp() throws IOException {
+    @Test
+    void testPreferredPositionForBinaryOp() throws IOException {
 
         String code = "package test; public class Test {"
                 + "private void test() {"
@@ -211,7 +225,581 @@
                 condStartPos, condJC.pos);
     }
 
-    public void testPositionBrokenSource126732a() throws IOException {
+    @Test
+    void testErrorRecoveryForEnhancedForLoop142381() throws IOException {
+
+        String code = "package test; class Test { " +
+                "private void method() { " +
+                "java.util.Set<String> s = null; for (a : s) {} } }";
+
+        final List<Diagnostic<? extends JavaFileObject>> errors =
+                new LinkedList<Diagnostic<? extends JavaFileObject>>();
+
+        JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, null,
+                new DiagnosticListener<JavaFileObject>() {
+            public void report(Diagnostic<? extends JavaFileObject> diagnostic) {
+                errors.add(diagnostic);
+            }
+        }, null, null, Arrays.asList(new MyFileObject(code)));
+
+        CompilationUnitTree cut = ct.parse().iterator().next();
+
+        ClassTree clazz = (ClassTree) cut.getTypeDecls().get(0);
+        StatementTree forStatement =
+                ((MethodTree) clazz.getMembers().get(0)).getBody().getStatements().get(1);
+
+        assertEquals("testErrorRecoveryForEnhancedForLoop142381",
+                Kind.ENHANCED_FOR_LOOP, forStatement.getKind());
+        assertFalse("testErrorRecoveryForEnhancedForLoop142381", errors.isEmpty());
+    }
+
+    @Test
+    void testPositionAnnotationNoPackage187551() throws IOException {
+
+        String code = "\n@interface Test {}";
+
+        JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, null, null, null,
+                null, Arrays.asList(new MyFileObject(code)));
+
+        CompilationUnitTree cut = ct.parse().iterator().next();
+        ClassTree clazz = (ClassTree) cut.getTypeDecls().get(0);
+        Trees t = Trees.instance(ct);
+
+        assertEquals("testPositionAnnotationNoPackage187551",
+                1, t.getSourcePositions().getStartPosition(cut, clazz));
+    }
+
+    @Test
+    void testPositionsSane1() throws IOException {
+        performPositionsSanityTest("package test; class Test { " +
+                "private void method() { " +
+                "java.util.List<? extends java.util.List<? extends String>> l; " +
+                "} }");
+    }
+
+    @Test
+    void testPositionsSane2() throws IOException {
+        performPositionsSanityTest("package test; class Test { " +
+                "private void method() { " +
+                "java.util.List<? super java.util.List<? super String>> l; " +
+                "} }");
+    }
+
+    @Test
+    void testPositionsSane3() throws IOException {
+        performPositionsSanityTest("package test; class Test { " +
+                "private void method() { " +
+                "java.util.List<? super java.util.List<?>> l; } }");
+    }
+
+    private void performPositionsSanityTest(String code) throws IOException {
+
+        final List<Diagnostic<? extends JavaFileObject>> errors =
+                new LinkedList<Diagnostic<? extends JavaFileObject>>();
+
+        JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, null,
+                new DiagnosticListener<JavaFileObject>() {
+
+            public void report(Diagnostic<? extends JavaFileObject> diagnostic) {
+                errors.add(diagnostic);
+            }
+        }, null, null, Arrays.asList(new MyFileObject(code)));
+
+        final CompilationUnitTree cut = ct.parse().iterator().next();
+        final Trees trees = Trees.instance(ct);
+
+        new TreeScanner<Void, Void>() {
+
+            private long parentStart = 0;
+            private long parentEnd = Integer.MAX_VALUE;
+
+            @Override
+            public Void scan(Tree node, Void p) {
+                if (node == null) {
+                    return null;
+                }
+
+                long start = trees.getSourcePositions().getStartPosition(cut, node);
+
+                if (start == (-1)) {
+                    return null; // synthetic tree
+                }
+                assertTrue(node.toString() + ":" + start + "/" + parentStart,
+                        parentStart <= start);
+
+                long prevParentStart = parentStart;
+
+                parentStart = start;
+
+                long end = trees.getSourcePositions().getEndPosition(cut, node);
+
+                assertTrue(node.toString() + ":" + end + "/" + parentEnd,
+                        end <= parentEnd);
+
+                long prevParentEnd = parentEnd;
+
+                parentEnd = end;
+
+                super.scan(node, p);
+
+                parentStart = prevParentStart;
+                parentEnd = prevParentEnd;
+
+                return null;
+            }
+
+            private void assertTrue(String message, boolean b) {
+                if (!b) fail(message);
+            }
+        }.scan(cut, null);
+    }
+
+    @Test
+    void testCorrectWilcardPositions1() throws IOException {
+        performWildcardPositionsTest("package test; import java.util.List; " +
+                "class Test { private void method() { List<? extends List<? extends String>> l; } }",
+
+                Arrays.asList("List<? extends List<? extends String>> l;",
+                "List<? extends List<? extends String>>",
+                "List",
+                "? extends List<? extends String>",
+                "List<? extends String>",
+                "List",
+                "? extends String",
+                "String"));
+    }
+
+    @Test
+    void testCorrectWilcardPositions2() throws IOException {
+        performWildcardPositionsTest("package test; import java.util.List; "
+                + "class Test { private void method() { List<? super List<? super String>> l; } }",
+                Arrays.asList("List<? super List<? super String>> l;",
+                "List<? super List<? super String>>",
+                "List",
+                "? super List<? super String>",
+                "List<? super String>",
+                "List",
+                "? super String",
+                "String"));
+    }
+
+    @Test
+    void testCorrectWilcardPositions3() throws IOException {
+        performWildcardPositionsTest("package test; import java.util.List; " +
+                "class Test { private void method() { List<? super List<?>> l; } }",
+
+                Arrays.asList("List<? super List<?>> l;",
+                "List<? super List<?>>",
+                "List",
+                "? super List<?>",
+                "List<?>",
+                "List",
+                "?"));
+    }
+
+    @Test
+    void testCorrectWilcardPositions4() throws IOException {
+        performWildcardPositionsTest("package test; import java.util.List; " +
+                "class Test { private void method() { " +
+                "List<? extends List<? extends List<? extends String>>> l; } }",
+
+                Arrays.asList("List<? extends List<? extends List<? extends String>>> l;",
+                "List<? extends List<? extends List<? extends String>>>",
+                "List",
+                "? extends List<? extends List<? extends String>>",
+                "List<? extends List<? extends String>>",
+                "List",
+                "? extends List<? extends String>",
+                "List<? extends String>",
+                "List",
+                "? extends String",
+                "String"));
+    }
+
+    @Test
+    void testCorrectWilcardPositions5() throws IOException {
+        performWildcardPositionsTest("package test; import java.util.List; " +
+                "class Test { private void method() { " +
+                "List<? extends List<? extends List<? extends String   >>> l; } }",
+                Arrays.asList("List<? extends List<? extends List<? extends String   >>> l;",
+                "List<? extends List<? extends List<? extends String   >>>",
+                "List",
+                "? extends List<? extends List<? extends String   >>",
+                "List<? extends List<? extends String   >>",
+                "List",
+                "? extends List<? extends String   >",
+                "List<? extends String   >",
+                "List",
+                "? extends String",
+                "String"));
+    }
+
+    void performWildcardPositionsTest(final String code,
+            List<String> golden) throws IOException {
+
+        final List<Diagnostic<? extends JavaFileObject>> errors =
+                new LinkedList<Diagnostic<? extends JavaFileObject>>();
+
+        JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, null,
+                new DiagnosticListener<JavaFileObject>() {
+                    public void report(Diagnostic<? extends JavaFileObject> diagnostic) {
+                        errors.add(diagnostic);
+                    }
+                }, null, null, Arrays.asList(new MyFileObject(code)));
+
+        final CompilationUnitTree cut = ct.parse().iterator().next();
+        final List<String> content = new LinkedList<String>();
+        final Trees trees = Trees.instance(ct);
+
+        new TreeScanner<Void, Void>() {
+            @Override
+            public Void scan(Tree node, Void p) {
+                if (node == null) {
+                    return null;
+                }
+                long start = trees.getSourcePositions().getStartPosition(cut, node);
+
+                if (start == (-1)) {
+                    return null; // synthetic tree
+                }
+                long end = trees.getSourcePositions().getEndPosition(cut, node);
+                String s = code.substring((int) start, (int) end);
+                content.add(s);
+
+                return super.scan(node, p);
+            }
+        }.scan(((MethodTree) ((ClassTree) cut.getTypeDecls().get(0)).getMembers().get(0)).getBody().getStatements().get(0), null);
+
+        assertEquals("performWildcardPositionsTest",golden.toString(),
+                content.toString());
+    }
+
+    @Test
+    void testStartPositionForMethodWithoutModifiers() throws IOException {
+
+        String code = "package t; class Test { <T> void t() {} }";
+
+        JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, null, null, null,
+                null, Arrays.asList(new MyFileObject(code)));
+        CompilationUnitTree cut = ct.parse().iterator().next();
+        ClassTree clazz = (ClassTree) cut.getTypeDecls().get(0);
+        MethodTree mt = (MethodTree) clazz.getMembers().get(0);
+        Trees t = Trees.instance(ct);
+        int start = (int) t.getSourcePositions().getStartPosition(cut, mt);
+        int end = (int) t.getSourcePositions().getEndPosition(cut, mt);
+
+        assertEquals("testStartPositionForMethodWithoutModifiers",
+                "<T> void t() {}", code.substring(start, end));
+    }
+
+    @Test
+    void testVariableInIfThen1() throws IOException {
+
+        String code = "package t; class Test { " +
+                "private static void t(String name) { " +
+                "if (name != null) String nn = name.trim(); } }";
+
+        DiagnosticCollector<JavaFileObject> coll =
+                new DiagnosticCollector<JavaFileObject>();
+
+        JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, null, coll, null,
+                null, Arrays.asList(new MyFileObject(code)));
+
+        ct.parse();
+
+        List<String> codes = new LinkedList<String>();
+
+        for (Diagnostic<? extends JavaFileObject> d : coll.getDiagnostics()) {
+            codes.add(d.getCode());
+        }
+
+        assertEquals("testVariableInIfThen1",
+                Arrays.<String>asList("compiler.err.variable.not.allowed"),
+                codes);
+    }
+
+    @Test
+   void testVariableInIfThen2() throws IOException {
+
+        String code = "package t; class Test { " +
+                "private static void t(String name) { " +
+                "if (name != null) class X {} } }";
+        DiagnosticCollector<JavaFileObject> coll =
+                new DiagnosticCollector<JavaFileObject>();
+        JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, null, coll, null,
+                null, Arrays.asList(new MyFileObject(code)));
+
+        ct.parse();
+
+        List<String> codes = new LinkedList<String>();
+
+        for (Diagnostic<? extends JavaFileObject> d : coll.getDiagnostics()) {
+            codes.add(d.getCode());
+        }
+
+        assertEquals("testVariableInIfThen2",
+                Arrays.<String>asList("compiler.err.class.not.allowed"), codes);
+    }
+
+    @Test
+    void testVariableInIfThen3() throws IOException {
+
+        String code = "package t; class Test { "+
+                "private static void t() { " +
+                "if (true) abstract class F {} }}";
+        DiagnosticCollector<JavaFileObject> coll =
+                new DiagnosticCollector<JavaFileObject>();
+        JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, null, coll, null,
+                null, Arrays.asList(new MyFileObject(code)));
+
+        ct.parse();
+
+        List<String> codes = new LinkedList<String>();
+
+        for (Diagnostic<? extends JavaFileObject> d : coll.getDiagnostics()) {
+            codes.add(d.getCode());
+        }
+
+        assertEquals("testVariableInIfThen3",
+                Arrays.<String>asList("compiler.err.class.not.allowed"), codes);
+    }
+
+    @Test
+    void testVariableInIfThen4() throws IOException {
+
+        String code = "package t; class Test { "+
+                "private static void t(String name) { " +
+                "if (name != null) interface X {} } }";
+        DiagnosticCollector<JavaFileObject> coll =
+                new DiagnosticCollector<JavaFileObject>();
+        JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, null, coll, null,
+                null, Arrays.asList(new MyFileObject(code)));
+
+        ct.parse();
+
+        List<String> codes = new LinkedList<String>();
+
+        for (Diagnostic<? extends JavaFileObject> d : coll.getDiagnostics()) {
+            codes.add(d.getCode());
+        }
+
+        assertEquals("testVariableInIfThen4",
+                Arrays.<String>asList("compiler.err.class.not.allowed"), codes);
+    }
+
+    @Test
+    void testVariableInIfThen5() throws IOException {
+
+        String code = "package t; class Test { "+
+                "private static void t() { " +
+                "if (true) } }";
+        DiagnosticCollector<JavaFileObject> coll =
+                new DiagnosticCollector<JavaFileObject>();
+        JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, null, coll, null,
+                null, Arrays.asList(new MyFileObject(code)));
+
+        ct.parse();
+
+        List<String> codes = new LinkedList<String>();
+
+        for (Diagnostic<? extends JavaFileObject> d : coll.getDiagnostics()) {
+            codes.add(d.getCode());
+        }
+
+        assertEquals("testVariableInIfThen5",
+                Arrays.<String>asList("compiler.err.illegal.start.of.stmt"),
+                codes);
+    }
+
+    // see javac bug #6882235, NB bug #98234:
+    @Test
+    void testMissingExponent() throws IOException {
+
+        String code = "\nclass Test { { System.err.println(0e); } }";
+
+        JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, null, null, null,
+                null, Arrays.asList(new MyFileObject(code)));
+
+        assertNotNull(ct.parse().iterator().next());
+    }
+
+    @Test
+    void testTryResourcePos() throws IOException {
+
+        final String code = "package t; class Test { " +
+                "{ try (java.io.InputStream in = null) { } } }";
+
+        CompilationUnitTree cut = getCompilationUnitTree(code);
+
+        new TreeScanner<Void, Void>() {
+            @Override
+            public Void visitVariable(VariableTree node, Void p) {
+                if ("in".contentEquals(node.getName())) {
+                    JCTree.JCVariableDecl var = (JCTree.JCVariableDecl) node;
+                    assertEquals("testTryResourcePos", "in = null) { } } }",
+                            code.substring(var.pos));
+                }
+                return super.visitVariable(node, p);
+            }
+        }.scan(cut, null);
+    }
+
+    @Test
+    void testVarPos() throws IOException {
+
+        final String code = "package t; class Test { " +
+                "{ java.io.InputStream in = null; } }";
+
+        CompilationUnitTree cut = getCompilationUnitTree(code);
+
+        new TreeScanner<Void, Void>() {
+
+            @Override
+            public Void visitVariable(VariableTree node, Void p) {
+                if ("in".contentEquals(node.getName())) {
+                    JCTree.JCVariableDecl var = (JCTree.JCVariableDecl) node;
+                    assertEquals("testVarPos","in = null; } }",
+                            code.substring(var.pos));
+                }
+                return super.visitVariable(node, p);
+            }
+        }.scan(cut, null);
+    }
+
+    // expected erroneous tree: int x = y;(ERROR);
+    @Test
+    void testOperatorMissingError() throws IOException {
+
+        String code = "package test; public class ErrorTest { "
+                + "void method() { int x = y  z } }";
+        CompilationUnitTree cut = getCompilationUnitTree(code);
+        final List<String> values = new ArrayList<>();
+        final List<String> expectedValues =
+                new ArrayList<>(Arrays.asList("[z]"));
+
+        new TreeScanner<Void, Void>() {
+            @Override
+            public Void visitErroneous(ErroneousTree node, Void p) {
+                values.add(getErroneousTreeValues(node).toString());
+                return null;
+
+            }
+        }.scan(cut, null);
+
+        assertEquals("testSwitchError: The Erroneous tree "
+                + "error values: " + values
+                + " do not match expected error values: "
+                + expectedValues, values, expectedValues);
+    }
+
+    // expected erroneous tree:  String s = (ERROR);
+    @Test
+    void testMissingParenthesisError() throws IOException {
+
+        String code = "package test; public class ErrorTest { "
+                + "void f() {String s = new String; } }";
+        CompilationUnitTree cut = getCompilationUnitTree(code);
+        final List<String> values = new ArrayList<>();
+        final List<String> expectedValues =
+                new ArrayList<>(Arrays.asList("[new String()]"));
+
+        new TreeScanner<Void, Void>() {
+            @Override
+            public Void visitErroneous(ErroneousTree node, Void p) {
+                values.add(getErroneousTreeValues(node).toString());
+                return null;
+            }
+        }.scan(cut, null);
+
+        assertEquals("testSwitchError: The Erroneous tree "
+                + "error values: " + values
+                + " do not match expected error values: "
+                + expectedValues, values, expectedValues);
+    }
+
+    // expected erroneous tree: package test; (ERROR)(ERROR)
+    @Test
+    void testMissingClassError() throws IOException {
+
+        String code = "package Test; clas ErrorTest {  "
+                + "void f() {String s = new String(); } }";
+        CompilationUnitTree cut = getCompilationUnitTree(code);
+        final List<String> values = new ArrayList<>();
+        final List<String> expectedValues =
+                new ArrayList<>(Arrays.asList("[, clas]", "[]"));
+
+        new TreeScanner<Void, Void>() {
+            @Override
+            public Void visitErroneous(ErroneousTree node, Void p) {
+                values.add(getErroneousTreeValues(node).toString());
+                return null;
+            }
+        }.scan(cut, null);
+
+        assertEquals("testSwitchError: The Erroneous tree "
+                + "error values: " + values
+                + " do not match expected error values: "
+                + expectedValues, values, expectedValues);
+    }
+
+    // expected erroneous tree: void m1(int i) {(ERROR);{(ERROR);}
+    @Test
+    void testSwitchError() throws IOException {
+
+        String code = "package test; public class ErrorTest { "
+                + "int numDays; void m1(int i) { switchh {i} { case 1: "
+                + "numDays = 31; break; } } }";
+        CompilationUnitTree cut = getCompilationUnitTree(code);
+        final List<String> values = new ArrayList<>();
+        final List<String> expectedValues =
+                new ArrayList<>(Arrays.asList("[switchh]", "[i]"));
+
+        new TreeScanner<Void, Void>() {
+            @Override
+            public Void visitErroneous(ErroneousTree node, Void p) {
+                values.add(getErroneousTreeValues(node).toString());
+                return null;
+            }
+        }.scan(cut, null);
+
+        assertEquals("testSwitchError: The Erroneous tree "
+                + "error values: " + values
+                + " do not match expected error values: "
+                + expectedValues, values, expectedValues);
+    }
+
+    // expected erroneous tree: class ErrorTest {(ERROR)
+    @Test
+    void testMethodError() throws IOException {
+
+        String code = "package Test; class ErrorTest {  "
+                + "static final void f) {String s = new String(); } }";
+        CompilationUnitTree cut = cut = getCompilationUnitTree(code);
+
+        final List<String> values = new ArrayList<>();
+        final List<String> expectedValues =
+                new ArrayList<>(Arrays.asList("[\nstatic final void f();]"));
+
+        new TreeScanner<Void, Void>() {
+            @Override
+            public Void visitErroneous(ErroneousTree node, Void p) {
+                values.add(normalize(getErroneousTreeValues(node).toString()));
+                return null;
+            }
+        }.scan(cut, null);
+
+        assertEquals("testMethodError: The Erroneous tree "
+                + "error value: " + values
+                + " does not match expected error values: "
+                + expectedValues, values, expectedValues);
+    }
+
+    /*
+     * The following tests do not work just yet with nb-javac nor javac,
+     * they need further investigation, see CR: 7167356
+     */
+
+    void testPositionBrokenSource126732a() throws IOException {
         String[] commands = new String[]{
             "return Runnable()",
             "do { } while (true)",
@@ -250,7 +838,7 @@
         }
     }
 
-    public void testPositionBrokenSource126732b() throws IOException {
+    void testPositionBrokenSource126732b() throws IOException {
         String[] commands = new String[]{
             "break",
             "break A",
@@ -291,246 +879,7 @@
         }
     }
 
-    public void testErrorRecoveryForEnhancedForLoop142381() throws IOException {
-
-        String code = "package test; class Test { " +
-                "private void method() { " +
-                "java.util.Set<String> s = null; for (a : s) {} } }";
-
-        final List<Diagnostic<? extends JavaFileObject>> errors =
-                new LinkedList<Diagnostic<? extends JavaFileObject>>();
-
-        JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, null,
-                new DiagnosticListener<JavaFileObject>() {
-            public void report(Diagnostic<? extends JavaFileObject> diagnostic) {
-                errors.add(diagnostic);
-            }
-        }, null, null, Arrays.asList(new MyFileObject(code)));
-
-        CompilationUnitTree cut = ct.parse().iterator().next();
-
-        ClassTree clazz = (ClassTree) cut.getTypeDecls().get(0);
-        StatementTree forStatement =
-                ((MethodTree) clazz.getMembers().get(0)).getBody().getStatements().get(1);
-
-        assertEquals("testErrorRecoveryForEnhancedForLoop142381",
-                Kind.ENHANCED_FOR_LOOP, forStatement.getKind());
-        assertFalse("testErrorRecoveryForEnhancedForLoop142381", errors.isEmpty());
-    }
-
-    public void testPositionAnnotationNoPackage187551() throws IOException {
-
-        String code = "\n@interface Test {}";
-
-        JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, null, null, null,
-                null, Arrays.asList(new MyFileObject(code)));
-
-        CompilationUnitTree cut = ct.parse().iterator().next();
-        ClassTree clazz = (ClassTree) cut.getTypeDecls().get(0);
-        Trees t = Trees.instance(ct);
-
-        assertEquals("testPositionAnnotationNoPackage187551",
-                1, t.getSourcePositions().getStartPosition(cut, clazz));
-    }
-
-    public void testPositionsSane() throws IOException {
-        performPositionsSanityTest("package test; class Test { " +
-                "private void method() { " +
-                "java.util.List<? extends java.util.List<? extends String>> l; " +
-                "} }");
-        performPositionsSanityTest("package test; class Test { " +
-                "private void method() { " +
-                "java.util.List<? super java.util.List<? super String>> l; " +
-                "} }");
-        performPositionsSanityTest("package test; class Test { " +
-                "private void method() { " +
-                "java.util.List<? super java.util.List<?>> l; } }");
-    }
-
-    private void performPositionsSanityTest(String code) throws IOException {
-
-        final List<Diagnostic<? extends JavaFileObject>> errors =
-                new LinkedList<Diagnostic<? extends JavaFileObject>>();
-
-        JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, null,
-                new DiagnosticListener<JavaFileObject>() {
-
-            public void report(Diagnostic<? extends JavaFileObject> diagnostic) {
-                errors.add(diagnostic);
-            }
-        }, null, null, Arrays.asList(new MyFileObject(code)));
-
-        final CompilationUnitTree cut = ct.parse().iterator().next();
-        final Trees trees = Trees.instance(ct);
-
-        new TreeScanner<Void, Void>() {
-
-            private long parentStart = 0;
-            private long parentEnd = Integer.MAX_VALUE;
-
-            @Override
-            public Void scan(Tree node, Void p) {
-                if (node == null) {
-                    return null;
-                }
-
-                long start = trees.getSourcePositions().getStartPosition(cut, node);
-
-                if (start == (-1)) {
-                    return null; //synthetic tree
-                }
-                assertTrue(node.toString() + ":" + start + "/" + parentStart,
-                        parentStart <= start);
-
-                long prevParentStart = parentStart;
-
-                parentStart = start;
-
-                long end = trees.getSourcePositions().getEndPosition(cut, node);
-
-                assertTrue(node.toString() + ":" + end + "/" + parentEnd,
-                        end <= parentEnd);
-
-                long prevParentEnd = parentEnd;
-
-                parentEnd = end;
-
-                super.scan(node, p);
-
-                parentStart = prevParentStart;
-                parentEnd = prevParentEnd;
-
-                return null;
-            }
-
-            private void assertTrue(String message, boolean b) {
-                if (!b) fail(message);
-            }
-        }.scan(cut, null);
-    }
-
-    public void testCorrectWilcardPositions() throws IOException {
-        performWildcardPositionsTest("package test; import java.util.List; " +
-                "class Test { private void method() { List<? extends List<? extends String>> l; } }",
-
-                Arrays.asList("List<? extends List<? extends String>> l;",
-                "List<? extends List<? extends String>>",
-                "List",
-                "? extends List<? extends String>",
-                "List<? extends String>",
-                "List",
-                "? extends String",
-                "String"));
-        performWildcardPositionsTest("package test; import java.util.List; " +
-                "class Test { private void method() { List<? super List<? super String>> l; } }",
-
-                Arrays.asList("List<? super List<? super String>> l;",
-                "List<? super List<? super String>>",
-                "List",
-                "? super List<? super String>",
-                "List<? super String>",
-                "List",
-                "? super String",
-                "String"));
-        performWildcardPositionsTest("package test; import java.util.List; " +
-                "class Test { private void method() { List<? super List<?>> l; } }",
-
-                Arrays.asList("List<? super List<?>> l;",
-                "List<? super List<?>>",
-                "List",
-                "? super List<?>",
-                "List<?>",
-                "List",
-                "?"));
-        performWildcardPositionsTest("package test; import java.util.List; " +
-                "class Test { private void method() { " +
-                "List<? extends List<? extends List<? extends String>>> l; } }",
-
-                Arrays.asList("List<? extends List<? extends List<? extends String>>> l;",
-                "List<? extends List<? extends List<? extends String>>>",
-                "List",
-                "? extends List<? extends List<? extends String>>",
-                "List<? extends List<? extends String>>",
-                "List",
-                "? extends List<? extends String>",
-                "List<? extends String>",
-                "List",
-                "? extends String",
-                "String"));
-        performWildcardPositionsTest("package test; import java.util.List; " +
-                "class Test { private void method() { " +
-                "List<? extends List<? extends List<? extends String   >>> l; } }",
-                Arrays.asList("List<? extends List<? extends List<? extends String   >>> l;",
-                "List<? extends List<? extends List<? extends String   >>>",
-                "List",
-                "? extends List<? extends List<? extends String   >>",
-                "List<? extends List<? extends String   >>",
-                "List",
-                "? extends List<? extends String   >",
-                "List<? extends String   >",
-                "List",
-                "? extends String",
-                "String"));
-    }
-
-    public void performWildcardPositionsTest(final String code,
-            List<String> golden) throws IOException {
-
-        final List<Diagnostic<? extends JavaFileObject>> errors =
-                new LinkedList<Diagnostic<? extends JavaFileObject>>();
-
-        JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, null,
-                new DiagnosticListener<JavaFileObject>() {
-                    public void report(Diagnostic<? extends JavaFileObject> diagnostic) {
-                        errors.add(diagnostic);
-                    }
-                }, null, null, Arrays.asList(new MyFileObject(code)));
-
-        final CompilationUnitTree cut = ct.parse().iterator().next();
-        final List<String> content = new LinkedList<String>();
-        final Trees trees = Trees.instance(ct);
-
-        new TreeScanner<Void, Void>() {
-            @Override
-            public Void scan(Tree node, Void p) {
-                if (node == null) {
-                    return null;
-                }
-                long start = trees.getSourcePositions().getStartPosition(cut, node);
-
-                if (start == (-1)) {
-                    return null; //synthetic tree
-                }
-                long end = trees.getSourcePositions().getEndPosition(cut, node);
-                String s = code.substring((int) start, (int) end);
-                content.add(s);
-
-                return super.scan(node, p);
-            }
-        }.scan(((MethodTree) ((ClassTree) cut.getTypeDecls().get(0)).getMembers().get(0)).getBody().getStatements().get(0), null);
-
-        assertEquals("performWildcardPositionsTest",golden.toString(),
-                content.toString());
-    }
-
-    public void testStartPositionForMethodWithoutModifiers() throws IOException {
-
-        String code = "package t; class Test { <T> void t() {} }";
-
-        JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, null, null, null,
-                null, Arrays.asList(new MyFileObject(code)));
-        CompilationUnitTree cut = ct.parse().iterator().next();
-        ClassTree clazz = (ClassTree) cut.getTypeDecls().get(0);
-        MethodTree mt = (MethodTree) clazz.getMembers().get(0);
-        Trees t = Trees.instance(ct);
-        int start = (int) t.getSourcePositions().getStartPosition(cut, mt);
-        int end = (int) t.getSourcePositions().getEndPosition(cut, mt);
-
-        assertEquals("testStartPositionForMethodWithoutModifiers",
-                "<T> void t() {}", code.substring(start, end));
-    }
-
-    public void testStartPositionEnumConstantInit() throws IOException {
+    void testStartPositionEnumConstantInit() throws IOException {
 
         String code = "package t; enum Test { AAA; }";
 
@@ -546,342 +895,34 @@
         assertEquals("testStartPositionEnumConstantInit", -1, start);
     }
 
-    public void testVariableInIfThen1() throws IOException {
-
-        String code = "package t; class Test { " +
-                "private static void t(String name) { " +
-                "if (name != null) String nn = name.trim(); } }";
-
-        DiagnosticCollector<JavaFileObject> coll =
-                new DiagnosticCollector<JavaFileObject>();
-
-        JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, null, coll, null,
-                null, Arrays.asList(new MyFileObject(code)));
-
-        ct.parse();
-
-        List<String> codes = new LinkedList<String>();
-
-        for (Diagnostic<? extends JavaFileObject> d : coll.getDiagnostics()) {
-            codes.add(d.getCode());
-        }
-
-        assertEquals("testVariableInIfThen1",
-                Arrays.<String>asList("compiler.err.variable.not.allowed"),
-                codes);
-    }
-
-    public void testVariableInIfThen2() throws IOException {
-
-        String code = "package t; class Test { " +
-                "private static void t(String name) { " +
-                "if (name != null) class X {} } }";
-        DiagnosticCollector<JavaFileObject> coll =
-                new DiagnosticCollector<JavaFileObject>();
-        JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, null, coll, null,
-                null, Arrays.asList(new MyFileObject(code)));
-
-        ct.parse();
-
-        List<String> codes = new LinkedList<String>();
-
-        for (Diagnostic<? extends JavaFileObject> d : coll.getDiagnostics()) {
-            codes.add(d.getCode());
-        }
-
-        assertEquals("testVariableInIfThen2",
-                Arrays.<String>asList("compiler.err.class.not.allowed"), codes);
-    }
-
-    public void testVariableInIfThen3() throws IOException {
-
-        String code = "package t; class Test { "+
-                "private static void t() { " +
-                "if (true) abstract class F {} }}";
-        DiagnosticCollector<JavaFileObject> coll =
-                new DiagnosticCollector<JavaFileObject>();
-        JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, null, coll, null,
-                null, Arrays.asList(new MyFileObject(code)));
-
-        ct.parse();
-
-        List<String> codes = new LinkedList<String>();
-
-        for (Diagnostic<? extends JavaFileObject> d : coll.getDiagnostics()) {
-            codes.add(d.getCode());
-        }
-
-        assertEquals("testVariableInIfThen3",
-                Arrays.<String>asList("compiler.err.class.not.allowed"), codes);
-    }
-
-    public void testVariableInIfThen4() throws IOException {
-
-        String code = "package t; class Test { "+
-                "private static void t(String name) { " +
-                "if (name != null) interface X {} } }";
-        DiagnosticCollector<JavaFileObject> coll =
-                new DiagnosticCollector<JavaFileObject>();
-        JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, null, coll, null,
-                null, Arrays.asList(new MyFileObject(code)));
-
-        ct.parse();
-
-        List<String> codes = new LinkedList<String>();
-
-        for (Diagnostic<? extends JavaFileObject> d : coll.getDiagnostics()) {
-            codes.add(d.getCode());
-        }
-
-        assertEquals("testVariableInIfThen4",
-                Arrays.<String>asList("compiler.err.class.not.allowed"), codes);
-    }
-
-    public void testVariableInIfThen5() throws IOException {
-
-        String code = "package t; class Test { "+
-                "private static void t() { " +
-                "if (true) } }";
-        DiagnosticCollector<JavaFileObject> coll =
-                new DiagnosticCollector<JavaFileObject>();
-        JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, null, coll, null,
-                null, Arrays.asList(new MyFileObject(code)));
-
-        ct.parse();
-
-        List<String> codes = new LinkedList<String>();
-
-        for (Diagnostic<? extends JavaFileObject> d : coll.getDiagnostics()) {
-            codes.add(d.getCode());
-        }
-
-        assertEquals("testVariableInIfThen5",
-                Arrays.<String>asList("compiler.err.illegal.start.of.stmt"),
-                codes);
-    }
-
-    //see javac bug #6882235, NB bug #98234:
-    public void testMissingExponent() throws IOException {
-
-        String code = "\nclass Test { { System.err.println(0e); } }";
-
-        JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, null, null, null,
-                null, Arrays.asList(new MyFileObject(code)));
-
-        assertNotNull(ct.parse().iterator().next());
-    }
-
-    public void testTryResourcePos() throws IOException {
-
-        final String code = "package t; class Test { " +
-                "{ try (java.io.InputStream in = null) { } } }";
-
-        CompilationUnitTree cut = getCompilationUnitTree(code);
-
-        new TreeScanner<Void, Void>() {
-            @Override
-            public Void visitVariable(VariableTree node, Void p) {
-                if ("in".contentEquals(node.getName())) {
-                    JCTree.JCVariableDecl var = (JCTree.JCVariableDecl) node;
-                    System.out.println(node.getName() + "," + var.pos);
-                    assertEquals("testTryResourcePos", "in = null) { } } }",
-                            code.substring(var.pos));
+    void run(String[] args) throws Exception {
+        int passed = 0, failed = 0;
+        final Pattern p = (args != null && args.length > 0)
+                ? Pattern.compile(args[0])
+                : null;
+        for (Method m : this.getClass().getDeclaredMethods()) {
+            boolean selected = (p == null)
+                    ? m.isAnnotationPresent(Test.class)
+                    : p.matcher(m.getName()).matches();
+            if (selected) {
+                try {
+                    m.invoke(this, (Object[]) null);
+                    System.out.println(m.getName() + ": OK");
+                    passed++;
+                } catch (Throwable ex) {
+                    System.out.printf("Test %s failed: %s %n", m, ex.getCause());
+                    failed++;
                 }
-                return super.visitVariable(node, p);
-            }
-        }.scan(cut, null);
-    }
-
-    public void testVarPos() throws IOException {
-
-        final String code = "package t; class Test { " +
-                "{ java.io.InputStream in = null; } }";
-
-        CompilationUnitTree cut = getCompilationUnitTree(code);
-
-        new TreeScanner<Void, Void>() {
-
-            @Override
-            public Void visitVariable(VariableTree node, Void p) {
-                if ("in".contentEquals(node.getName())) {
-                    JCTree.JCVariableDecl var = (JCTree.JCVariableDecl) node;
-                    assertEquals("testVarPos","in = null; } }",
-                            code.substring(var.pos));
-                }
-                return super.visitVariable(node, p);
             }
-        }.scan(cut, null);
-    }
-
-    // expected erroneous tree: int x = y;(ERROR);
-    public void testOperatorMissingError() throws IOException {
-
-        String code = "package test; public class ErrorTest { "
-                + "void method() { int x = y  z } }";
-        CompilationUnitTree cut = getCompilationUnitTree(code);
-        final List<String> values = new ArrayList<>();
-        final List<String> expectedValues =
-                new ArrayList<>(Arrays.asList("[z]"));
-
-        new TreeScanner<Void, Void>() {
-
-            @Override
-            public Void visitErroneous(ErroneousTree node, Void p) {
-
-                values.add(getErroneousTreeValues(node).toString());
-                return null;
-
-            }
-        }.scan(cut, null);
-
-        assertEquals("testSwitchError: The Erroneous tree "
-                + "error values: " + values
-                + " do not match expected error values: "
-                + expectedValues, values, expectedValues);
-    }
-
-    //expected erroneous tree:  String s = (ERROR);
-    public void testMissingParenthesisError() throws IOException {
-
-        String code = "package test; public class ErrorTest { "
-                + "void f() {String s = new String; } }";
-        CompilationUnitTree cut = getCompilationUnitTree(code);
-        final List<String> values = new ArrayList<>();
-        final List<String> expectedValues =
-                new ArrayList<>(Arrays.asList("[new String()]"));
-
-        new TreeScanner<Void, Void>() {
-
-            @Override
-            public Void visitErroneous(ErroneousTree node, Void p) {
-
-                values.add(getErroneousTreeValues(node).toString());
-                return null;
-            }
-        }.scan(cut, null);
-
-        assertEquals("testSwitchError: The Erroneous tree "
-                + "error values: " + values
-                + " do not match expected error values: "
-                + expectedValues, values, expectedValues);
-    }
-
-    //expected erroneous tree: package test; (ERROR)(ERROR)
-    public void testMissingClassError() throws IOException {
-
-        String code = "package Test; clas ErrorTest {  "
-                + "void f() {String s = new String(); } }";
-        CompilationUnitTree cut = getCompilationUnitTree(code);
-        final List<String> values = new ArrayList<>();
-        final List<String> expectedValues =
-                new ArrayList<>(Arrays.asList("[, clas]", "[]"));
-
-        new TreeScanner<Void, Void>() {
-
-            @Override
-            public Void visitErroneous(ErroneousTree node, Void p) {
-
-                values.add(getErroneousTreeValues(node).toString());
-                return null;
-            }
-        }.scan(cut, null);
-
-        assertEquals("testSwitchError: The Erroneous tree "
-                + "error values: " + values
-                + " do not match expected error values: "
-                + expectedValues, values, expectedValues);
-    }
-
-    //expected erroneous tree: void m1(int i) {(ERROR);{(ERROR);}
-    public void testSwitchError() throws IOException {
-
-        String code = "package test; public class ErrorTest { "
-                + "int numDays; void m1(int i) { switchh {i} { case 1: "
-                + "numDays = 31; break; } } }";
-        CompilationUnitTree cut = getCompilationUnitTree(code);
-        final List<String> values = new ArrayList<>();
-        final List<String> expectedValues =
-                new ArrayList<>(Arrays.asList("[switchh]", "[i]"));
-
-        new TreeScanner<Void, Void>() {
-
-            @Override
-            public Void visitErroneous(ErroneousTree node, Void p) {
-
-                values.add(getErroneousTreeValues(node).toString());
-                return null;
-            }
-        }.scan(cut, null);
-
-        assertEquals("testSwitchError: The Erroneous tree "
-                + "error values: " + values
-                + " do not match expected error values: "
-                + expectedValues, values, expectedValues);
-    }
-
-    //expected erroneous tree: class ErrorTest {(ERROR)
-    public void testMethodError() throws IOException {
-
-        String code = "package Test; class ErrorTest {  "
-                + "static final void f) {String s = new String(); } }";
-        CompilationUnitTree cut = getCompilationUnitTree(code);
-        final List<String> values = new ArrayList<>();
-        final List<String> expectedValues =
-                new ArrayList<>(Arrays.asList("[\nstatic final void f();]"));
-
-        new TreeScanner<Void, Void>() {
-
-            @Override
-            public Void visitErroneous(ErroneousTree node, Void p) {
-
-                values.add(normalize(getErroneousTreeValues(node).toString()));
-                return null;
-            }
-        }.scan(cut, null);
-
-        assertEquals("testMethodError: The Erroneous tree "
-                + "error value: " + values
-                + " does not match expected error values: "
-                + expectedValues, values, expectedValues);
-    }
-
-    void testsNotWorking() throws IOException {
-
-        // Fails with nb-javac, needs further investigation
-        testPositionBrokenSource126732a();
-        testPositionBrokenSource126732b();
-
-        // Fails, these tests yet to be addressed
-        testPositionForEnumModifiers();
-        testStartPositionEnumConstantInit();
-    }
-    void testPositions() throws IOException {
-        testPositionsSane();
-        testCorrectWilcardPositions();
-        testPositionAnnotationNoPackage187551();
-        testPositionForSuperConstructorCalls();
-        testPreferredPositionForBinaryOp();
-        testStartPositionForMethodWithoutModifiers();
-        testVarPos();
-        testVariableInIfThen1();
-        testVariableInIfThen2();
-        testVariableInIfThen3();
-        testVariableInIfThen4();
-        testVariableInIfThen5();
-        testMissingExponent();
-        testTryResourcePos();
-        testOperatorMissingError();
-        testMissingParenthesisError();
-        testMissingClassError();
-        testSwitchError();
-        testMethodError();
-        testErrorRecoveryForEnhancedForLoop142381();
-    }
-
-    public static void main(String... args) throws IOException {
-        JavacParserTest jpt = new JavacParserTest("JavacParserTest");
-        jpt.testPositions();
-        System.out.println("PASS");
+        }
+        System.out.printf("Passed: %d, Failed %d%n", passed, failed);
+        if (failed > 0) {
+            throw new RuntimeException("Tests failed: " + failed);
+        }
+        if (passed == 0 && failed == 0) {
+            throw new AssertionError("No test(s) selected: passed = " +
+                    passed + ", failed = " + failed + " ??????????");
+        }
     }
 }
 
@@ -906,8 +947,6 @@
     }
 
     void assertEquals(String message, Object o1, Object o2) {
-        System.out.println(o1);
-        System.out.println(o2);
         if (o1 != null && o2 != null && !o1.equals(o2)) {
             fail(message);
         }
@@ -929,4 +968,11 @@
     void fail(String message) {
         throw new RuntimeException(message);
     }
+
+    /**
+     * Indicates that the annotated method is a test method.
+     */
+    @Retention(RetentionPolicy.RUNTIME)
+    @Target(ElementType.METHOD)
+    public @interface Test {}
 }
--- a/langtools/test/tools/javac/tree/DocCommentToplevelTest.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/langtools/test/tools/javac/tree/DocCommentToplevelTest.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2012, 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
@@ -29,6 +29,7 @@
 
 import com.sun.source.tree.*;
 import com.sun.source.util.*;
+import com.sun.tools.javac.tree.DocCommentTable;
 import com.sun.tools.javac.tree.JCTree;
 
 import java.net.URI;
@@ -137,16 +138,16 @@
 
         new TreeScanner<ClassTree,Void>() {
 
-            Map<JCTree, String> docComments;
+            DocCommentTable docComments;
 
             @Override
             public ClassTree visitCompilationUnit(CompilationUnitTree node, Void unused) {
                 docComments = ((JCTree.JCCompilationUnit)node).docComments;
                 boolean expectedComment = tdk == ToplevelDocKind.HAS_DOC &&
                         (pk != PackageKind.NO_PKG || ik != ImportKind.ZERO);
-                boolean foundComment = docComments.get(node) != null;
+                boolean foundComment = docComments.hasComment((JCTree) node);
                 if (expectedComment != foundComment) {
-                    error("Unexpected comment " + docComments.get(node) + " on toplevel");
+                    error("Unexpected comment " + docComments.getComment((JCTree) node) + " on toplevel");
                 }
                 return super.visitCompilationUnit(node, null);
             }
@@ -156,9 +157,9 @@
                 boolean expectedComment = tdk == ToplevelDocKind.HAS_DOC &&
                         pk == PackageKind.NO_PKG && ik == ImportKind.ZERO &&
                         node.getSimpleName().toString().equals("First");
-                boolean foundComment = docComments.get(node) != null;
+                boolean foundComment = docComments.hasComment((JCTree) node);
                 if (expectedComment != foundComment) {
-                    error("Unexpected comment " + docComments.get(node) + " on class " + node.getSimpleName());
+                    error("Unexpected comment " + docComments.getComment((JCTree) node) + " on class " + node.getSimpleName());
                 }
                 return super.visitClass(node, unused);
             }
--- a/langtools/test/tools/javac/tree/TreePosTest.java	Wed Jul 05 18:13:50 2017 +0200
+++ b/langtools/test/tools/javac/tree/TreePosTest.java	Wed Jul 05 18:14:56 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2012, 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
@@ -73,7 +73,7 @@
 import com.sun.source.util.JavacTask;
 import com.sun.tools.javac.api.JavacTool;
 import com.sun.tools.javac.code.Flags;
-import com.sun.tools.javac.parser.EndPosTable;
+import com.sun.tools.javac.tree.EndPosTable;
 import com.sun.tools.javac.tree.JCTree;
 import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
 import com.sun.tools.javac.tree.JCTree.JCNewClass;
--- a/test/Makefile	Wed Jul 05 18:13:50 2017 +0200
+++ b/test/Makefile	Wed Jul 05 18:14:56 2017 +0200
@@ -74,7 +74,8 @@
 	jdk_rmi \
 	jdk_sound \
 	jdk_swing \
-	jdk_tools1 jdk_tools2
+	jdk_tools1 jdk_tools2 \
+	jdk_jfr
 
 # All jdk tests
 JDK_ALL_TEST_LIST = $(JDK_DEFAULT_TEST_LIST) $(JDK_NONDEFAULT_TEST_LIST)