changeset 2892:11416bb1b308 icedtea-2.7.0pre07

Bump to icedtea-2.7.0pre07. Upstream changes: - Bump to icedtea-2.7.0pre07 - PR2938: Fix build of 8148487 backport - PR3102: Extend 8022594 to AixPollPort - S4858370: JDWP: Memory Leak: GlobalRefs never deleted when processing invokeMethod command - S4963723: Implement SHA-224 - S6414899: P11Digest should support cloning - S6425769: Allow specifying an address to bind JMX remote connector - S6854417: TESTBUG: java/util/regex/RegExTest.java fails intermittently - S6953295: Move few sun.security.{util, x509, pkcs} classes used by keytool/jarsigner to another package - S6956398: make ephemeral DH key match the length of the certificate key - S6961123: setWMClass fails to null-terminate WM_CLASS string - S6966259: Make PrincipalName and Realm immutable - S7044060: Need to support NSA Suite B Cryptography algorithms - S7060849: Eliminate pack200 build warnings - S7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror - S7069870: Parts of the JDK erroneously rely on generic array initializers with diamond - S7081817: test/sun/security/provider/certpath/X509CertPath/IllegalCertiticates.java failing - S7102686: Restructure timestamp code so that jars and modules can more easily share the same code - S7105780: Add SSLSocket client/SSLEngine server to templates directory - S7127906: (launcher) convert the launcher regression tests to java - S7142339: PKCS7.java is needlessly creating SHA1PRNG SecureRandom instances when timestamping is not done - S7152582: PKCS11 tests should use the NSS libraries available in the OS - S7167988: PKIX CertPathBuilder in reverse mode doesn't work if more than one trust anchor is specified - S7192202: Make sure keytool prints both unknown and unparseable extensions - S7194449: String resources for Key Tool and Policy Tool should be in their respective packages - S7196855: autotest.sh fails on ubuntu because libsoftokn.so not found - S7200682: TEST_BUG: keytool/autotest.sh still has problems with libsoftokn.so - S8002116: This JdbReadTwiceTest.sh gets an exit 1 - S8002306: (se) Selector.open fails if invoked with thread interrupt status set [win] - S8004007: test/sun/tools/jinfo/Basic.sh fails on when runSA is set to true - S8005226: java/rmi/transport/pinClientSocketFactory/PinClientSocketFactory.java fails intermittently - S8006935: Need to take care of long secret keys in HMAC/PRF compuation - S8007890: [TESTBUG] JcmdWithNMTDisabled.java fails when invoked with NMT explicitly turned on - S8009636: JARSigner including TimeStamp PolicyID (TSAPolicyID) as defined in RFC3161 - S8014097: add doPrivileged methods with limited privilege scope - S8019341: Update CookieHttpsClientTest to use the newer framework. - S8021191: Add isAuthorized check to limited doPrivileged methods - S8022228: Intermittent test failures in sun/security/ssl/javax/net/ssl/NewAPIs - S8022439: Fix lint warnings in sun.security.ec - S8022594: Potential deadlock in <clinit> of sun.nio.ch.Util/IOUtil - S8023546: sun/security/mscapi/ShortRSAKey1024.sh fails intermittently - S8027705: com/sun/jdi/JdbMethodExitTest.sh fails when a background thread is generating events. - S8028537: PPC64: Updated the JDK regression tests to run on AIX - S8028780: JDK KRB5 module throws OutOfMemoryError when CCache is corrupt - S8036132: Tab characters in test/com/sun/jdi files - S8036612: [parfait] JNI exception pending in jdk/src/windows/native/sun/security/mscapi/security.cpp - S8037557: test SessionCacheSizeTests.java timeout - S8038837: Add support to jarsigner for specifying timestamp hash algorithm - S8038963: com/sun/jdi tests fail because cygwin's ps sometimes misses processes - S8039921: SHA1WithDSA with key > 1024 bits not working - S8044419: TEST_BUG: com/sun/jdi/JdbReadTwiceTest.sh fails when run under root - S8048030: Expectations should be consistent - S8059054: Better URL processing - S8059661: Test SoftReference and OOM behavior - S8064331: JavaSecurityAccess.doIntersectionPrivilege() drops the information about the domain combiner of the stack ACC - S8068761: [TEST_BUG] java/nio/channels/ServerSocketChannel/AdaptServerSocket.java failed with SocketTimeoutException - S8068842: Better JAXP data handling - S8072753: Nondeterministic wrong answer on arithmetic - S8072932: Test fails with java.security.AccessControlException: access denied ("java.security.SecurityPermission" "getDomainCombiner") - S8073735: [TEST_BUG] compiler/loopopts/CountedLoopProblem.java got OOME - S8074068: Cleanup in src/share/classes/sun/security/x509/ - S8074146: [TEST_BUG] jdb has succeded to read an unreadable file - S8075773: jps running as root fails after the fix of JDK-8050807 - S8076339: Better handling of remote object invocation - S8076383: Better CORBA exception handling - S8076387: Better CORBA value handling - S8076392: Improve IIOPInputStream consistency - S8076413: Better JRMP message handling - S8076506: Increment minor version of HSx for 7u91 and initialize the build number - S8078427: More supportive home environment - S8078440: Safer managed types - S8078822: 8068842 fix missed one new file PrimeNumberSequenceGenerator.java - S8079323: Serialization compatibility for Templates: need to exclude Hashtable from serialization - S8079410: Hotspot version to share the same update and build version from JDK - S8079718: IIOP Input Stream Hooking - S8080541: More direct property handling - S8080688: Service for DGC services - S8081297: SSL Problem with Tomcat - S8081475: SystemTap does not work when JDK is compiled with GCC 5 - S8081760: Better group dynamics - S8086092: More palette improvements - S8086733: Improve namespace handling - S8087118: Remove missing package from java.security files - S8087120: [GCC5] java.lang.StackOverflowError on Zero JVM initialization on non x86 platforms. - S8087350: Improve array conversions - S8098547: (tz) Support tzdata2015e - S8103671: More objective stream classes - S8103675: Better Binary searches - S8129952: Ensure thread consistency - S8130078: Document better processing - S8130193: Improve HTTP connections - S8130253: ObjectStreamClass.getFields too restrictive - S8130710: Better attributes processing - S8130735: javax.swing.TimerQueue: timer fires late when another timer starts - S8130864: Better server identity handling - S8130891: (bf) More direct buffering - S8131181: Increment minor version of HSx for 7u95 and initialize the build number - S8131291: Perfect parameter patterning - S8132042: Preserve layout presentation - S8132051: Better byte behavior - S8132082: Let OracleUcrypto accept RSAPrivateKey - S8132210: Reinforce JMX collector internals - S8132988: Better printing dialogues - S8133321: (tz) Support tzdata2015f - S8133962: More general limits - S8134297: NPE in GSSNameElement nameType check - S8134605: Partial rework of the fix for 8081297 - S8134650: Xsl transformation gives different results in 8u66 - S8134861: XSLT: Extension func call cause exception if namespace URI contains partial package name - S8135043: ObjectStreamClass.getField(String) too restrictive - S8135307: CompletionFailure thrown when calling FieldDoc.type, if the field's type is missing - S8137060: JMX memory management improvements - S8138593: Make DSA more fair - S8138716: (tz) Support tzdata2015g - S8139008: Better state table management - S8139012: Better font substitutions - S8139017: More stable image decoding - S8139436: sun.security.mscapi.KeyStore might load incomplete data - S8140244: Port fix of JDK-8075773 to MacOSX - S8140244, PR3171: Port fix of JDK-8075773 to AIX - S8140344: add support for 3 digit update release numbers - S8140543: Arrange font actions - S8141213: [Parfait]Potentially blocking function GetArrayLength called in JNI critical region at line 239 of jdk/src/share/native/sun/awt/image/jpeg/jpegdecoder.c in function GET_ARRAYS - S8141229: [Parfait] Null pointer dereference in cmsstrcasecmp of cmserr.c - S8141287: Add MD5 to jdk.certpath.disabledAlgorithms - Take 2 - S8142882: rebinding of the receiver of a DirectMethodHandle may allow a protected method to be accessed - S8142928: [TEST_BUG] sun/security/provider/certpath/ReverseBuilder/ReverseBuild.java 8u71 failure - S8143002: [Parfait] JNI exception pending in fontpath.c:1300 - S8143132: L10n resource file translation update - S8143167: Better buffering of XML strings - S8143185: Cleanup for handling proxies - S8143941: Update splashscreen displays - S8144313: Test SessionTimeOutTests can be timeout - S8144430: Improve JMX connections - S8144773: Further reduce use of MD5 - S8144955: Wrong changes were pushed with 8143942 - S8145017: Add support for 3 digit hotspot minor version numbers - S8145446: Perfect pipe placement - S8145551: Test failed with Crash for Improved font lookups - S8145982: JMXInterfaceBindingTest is failing intermittently - S8146015: JMXInterfaceBindingTest is failing intermittently for IPv6 addresses - S8146387: Test SSLSession/SessionCacheSizeTests socket accept timed out - S8146477: [TEST_BUG] ClientJSSEServerJSSE.java failing again - S8146494: Better ligature substitution - S8146498: Better device table adjustments - S8146669: Test SessionTimeOutTests fails intermittently - S8146967: [TEST_BUG] javax/security/auth/SubjectDomainCombiner/Optimize.java should use 4-args ProtectionDomain constructor - S8146993: Several javax/management/remote/mandatory regression tests fail after JDK-8138811 - S8147466: Add -fno-strict-overflow to IndicRearrangementProcessor{,2}.cpp - S8147567: InterpreterRuntime::post_field_access not updated for boolean in JDK-8132051 - S8147771: Construction of static protection domains under Javax custom policy - S8147857: [TEST] RMIConnector logs attribute names incorrectly - S8148446: (tz) Support tzdata2016a - S8148475: Missing SA Bytecode updates. - S8148487: PPC64: Better byte behavior - S8148872: Complete name checking - S8149170: Better byte behavior for native arguments - S8149367: PolicyQualifierInfo/index_Ctor JCk test fails with IOE: Invalid encoding for PolicyQualifierInfo - S8149962: Better delineation of XML processing - S8150012: Better byte behavior for reflection - S8150752: Share Class Data - S8150790: 8u75 L10n resource file translation update - S8151841: Build needs additional flags to compile with GCC 6 - S8151876: (tz) Support tzdata2016d - S8151925: Font reference improvements - S8152335: Improve MethodHandle consistency - S8152479: Coded byte streams - S8153673: [BACKOUT] JDWP: Memory Leak: GlobalRefs never deleted when processing invokeMethod command - S8154210: Zero: Better byte behaviour - S8154413: AArch64: Better byte behaviour - S8155981: Bolster bytecode verification - S8155985: Persistent Parameter Processing - S8157077: 8u101 L10n resource file updates - S8158571: Additional method handle validation - S8161262: Fix jdk build with gcc 4.1.2: -fno-strict-overflow not known. - S8162344: The API changes made by CR 7064075 need to be reverted ChangeLog: 2016-09-24 Andrew John Hughes <gnu.andrew@member.fsf.org> Bump to icedtea-2.7.0pre07. * Makefile.am, (JDK_UPDATE_VERSION): Set to 111. (BUILD_VERSION): Set to b01. (CORBA_CHANGESET): Update to icedtea-2.7.0pre07. (JAXP_CHANGESET): Likewise. (JAXWS_CHANGESET): Likewise. (JDK_CHANGESET): Likewise. (LANGTOOLS_CHANGESET): Likewise. (OPENJDK_CHANGESET): Likewise. (CORBA_SHA256SUM): Likewise. (JAXP_SHA256SUM): Likewise. (JAXWS_SHA256SUM): Likewise. (JDK_SHA256SUM): Likewise. (LANGTOOLS_SHA256SUM): Likewise. (OPENJDK_SHA256SUM): Likewise. * configure.ac: Bump to 2.7.0pre07. * hotspot.map.in: Update to icedtea-2.7.0pre07. * patches/boot/ecj-diamond.patch: Add numerous cases in JAXP classes, along with com.sun.java.util.jar.pack, java.security.Provider, java.security.Security, javax.crypto.Cipher, javax.crypto.CryptoAllPermission, javax.crypto.CryptoPermissions, javax.crypto.CryptoPolicyParser, javax.crypto.JceSecurity, javax.crypto.JceSecurityManager, javax.management.remote.rmi.RMIJRMPServerImpl, sun.reflect.annotation.AnnotationInvocationHandler, sun.security.krb5.Krb5ServiceLocator, sun.security.provider.certpath.CertStoreHelper, sun.security.provider.certpath.ssl.SSLServerCertStore, sun.security.provider.certpath.URICertStore and sun.security.ssl.DHCrypt * patches/boot/ecj-multicatch.patch: Add sun.security.krb5.PrincipalName, java.lang.invoke.MemberName, sun.invoke.util.VerifyAccess, javax.crypto.EncryptedPrivateKeyInfo, javax.crypto.SealedObject, sun.security.provider.certpath.URICertStore, sun.security.ssl.RSAClientKeyExchange, sun.security.pkcs11.P11KeyStore, sun.security.pkcs11.P11RSAKeyFactory and sun.security.tools.keytool.Main * patches/boot/ecj-stringswitch.patch: Add cases in sun.security.krb5.Config, sun.security.provider.certpath.X509CertPath, sun.security.ssl.HandshakeMessage, sun.security.ssl.X509KeyManagerImpl, sun.security.pkcs11.Config, sun.security.pkcs11.P11Key, sun.security.sasl.digest.DigestMD5Base, sun.security.sasl.digest.DigestMD5Server, sun.security.sasl.ntlm.NTLMClient, sun.security.sasl.ntlm.NTLMServer and sun.security.sasl.util.AbstractSaslImpl. * patches/boot/ecj-trywithresources.patch: Add cases in sun.security.provider.certpath.URICertStore, sun.security.tools.KeyStoreUtil, sun.security.tools.keytool.Main.
author Andrew John Hughes <gnu_andrew@member.fsf.org>
date Wed, 28 Sep 2016 07:32:57 +0100
parents dbc79f1b0445
children 08c4847b2aa3
files ChangeLog Makefile.am configure.ac hotspot.map.in patches/boot/ecj-diamond.patch patches/boot/ecj-multicatch.patch patches/boot/ecj-stringswitch.patch patches/boot/ecj-trywithresources.patch
diffstat 8 files changed, 3902 insertions(+), 982 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Mon Sep 19 19:06:57 2016 +0100
+++ b/ChangeLog	Wed Sep 28 07:32:57 2016 +0100
@@ -1,3 +1,68 @@
+2016-09-24  Andrew John Hughes  <gnu.andrew@member.fsf.org>
+
+	Bump to icedtea-2.7.0pre07.
+	* Makefile.am,
+	(JDK_UPDATE_VERSION): Set to 111.
+	(BUILD_VERSION): Set to b01.
+	(CORBA_CHANGESET): Update to icedtea-2.7.0pre07.
+	(JAXP_CHANGESET): Likewise.
+	(JAXWS_CHANGESET): Likewise.
+	(JDK_CHANGESET): Likewise.
+	(LANGTOOLS_CHANGESET): Likewise.
+	(OPENJDK_CHANGESET): Likewise.
+	(CORBA_SHA256SUM): Likewise.
+	(JAXP_SHA256SUM): Likewise.
+	(JAXWS_SHA256SUM): Likewise.
+	(JDK_SHA256SUM): Likewise.
+	(LANGTOOLS_SHA256SUM): Likewise.
+	(OPENJDK_SHA256SUM): Likewise.
+	* configure.ac: Bump to 2.7.0pre07.
+	* hotspot.map.in: Update to icedtea-2.7.0pre07.
+	* patches/boot/ecj-diamond.patch:
+	Add numerous cases in JAXP classes, along with
+	com.sun.java.util.jar.pack, java.security.Provider,
+	java.security.Security, javax.crypto.Cipher,
+	javax.crypto.CryptoAllPermission,
+	javax.crypto.CryptoPermissions,
+	javax.crypto.CryptoPolicyParser,
+	javax.crypto.JceSecurity, javax.crypto.JceSecurityManager,
+	javax.management.remote.rmi.RMIJRMPServerImpl,
+	sun.reflect.annotation.AnnotationInvocationHandler,
+	sun.security.krb5.Krb5ServiceLocator,
+	sun.security.provider.certpath.CertStoreHelper,
+	sun.security.provider.certpath.ssl.SSLServerCertStore,
+	sun.security.provider.certpath.URICertStore and
+	sun.security.ssl.DHCrypt
+	* patches/boot/ecj-multicatch.patch:
+	Add sun.security.krb5.PrincipalName,
+	java.lang.invoke.MemberName,
+	sun.invoke.util.VerifyAccess,
+	javax.crypto.EncryptedPrivateKeyInfo,
+	javax.crypto.SealedObject,
+	sun.security.provider.certpath.URICertStore,
+	sun.security.ssl.RSAClientKeyExchange,
+	sun.security.pkcs11.P11KeyStore,
+	sun.security.pkcs11.P11RSAKeyFactory and
+	sun.security.tools.keytool.Main
+	* patches/boot/ecj-stringswitch.patch:
+	Add cases in
+	sun.security.krb5.Config,
+	sun.security.provider.certpath.X509CertPath,
+	sun.security.ssl.HandshakeMessage,
+	sun.security.ssl.X509KeyManagerImpl,
+	sun.security.pkcs11.Config,
+	sun.security.pkcs11.P11Key,
+	sun.security.sasl.digest.DigestMD5Base,
+	sun.security.sasl.digest.DigestMD5Server,
+	sun.security.sasl.ntlm.NTLMClient,
+	sun.security.sasl.ntlm.NTLMServer and
+	sun.security.sasl.util.AbstractSaslImpl.
+	* patches/boot/ecj-trywithresources.patch:
+	Add cases in
+	sun.security.provider.certpath.URICertStore,
+	sun.security.tools.KeyStoreUtil,
+	sun.security.tools.keytool.Main.
+
 2016-08-19  Andrew John Hughes  <gnu.andrew@member.fsf.org>
 
 	PR3166: invalid zip timestamp handling leads to
@@ -290,6 +355,7 @@
 
 2016-07-20  Andrew John Hughes  <gnu.andrew@member.fsf.org>
 
+	Bump to icedtea-2.7.0pre06.
 	* Makefile.am,
 	(CORBA_CHANGESET): Update to icedtea-2.7.0pre06.
 	(JAXP_CHANGESET): Likewise.
--- a/Makefile.am	Mon Sep 19 19:06:57 2016 +0100
+++ b/Makefile.am	Wed Sep 28 07:32:57 2016 +0100
@@ -1,22 +1,22 @@
 # Dependencies
 
-JDK_UPDATE_VERSION = 85
-BUILD_VERSION = b02
+JDK_UPDATE_VERSION = 111
+BUILD_VERSION = b01
 COMBINED_VERSION = $(JDK_UPDATE_VERSION)-$(BUILD_VERSION)
 
-CORBA_CHANGESET = b6bef4d9a428
-JAXP_CHANGESET = a2cd36a76d22
-JAXWS_CHANGESET = 5c8bb4727c60
-JDK_CHANGESET = d35404fe9590
-LANGTOOLS_CHANGESET = bd3480b6d64a
-OPENJDK_CHANGESET = 05d8ac2f0610
-
-CORBA_SHA256SUM = b867a0abce87e74decaa8a3b3376f31cca1f53b9a2915ed6fa449b071215fe73
-JAXP_SHA256SUM = c82f8df09f60ba56c149f4e115cc286f836158ae45964c438757a6c27c9cdeb5
-JAXWS_SHA256SUM = bcd111e8fffd5fd5409af96d8cb7bd4ef1a79e21c7f52b76d7dec3de0b5b8a4e
-JDK_SHA256SUM = 8c61ecafde4c3f5f68ceaaeea40b77b00dafb5597505f004c86c3cb5df76445d
-LANGTOOLS_SHA256SUM = 20d515c4c71055c1f3632d7b9f054f866e8b77dce8214d4618d17ec5e9752999
-OPENJDK_SHA256SUM = b692c2f521c6880f9ddfff642ad44cc258abae5d8f47ddc614761f2b95be1f88
+CORBA_CHANGESET = 205f6d4b66fe
+JAXP_CHANGESET = 80897e67a1b3
+JAXWS_CHANGESET = cee876f061b3
+JDK_CHANGESET = 5e3d7e2b2a00
+LANGTOOLS_CHANGESET = e5b9f24eecf6
+OPENJDK_CHANGESET = 0c642b015379
+
+CORBA_SHA256SUM = f0c395f05fc5134044596ce6953fb95c27cef19d3c42acbd8ffa42355f983567
+JAXP_SHA256SUM = 7d357b8815f6f6371db0ea9d6aae1ff0f973a4befaf8ce27dd89533b8291e3fb
+JAXWS_SHA256SUM = 266133740e9b018edb7b004d8923c1f9f3fe8bf778e597d561614d194ba6c98b
+JDK_SHA256SUM = 6122cde4d043c89b6de5333e0b7aeff605dd350fd2ba7e9bc95a1aca25af7051
+LANGTOOLS_SHA256SUM = 37a84be24c950dcfc95c52e4949c1ac2ef67e375022104ee48aa412bc4c8fffd
+OPENJDK_SHA256SUM = 509256e03441e832791589717947af3e9b6d35baeb4dc75a78af79e22534f9fe
 
 DROP_URL = http://icedtea.classpath.org/download/drops
 
--- a/configure.ac	Mon Sep 19 19:06:57 2016 +0100
+++ b/configure.ac	Wed Sep 28 07:32:57 2016 +0100
@@ -1,4 +1,4 @@
-AC_INIT([icedtea], [2.7.0pre06], [distro-pkg-dev@openjdk.java.net])
+AC_INIT([icedtea], [2.7.0pre07], [distro-pkg-dev@openjdk.java.net])
 AM_INIT_AUTOMAKE([1.9 tar-pax foreign])
 AM_MAINTAINER_MODE([enable])
 AC_CONFIG_FILES([Makefile])
--- a/hotspot.map.in	Mon Sep 19 19:06:57 2016 +0100
+++ b/hotspot.map.in	Wed Sep 28 07:32:57 2016 +0100
@@ -1,2 +1,2 @@
 # version type(drop/hg) url changeset sha256sum
-default drop http://icedtea.classpath.org/download/drops/icedtea7/@ICEDTEA_RELEASE@ 601fbf4bf8c1 598f983e760f1f439444c837d1baa7fd6e5f3483c14a88a0862b1b6fb8aad595
+default drop http://icedtea.classpath.org/download/drops/icedtea7/@ICEDTEA_RELEASE@ b6971126dc0f 01f6d8f58e2eb729038f313a0e07c482d85a9cdb093c1aadd3624397a9ee28cb
--- a/patches/boot/ecj-diamond.patch	Mon Sep 19 19:06:57 2016 +0100
+++ b/patches/boot/ecj-diamond.patch	Wed Sep 28 07:32:57 2016 +0100
@@ -1,6 +1,6 @@
 diff -Nru openjdk-boot.orig/corba/src/share/classes/com/sun/corba/se/impl/encoding/CachedCodeBase.java openjdk-boot/corba/src/share/classes/com/sun/corba/se/impl/encoding/CachedCodeBase.java
---- openjdk-boot.orig/corba/src/share/classes/com/sun/corba/se/impl/encoding/CachedCodeBase.java	2015-07-19 18:19:26.000000000 +0100
-+++ openjdk-boot/corba/src/share/classes/com/sun/corba/se/impl/encoding/CachedCodeBase.java	2015-09-08 10:49:08.166659745 +0100
+--- openjdk-boot.orig/corba/src/share/classes/com/sun/corba/se/impl/encoding/CachedCodeBase.java	2016-09-07 06:06:54.000000000 +0100
++++ openjdk-boot/corba/src/share/classes/com/sun/corba/se/impl/encoding/CachedCodeBase.java	2016-09-21 06:38:08.152139860 +0100
 @@ -58,7 +58,7 @@
      private CorbaConnection conn;
  
@@ -11,8 +11,8 @@
      public static synchronized void cleanCache( ORB orb ) {
          synchronized (iorMapLock) {
 diff -Nru openjdk-boot.orig/corba/src/share/classes/com/sun/corba/se/impl/io/OutputStreamHook.java openjdk-boot/corba/src/share/classes/com/sun/corba/se/impl/io/OutputStreamHook.java
---- openjdk-boot.orig/corba/src/share/classes/com/sun/corba/se/impl/io/OutputStreamHook.java	2015-07-19 18:19:26.000000000 +0100
-+++ openjdk-boot/corba/src/share/classes/com/sun/corba/se/impl/io/OutputStreamHook.java	2015-09-08 10:49:08.166659745 +0100
+--- openjdk-boot.orig/corba/src/share/classes/com/sun/corba/se/impl/io/OutputStreamHook.java	2016-09-07 06:06:54.000000000 +0100
++++ openjdk-boot/corba/src/share/classes/com/sun/corba/se/impl/io/OutputStreamHook.java	2016-09-21 06:38:08.152139860 +0100
 @@ -50,7 +50,7 @@
       */
      private class HookPutFields extends ObjectOutputStream.PutField
@@ -23,8 +23,8 @@
          /**
           * Put the value of the named boolean field into the persistent field.
 diff -Nru openjdk-boot.orig/corba/src/share/classes/com/sun/corba/se/impl/orb/ORBImpl.java openjdk-boot/corba/src/share/classes/com/sun/corba/se/impl/orb/ORBImpl.java
---- openjdk-boot.orig/corba/src/share/classes/com/sun/corba/se/impl/orb/ORBImpl.java	2015-07-19 18:19:26.000000000 +0100
-+++ openjdk-boot/corba/src/share/classes/com/sun/corba/se/impl/orb/ORBImpl.java	2015-09-08 10:49:08.166659745 +0100
+--- openjdk-boot.orig/corba/src/share/classes/com/sun/corba/se/impl/orb/ORBImpl.java	2016-09-07 06:06:54.000000000 +0100
++++ openjdk-boot/corba/src/share/classes/com/sun/corba/se/impl/orb/ORBImpl.java	2016-09-21 06:38:08.152139860 +0100
 @@ -1315,7 +1315,7 @@
      protected void shutdownServants(boolean wait_for_completion) {
          Set<ObjectAdapterFactory> oaset;
@@ -35,8 +35,8 @@
  
          for (ObjectAdapterFactory oaf : oaset)
 diff -Nru openjdk-boot.orig/corba/src/share/classes/com/sun/corba/se/impl/orbutil/threadpool/ThreadPoolImpl.java openjdk-boot/corba/src/share/classes/com/sun/corba/se/impl/orbutil/threadpool/ThreadPoolImpl.java
---- openjdk-boot.orig/corba/src/share/classes/com/sun/corba/se/impl/orbutil/threadpool/ThreadPoolImpl.java	2015-07-19 18:19:26.000000000 +0100
-+++ openjdk-boot/corba/src/share/classes/com/sun/corba/se/impl/orbutil/threadpool/ThreadPoolImpl.java	2015-09-08 10:49:08.170659672 +0100
+--- openjdk-boot.orig/corba/src/share/classes/com/sun/corba/se/impl/orbutil/threadpool/ThreadPoolImpl.java	2016-09-07 06:06:54.000000000 +0100
++++ openjdk-boot/corba/src/share/classes/com/sun/corba/se/impl/orbutil/threadpool/ThreadPoolImpl.java	2016-09-21 06:38:08.152139860 +0100
 @@ -108,7 +108,7 @@
      private ThreadGroup threadGroup;
  
@@ -55,10 +55,522 @@
          }
  
          for (WorkerThread wt : copy) {
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/lib/ExsltSets.java openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/lib/ExsltSets.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/lib/ExsltSets.java	2016-09-22 04:46:16.819711160 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/lib/ExsltSets.java	2016-09-22 17:56:43.942660332 +0100
+@@ -192,7 +192,7 @@
+     NodeSet dist = new NodeSet();
+     dist.setShouldCacheNodes(true);
+ 
+-    Map<String, Node> stringTable = new HashMap<>();
++    Map<String, Node> stringTable = new HashMap<String, Node>();
+ 
+     for (int i = 0; i < nl.getLength(); i++)
+     {
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xslt/EnvironmentCheck.java openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xslt/EnvironmentCheck.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xslt/EnvironmentCheck.java	2016-09-22 04:46:16.987708418 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xslt/EnvironmentCheck.java	2016-09-23 05:30:11.423894063 +0100
+@@ -220,7 +220,7 @@
+   public Map<String, Object> getEnvironmentHash()
+   {
+     // Setup a hash to store various environment information in
+-    Map<String, Object> hash = new HashMap<>();
++    Map<String, Object> hash = new HashMap<String, Object>();
+ 
+     // Call various worker methods to fill in the hash
+     //  These are explicitly separate for maintenance and so
+@@ -523,7 +523,7 @@
+   {
+ 
+     if (null == h)
+-      h = new HashMap<>();
++      h = new HashMap<String, Object>();
+ 
+     // Grab java version for later use
+     try
+@@ -551,7 +551,7 @@
+ 
+       h.put("java.class.path", cp);
+ 
+-      List<Map> classpathJars = checkPathForJars(cp, jarNames);
++      List<Map<String,String>> classpathJars = checkPathForJars(cp, jarNames);
+ 
+       if (null != classpathJars) {
+           h.put(FOUNDCLASSES + "java.class.path", classpathJars);
+@@ -613,14 +613,14 @@
+    * @see #appendFoundJars(Node, Document, Map, String )
+    * @see #getApparentVersion(String, long)
+    */
+-  protected List<Map> checkPathForJars(String cp, String[] jars)
++  protected List<Map<String, String>> checkPathForJars(String cp, String[] jars)
+   {
+ 
+     if ((null == cp) || (null == jars) || (0 == cp.length())
+             || (0 == jars.length))
+       return null;
+ 
+-    List<Map> v = new ArrayList<>();
++    List<Map<String, String>> v = new ArrayList<Map<String, String>>();
+     StringTokenizer st = new StringTokenizer(cp, File.pathSeparator);
+ 
+     while (st.hasMoreTokens())
+@@ -641,7 +641,7 @@
+             // If any requested jarName exists, report on
+             //  the details of that .jar file
+             try {
+-                Map<String, String> h = new HashMap<>(2);
++                Map<String, String> h = new HashMap<String, String>(2);
+                 // Note "-" char is looked for in appendFoundJars
+                 h.put(jars[i] + "-path", f.getAbsolutePath());
+ 
+@@ -660,7 +660,7 @@
+                 /* no-op, don't add it  */
+             }
+           } else {
+-            Map<String, String> h = new HashMap<>(2);
++	      Map<String, String> h = new HashMap<String, String>(2);
+             // Note "-" char is looked for in appendFoundJars
+             h.put(jars[i] + "-path", WARNING + " Classpath entry: "
+                     + filename + " does not exist");
+@@ -737,7 +737,7 @@
+   {
+ 
+     if (null == h)
+-      h = new HashMap<>();
++	h = new HashMap<String, Object>();
+ 
+     Class clazz = null;
+ 
+@@ -768,7 +768,7 @@
+   {
+ 
+     if (null == h)
+-      h = new HashMap<>();
++	h = new HashMap<String, Object>();
+ 
+     try
+     {
+@@ -854,7 +854,7 @@
+   {
+ 
+     if (null == h)
+-      h = new HashMap<>();
++	h = new HashMap<String, Object>();
+ 
+     try
+     {
+@@ -915,7 +915,7 @@
+   {
+ 
+     if (null == h)
+-      h = new HashMap<>();
++	h = new HashMap<String, Object>();
+ 
+     try
+     {
+@@ -945,7 +945,7 @@
+   {
+ 
+     if (null == h)
+-      h = new HashMap<>();
++	h = new HashMap<String, Object>();
+ 
+     final String DOM_CLASS = "org.w3c.dom.Document";
+     final String DOM_LEVEL3_METHOD = "getDoctype";  // no parameter
+@@ -980,7 +980,7 @@
+   {
+ 
+     if (null == h)
+-      h = new HashMap<>();
++	h = new HashMap<String, Object>();
+ 
+     final String DOM_LEVEL2_CLASS = "org.w3c.dom.Document";
+     final String DOM_LEVEL2_METHOD = "createElementNS";  // String, String
+@@ -1056,7 +1056,7 @@
+   {
+ 
+     if (null == h)
+-      h = new HashMap<>();
++	h = new HashMap<String, Object>();
+ 
+     final String SAX_VERSION1_CLASS = "org.xml.sax.Parser";
+     final String SAX_VERSION1_METHOD = "parse";  // String
+@@ -1146,7 +1146,7 @@
+    */
+   static
+   {
+-    Map<Long, String> jarVersions = new HashMap<>();
++    Map<Long, String> jarVersions = new HashMap<Long, String>();
+     jarVersions.put(new Long(857192), "xalan.jar from xalan-j_1_1");
+     jarVersions.put(new Long(440237), "xalan.jar from xalan-j_1_2");
+     jarVersions.put(new Long(436094), "xalan.jar from xalan-j_1_2_1");
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/CastExpr.java openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/CastExpr.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/CastExpr.java	2016-09-22 04:46:16.831710964 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/CastExpr.java	2016-09-22 12:44:07.539848777 +0100
+@@ -51,7 +51,7 @@
+     /**
+      * Legal conversions between internal types.
+      */
+-    private static final MultiHashtable<Type, Type> InternalTypeMap = new MultiHashtable<>();
++    private static final MultiHashtable<Type, Type> InternalTypeMap = new MultiHashtable<Type, Type>();
+ 
+     static {
+         // Possible type conversions between internal types
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/FunctionCall.java openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/FunctionCall.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/FunctionCall.java	2016-09-22 04:46:16.839710834 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/FunctionCall.java	2016-09-22 04:47:06.102907210 +0100
+@@ -139,7 +139,7 @@
+     private boolean       _isStatic = false;
+ 
+     // Legal conversions between internal and Java types.
+-    private static final MultiHashtable<Type, JavaType> _internal2Java = new MultiHashtable<>();
++    private static final MultiHashtable<Type, JavaType> _internal2Java = new MultiHashtable<Type, JavaType>();
+ 
+     // Legal conversions between Java and internal types.
+     private static final Map<Class<?>, Type> JAVA2INTERNAL;
+@@ -254,9 +254,9 @@
+ 
+         _internal2Java.makeUnmodifiable();
+ 
+-        Map<Class<?>, Type> java2Internal = new HashMap<>();
+-        Map<String, String> extensionNamespaceTable = new HashMap<>();
+-        Map<String, String> extensionFunctionTable = new HashMap<>();
++        Map<Class<?>, Type> java2Internal = new HashMap<Class<?>, Type>();
++        Map<String, String> extensionNamespaceTable = new HashMap<String, String>();
++        Map<String, String> extensionFunctionTable = new HashMap<String, String>();
+ 
+         // Possible conversions between Java and internal types
+         java2Internal.put(Boolean.TYPE, Type.Boolean);
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/LiteralElement.java openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/LiteralElement.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/LiteralElement.java	2016-09-22 04:46:16.851710638 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/LiteralElement.java	2016-09-22 04:51:35.906506403 +0100
+@@ -107,7 +107,7 @@
+ 
+         // Check if we have any declared namespaces
+         if (_accessedPrefixes == null) {
+-            _accessedPrefixes = new Hashtable<>();
++            _accessedPrefixes = new Hashtable<String, String>();
+         }
+         else {
+             if (!declared) {
+@@ -169,7 +169,7 @@
+      */
+     public void addAttribute(SyntaxTreeNode attribute) {
+         if (_attributeElements == null) {
+-            _attributeElements = new ArrayList<>(2);
++            _attributeElements = new ArrayList<SyntaxTreeNode>(2);
+         }
+         _attributeElements.add(attribute);
+     }
+@@ -179,7 +179,7 @@
+      */
+     public void setFirstAttribute(SyntaxTreeNode attribute) {
+         if (_attributeElements == null) {
+-            _attributeElements = new ArrayList<>(2);
++            _attributeElements = new ArrayList<SyntaxTreeNode>(2);
+         }
+         _attributeElements.add(0, attribute);
+     }
+@@ -205,7 +205,7 @@
+      * to _ANY_ namespace URI. Used by literal result elements to determine
+      */
+     public Set<Map.Entry<String, String>> getNamespaceScope(SyntaxTreeNode node) {
+-        Map<String, String> all = new HashMap<>();
++        Map<String, String> all = new HashMap<String, String>();
+ 
+         while (node != null) {
+             Map<String, String> mapping = node.getPrefixMapping();
+@@ -445,7 +445,7 @@
+                  }
+                  else if (node instanceof XslAttribute) {
+                      if (attrsTable == null) {
+-                        attrsTable = new HashMap<>();
++			 attrsTable = new HashMap<String, SyntaxTreeNode>();
+                          for (int k = 0; k < i; k++) {
+                              SyntaxTreeNode n = _attributeElements.get(k);
+                              if (n instanceof LiteralAttribute) {
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Mode.java openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Mode.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Mode.java	2016-09-22 04:46:16.855710572 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Mode.java	2016-09-22 04:48:24.093635013 +0100
+@@ -129,22 +129,22 @@
+     /**
+      * A mapping between templates and test sequences.
+      */
+-    private Map<Template, Object> _neededTemplates = new HashMap<>();
++    private Map<Template, Object> _neededTemplates = new HashMap<Template, Object>();
+ 
+     /**
+      * A mapping between named templates and Mode objects.
+      */
+-    private Map<Template, Mode> _namedTemplates = new HashMap<>();
++    private Map<Template, Mode> _namedTemplates = new HashMap<Template, Mode>();
+ 
+     /**
+      * A mapping between templates and instruction handles.
+      */
+-    private Map<Template, InstructionHandle> _templateIHs = new HashMap<>();
++    private Map<Template, InstructionHandle> _templateIHs = new HashMap<Template, InstructionHandle>();
+ 
+     /**
+      * A mapping between templates and instruction lists.
+      */
+-    private Map<Template, InstructionList> _templateILs = new HashMap<>();
++    private Map<Template, InstructionList> _templateILs = new HashMap<Template, InstructionList>();
+ 
+     /**
+      * A reference to the pattern matching the root node.
+@@ -196,7 +196,7 @@
+ 
+     public String functionName(int min, int max) {
+         if (_importLevels == null) {
+-            _importLevels = new HashMap<>();
++            _importLevels = new HashMap<Integer,Integer>();
+         }
+         _importLevels.put(max, min);
+         return _methodName + '_' + max;
+@@ -1074,10 +1074,10 @@
+         final Vector names      = xsltc.getNamesIndex();
+ 
+         // Clear some datastructures
+-        _namedTemplates = new HashMap<>();
+-        _neededTemplates = new HashMap<>();
+-        _templateIHs = new HashMap<>();
+-        _templateILs = new HashMap<>();
++        _namedTemplates = new HashMap<Template, Mode>();
++        _neededTemplates = new HashMap<Template, Object>();
++        _templateIHs = new HashMap<Template, InstructionHandle>();
++        _templateILs = new HashMap<Template, InstructionList>();
+         _patternGroups = new Vector[32];
+         _rootPattern = null;
+ 
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Parser.java openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Parser.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Parser.java	2016-09-22 04:46:16.867710376 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Parser.java	2016-09-23 05:30:28.235619413 +0100
+@@ -81,7 +81,7 @@
+     private Map<String, String>   _instructionClasses; // Maps instructions to classes
+     private Map<String, String[]> _instructionAttrs;  // reqd and opt attrs
+     private Map<String, QName>   _qNames;
+-    private Map<String, Map>     _namespaces;
++    private Map<String, Map<String, QName>>     _namespaces;
+     private QName       _useAttributeSets;
+     private QName       _excludeResultPrefixes;
+     private QName       _extensionElementPrefixes;
+@@ -107,11 +107,11 @@
+     }
+ 
+     public void init() {
+-        _qNames              = new HashMap<>(512);
+-        _namespaces          = new HashMap<>();
+-        _instructionClasses  = new HashMap<>();
+-        _instructionAttrs    = new HashMap<>();
+-        _variableScope       = new HashMap<>();
++        _qNames              = new HashMap<String, QName>(512);
++        _namespaces          = new HashMap<String, Map<String, QName>>();
++        _instructionClasses  = new HashMap<String, String>();
++        _instructionAttrs    = new HashMap<String, String[]>();
++        _variableScope       = new HashMap<String, Object>();
+         _template            = null;
+         _errors              = new Vector();
+         _warnings            = new Vector();
+@@ -322,7 +322,7 @@
+ 
+             if (space == null) {
+                 final QName name = new QName(namespace, prefix, localname);
+-                _namespaces.put(namespace, space = new HashMap<>());
++                _namespaces.put(namespace, space = new HashMap<String, QName>());
+                 space.put(lexicalQName, name);
+                 return name;
+             }
+@@ -1275,7 +1275,7 @@
+      */
+     public void startPrefixMapping(String prefix, String uri) {
+         if (_prefixMapping == null) {
+-            _prefixMapping = new HashMap<>();
++            _prefixMapping = new HashMap<String, String>();
+         }
+         _prefixMapping.put(prefix, uri);
+     }
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Stylesheet.java openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Stylesheet.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Stylesheet.java	2016-09-22 04:46:16.875710246 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Stylesheet.java	2016-09-22 17:23:50.842684141 +0100
+@@ -121,7 +121,7 @@
+     /**
+      * Mapping between mode names and Mode instances.
+      */
+-    private final Map<String, Mode> _modes = new HashMap<>();
++    private final Map<String, Mode> _modes = new HashMap<String, Mode>();
+ 
+     /**
+      * A reference to the default Mode object.
+@@ -131,7 +131,7 @@
+     /**
+      * Mapping between extension URIs and their prefixes.
+      */
+-    private final Map<String, String> _extensions = new HashMap<>();
++    private final Map<String, String> _extensions = new HashMap<String, String>();
+ 
+     /**
+      * Reference to the stylesheet from which this stylesheet was
+@@ -164,7 +164,7 @@
+     /**
+      * Mapping between key names and Key objects (needed by Key/IdPattern).
+      */
+-    private Map<String, Key> _keys = new HashMap<>();
++    private Map<String, Key> _keys = new HashMap<String, Key>();
+ 
+     /**
+      * A reference to the SourceLoader set by the user (a URIResolver
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/SymbolTable.java openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/SymbolTable.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/SymbolTable.java	2016-09-22 04:46:16.887710050 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/SymbolTable.java	2016-09-22 16:57:12.420640421 +0100
+@@ -38,8 +38,8 @@
+ final class SymbolTable {
+ 
+     // These maps are used for all stylesheets
+-    private final Map<String, Stylesheet> _stylesheets = new HashMap<>();
+-    private final Map<String, Vector> _primops     = new HashMap<>();
++    private final Map<String, Stylesheet> _stylesheets = new HashMap<String, Stylesheet>();
++    private final Map<String, Vector> _primops     = new HashMap<String, Vector>();
+ 
+     // These maps are used for some stylesheets
+     private Map<String, VariableBase> _variables = null;
+@@ -57,7 +57,7 @@
+     }
+ 
+     public void addDecimalFormatting(QName name, DecimalFormatting symbols) {
+-        if (_decimalFormats == null) _decimalFormats = new HashMap<>();
++        if (_decimalFormats == null) _decimalFormats = new HashMap<String, DecimalFormatting>();
+         _decimalFormats.put(name.getStringRep(), symbols);
+     }
+ 
+@@ -67,7 +67,7 @@
+     }
+ 
+     public void addKey(QName name, Key key) {
+-        if (_keys == null) _keys = new HashMap<>();
++        if (_keys == null) _keys = new HashMap<String, Key>();
+         _keys.put(name.getStringRep(), key);
+     }
+ 
+@@ -81,7 +81,7 @@
+ 
+     public Template addTemplate(Template template) {
+         final QName name = template.getName();
+-        if (_templates == null) _templates = new HashMap<>();
++        if (_templates == null) _templates = new HashMap<String, Template>();
+         return _templates.put(name.getStringRep(), template);
+     }
+ 
+@@ -91,13 +91,13 @@
+     }
+ 
+     public Variable addVariable(Variable variable) {
+-        if (_variables == null) _variables = new HashMap<>();
++        if (_variables == null) _variables = new HashMap<String, VariableBase>();
+         final String name = variable.getName().getStringRep();
+         return (Variable)_variables.put(name, variable);
+     }
+ 
+     public Param addParam(Param parameter) {
+-        if (_variables == null) _variables = new HashMap<>();
++        if (_variables == null) _variables = new HashMap<String, VariableBase>();
+         final String name = parameter.getName().getStringRep();
+         return (Param)_variables.put(name, parameter);
+     }
+@@ -123,7 +123,7 @@
+     }
+ 
+     public AttributeSet addAttributeSet(AttributeSet atts) {
+-        if (_attributeSets == null) _attributeSets = new HashMap<>();
++        if (_attributeSets == null) _attributeSets = new HashMap<String, AttributeSet>();
+         return _attributeSets.put(atts.getName().getStringRep(), atts);
+     }
+ 
+@@ -181,7 +181,7 @@
+      * Adds an alias for a namespace prefix
+      */
+     public void addPrefixAlias(String prefix, String alias) {
+-        if (_aliases == null) _aliases = new HashMap<>();
++        if (_aliases == null) _aliases = new HashMap<String, String>();
+         _aliases.put(prefix,alias);
+     }
+ 
+@@ -202,7 +202,7 @@
+         if (uri == null) return;
+ 
+         // Create a new map of exlcuded URIs if none exists
+-        if (_excludedURI == null) _excludedURI = new HashMap<>();
++        if (_excludedURI == null) _excludedURI = new HashMap<String, Integer>();
+ 
+         // Register the namespace URI
+         Integer refcnt = _excludedURI.get(uri);
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/SyntaxTreeNode.java openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/SyntaxTreeNode.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/SyntaxTreeNode.java	2016-09-22 04:46:16.895709920 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/SyntaxTreeNode.java	2016-09-22 17:24:17.898245601 +0100
+@@ -70,7 +70,7 @@
+     protected SyntaxTreeNode _parent;          // Parent node
+     private Stylesheet       _stylesheet;      // Stylesheet ancestor node
+     private Template         _template;        // Template ancestor node
+-    private final List<SyntaxTreeNode> _contents = new ArrayList<>(2); // Child nodes
++    private final List<SyntaxTreeNode> _contents = new ArrayList<SyntaxTreeNode>(2); // Child nodes
+ 
+     // Element description data
+     protected QName _qname;                    // The element QName
+@@ -243,7 +243,7 @@
+      */
+     protected void addPrefixMapping(String prefix, String uri) {
+         if (_prefixMapping == null)
+-            _prefixMapping = new HashMap<>();
++            _prefixMapping = new HashMap<String, String>();
+         _prefixMapping.put(prefix, uri);
+     }
+ 
+@@ -435,7 +435,7 @@
+             final QName varOrParamName = updateScope(parser, child);
+             if (varOrParamName != null) {
+                 if (locals == null) {
+-                    locals = new ArrayList<>(2);
++                    locals = new ArrayList<QName>(2);
+                 }
+                 locals.add(varOrParamName);
+             }
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/MethodGenerator.java openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/MethodGenerator.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/MethodGenerator.java	2016-09-22 04:46:16.899709854 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/MethodGenerator.java	2016-09-22 17:56:33.974822323 +0100
+@@ -127,7 +127,7 @@
+                  * times. Note that patterns whose kernels are "*", "node()"
+                  * and "@*" can between shared by test sequences.
+                  */
+-        private Map<Pattern, InstructionList> _preCompiled = new HashMap<>();
++    private Map<Pattern, InstructionList> _preCompiled = new HashMap<Pattern, InstructionList>();
+ 
+ 
+     public MethodGenerator(int access_flags, Type return_type,
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/MultiHashtable.java openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/MultiHashtable.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/MultiHashtable.java	2016-09-22 04:46:16.907709724 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/MultiHashtable.java	2016-09-22 17:41:38.345369184 +0100
+@@ -37,7 +37,7 @@
+ public final class MultiHashtable<K,V> {
+     static final long serialVersionUID = -6151608290510033572L;
+ 
+-    private final Map<K, Set<V>> map = new HashMap<>();
++    private final Map<K, Set<V>> map = new HashMap<K, Set<V>>();
+     private boolean modifiable = true;
+ 
+     /**
+@@ -52,7 +52,7 @@
+         if (modifiable) {
+             Set<V> set = map.get(key);
+             if (set == null) {
+-                set = new HashSet<>();
++                set = new HashSet<V>();
+                 map.put(key, set);
+             }
+             set.add(value);
 diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/XSLTC.java openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/XSLTC.java
---- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/XSLTC.java	2015-07-19 18:19:26.000000000 +0100
-+++ openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/XSLTC.java	2015-09-08 10:49:08.170659672 +0100
-@@ -173,7 +173,7 @@
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/XSLTC.java	2016-09-07 06:06:32.000000000 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/XSLTC.java	2016-09-21 17:37:42.018664738 +0100
+@@ -170,7 +170,7 @@
          _parser = new Parser(this, useServicesMechanism);
          _featureManager = featureManager;
          _extensionClassLoader = null;
@@ -67,9 +579,930 @@
      }
  
      /**
+@@ -316,13 +316,13 @@
+      */
+     private void reset() {
+         _nextGType      = DTM.NTYPES;
+-        _elements       = new HashMap<>();
+-        _attributes     = new HashMap<>();
+-        _namespaces     = new HashMap<>();
++        _elements       = new HashMap<String, Integer>();
++        _attributes     = new HashMap<String, Integer>();
++        _namespaces     = new HashMap<String, Integer>();
+         _namespaces.put("",new Integer(_nextNSType));
+         _namesIndex     = new Vector(128);
+         _namespaceIndex = new Vector(32);
+-        _namespacePrefixes = new HashMap<>();
++        _namespacePrefixes = new HashMap<String, Integer>();
+         _stylesheet     = null;
+         _parser.init();
+         //_variableSerial     = 1;
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/dom/DocumentCache.java openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/dom/DocumentCache.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/dom/DocumentCache.java	2016-09-22 04:46:16.915709594 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/dom/DocumentCache.java	2016-09-22 17:56:17.375092088 +0100
+@@ -169,7 +169,7 @@
+         _count = 0;
+         _current = 0;
+         _size  = size;
+-        _references = new HashMap<>(_size+2);
++        _references = new HashMap<String, CachedDocument>(_size+2);
+         _URIs = new String[_size];
+ 
+         try {
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/dom/DOMWSFilter.java openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/dom/DOMWSFilter.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/dom/DOMWSFilter.java	2016-09-22 04:46:16.923709462 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/dom/DOMWSFilter.java	2016-09-22 17:55:58.887392533 +0100
+@@ -60,7 +60,7 @@
+      */
+     public DOMWSFilter(AbstractTranslet translet) {
+         m_translet = translet;
+-        m_mappings = new HashMap<>();
++        m_mappings = new HashMap<DTM, short[]>();
+ 
+         if (translet instanceof StripFilter) {
+             m_filter = (StripFilter) translet;
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/dom/KeyIndex.java openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/dom/KeyIndex.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/dom/KeyIndex.java	2016-09-22 04:46:16.935709266 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/dom/KeyIndex.java	2016-09-22 17:23:13.607287658 +0100
+@@ -59,7 +59,7 @@
+     /**
+      * A mapping from a document node to the mapping between values and nodesets
+      */
+-    private Map<Integer, Map> _rootToIndexMap = new HashMap<>();
++    private Map<Integer, Map<String, IntegerArray>> _rootToIndexMap = new HashMap<Integer, Map<String,IntegerArray>>();
+ 
+     /**
+      * The node set associated to the current value passed
+@@ -93,7 +93,7 @@
+     public void add(String value, int node, int rootNode) {
+         if (_currentDocumentNode != rootNode) {
+             _currentDocumentNode = rootNode;
+-            _index = new HashMap<>();
++            _index = new HashMap<String, IntegerArray>();
+             _rootToIndexMap.put(rootNode, _index);
+         }
+ 
+@@ -180,7 +180,7 @@
+                 Map<String, IntegerArray> index = _rootToIndexMap.get(root);
+ 
+                 if (index == null) {
+-                    index = new HashMap<>();
++                    index = new HashMap<String, IntegerArray>();
+                     _rootToIndexMap.put(root, index);
+                 } else {
+                     nodes = index.get(id);
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/dom/MultiDOM.java openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/dom/MultiDOM.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/dom/MultiDOM.java	2016-09-22 04:46:16.943709136 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/dom/MultiDOM.java	2016-09-22 17:55:49.959537619 +0100
+@@ -56,7 +56,7 @@
+     private int _free;
+     private int _size;
+ 
+-    private Map<String, Integer> _documents = new HashMap<>();
++    private Map<String, Integer> _documents = new HashMap<String, Integer>();
+ 
+     private final class AxisIterator extends DTMAxisIteratorBase {
+         // constitutive data
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/dom/SAXImpl.java openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/dom/SAXImpl.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/dom/SAXImpl.java	2016-09-22 04:46:16.951709007 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/dom/SAXImpl.java	2016-09-22 17:41:23.265613935 +0100
+@@ -114,7 +114,7 @@
+     private int _namesSize = -1;
+ 
+     // Namespace related stuff
+-    private Map<Integer, Integer> _nsIndex = new HashMap<>();
++    private Map<Integer, Integer> _nsIndex = new HashMap<Integer, Integer>();
+ 
+     // The initial size of the text buffer
+     private int _size = 0;
+@@ -747,7 +747,7 @@
+             else {
+                 _document = node.getOwnerDocument();
+             }
+-            _node2Ids = new HashMap<>();
++            _node2Ids = new HashMap<Node, Integer>();
+         }
+     }
+ 
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/runtime/AbstractTranslet.java openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/runtime/AbstractTranslet.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/runtime/AbstractTranslet.java	2016-09-22 04:46:16.955708940 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/runtime/AbstractTranslet.java	2016-09-22 17:21:54.012577628 +0100
+@@ -279,7 +279,7 @@
+      */
+     public void addDecimalFormat(String name, DecimalFormatSymbols symbols) {
+         // Instanciate map for formatting symbols if needed
+-        if (_formatSymbols == null) _formatSymbols = new HashMap<>();
++        if (_formatSymbols == null) _formatSymbols = new HashMap<String, DecimalFormat>();
+ 
+         // The name cannot be null - use empty string instead
+         if (name == null) name = EMPTYSTRING;
+@@ -468,7 +468,7 @@
+      * @return a KeyIndex.
+      */
+     private KeyIndex buildKeyIndexHelper(String name) {
+-        if (_keyIndexes == null) _keyIndexes = new HashMap<>();
++        if (_keyIndexes == null) _keyIndexes = new HashMap<String, KeyIndex>();
+ 
+         KeyIndex index = _keyIndexes.get(name);
+         if (index == null) {
+@@ -712,7 +712,7 @@
+     private Map<String, Class<?>> _auxClasses = null;
+ 
+     public void addAuxiliaryClass(Class auxClass) {
+-        if (_auxClasses == null) _auxClasses = new HashMap<>();
++        if (_auxClasses == null) _auxClasses = new HashMap<String, Class<?>>();
+         _auxClasses.put(auxClass.getName(), auxClass);
+     }
+ 
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/DOM2SAX.java openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/DOM2SAX.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/DOM2SAX.java	2016-09-22 04:46:16.963708811 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/DOM2SAX.java	2016-09-22 17:55:40.051698630 +0100
+@@ -58,7 +58,7 @@
+     private ContentHandler _sax = null;
+     private LexicalHandler _lex = null;
+     private SAXImpl _saxImpl = null;
+-    private Map<String, Stack> _nsPrefixes = new HashMap<>();
++    private Map<String, Stack> _nsPrefixes = new HashMap<String, Stack>();
+ 
+     public DOM2SAX(Node root) {
+         _dom = root;
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesImpl.java openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesImpl.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesImpl.java	2016-09-22 04:46:16.971708680 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesImpl.java	2016-09-22 17:55:15.716094102 +0100
+@@ -407,7 +407,7 @@
+             _class = new Class[classCount];
+ 
+             if (classCount > 1) {
+-                _auxClasses = new HashMap<>();
++                _auxClasses = new HashMap<String, Class<?>>();
+             }
+ 
+             for (int i = 0; i < classCount; i++) {
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerImpl.java openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerImpl.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerImpl.java	2016-09-22 04:46:16.979708550 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerImpl.java	2016-09-22 17:54:56.276410008 +0100
+@@ -1189,7 +1189,7 @@
+ 
+         if (_isIdentity) {
+             if (_parameters == null) {
+-                _parameters = new HashMap<>();
++                _parameters = new HashMap<String, Object>();
+             }
+             _parameters.put(name, value);
+         }
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/dom/CoreDocumentImpl.java openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/dom/CoreDocumentImpl.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/dom/CoreDocumentImpl.java	2016-09-22 04:46:16.995708289 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/dom/CoreDocumentImpl.java	2016-09-23 05:31:45.770356027 +0100
+@@ -393,7 +393,7 @@
+ 
+             if (identifiers != null) {
+                 // Build a reverse mapping from element to identifier.
+-                reversedIdentifiers = new HashMap<>(identifiers.size());
++                reversedIdentifiers = new HashMap<Node, String>(identifiers.size());
+                 for (String elementId : identifiers.keySet()) {
+                     reversedIdentifiers.put(identifiers.get(elementId), elementId);
+                 }
+@@ -1504,7 +1504,7 @@
+         // Node numbers are negative, from -1 to -n
+         int num;
+         if (nodeTable == null) {
+-            nodeTable = new HashMap<>();
++            nodeTable = new HashMap<Node, Integer>();
+             num = --nodeCounter;
+             nodeTable.put(node, new Integer(num));
+         } else {
+@@ -1609,7 +1609,7 @@
+                     String elementId = reversedIdentifiers.get(source);
+                     if (elementId != null) {
+                         if (identifiers == null) {
+-                            identifiers = new HashMap<>();
++                            identifiers = new HashMap<String, Node>();
+                         }
+ 
+                         identifiers.put(elementId, newElement);
+@@ -2032,7 +2032,7 @@
+         }
+ 
+         if (identifiers == null) {
+-            identifiers = new HashMap<>();
++            identifiers = new HashMap<String, Node>();
+         }
+ 
+         identifiers.put(idName, element);
+@@ -2360,13 +2360,13 @@
+         } else {
+             Map<String, UserDataRecord> t;
+             if (nodeUserData == null) {
+-                nodeUserData = new HashMap<>();
+-                t = new HashMap<>();
++                nodeUserData = new HashMap<Node, Map<String,UserDataRecord>>();
++                t = new HashMap<String, UserDataRecord>();
+                 nodeUserData.put(n, t);
+             } else {
+                 t = nodeUserData.get(n);
+                 if (t == null) {
+-                    t = new HashMap<>();
++                    t = new HashMap<String, UserDataRecord>();
+                     nodeUserData.put(n, t);
+                 }
+             }
+@@ -2434,7 +2434,7 @@
+      */
+     void setUserDataTable(Node n, Map<String, UserDataRecord> data) {
+         if (nodeUserData == null) {
+-            nodeUserData = new HashMap<>();
++            nodeUserData = new HashMap<Node, Map<String,UserDataRecord>>();
+         }
+ 
+         if (data != null) {
+@@ -2788,15 +2788,15 @@
+         // Convert Maps to Hashtables
+         Hashtable<Node, Hashtable<String, UserDataRecord>> nud = null;
+         if (nodeUserData != null) {
+-            nud = new Hashtable<>();
++            nud = new Hashtable<Node, Hashtable<String, UserDataRecord>>();
+             for (Map.Entry<Node, Map<String, UserDataRecord>> e : nodeUserData.entrySet()) {
+                 //e.getValue() will not be null since an entry is always put with a non-null value
+-                nud.put(e.getKey(), new Hashtable<>(e.getValue()));
++                nud.put(e.getKey(), new Hashtable<String, UserDataRecord>(e.getValue()));
+             }
+         }
+ 
+-        Hashtable<String, Node> ids = (identifiers == null)? null : new Hashtable<>(identifiers);
+-        Hashtable<Node, Integer> nt = (nodeTable == null)? null : new Hashtable<>(nodeTable);
++        Hashtable<String, Node> ids = (identifiers == null)? null : new Hashtable<String, Node>(identifiers);
++        Hashtable<Node, Integer> nt = (nodeTable == null)? null : new Hashtable<Node, Integer>(nodeTable);
+ 
+         // Write serialized fields
+         ObjectOutputStream.PutField pf = out.putFields();
+@@ -2858,13 +2858,13 @@
+ 
+         //convert Hashtables back to HashMaps
+         if (nud != null) {
+-            nodeUserData = new HashMap<>();
++            nodeUserData = new HashMap<Node, Map<String, UserDataRecord>>();
+             for (Map.Entry<Node, Hashtable<String, UserDataRecord>> e : nud.entrySet()) {
+-                nodeUserData.put(e.getKey(), new HashMap<>(e.getValue()));
++                nodeUserData.put(e.getKey(), new HashMap<String, UserDataRecord>(e.getValue()));
+             }
+         }
+ 
+-        if (ids != null) identifiers = new HashMap<>(ids);
+-        if (nt != null) nodeTable = new HashMap<>(nt);
++        if (ids != null) identifiers = new HashMap<String, Node>(ids);
++        if (nt != null) nodeTable = new HashMap<Node, Integer>(nt);
+     }
+ } // class CoreDocumentImpl
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/dom/DeferredDocumentImpl.java openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/dom/DeferredDocumentImpl.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/dom/DeferredDocumentImpl.java	2016-09-22 04:46:17.007708093 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/dom/DeferredDocumentImpl.java	2016-09-23 05:32:13.085910939 +0100
+@@ -2059,7 +2059,7 @@
+ 
+         // create Map
+         if (identifiers == null) {
+-            identifiers = new HashMap<>();
++            identifiers = new HashMap<String, Node>();
+         }
+ 
+         // save ID and its associated element
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/dom/DocumentImpl.java openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/dom/DocumentImpl.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/dom/DocumentImpl.java	2016-09-22 04:46:17.015707963 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/dom/DocumentImpl.java	2016-09-22 17:10:52.927297510 +0100
+@@ -249,7 +249,7 @@
+                                                      filter,
+                                                      entityReferenceExpansion);
+         if (iterators == null) {
+-            iterators = new ArrayList<>();
++            iterators = new ArrayList<NodeIterator>();
+         }
+ 
+         iterators.add(iterator);
+@@ -320,7 +320,7 @@
+     public Range createRange() {
+ 
+         if (ranges == null) {
+-            ranges = new ArrayList<>();
++            ranges = new ArrayList<Range>();
+         }
+ 
+         Range range = new RangeImpl(this);
+@@ -460,7 +460,7 @@
+      */
+     private void setEventListeners(NodeImpl n, List<LEntry> listeners) {
+         if (eventListeners == null) {
+-            eventListeners = new HashMap<>();
++            eventListeners = new HashMap<NodeImpl, List<LEntry>>();
+         }
+         if (listeners == null) {
+             eventListeners.remove(n);
+@@ -551,7 +551,7 @@
+ 
+         List<LEntry> nodeListeners = getEventListeners(node);
+         if(nodeListeners == null) {
+-            nodeListeners = new ArrayList<>();
++            nodeListeners = new ArrayList<LEntry>();
+             setEventListeners(node, nodeListeners);
+         }
+         nodeListeners.add(new LEntry(type, listener, useCapture));
+@@ -626,7 +626,7 @@
+         if (nodeListeners == null) {
+             return;
+         }
+-        setEventListeners(tgt, new ArrayList<>(nodeListeners));
++        setEventListeners(tgt, new ArrayList<LEntry>(nodeListeners));
+     }
+ 
+     /**
+@@ -716,7 +716,7 @@
+         // is issued to the Element rather than the Attr
+         // and causes a _second_ DOMSubtreeModified in the Element's
+         // tree.
+-        List<Node> pv = new ArrayList<>(10);
++        List<Node> pv = new ArrayList<Node>(10);
+         Node p = node;
+         Node n = p.getParentNode();
+         while (n != null) {
+@@ -1334,14 +1334,14 @@
+      */
+     private void writeObject(ObjectOutputStream out) throws IOException {
+         // Convert Maps to Hashtables, Lists to Vectors
+-        Vector<NodeIterator> it = (iterators == null)? null : new Vector<>(iterators);
+-        Vector<Range> r = (ranges == null)? null : new Vector<>(ranges);
++        Vector<NodeIterator> it = (iterators == null)? null : new Vector<NodeIterator>(iterators);
++        Vector<Range> r = (ranges == null)? null : new Vector<Range>(ranges);
+ 
+         Hashtable<NodeImpl, Vector<LEntry>> el = null;
+         if (eventListeners != null) {
+-            el = new Hashtable<>();
++            el = new Hashtable<NodeImpl, Vector<LEntry>>();
+             for (Map.Entry<NodeImpl, List<LEntry>> e : eventListeners.entrySet()) {
+-                 el.put(e.getKey(), new Vector<>(e.getValue()));
++                 el.put(e.getKey(), new Vector<LEntry>(e.getValue()));
+             }
+         }
+ 
+@@ -1367,12 +1367,12 @@
+         mutationEvents = gf.get("mutationEvents", false);
+ 
+         //convert Hashtables back to HashMaps and Vectors to Lists
+-        if (it != null) iterators = new ArrayList<>(it);
+-        if (r != null) ranges = new ArrayList<>(r);
++        if (it != null) iterators = new ArrayList<NodeIterator>(it);
++        if (r != null) ranges = new ArrayList<Range>(r);
+         if (el != null) {
+-            eventListeners = new HashMap<>();
++            eventListeners = new HashMap<NodeImpl, List<LEntry>>();
+             for (Map.Entry<NodeImpl, Vector<LEntry>> e : el.entrySet()) {
+-                 eventListeners.put(e.getKey(), new ArrayList<>(e.getValue()));
++                 eventListeners.put(e.getKey(), new ArrayList<LEntry>(e.getValue()));
+             }
+         }
+     }
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/dom/DocumentTypeImpl.java openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/dom/DocumentTypeImpl.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/dom/DocumentTypeImpl.java	2016-09-22 04:46:17.023707832 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/dom/DocumentTypeImpl.java	2016-09-22 17:21:12.669247609 +0100
+@@ -478,7 +478,7 @@
+     public Object setUserData(String key,
+     Object data, UserDataHandler handler) {
+         if(userData == null)
+-            userData = new HashMap<>();
++            userData = new HashMap<String, UserDataRecord>();
+         if (data == null) {
+             if (userData != null) {
+                 UserDataRecord udr = userData.remove(key);
+@@ -519,7 +519,7 @@
+      */
+     private void writeObject(ObjectOutputStream out) throws IOException {
+         // Convert the HashMap to Hashtable
+-        Hashtable<String, UserDataRecord> ud = (userData == null)? null : new Hashtable<>(userData);
++        Hashtable<String, UserDataRecord> ud = (userData == null)? null : new Hashtable<String, UserDataRecord>(userData);
+ 
+         // Write serialized fields
+         ObjectOutputStream.PutField pf = out.putFields();
+@@ -553,6 +553,6 @@
+                 (Hashtable<String, UserDataRecord>)gf.get("userData", null);
+ 
+         //convert the Hashtable back to HashMap
+-        if (ud != null) userData = new HashMap<>(ud);
++        if (ud != null) userData = new HashMap<String, UserDataRecord>(ud);
+     }
+ } // class DocumentTypeImpl
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/dom/LCount.java openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/dom/LCount.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/dom/LCount.java	2016-09-22 04:46:17.031707700 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/dom/LCount.java	2016-09-22 17:53:28.789831674 +0100
+@@ -37,7 +37,7 @@
+ 
+ class LCount
+ {
+-    static final java.util.Map<String, LCount> lCounts=new java.util.concurrent.ConcurrentHashMap<>();
++    static final java.util.Map<String, LCount> lCounts=new java.util.concurrent.ConcurrentHashMap<String, LCount>();
+     public int captures=0,bubbles=0,defaults, total=0;
+ 
+     static LCount lookup(String evtName)
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/impl/dtd/DTDGrammarBucket.java openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/impl/dtd/DTDGrammarBucket.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/impl/dtd/DTDGrammarBucket.java	2016-09-22 04:46:17.039707571 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/impl/dtd/DTDGrammarBucket.java	2016-09-22 17:53:17.318018087 +0100
+@@ -62,7 +62,7 @@
+ 
+     /** Default constructor. */
+     public DTDGrammarBucket() {
+-        fGrammars = new HashMap<>();
++        fGrammars = new HashMap<XMLDTDDescription, DTDGrammar>();
+     } // <init>()
+ 
+     //
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/impl/dtd/DTDGrammar.java openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/impl/dtd/DTDGrammar.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/impl/dtd/DTDGrammar.java	2016-09-22 04:46:17.047707441 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/impl/dtd/DTDGrammar.java	2016-09-22 17:19:52.022554392 +0100
+@@ -210,13 +210,13 @@
+     // other information
+ 
+     /** Element index mapping table. */
+-    private final Map<String, Integer> fElementIndexMap = new HashMap<>();
++    private final Map<String, Integer> fElementIndexMap = new HashMap<String, Integer>();
+ 
+     /** Entity index mapping table. */
+-    private final Map<String, Integer> fEntityIndexMap = new HashMap<>();
++    private final Map<String, Integer> fEntityIndexMap = new HashMap<String, Integer>();
+ 
+     /** Notation index mapping table. */
+-    private final Map<String, Integer> fNotationIndexMap = new HashMap<>();
++    private final Map<String, Integer> fNotationIndexMap = new HashMap<String, Integer>();
+ 
+     // temp variables
+ 
+@@ -250,7 +250,7 @@
+     private XMLContentSpec fContentSpec = new XMLContentSpec();
+ 
+     /** table of XMLElementDecl   */
+-    Map<String, XMLElementDecl> fElementDeclTab = new HashMap<>();
++    Map<String, XMLElementDecl> fElementDeclTab = new HashMap<String, XMLElementDecl>();
+ 
+     /** Children content model operation stack. */
+     private short[] fOpStack = null;
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/impl/dv/dtd/DTDDVFactoryImpl.java openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/impl/dv/dtd/DTDDVFactoryImpl.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/impl/dv/dtd/DTDDVFactoryImpl.java	2016-09-22 04:46:17.059707245 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/impl/dv/dtd/DTDDVFactoryImpl.java	2016-09-22 17:53:00.842285812 +0100
+@@ -38,7 +38,7 @@
+ 
+     static final Map<String, DatatypeValidator> fBuiltInTypes;
+     static {
+-        Map<String, DatatypeValidator> builtInTypes = new HashMap<>();
++        Map<String, DatatypeValidator> builtInTypes = new HashMap<String, DatatypeValidator>();
+         DatatypeValidator dvTemp;
+ 
+         builtInTypes.put("string", new StringDatatypeValidator());
+@@ -75,7 +75,7 @@
+      */
+     @Override
+     public Map<String, DatatypeValidator> getBuiltInTypes() {
+-        return new HashMap<>(fBuiltInTypes);
++        return new HashMap<String, DatatypeValidator>(fBuiltInTypes);
+     }
+ 
+ }// DTDDVFactoryImpl
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/impl/dv/dtd/XML11DTDDVFactoryImpl.java openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/impl/dv/dtd/XML11DTDDVFactoryImpl.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/impl/dv/dtd/XML11DTDDVFactoryImpl.java	2016-09-22 04:46:17.067707115 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/impl/dv/dtd/XML11DTDDVFactoryImpl.java	2016-09-22 17:40:39.778319730 +0100
+@@ -37,7 +37,7 @@
+ 
+     static Map<String, DatatypeValidator> XML11BUILTINTYPES;
+     static {
+-        Map<String, DatatypeValidator> xml11BuiltInTypes = new HashMap<>();
++        Map<String, DatatypeValidator> xml11BuiltInTypes = new HashMap<String, DatatypeValidator>();
+         xml11BuiltInTypes.put("XML11ID", new XML11IDDatatypeValidator());
+         DatatypeValidator dvTemp = new XML11IDREFDatatypeValidator();
+         xml11BuiltInTypes.put("XML11IDREF", dvTemp);
+@@ -72,7 +72,7 @@
+      */
+     @Override
+     public Map<String, DatatypeValidator> getBuiltInTypes() {
+-        final HashMap<String, DatatypeValidator> toReturn = new HashMap<>(fBuiltInTypes);
++        final HashMap<String, DatatypeValidator> toReturn = new HashMap<String, DatatypeValidator>(fBuiltInTypes);
+         toReturn.putAll(XML11BUILTINTYPES);
+         return toReturn;
+     }
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLEntityManager.java openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLEntityManager.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLEntityManager.java	2016-09-22 04:46:17.079706919 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLEntityManager.java	2016-09-22 17:52:28.890805002 +0100
+@@ -364,7 +364,7 @@
+     // entities
+ 
+     /** Entities. */
+-    protected Map<String, Entity> fEntities = new HashMap<>();
++    protected Map<String, Entity> fEntities = new HashMap<String, Entity>();
+ 
+     /** Entity stack. */
+     protected Stack fEntityStack = new Stack();
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLErrorReporter.java openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLErrorReporter.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLErrorReporter.java	2016-09-22 04:46:17.083706853 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLErrorReporter.java	2016-09-22 17:52:43.794562827 +0100
+@@ -192,7 +192,7 @@
+         //       caller to specify the location of the error being
+         //       reported. -Ac
+ 
+-        fMessageFormatters = new HashMap<>();
++        fMessageFormatters = new HashMap<String, MessageFormatter>();
+ 
+     } // <init>()
+ 
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/impl/xpath/regex/ParserForXMLSchema.java openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/impl/xpath/regex/ParserForXMLSchema.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/impl/xpath/regex/ParserForXMLSchema.java	2016-09-22 04:46:17.091706723 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/impl/xpath/regex/ParserForXMLSchema.java	2016-09-22 17:40:14.814724872 +0100
+@@ -374,8 +374,8 @@
+     static private Map<String, Token> ranges2 = null;
+     static synchronized protected RangeToken getRange(String name, boolean positive) {
+         if (ranges == null) {
+-            ranges = new HashMap<>();
+-            ranges2 = new HashMap<>();
++            ranges = new HashMap<String, Token>();
++            ranges2 = new HashMap<String, Token>();
+ 
+             Token tok = Token.createRange();
+             setupRange(tok, SPACES);
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/impl/xpath/regex/Token.java openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/impl/xpath/regex/Token.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/impl/xpath/regex/Token.java	2016-09-22 04:46:17.099706593 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/impl/xpath/regex/Token.java	2016-09-22 17:15:52.546433848 +0100
+@@ -593,8 +593,8 @@
+     }
+ 
+     // ------------------------------------------------------
+-    private final static Map<String, Token> categories = new HashMap<>();
+-    private final static Map<String, Token> categories2 = new HashMap<>();
++    private final static Map<String, Token> categories = new HashMap<String, Token>();
++    private final static Map<String, Token> categories2 = new HashMap<String, Token>();
+     private static final String[] categoryNames = {
+         "Cn", "Lu", "Ll", "Lt", "Lm", "Lo", "Mn", "Me", "Mc", "Nd",
+         "Nl", "No", "Zs", "Zl", "Zp", "Cc", "Cf", null, "Co", "Cs",
+@@ -1445,7 +1445,7 @@
+         @Override
+         void addChild(Token tok) {
+             if (tok == null)  return;
+-            if (this.children == null)  this.children = new ArrayList<>();
++            if (this.children == null)  this.children = new ArrayList<Token>();
+             if (this.type == UNION) {
+                 this.children.add(tok);
+                 return;
+@@ -1524,7 +1524,7 @@
+                 } else {
+                     StringBuilder sb = new StringBuilder();
+                     for (int i = 0;  i < this.children.size();  i ++) {
+-                        sb.append(((Token)this.children.get(i)).toString(options));
++                        sb.append(this.children.get(i).toString(options));
+                     }
+                     ret = new String(sb);
+                 }
+@@ -1552,7 +1552,7 @@
+          */
+         private void writeObject(ObjectOutputStream out) throws IOException {
+             // Convert List to Vector
+-            Vector<Token> vChildren = (children == null)? null : new Vector<>(children);
++            Vector<Token> vChildren = (children == null)? null : new Vector<Token>(children);
+ 
+             // Write serialized fields
+             ObjectOutputStream.PutField pf = out.putFields();
+@@ -1568,7 +1568,7 @@
+             Vector<Token> vChildren = (Vector<Token>)gf.get("children", null);
+ 
+             //convert Vector back to List
+-            if (vChildren != null) children = new ArrayList<>(vChildren);
++            if (vChildren != null) children = new ArrayList<Token>(vChildren);
+         }
+     }
+ }
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/impl/xpath/XPath.java openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/impl/xpath/XPath.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/impl/xpath/XPath.java	2016-09-22 04:46:17.107706461 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/impl/xpath/XPath.java	2016-09-22 17:39:59.230977780 +0100
+@@ -859,10 +859,10 @@
+         private SymbolTable fSymbolTable;
+ 
+         // REVISIT: Code something better here. -Ac
+-        private Map<String, Integer> fSymbolMapping = new HashMap<>();
++        private Map<String, Integer> fSymbolMapping = new HashMap<String, Integer>();
+ 
+         // REVISIT: Code something better here. -Ac
+-        private Map<Integer, String> fTokenNames = new HashMap<>();
++        private Map<Integer, String> fTokenNames = new HashMap<Integer, String>();
+ 
+         /**
+          * Current position in the token list.
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/SubstitutionGroupHandler.java openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/SubstitutionGroupHandler.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/SubstitutionGroupHandler.java	2016-09-22 04:46:17.115706331 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/SubstitutionGroupHandler.java	2016-09-22 17:39:42.775244834 +0100
+@@ -176,10 +176,10 @@
+     // - a Vector, which contains all elements that has this element as their
+     //   substitution group affilication
+     // - an array of OneSubGroup, which contains its substitution group before block.
+-    Map<XSElementDecl, Object> fSubGroupsB = new HashMap<>();
++    Map<XSElementDecl, Object> fSubGroupsB = new HashMap<XSElementDecl, Object>();
+     private static final OneSubGroup[] EMPTY_VECTOR = new OneSubGroup[0];
+     // The real substitution groups (after "block")
+-    Map<XSElementDecl, XSElementDecl[]> fSubGroups = new HashMap<>();
++    Map<XSElementDecl, XSElementDecl[]> fSubGroups = new HashMap<XSElementDecl, XSElementDecl[]>();
+ 
+     /**
+      * clear the internal registry of substitutionGroup information
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/traversers/XSDHandler.java openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/traversers/XSDHandler.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/traversers/XSDHandler.java	2016-09-22 04:46:17.123706201 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/traversers/XSDHandler.java	2016-09-22 17:52:13.083061864 +0100
+@@ -467,7 +467,7 @@
+ 
+     // Constructors
+     public XSDHandler(){
+-        fHiddenNodes = new HashMap<>();
++        fHiddenNodes = new HashMap<Node, String>();
+         fSchemaParser = new SchemaDOMParser(new SchemaParsingConfig());
+     }
+ 
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/XMLSchemaValidator.java openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/XMLSchemaValidator.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/XMLSchemaValidator.java	2016-09-22 04:46:17.135706005 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/impl/xs/XMLSchemaValidator.java	2016-09-22 17:19:18.235101828 +0100
+@@ -489,7 +489,8 @@
+ 
+     /** Schema Grammar Description passed,  to give a chance to application to supply the Grammar */
+     protected final XSDDescription fXSDDescription = new XSDDescription();
+-    protected final Map<String, XMLSchemaLoader.LocationArray> fLocationPairs = new HashMap<>();
++    protected final Map<String, XMLSchemaLoader.LocationArray> fLocationPairs =
++	new HashMap<String, XMLSchemaLoader.LocationArray>();
+ 
+ 
+     // handlers
+@@ -3991,7 +3992,7 @@
+          * elements.
+          */
+         protected final Map<LocalIDKey, ValueStoreBase>
+-                fIdentityConstraint2ValueStoreMap = new HashMap<>();
++	    fIdentityConstraint2ValueStoreMap = new HashMap<LocalIDKey, ValueStoreBase>();
+ 
+         // sketch of algorithm:
+         // - when a constraint is first encountered, its
+@@ -4013,9 +4014,9 @@
+         // the fGlobalIDConstraintMap contains descendants+self.
+         // keyrefs can only match descendants+self.
+         protected final Stack<Map<IdentityConstraint, ValueStoreBase>>
+-                fGlobalMapStack = new Stack<>();
++	    fGlobalMapStack = new Stack<Map<IdentityConstraint, ValueStoreBase>>();
+         protected final Map<IdentityConstraint, ValueStoreBase>
+-                fGlobalIDConstraintMap = new HashMap<>();
++	    fGlobalIDConstraintMap = new HashMap<IdentityConstraint, ValueStoreBase>();
+ 
+         //
+         // Constructors
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/DocumentBuilderFactoryImpl.java openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/DocumentBuilderFactoryImpl.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/DocumentBuilderFactoryImpl.java	2016-09-22 04:46:17.147705809 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/DocumentBuilderFactoryImpl.java	2016-09-22 17:34:31.424296664 +0100
+@@ -102,7 +102,7 @@
+ 
+         // Create the Map if none existed before
+         if (attributes == null) {
+-            attributes = new HashMap<>();
++            attributes = new HashMap<String, Object>();
+         }
+ 
+         attributes.put(name, value);
+@@ -191,7 +191,7 @@
+     public void setFeature(String name, boolean value)
+         throws ParserConfigurationException {
+         if (features == null) {
+-            features = new HashMap<>();
++            features = new HashMap<String, Boolean>();
+         }
+         // If this is the secure processing feature, save it then return.
+         if (name.equals(XMLConstants.FEATURE_SECURE_PROCESSING)) {
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/SAXParserFactoryImpl.java openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/SAXParserFactoryImpl.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/SAXParserFactoryImpl.java	2016-09-22 04:46:17.151705743 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/SAXParserFactoryImpl.java	2016-09-22 17:51:44.163531776 +0100
+@@ -186,7 +186,7 @@
+ 
+     private void putInFeatures(String name, boolean value){
+          if (features == null) {
+-            features = new HashMap<>();
++	     features = new HashMap<String, Boolean>();
+         }
+         features.put(name, value ? Boolean.TRUE : Boolean.FALSE);
+     }
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/parsers/XMLGrammarPreparser.java openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/parsers/XMLGrammarPreparser.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/parsers/XMLGrammarPreparser.java	2016-09-22 04:46:17.159705613 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/parsers/XMLGrammarPreparser.java	2016-09-22 17:34:01.424783321 +0100
+@@ -85,7 +85,7 @@
+     private static final Map<String, String> KNOWN_LOADERS;
+ 
+     static {
+-        Map<String, String> loaders = new HashMap<>();
++        Map<String, String> loaders = new HashMap<String, String>();
+         loaders.put(XMLGrammarDescription.XML_SCHEMA,
+             "com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader");
+         loaders.put(XMLGrammarDescription.XML_DTD,
+@@ -130,7 +130,7 @@
+     public XMLGrammarPreparser (SymbolTable symbolTable) {
+         fSymbolTable = symbolTable;
+ 
+-        fLoaders = new HashMap<>();
++        fLoaders = new HashMap<String, XMLGrammarLoader>();
+         fErrorReporter = new XMLErrorReporter();
+         setLocale(Locale.getDefault());
+         fEntityResolver = new XMLEntityManager();
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/util/AugmentationsImpl.java openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/util/AugmentationsImpl.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/util/AugmentationsImpl.java	2016-09-22 04:46:17.163705547 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/util/AugmentationsImpl.java	2016-09-22 17:51:15.775993036 +0100
+@@ -241,7 +241,7 @@
+     }
+ 
+     class LargeContainer extends AugmentationsItemsContainer {
+-        final Map<Object, Object> fAugmentations = new HashMap<>();
++        final Map<Object, Object> fAugmentations = new HashMap<Object, Object>();
+ 
+         public Object getItem(Object key) {
+             return fAugmentations.get(key);
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/util/DOMErrorHandlerWrapper.java openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/util/DOMErrorHandlerWrapper.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/util/DOMErrorHandlerWrapper.java	2016-09-22 04:46:17.171705417 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/util/DOMErrorHandlerWrapper.java	2016-09-22 17:51:05.584158638 +0100
+@@ -294,7 +294,7 @@
+ 
+             // REVISIT: do well-formedness issues involving XML declaration <?xml ... ?> need to be added to hash table (no XML declaration node in DOM, but Document includes xmlEncoding, xmlStandalone, xmlVersion, etc.
+ 
+-            Map<XMLErrorCode, String> aDOMErrorTypeTable = new HashMap<>();
++            Map<XMLErrorCode, String> aDOMErrorTypeTable = new HashMap<XMLErrorCode, String>();
+             aDOMErrorTypeTable.put(new XMLErrorCode(XMLMessageFormatter.XML_DOMAIN, "InvalidCharInCDSect"), "wf-invalid-character");
+             aDOMErrorTypeTable.put(new XMLErrorCode(XMLMessageFormatter.XML_DOMAIN, "InvalidCharInContent"), "wf-invalid-character");
+             aDOMErrorTypeTable.put(new XMLErrorCode(XMLMessageFormatter.XML_DOMAIN, "TwoColonsInQName"), "wf-invalid-character-in-node-name");
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/util/EncodingMap.java openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/util/EncodingMap.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/util/EncodingMap.java	2016-09-22 04:46:17.175705353 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/util/EncodingMap.java	2016-09-22 17:33:32.737248677 +0100
+@@ -489,8 +489,8 @@
+     //
+ 
+     static {
+-        Map<String, String> aIANA2JavaMap = new HashMap<>();
+-        Map<String, String> aJava2IANAMap = new HashMap<>();
++        Map<String, String> aIANA2JavaMap = new HashMap<String, String>();
++        Map<String, String> aJava2IANAMap = new HashMap<String, String>();
+ 
+         // add IANA to Java encoding mappings.
+         aIANA2JavaMap.put("BIG5",            "Big5");
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLLimitAnalyzer.java openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLLimitAnalyzer.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLLimitAnalyzer.java	2016-09-22 04:46:17.187705157 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLLimitAnalyzer.java	2016-09-22 17:50:48.960428747 +0100
+@@ -144,7 +144,7 @@
+ 
+         Map<String, Integer> cache;
+         if (caches[index] == null) {
+-            cache = new HashMap<>(10);
++            cache = new HashMap<String, Integer>(10);
+             caches[index] = cache;
+         } else {
+             cache = caches[index];
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/dtm/ref/CustomStringPool.java openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/dtm/ref/CustomStringPool.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/dtm/ref/CustomStringPool.java	2016-09-22 04:46:17.199704961 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/dtm/ref/CustomStringPool.java	2016-09-22 17:50:19.216912026 +0100
+@@ -47,7 +47,7 @@
+  */
+ public class CustomStringPool extends DTMStringPool {
+ 
+-    final Map<String, Integer> m_stringToInt = new HashMap<>();
++    final Map<String, Integer> m_stringToInt = new HashMap<String, Integer>();
+     public static final int NULL = -1;
+ 
+     public CustomStringPool() {
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/dtm/ref/sax2dtm/SAX2DTM.java openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/dtm/ref/sax2dtm/SAX2DTM.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/dtm/ref/sax2dtm/SAX2DTM.java	2016-09-22 04:46:17.211704765 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/dtm/ref/sax2dtm/SAX2DTM.java	2016-09-22 17:50:09.513069694 +0100
+@@ -162,7 +162,7 @@
+    * This table holds the ID string to node associations, for
+    * XML IDs.
+    */
+-  protected Map<String, Integer> m_idAttributes = new HashMap<>();
++  protected Map<String, Integer> m_idAttributes = new HashMap<String, Integer>();
+ 
+   /**
+    * fixed dom-style names.
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/resolver/CatalogEntry.java openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/resolver/CatalogEntry.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/resolver/CatalogEntry.java	2016-09-22 04:46:17.219704635 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/resolver/CatalogEntry.java	2016-09-22 17:49:56.073288063 +0100
+@@ -59,7 +59,7 @@
+    * (e.g., 'BASE' or 'SYSTEM') to their type (1, 2, etc.).
+    * Names are case sensitive.
+    */
+-  protected static final Map<String, Integer> entryTypes = new ConcurrentHashMap<>();
++  protected static final Map<String, Integer> entryTypes = new ConcurrentHashMap<String, Integer>();
+ 
+   /** The entryTypes vector maps catalog entry types to the
+       number of arguments they're required to have. */
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/resolver/Catalog.java openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/resolver/Catalog.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/resolver/Catalog.java	2016-09-22 04:46:17.227704503 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/resolver/Catalog.java	2016-09-22 17:49:46.081450408 +0100
+@@ -341,7 +341,7 @@
+    * vector. This allows the Catalog to quickly locate the reader
+    * for a particular MIME type.</p>
+    */
+-  protected Map<String, Integer> readerMap = new HashMap<>();
++  protected Map<String, Integer> readerMap = new HashMap<String, Integer>();
+ 
+   /**
+    * A vector of CatalogReaders.
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/resolver/helpers/BootstrapResolver.java openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/resolver/helpers/BootstrapResolver.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/resolver/helpers/BootstrapResolver.java	2016-09-22 04:46:17.231704439 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/resolver/helpers/BootstrapResolver.java	2016-09-22 17:20:17.438142580 +0100
+@@ -63,13 +63,13 @@
+   public static final String xmlCatalogSysId = "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd";
+ 
+   /** Private hash used for public identifiers. */
+-  private final Map<String, String> publicMap = new HashMap<>();
++  private final Map<String, String> publicMap = new HashMap<String, String>();
+ 
+   /** Private hash used for system identifiers. */
+-  private final Map<String, String> systemMap = new HashMap<>();
++  private final Map<String, String> systemMap = new HashMap<String, String>();
+ 
+   /** Private hash used for URIs. */
+-  private final Map<String, String> uriMap = new HashMap<>();
++  private final Map<String, String> uriMap = new HashMap<String, String>();
+ 
+   /** Constructor. */
+   public BootstrapResolver() {
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/resolver/readers/DOMCatalogReader.java openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/resolver/readers/DOMCatalogReader.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/resolver/readers/DOMCatalogReader.java	2016-09-22 04:46:17.239704307 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/resolver/readers/DOMCatalogReader.java	2016-09-22 17:49:25.113791083 +0100
+@@ -78,7 +78,7 @@
+    * or "{namespaceuri}elementname". The former is used if the
+    * namespace URI is null.</p>
+    */
+-  protected Map<String, String> namespaceMap = new HashMap<>();
++  protected Map<String, String> namespaceMap = new HashMap<String, String>();
+ 
+   /**
+    * Add a new parser to the reader.
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/resolver/readers/SAXCatalogReader.java openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/resolver/readers/SAXCatalogReader.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/resolver/readers/SAXCatalogReader.java	2016-09-22 04:46:17.251704113 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/resolver/readers/SAXCatalogReader.java	2016-09-22 17:49:34.489638748 +0100
+@@ -89,7 +89,7 @@
+      * or "{namespaceuri}elementname". The former is used if the
+      * namespace URI is null.</p>
+      */
+-  protected Map<String, String> namespaceMap = new HashMap<>();
++  protected Map<String, String> namespaceMap = new HashMap<String, String>();
+ 
+   /** The parser in use for the current catalog. */
+   private SAXCatalogParser saxParser = null;
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/serialize/BaseMarkupSerializer.java openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/serialize/BaseMarkupSerializer.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/serialize/BaseMarkupSerializer.java	2016-09-22 04:46:17.255704047 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/serialize/BaseMarkupSerializer.java	2016-09-22 17:43:08.375907861 +0100
+@@ -820,7 +820,7 @@
+         throws SAXException
+     {
+         if ( _prefixes == null )
+-            _prefixes = new HashMap<>();
++            _prefixes = new HashMap<String, String>();
+         _prefixes.put( uri, prefix == null ? "" : prefix );
+     }
+ 
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/serialize/HTMLdtd.java openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/serialize/HTMLdtd.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/serialize/HTMLdtd.java	2016-09-22 04:46:17.263703917 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/serialize/HTMLdtd.java	2016-09-22 17:17:12.737134942 +0100
+@@ -371,8 +371,8 @@
+         if ( _byName != null )
+             return;
+         try {
+-            _byName = new HashMap<>();
+-            _byChar = new HashMap<>();
++            _byName = new HashMap<String, Integer>();
++            _byChar = new HashMap<Integer, String>();
+             is = HTMLdtd.class.getResourceAsStream( ENTITIES_RESOURCE );
+             if ( is == null ) {
+                 throw new RuntimeException(
+@@ -471,7 +471,7 @@
+ 
+     static
+     {
+-        _elemDefs = new HashMap<>();
++        _elemDefs = new HashMap<String, Integer>();
+         defineElement( "ADDRESS", CLOSE_P );
+         defineElement( "AREA", EMPTY );
+         defineElement( "BASE",  EMPTY | ALLOWED_HEAD );
+@@ -525,7 +525,7 @@
+         defineElement( "TR", ELEM_CONTENT | OPT_CLOSING | CLOSE_TABLE );
+         defineElement( "UL", ELEM_CONTENT | CLOSE_P );
+ 
+-        _boolAttrs = new HashMap<>();
++        _boolAttrs = new HashMap<String, String[]>();
+         defineBoolean( "AREA", "href" );
+         defineBoolean( "BUTTON", "disabled" );
+         defineBoolean( "DIR", "compact" );
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/serializer/AttributesImplSerializer.java openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/serializer/AttributesImplSerializer.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/serializer/AttributesImplSerializer.java	2016-09-22 04:46:17.271703785 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/serializer/AttributesImplSerializer.java	2016-09-22 17:42:43.616309759 +0100
+@@ -48,7 +48,7 @@
+      * The keys to the hashtable to find the index are either
+      * "prefix:localName"  or "{uri}localName".
+      */
+-    private final Map<String, Integer> m_indexFromQName = new HashMap<>();
++    private final Map<String, Integer> m_indexFromQName = new HashMap<String, Integer>();
+ 
+     private final StringBuffer m_buff = new StringBuffer();
+ 
 diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/serializer/Encodings.java openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/serializer/Encodings.java
---- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/serializer/Encodings.java	2015-09-08 10:42:12.326246207 +0100
-+++ openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/serializer/Encodings.java	2015-09-08 10:49:08.170659672 +0100
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/serializer/Encodings.java	2016-09-21 06:14:42.755430296 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/serializer/Encodings.java	2016-09-21 06:38:08.152139860 +0100
 @@ -297,8 +297,8 @@
      //
      private final static class EncodingInfos {
@@ -90,9 +1523,156 @@
                  while (keys.hasMoreElements()) {
                      final String javaName = (String) keys.nextElement();
                      final String[] mimes = parseMimeTypes(props.getProperty(javaName));
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/utils/DOMHelper.java openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/utils/DOMHelper.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/utils/DOMHelper.java	2016-09-22 04:46:17.279703656 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/utils/DOMHelper.java	2016-09-22 17:42:30.992514664 +0100
+@@ -563,7 +563,7 @@
+   /**
+    * An experiment for the moment.
+    */
+-  Map<Node, NSInfo> m_NSInfos = new HashMap<>();
++  Map<Node, NSInfo> m_NSInfos = new HashMap<Node, NSInfo>();
+ 
+   /** Object to put into the m_NSInfos table that tells that a node has not been
+    *  processed, but has xmlns namespace decls.  */
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/utils/ElemDesc.java openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/utils/ElemDesc.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xml/internal/utils/ElemDesc.java	2016-09-22 04:46:17.287703526 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xml/internal/utils/ElemDesc.java	2016-09-22 17:42:20.992676976 +0100
+@@ -159,7 +159,7 @@
+   {
+ 
+     if (null == m_attrs)
+-      m_attrs = new HashMap<>();
++	m_attrs = new HashMap<String, Integer>();
+ 
+     m_attrs.put(name, flags);
+   }
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/org/apache/xpath/internal/compiler/Keywords.java openjdk-boot/jaxp/src/com/sun/org/apache/xpath/internal/compiler/Keywords.java
+--- openjdk-boot.orig/jaxp/src/com/sun/org/apache/xpath/internal/compiler/Keywords.java	2016-09-22 04:46:17.295703395 +0100
++++ openjdk-boot/jaxp/src/com/sun/org/apache/xpath/internal/compiler/Keywords.java	2016-09-22 17:16:24.129922288 +0100
+@@ -333,10 +333,10 @@
+     public static final String FUNC_DOCLOCATION_STRING = "document-location";
+ 
+     static {
+-        Map<String, Integer> keywords = new HashMap<>();
+-        Map<String, Integer> axisnames = new HashMap<>();
+-        Map<String, Integer> nodetests = new HashMap<>();
+-        Map<String, Integer> nodetypes = new HashMap<>();
++        Map<String, Integer> keywords = new HashMap<String, Integer>();
++        Map<String, Integer> axisnames = new HashMap<String, Integer>();
++        Map<String, Integer> nodetests = new HashMap<String, Integer>();
++        Map<String, Integer> nodetypes = new HashMap<String, Integer>();
+ 
+         axisnames.put(FROM_ANCESTORS_STRING, OpCodes.FROM_ANCESTORS);
+         axisnames.put(FROM_ANCESTORS_OR_SELF_STRING, OpCodes.FROM_ANCESTORS_OR_SELF);
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/xml/internal/stream/dtd/nonvalidating/DTDGrammar.java openjdk-boot/jaxp/src/com/sun/xml/internal/stream/dtd/nonvalidating/DTDGrammar.java
+--- openjdk-boot.orig/jaxp/src/com/sun/xml/internal/stream/dtd/nonvalidating/DTDGrammar.java	2016-09-22 04:46:17.319703003 +0100
++++ openjdk-boot/jaxp/src/com/sun/xml/internal/stream/dtd/nonvalidating/DTDGrammar.java	2016-09-22 17:33:11.401594764 +0100
+@@ -140,7 +140,7 @@
+     private int fAttributeDeclNextAttributeDeclIndex[][] = new int[INITIAL_CHUNK_COUNT][];
+ 
+     /** Element index mapping table. */
+-    private final Map<String, Integer> fElementIndexMap = new HashMap<>();
++    private final Map<String, Integer> fElementIndexMap = new HashMap<String, Integer>();
+ 
+     /** Temporary qualified name. */
+     private final QName fQName = new QName();
+@@ -156,7 +156,7 @@
+ 
+ 
+     /** table of XMLElementDecl   */
+-    Map<String, XMLElementDecl> fElementDeclTab = new HashMap<>();
++    Map<String, XMLElementDecl> fElementDeclTab = new HashMap<String, XMLElementDecl>();
+ 
+     /** Default constructor. */
+     public DTDGrammar(SymbolTable symbolTable) {
+diff -Nru openjdk-boot.orig/jaxp/src/com/sun/xml/internal/stream/XMLEntityStorage.java openjdk-boot/jaxp/src/com/sun/xml/internal/stream/XMLEntityStorage.java
+--- openjdk-boot.orig/jaxp/src/com/sun/xml/internal/stream/XMLEntityStorage.java	2016-09-22 04:46:17.327702874 +0100
++++ openjdk-boot/jaxp/src/com/sun/xml/internal/stream/XMLEntityStorage.java	2016-09-22 17:41:59.905019253 +0100
+@@ -63,7 +63,7 @@
+     protected boolean fWarnDuplicateEntityDef;
+ 
+     /** Entities. */
+-    protected Map<String, Entity> fEntities = new HashMap<>();
++    protected Map<String, Entity> fEntities = new HashMap<String, Entity>();
+ 
+     protected Entity.ScannedEntity fCurrentEntity ;
+ 
+diff -Nru openjdk-boot.orig/jaxp/src/org/xml/sax/helpers/NamespaceSupport.java openjdk-boot/jaxp/src/org/xml/sax/helpers/NamespaceSupport.java
+--- openjdk-boot.orig/jaxp/src/org/xml/sax/helpers/NamespaceSupport.java	2016-09-22 04:46:17.335702743 +0100
++++ openjdk-boot/jaxp/src/org/xml/sax/helpers/NamespaceSupport.java	2016-09-22 04:53:28.408671584 +0100
+@@ -465,7 +465,7 @@
+      */
+     public Enumeration getPrefixes (String uri)
+     {
+-        List<String> prefixes = new ArrayList<>();
++        List<String> prefixes = new ArrayList<String>();
+         Enumeration allPrefixes = getPrefixes();
+         while (allPrefixes.hasMoreElements()) {
+             String prefix = (String)allPrefixes.nextElement();
+@@ -621,7 +621,7 @@
+                 copyTables();
+             }
+             if (declarations == null) {
+-                declarations = new ArrayList<>();
++                declarations = new ArrayList<String>();
+             }
+ 
+             prefix = prefix.intern();
+@@ -703,7 +703,7 @@
+                 if ("".equals(prefix)) {
+                     uri = defaultNS;
+                 } else {
+-                    uri = (String)prefixTable.get(prefix);
++                    uri = prefixTable.get(prefix);
+                 }
+                 if (uri == null
+                         || (!isAttribute && "xmlns".equals (prefix))) {
+@@ -735,7 +735,7 @@
+             } else if (prefixTable == null) {
+                 return null;
+             } else {
+-                return (String)prefixTable.get(prefix);
++                return prefixTable.get(prefix);
+             }
+         }
+ 
+@@ -755,7 +755,7 @@
+             if (uriTable == null) {
+                 return null;
+             } else {
+-                return (String)uriTable.get(uri);
++                return uriTable.get(uri);
+             }
+         }
+ 
+@@ -809,17 +809,17 @@
+         private void copyTables ()
+         {
+             if (prefixTable != null) {
+-                prefixTable = new HashMap<>(prefixTable);
++                prefixTable = new HashMap<String, String>(prefixTable);
+             } else {
+-                prefixTable = new HashMap<>();
++                prefixTable = new HashMap<String, String>();
+             }
+             if (uriTable != null) {
+-                uriTable = new HashMap<>(uriTable);
++                uriTable = new HashMap<String, String>(uriTable);
+             } else {
+-                uriTable = new HashMap<>();
++                uriTable = new HashMap<String, String>();
+             }
+-            elementNameTable = new HashMap<>();
+-            attributeNameTable = new HashMap<>();
++            elementNameTable = new HashMap<String, String[]>();
++            attributeNameTable = new HashMap<String, String[]>();
+             declSeen = true;
+         }
+ 
 diff -Nru openjdk-boot.orig/jdk/src/macosx/bundle/appbundler/src/com/oracle/appbundler/AppBundlerTask.java openjdk-boot/jdk/src/macosx/bundle/appbundler/src/com/oracle/appbundler/AppBundlerTask.java
---- openjdk-boot.orig/jdk/src/macosx/bundle/appbundler/src/com/oracle/appbundler/AppBundlerTask.java	2015-09-08 10:59:12.811712492 +0100
-+++ openjdk-boot/jdk/src/macosx/bundle/appbundler/src/com/oracle/appbundler/AppBundlerTask.java	2015-09-08 11:02:33.908091482 +0100
+--- openjdk-boot.orig/jdk/src/macosx/bundle/appbundler/src/com/oracle/appbundler/AppBundlerTask.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/macosx/bundle/appbundler/src/com/oracle/appbundler/AppBundlerTask.java	2016-09-21 06:38:08.152139860 +0100
 @@ -68,10 +68,10 @@
      // JVM info properties
      private File runtime = null;
@@ -109,8 +1689,8 @@
      public static final String EXECUTABLE_NAME = "JavaAppLauncher";
      public static final String DEFAULT_ICON_NAME = "GenericApp.icns";
 diff -Nru openjdk-boot.orig/jdk/src/macosx/classes/com/apple/laf/AquaPainter.java openjdk-boot/jdk/src/macosx/classes/com/apple/laf/AquaPainter.java
---- openjdk-boot.orig/jdk/src/macosx/classes/com/apple/laf/AquaPainter.java	2015-09-08 10:59:12.827712204 +0100
-+++ openjdk-boot/jdk/src/macosx/classes/com/apple/laf/AquaPainter.java	2015-09-08 11:04:42.805775341 +0100
+--- openjdk-boot.orig/jdk/src/macosx/classes/com/apple/laf/AquaPainter.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/macosx/classes/com/apple/laf/AquaPainter.java	2016-09-21 06:38:08.152139860 +0100
 @@ -41,7 +41,7 @@
  
  abstract class AquaPainter <T extends JRSUIState> {
@@ -139,8 +1719,8 @@
  
          @Override
 diff -Nru openjdk-boot.orig/jdk/src/macosx/classes/com/apple/laf/AquaUtils.java openjdk-boot/jdk/src/macosx/classes/com/apple/laf/AquaUtils.java
---- openjdk-boot.orig/jdk/src/macosx/classes/com/apple/laf/AquaUtils.java	2015-09-08 10:59:12.839711988 +0100
-+++ openjdk-boot/jdk/src/macosx/classes/com/apple/laf/AquaUtils.java	2015-09-08 11:04:02.974490668 +0100
+--- openjdk-boot.orig/jdk/src/macosx/classes/com/apple/laf/AquaUtils.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/macosx/classes/com/apple/laf/AquaUtils.java	2016-09-21 06:38:08.152139860 +0100
 @@ -210,7 +210,7 @@
          private Map<K, V> refs;
  
@@ -151,8 +1731,8 @@
              final V cachedValue = refs.get(key);
              if (cachedValue != null) return cachedValue;
 diff -Nru openjdk-boot.orig/jdk/src/macosx/classes/com/apple/laf/ImageCache.java openjdk-boot/jdk/src/macosx/classes/com/apple/laf/ImageCache.java
---- openjdk-boot.orig/jdk/src/macosx/classes/com/apple/laf/ImageCache.java	2015-09-08 10:59:12.851711771 +0100
-+++ openjdk-boot/jdk/src/macosx/classes/com/apple/laf/ImageCache.java	2015-09-08 11:03:39.998903445 +0100
+--- openjdk-boot.orig/jdk/src/macosx/classes/com/apple/laf/ImageCache.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/macosx/classes/com/apple/laf/ImageCache.java	2016-09-21 06:38:08.152139860 +0100
 @@ -41,7 +41,7 @@
   */
  final class ImageCache {
@@ -172,8 +1752,8 @@
      // Singleton Instance
      private static final RecyclableSingleton<ImageCache> instance = new RecyclableSingleton<ImageCache>() {
 diff -Nru openjdk-boot.orig/jdk/src/macosx/classes/sun/awt/CGraphicsEnvironment.java openjdk-boot/jdk/src/macosx/classes/sun/awt/CGraphicsEnvironment.java
---- openjdk-boot.orig/jdk/src/macosx/classes/sun/awt/CGraphicsEnvironment.java	2015-09-08 10:59:12.863711555 +0100
-+++ openjdk-boot/jdk/src/macosx/classes/sun/awt/CGraphicsEnvironment.java	2015-09-08 11:01:39.785065121 +0100
+--- openjdk-boot.orig/jdk/src/macosx/classes/sun/awt/CGraphicsEnvironment.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/macosx/classes/sun/awt/CGraphicsEnvironment.java	2016-09-21 06:38:08.152139860 +0100
 @@ -88,7 +88,7 @@
      private native void deregisterDisplayReconfiguration(long context);
  
@@ -193,8 +1773,8 @@
  
              int mainID = getMainDisplayID();
 diff -Nru openjdk-boot.orig/jdk/src/macosx/classes/sun/nio/ch/KQueueSelectorImpl.java openjdk-boot/jdk/src/macosx/classes/sun/nio/ch/KQueueSelectorImpl.java
---- openjdk-boot.orig/jdk/src/macosx/classes/sun/nio/ch/KQueueSelectorImpl.java	2015-09-08 10:59:12.875711338 +0100
-+++ openjdk-boot/jdk/src/macosx/classes/sun/nio/ch/KQueueSelectorImpl.java	2015-09-08 11:00:04.922773260 +0100
+--- openjdk-boot.orig/jdk/src/macosx/classes/sun/nio/ch/KQueueSelectorImpl.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/macosx/classes/sun/nio/ch/KQueueSelectorImpl.java	2016-09-21 06:38:08.152139860 +0100
 @@ -86,7 +86,7 @@
          fd1 = (int)fds;
          kqueueWrapper = new KQueueArrayWrapper();
@@ -205,8 +1785,8 @@
      }
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/beans/decoder/DocumentHandler.java openjdk-boot/jdk/src/share/classes/com/sun/beans/decoder/DocumentHandler.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/beans/decoder/DocumentHandler.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/beans/decoder/DocumentHandler.java	2015-09-08 10:49:08.170659672 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/beans/decoder/DocumentHandler.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/beans/decoder/DocumentHandler.java	2016-09-21 06:38:08.152139860 +0100
 @@ -63,9 +63,10 @@
   */
  public final class DocumentHandler extends DefaultHandler {
@@ -222,8 +1802,8 @@
      private Reference<ClassLoader> loader;
      private ExceptionListener listener;
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/beans/TypeResolver.java openjdk-boot/jdk/src/share/classes/com/sun/beans/TypeResolver.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/beans/TypeResolver.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/beans/TypeResolver.java	2015-09-08 10:49:08.170659672 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/beans/TypeResolver.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/beans/TypeResolver.java	2016-09-21 06:38:08.152139860 +0100
 @@ -46,7 +46,7 @@
   */
  public final class TypeResolver {
@@ -243,8 +1823,8 @@
                      CACHE.put(actual, map);
                  }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/beans/util/Cache.java openjdk-boot/jdk/src/share/classes/com/sun/beans/util/Cache.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/beans/util/Cache.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/beans/util/Cache.java	2015-09-08 10:49:08.170659672 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/beans/util/Cache.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/beans/util/Cache.java	2016-09-21 06:38:08.156139792 +0100
 @@ -45,7 +45,7 @@
      private final Kind keyKind; // a reference kind for the cache keys
      private final Kind valueKind; // a reference kind for the cache values
@@ -291,9 +1871,9 @@
          };
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Attribute.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Attribute.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Attribute.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Attribute.java	2015-09-08 10:49:08.170659672 +0100
-@@ -104,9 +104,9 @@
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Attribute.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Attribute.java	2016-09-21 06:38:08.156139792 +0100
+@@ -103,9 +103,9 @@
          return this.def.compareTo(that.def);
      }
  
@@ -306,7 +1886,7 @@
  
      // Canonicalized lists of trivial attrs (Deprecated, etc.)
      // are used by trimToSize, in order to reduce footprint
-@@ -116,7 +116,7 @@
+@@ -115,7 +115,7 @@
          synchronized (canonLists) {
              List<Attribute> cl = canonLists.get(al);
              if (cl == null) {
@@ -315,7 +1895,7 @@
                  cl.addAll(al);
                  cl = Collections.unmodifiableList(cl);
                  canonLists.put(al, cl);
-@@ -337,9 +337,9 @@
+@@ -336,9 +336,9 @@
  
          public void addAttribute(Attribute a) {
              if (attributes == null)
@@ -327,7 +1907,7 @@
              attributes.add(a);
          }
  
-@@ -347,7 +347,7 @@
+@@ -346,7 +346,7 @@
              if (attributes == null)       return null;
              if (!attributes.contains(a))  return null;
              if (!(attributes instanceof ArrayList))
@@ -364,8 +1944,8 @@
          for (int i = 0; i < layout.length(); i++) {
              if (layout.charAt(i++) != '[')
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java	2015-09-08 10:42:12.558241960 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java	2015-09-08 10:49:08.170659672 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java	2016-09-21 06:14:42.819429236 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java	2016-09-23 14:34:37.507505288 +0100
 @@ -257,7 +257,7 @@
          assert(basicCodings[_meta_default] == null);
          assert(basicCodings[_meta_canon_min] != null);
@@ -395,7 +1975,7 @@
  
      // Well-known attributes:
      protected final Attribute.Layout attrCodeEmpty;
-@@ -1714,11 +1714,11 @@
+@@ -1714,16 +1714,16 @@
      protected final Attribute.Layout attrConstantValue;
  
      // Mapping from Attribute.Layout to Integer (inverse of attrDefs)
@@ -409,16 +1989,23 @@
      {
          for (int i = 0; i < ATTR_CONTEXT_LIMIT; i++) {
              assert(attrIndexLimit[i] == 0);
-@@ -1913,7 +1913,7 @@
- 
-     protected List getPredefinedAttrs(int ctype) {
+             attrIndexLimit[i] = 32;  // just for the sake of predefs.
+-            attrDefs.set(i, new ArrayList<>(Collections.nCopies(
++            attrDefs.set(i, new ArrayList<Attribute.Layout>(Collections.nCopies(
+                     attrIndexLimit[i], (Attribute.Layout)null)));
+ 
+         }
+@@ -1913,7 +1913,8 @@
+ 
+     protected List<Attribute.Layout> getPredefinedAttrs(int ctype) {
          assert(attrIndexLimit[ctype] != 0);
 -        List<Attribute.Layout> res = new ArrayList<>(attrIndexLimit[ctype]);
-+        List<Attribute.Layout> res = new ArrayList<Attribute.Layout>(attrIndexLimit[ctype]);
++        List<Attribute.Layout> res =
++	    new ArrayList<Attribute.Layout>(attrIndexLimit[ctype]);
          // Remove nulls and non-predefs.
          for (int ai = 0; ai < attrIndexLimit[ctype]; ai++) {
              if (testBit(attrDefSeen[ctype], 1L<<ai))  continue;
-@@ -2537,7 +2537,7 @@
+@@ -2537,7 +2538,7 @@
      // DEBUG ONLY:  Record something about the band order.
      boolean notePrevForAssert(Band b, Band p) {
          if (prevForAssertMap == null)
@@ -428,8 +2015,8 @@
          return true;
      }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java	2015-09-08 10:42:12.262247378 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java	2015-09-08 10:49:08.170659672 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java	2016-09-21 06:14:42.647432085 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java	2016-09-21 06:38:08.156139792 +0100
 @@ -466,7 +466,7 @@
  
      void readInnerClasses(Class cls) throws IOException {
@@ -440,8 +2027,8 @@
              InnerClass ic =
                  new InnerClass(readClassRef(),
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/CodingChooser.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/CodingChooser.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/CodingChooser.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/CodingChooser.java	2015-09-08 10:49:08.170659672 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/CodingChooser.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/CodingChooser.java	2016-09-21 06:38:08.156139792 +0100
 @@ -743,9 +743,9 @@
          // Steps 1/2/3 are interdependent, and may be iterated.
          // Steps 4 and 5 may be decided independently afterward.
@@ -478,8 +2065,8 @@
                  if (popset.add(values[i]))  popvals.add(values[i]);
              }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Coding.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Coding.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Coding.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Coding.java	2015-09-08 10:49:08.170659672 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Coding.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Coding.java	2016-09-21 06:38:08.156139792 +0100
 @@ -402,7 +402,7 @@
      private static Map<Coding, Coding> codeMap;
  
@@ -490,9 +2077,9 @@
          Coding x1 = codeMap.get(x0);
          if (x1 == null)  codeMap.put(x0, x1 = x0);
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java	2015-09-08 10:49:08.174659600 +0100
-@@ -921,7 +921,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java	2016-09-21 06:38:08.156139792 +0100
+@@ -917,7 +917,7 @@
      public static
      Index[] partition(Index ix, int[] keys) {
          // %%% Should move this into class Index.
@@ -501,7 +2088,7 @@
          Entry[] cpMap = ix.cpMap;
          assert(keys.length == cpMap.length);
          for (int i = 0; i < keys.length; i++) {
-@@ -932,7 +932,7 @@
+@@ -928,7 +928,7 @@
              }
              List<Entry> part = parts.get(key);
              if (part == null) {
@@ -510,7 +2097,7 @@
              }
              part.add(cpMap[i]);
          }
-@@ -1141,7 +1141,7 @@
+@@ -1137,7 +1137,7 @@
      void completeReferencesIn(Set<Entry> cpRefs, boolean flattenSigs) {
          cpRefs.remove(null);
          for (ListIterator<Entry> work =
@@ -520,8 +2107,8 @@
              Entry e = work.previous();
              work.remove();          // pop stack
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java	2015-09-08 10:42:12.558241960 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java	2015-09-08 10:49:08.174659600 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java	2016-09-21 06:14:42.819429236 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java	2016-09-21 06:38:08.156139792 +0100
 @@ -61,7 +61,7 @@
                  ResourceBundle.getBundle("com.sun.java.util.jar.pack.DriverResource");
  
@@ -559,8 +2146,8 @@
          for (String optline : options.split("\n")) {
              String[] words = optline.split("\\p{Space}+");
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/FixedList.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/FixedList.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/FixedList.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/FixedList.java	2015-09-08 10:49:08.174659600 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/FixedList.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/FixedList.java	2016-09-21 06:38:08.156139792 +0100
 @@ -45,7 +45,7 @@
      private final ArrayList<E> flist;
  
@@ -570,9 +2157,35 @@
          // initialize the list to null
          for (int i = 0 ; i < capacity ; i++) {
              flist.add(null);
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Fixups.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Fixups.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Fixups.java	2016-09-23 14:35:12.990927560 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Fixups.java	2016-09-23 14:35:35.306564229 +0100
+@@ -126,11 +126,11 @@
+     public void setBytes(byte[] newBytes) {
+         if (bytes == newBytes)  return;
+         ArrayList<Fixup> old = null;
+-        assert((old = new ArrayList<>(this)) != null);
++        assert((old = new ArrayList<Fixup>(this)) != null);
+         if (bytes == null || newBytes == null) {
+             // One or the other representations is deficient.
+             // Construct a checkpoint.
+-            ArrayList<Fixup> save = new ArrayList<>(this);
++            ArrayList<Fixup> save = new ArrayList<Fixup>(this);
+             clear();
+             bytes = newBytes;
+             addAll(save);
+@@ -138,7 +138,7 @@
+             // assume newBytes is some sort of bitwise copy of the old bytes
+             bytes = newBytes;
+         }
+-        assert(old.equals(new ArrayList<>(this)));
++        assert(old.equals(new ArrayList<Fixup>(this)));
+     }
+ 
+     static final int LOC_SHIFT = 1;
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java	2015-09-08 10:42:12.262247378 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java	2015-09-08 10:49:08.174659600 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java	2016-09-21 06:14:42.647432085 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java	2016-09-21 15:07:04.335617782 +0100
 @@ -112,7 +112,7 @@
      public static final Attribute.Layout attrSourceFileSpecial;
      public static final Map<Attribute.Layout, Attribute> attrDefs;
@@ -591,7 +2204,7 @@
  
      public List<Package.Class> getClasses() {
          return classes;
-@@ -264,7 +264,7 @@
+@@ -263,7 +263,7 @@
              if (olda == null)
                  return;  // no SourceFile attr.
              String obvious = getObviousSourceFile();
@@ -600,7 +2213,7 @@
              olda.visitRefs(this, VRM_PACKAGE, ref);
              Utf8Entry sfName = (Utf8Entry) ref.get(0);
              Attribute a = olda;
-@@ -292,7 +292,7 @@
+@@ -291,7 +291,7 @@
              if (a != olda) {
                  if (verbose > 2)
                      Utils.log.fine("recoding obvious SourceFile="+obvious);
@@ -609,7 +2222,7 @@
                  int where = newAttrs.indexOf(olda);
                  newAttrs.set(where, a);
                  setAttributes(newAttrs);
-@@ -322,7 +322,7 @@
+@@ -321,7 +321,7 @@
          }
  
          public void setInnerClasses(Collection<InnerClass> ics) {
@@ -618,7 +2231,7 @@
              // Edit the attribute list, if necessary.
              Attribute a = getAttribute(attrInnerClassesEmpty);
              if (innerClasses != null && a == null)
-@@ -341,7 +341,7 @@
+@@ -340,7 +340,7 @@
           *  with that of Package.this.allInnerClasses.
           */
          public List<InnerClass> computeGloballyImpliedICs() {
@@ -627,7 +2240,7 @@
              {   // This block temporarily displaces this.innerClasses.
                  ArrayList<InnerClass> innerClassesSaved = innerClasses;
                  innerClasses = null;  // ignore for the moment
-@@ -350,7 +350,7 @@
+@@ -349,7 +349,7 @@
              }
              ConstantPool.completeReferencesIn(cpRefs, true);
  
@@ -636,7 +2249,7 @@
              for (Entry e : cpRefs) {
                  // Restrict cpRefs to InnerClasses entries only.
                  if (!(e instanceof ClassEntry))  continue;
-@@ -366,7 +366,7 @@
+@@ -365,7 +365,7 @@
              // This loop is structured this way so as to accumulate
              // entries into impliedICs in an order which reflects
              // the order of allInnerClasses.
@@ -645,7 +2258,7 @@
              for (InnerClass ic : allInnerClasses) {
                  // This one is locally relevant if it describes
                  // a member of the current class, or if the current
-@@ -409,8 +409,8 @@
+@@ -408,8 +408,8 @@
                  // Diff is A since I is empty.
              }
              // (I*A) is non-trivial
@@ -656,7 +2269,7 @@
              impliedICs.addAll(actualICs);
              impliedICs.removeAll(center);
              // Diff is now I^A = (I+A)-(I*A).
-@@ -539,7 +539,7 @@
+@@ -538,7 +538,7 @@
                  super(flags, descriptor);
                  assert(!descriptor.isMethod());
                  if (fields == null)
@@ -665,7 +2278,7 @@
                  boolean added = fields.add(this);
                  assert(added);
                  order = fields.size();
-@@ -564,7 +564,7 @@
+@@ -563,7 +563,7 @@
                  super(flags, descriptor);
                  assert(descriptor.isMethod());
                  if (methods == null)
@@ -674,7 +2287,7 @@
                  boolean added = methods.add(this);
                  assert(added);
              }
-@@ -732,14 +732,14 @@
+@@ -728,14 +728,14 @@
      }
  
      // What non-class files are in this unit?
@@ -691,16 +2304,25 @@
          for (Class cls : classes) {
              assert(cls.file.isClassStub());
              classStubs.add(cls.file);
-@@ -859,7 +859,7 @@
+@@ -749,7 +749,7 @@
+         int modtime = NO_MODTIME;
+         int options = 0;  // random flag bits, such as deflate_hint
+         Class stubClass;  // if this is a stub, here's the class
+-        ArrayList<byte[]> prepend = new ArrayList<>();  // list of byte[]
++        ArrayList<byte[]> prepend = new ArrayList<byte[]>();  // list of byte[]
+         java.io.ByteArrayOutputStream append = new ByteArrayOutputStream();
+ 
+         File(Utf8Entry name) {
+@@ -852,7 +852,7 @@
          public InputStream getInputStream() {
              InputStream in = new ByteArrayInputStream(append.toByteArray());
              if (prepend.isEmpty())  return in;
 -            List<InputStream> isa = new ArrayList<>(prepend.size()+1);
 +            List<InputStream> isa = new ArrayList<InputStream>(prepend.size()+1);
-             for (Iterator i = prepend.iterator(); i.hasNext(); ) {
-                 byte[] bytes = (byte[]) i.next();
+             for (byte[] bytes : prepend) {
                  isa.add(new ByteArrayInputStream(bytes));
-@@ -896,7 +896,7 @@
+             }
+@@ -888,7 +888,7 @@
      }
  
      // Is there a globally declared table of inner classes?
@@ -709,7 +2331,7 @@
      Map<ClassEntry, InnerClass>   allInnerClassesByThis;
  
      public
-@@ -911,7 +911,7 @@
+@@ -903,7 +903,7 @@
          allInnerClasses.addAll(ics);
  
          // Make an index:
@@ -718,7 +2340,7 @@
          for (InnerClass ic : allInnerClasses) {
              Object pic = allInnerClassesByThis.put(ic.thisClass, ic);
              assert(pic == null);  // caller must ensure key uniqueness!
-@@ -1302,7 +1302,7 @@
+@@ -1290,7 +1290,7 @@
  
      // Use this before writing the class files.
      void ensureAllClassFiles() {
@@ -728,8 +2350,8 @@
              // Add to the end of ths list:
              if (!fileSet.contains(cls.file))
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java	2015-09-08 10:42:12.558241960 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java	2015-09-08 10:49:08.174659600 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java	2016-09-21 06:14:42.819429236 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java	2016-09-21 06:46:27.043853818 +0100
 @@ -686,7 +686,7 @@
          cp_Signature_classes.expectLength(getIntTotal(numSigClasses));
          cp_Signature_classes.readFrom(in);
@@ -816,15 +2438,15 @@
              bits = attrBits;  // iterate again
              for (int ai = 0; bits != 0; ai++) {
 @@ -1596,7 +1596,7 @@
-     @SuppressWarnings("unchecked")
-     void readAttrs(int ctype, Collection holders) throws IOException {
+     void readAttrs(int ctype, Collection<? extends Attribute.Holder> holders)
+             throws IOException {
          // Decode band values into attributes.
 -        Set<Attribute.Layout> sawDefs = new HashSet<>();
 +        Set<Attribute.Layout> sawDefs = new HashSet<Attribute.Layout>();
          ByteArrayOutputStream buf = new ByteArrayOutputStream();
-         for (Iterator i = holders.iterator(); i.hasNext(); ) {
-             final Attribute.Holder h = (Attribute.Holder) i.next();
-@@ -1800,7 +1800,7 @@
+         for (final Attribute.Holder h : holders) {
+             if (h.attributes == null)  continue;
+@@ -1799,7 +1799,7 @@
          // scratch buffer for collecting code::
          byte[] buf = new byte[1<<12];
          // record of all switch opcodes (these are variable-length)
@@ -833,7 +2455,7 @@
          for (int k = 0; k < allCodes.length; k++) {
              Code c = allCodes[k];
          scanOneMethod:
-@@ -1916,7 +1916,7 @@
+@@ -1915,7 +1915,7 @@
  
              Set<Entry> ldcRefSet = ldcRefMap.get(curClass);
              if (ldcRefSet == null)
@@ -843,8 +2465,8 @@
              ClassEntry thisClass  = curClass.thisClass;
              ClassEntry superClass = curClass.superClass;
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java	2015-09-08 10:42:12.562241887 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java	2015-09-08 10:49:08.174659600 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java	2016-09-21 06:14:42.819429236 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java	2016-09-21 06:46:09.860139005 +0100
 @@ -116,7 +116,7 @@
      int[][]     attrCounts;       // count attr. occurences
  
@@ -863,16 +2485,17 @@
          int bestCount = 0;
          int bestVersion = -1;
          for (Class cls : pkg.classes) {
-@@ -729,7 +729,7 @@
-     @SuppressWarnings("unchecked")
+@@ -728,7 +728,8 @@
+ 
      void collectAttributeLayouts() {
          maxFlags = new int[ATTR_CONTEXT_LIMIT];
 -        allLayouts = new FixedList<>(ATTR_CONTEXT_LIMIT);
-+        allLayouts = new FixedList<Map<Attribute.Layout, int[]>>(ATTR_CONTEXT_LIMIT);
++        allLayouts =
++	    new FixedList<Map<Attribute.Layout, int[]>>(ATTR_CONTEXT_LIMIT);
          for (int i = 0; i < ATTR_CONTEXT_LIMIT; i++) {
              allLayouts.set(i, new HashMap<Attribute.Layout, int[]>());
          }
-@@ -774,7 +774,7 @@
+@@ -773,7 +774,7 @@
          }
          // Collect counts for both predefs. and custom defs.
          // Decide on custom, local attribute definitions.
@@ -881,16 +2504,16 @@
          attrCounts = new int[ATTR_CONTEXT_LIMIT][];
          for (int i = 0; i < ATTR_CONTEXT_LIMIT; i++) {
              // Now the remaining defs in allLayouts[i] need attr. indexes.
-@@ -889,7 +889,7 @@
- 
-     @SuppressWarnings("unchecked")
+@@ -888,7 +889,7 @@
+     Attribute.Layout[] attrDefsWritten;
+ 
      void writeAttrDefs() throws IOException {
 -        List<Object[]> defList = new ArrayList<>();
 +        List<Object[]> defList = new ArrayList<Object[]>();
          for (int i = 0; i < ATTR_CONTEXT_LIMIT; i++) {
              int limit = attrDefs.get(i).size();
              for (int j = 0; j < limit; j++) {
-@@ -1007,7 +1007,7 @@
+@@ -1005,7 +1006,7 @@
      void collectInnerClasses() {
          // Capture inner classes, removing them from individual classes.
          // Irregular inner classes must stay local, though.
@@ -900,9 +2523,9 @@
          for (Class cls : pkg.classes) {
              if (!cls.hasInnerClasses())  continue;
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java	2015-09-08 10:49:08.174659600 +0100
-@@ -183,8 +183,8 @@
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java	2016-09-21 06:38:08.164139659 +0100
+@@ -181,8 +181,8 @@
          final Map<Attribute.Layout, Attribute> attrDefs;
          final Map<Attribute.Layout, String> attrCommands;
          {
@@ -913,7 +2536,7 @@
              String[] keys = {
                  Pack200.Packer.CLASS_ATTRIBUTE_PFX,
                  Pack200.Packer.FIELD_ATTRIBUTE_PFX,
-@@ -593,7 +593,7 @@
+@@ -590,7 +590,7 @@
                  assert(pkg.files.containsAll(pkg.getClassStubs()));
                  // Order of stubs in file list must agree with classes.
                  List<Package.File> res = pkg.files;
@@ -922,7 +2545,7 @@
                         .retainAll(pkg.getClassStubs()) || true);
                  assert(res.equals(pkg.getClassStubs()));
              }
-@@ -626,7 +626,7 @@
+@@ -623,7 +623,7 @@
  
          List<InFile> scanJar(JarFile jf) throws IOException {
              // Collect jar entries, preserving order.
@@ -932,8 +2555,8 @@
                  for (JarEntry je : Collections.list(jf.entries())) {
                      InFile inFile = new InFile(jf, je);
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PopulationCoding.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PopulationCoding.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PopulationCoding.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PopulationCoding.java	2015-09-08 10:49:08.174659600 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PopulationCoding.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PopulationCoding.java	2016-09-21 06:38:08.164139659 +0100
 @@ -309,7 +309,7 @@
          // As each new value is added, we assert that the value
          // was not already in the set.
@@ -944,40 +2567,32 @@
          maxForDebug += fillp;
          int min = Integer.MIN_VALUE;  // farthest from the center
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java	2015-09-08 10:42:12.562241887 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java	2015-09-08 10:49:08.174659600 +0100
-@@ -48,8 +48,8 @@
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java	2016-09-21 06:14:42.819429236 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java	2016-09-21 06:44:57.729336272 +0100
+@@ -47,8 +47,9 @@
   */
  
- final class PropMap implements SortedMap<Object, Object>  {
--    private final TreeMap<Object, Object> theMap = new TreeMap<>();;
+ final class PropMap implements SortedMap<String, String>  {
+-    private final TreeMap<String, String> theMap = new TreeMap<>();;
 -    private final List<PropertyChangeListener> listenerList = new ArrayList<>(1);
-+    private final TreeMap<Object, Object> theMap = new TreeMap<Object, Object>();;
-+    private final List<PropertyChangeListener> listenerList = new ArrayList<PropertyChangeListener>(1);
++    private final TreeMap<String, String> theMap = new TreeMap<String,String>();;
++    private final List<PropertyChangeListener> listenerList =
++	new ArrayList<PropertyChangeListener>(1);
  
      void addListener(PropertyChangeListener listener) {
          listenerList.add(listener);
-@@ -150,7 +150,7 @@
-             }
-         }
- 
--        defaultProps = (new HashMap<>(props));  // shrink to fit
-+        defaultProps = (new HashMap<Object,Object>(props));  // shrink to fit
-     }
- 
-     PropMap() {
-@@ -186,7 +186,7 @@
+@@ -187,7 +188,7 @@
      // Get sequence of props for "prefix", and "prefix.*".
-     List getProperties(String prefix) {
-         Collection<Object> values = prefixMap(prefix).values();
--        List<Object> res = new ArrayList<>(values.size());
-+        List<Object> res = new ArrayList<Object>(values.size());
+     List<String> getProperties(String prefix) {
+         Collection<String> values = prefixMap(prefix).values();
+-        List<String> res = new ArrayList<>(values.size());
++        List<String> res = new ArrayList<String>(values.size());
          res.addAll(values);
          while (res.remove(null));
          return res;
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/TLGlobals.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/TLGlobals.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/TLGlobals.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/TLGlobals.java	2015-09-08 10:49:08.174659600 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/TLGlobals.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/TLGlobals.java	2016-09-21 06:38:08.164139659 +0100
 @@ -58,12 +58,12 @@
      private final Map<String, MemberEntry> memberEntries;
  
@@ -998,9 +2613,9 @@
      }
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java	2015-09-08 10:42:12.562241887 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java	2015-09-08 10:49:08.174659600 +0100
-@@ -233,7 +233,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java	2016-09-21 06:14:42.819429236 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java	2016-09-21 06:38:08.164139659 +0100
+@@ -232,7 +232,7 @@
              props.setProperty(java.util.jar.Pack200.Unpacker.PROGRESS,"50");
              pkg.ensureAllClassFiles();
              // Now write out the files.
@@ -1010,8 +2625,8 @@
                  String name = file.nameString;
                  JarEntry je = new JarEntry(Utils.getJarEntryName(name));
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java	2015-09-08 10:42:12.562241887 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java	2015-09-08 10:49:08.174659600 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java	2016-09-21 06:14:42.819429236 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java	2016-09-21 06:38:08.164139659 +0100
 @@ -132,7 +132,7 @@
      // Keep a TLS point to the global data and environment.
      // This makes it simpler to supply environmental options
@@ -1022,8 +2637,8 @@
      // convenience methods to access the TL globals
      static TLGlobals getTLGlobals() {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/jmx/remote/security/SubjectDelegator.java openjdk-boot/jdk/src/share/classes/com/sun/jmx/remote/security/SubjectDelegator.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/jmx/remote/security/SubjectDelegator.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/jmx/remote/security/SubjectDelegator.java	2015-09-08 10:49:08.174659600 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/jmx/remote/security/SubjectDelegator.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/jmx/remote/security/SubjectDelegator.java	2016-09-21 06:38:08.164139659 +0100
 @@ -56,7 +56,7 @@
          // principal in the delegated subject
          //
@@ -1034,8 +2649,8 @@
              final String pname = p.getClass().getName() + "." + p.getName();
              permissions.add(new SubjectDelegationPermission(pname));
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/media/sound/AbstractLine.java openjdk-boot/jdk/src/share/classes/com/sun/media/sound/AbstractLine.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/media/sound/AbstractLine.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/media/sound/AbstractLine.java	2015-09-08 10:49:08.174659600 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/media/sound/AbstractLine.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/media/sound/AbstractLine.java	2016-09-21 06:38:08.164139659 +0100
 @@ -54,7 +54,7 @@
       * Contains event dispatcher per thread group.
       */
@@ -1046,8 +2661,8 @@
      /**
       * Constructs a new AbstractLine.
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/media/sound/JDK13Services.java openjdk-boot/jdk/src/share/classes/com/sun/media/sound/JDK13Services.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/media/sound/JDK13Services.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/media/sound/JDK13Services.java	2015-09-08 10:49:08.174659600 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/media/sound/JDK13Services.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/media/sound/JDK13Services.java	2016-09-21 06:38:08.164139659 +0100
 @@ -102,7 +102,7 @@
                  && !SoundbankReader.class.equals(serviceClass)
                  && !MidiFileWriter.class.equals(serviceClass)
@@ -1058,8 +2673,8 @@
              providers = JSSecurityManager.getProviders(serviceClass);
          }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/media/sound/RealTimeSequencer.java openjdk-boot/jdk/src/share/classes/com/sun/media/sound/RealTimeSequencer.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/media/sound/RealTimeSequencer.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/media/sound/RealTimeSequencer.java	2015-09-08 10:49:08.178659527 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/media/sound/RealTimeSequencer.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/media/sound/RealTimeSequencer.java	2016-09-21 06:38:08.164139659 +0100
 @@ -59,7 +59,7 @@
       * dispatcher instance with a factory in EventDispatcher
       */
@@ -1070,8 +2685,8 @@
      /**
       * All RealTimeSequencers share this info object.
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/rmi/rmid/ExecOptionPermission.java openjdk-boot/jdk/src/share/classes/com/sun/rmi/rmid/ExecOptionPermission.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/rmi/rmid/ExecOptionPermission.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/rmi/rmid/ExecOptionPermission.java	2015-09-08 10:49:08.178659527 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/rmi/rmid/ExecOptionPermission.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/rmi/rmid/ExecOptionPermission.java	2016-09-21 06:38:08.164139659 +0100
 @@ -231,7 +231,7 @@
           * Create an empty ExecOptionPermissionCollection.
           */
@@ -1082,8 +2697,8 @@
          }
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/rmi/rmid/ExecPermission.java openjdk-boot/jdk/src/share/classes/com/sun/rmi/rmid/ExecPermission.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/rmi/rmid/ExecPermission.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/rmi/rmid/ExecPermission.java	2015-09-08 10:49:08.178659527 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/rmi/rmid/ExecPermission.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/rmi/rmid/ExecPermission.java	2016-09-21 06:38:08.164139659 +0100
 @@ -235,7 +235,7 @@
           * Create an empty ExecPermissionCollection.
           */
@@ -1094,8 +2709,8 @@
  
          /**
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/rowset/CachedRowSetImpl.java openjdk-boot/jdk/src/share/classes/com/sun/rowset/CachedRowSetImpl.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/rowset/CachedRowSetImpl.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/rowset/CachedRowSetImpl.java	2015-09-08 10:49:08.178659527 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/rowset/CachedRowSetImpl.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/rowset/CachedRowSetImpl.java	2016-09-21 06:38:08.168139594 +0100
 @@ -1285,7 +1285,7 @@
       */
      public Collection<?> toCollection() throws SQLException {
@@ -1115,8 +2730,8 @@
          // create a copy
          CachedRowSetImpl crsTemp;
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/rowset/JoinRowSetImpl.java openjdk-boot/jdk/src/share/classes/com/sun/rowset/JoinRowSetImpl.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/rowset/JoinRowSetImpl.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/rowset/JoinRowSetImpl.java	2015-09-08 10:49:08.178659527 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/rowset/JoinRowSetImpl.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/rowset/JoinRowSetImpl.java	2016-09-21 06:38:08.168139594 +0100
 @@ -222,7 +222,7 @@
             // either of the setter methods have been set.
             if(boolColId){
@@ -1127,8 +2742,8 @@
                    if( (strMatchKey = (cRowset.getMatchColumnNames())[i]) != null) {
                        iMatchKey = cRowset.findColumn(strMatchKey);
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/callback/DialogCallbackHandler.java openjdk-boot/jdk/src/share/classes/com/sun/security/auth/callback/DialogCallbackHandler.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/callback/DialogCallbackHandler.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/callback/DialogCallbackHandler.java	2015-09-08 10:49:08.178659527 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/callback/DialogCallbackHandler.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/callback/DialogCallbackHandler.java	2016-09-21 06:38:08.168139594 +0100
 @@ -99,10 +99,10 @@
          throws UnsupportedCallbackException
      {
@@ -1143,8 +2758,8 @@
          ConfirmationInfo confirmation = new ConfirmationInfo();
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/login/ConfigFile.java openjdk-boot/jdk/src/share/classes/com/sun/security/auth/login/ConfigFile.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/login/ConfigFile.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/login/ConfigFile.java	2015-09-08 10:49:08.182659454 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/login/ConfigFile.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/login/ConfigFile.java	2016-09-21 06:38:08.168139594 +0100
 @@ -152,7 +152,7 @@
  
          // new configuration
@@ -1173,9 +2788,9 @@
              String value;
              while (peek(";") == false) {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/module/JndiLoginModule.java openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/JndiLoginModule.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/module/JndiLoginModule.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/JndiLoginModule.java	2015-09-08 10:49:08.182659454 +0100
-@@ -184,7 +184,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/module/JndiLoginModule.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/JndiLoginModule.java	2016-09-21 06:38:08.168139594 +0100
+@@ -181,7 +181,7 @@
      private UnixNumericUserPrincipal UIDPrincipal;
      private UnixNumericGroupPrincipal GIDPrincipal;
      private LinkedList<UnixNumericGroupPrincipal> supplementaryGroups =
@@ -1185,9 +2800,9 @@
      // initial state
      private Subject subject;
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/module/KeyStoreLoginModule.java openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/KeyStoreLoginModule.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/module/KeyStoreLoginModule.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/KeyStoreLoginModule.java	2015-09-08 10:49:08.182659454 +0100
-@@ -658,7 +658,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/module/KeyStoreLoginModule.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/KeyStoreLoginModule.java	2016-09-21 06:38:08.168139594 +0100
+@@ -654,7 +654,7 @@
                  throw new FailedLoginException(
                      "Unable to find X.509 certificate chain in keystore");
              } else {
@@ -1197,8 +2812,8 @@
                      certList.add(fromKeyStore[i]);
                  }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/module/SolarisLoginModule.java openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/SolarisLoginModule.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/module/SolarisLoginModule.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/SolarisLoginModule.java	2015-09-08 10:49:08.182659454 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/module/SolarisLoginModule.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/SolarisLoginModule.java	2016-09-21 06:38:08.168139594 +0100
 @@ -76,7 +76,7 @@
      private SolarisNumericUserPrincipal UIDPrincipal;
      private SolarisNumericGroupPrincipal GIDPrincipal;
@@ -1209,8 +2824,8 @@
      /**
       * Initialize this <code>LoginModule</code>.
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/module/UnixLoginModule.java openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/UnixLoginModule.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/module/UnixLoginModule.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/UnixLoginModule.java	2015-09-08 10:49:08.182659454 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/module/UnixLoginModule.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/UnixLoginModule.java	2016-09-21 06:38:08.168139594 +0100
 @@ -70,7 +70,7 @@
      private UnixNumericUserPrincipal UIDPrincipal;
      private UnixNumericGroupPrincipal GIDPrincipal;
@@ -1221,9 +2836,9 @@
      /**
       * Initialize this <code>LoginModule</code>.
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/PolicyFile.java openjdk-boot/jdk/src/share/classes/com/sun/security/auth/PolicyFile.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/PolicyFile.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/PolicyFile.java	2015-09-08 10:49:08.182659454 +0100
-@@ -1180,7 +1180,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/PolicyFile.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/PolicyFile.java	2016-09-21 06:38:08.172139526 +0100
+@@ -1179,7 +1179,7 @@
              // Done
              return certs;
  
@@ -1233,8 +2848,8 @@
          while (i < certs.length) {
              userCertList.add(certs[i]);
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/tools/example/trace/EventThread.java openjdk-boot/jdk/src/share/classes/com/sun/tools/example/trace/EventThread.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/tools/example/trace/EventThread.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/tools/example/trace/EventThread.java	2015-09-08 10:49:08.182659454 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/tools/example/trace/EventThread.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/tools/example/trace/EventThread.java	2016-09-21 06:38:08.172139526 +0100
 @@ -59,7 +59,7 @@
  
      // Maps ThreadReference to ThreadTrace instances
@@ -1245,8 +2860,8 @@
      EventThread(VirtualMachine vm, String[] excludes, PrintWriter writer) {
          super("event-handler");
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/beans/Introspector.java openjdk-boot/jdk/src/share/classes/java/beans/Introspector.java
---- openjdk-boot.orig/jdk/src/share/classes/java/beans/Introspector.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/beans/Introspector.java	2015-09-08 10:49:08.182659454 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/beans/Introspector.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/beans/Introspector.java	2016-09-21 06:38:08.172139526 +0100
 @@ -97,7 +97,7 @@
      public final static int IGNORE_ALL_BEANINFO        = 3;
  
@@ -1275,8 +2890,8 @@
          }
          return targetBeanInfo;
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/beans/MethodRef.java openjdk-boot/jdk/src/share/classes/java/beans/MethodRef.java
---- openjdk-boot.orig/jdk/src/share/classes/java/beans/MethodRef.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/beans/MethodRef.java	2015-09-08 10:49:08.182659454 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/beans/MethodRef.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/beans/MethodRef.java	2016-09-21 06:38:08.172139526 +0100
 @@ -44,7 +44,7 @@
          }
          else {
@@ -1296,8 +2911,8 @@
          }
          return isPackageAccessible(method.getDeclaringClass()) ? method : null;
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/beans/ThreadGroupContext.java openjdk-boot/jdk/src/share/classes/java/beans/ThreadGroupContext.java
---- openjdk-boot.orig/jdk/src/share/classes/java/beans/ThreadGroupContext.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/beans/ThreadGroupContext.java	2015-09-08 10:49:08.182659454 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/beans/ThreadGroupContext.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/beans/ThreadGroupContext.java	2016-09-21 06:38:08.172139526 +0100
 @@ -96,7 +96,7 @@
  
      BeanInfo putBeanInfo(Class<?> type, BeanInfo info) {
@@ -1308,8 +2923,8 @@
          return this.beanInfoCache.put(type, info);
      }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/io/DeleteOnExitHook.java openjdk-boot/jdk/src/share/classes/java/io/DeleteOnExitHook.java
---- openjdk-boot.orig/jdk/src/share/classes/java/io/DeleteOnExitHook.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/io/DeleteOnExitHook.java	2015-09-08 10:49:08.182659454 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/io/DeleteOnExitHook.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/io/DeleteOnExitHook.java	2016-09-21 06:38:08.172139526 +0100
 @@ -34,7 +34,7 @@
   */
  
@@ -1329,8 +2944,8 @@
          // reverse the list to maintain previous jdk deletion order.
          // Last in first deleted.
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/io/FileInputStream.java openjdk-boot/jdk/src/share/classes/java/io/FileInputStream.java
---- openjdk-boot.orig/jdk/src/share/classes/java/io/FileInputStream.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/io/FileInputStream.java	2015-09-08 10:49:08.182659454 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/io/FileInputStream.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/io/FileInputStream.java	2016-09-21 06:38:08.172139526 +0100
 @@ -61,7 +61,7 @@
      private volatile boolean closed = false;
  
@@ -1341,8 +2956,8 @@
      private static boolean isRunningFinalize() {
          Boolean val;
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/io/File.java openjdk-boot/jdk/src/share/classes/java/io/File.java
---- openjdk-boot.orig/jdk/src/share/classes/java/io/File.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/io/File.java	2015-09-08 10:49:08.182659454 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/io/File.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/io/File.java	2016-09-21 06:38:08.172139526 +0100
 @@ -1150,7 +1150,7 @@
          if ((names == null) || (filter == null)) {
              return names;
@@ -1371,8 +2986,8 @@
              File f = new File(s, this);
              if ((filter == null) || filter.accept(f))
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/io/FileOutputStream.java openjdk-boot/jdk/src/share/classes/java/io/FileOutputStream.java
---- openjdk-boot.orig/jdk/src/share/classes/java/io/FileOutputStream.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/io/FileOutputStream.java	2015-09-08 10:49:08.182659454 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/io/FileOutputStream.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/io/FileOutputStream.java	2016-09-21 06:38:08.172139526 +0100
 @@ -76,7 +76,7 @@
      private final Object closeLock = new Object();
      private volatile boolean closed = false;
@@ -1383,8 +2998,8 @@
      private static boolean isRunningFinalize() {
          Boolean val;
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/io/FilePermission.java openjdk-boot/jdk/src/share/classes/java/io/FilePermission.java
---- openjdk-boot.orig/jdk/src/share/classes/java/io/FilePermission.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/io/FilePermission.java	2015-09-08 10:49:08.182659454 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/io/FilePermission.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/io/FilePermission.java	2016-09-21 06:38:08.172139526 +0100
 @@ -725,7 +725,7 @@
       */
  
@@ -1413,9 +3028,9 @@
      }
  }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/io/ObjectInputStream.java openjdk-boot/jdk/src/share/classes/java/io/ObjectInputStream.java
---- openjdk-boot.orig/jdk/src/share/classes/java/io/ObjectInputStream.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/io/ObjectInputStream.java	2015-09-08 10:49:08.186659382 +0100
-@@ -214,7 +214,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/java/io/ObjectInputStream.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/io/ObjectInputStream.java	2016-09-21 06:38:08.172139526 +0100
+@@ -217,7 +217,7 @@
  
      /** table mapping primitive type names to corresponding class objects */
      private static final HashMap<String, Class<?>> primClasses
@@ -1424,7 +3039,7 @@
      static {
          primClasses.put("boolean", boolean.class);
          primClasses.put("byte", byte.class);
-@@ -230,11 +230,11 @@
+@@ -233,11 +233,11 @@
      private static class Caches {
          /** cache of subclass security audit results */
          static final ConcurrentMap<WeakClassKey,Boolean> subclassAudits =
@@ -1439,8 +3054,8 @@
  
      /** filter stream for handling block data conversion */
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/io/ObjectOutputStream.java openjdk-boot/jdk/src/share/classes/java/io/ObjectOutputStream.java
---- openjdk-boot.orig/jdk/src/share/classes/java/io/ObjectOutputStream.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/io/ObjectOutputStream.java	2015-09-08 10:49:08.186659382 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/io/ObjectOutputStream.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/io/ObjectOutputStream.java	2016-09-21 06:38:08.172139526 +0100
 @@ -166,11 +166,11 @@
      private static class Caches {
          /** cache of subclass security audit results */
@@ -1465,8 +3080,8 @@
  
          /**
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/io/ObjectStreamClass.java openjdk-boot/jdk/src/share/classes/java/io/ObjectStreamClass.java
---- openjdk-boot.orig/jdk/src/share/classes/java/io/ObjectStreamClass.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/io/ObjectStreamClass.java	2015-09-08 10:49:08.186659382 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/io/ObjectStreamClass.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/io/ObjectStreamClass.java	2016-09-21 06:38:08.176139460 +0100
 @@ -87,18 +87,18 @@
      private static class Caches {
          /** cache mapping local classes -> descriptors */
@@ -1490,7 +3105,7 @@
      }
  
      /** class associated with this descriptor (if any) */
-@@ -328,7 +328,7 @@
+@@ -332,7 +332,7 @@
          EntryFuture future = null;
          if (entry == null) {
              EntryFuture newEntry = new EntryFuture();
@@ -1499,7 +3114,7 @@
              do {
                  if (ref != null) {
                      Caches.localDescs.remove(key, ref);
-@@ -1156,7 +1156,7 @@
+@@ -1200,7 +1200,7 @@
      private ClassDataSlot[] getClassDataLayout0()
          throws InvalidClassException
      {
@@ -1508,7 +3123,7 @@
          Class<?> start = cl, end = cl;
  
          // locate closest non-serializable superclass
-@@ -1164,7 +1164,7 @@
+@@ -1208,7 +1208,7 @@
              end = end.getSuperclass();
          }
  
@@ -1517,7 +3132,7 @@
  
          for (ObjectStreamClass d = this; d != null; d = d.superDesc) {
              if (oscNames.contains(d.name)) {
-@@ -1599,7 +1599,7 @@
+@@ -1643,7 +1643,7 @@
  
          ObjectStreamField[] boundFields =
              new ObjectStreamField[serialPersistentFields.length];
@@ -1526,7 +3141,7 @@
  
          for (int i = 0; i < serialPersistentFields.length; i++) {
              ObjectStreamField spf = serialPersistentFields[i];
-@@ -1637,7 +1637,7 @@
+@@ -1681,7 +1681,7 @@
       */
      private static ObjectStreamField[] getDefaultSerialFields(Class<?> cl) {
          Field[] clFields = cl.getDeclaredFields();
@@ -1535,7 +3150,7 @@
          int mask = Modifier.STATIC | Modifier.TRANSIENT;
  
          for (int i = 0; i < clFields.length; i++) {
-@@ -1888,8 +1888,8 @@
+@@ -1932,8 +1932,8 @@
              writeKeys = new long[nfields];
              offsets = new int[nfields];
              typeCodes = new char[nfields];
@@ -1546,7 +3161,7 @@
  
  
              for (int i = 0; i < nfields; i++) {
-@@ -2125,7 +2125,7 @@
+@@ -2169,7 +2169,7 @@
          EntryFuture future = null;
          if (entry == null) {
              EntryFuture newEntry = new EntryFuture();
@@ -1556,8 +3171,8 @@
                  if (ref != null) {
                      Caches.reflectors.remove(key, ref);
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/ApplicationShutdownHooks.java openjdk-boot/jdk/src/share/classes/java/lang/ApplicationShutdownHooks.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/ApplicationShutdownHooks.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/lang/ApplicationShutdownHooks.java	2015-09-08 10:49:08.186659382 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/ApplicationShutdownHooks.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/ApplicationShutdownHooks.java	2016-09-21 06:38:08.176139460 +0100
 @@ -47,7 +47,7 @@
                      }
                  }
@@ -1568,8 +3183,8 @@
              // application shutdown hooks cannot be added if
              // shutdown is in progress.
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/Character.java openjdk-boot/jdk/src/share/classes/java/lang/Character.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/Character.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/lang/Character.java	2015-09-08 10:49:08.186659382 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/Character.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/Character.java	2016-09-21 06:38:08.176139460 +0100
 @@ -646,7 +646,8 @@
       */
      public static final class UnicodeBlock extends Subset {
@@ -1590,8 +3205,8 @@
              aliases.put("ARMI", IMPERIAL_ARAMAIC);
              aliases.put("ARMN", ARMENIAN);
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/CharacterName.java openjdk-boot/jdk/src/share/classes/java/lang/CharacterName.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/CharacterName.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/lang/CharacterName.java	2015-09-08 10:49:08.186659382 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/CharacterName.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/CharacterName.java	2016-09-21 06:38:08.176139460 +0100
 @@ -81,7 +81,7 @@
              } while (cpOff < cpEnd);
              strPool = new byte[total - cpEnd];
@@ -1602,8 +3217,8 @@
              throw new InternalError(x.getMessage());
          } finally {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/Class.java openjdk-boot/jdk/src/share/classes/java/lang/Class.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/Class.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/lang/Class.java	2015-09-08 10:49:08.186659382 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/Class.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/Class.java	2016-09-21 06:38:08.176139460 +0100
 @@ -1359,7 +1359,7 @@
          return java.security.AccessController.doPrivileged(
              new java.security.PrivilegedAction<Class<?>[]>() {
@@ -1656,8 +3271,8 @@
              for (Map.Entry<Class<? extends Annotation>, Annotation> e : superClass.annotations.entrySet()) {
                  Class<? extends Annotation> annotationClass = e.getKey();
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/ClassLoader.java openjdk-boot/jdk/src/share/classes/java/lang/ClassLoader.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/ClassLoader.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/lang/ClassLoader.java	2015-09-08 10:49:08.190659309 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/ClassLoader.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/ClassLoader.java	2016-09-21 06:38:08.180139393 +0100
 @@ -248,7 +248,7 @@
  
      // The classes loaded by this class loader. The only purpose of this table
@@ -1698,7 +3313,7 @@
              assertionLock = this;
          }
      }
-@@ -1184,7 +1185,7 @@
+@@ -1187,7 +1188,7 @@
          }
          tmp[1] = findResources(name);
  
@@ -1707,7 +3322,7 @@
      }
  
      /**
-@@ -1683,7 +1684,7 @@
+@@ -1686,7 +1687,7 @@
      protected Package[] getPackages() {
          Map<String, Package> map;
          synchronized (packages) {
@@ -1716,7 +3331,7 @@
          }
          Package[] pkgs;
          if (parent != null) {
-@@ -1790,17 +1791,20 @@
+@@ -1793,17 +1794,20 @@
      }
  
      // All native library names we've loaded.
@@ -1741,7 +3356,7 @@
  
      // The paths searched for libraries
      private static String usr_paths[];
-@@ -2134,8 +2138,8 @@
+@@ -2137,8 +2141,8 @@
           * them to empty maps, effectively ignoring any present settings.
           */
          synchronized (assertionLock) {
@@ -1752,7 +3367,7 @@
              defaultAssertionStatus = false;
          }
      }
-@@ -2197,8 +2201,8 @@
+@@ -2200,8 +2204,8 @@
      private void initializeJavaAssertionMaps() {
          // assert Thread.holdsLock(assertionLock);
  
@@ -1764,8 +3379,8 @@
  
          for(int i = 0; i < directives.classes.length; i++)
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/ClassValue.java openjdk-boot/jdk/src/share/classes/java/lang/ClassValue.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/ClassValue.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/lang/ClassValue.java	2015-09-08 10:49:08.190659309 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/ClassValue.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/ClassValue.java	2016-09-21 06:38:08.180139393 +0100
 @@ -297,12 +297,12 @@
       * Some machines may also require a barrier instruction to execute
       * before this.version.
@@ -1807,8 +3422,8 @@
          // As soon as the Entry is put into the cache, the value will be
          // reachable via a data race (as defined by the Java Memory Model).
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/BoundMethodHandle.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/BoundMethodHandle.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/BoundMethodHandle.java	2015-09-08 10:42:12.602241155 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/BoundMethodHandle.java	2015-09-08 10:49:08.190659309 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/BoundMethodHandle.java	2016-09-21 06:14:42.859428574 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/BoundMethodHandle.java	2016-09-21 06:38:08.180139393 +0100
 @@ -393,7 +393,7 @@
          }
          private boolean isPlaceholder() { return clazz == null; }
@@ -1819,9 +3434,9 @@
  
          SpeciesData extendWithType(char type) {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/DirectMethodHandle.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/DirectMethodHandle.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/DirectMethodHandle.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/DirectMethodHandle.java	2015-09-08 10:49:08.190659309 +0100
-@@ -327,7 +327,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/DirectMethodHandle.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/DirectMethodHandle.java	2016-09-21 06:38:08.180139393 +0100
+@@ -290,7 +290,7 @@
              if (UNSAFE.shouldBeInitialized(type))
                  // If the previous call didn't block, this can happen.
                  // We are executing inside <clinit>.
@@ -1831,8 +3446,8 @@
          }
          static final EnsureInitialized INSTANCE = new EnsureInitialized();
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java	2015-09-08 10:42:12.606241082 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java	2015-09-08 10:49:08.190659309 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java	2016-09-21 06:14:42.859428574 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java	2016-09-21 06:38:08.180139393 +0100
 @@ -129,7 +129,7 @@
  
      static {
@@ -1852,8 +3467,8 @@
      int cph = 0;  // for counting constant placeholders
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/LambdaForm.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/LambdaForm.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/LambdaForm.java	2015-09-08 10:42:12.606241082 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/LambdaForm.java	2015-09-08 10:49:08.190659309 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/LambdaForm.java	2016-09-21 06:14:42.863428507 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/LambdaForm.java	2016-09-21 06:38:08.180139393 +0100
 @@ -468,12 +468,12 @@
          int   capacity   = 512;    // expect many distinct signatures over time
          float loadFactor = 0.75f;  // normal default
@@ -1870,8 +3485,8 @@
              if (!m.isStatic() || !m.isPackage())  continue;
              MethodType mt = m.getMethodType();
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MemberName.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/MemberName.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MemberName.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MemberName.java	2015-09-08 10:49:08.190659309 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MemberName.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MemberName.java	2016-09-21 06:38:08.180139393 +0100
 @@ -808,14 +808,14 @@
                  // JVM returned to us with an intentional overflow!
                  totalCount += buf.length;
@@ -1890,8 +3505,8 @@
                  for (MemberName[] buf0 : bufs) {
                      Collections.addAll(result, buf0);
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java	2015-09-08 10:42:12.606241082 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java	2015-09-08 10:49:08.190659309 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java	2016-09-21 06:14:42.863428507 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java	2016-09-21 06:38:08.180139393 +0100
 @@ -73,8 +73,8 @@
  
      static final class ArrayAccessor {
@@ -1913,8 +3528,8 @@
              for (;;) {
                  int nargs = invokes.size();
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandle.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandle.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandle.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandle.java	2015-09-08 10:49:08.190659309 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandle.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandle.java	2016-09-21 06:38:08.180139393 +0100
 @@ -834,7 +834,7 @@
                  }
              }
@@ -1925,9 +3540,9 @@
                      ptypes.set(i, arrayElement);
                  }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandles.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandles.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandles.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandles.java	2015-09-08 10:49:08.190659309 +0100
-@@ -1950,7 +1950,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandles.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandles.java	2016-09-21 06:38:08.180139393 +0100
+@@ -1951,7 +1951,7 @@
          int inargs  = outargs + dropped;
          if (pos < 0 || pos >= inargs)
              throw newIllegalArgumentException("no argument type to remove");
@@ -1937,8 +3552,8 @@
          if (ptypes.size() != inargs)  throw newIllegalArgumentException("valueTypes");
          MethodType newType = MethodType.methodType(oldType.returnType(), ptypes);
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodType.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodType.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodType.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodType.java	2015-09-08 10:49:08.194659237 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodType.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodType.java	2016-09-21 06:38:08.180139393 +0100
 @@ -1048,7 +1048,7 @@
          private final float loadFactor;
  
@@ -1949,8 +3564,8 @@
          private Entry[] newTable(int n) {
              return new Entry[n];
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/management/ManagementFactory.java openjdk-boot/jdk/src/share/classes/java/lang/management/ManagementFactory.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/management/ManagementFactory.java	2015-09-08 10:42:12.530242473 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/lang/management/ManagementFactory.java	2015-09-08 10:49:08.194659237 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/management/ManagementFactory.java	2016-09-21 06:14:42.759430229 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/management/ManagementFactory.java	2016-09-21 06:38:08.180139393 +0100
 @@ -789,7 +789,7 @@
             getPlatformManagementInterfaces()
      {
@@ -1961,8 +3576,8 @@
              result.add(component.getMXBeanInterface());
          }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/management/PlatformComponent.java openjdk-boot/jdk/src/share/classes/java/lang/management/PlatformComponent.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/management/PlatformComponent.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/lang/management/PlatformComponent.java	2015-09-08 10:49:08.194659237 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/management/PlatformComponent.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/management/PlatformComponent.java	2016-09-21 06:38:08.184139328 +0100
 @@ -287,7 +287,7 @@
              List<T> getGcMXBeanList(Class<T> gcMXBeanIntf) {
          List<GarbageCollectorMXBean> list =
@@ -2000,8 +3615,8 @@
                  // Use String as the key rather than Class<?> to avoid
                  // causing unnecessary class loading of management interface
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/Package.java openjdk-boot/jdk/src/share/classes/java/lang/Package.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/Package.java	2015-09-08 10:42:12.562241887 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/lang/Package.java	2015-09-08 10:49:08.194659237 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/Package.java	2016-09-21 06:14:42.823429169 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/Package.java	2016-09-21 06:38:08.184139328 +0100
 @@ -599,13 +599,16 @@
      }
  
@@ -2023,8 +3638,8 @@
      private static native String getSystemPackage0(String name);
      private static native String[] getSystemPackages0();
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/ProcessBuilder.java openjdk-boot/jdk/src/share/classes/java/lang/ProcessBuilder.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/ProcessBuilder.java	2015-09-08 10:42:12.530242473 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/lang/ProcessBuilder.java	2015-09-08 10:49:08.194659237 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/ProcessBuilder.java	2016-09-21 06:14:42.759430229 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/ProcessBuilder.java	2016-09-21 06:38:08.184139328 +0100
 @@ -214,7 +214,7 @@
       * @param command a string array containing the program and its arguments
       */
@@ -2044,8 +3659,8 @@
              this.command.add(arg);
          return this;
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/reflect/Constructor.java openjdk-boot/jdk/src/share/classes/java/lang/reflect/Constructor.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/reflect/Constructor.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/lang/reflect/Constructor.java	2015-09-08 10:49:08.194659237 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/reflect/Constructor.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/reflect/Constructor.java	2016-09-21 06:38:08.184139328 +0100
 @@ -137,7 +137,7 @@
          // which implicitly requires that new java.lang.reflect
          // objects be fabricated for each reflective call on Class
@@ -2056,8 +3671,8 @@
                                                  exceptionTypes, modifiers, slot,
                                                  signature,
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/reflect/Proxy.java openjdk-boot/jdk/src/share/classes/java/lang/reflect/Proxy.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/reflect/Proxy.java	2015-09-08 10:42:12.530242473 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/lang/reflect/Proxy.java	2015-09-08 10:49:08.194659237 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/reflect/Proxy.java	2016-09-21 06:14:42.759430229 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/reflect/Proxy.java	2016-09-21 06:38:08.184139328 +0100
 @@ -234,7 +234,7 @@
       * a cache of proxy classes
       */
@@ -2077,8 +3692,8 @@
                  /*
                   * Verify that the class loader resolves the name of this
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/reflect/ReflectAccess.java openjdk-boot/jdk/src/share/classes/java/lang/reflect/ReflectAccess.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/reflect/ReflectAccess.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/lang/reflect/ReflectAccess.java	2015-09-08 10:49:08.194659237 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/reflect/ReflectAccess.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/reflect/ReflectAccess.java	2016-09-21 06:38:08.184139328 +0100
 @@ -84,7 +84,7 @@
                                               byte[] annotations,
                                               byte[] parameterAnnotations)
@@ -2089,8 +3704,8 @@
                                    checkedExceptions,
                                    modifiers,
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/reflect/WeakCache.java openjdk-boot/jdk/src/share/classes/java/lang/reflect/WeakCache.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/reflect/WeakCache.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/lang/reflect/WeakCache.java	2015-09-08 10:49:08.194659237 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/reflect/WeakCache.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/reflect/WeakCache.java	2016-09-21 06:38:08.184139328 +0100
 @@ -71,12 +71,12 @@
      }
  
@@ -2144,8 +3759,8 @@
  
          private final int hash;
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/StringCoding.java openjdk-boot/jdk/src/share/classes/java/lang/StringCoding.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/StringCoding.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/lang/StringCoding.java	2015-09-08 10:49:08.194659237 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/StringCoding.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/StringCoding.java	2016-09-21 06:38:08.184139328 +0100
 @@ -53,9 +53,9 @@
  
      /** The cached coders for each thread */
@@ -2159,8 +3774,8 @@
      private static boolean warnUnsupportedCharset = true;
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/String.java openjdk-boot/jdk/src/share/classes/java/lang/String.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/String.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/lang/String.java	2015-09-08 10:49:08.194659237 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/String.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/String.java	2016-09-21 06:38:08.184139328 +0100
 @@ -2282,7 +2282,7 @@
              int off = 0;
              int next = 0;
@@ -2171,8 +3786,8 @@
                  if (!limited || list.size() < limit - 1) {
                      list.add(substring(off, next));
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/Thread.java openjdk-boot/jdk/src/share/classes/java/lang/Thread.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/Thread.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/lang/Thread.java	2015-09-08 10:49:08.194659237 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/Thread.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/Thread.java	2016-09-21 06:38:08.184139328 +0100
 @@ -1638,7 +1638,8 @@
          // Get a snapshot of the list of all threads
          Thread[] threads = getThreads();
@@ -2198,8 +3813,8 @@
  
      /**
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/Throwable.java openjdk-boot/jdk/src/share/classes/java/lang/Throwable.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/Throwable.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/lang/Throwable.java	2015-09-08 10:49:08.194659237 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/Throwable.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/Throwable.java	2016-09-21 06:38:08.184139328 +0100
 @@ -918,7 +918,7 @@
                  // Use the sentinel for a zero-length list
                  suppressed = SUPPRESSED_SENTINEL;
@@ -2219,8 +3834,8 @@
          suppressedExceptions.add(exception);
      }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/net/InetAddress.java openjdk-boot/jdk/src/share/classes/java/net/InetAddress.java
---- openjdk-boot.orig/jdk/src/share/classes/java/net/InetAddress.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/net/InetAddress.java	2015-09-08 10:49:08.198659163 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/net/InetAddress.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/net/InetAddress.java	2016-09-21 06:38:08.184139328 +0100
 @@ -733,7 +733,7 @@
  
      static InetAddressImpl  impl;
@@ -2240,8 +3855,8 @@
                  for (String key : cache.keySet()) {
                      CacheEntry entry = cache.get(key);
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/net/URLClassLoader.java openjdk-boot/jdk/src/share/classes/java/net/URLClassLoader.java
---- openjdk-boot.orig/jdk/src/share/classes/java/net/URLClassLoader.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/net/URLClassLoader.java	2015-09-08 10:49:08.198659163 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/net/URLClassLoader.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/net/URLClassLoader.java	2016-09-21 06:38:08.184139328 +0100
 @@ -205,7 +205,7 @@
       */
  
@@ -2252,8 +3867,8 @@
      /**
       * Returns an input stream for reading the specified resource.
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/nio/file/Files.java openjdk-boot/jdk/src/share/classes/java/nio/file/Files.java
---- openjdk-boot.orig/jdk/src/share/classes/java/nio/file/Files.java	2015-09-08 10:42:12.566241814 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/nio/file/Files.java	2015-09-08 10:49:08.198659163 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/nio/file/Files.java	2016-09-21 06:14:42.823429169 +0100
++++ openjdk-boot/jdk/src/share/classes/java/nio/file/Files.java	2016-09-21 06:38:08.188139260 +0100
 @@ -1504,7 +1504,7 @@
              return AccessController
                  .doPrivileged(new PrivilegedAction<List<FileTypeDetector>>() {
@@ -2273,9 +3888,9 @@
                  String line = reader.readLine();
                  if (line == null)
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/security/AccessControlContext.java openjdk-boot/jdk/src/share/classes/java/security/AccessControlContext.java
---- openjdk-boot.orig/jdk/src/share/classes/java/security/AccessControlContext.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/security/AccessControlContext.java	2015-09-08 10:49:08.198659163 +0100
-@@ -127,7 +127,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/java/security/AccessControlContext.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/security/AccessControlContext.java	2016-09-21 06:38:08.188139260 +0100
+@@ -134,7 +134,7 @@
                  this.context = null;
              }
          } else {
@@ -2285,9 +3900,9 @@
                  if ((context[i] != null) &&  (!v.contains(context[i])))
                      v.add(context[i]);
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/security/BasicPermission.java openjdk-boot/jdk/src/share/classes/java/security/BasicPermission.java
---- openjdk-boot.orig/jdk/src/share/classes/java/security/BasicPermission.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/security/BasicPermission.java	2015-09-08 10:49:08.198659163 +0100
-@@ -515,7 +515,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/java/security/BasicPermission.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/security/BasicPermission.java	2016-09-21 06:38:08.188139260 +0100
+@@ -514,7 +514,7 @@
  
          // Copy perms into a Hashtable
          Hashtable<String, Permission> permissions =
@@ -2297,8 +3912,8 @@
          synchronized (this) {
              permissions.putAll(perms);
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/security/CodeSource.java openjdk-boot/jdk/src/share/classes/java/security/CodeSource.java
---- openjdk-boot.orig/jdk/src/share/classes/java/security/CodeSource.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/security/CodeSource.java	2015-09-08 10:49:08.198659163 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/security/CodeSource.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/security/CodeSource.java	2016-09-21 06:38:08.188139260 +0100
 @@ -188,7 +188,7 @@
          } else if (signers != null) {
              // Convert the code signers to certs
@@ -2322,9 +3937,9 @@
                  int j = i;
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/security/Permissions.java openjdk-boot/jdk/src/share/classes/java/security/Permissions.java
---- openjdk-boot.orig/jdk/src/share/classes/java/security/Permissions.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/security/Permissions.java	2015-09-08 10:49:08.198659163 +0100
-@@ -362,7 +362,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/java/security/Permissions.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/security/Permissions.java	2016-09-21 06:38:08.188139260 +0100
+@@ -361,7 +361,7 @@
  
          // Copy perms into a Hashtable
          Hashtable<Class<?>, PermissionCollection> perms =
@@ -2333,7 +3948,7 @@
          synchronized (this) {
              perms.putAll(permsMap);
          }
-@@ -567,7 +567,7 @@
+@@ -569,7 +569,7 @@
  
          // Copy perms into a Hashtable
          Hashtable<Permission, Permission> perms =
@@ -2343,9 +3958,9 @@
              perms.putAll(permsMap);
          }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/security/Policy.java openjdk-boot/jdk/src/share/classes/java/security/Policy.java
---- openjdk-boot.orig/jdk/src/share/classes/java/security/Policy.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/security/Policy.java	2015-09-08 10:49:08.198659163 +0100
-@@ -118,7 +118,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/java/security/Policy.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/security/Policy.java	2016-09-21 06:38:08.188139260 +0100
+@@ -109,7 +109,7 @@
  
      // PolicyInfo is stored in an AtomicReference
      private static AtomicReference<PolicyInfo> policy =
@@ -2354,7 +3969,7 @@
  
      private static final Debug debug = Debug.getInstance("policy");
  
-@@ -328,7 +328,7 @@
+@@ -319,7 +319,7 @@
          PermissionCollection policyPerms = null;
          synchronized (p) {
              if (p.pdMapping == null) {
@@ -2364,9 +3979,9 @@
          }
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/security/ProtectionDomain.java openjdk-boot/jdk/src/share/classes/java/security/ProtectionDomain.java
---- openjdk-boot.orig/jdk/src/share/classes/java/security/ProtectionDomain.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/security/ProtectionDomain.java	2015-09-08 10:49:08.198659163 +0100
-@@ -373,8 +373,8 @@
+--- openjdk-boot.orig/jdk/src/share/classes/java/security/ProtectionDomain.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/security/ProtectionDomain.java	2016-09-21 06:38:08.188139260 +0100
+@@ -400,8 +400,8 @@
          int swag = 32;
          int vcap = 8;
          Enumeration<Permission> e;
@@ -2378,9 +3993,9 @@
          //
          // Build a vector of domain permissions for subsequent merge
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/security/Provider.java openjdk-boot/jdk/src/share/classes/java/security/Provider.java
---- openjdk-boot.orig/jdk/src/share/classes/java/security/Provider.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/security/Provider.java	2015-09-08 10:49:08.198659163 +0100
-@@ -437,7 +437,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/java/security/Provider.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/security/Provider.java	2016-09-21 06:43:16.583015604 +0100
+@@ -434,7 +434,7 @@
  
      private void readObject(ObjectInputStream in)
                  throws IOException, ClassNotFoundException {
@@ -2389,7 +4004,7 @@
          for (Map.Entry<Object,Object> entry : super.entrySet()) {
              copy.put(entry.getKey(), entry.getValue());
          }
-@@ -719,7 +719,7 @@
+@@ -716,7 +716,7 @@
          }
          if (serviceSet == null) {
              ensureLegacyParsed();
@@ -2398,18 +4013,18 @@
              if (serviceMap != null) {
                  set.addAll(serviceMap.values());
              }
-@@ -1407,7 +1407,7 @@
+@@ -1404,7 +1404,7 @@
                      if (s != null) {
                          String[] classNames = s.split("\\|");
-                         List<Class> classList =
+                         List<Class<?>> classList =
 -                            new ArrayList<>(classNames.length);
-+                            new ArrayList<Class>(classNames.length);
++                            new ArrayList<Class<?>>(classNames.length);
                          for (String className : classNames) {
-                             Class clazz = getKeyClass(className);
+                             Class<?> clazz = getKeyClass(className);
                              if (clazz != null) {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/security/SecureClassLoader.java openjdk-boot/jdk/src/share/classes/java/security/SecureClassLoader.java
---- openjdk-boot.orig/jdk/src/share/classes/java/security/SecureClassLoader.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/security/SecureClassLoader.java	2015-09-08 10:49:08.198659163 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/security/SecureClassLoader.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/security/SecureClassLoader.java	2016-09-21 06:38:08.188139260 +0100
 @@ -50,7 +50,7 @@
      // HashMap that maps CodeSource to ProtectionDomain
      // @GuardedBy("pdcache")
@@ -2420,9 +4035,9 @@
      private static final Debug debug = Debug.getInstance("scl");
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/security/Security.java openjdk-boot/jdk/src/share/classes/java/security/Security.java
---- openjdk-boot.orig/jdk/src/share/classes/java/security/Security.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/security/Security.java	2015-09-08 10:49:08.198659163 +0100
-@@ -546,7 +546,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/java/security/Security.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/security/Security.java	2016-09-21 06:42:57.387334370 +0100
+@@ -544,7 +544,7 @@
              value = filter.substring(index + 1);
          }
  
@@ -2431,7 +4046,7 @@
          hashtableFilter.put(key, value);
  
          return (getProviders(hashtableFilter));
-@@ -606,7 +606,7 @@
+@@ -604,7 +604,7 @@
          // Then only return those providers who satisfy the selection criteria.
          Provider[] allProviders = Security.getProviders();
          Set<String> keySet = filter.keySet();
@@ -2440,16 +4055,16 @@
  
          // Returns all installed providers
          // if the selection criteria is null.
-@@ -660,7 +660,7 @@
-     }
+@@ -659,7 +659,7 @@
  
      // Map containing cached Spi Class objects of the specified type
--    private static final Map<String, Class> spiMap = new ConcurrentHashMap<>();
-+    private static final Map<String, Class> spiMap = new ConcurrentHashMap<String, Class>();
+     private static final Map<String, Class<?>> spiMap =
+-            new ConcurrentHashMap<>();
++	new ConcurrentHashMap<String, Class<?>>();
  
      /**
       * Return the Class object for the given engine type
-@@ -884,7 +884,7 @@
+@@ -883,7 +883,7 @@
                                                  String attrName,
                                                  String filterValue,
                                                  Provider[] allProviders) {
@@ -2458,8 +4073,8 @@
          for (int i = 0; i < allProviders.length; i++) {
              if (isCriterionSatisfied(allProviders[i], serviceName,
                                       algName,
-@@ -1081,7 +1081,7 @@
-             return Collections.EMPTY_SET;
+@@ -1080,7 +1080,7 @@
+             return Collections.emptySet();
          }
  
 -        HashSet<String> result = new HashSet<>();
@@ -2468,8 +4083,8 @@
  
          for (int i = 0; i < providers.length; i++) {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/security/UnresolvedPermissionCollection.java openjdk-boot/jdk/src/share/classes/java/security/UnresolvedPermissionCollection.java
---- openjdk-boot.orig/jdk/src/share/classes/java/security/UnresolvedPermissionCollection.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/security/UnresolvedPermissionCollection.java	2015-09-08 10:49:08.198659163 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/security/UnresolvedPermissionCollection.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/security/UnresolvedPermissionCollection.java	2016-09-21 06:38:08.192139194 +0100
 @@ -119,7 +119,7 @@
  
      public Enumeration<Permission> elements() {
@@ -2497,7 +4112,7 @@
                  synchronized (list) {
                      vec.addAll(list);
                  }
-@@ -206,7 +206,7 @@
+@@ -210,7 +210,7 @@
          for (Map.Entry<String, Vector<UnresolvedPermission>> e : set) {
              // Convert Vector into ArrayList
              Vector<UnresolvedPermission> vec = e.getValue();
@@ -2507,9 +4122,9 @@
  
              // Add to Hashtable being serialized
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/security/UnresolvedPermission.java openjdk-boot/jdk/src/share/classes/java/security/UnresolvedPermission.java
---- openjdk-boot.orig/jdk/src/share/classes/java/security/UnresolvedPermission.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/security/UnresolvedPermission.java	2015-09-08 10:49:08.198659163 +0100
-@@ -198,7 +198,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/java/security/UnresolvedPermission.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/security/UnresolvedPermission.java	2016-09-21 06:38:08.192139194 +0100
+@@ -196,7 +196,7 @@
                  if (this.certs == null) {
                      // extract the signer certs
                      ArrayList<java.security.cert.Certificate> signerCerts =
@@ -2519,8 +4134,8 @@
                      while (i < certs.length) {
                          signerCerts.add(certs[i]);
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/AbstractList.java openjdk-boot/jdk/src/share/classes/java/util/AbstractList.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/AbstractList.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/AbstractList.java	2015-09-08 10:49:08.202659091 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/AbstractList.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/AbstractList.java	2016-09-21 06:38:08.192139194 +0100
 @@ -482,8 +482,8 @@
       */
      public List<E> subList(int fromIndex, int toIndex) {
@@ -2550,8 +4165,8 @@
      }
  }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/Arrays.java openjdk-boot/jdk/src/share/classes/java/util/Arrays.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/Arrays.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/Arrays.java	2015-09-08 10:49:08.202659091 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/Arrays.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/Arrays.java	2016-09-21 06:38:08.192139194 +0100
 @@ -2825,7 +2825,7 @@
       */
      @SafeVarargs
@@ -2562,8 +4177,8 @@
  
      /**
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/Collections.java openjdk-boot/jdk/src/share/classes/java/util/Collections.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/Collections.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/Collections.java	2015-09-08 10:49:08.202659091 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/Collections.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/Collections.java	2016-09-21 06:38:08.192139194 +0100
 @@ -1035,7 +1035,7 @@
       * @return an unmodifiable view of the specified collection.
       */
@@ -3189,8 +4804,8 @@
  
      /**
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/Currency.java openjdk-boot/jdk/src/share/classes/java/util/Currency.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/Currency.java	2015-09-08 10:42:12.566241814 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/Currency.java	2015-09-08 10:49:08.202659091 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/Currency.java	2016-09-21 06:14:42.823429169 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/Currency.java	2016-09-21 06:38:08.192139194 +0100
 @@ -101,7 +101,7 @@
  
      // class data: instance map
@@ -3201,8 +4816,8 @@
  
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/EnumMap.java openjdk-boot/jdk/src/share/classes/java/util/EnumMap.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/EnumMap.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/EnumMap.java	2015-09-08 10:49:08.202659091 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/EnumMap.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/EnumMap.java	2016-09-21 06:38:08.192139194 +0100
 @@ -508,7 +508,7 @@
              int j = 0;
              for (int i = 0; i < vals.length; i++)
@@ -3213,8 +4828,8 @@
              return a;
          }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/EnumSet.java openjdk-boot/jdk/src/share/classes/java/util/EnumSet.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/EnumSet.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/EnumSet.java	2015-09-08 10:49:08.202659091 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/EnumSet.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/EnumSet.java	2016-09-21 06:38:08.192139194 +0100
 @@ -110,9 +110,9 @@
              throw new ClassCastException(elementType + " not an enum");
  
@@ -3237,8 +4852,8 @@
  
      // readObject method for the serialization proxy pattern
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/Formatter.java openjdk-boot/jdk/src/share/classes/java/util/Formatter.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/Formatter.java	2015-09-08 10:42:12.530242473 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/Formatter.java	2015-09-08 10:49:08.202659091 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/Formatter.java	2016-09-21 06:14:42.763430164 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/Formatter.java	2016-09-21 06:38:08.196139128 +0100
 @@ -2514,7 +2514,7 @@
       * Finds format specifiers in the format string.
       */
@@ -3249,8 +4864,8 @@
          for (int i = 0, len = s.length(); i < len; ) {
              if (m.find(i)) {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/HashMap.java openjdk-boot/jdk/src/share/classes/java/util/HashMap.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/HashMap.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/HashMap.java	2015-09-08 10:49:08.202659091 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/HashMap.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/HashMap.java	2016-09-21 06:38:08.196139128 +0100
 @@ -894,7 +894,7 @@
       */
      void createEntry(int hash, K key, V value, int bucketIndex) {
@@ -3261,8 +4876,8 @@
      }
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/HashSet.java openjdk-boot/jdk/src/share/classes/java/util/HashSet.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/HashSet.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/HashSet.java	2015-09-08 10:49:08.206659018 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/HashSet.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/HashSet.java	2016-09-21 06:38:08.196139128 +0100
 @@ -100,7 +100,7 @@
       * default initial capacity (16) and load factor (0.75).
       */
@@ -3309,8 +4924,8 @@
  
      /**
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/Hashtable.java openjdk-boot/jdk/src/share/classes/java/util/Hashtable.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/Hashtable.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/Hashtable.java	2015-09-08 10:49:08.206659018 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/Hashtable.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/Hashtable.java	2016-09-21 06:38:08.196139128 +0100
 @@ -538,7 +538,7 @@
  
          // Creates the new entry.
@@ -3366,8 +4981,8 @@
          }
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/IdentityHashMap.java openjdk-boot/jdk/src/share/classes/java/util/IdentityHashMap.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/IdentityHashMap.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/IdentityHashMap.java	2015-09-08 10:49:08.206659018 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/IdentityHashMap.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/IdentityHashMap.java	2016-09-21 06:38:08.196139128 +0100
 @@ -1145,7 +1145,7 @@
              Object[] result = new Object[size];
              Iterator<Map.Entry<K,V>> it = iterator();
@@ -3387,8 +5002,8 @@
                  a[size] = null;
              return a;
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/JumboEnumSet.java openjdk-boot/jdk/src/share/classes/java/util/JumboEnumSet.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/JumboEnumSet.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/JumboEnumSet.java	2015-09-08 10:49:08.206659018 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/JumboEnumSet.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/JumboEnumSet.java	2016-09-21 06:38:08.196139128 +0100
 @@ -91,7 +91,7 @@
       * @return an iterator over the elements contained in this set
       */
@@ -3399,8 +5014,8 @@
  
      private class EnumSetIterator<E extends Enum<E>> implements Iterator<E> {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/LinkedHashMap.java openjdk-boot/jdk/src/share/classes/java/util/LinkedHashMap.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/LinkedHashMap.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/LinkedHashMap.java	2015-09-08 10:49:08.206659018 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/LinkedHashMap.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/LinkedHashMap.java	2016-09-21 06:38:08.196139128 +0100
 @@ -238,7 +238,7 @@
       */
      @Override
@@ -3420,8 +5035,8 @@
          e.addBefore(header);
          size++;
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/LinkedList.java openjdk-boot/jdk/src/share/classes/java/util/LinkedList.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/LinkedList.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/LinkedList.java	2015-09-08 10:49:08.206659018 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/LinkedList.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/LinkedList.java	2016-09-21 06:38:08.196139128 +0100
 @@ -122,7 +122,7 @@
       */
      private void linkFirst(E e) {
@@ -3459,8 +5074,8 @@
                  first = newNode;
              else
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/ListResourceBundle.java openjdk-boot/jdk/src/share/classes/java/util/ListResourceBundle.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/ListResourceBundle.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/ListResourceBundle.java	2015-09-08 10:49:08.206659018 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/ListResourceBundle.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/ListResourceBundle.java	2016-09-21 06:38:08.196139128 +0100
 @@ -187,7 +187,7 @@
              return;
  
@@ -3471,8 +5086,8 @@
              // key must be non-null String, value must be non-null
              String key = (String) contents[i][0];
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/Locale.java openjdk-boot/jdk/src/share/classes/java/util/Locale.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/Locale.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/Locale.java	2015-09-08 10:49:08.206659018 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/Locale.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/Locale.java	2016-09-21 06:38:08.196139128 +0100
 @@ -1793,7 +1793,7 @@
                  return formatList(variantNames, listPattern, listCompositionPattern);
              }
@@ -3483,8 +5098,8 @@
              names.add(languageName);
          }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/logging/FileHandler.java openjdk-boot/jdk/src/share/classes/java/util/logging/FileHandler.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/logging/FileHandler.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/logging/FileHandler.java	2015-09-08 10:49:08.206659018 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/logging/FileHandler.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/logging/FileHandler.java	2016-09-21 06:38:08.196139128 +0100
 @@ -127,7 +127,7 @@
      private FileOutputStream lockStream;
      private File files[];
@@ -3495,8 +5110,8 @@
      // A metered stream is a subclass of OutputStream that
      //   (a) forwards all its output to a target stream
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/logging/Level.java openjdk-boot/jdk/src/share/classes/java/util/logging/Level.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/logging/Level.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/logging/Level.java	2015-09-08 10:49:08.206659018 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/logging/Level.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/logging/Level.java	2016-09-21 06:38:08.196139128 +0100
 @@ -518,8 +518,8 @@
      // were final, the following KnownLevel implementation can be removed.
      // Future API change should take this into consideration.
@@ -3526,8 +5141,8 @@
              }
              list.add(o);
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/logging/Logger.java openjdk-boot/jdk/src/share/classes/java/util/logging/Logger.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/logging/Logger.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/logging/Logger.java	2015-09-08 10:49:08.206659018 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/logging/Logger.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/logging/Logger.java	2016-09-21 06:38:08.196139128 +0100
 @@ -177,7 +177,7 @@
      private volatile LogManager manager;
      private String name;
@@ -3547,8 +5162,8 @@
              if (ref == null) {
                  // we didn't have a previous parent
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/logging/Logging.java openjdk-boot/jdk/src/share/classes/java/util/logging/Logging.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/logging/Logging.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/logging/Logging.java	2015-09-08 10:49:08.206659018 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/logging/Logging.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/logging/Logging.java	2016-09-21 06:38:08.196139128 +0100
 @@ -56,7 +56,7 @@
  
      public List<String> getLoggerNames() {
@@ -3559,8 +5174,8 @@
          for (; loggers.hasMoreElements();) {
              array.add((String) loggers.nextElement());
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/logging/LogManager.java openjdk-boot/jdk/src/share/classes/java/util/logging/LogManager.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/logging/LogManager.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/logging/LogManager.java	2015-09-08 10:49:08.206659018 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/logging/LogManager.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/logging/LogManager.java	2016-09-21 06:38:08.200139062 +0100
 @@ -389,7 +389,7 @@
                      // find the AppContext of the applet code
                      // will be null if we are in the main app context.
@@ -3616,8 +5231,8 @@
              int end = ix;
              while (end < hands.length()) {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/logging/LogRecord.java openjdk-boot/jdk/src/share/classes/java/util/logging/LogRecord.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/logging/LogRecord.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/logging/LogRecord.java	2015-09-08 10:49:08.206659018 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/logging/LogRecord.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/logging/LogRecord.java	2016-09-21 06:38:08.200139062 +0100
 @@ -85,7 +85,8 @@
      private static final AtomicInteger nextThreadId
          = new AtomicInteger(MIN_SEQUENTIAL_THREAD_ID);
@@ -3629,8 +5244,8 @@
      /**
       * @serial Logging message level
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/prefs/AbstractPreferences.java openjdk-boot/jdk/src/share/classes/java/util/prefs/AbstractPreferences.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/prefs/AbstractPreferences.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/prefs/AbstractPreferences.java	2015-09-08 10:49:08.210658945 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/prefs/AbstractPreferences.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/prefs/AbstractPreferences.java	2016-09-21 06:38:08.200139062 +0100
 @@ -155,7 +155,8 @@
       * All known unremoved children of this node.  (This "cache" is consulted
       * prior to calling childSpi() or getChild().
@@ -3661,8 +5276,8 @@
      /**
       * These two classes are used to distinguish NodeChangeEvents on
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/PriorityQueue.java openjdk-boot/jdk/src/share/classes/java/util/PriorityQueue.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/PriorityQueue.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/PriorityQueue.java	2015-09-08 10:49:08.210658945 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/PriorityQueue.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/PriorityQueue.java	2016-09-21 06:38:08.200139062 +0100
 @@ -538,7 +538,7 @@
                      cursor--;
                  else {
@@ -3673,8 +5288,8 @@
                  }
              } else if (lastRetElt != null) {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/Properties.java openjdk-boot/jdk/src/share/classes/java/util/Properties.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/Properties.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/Properties.java	2015-09-08 10:49:08.210658945 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/Properties.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/Properties.java	2016-09-21 06:38:08.200139062 +0100
 @@ -1010,7 +1010,7 @@
       * @since   1.6
       */
@@ -3685,8 +5300,8 @@
          return h.keySet();
      }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/regex/Pattern.java openjdk-boot/jdk/src/share/classes/java/util/regex/Pattern.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/regex/Pattern.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/regex/Pattern.java	2015-09-08 10:49:08.210658945 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/regex/Pattern.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/regex/Pattern.java	2016-09-21 06:38:08.200139062 +0100
 @@ -321,7 +321,7 @@
   *     <td headers="matches">Nothing, but quotes all characters until <tt>\E</tt></td></tr>
   * <tr><td valign="top" headers="construct quot"><tt>\E</tt></td>
@@ -3724,8 +5339,8 @@
          static {
              // Unicode character property aliases, defined in
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/regex/UnicodeProp.java openjdk-boot/jdk/src/share/classes/java/util/regex/UnicodeProp.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/regex/UnicodeProp.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/regex/UnicodeProp.java	2015-09-08 10:49:08.210658945 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/regex/UnicodeProp.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/regex/UnicodeProp.java	2016-09-21 06:38:08.200139062 +0100
 @@ -193,8 +193,8 @@
          }
      };
@@ -3738,8 +5353,8 @@
          posix.put("ALPHA", "ALPHABETIC");
          posix.put("LOWER", "LOWERCASE");
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/RegularEnumSet.java openjdk-boot/jdk/src/share/classes/java/util/RegularEnumSet.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/RegularEnumSet.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/RegularEnumSet.java	2015-09-08 10:49:08.210658945 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/RegularEnumSet.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/RegularEnumSet.java	2016-09-21 06:38:08.200139062 +0100
 @@ -72,7 +72,7 @@
       * @return an iterator over the elements contained in this set
       */
@@ -3750,8 +5365,8 @@
  
      private class EnumSetIterator<E extends Enum<E>> implements Iterator<E> {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/ResourceBundle.java openjdk-boot/jdk/src/share/classes/java/util/ResourceBundle.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/ResourceBundle.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/ResourceBundle.java	2015-09-08 10:49:08.210658945 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/ResourceBundle.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/ResourceBundle.java	2016-09-21 06:38:08.200139062 +0100
 @@ -291,7 +291,7 @@
       * name for compatibility with some workarounds for bug 4212439.
       */
@@ -3816,8 +5431,8 @@
                  if (variants != null) {
                      for (String v : variants) {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/ServiceLoader.java openjdk-boot/jdk/src/share/classes/java/util/ServiceLoader.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/ServiceLoader.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/ServiceLoader.java	2015-09-08 10:49:08.210658945 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/ServiceLoader.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/ServiceLoader.java	2016-09-21 06:38:08.200139062 +0100
 @@ -191,7 +191,7 @@
      private ClassLoader loader;
  
@@ -3846,8 +5461,8 @@
  
      /**
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/TimSort.java openjdk-boot/jdk/src/share/classes/java/util/TimSort.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/TimSort.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/TimSort.java	2015-09-08 10:49:08.210658945 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/TimSort.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/TimSort.java	2016-09-21 06:38:08.200139062 +0100
 @@ -196,7 +196,7 @@
           * extending short natural runs to minRun elements, and merging runs
           * to maintain stack invariant.
@@ -3858,8 +5473,8 @@
          do {
              // Identify next run
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/TreeMap.java openjdk-boot/jdk/src/share/classes/java/util/TreeMap.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/TreeMap.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/TreeMap.java	2015-09-08 10:49:08.214658872 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/TreeMap.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/TreeMap.java	2016-09-21 06:38:08.204138994 +0100
 @@ -530,7 +530,7 @@
          if (t == null) {
              compare(key, key); // type (and possibly null) check
@@ -3915,8 +5530,8 @@
          // color nodes in non-full bottommost level red
          if (level == redLevel)
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/TreeSet.java openjdk-boot/jdk/src/share/classes/java/util/TreeSet.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/TreeSet.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/TreeSet.java	2015-09-08 10:49:08.214658872 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/TreeSet.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/TreeSet.java	2016-09-21 06:38:08.204138994 +0100
 @@ -138,7 +138,7 @@
       *        ordering} of the elements will be used.
       */
@@ -3984,8 +5599,8 @@
  
          // Read in size
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/WeakHashMap.java openjdk-boot/jdk/src/share/classes/java/util/WeakHashMap.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/WeakHashMap.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/WeakHashMap.java	2015-09-08 10:49:08.214658872 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/WeakHashMap.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/WeakHashMap.java	2016-09-21 06:38:08.204138994 +0100
 @@ -172,7 +172,7 @@
      /**
       * Reference queue for cleared WeakEntries
@@ -4018,8 +5633,8 @@
          }
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/zip/ZipFile.java openjdk-boot/jdk/src/share/classes/java/util/zip/ZipFile.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/zip/ZipFile.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/zip/ZipFile.java	2015-09-08 10:49:08.214658872 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/zip/ZipFile.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/zip/ZipFile.java	2016-09-21 06:38:08.204138994 +0100
 @@ -321,7 +321,7 @@
  
      // the outstanding inputstreams that need to be closed,
@@ -4048,8 +5663,8 @@
                      for (Map.Entry<InputStream, Inflater> e : copy.entrySet()) {
                          e.getKey().close();
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/zip/ZipOutputStream.java openjdk-boot/jdk/src/share/classes/java/util/zip/ZipOutputStream.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/zip/ZipOutputStream.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/zip/ZipOutputStream.java	2015-09-08 10:49:08.214658872 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/zip/ZipOutputStream.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/zip/ZipOutputStream.java	2016-09-21 06:38:08.204138994 +0100
 @@ -53,8 +53,8 @@
      }
  
@@ -4061,9 +5676,42 @@
      private CRC32 crc = new CRC32();
      private long written = 0;
      private long locoff = 0;
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/crypto/Cipher.java openjdk-boot/jdk/src/share/classes/javax/crypto/Cipher.java
+--- openjdk-boot.orig/jdk/src/share/classes/javax/crypto/Cipher.java	2016-09-21 16:21:08.322679216 +0100
++++ openjdk-boot/jdk/src/share/classes/javax/crypto/Cipher.java	2016-09-21 17:31:00.081247464 +0100
+@@ -417,7 +417,7 @@
+             return Collections.singletonList(tr);
+         } else { // if ((mode != null) && (pad != null)) {
+             // DES/CBC/PKCS5Padding
+-            List<Transform> list = new ArrayList<>(4);
++            List<Transform> list = new ArrayList<Transform>(4);
+             list.add(new Transform(alg, "/" + mode + "/" + pad, null, null));
+             list.add(new Transform(alg, "/" + mode, null, pad));
+             list.add(new Transform(alg, "//" + pad, mode, null));
+@@ -474,7 +474,7 @@
+             throws NoSuchAlgorithmException, NoSuchPaddingException
+     {
+         List<Transform> transforms = getTransforms(transformation);
+-        List<ServiceId> cipherServices = new ArrayList<>(transforms.size());
++        List<ServiceId> cipherServices = new ArrayList<ServiceId>(transforms.size());
+         for (Transform transform : transforms) {
+             cipherServices.add(new ServiceId("Cipher", transform.transform));
+         }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/crypto/CryptoAllPermission.java openjdk-boot/jdk/src/share/classes/javax/crypto/CryptoAllPermission.java
+--- openjdk-boot.orig/jdk/src/share/classes/javax/crypto/CryptoAllPermission.java	2016-09-21 16:21:08.334679015 +0100
++++ openjdk-boot/jdk/src/share/classes/javax/crypto/CryptoAllPermission.java	2016-09-21 17:37:00.499342683 +0100
+@@ -172,7 +172,7 @@
+      * @return an enumeration of all the CryptoAllPermission objects.
+      */
+     public Enumeration<Permission> elements() {
+-        Vector<Permission> v = new Vector<>(1);
++        Vector<Permission> v = new Vector<Permission>(1);
+         if (all_allowed) v.add(CryptoAllPermission.INSTANCE);
+         return v.elements();
+     }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/crypto/CryptoPermissions.java openjdk-boot/jdk/src/share/classes/javax/crypto/CryptoPermissions.java
---- openjdk-boot.orig/jdk/src/share/classes/javax/crypto/CryptoPermissions.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/javax/crypto/CryptoPermissions.java	2015-09-08 10:49:08.214658872 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/javax/crypto/CryptoPermissions.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/javax/crypto/CryptoPermissions.java	2016-09-21 06:42:13.792058393 +0100
 @@ -84,7 +84,7 @@
       * no CryptoPermissionCollections.
       */
@@ -4073,16 +5721,25 @@
      }
  
      /**
-@@ -424,7 +424,7 @@
- 
-         String alg = cryptoPerm.getAlgorithm();
- 
--        PermissionCollection pc = (PermissionCollection)perms.get(alg);
-+        PermissionCollection pc = perms.get(alg);
- 
-         if (pc == null) {
-             pc = cryptoPerm.newPermissionCollection();
-@@ -440,15 +440,15 @@
+@@ -294,7 +294,7 @@
+      */
+     private CryptoPermission[] getMinimum(PermissionCollection thisPc,
+                                           PermissionCollection thatPc) {
+-        Vector<CryptoPermission> permVector = new Vector<>(2);
++        Vector<CryptoPermission> permVector = new Vector<CryptoPermission>(2);
+ 
+         Enumeration<Permission> thisPcPermissions = thisPc.elements();
+ 
+@@ -350,7 +350,7 @@
+      */
+     private CryptoPermission[] getMinimum(int maxKeySize,
+                                           PermissionCollection pc) {
+-        Vector<CryptoPermission> permVector = new Vector<>(1);
++        Vector<CryptoPermission> permVector = new Vector<CryptoPermission>(1);
+ 
+         Enumeration<Permission> enum_ = pc.elements();
+ 
+@@ -435,15 +435,15 @@
                  (Hashtable<String,PermissionCollection>)
                  (fields.get("perms", null));
          if (permTable != null) {
@@ -4101,21 +5758,92 @@
          ObjectOutputStream.PutField fields = s.putFields();
          fields.put("perms", permTable);
          s.writeFields();
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/crypto/CryptoPolicyParser.java openjdk-boot/jdk/src/share/classes/javax/crypto/CryptoPolicyParser.java
+--- openjdk-boot.orig/jdk/src/share/classes/javax/crypto/CryptoPolicyParser.java	2016-09-21 16:21:08.342678881 +0100
++++ openjdk-boot/jdk/src/share/classes/javax/crypto/CryptoPolicyParser.java	2016-09-21 17:36:51.403491197 +0100
+@@ -252,7 +252,7 @@
+             // AlgorithmParameterSpec class name.
+             String algParamSpecClassName = match("quoted string");
+ 
+-            Vector<Integer> paramsV = new Vector<>(1);
++            Vector<Integer> paramsV = new Vector<Integer>(1);
+             while (peek(",")) {
+                 match(",");
+                 if (peek("number")) {
+@@ -456,7 +456,7 @@
+     }
+ 
+     CryptoPermission[] getPermissions() {
+-        Vector<CryptoPermission> result = new Vector<>();
++        Vector<CryptoPermission> result = new Vector<CryptoPermission>();
+ 
+         Enumeration<GrantEntry> grantEnum = grantEntries.elements();
+         while (grantEnum.hasMoreElements()) {
+@@ -498,7 +498,7 @@
+ 
+         if (processedPermissions == null) {
+             processedPermissions = new Hashtable<String, Vector<String>>();
+-            Vector<String> exemptionMechanisms = new Vector<>(1);
++            Vector<String> exemptionMechanisms = new Vector<String>(1);
+             exemptionMechanisms.addElement(thisExemptionMechanism);
+             processedPermissions.put(alg, exemptionMechanisms);
+             return true;
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/crypto/JceSecurity.java openjdk-boot/jdk/src/share/classes/javax/crypto/JceSecurity.java
+--- openjdk-boot.orig/jdk/src/share/classes/javax/crypto/JceSecurity.java	2016-09-21 16:21:08.350678746 +0100
++++ openjdk-boot/jdk/src/share/classes/javax/crypto/JceSecurity.java	2016-09-21 17:34:25.293882639 +0100
+@@ -58,11 +58,11 @@
+     // value == PROVIDER_VERIFIED is successfully verified
+     // value is failure cause Exception in error case
+     private final static Map<Provider, Object> verificationResults =
+-            new IdentityHashMap<>();
++	    new IdentityHashMap<Provider, Object>();
+ 
+     // Map<Provider,?> of the providers currently being verified
+     private final static Map<Provider, Object> verifyingProviders =
+-            new IdentityHashMap<>();
++	    new IdentityHashMap<Provider, Object>();
+ 
+     // Set the default value. May be changed in the static initializer.
+     private static boolean isRestricted = true;
+@@ -213,7 +213,7 @@
+ 
+     // reference to a Map we use as a cache for codebases
+     private static final Map<Class<?>, URL> codeBaseCacheRef =
+-            new WeakHashMap<>();
++	    new WeakHashMap<Class<?>, URL>();
+ 
+     /*
+      * Returns the CodeBase for the given class.
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/crypto/JceSecurityManager.java openjdk-boot/jdk/src/share/classes/javax/crypto/JceSecurityManager.java
---- openjdk-boot.orig/jdk/src/share/classes/javax/crypto/JceSecurityManager.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/javax/crypto/JceSecurityManager.java	2015-09-08 10:49:08.214658872 +0100
-@@ -54,7 +54,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/javax/crypto/JceSecurityManager.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/javax/crypto/JceSecurityManager.java	2016-09-21 06:41:35.360696737 +0100
+@@ -52,9 +52,9 @@
+     private static final CryptoPermissions exemptPolicy;
      private static final CryptoAllPermission allPerm;
-     private static final Vector TrustedCallersCache = new Vector(2);
+     private static final Vector<Class<?>> TrustedCallersCache =
+-            new Vector<>(2);
++            new Vector<Class<?>>(2);
      private static final ConcurrentMap<URL,CryptoPermissions> exemptCache =
 -            new ConcurrentHashMap<>();
-+        new ConcurrentHashMap<URL,CryptoPermissions>();
++	new ConcurrentHashMap<URL,CryptoPermissions>();
      private static final CryptoPermissions CACHE_NULL_MARK =
              new CryptoPermissions();
  
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/management/remote/rmi/RMIJRMPServerImpl.java openjdk-boot/jdk/src/share/classes/javax/management/remote/rmi/RMIJRMPServerImpl.java
+--- openjdk-boot.orig/jdk/src/share/classes/javax/management/remote/rmi/RMIJRMPServerImpl.java	2016-09-21 16:22:27.001358900 +0100
++++ openjdk-boot/jdk/src/share/classes/javax/management/remote/rmi/RMIJRMPServerImpl.java	2016-09-21 17:36:30.783827857 +0100
+@@ -103,7 +103,7 @@
+                 = (String[]) this.env.get(EnvHelp.CREDENTIAL_TYPES);
+         List<String> types = null;
+         if (credentialsTypes != null) {
+-            types = new ArrayList<>();
++            types = new ArrayList<String>();
+             for (String type : credentialsTypes) {
+                 if (type == null) {
+                     throw new IllegalArgumentException("A credential type is null.");
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/script/ScriptEngineManager.java openjdk-boot/jdk/src/share/classes/javax/script/ScriptEngineManager.java
---- openjdk-boot.orig/jdk/src/share/classes/javax/script/ScriptEngineManager.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/javax/script/ScriptEngineManager.java	2015-09-08 10:49:08.214658872 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/javax/script/ScriptEngineManager.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/javax/script/ScriptEngineManager.java	2016-09-21 06:38:08.204138994 +0100
 @@ -116,7 +116,7 @@
              return null;
          }
@@ -4126,8 +5854,8 @@
              while (itr.hasNext()) {
                  try {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/security/auth/kerberos/DelegationPermission.java openjdk-boot/jdk/src/share/classes/javax/security/auth/kerberos/DelegationPermission.java
---- openjdk-boot.orig/jdk/src/share/classes/javax/security/auth/kerberos/DelegationPermission.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/javax/security/auth/kerberos/DelegationPermission.java	2015-09-08 10:49:08.214658872 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/javax/security/auth/kerberos/DelegationPermission.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/javax/security/auth/kerberos/DelegationPermission.java	2016-09-21 06:38:08.204138994 +0100
 @@ -361,7 +361,7 @@
          // Don't call out.defaultWriteObject()
  
@@ -4138,9 +5866,9 @@
          synchronized (this) {
              permissions.addAll(perms);
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/security/auth/kerberos/ServicePermission.java openjdk-boot/jdk/src/share/classes/javax/security/auth/kerberos/ServicePermission.java
---- openjdk-boot.orig/jdk/src/share/classes/javax/security/auth/kerberos/ServicePermission.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/javax/security/auth/kerberos/ServicePermission.java	2015-09-08 10:49:08.214658872 +0100
-@@ -569,7 +569,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/javax/security/auth/kerberos/ServicePermission.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/javax/security/auth/kerberos/ServicePermission.java	2016-09-21 06:38:08.204138994 +0100
+@@ -590,7 +590,7 @@
          // Don't call out.defaultWriteObject()
  
          // Write out Vector
@@ -4150,8 +5878,8 @@
          synchronized (this) {
              permissions.addAll(perms);
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/security/auth/PrivateCredentialPermission.java openjdk-boot/jdk/src/share/classes/javax/security/auth/PrivateCredentialPermission.java
---- openjdk-boot.orig/jdk/src/share/classes/javax/security/auth/PrivateCredentialPermission.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/javax/security/auth/PrivateCredentialPermission.java	2015-09-08 10:49:08.214658872 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/javax/security/auth/PrivateCredentialPermission.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/javax/security/auth/PrivateCredentialPermission.java	2016-09-21 06:38:08.204138994 +0100
 @@ -329,7 +329,7 @@
              throw new IllegalArgumentException("invalid empty name");
          }
@@ -4162,9 +5890,9 @@
          String principalClass = null;
          String principalName = null;
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/security/auth/SubjectDomainCombiner.java openjdk-boot/jdk/src/share/classes/javax/security/auth/SubjectDomainCombiner.java
---- openjdk-boot.orig/jdk/src/share/classes/javax/security/auth/SubjectDomainCombiner.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/javax/security/auth/SubjectDomainCombiner.java	2015-09-08 10:49:08.214658872 +0100
-@@ -48,7 +48,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/javax/security/auth/SubjectDomainCombiner.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/javax/security/auth/SubjectDomainCombiner.java	2016-09-21 06:38:08.204138994 +0100
+@@ -50,7 +50,7 @@
  
      private Subject subject;
      private WeakKeyValueMap<ProtectionDomain, ProtectionDomain> cachedPDs =
@@ -4174,8 +5902,8 @@
      private Principal[] principals;
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/swing/JDesktopPane.java openjdk-boot/jdk/src/share/classes/javax/swing/JDesktopPane.java
---- openjdk-boot.orig/jdk/src/share/classes/javax/swing/JDesktopPane.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/javax/swing/JDesktopPane.java	2015-09-08 10:49:08.214658872 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/javax/swing/JDesktopPane.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/javax/swing/JDesktopPane.java	2016-09-21 06:38:08.204138994 +0100
 @@ -267,7 +267,7 @@
  
      private static Collection<JInternalFrame> getAllFrames(Container parent) {
@@ -4186,8 +5914,8 @@
          for (i = 0; i < count; i++) {
              Component next = parent.getComponent(i);
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/jdk/net/Sockets.java openjdk-boot/jdk/src/share/classes/jdk/net/Sockets.java
---- openjdk-boot.orig/jdk/src/share/classes/jdk/net/Sockets.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/jdk/net/Sockets.java	2015-09-08 10:49:08.214658872 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/jdk/net/Sockets.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/jdk/net/Sockets.java	2016-09-21 06:38:08.208138928 +0100
 @@ -58,7 +58,7 @@
  public class Sockets {
  
@@ -4234,8 +5962,8 @@
          set.add(StandardSocketOptions.SO_RCVBUF);
          set.add(StandardSocketOptions.SO_REUSEADDR);
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/font/CreatedFontTracker.java openjdk-boot/jdk/src/share/classes/sun/font/CreatedFontTracker.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/font/CreatedFontTracker.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/font/CreatedFontTracker.java	2015-09-08 10:49:08.214658872 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/font/CreatedFontTracker.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/font/CreatedFontTracker.java	2016-09-21 06:38:08.208138928 +0100
 @@ -109,7 +109,7 @@
       * Note that this only applies to createFont() from an InputStream object.
       */
@@ -4246,8 +5974,8 @@
          private static Thread t = null;
          static void init() {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/invoke/util/ValueConversions.java openjdk-boot/jdk/src/share/classes/sun/invoke/util/ValueConversions.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/invoke/util/ValueConversions.java	2015-09-08 10:42:12.606241082 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/invoke/util/ValueConversions.java	2015-09-08 10:49:08.214658872 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/invoke/util/ValueConversions.java	2016-09-21 06:14:42.863428507 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/invoke/util/ValueConversions.java	2016-09-21 06:38:08.208138928 +0100
 @@ -60,7 +60,7 @@
          EnumMap<Wrapper, MethodHandle>[] caches
                  = (EnumMap<Wrapper, MethodHandle>[]) new EnumMap<?,?>[n];
@@ -4285,8 +6013,8 @@
              MethodHandle mh = findCollector("list", mhs.size(), List.class);
              if (mh == null)  break;
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/io/CharacterEncoding.java openjdk-boot/jdk/src/share/classes/sun/io/CharacterEncoding.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/io/CharacterEncoding.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/io/CharacterEncoding.java	2015-09-08 10:49:08.218658800 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/io/CharacterEncoding.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/io/CharacterEncoding.java	2016-09-21 06:38:08.208138928 +0100
 @@ -54,7 +54,7 @@
      private static volatile boolean installedAll;
  
@@ -4297,8 +6025,8 @@
          aliasTable.put("us-ascii",              "ASCII");
          aliasTable.put("ascii",                 "ASCII");
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/io/Converters.java openjdk-boot/jdk/src/share/classes/sun/io/Converters.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/io/Converters.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/io/Converters.java	2015-09-08 10:49:08.218658800 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/io/Converters.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/io/Converters.java	2016-09-21 06:38:08.208138928 +0100
 @@ -120,7 +120,7 @@
  
      private static Class<?> cache(int type, Object encoding, Class<?> c) {
@@ -4308,9 +6036,21 @@
          moveToFront(srs, CACHE_SIZE - 1);
          return c;
      }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/java2d/cmm/lcms/LCMSProfile.java openjdk-boot/jdk/src/share/classes/sun/java2d/cmm/lcms/LCMSProfile.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/java2d/cmm/lcms/LCMSProfile.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/java2d/cmm/lcms/LCMSProfile.java	2016-09-21 06:38:08.256138130 +0100
+@@ -61,7 +61,7 @@
+ 
+         TagCache(LCMSProfile p) {
+             profile = p;
+-            tags = new HashMap<>();
++            tags = new HashMap<Integer, TagData>();
+         }
+ 
+         TagData getTag(int sig) {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/launcher/LauncherHelper.java openjdk-boot/jdk/src/share/classes/sun/launcher/LauncherHelper.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/launcher/LauncherHelper.java	2015-09-08 10:42:12.566241814 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/launcher/LauncherHelper.java	2015-09-08 10:49:08.218658800 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/launcher/LauncherHelper.java	2016-09-21 06:14:42.823429169 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/launcher/LauncherHelper.java	2016-09-21 06:38:08.208138928 +0100
 @@ -171,7 +171,7 @@
      private static void printProperties(PrintStream ostream) {
          Properties p = System.getProperties();
@@ -4348,8 +6088,8 @@
              System.err.println("Incoming arguments:");
          }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/management/jdp/JdpPacketReader.java openjdk-boot/jdk/src/share/classes/sun/management/jdp/JdpPacketReader.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/management/jdp/JdpPacketReader.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/management/jdp/JdpPacketReader.java	2015-09-08 10:49:08.218658800 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/management/jdp/JdpPacketReader.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/management/jdp/JdpPacketReader.java	2016-09-21 06:38:08.208138928 +0100
 @@ -120,7 +120,7 @@
  
          String key = null, value = null;
@@ -4360,8 +6100,8 @@
              while (true) {
                  key = getEntry();
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/management/ManagementFactoryHelper.java openjdk-boot/jdk/src/share/classes/sun/management/ManagementFactoryHelper.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/management/ManagementFactoryHelper.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/management/ManagementFactoryHelper.java	2015-09-08 10:49:08.218658800 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/management/ManagementFactoryHelper.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/management/ManagementFactoryHelper.java	2016-09-21 06:38:08.208138928 +0100
 @@ -205,7 +205,7 @@
      private static List<BufferPoolMXBean> bufferPools = null;
      public static synchronized List<BufferPoolMXBean> getBufferPoolMXBeans() {
@@ -4372,8 +6112,8 @@
                  .getDirectBufferPool()));
              bufferPools.add(createBufferPoolMXBean(sun.nio.ch.FileChannelImpl
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/net/spi/nameservice/dns/DNSNameService.java openjdk-boot/jdk/src/share/classes/sun/net/spi/nameservice/dns/DNSNameService.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/net/spi/nameservice/dns/DNSNameService.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/net/spi/nameservice/dns/DNSNameService.java	2015-09-08 10:49:08.218658800 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/net/spi/nameservice/dns/DNSNameService.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/net/spi/nameservice/dns/DNSNameService.java	2016-09-21 06:38:08.208138928 +0100
 @@ -52,7 +52,7 @@
  
      // Per-thread soft cache of the last temporary context
@@ -4402,8 +6142,8 @@
  
          // do the query
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java	2015-09-08 10:49:08.218658800 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java	2016-09-21 06:38:08.208138928 +0100
 @@ -111,7 +111,7 @@
       * at the same time, then all but the first will block until
       * the first completes its authentication.
@@ -4414,9 +6154,9 @@
      /* check if a request for this destination is in progress
       * return false immediately if not. Otherwise block until
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java	2015-09-08 10:49:08.218658800 +0100
-@@ -2659,7 +2659,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java	2016-09-21 06:38:08.208138928 +0100
+@@ -2660,7 +2660,7 @@
          if (filteredHeaders != null)
              return filteredHeaders;
  
@@ -4425,7 +6165,7 @@
  
          if (cachedHeaders != null)
              headers = cachedHeaders.getHeaders();
-@@ -2668,7 +2668,7 @@
+@@ -2669,7 +2669,7 @@
  
          for (Map.Entry<String, List<String>> e: headers.entrySet()) {
              String key = e.getKey();
@@ -4435,8 +6175,8 @@
                  String fVal = filterHeaderField(key, value);
                  if (fVal != null)
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/net/www/URLConnection.java openjdk-boot/jdk/src/share/classes/sun/net/www/URLConnection.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/net/www/URLConnection.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/net/www/URLConnection.java	2015-09-08 10:49:08.218658800 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/net/www/URLConnection.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/net/www/URLConnection.java	2016-09-21 06:38:08.208138928 +0100
 @@ -239,7 +239,7 @@
          url = null;
      }
@@ -4447,8 +6187,8 @@
      public synchronized static void setProxiedHost(String host) {
          proxiedHosts.put(host.toLowerCase(), null);
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/nio/cs/AbstractCharsetProvider.java openjdk-boot/jdk/src/share/classes/sun/nio/cs/AbstractCharsetProvider.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/nio/cs/AbstractCharsetProvider.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/nio/cs/AbstractCharsetProvider.java	2015-09-08 10:49:08.218658800 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/nio/cs/AbstractCharsetProvider.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/nio/cs/AbstractCharsetProvider.java	2016-09-21 06:38:08.208138928 +0100
 @@ -49,22 +49,22 @@
      /* Maps canonical names to class names
       */
@@ -4486,8 +6226,8 @@
  
          return new Iterator<Charset>() {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java	2015-09-08 10:49:08.218658800 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java	2016-09-21 06:38:08.208138928 +0100
 @@ -84,7 +84,7 @@
              throw new IllegalArgumentException("'" + name() + ":" +
                  attribute + "' not recognized");
@@ -4498,8 +6238,8 @@
              result.put(ACL_NAME, getAcl());
          if (owner)
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java	2015-09-08 10:49:08.218658800 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java	2016-09-21 06:38:08.208138928 +0100
 @@ -89,8 +89,8 @@
       * Used to build a map of attribute name/values.
       */
@@ -4512,8 +6252,8 @@
  
          private AttributesBuilder(Set<String> allowed, String[] requested) {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/AbstractPoller.java openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractPoller.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/AbstractPoller.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractPoller.java	2015-09-08 10:49:08.218658800 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/AbstractPoller.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractPoller.java	2016-09-21 06:38:08.212138862 +0100
 @@ -102,7 +102,7 @@
              throw new NullPointerException();
          if (events.length == 0)
@@ -4524,8 +6264,8 @@
              // standard events
              if (event == StandardWatchEventKinds.ENTRY_CREATE ||
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/AbstractUserDefinedFileAttributeView.java openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractUserDefinedFileAttributeView.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/AbstractUserDefinedFileAttributeView.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractUserDefinedFileAttributeView.java	2015-09-08 10:49:08.218658800 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/AbstractUserDefinedFileAttributeView.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractUserDefinedFileAttributeView.java	2016-09-21 06:38:08.212138862 +0100
 @@ -77,7 +77,7 @@
          throws IOException
      {
@@ -4545,8 +6285,8 @@
              int size = size(name);
              byte[] buf = new byte[size];
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java openjdk-boot/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java	2015-09-08 10:49:08.218658800 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java	2016-09-21 06:38:08.212138862 +0100
 @@ -71,7 +71,7 @@
  
      @Override
@@ -4557,8 +6297,8 @@
              if (attribute.equals("*") || attribute.equals(OWNER_NAME)) {
                  result.put(OWNER_NAME, getOwner());
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/Util.java openjdk-boot/jdk/src/share/classes/sun/nio/fs/Util.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/Util.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/Util.java	2015-09-08 10:49:08.218658800 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/Util.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/Util.java	2016-09-21 06:38:08.212138862 +0100
 @@ -63,7 +63,7 @@
       * Returns a Set containing the given elements.
       */
@@ -4577,9 +6317,21 @@
          for (E e: elements) {
              set.add(e);
          }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java openjdk-boot/jdk/src/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java	2016-09-21 16:22:28.169339303 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java	2016-09-21 17:33:49.198474533 +0100
+@@ -442,7 +442,7 @@
+ 
+         Map<String, Class<?>> memberTypes = annotationType.memberTypes();
+         // consistent with runtime Map type
+-        Map<String, Object> mv = new LinkedHashMap<>();
++        Map<String, Object> mv = new LinkedHashMap<String, Object>();
+ 
+         // If there are annotation members without values, that
+         // situation is handled by the invoke method.
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/reflect/generics/parser/SignatureParser.java openjdk-boot/jdk/src/share/classes/sun/reflect/generics/parser/SignatureParser.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/reflect/generics/parser/SignatureParser.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/reflect/generics/parser/SignatureParser.java	2015-09-08 10:49:08.218658800 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/reflect/generics/parser/SignatureParser.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/reflect/generics/parser/SignatureParser.java	2016-09-21 06:38:08.212138862 +0100
 @@ -229,7 +229,7 @@
       *     "<" FormalTypeParameter+ ">"
       */
@@ -4644,8 +6396,8 @@
              ets.add(parseThrowsSignature());
          }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/registry/RegistryImpl.java openjdk-boot/jdk/src/share/classes/sun/rmi/registry/RegistryImpl.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/registry/RegistryImpl.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/rmi/registry/RegistryImpl.java	2015-09-08 10:49:08.218658800 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/registry/RegistryImpl.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/rmi/registry/RegistryImpl.java	2016-09-21 06:38:08.212138862 +0100
 @@ -78,9 +78,9 @@
      /* indicate compatibility with JDK 1.1.x version of class */
      private static final long serialVersionUID = 4666870661827494597L;
@@ -4659,8 +6411,8 @@
      private static ObjID id = new ObjID(ObjID.REGISTRY_ID);
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/rmic/BatchEnvironment.java openjdk-boot/jdk/src/share/classes/sun/rmi/rmic/BatchEnvironment.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/rmic/BatchEnvironment.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/rmi/rmic/BatchEnvironment.java	2015-09-08 10:49:08.222658727 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/rmic/BatchEnvironment.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/rmi/rmic/BatchEnvironment.java	2016-09-21 06:38:08.212138862 +0100
 @@ -160,7 +160,7 @@
      }
  
@@ -4671,8 +6423,8 @@
      /**
       * Remember a generated source file generated so that it
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/rmic/Main.java openjdk-boot/jdk/src/share/classes/sun/rmi/rmic/Main.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/rmic/Main.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/rmi/rmic/Main.java	2015-09-08 10:49:08.222658727 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/rmic/Main.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/rmi/rmic/Main.java	2016-09-21 06:38:08.212138862 +0100
 @@ -184,7 +184,7 @@
          destDir = null;
          flags = F_WARNINGS;
@@ -4692,8 +6444,8 @@
          // Pre-process command line for @file arguments
          try {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/rmic/RMIGenerator.java openjdk-boot/jdk/src/share/classes/sun/rmi/rmic/RMIGenerator.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/rmic/RMIGenerator.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/rmi/rmic/RMIGenerator.java	2015-09-08 10:49:08.222658727 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/rmic/RMIGenerator.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/rmi/rmic/RMIGenerator.java	2016-09-21 06:38:08.212138862 +0100
 @@ -61,7 +61,7 @@
   */
  public class RMIGenerator implements RMIConstants, Generator {
@@ -4713,8 +6465,8 @@
          uniqueList.addElement(defRuntimeException);
          uniqueList.addElement(defRemoteException);
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/ActivationGroupImpl.java openjdk-boot/jdk/src/share/classes/sun/rmi/server/ActivationGroupImpl.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/ActivationGroupImpl.java	2015-09-08 10:42:12.534242400 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/rmi/server/ActivationGroupImpl.java	2015-09-08 10:49:08.222658727 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/ActivationGroupImpl.java	2016-09-21 06:14:42.763430164 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/rmi/server/ActivationGroupImpl.java	2016-09-21 06:38:08.212138862 +0100
 @@ -66,10 +66,10 @@
  
      /** maps persistent IDs to activated remote objects */
@@ -4729,8 +6481,8 @@
      /**
       * Creates a default activation group implementation.
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/Activation.java openjdk-boot/jdk/src/share/classes/sun/rmi/server/Activation.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/Activation.java	2015-09-08 10:42:12.570241741 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/rmi/server/Activation.java	2015-09-08 10:49:08.222658727 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/Activation.java	2016-09-21 06:14:42.827429104 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/rmi/server/Activation.java	2016-09-21 06:38:08.212138862 +0100
 @@ -149,10 +149,10 @@
  
      /** maps activation id to its respective group id */
@@ -4787,8 +6539,8 @@
              /*
               * Parse arguments
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/LoaderHandler.java openjdk-boot/jdk/src/share/classes/sun/rmi/server/LoaderHandler.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/LoaderHandler.java	2015-09-08 10:42:12.534242400 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/rmi/server/LoaderHandler.java	2015-09-08 10:49:08.222658727 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/LoaderHandler.java	2016-09-21 06:14:42.763430164 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/rmi/server/LoaderHandler.java	2016-09-21 06:38:08.212138862 +0100
 @@ -113,11 +113,11 @@
       * garbage collected.
       */
@@ -4813,9 +6565,9 @@
      /**
       * Convert an array of URL objects into a corresponding string
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/MarshalInputStream.java openjdk-boot/jdk/src/share/classes/sun/rmi/server/MarshalInputStream.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/MarshalInputStream.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/rmi/server/MarshalInputStream.java	2015-09-08 10:49:08.222658727 +0100
-@@ -71,14 +71,14 @@
+--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/MarshalInputStream.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/rmi/server/MarshalInputStream.java	2016-09-21 06:38:08.216138796 +0100
+@@ -76,14 +76,14 @@
  
      /** table to hold sun classes to which access is explicitly permitted */
      protected static Map<String, Class<?>> permittedSunClasses
@@ -4833,9 +6585,9 @@
      /**
       * if true, load classes (if not available locally) only from the
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/UnicastServerRef.java openjdk-boot/jdk/src/share/classes/sun/rmi/server/UnicastServerRef.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/UnicastServerRef.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/rmi/server/UnicastServerRef.java	2015-09-08 10:49:08.222658727 +0100
-@@ -537,7 +537,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/UnicastServerRef.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/rmi/server/UnicastServerRef.java	2016-09-21 06:38:08.216138796 +0100
+@@ -538,7 +538,7 @@
          HashToMethod_Maps() {}
  
          protected Map<Long,Method> computeValue(Class<?> remoteClass) {
@@ -4845,8 +6597,8 @@
                   cl != null;
                   cl = cl.getSuperclass())
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/Util.java openjdk-boot/jdk/src/share/classes/sun/rmi/server/Util.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/Util.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/rmi/server/Util.java	2015-09-08 10:49:08.222658727 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/Util.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/rmi/server/Util.java	2016-09-21 06:38:08.216138796 +0100
 @@ -207,7 +207,7 @@
       * @throws  NullPointerException if remoteClass is null
       */
@@ -4857,8 +6609,8 @@
          return list.toArray(new Class<?>[list.size()]);
      }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/WeakClassHashMap.java openjdk-boot/jdk/src/share/classes/sun/rmi/server/WeakClassHashMap.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/WeakClassHashMap.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/rmi/server/WeakClassHashMap.java	2015-09-08 10:49:08.222658727 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/WeakClassHashMap.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/rmi/server/WeakClassHashMap.java	2016-09-21 06:38:08.216138796 +0100
 @@ -46,7 +46,7 @@
   **/
  public abstract class WeakClassHashMap<V> {
@@ -4869,8 +6621,8 @@
      protected WeakClassHashMap() { }
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/ConnectionInputStream.java openjdk-boot/jdk/src/share/classes/sun/rmi/transport/ConnectionInputStream.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/ConnectionInputStream.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/ConnectionInputStream.java	2015-09-08 10:49:08.222658727 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/ConnectionInputStream.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/ConnectionInputStream.java	2016-09-21 06:38:08.216138796 +0100
 @@ -43,7 +43,7 @@
      private boolean dgcAckNeeded = false;
  
@@ -4881,8 +6633,8 @@
      /** identifier for gc ack*/
      private UID ackID;
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/DGCAckHandler.java openjdk-boot/jdk/src/share/classes/sun/rmi/transport/DGCAckHandler.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/DGCAckHandler.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/DGCAckHandler.java	2015-09-08 10:49:08.222658727 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/DGCAckHandler.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/DGCAckHandler.java	2016-09-21 06:38:08.216138796 +0100
 @@ -78,7 +78,7 @@
          Collections.synchronizedMap(new HashMap<UID,DGCAckHandler>());
  
@@ -4893,9 +6645,9 @@
  
      /**
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/DGCClient.java openjdk-boot/jdk/src/share/classes/sun/rmi/transport/DGCClient.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/DGCClient.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/DGCClient.java	2015-09-08 10:49:08.222658727 +0100
-@@ -176,9 +176,9 @@
+--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/DGCClient.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/DGCClient.java	2016-09-21 06:38:08.216138796 +0100
+@@ -193,9 +193,9 @@
          private DGC dgc;
  
          /** table of refs held for endpoint: maps LiveRef to RefEntry */
@@ -4907,7 +6659,7 @@
  
          /** true if this entry has been removed from the global table */
          private boolean removed = false;
-@@ -200,12 +200,12 @@
+@@ -217,12 +217,12 @@
          private boolean interruptible = false;
  
          /** reference queue for phantom references */
@@ -4923,7 +6675,7 @@
          /** handle for GC latency request (for future cancellation) */
          private static GC.LatencyRequest gcLatencyRequest = null;
  
-@@ -282,7 +282,7 @@
+@@ -299,7 +299,7 @@
                          refEntry = new RefEntry(refClone);
                          refTable.put(refClone, refEntry);
                          if (refsToDirty == null) {
@@ -4932,7 +6684,7 @@
                          }
                          refsToDirty.add(refEntry);
                      }
-@@ -564,7 +564,7 @@
+@@ -581,7 +581,7 @@
                              needRenewal = true;
                              if (!invalidRefs.isEmpty()) {
                                  refsToDirty = invalidRefs;
@@ -4941,7 +6693,7 @@
                              }
                              sequenceNum = getNextSequenceNum();
                          }
-@@ -603,12 +603,12 @@
+@@ -627,12 +627,12 @@
                  if (refEntry.isRefSetEmpty()) {
                      if (refEntry.hasDirtyFailed()) {
                          if (strongCleans == null) {
@@ -4956,7 +6708,7 @@
                          }
                          normalCleans.add(refEntry);
                      }
-@@ -704,7 +704,7 @@
+@@ -728,7 +728,7 @@
              /** LiveRef value for this entry (not a registered instance) */
              private LiveRef ref;
              /** set of phantom references to registered instances */
@@ -4966,9 +6718,9 @@
              private boolean dirtyFailed = false;
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/DGCImpl.java openjdk-boot/jdk/src/share/classes/sun/rmi/transport/DGCImpl.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/DGCImpl.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/DGCImpl.java	2015-09-08 10:49:08.222658727 +0100
-@@ -84,7 +84,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/DGCImpl.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/DGCImpl.java	2016-09-21 06:38:08.216138796 +0100
+@@ -88,7 +88,7 @@
      /** remote implementation of DGC interface for this VM */
      private static DGCImpl dgc;
      /** table that maps VMID to LeaseInfo */
@@ -4977,7 +6729,7 @@
      /** checks for lease expiration */
      private Future<?> checker = null;
  
-@@ -236,7 +236,7 @@
+@@ -240,7 +240,7 @@
          long time = System.currentTimeMillis();
  
          /* List of vmids that need to be removed from the leaseTable */
@@ -4986,7 +6738,7 @@
  
          /* Build a list of leaseInfo objects that need to have
           * targets removed from their notifySet.  Remove expired
-@@ -313,7 +313,7 @@
+@@ -328,7 +328,7 @@
      private static class LeaseInfo {
          VMID vmid;
          long expiration;
@@ -4996,8 +6748,8 @@
          LeaseInfo(VMID vmid, long lease) {
              this.vmid = vmid;
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/ObjectTable.java openjdk-boot/jdk/src/share/classes/sun/rmi/transport/ObjectTable.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/ObjectTable.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/ObjectTable.java	2015-09-08 10:49:08.222658727 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/ObjectTable.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/ObjectTable.java	2016-09-21 06:38:08.216138796 +0100
 @@ -62,9 +62,9 @@
  
      /** tables mapping to Target, keyed from ObjectEndpoint and impl object */
@@ -5020,8 +6772,8 @@
      /** handle for GC latency request (for future cancellation) */
      private static GC.LatencyRequest gcLatencyRequest = null;
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/proxy/CGIHandler.java openjdk-boot/jdk/src/share/classes/sun/rmi/transport/proxy/CGIHandler.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/proxy/CGIHandler.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/proxy/CGIHandler.java	2015-09-08 10:49:08.222658727 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/proxy/CGIHandler.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/proxy/CGIHandler.java	2016-09-21 06:38:08.216138796 +0100
 @@ -116,7 +116,7 @@
      /* construct table mapping command strings to handlers */
      private static Hashtable<String, CGICommandHandler> commandLookup;
@@ -5032,8 +6784,8 @@
              commandLookup.put(commands[i].getName(), commands[i]);
      }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java openjdk-boot/jdk/src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java	2015-09-08 10:42:12.570241741 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java	2015-09-08 10:49:08.226658654 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java	2016-09-21 06:14:42.827429104 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java	2016-09-21 06:38:08.220138728 +0100
 @@ -75,13 +75,13 @@
  
      /** table of hosts successfully connected to and the factory used */
@@ -5060,8 +6812,8 @@
  
          try {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/Target.java openjdk-boot/jdk/src/share/classes/sun/rmi/transport/Target.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/Target.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/Target.java	2015-09-08 10:49:08.226658654 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/Target.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/Target.java	2016-09-21 06:38:08.220138728 +0100
 @@ -53,10 +53,10 @@
      /** stub for remote object */
      private final Remote stub;
@@ -5076,8 +6828,8 @@
      private final AccessControlContext acc;
      /** context class loader in which target was created */
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/tcp/ConnectionMultiplexer.java openjdk-boot/jdk/src/share/classes/sun/rmi/transport/tcp/ConnectionMultiplexer.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/tcp/ConnectionMultiplexer.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/tcp/ConnectionMultiplexer.java	2015-09-08 10:49:08.226658654 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/tcp/ConnectionMultiplexer.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/tcp/ConnectionMultiplexer.java	2016-09-21 06:38:08.220138728 +0100
 @@ -85,7 +85,7 @@
      private DataOutputStream dataOut;
  
@@ -5088,8 +6840,8 @@
      /** number of currently open connections */
      private int numConnections = 0;
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/tcp/TCPChannel.java openjdk-boot/jdk/src/share/classes/sun/rmi/transport/tcp/TCPChannel.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/tcp/TCPChannel.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/tcp/TCPChannel.java	2015-09-08 10:49:08.226658654 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/tcp/TCPChannel.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/tcp/TCPChannel.java	2016-09-21 06:38:08.220138728 +0100
 @@ -64,7 +64,7 @@
      private final TCPTransport tr;
      /** list of cached connections */
@@ -5109,8 +6861,8 @@
      /** thread ID counter */
      private static int threadNum = 0;
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/tcp/TCPEndpoint.java openjdk-boot/jdk/src/share/classes/sun/rmi/transport/tcp/TCPEndpoint.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/tcp/TCPEndpoint.java	2015-09-08 10:42:12.534242400 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/tcp/TCPEndpoint.java	2015-09-08 10:49:08.226658654 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/tcp/TCPEndpoint.java	2016-09-21 06:14:42.763430164 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/tcp/TCPEndpoint.java	2016-09-21 06:38:08.220138728 +0100
 @@ -148,7 +148,7 @@
      // TBD: should this be a weak hash table?
      private static final
@@ -5121,8 +6873,8 @@
      /**
       * Create an endpoint for a specified host and port.
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/tcp/TCPTransport.java openjdk-boot/jdk/src/share/classes/sun/rmi/transport/tcp/TCPTransport.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/tcp/TCPTransport.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/tcp/TCPTransport.java	2015-09-08 10:49:08.226658654 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/tcp/TCPTransport.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/tcp/TCPTransport.java	2016-09-21 06:38:08.220138728 +0100
 @@ -123,7 +123,7 @@
  
      /** client host for the current thread's connection */
@@ -5142,8 +6894,8 @@
      static final RMISocketFactory defaultSocketFactory =
          RMISocketFactory.getDefaultSocketFactory();
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/Transport.java openjdk-boot/jdk/src/share/classes/sun/rmi/transport/Transport.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/Transport.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/Transport.java	2015-09-08 10:49:08.226658654 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/Transport.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/Transport.java	2016-09-21 06:38:08.220138728 +0100
 @@ -66,7 +66,7 @@
          Log.getLog("sun.rmi.transport.misc", "transport", Transport.logLevel);
  
@@ -5154,9 +6906,9 @@
      /** ObjID for DGCImpl */
      private static final ObjID dgcID = new ObjID(ObjID.DGC_ID);
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/acl/AclEntryImpl.java openjdk-boot/jdk/src/share/classes/sun/security/acl/AclEntryImpl.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/acl/AclEntryImpl.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/acl/AclEntryImpl.java	2015-09-08 10:49:08.226658654 +0100
-@@ -37,7 +37,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/acl/AclEntryImpl.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/acl/AclEntryImpl.java	2016-09-21 06:38:08.220138728 +0100
+@@ -36,7 +36,7 @@
   */
  public class AclEntryImpl implements AclEntry {
      private Principal user = null;
@@ -5166,8 +6918,8 @@
  
      /**
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/acl/AclImpl.java openjdk-boot/jdk/src/share/classes/sun/security/acl/AclImpl.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/acl/AclImpl.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/acl/AclImpl.java	2015-09-08 10:49:08.226658654 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/acl/AclImpl.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/acl/AclImpl.java	2016-09-21 06:38:08.220138728 +0100
 @@ -41,15 +41,15 @@
      // or principal.
      //
@@ -5208,8 +6960,8 @@
          while (e1.hasMoreElements())
              v.addElement(e1.nextElement());
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/acl/GroupImpl.java openjdk-boot/jdk/src/share/classes/sun/security/acl/GroupImpl.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/acl/GroupImpl.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/acl/GroupImpl.java	2015-09-08 10:49:08.226658654 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/acl/GroupImpl.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/acl/GroupImpl.java	2016-09-21 06:38:08.220138728 +0100
 @@ -34,7 +34,7 @@
   * @author      Satish Dharmaraj
   */
@@ -5229,9 +6981,9 @@
          }
      }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/jca/ProviderList.java openjdk-boot/jdk/src/share/classes/sun/security/jca/ProviderList.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/jca/ProviderList.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/jca/ProviderList.java	2015-09-08 10:49:08.226658654 +0100
-@@ -96,7 +96,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/jca/ProviderList.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/jca/ProviderList.java	2016-09-21 06:38:08.220138728 +0100
+@@ -97,7 +97,7 @@
          if (providerList.getProvider(p.getName()) != null) {
              return providerList;
          }
@@ -5240,7 +6992,7 @@
                                      (Arrays.asList(providerList.configs));
          int n = list.size();
          if ((position < 0) || (position > n)) {
-@@ -160,7 +160,7 @@
+@@ -161,7 +161,7 @@
       * Return a new ProviderList parsed from the java.security Properties.
       */
      private ProviderList() {
@@ -5249,7 +7001,7 @@
          for (int i = 1; true; i++) {
              String entry = Security.getProperty("security.provider." + i);
              if (entry == null) {
-@@ -200,7 +200,7 @@
+@@ -201,7 +201,7 @@
       * possible recursion and deadlock during verification.
       */
      ProviderList getJarList(String[] jarClassNames) {
@@ -5258,7 +7010,7 @@
          for (String className : jarClassNames) {
              ProviderConfig newConfig = new ProviderConfig(className);
              for (ProviderConfig config : configs) {
-@@ -356,7 +356,7 @@
+@@ -357,7 +357,7 @@
       */
      @Deprecated
      public List<Service> getServices(String type, List<String> algorithms) {
@@ -5268,9 +7020,9 @@
              ids.add(new ServiceId(type, alg));
          }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/jca/Providers.java openjdk-boot/jdk/src/share/classes/sun/security/jca/Providers.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/jca/Providers.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/jca/Providers.java	2015-09-08 10:49:08.226658654 +0100
-@@ -40,7 +40,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/jca/Providers.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/jca/Providers.java	2016-09-21 06:38:08.220138728 +0100
+@@ -37,7 +37,7 @@
  public class Providers {
  
      private static final ThreadLocal<ProviderList> threadLists =
@@ -5280,8 +7032,8 @@
      // number of threads currently using thread-local provider lists
      // tracked to allow an optimization if == 0
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/jgss/krb5/Krb5Util.java openjdk-boot/jdk/src/share/classes/sun/security/jgss/krb5/Krb5Util.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/jgss/krb5/Krb5Util.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/jgss/krb5/Krb5Util.java	2015-09-08 10:49:08.226658654 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/jgss/krb5/Krb5Util.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/jgss/krb5/Krb5Util.java	2016-09-21 06:38:08.220138728 +0100
 @@ -251,7 +251,7 @@
          }
  
@@ -5292,9 +7044,9 @@
                  keys.add(k);
              }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/Config.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/Config.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/Config.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/Config.java	2015-09-08 10:49:08.226658654 +0100
-@@ -576,7 +576,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/Config.java	2016-09-21 06:14:42.651432019 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/Config.java	2016-09-21 06:38:08.224138662 +0100
+@@ -610,7 +610,7 @@
                  }
                  })));
                  String Line;
@@ -5303,7 +7055,7 @@
                  String previous = null;
                  while ((Line = br.readLine()) != null) {
                      // ignore comments and blank line in the configuration file.
-@@ -637,7 +637,7 @@
+@@ -671,7 +671,7 @@
              throw new KrbException("I/O error while reading" +
                          " configuration file.");
          }
@@ -5312,7 +7064,7 @@
          for (int i = 0; i < v.size(); i++) {
              String line = v.elementAt(i).trim();
              if (line.equalsIgnoreCase("[realms]")) {
-@@ -646,7 +646,7 @@
+@@ -680,7 +680,7 @@
                      if ((count == v.size()) ||
                          (v.elementAt(count).startsWith("["))) {
                          Hashtable<String,Hashtable<String,Vector<String>>> temp =
@@ -5321,7 +7073,7 @@
                          temp = parseRealmField(v, i + 1, count);
                          table.put("realms", temp);
                          i = count - 1;
-@@ -659,7 +659,7 @@
+@@ -693,7 +693,7 @@
                      if ((count == v.size()) ||
                          (v.elementAt(count).startsWith("["))) {
                          Hashtable<String,Hashtable<String,Vector<String>>> temp =
@@ -5330,7 +7082,7 @@
                          temp = parseRealmField(v, i + 1, count);
                          table.put("capaths", temp);
                          i = count - 1;
-@@ -811,7 +811,7 @@
+@@ -845,7 +845,7 @@
       * Parses key-value pairs under a stanza name.
       */
      private Hashtable<String,String>  parseField(Vector<String> v, int start, int end) {
@@ -5339,7 +7091,7 @@
          String line;
          for (int i = start; i < end; i++) {
              line = v.elementAt(i);
-@@ -833,7 +833,7 @@
+@@ -867,7 +867,7 @@
       * information for the realm given within a pair of braces.
       */
      private Hashtable<String,Hashtable<String,Vector<String>>> parseRealmField(Vector<String> v, int start, int end) {
@@ -5348,7 +7100,7 @@
          String line;
          for (int i = start; i < end; i++) {
              line = v.elementAt(i).trim();
-@@ -873,9 +873,9 @@
+@@ -907,9 +907,9 @@
       * Parses key-value pairs within each braces under [realms].
       */
      private Hashtable<String,Vector<String>> parseRealmFieldEx(Vector<String> v, int start, int end) {
@@ -5361,7 +7113,7 @@
          String line = "";
          String key;
          for (int i = start; i < end; i++) {
-@@ -980,7 +980,7 @@
+@@ -1016,7 +1016,7 @@
              }
              st = new StringTokenizer(default_enctypes, delim);
              int len = st.countTokens();
@@ -5371,9 +7123,9 @@
              for (int i = 0; i < len; i++) {
                  type = getType(st.nextToken());
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/Authenticator.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/Authenticator.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/Authenticator.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/Authenticator.java	2015-09-08 10:49:08.230658581 +0100
-@@ -176,7 +176,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/Authenticator.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/Authenticator.java	2016-09-21 06:38:08.224138662 +0100
+@@ -173,7 +173,7 @@
       * @exception IOException if an I/O error occurs while reading encoded data.
       */
      public byte[] asn1Encode() throws Asn1Exception, IOException {
@@ -5383,8 +7135,8 @@
          temp.putInteger(BigInteger.valueOf(authenticator_vno));
          v.addElement(new DerValue(DerValue.createTag(DerValue.TAG_CONTEXT, true, (byte) 0x00), temp.toByteArray()));
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/AuthorizationData.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/AuthorizationData.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/AuthorizationData.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/AuthorizationData.java	2015-09-08 10:49:08.230658581 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/AuthorizationData.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/AuthorizationData.java	2016-09-21 06:38:08.224138662 +0100
 @@ -99,7 +99,7 @@
       * @exception IOException if an I/O error occurs while reading encoded data.
       */
@@ -5395,9 +7147,9 @@
              throw new Asn1Exception(Krb5.ASN1_BAD_ID);
          }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java	2015-09-08 10:42:12.570241741 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java	2015-09-08 10:49:08.230658581 +0100
-@@ -577,7 +577,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java	2016-09-21 06:14:42.827429104 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java	2016-09-21 06:38:08.224138662 +0100
+@@ -569,7 +569,7 @@
  
      private static String exec(String c) {
          StringTokenizer st = new StringTokenizer(c);
@@ -5407,8 +7159,8 @@
              v.addElement(st.nextToken());
          }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/crypto/EType.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/crypto/EType.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/crypto/EType.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/crypto/EType.java	2015-09-08 10:49:08.230658581 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/crypto/EType.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/crypto/EType.java	2016-09-21 06:38:08.224138662 +0100
 @@ -257,7 +257,7 @@
                  + configName);
          }
@@ -5419,8 +7171,8 @@
              if (EncryptionKey.findKey(answer[i], keys) != null) {
                  list.add(answer[i]);
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/EncAPRepPart.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/EncAPRepPart.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/EncAPRepPart.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/EncAPRepPart.java	2015-09-08 10:49:08.230658581 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/EncAPRepPart.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/EncAPRepPart.java	2016-09-21 06:38:08.224138662 +0100
 @@ -133,7 +133,7 @@
       * @exception IOException if an I/O error occurs while reading encoded data.
       */
@@ -5431,8 +7183,8 @@
          v.addElement(new DerValue(DerValue.createTag(DerValue.TAG_CONTEXT,
                  true, (byte) 0x00), ctime.asn1Encode()));
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/HostAddresses.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/HostAddresses.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/HostAddresses.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/HostAddresses.java	2015-09-08 10:49:08.230658581 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/HostAddresses.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/HostAddresses.java	2016-09-21 06:38:08.224138662 +0100
 @@ -179,7 +179,7 @@
      */
      public HostAddresses(DerValue encoding)
@@ -5452,9 +7204,9 @@
          for (int i = 0; i < addresses.length; i++) {
              try {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/KDCReqBody.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KDCReqBody.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/KDCReqBody.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KDCReqBody.java	2015-09-08 10:49:08.230658581 +0100
-@@ -158,7 +158,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/KDCReqBody.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KDCReqBody.java	2016-09-21 06:38:08.224138662 +0100
+@@ -165,7 +165,7 @@
              throw new Asn1Exception(Krb5.ASN1_BAD_ID);
          }
          der = encoding.getData().getDerValue();
@@ -5463,7 +7215,7 @@
          if ((der.getTag() & (byte)0x1F) == (byte)0x08) {
              subDer = der.getData().getDerValue();
  
-@@ -183,7 +183,7 @@
+@@ -190,7 +190,7 @@
              encAuthorizationData = EncryptedData.parse(encoding.getData(), (byte)0x0A, true);
          }
          if (encoding.getData().available() > 0) {
@@ -5472,7 +7224,7 @@
              der = encoding.getData().getDerValue();
              if ((der.getTag() & (byte)0x1F) == (byte)0x0B) {
                  subDer = der.getData().getDerValue();
-@@ -216,7 +216,7 @@
+@@ -223,7 +223,7 @@
       *
       */
      public byte[] asn1Encode(int msgType) throws Asn1Exception, IOException {
@@ -5482,8 +7234,8 @@
          if (msgType == Krb5.KRB_AS_REQ) {
              if (cname != null) {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/KDCReq.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KDCReq.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/KDCReq.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KDCReq.java	2015-09-08 10:49:08.230658581 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/KDCReq.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KDCReq.java	2016-09-21 06:38:08.224138662 +0100
 @@ -150,7 +150,7 @@
              if (subsubDer.getTag() != DerValue.tag_SequenceOf) {
                  throw new Asn1Exception(Krb5.ASN1_BAD_ID);
@@ -5494,20 +7246,20 @@
                  v.addElement(new PAData(subsubDer.getData().getDerValue()));
              }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/KrbCredInfo.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KrbCredInfo.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/KrbCredInfo.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KrbCredInfo.java	2015-09-08 10:49:08.230658581 +0100
-@@ -157,7 +157,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/KrbCredInfo.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KrbCredInfo.java	2016-09-21 06:40:53.317395167 +0100
+@@ -150,7 +150,7 @@
       * @exception IOException if an I/O error occurs while reading encoded data.
       */
      public byte[] asn1Encode() throws Asn1Exception, IOException {
 -        Vector<DerValue> v = new Vector<>();
 +        Vector<DerValue> v = new Vector<DerValue>();
          v.addElement(new DerValue(DerValue.createTag(DerValue.TAG_CONTEXT, true, (byte)0x00), key.asn1Encode()));
-         if (prealm != null)
-             v.addElement(new DerValue(DerValue.createTag(DerValue.TAG_CONTEXT, true, (byte)0x01), prealm.asn1Encode()));
+         if (pname != null) {
+             v.addElement(new DerValue(DerValue.createTag(DerValue.TAG_CONTEXT, true, (byte)0x01), pname.getRealm().asn1Encode()));
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/KRBCred.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KRBCred.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/KRBCred.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KRBCred.java	2015-09-08 10:49:08.230658581 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/KRBCred.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KRBCred.java	2016-09-21 06:38:08.228138596 +0100
 @@ -134,7 +134,7 @@
              if (subsubDer.getTag() != DerValue.tag_SequenceOf) {
                  throw new Asn1Exception(Krb5.ASN1_BAD_ID);
@@ -5518,9 +7270,9 @@
                  v.addElement(new Ticket(subsubDer.getData().getDerValue()));
              }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/KRBError.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KRBError.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/KRBError.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KRBError.java	2015-09-08 10:49:08.230658581 +0100
-@@ -259,7 +259,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/KRBError.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KRBError.java	2016-09-21 06:38:08.228138596 +0100
+@@ -249,7 +249,7 @@
      private void parsePAData(byte[] data)
              throws IOException, Asn1Exception {
          DerValue derPA = new DerValue(data);
@@ -5530,8 +7282,8 @@
              // read the PA-DATA
              DerValue tmp = derPA.data.getDerValue();
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java	2015-09-08 10:42:12.570241741 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java	2015-09-08 10:49:08.230658581 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java	2016-09-21 06:14:42.827429104 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java	2016-09-21 06:38:08.228138596 +0100
 @@ -67,7 +67,7 @@
  
      // Attention: Currently there is no way to remove a keytab from this map,
@@ -5569,8 +7321,8 @@
          for (int i = entries.size()-1; i >= 0; i--) {
              KeyTabEntry e = entries.get(i);
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/LastReq.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/LastReq.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/LastReq.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/LastReq.java	2015-09-08 10:49:08.230658581 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/LastReq.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/LastReq.java	2016-09-21 06:38:08.228138596 +0100
 @@ -77,7 +77,7 @@
       */
  
@@ -5581,8 +7333,8 @@
              throw new Asn1Exception(Krb5.ASN1_BAD_ID);
          }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/KdcComm.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/KdcComm.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/KdcComm.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/KdcComm.java	2015-09-08 10:49:08.230658581 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/KdcComm.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/KdcComm.java	2016-09-21 06:38:08.228138596 +0100
 @@ -466,7 +466,7 @@
       */
      static class KdcAccessibility {
@@ -5604,10 +7356,31 @@
                  while (st.hasMoreTokens()) {
                      String t = st.nextToken();
                      if (bads.contains(t)) badkdcs.add(t);
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/KrbServiceLocator.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/KrbServiceLocator.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/KrbServiceLocator.java	2016-09-21 16:21:08.370678411 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/KrbServiceLocator.java	2016-09-22 18:02:24.629123243 +0100
+@@ -85,7 +85,7 @@
+             // the initial context constructor. This avoids having the initial
+             // context constructor call itself (when processing the URL
+             // argument in the getAttributes call).
+-            final Context ctx = NamingManager.getURLContext("dns", new Hashtable<>(0));
++            final Context ctx = NamingManager.getURLContext("dns", new Hashtable<Object,Object>(0));
+             if (!(ctx instanceof DirContext)) {
+                 return null; // cannot create a DNS context
+             }
+@@ -158,7 +158,7 @@
+             // the initial context constructor. This avoids having the initial
+             // context constructor call itself (when processing the URL
+             // argument in the getAttributes call).
+-            final Context ctx = NamingManager.getURLContext("dns", new Hashtable<>(0));
++            final Context ctx = NamingManager.getURLContext("dns", new Hashtable<Object,Object>(0));
+             if (!(ctx instanceof DirContext)) {
+                 return null; // cannot create a DNS context
+             }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/PrincipalName.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/PrincipalName.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/PrincipalName.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/PrincipalName.java	2015-09-08 10:49:08.230658581 +0100
-@@ -238,7 +238,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/PrincipalName.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/PrincipalName.java	2016-09-21 06:40:36.285678128 +0100
+@@ -265,7 +265,7 @@
              if (subDer.getTag() != DerValue.tag_SequenceOf) {
                  throw new Asn1Exception(Krb5.ASN1_BAD_ID);
              }
@@ -5616,9 +7389,9 @@
              DerValue subSubDer;
              while(subDer.getData().available() > 0) {
                  subSubDer = subDer.getData().getDerValue();
-@@ -293,7 +293,7 @@
+@@ -321,7 +321,7 @@
      // Code repetition, realm parsed again by class Realm
-     protected static String[] parseName(String name) {
+     private static String[] parseName(String name) {
  
 -        Vector<String> tempStrings = new Vector<>();
 +        Vector<String> tempStrings = new Vector<String>();
@@ -5626,9 +7399,9 @@
          int i = 0;
          int componentStart = 0;
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/Realm.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/Realm.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/Realm.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/Realm.java	2015-09-08 10:49:08.234658509 +0100
-@@ -368,7 +368,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/Realm.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/Realm.java	2016-09-21 06:38:08.228138596 +0100
+@@ -375,7 +375,7 @@
              return null;
          }
  
@@ -5637,7 +7410,7 @@
  
          String head = sRealm;
          while (true) {
-@@ -430,7 +430,7 @@
+@@ -437,7 +437,7 @@
          // DEVEL.EXAMPLE.COM   3       2
          // PROD.EXAMPLE.ORG    3       2
  
@@ -5647,9 +7420,9 @@
          // Un-common ones for client side
          for (int i=0; i<=cPos; i++) {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/pkcs12/PKCS12KeyStore.java openjdk-boot/jdk/src/share/classes/sun/security/pkcs12/PKCS12KeyStore.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/pkcs12/PKCS12KeyStore.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/pkcs12/PKCS12KeyStore.java	2015-09-08 10:49:08.234658509 +0100
-@@ -913,7 +913,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/pkcs12/PKCS12KeyStore.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/pkcs12/PKCS12KeyStore.java	2016-09-21 06:38:08.228138596 +0100
+@@ -894,7 +894,7 @@
          // Check for loops in the chain. If there are repeated certs,
          // the Set of certs in the chain will contain fewer certs than
          // the chain
@@ -5658,10 +7431,22 @@
          return set.size() == certChain.length;
      }
  
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/certpath/CertStoreHelper.java openjdk-boot/jdk/src/share/classes/sun/security/provider/certpath/CertStoreHelper.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/certpath/CertStoreHelper.java	2016-09-23 17:38:42.806328417 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/provider/certpath/CertStoreHelper.java	2016-09-23 17:39:19.497739829 +0100
+@@ -50,7 +50,7 @@
+ public abstract class CertStoreHelper {
+ 
+     private static final int NUM_TYPES = 2;
+-    private final static Map<String,String> classMap = new HashMap<>(NUM_TYPES);
++    private final static Map<String,String> classMap = new HashMap<String,String>(NUM_TYPES);
+     static {
+         classMap.put(
+             "LDAP",
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/certpath/DistributionPointFetcher.java openjdk-boot/jdk/src/share/classes/sun/security/provider/certpath/DistributionPointFetcher.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/certpath/DistributionPointFetcher.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/provider/certpath/DistributionPointFetcher.java	2015-09-08 10:49:08.234658509 +0100
-@@ -585,7 +585,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/certpath/DistributionPointFetcher.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/provider/certpath/DistributionPointFetcher.java	2016-09-21 06:38:08.228138596 +0100
+@@ -586,7 +586,7 @@
              // Except the performance improvement, another benefit is to break
              // the dead loop while looking for the issuer back and forth
              // between the delegated self-issued certificate and its issuer.
@@ -5670,9 +7455,33 @@
  
              if (prevKey != null) {
                  // Add the previous certificate as a trust anchor.
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/certpath/ssl/SSLServerCertStore.java openjdk-boot/jdk/src/share/classes/sun/security/provider/certpath/ssl/SSLServerCertStore.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/certpath/ssl/SSLServerCertStore.java	2016-09-23 17:38:42.818328224 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/provider/certpath/ssl/SSLServerCertStore.java	2016-09-23 17:40:06.828980445 +0100
+@@ -138,7 +138,7 @@
+         if (selector == null) {
+             return certs;
+         }
+-        List<X509Certificate> matchedCerts = new ArrayList<>(certs.size());
++        List<X509Certificate> matchedCerts = new ArrayList<X509Certificate>(certs.size());
+         for (X509Certificate cert : certs) {
+             if (selector.match(cert)) {
+                 matchedCerts.add(cert);
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/certpath/URICertStore.java openjdk-boot/jdk/src/share/classes/sun/security/provider/certpath/URICertStore.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/certpath/URICertStore.java	2016-09-23 17:38:42.826328096 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/provider/certpath/URICertStore.java	2016-09-23 17:40:18.916786486 +0100
+@@ -339,7 +339,7 @@
+         if (selector == null) {
+             return certs;
+         }
+-        List<X509Certificate> matchedCerts = new ArrayList<>(certs.size());
++        List<X509Certificate> matchedCerts = new ArrayList<X509Certificate>(certs.size());
+         for (X509Certificate cert : certs) {
+             if (selector.match(cert)) {
+                 matchedCerts.add(cert);
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/JavaKeyStore.java openjdk-boot/jdk/src/share/classes/sun/security/provider/JavaKeyStore.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/JavaKeyStore.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/provider/JavaKeyStore.java	2015-09-08 10:49:08.234658509 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/JavaKeyStore.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/provider/JavaKeyStore.java	2016-09-21 06:38:08.228138596 +0100
 @@ -683,7 +683,7 @@
                      // Read the certificate chain
                      int numOfCerts = dis.readInt();
@@ -5683,9 +7492,9 @@
                          for (int j = 0; j < numOfCerts; j++) {
                              if (xVersion == 2) {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/PolicyFile.java openjdk-boot/jdk/src/share/classes/sun/security/provider/PolicyFile.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/PolicyFile.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/provider/PolicyFile.java	2015-09-08 10:49:08.234658509 +0100
-@@ -299,7 +299,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/PolicyFile.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/provider/PolicyFile.java	2016-09-21 06:38:08.232138530 +0100
+@@ -292,7 +292,7 @@
      private static final int DEFAULT_CACHE_SIZE = 1;
  
      // contains the policy grant entries, PD cache, and alias mapping
@@ -5694,7 +7503,7 @@
      private boolean constructed = false;
  
      private boolean expandProperties = true;
-@@ -1333,7 +1333,7 @@
+@@ -1326,7 +1326,7 @@
  
          List<PolicyParser.PrincipalEntry> entryPs = entry.getPrincipals();
          if (debug != null) {
@@ -5703,7 +7512,7 @@
              if (principals != null) {
                  for (int i = 0; i < principals.length; i++) {
                      accPs.add(new PolicyParser.PrincipalEntry
-@@ -1414,7 +1414,7 @@
+@@ -1407,7 +1407,7 @@
                      // check if the PrincipalComparator
                      // implies the current thread's principals
  
@@ -5712,7 +7521,7 @@
                      for (int j = 0; j < principals.length; j++) {
                          pSet.add(principals[j]);
                      }
-@@ -1697,7 +1697,7 @@
+@@ -1690,7 +1690,7 @@
              // build an info array for every principal
              // in the current domain which has a principal class
              // that is equal to policy entry principal class name
@@ -5721,7 +7530,7 @@
              for (int i = 0; i < pdp.length; i++) {
                  if(pe.principalClass.equals(pdp[i].getClass().getName()))
                      plist.add(pdp[i]);
-@@ -1767,7 +1767,7 @@
+@@ -1760,7 +1760,7 @@
              // Done
              return certs;
  
@@ -5730,7 +7539,7 @@
          i = 0;
          while (i < certs.length) {
              userCertList.add(certs[i]);
-@@ -2246,7 +2246,7 @@
+@@ -2239,7 +2239,7 @@
                      if (this.certs == null) {
                          // extract the signer certs
                          ArrayList<Certificate> signerCerts =
@@ -5740,8 +7549,8 @@
                          while (i < certs.length) {
                              signerCerts.add(certs[i]);
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/Sun.java openjdk-boot/jdk/src/share/classes/sun/security/provider/Sun.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/Sun.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/provider/Sun.java	2015-09-08 10:49:08.234658509 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/Sun.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/provider/Sun.java	2016-09-21 06:38:08.232138530 +0100
 @@ -55,7 +55,7 @@
              SunEntries.putEntries(this);
          } else {
@@ -5752,8 +7561,8 @@
              AccessController.doPrivileged(new PutAllAction(this, map));
          }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/VerificationProvider.java openjdk-boot/jdk/src/share/classes/sun/security/provider/VerificationProvider.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/VerificationProvider.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/provider/VerificationProvider.java	2015-09-08 10:49:08.234658509 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/VerificationProvider.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/provider/VerificationProvider.java	2016-09-21 06:38:08.232138530 +0100
 @@ -76,7 +76,7 @@
              SunRsaSignEntries.putEntries(this);
          } else {
@@ -5764,8 +7573,8 @@
              SunRsaSignEntries.putEntries(map);
              AccessController.doPrivileged(new PutAllAction(this, map));
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/X509Factory.java openjdk-boot/jdk/src/share/classes/sun/security/provider/X509Factory.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/X509Factory.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/provider/X509Factory.java	2015-09-08 10:49:08.234658509 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/X509Factory.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/provider/X509Factory.java	2016-09-21 06:38:08.232138530 +0100
 @@ -431,7 +431,7 @@
          int peekByte;
          byte[] data;
@@ -5821,8 +7630,8 @@
          } catch (ParsingException e) {
              while (data != null) {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/rsa/RSACore.java openjdk-boot/jdk/src/share/classes/sun/security/rsa/RSACore.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/rsa/RSACore.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/rsa/RSACore.java	2015-09-08 10:49:08.234658509 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/rsa/RSACore.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/rsa/RSACore.java	2016-09-21 06:38:08.232138530 +0100
 @@ -57,7 +57,7 @@
      // use a weak hashmap so that cached values are automatically cleared
      // when the modulus is GC'ed
@@ -5833,8 +7642,8 @@
      private RSACore() {
          // empty
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/rsa/SunRsaSign.java openjdk-boot/jdk/src/share/classes/sun/security/rsa/SunRsaSign.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/rsa/SunRsaSign.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/rsa/SunRsaSign.java	2015-09-08 10:49:08.234658509 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/rsa/SunRsaSign.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/rsa/SunRsaSign.java	2016-09-21 06:38:08.232138530 +0100
 @@ -52,7 +52,7 @@
              SunRsaSignEntries.putEntries(this);
          } else {
@@ -5845,8 +7654,8 @@
              AccessController.doPrivileged(new PutAllAction(this, map));
          }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/CipherSuite.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/CipherSuite.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/CipherSuite.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/CipherSuite.java	2015-09-08 10:49:08.234658509 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/CipherSuite.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/CipherSuite.java	2016-09-21 06:38:08.232138530 +0100
 @@ -397,7 +397,7 @@
  
          // Map BulkCipher -> Boolean(available)
@@ -5857,9 +7666,9 @@
          // descriptive name including key size, e.g. AES/128
          final String description;
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java	2015-09-08 10:49:08.234658509 +0100
-@@ -749,7 +749,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java	2016-09-21 06:38:08.232138530 +0100
+@@ -752,7 +752,7 @@
          if (certRequest != null) {
              X509ExtendedKeyManager km = sslContext.getX509KeyManager();
  
@@ -5868,7 +7677,7 @@
  
              for (int i = 0; i < certRequest.types.length; i++) {
                  String typeName;
-@@ -1290,7 +1290,7 @@
+@@ -1293,7 +1293,7 @@
                          "Can't reuse existing SSL client session");
                  }
  
@@ -5877,7 +7686,7 @@
                  cipherList.add(sessionSuite);
                  if (!secureRenegotiation &&
                          cipherSuites.contains(CipherSuite.C_SCSV)) {
-@@ -1308,7 +1308,7 @@
+@@ -1311,7 +1311,7 @@
          // exclude SCSV for secure renegotiation
          if (secureRenegotiation && cipherSuites.contains(CipherSuite.C_SCSV)) {
              Collection<CipherSuite> cipherList =
@@ -5886,7 +7695,7 @@
              for (CipherSuite suite : cipherSuites.collection()) {
                  if (suite != CipherSuite.C_SCSV) {
                      cipherList.add(suite);
-@@ -1567,7 +1567,7 @@
+@@ -1570,7 +1570,7 @@
                  if ((subAltDnsName != null) && !subAltDnsName.isEmpty()) {
                      if (subAltDnsNames == null) {
                          subAltDnsNames =
@@ -5895,9 +7704,21 @@
                      }
                      subAltDnsNames.add(subAltDnsName);
                  }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/DHCrypt.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/DHCrypt.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/DHCrypt.java	2016-09-23 17:38:42.838327903 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/DHCrypt.java	2016-09-23 17:39:39.929412038 +0100
+@@ -367,7 +367,7 @@
+                 }
+             }
+ 
+-            Map<Integer,DHParameterSpec> defaultParams = new HashMap<>();
++            Map<Integer,DHParameterSpec> defaultParams = new HashMap<Integer,DHParameterSpec>();
+             if (property != null && !property.isEmpty()) {
+                 Matcher syntaxMatcher = syntaxPattern.matcher(property);
+                 if (syntaxMatcher.matches()) {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java	2015-09-08 10:49:08.238658436 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java	2016-09-21 06:40:19.505956918 +0100
 @@ -260,7 +260,7 @@
      // add server_name extension
      void addServerNameIndicationExtension(String hostname) {
@@ -5916,7 +7737,7 @@
  
          CertificateFactory cf = null;
          while (chainLen > 0) {
-@@ -1346,7 +1346,7 @@
+@@ -1350,7 +1350,7 @@
  
          // read the certificate_authorities
          int len = input.getInt16();
@@ -5925,18 +7746,18 @@
          while (len >= 3) {
              DistinguishedName dn = new DistinguishedName(input);
              v.add(dn);
-@@ -1737,7 +1737,7 @@
+@@ -1742,7 +1742,7 @@
      // Note that this will prevent the Spi classes from being GC'd. We assume
      // that is not a problem.
-     private final static Map<Class,Object> methodCache =
+     private final static Map<Class<?>,Object> methodCache =
 -                                        new ConcurrentHashMap<>();
-+        new ConcurrentHashMap<Class,Object>();
++	new ConcurrentHashMap<Class<?>,Object>();
  
      private static void digestKey(MessageDigest md, SecretKey key) {
          try {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/Handshaker.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/Handshaker.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/Handshaker.java	2015-09-08 10:42:12.534242400 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/Handshaker.java	2015-09-08 10:49:08.238658436 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/Handshaker.java	2016-09-21 06:14:42.767430098 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/Handshaker.java	2016-09-21 06:38:08.236138462 +0100
 @@ -592,7 +592,7 @@
                  activeProtocols = getActiveProtocols();
              }
@@ -5956,8 +7777,8 @@
                  EnumSet.<CryptoPrimitive>of(CryptoPrimitive.KEY_AGREEMENT);
              for (ProtocolVersion protocol : enabledProtocols.collection()) {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/HelloExtensions.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/HelloExtensions.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/HelloExtensions.java	2015-09-08 10:42:09.130304710 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/HelloExtensions.java	2015-09-08 10:49:08.238658436 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/HelloExtensions.java	2016-09-21 06:14:40.883461298 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/HelloExtensions.java	2016-09-21 06:38:08.236138462 +0100
 @@ -169,7 +169,7 @@
          return name;
      }
@@ -5977,8 +7798,8 @@
              list.add(toString(format));
          }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/ProtocolList.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/ProtocolList.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/ProtocolList.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/ProtocolList.java	2015-09-08 10:49:08.238658436 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/ProtocolList.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/ProtocolList.java	2016-09-21 06:38:08.236138462 +0100
 @@ -79,7 +79,7 @@
              throw new IllegalArgumentException("Protocols may not be null");
          }
@@ -5989,8 +7810,8 @@
              ProtocolVersion version = ProtocolVersion.valueOf(names[i]);
              if (versions.contains(version) == false) {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/ProtocolVersion.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/ProtocolVersion.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/ProtocolVersion.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/ProtocolVersion.java	2015-09-08 10:49:08.238658436 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/ProtocolVersion.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/ProtocolVersion.java	2016-09-21 06:38:08.236138462 +0100
 @@ -106,7 +106,7 @@
  
      // Initialize the available protocols.
@@ -6001,8 +7822,8 @@
          ProtocolVersion[] pvs = new ProtocolVersion[] {
                  SSL20Hello, SSL30, TLS10, TLS11, TLS12};
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/SignatureAndHashAlgorithm.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/SignatureAndHashAlgorithm.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/SignatureAndHashAlgorithm.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/SignatureAndHashAlgorithm.java	2015-09-08 10:49:08.238658436 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/SignatureAndHashAlgorithm.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/SignatureAndHashAlgorithm.java	2016-09-21 06:39:46.254509425 +0100
 @@ -156,7 +156,7 @@
      static Collection<SignatureAndHashAlgorithm>
              getSupportedAlgorithms(AlgorithmConstraints constraints) {
@@ -6012,16 +7833,17 @@
          synchronized (priorityMap) {
              for (SignatureAndHashAlgorithm sigAlg : priorityMap.values()) {
                  if (sigAlg.priority <= SUPPORTED_ALG_PRIORITY_MAX_NUM &&
-@@ -173,7 +173,7 @@
-     // Get supported algorithm collection from an untrusted collection
+@@ -174,7 +174,8 @@
      static Collection<SignatureAndHashAlgorithm> getSupportedAlgorithms(
+             AlgorithmConstraints constraints,
              Collection<SignatureAndHashAlgorithm> algorithms ) {
 -        Collection<SignatureAndHashAlgorithm> supported = new ArrayList<>();
-+        Collection<SignatureAndHashAlgorithm> supported = new ArrayList<SignatureAndHashAlgorithm>();
++        Collection<SignatureAndHashAlgorithm> supported =
++	    new ArrayList<SignatureAndHashAlgorithm>();
          for (SignatureAndHashAlgorithm sigAlg : algorithms) {
-             if (sigAlg.priority <= SUPPORTED_ALG_PRIORITY_MAX_NUM) {
-                 supported.add(sigAlg);
-@@ -185,7 +185,7 @@
+             if (sigAlg.priority <= SUPPORTED_ALG_PRIORITY_MAX_NUM &&
+                     constraints.permits(SIGNATURE_PRIMITIVE_SET,
+@@ -188,7 +189,7 @@
  
      static String[] getAlgorithmNames(
              Collection<SignatureAndHashAlgorithm> algorithms) {
@@ -6030,7 +7852,7 @@
          if (algorithms != null) {
              for (SignatureAndHashAlgorithm sigAlg : algorithms) {
                  algorithmNames.add(sigAlg.algorithm);
-@@ -198,7 +198,7 @@
+@@ -201,7 +202,7 @@
  
      static Set<String> getHashAlgorithmNames(
              Collection<SignatureAndHashAlgorithm> algorithms) {
@@ -6040,8 +7862,8 @@
              for (SignatureAndHashAlgorithm sigAlg : algorithms) {
                  if (sigAlg.hash.value > 0) {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/SSLAlgorithmDecomposer.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLAlgorithmDecomposer.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/SSLAlgorithmDecomposer.java	2015-09-08 10:59:21.615553768 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLAlgorithmDecomposer.java	2015-09-08 11:00:43.130085029 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/SSLAlgorithmDecomposer.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLAlgorithmDecomposer.java	2016-09-21 06:38:08.236138462 +0100
 @@ -48,7 +48,7 @@
      }
  
@@ -6079,8 +7901,8 @@
          if (keyExchange != null) {
              components.addAll(decomposes(keyExchange));
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java	2015-09-08 10:49:08.238658436 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java	2016-09-21 06:38:08.236138462 +0100
 @@ -327,7 +327,7 @@
          Collection<CipherSuite> allowedCipherSuites =
                                      CipherSuite.allowedCipherSuites();
@@ -6118,8 +7940,8 @@
              if ((certs != null) && (certs.length > 0)){
                  Collections.addAll(trustedCerts, certs);
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/SSLSessionImpl.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLSessionImpl.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/SSLSessionImpl.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLSessionImpl.java	2015-09-08 10:49:08.238658436 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/SSLSessionImpl.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLSessionImpl.java	2016-09-21 06:38:08.236138462 +0100
 @@ -642,7 +642,7 @@
       * key and the calling security context. This is important since
       * sessions can be shared across different protection domains.
@@ -6139,9 +7961,9 @@
          Object securityCtx = SecureKey.getCurrentSecurityContext();
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java	2015-09-08 10:49:08.238658436 +0100
-@@ -2564,7 +2564,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java	2016-09-21 06:38:08.236138462 +0100
+@@ -2561,7 +2561,7 @@
              entrySet, HandshakeCompletedEvent e) {
  
              super("HandshakeCompletedNotify-Thread");
@@ -6151,8 +7973,8 @@
          }
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java	2015-09-08 10:49:08.238658436 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java	2016-09-21 06:38:08.236138462 +0100
 @@ -337,7 +337,7 @@
  
          X500Principal[] x500Issuers = (X500Principal[])issuers;
@@ -6172,8 +7994,8 @@
              Principal p = principals[i];
              if (p instanceof X500Principal) {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java	2015-09-08 10:49:08.238658436 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java	2016-09-21 06:38:08.236138462 +0100
 @@ -134,7 +134,7 @@
          FileInputStream fis = null;
          String defaultTrustStoreType;
@@ -6184,9 +8006,9 @@
          KeyStore ks = null;
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/X509KeyManagerImpl.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/X509KeyManagerImpl.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/X509KeyManagerImpl.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/X509KeyManagerImpl.java	2015-09-08 10:49:08.238658436 +0100
-@@ -307,7 +307,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/X509KeyManagerImpl.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/X509KeyManagerImpl.java	2016-09-21 06:38:08.236138462 +0100
+@@ -309,7 +309,7 @@
                  (keyTypes.length == 0) || (keyTypes[0] == null)) {
              return null;
          }
@@ -6195,7 +8017,7 @@
          for (String keyType : keyTypes) {
              list.add(new KeyType(keyType));
          }
-@@ -429,7 +429,7 @@
+@@ -431,7 +431,7 @@
      // make a Set out of the array
      private Set<Principal> getIssuerSet(Principal[] issuers) {
          if ((issuers != null) && (issuers.length != 0)) {
@@ -6204,10 +8026,10 @@
          } else {
              return null;
          }
-diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/JarSigner.java openjdk-boot/jdk/src/share/classes/sun/security/tools/JarSigner.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/JarSigner.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/tools/JarSigner.java	2015-09-08 10:49:08.242658363 +0100
-@@ -120,14 +120,14 @@
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/jarsigner/Main.java openjdk-boot/jdk/src/share/classes/sun/security/tools/jarsigner/Main.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/jarsigner/Main.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/tools/jarsigner/Main.java	2016-09-21 06:38:55.699349570 +0100
+@@ -122,14 +122,14 @@
      boolean token = false; // token-based keystore
      String jarfile;  // jar files to sign or verify
      String alias;    // alias to sign jar with
@@ -6224,7 +8046,7 @@
      char[] keypass; // private key password
      String sigfile; // name of .SF file
      String sigalg; // name of signature algorithm
-@@ -565,7 +565,7 @@
+@@ -581,7 +581,7 @@
  
          try {
              jf = new JarFile(jarName, true);
@@ -6233,7 +8055,7 @@
              byte[] buffer = new byte[8192];
  
              Enumeration<JarEntry> entries = jf.entries();
-@@ -592,7 +592,7 @@
+@@ -608,7 +608,7 @@
              // The map to record display info, only used when -verbose provided
              //      key: signer info string
              //      value: the list of files with common key
@@ -6242,7 +8064,7 @@
  
              if (man != null) {
                  if (verbose != null) System.out.println();
-@@ -974,7 +974,7 @@
+@@ -990,7 +990,7 @@
              .append(signTimeForm.format(source)).append("]").toString();
      }
  
@@ -6251,7 +8073,7 @@
  
      private int inKeyStoreForOneSigner(CodeSigner signer) {
          if (cacheForInKS.containsKey(signer)) {
-@@ -1017,7 +1017,7 @@
+@@ -1033,7 +1033,7 @@
          return result;
      }
  
@@ -6260,7 +8082,7 @@
  
      int inKeyStore(CodeSigner[] signers) {
  
-@@ -1147,7 +1147,7 @@
+@@ -1163,7 +1163,7 @@
               *   generated one. (This may invalidate existing signatures!)
               */
              BASE64Encoder encoder = new JarBASE64Encoder();
@@ -6269,7 +8091,7 @@
  
              boolean wasSigned = false;
  
-@@ -1516,7 +1516,7 @@
+@@ -1532,7 +1532,7 @@
          return SignatureFileVerifier.isSigningRelated(name);
      }
  
@@ -6278,19 +8100,19 @@
  
      /**
       * Returns a string of singer info, with a newline at the end
-@@ -1617,7 +1617,7 @@
+@@ -1633,7 +1633,7 @@
  
              certificateFactory = CertificateFactory.getInstance("X.509");
              validator = CertPathValidator.getInstance("PKIX");
 -            Set<TrustAnchor> tas = new HashSet<>();
 +            Set<TrustAnchor> tas = new HashSet<TrustAnchor>();
              try {
-                 KeyStore caks = KeyTool.getCacertsKeyStore();
+                 KeyStore caks = KeyStoreUtil.getCacertsKeyStore();
                  if (caks != null) {
-diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/KeyTool.java openjdk-boot/jdk/src/share/classes/sun/security/tools/KeyTool.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/KeyTool.java	2015-09-08 10:42:12.574241668 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/tools/KeyTool.java	2015-09-08 10:49:08.242658363 +0100
-@@ -154,11 +154,11 @@
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/keytool/Main.java openjdk-boot/jdk/src/share/classes/sun/security/tools/keytool/Main.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/keytool/Main.java	2016-09-21 06:14:42.827429104 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/tools/keytool/Main.java	2016-09-21 06:38:08.240138396 +0100
+@@ -151,11 +151,11 @@
      private KeyStore caks = null; // "cacerts" keystore
      private char[] srcstorePass = null;
      private String srcstoretype = null;
@@ -6305,7 +8127,7 @@
  
      enum Command {
          CERTREQ("Generates.a.certificate.request",
-@@ -2097,7 +2097,7 @@
+@@ -2073,7 +2073,7 @@
       */
      public static List<CRL> readCRLsFromCert(X509Certificate cert)
              throws Exception {
@@ -6314,7 +8136,7 @@
          CRLDistributionPointsExtension ext =
                  X509CertImpl.toImpl(cert).getCRLDistributionPointsExtension();
          if (ext == null) return crls;
-@@ -2264,7 +2264,7 @@
+@@ -2241,7 +2241,7 @@
          if (jarfile != null) {
              JarFile jf = new JarFile(jarfile, true);
              Enumeration<JarEntry> entries = jf.entries();
@@ -6323,7 +8145,7 @@
              byte[] buffer = new byte[8192];
              int pos = 0;
              while (entries.hasMoreElements()) {
-@@ -3364,7 +3364,7 @@
+@@ -3275,7 +3275,7 @@
          }
  
          // start building chain
@@ -6332,7 +8154,7 @@
          if (buildChain((X509Certificate)certToVerify, chain, certs)) {
              Certificate[] newChain = new Certificate[chain.size()];
              // buildChain() returns chain with self-signed root-cert first and
-@@ -3890,7 +3890,7 @@
+@@ -3774,7 +3774,7 @@
                          break;
                      case 2:     // EKU
                          if(value != null) {
@@ -6341,7 +8163,7 @@
                              for (String s: value.split(",")) {
                                  int p = oneOf(s,
                                          "anyExtendedKeyUsage",
-@@ -3960,7 +3960,7 @@
+@@ -3844,7 +3844,7 @@
                          }
                          if(value != null) {
                              List<AccessDescription> accessDescriptions =
@@ -6350,7 +8172,7 @@
                              String[] ps = value.split(",");
                              for(String item: ps) {
                                  colonpos = item.indexOf(':');
-@@ -4244,7 +4244,7 @@
+@@ -4080,7 +4080,7 @@
      }
  
      public static <A,B> Pair<A,B> of(A a, B b) {
@@ -6360,9 +8182,9 @@
  }
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/policytool/PolicyTool.java openjdk-boot/jdk/src/share/classes/sun/security/tools/policytool/PolicyTool.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/policytool/PolicyTool.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/tools/policytool/PolicyTool.java	2015-09-08 10:49:08.242658363 +0100
-@@ -643,7 +643,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/policytool/PolicyTool.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/tools/policytool/PolicyTool.java	2016-09-21 06:38:40.215606914 +0100
+@@ -645,7 +645,7 @@
          Class<?> pc = Class.forName(type, true,
                  Thread.currentThread().getContextClassLoader());
          Constructor<?> c = null;
@@ -6371,7 +8193,7 @@
          if (name != null) objects.add(name);
          if (actions != null) objects.add(actions);
          switch (objects.size()) {
-@@ -1722,7 +1722,7 @@
+@@ -1725,7 +1725,7 @@
                          new PolicyParser.GrantEntry(signedby, codebase);
  
          // get the new Principals
@@ -6380,7 +8202,7 @@
          TaggedList prinList = (TaggedList)getComponent(PE_PRIN_LIST);
          for (int i = 0; i < prinList.getItemCount(); i++) {
              prins.add((PolicyParser.PrincipalEntry)prinList.getObject(i));
-@@ -1730,7 +1730,7 @@
+@@ -1733,7 +1733,7 @@
          ge.principals = prins;
  
          // get the new Permissions
@@ -6389,18 +8211,18 @@
          TaggedList permList = (TaggedList)getComponent(PE_PERM_LIST);
          for (int i = 0; i < permList.getItemCount(); i++) {
              perms.addElement((PolicyParser.PermissionEntry)permList.getObject(i));
-@@ -3647,7 +3647,7 @@
-  * This is a java.awt.List that bind an Object to each String it holds.
-  */
+@@ -3665,7 +3665,7 @@
  class TaggedList extends List {
+     private static final long serialVersionUID = -5676238110427785853L;
+ 
 -    private java.util.List<Object> data = new LinkedList<>();
 +    private java.util.List<Object> data = new LinkedList<Object>();
      public TaggedList(int i, boolean b) {
          super(i, b);
      }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/util/AlgorithmDecomposer.java openjdk-boot/jdk/src/share/classes/sun/security/util/AlgorithmDecomposer.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/util/AlgorithmDecomposer.java	2015-09-08 10:59:22.623535597 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/util/AlgorithmDecomposer.java	2015-09-08 11:02:13.028467014 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/util/AlgorithmDecomposer.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/util/AlgorithmDecomposer.java	2016-09-21 06:38:08.244138330 +0100
 @@ -49,13 +49,13 @@
       */
      public Set<String> decompose(String algorithm) {
@@ -6418,8 +8240,8 @@
              if (transTocken == null || transTocken.length() == 0) {
                  continue;
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/util/LegacyAlgorithmConstraints.java openjdk-boot/jdk/src/share/classes/sun/security/util/LegacyAlgorithmConstraints.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/util/LegacyAlgorithmConstraints.java	2015-09-08 10:59:23.583518291 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/util/LegacyAlgorithmConstraints.java	2015-09-08 11:01:06.177670034 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/util/LegacyAlgorithmConstraints.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/util/LegacyAlgorithmConstraints.java	2016-09-21 06:38:08.244138330 +0100
 @@ -43,7 +43,7 @@
              "jdk.tls.legacyAlgorithms";
  
@@ -6430,8 +8252,8 @@
      private final String[] legacyAlgorithms;
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java openjdk-boot/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java	2015-09-08 10:42:12.574241668 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java	2015-09-08 10:49:08.242658363 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java	2016-09-21 06:14:42.827429104 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java	2016-09-21 06:38:08.244138330 +0100
 @@ -42,7 +42,7 @@
   */
  public final class UntrustedCertificates {
@@ -6442,9 +8264,9 @@
      /**
       * Checks if a certificate is untrusted.
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/x509/X509CertImpl.java openjdk-boot/jdk/src/share/classes/sun/security/x509/X509CertImpl.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/x509/X509CertImpl.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/x509/X509CertImpl.java	2015-09-08 10:49:08.242658363 +0100
-@@ -1253,7 +1253,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/x509/X509CertImpl.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/x509/X509CertImpl.java	2016-09-21 06:38:08.244138330 +0100
+@@ -1251,7 +1251,7 @@
              if (exts == null) {
                  return null;
              }
@@ -6453,7 +8275,7 @@
              for (Extension ex : exts.getAllExtensions()) {
                  if (ex.isCritical()) {
                      extSet.add(ex.getExtensionId().toString());
-@@ -1283,7 +1283,7 @@
+@@ -1281,7 +1281,7 @@
              if (exts == null) {
                  return null;
              }
@@ -6462,7 +8284,7 @@
              for (Extension ex : exts.getAllExtensions()) {
                  if (!ex.isCritical()) {
                      extSet.add(ex.getExtensionId().toString());
-@@ -1520,10 +1520,10 @@
+@@ -1518,10 +1518,10 @@
          if (names.isEmpty()) {
              return Collections.<List<?>>emptySet();
          }
@@ -6475,7 +8297,7 @@
              nameEntry.add(Integer.valueOf(name.getType()));
              switch (name.getType()) {
              case GeneralNameInterface.NAME_RFC822:
-@@ -1581,12 +1581,12 @@
+@@ -1579,12 +1579,12 @@
              }
          }
          if (mustClone) {
@@ -6491,9 +8313,9 @@
                      namesCopy.add(Collections.unmodifiableList(nameEntryCopy));
                  } else {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/x509/X509CRLEntryImpl.java openjdk-boot/jdk/src/share/classes/sun/security/x509/X509CRLEntryImpl.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/x509/X509CRLEntryImpl.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/x509/X509CRLEntryImpl.java	2015-09-08 10:49:08.242658363 +0100
-@@ -352,7 +352,7 @@
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/x509/X509CRLEntryImpl.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/x509/X509CRLEntryImpl.java	2016-09-21 06:38:08.244138330 +0100
+@@ -350,7 +350,7 @@
          if (extensions == null) {
              return null;
          }
@@ -6502,7 +8324,7 @@
          for (Extension ex : extensions.getAllExtensions()) {
              if (ex.isCritical()) {
                  extSet.add(ex.getExtensionId().toString());
-@@ -373,7 +373,7 @@
+@@ -371,7 +371,7 @@
          if (extensions == null) {
              return null;
          }
@@ -6511,7 +8333,7 @@
          for (Extension ex : extensions.getAllExtensions()) {
              if (!ex.isCritical()) {
                  extSet.add(ex.getExtensionId().toString());
-@@ -510,7 +510,7 @@
+@@ -508,7 +508,7 @@
              return Collections.emptyMap();
          }
          Collection<Extension> exts = extensions.getAllExtensions();
@@ -6521,9 +8343,9 @@
              map.put(ext.getId(), ext);
          }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/x509/X509CRLImpl.java openjdk-boot/jdk/src/share/classes/sun/security/x509/X509CRLImpl.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/x509/X509CRLImpl.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/x509/X509CRLImpl.java	2015-09-08 10:49:08.242658363 +0100
-@@ -104,8 +104,8 @@
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/x509/X509CRLImpl.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/x509/X509CRLImpl.java	2016-09-21 06:38:08.244138330 +0100
+@@ -103,8 +103,8 @@
      private X500Principal    issuerPrincipal = null;
      private Date             thisUpdate = null;
      private Date             nextUpdate = null;
@@ -6534,7 +8356,7 @@
      private CRLExtensions    extensions = null;
      private final static boolean isExplicit = true;
      private static final long YR_2050 = 2524636800000L;
-@@ -907,7 +907,7 @@
+@@ -903,7 +903,7 @@
          if (extensions == null) {
              return null;
          }
@@ -6543,7 +8365,7 @@
          for (Extension ex : extensions.getAllExtensions()) {
              if (ex.isCritical()) {
                  extSet.add(ex.getExtensionId().toString());
-@@ -928,7 +928,7 @@
+@@ -924,7 +924,7 @@
          if (extensions == null) {
              return null;
          }
@@ -6553,8 +8375,8 @@
              if (!ex.isCritical()) {
                  extSet.add(ex.getExtensionId().toString());
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/tools/native2ascii/Main.java openjdk-boot/jdk/src/share/classes/sun/tools/native2ascii/Main.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/tools/native2ascii/Main.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/tools/native2ascii/Main.java	2015-09-08 10:49:08.242658363 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/tools/native2ascii/Main.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/tools/native2ascii/Main.java	2016-09-21 06:38:08.244138330 +0100
 @@ -95,7 +95,7 @@
       * Run the converter
       */
@@ -6565,8 +8387,8 @@
          boolean createOutputFile = false;
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/util/locale/InternalLocaleBuilder.java openjdk-boot/jdk/src/share/classes/sun/util/locale/InternalLocaleBuilder.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/util/locale/InternalLocaleBuilder.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/util/locale/InternalLocaleBuilder.java	2015-09-08 10:49:08.246658291 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/util/locale/InternalLocaleBuilder.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/util/locale/InternalLocaleBuilder.java	2016-09-21 06:38:08.244138330 +0100
 @@ -113,7 +113,7 @@
          }
          // Use case insensitive string to prevent duplication
@@ -6681,8 +8503,8 @@
                      ukeywords.put(key, type);
                  }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/util/locale/LanguageTag.java openjdk-boot/jdk/src/share/classes/sun/util/locale/LanguageTag.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/util/locale/LanguageTag.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/util/locale/LanguageTag.java	2015-09-08 10:49:08.246658291 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/util/locale/LanguageTag.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/util/locale/LanguageTag.java	2016-09-21 06:38:08.248138264 +0100
 @@ -62,7 +62,7 @@
      // Map contains grandfathered tags and its preferred mappings from
      // http://www.ietf.org/rfc/rfc5646.txt
@@ -6738,8 +8560,8 @@
                      extensions.add(locextKey.toString() + SEP + ext.getValue());
                  }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/util/locale/LocaleExtensions.java openjdk-boot/jdk/src/share/classes/sun/util/locale/LocaleExtensions.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/util/locale/LocaleExtensions.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/util/locale/LocaleExtensions.java	2015-09-08 10:49:08.246658291 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/util/locale/LocaleExtensions.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/util/locale/LocaleExtensions.java	2016-09-21 06:38:08.248138264 +0100
 @@ -81,7 +81,7 @@
          }
  
@@ -6767,8 +8589,8 @@
                      String key = LocaleUtils.toLowerString(kwd.getKey().value());
                      String type = LocaleUtils.toLowerString(kwd.getValue());
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/util/locale/LocaleObjectCache.java openjdk-boot/jdk/src/share/classes/sun/util/locale/LocaleObjectCache.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/util/locale/LocaleObjectCache.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/util/locale/LocaleObjectCache.java	2015-09-08 10:49:08.246658291 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/util/locale/LocaleObjectCache.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/util/locale/LocaleObjectCache.java	2016-09-21 06:38:08.248138264 +0100
 @@ -38,14 +38,14 @@
  
  public abstract class LocaleObjectCache<K, V> {
@@ -6805,8 +8627,8 @@
          return (oldEntry == null) ? null : oldEntry.get();
      }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/util/LocaleServiceProviderPool.java openjdk-boot/jdk/src/share/classes/sun/util/LocaleServiceProviderPool.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/util/LocaleServiceProviderPool.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/util/LocaleServiceProviderPool.java	2015-09-08 10:49:08.246658291 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/util/LocaleServiceProviderPool.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/util/LocaleServiceProviderPool.java	2016-09-21 06:38:08.248138264 +0100
 @@ -59,7 +59,7 @@
       * set of provider implementations of a particular locale sensitive service.
       */
@@ -6826,8 +8648,8 @@
                          tmpList.add(getLookupLocale(locale));
                      }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/util/logging/PlatformLogger.java openjdk-boot/jdk/src/share/classes/sun/util/logging/PlatformLogger.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/util/logging/PlatformLogger.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/util/logging/PlatformLogger.java	2015-09-08 10:49:08.246658291 +0100
+--- openjdk-boot.orig/jdk/src/share/classes/sun/util/logging/PlatformLogger.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/util/logging/PlatformLogger.java	2016-09-21 06:38:08.248138264 +0100
 @@ -187,7 +187,7 @@
  
      // Table of known loggers.  Maps names to PlatformLoggers.
@@ -6847,8 +8669,8 @@
          return log;
      }
 diff -Nru openjdk-boot.orig/jdk/src/share/demo/nio/zipfs/Demo.java openjdk-boot/jdk/src/share/demo/nio/zipfs/Demo.java
---- openjdk-boot.orig/jdk/src/share/demo/nio/zipfs/Demo.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/demo/nio/zipfs/Demo.java	2015-09-08 10:49:08.246658291 +0100
+--- openjdk-boot.orig/jdk/src/share/demo/nio/zipfs/Demo.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/demo/nio/zipfs/Demo.java	2016-09-21 06:38:08.248138264 +0100
 @@ -160,7 +160,7 @@
          }
  
@@ -6883,8 +8705,8 @@
          openwrite.add(WRITE);
  
 diff -Nru openjdk-boot.orig/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipCoder.java openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipCoder.java
---- openjdk-boot.orig/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipCoder.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipCoder.java	2015-09-08 10:49:08.246658291 +0100
+--- openjdk-boot.orig/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipCoder.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipCoder.java	2016-09-21 06:38:08.248138264 +0100
 @@ -142,8 +142,8 @@
          return new ZipCoder(Charset.defaultCharset());
      }
@@ -6897,8 +8719,8 @@
      private CharsetDecoder decoder() {
          CharsetDecoder dec = decTL.get();
 diff -Nru openjdk-boot.orig/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileAttributeView.java openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileAttributeView.java
---- openjdk-boot.orig/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileAttributeView.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileAttributeView.java	2015-09-08 10:49:08.246658291 +0100
+--- openjdk-boot.orig/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileAttributeView.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileAttributeView.java	2016-09-21 06:38:08.248138264 +0100
 @@ -134,7 +134,7 @@
          throws IOException
      {
@@ -6909,8 +8731,8 @@
              for (AttrID id : AttrID.values()) {
                  try {
 diff -Nru openjdk-boot.orig/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystem.java openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystem.java
---- openjdk-boot.orig/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystem.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystem.java	2015-09-08 10:49:08.246658291 +0100
+--- openjdk-boot.orig/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystem.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystem.java	2016-09-21 06:38:08.248138264 +0100
 @@ -157,7 +157,7 @@
  
      @Override
@@ -7011,8 +8833,8 @@
              inodes.put(root, root);
              dirs.add(root);
 diff -Nru openjdk-boot.orig/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystemProvider.java openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystemProvider.java
---- openjdk-boot.orig/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystemProvider.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystemProvider.java	2015-09-08 10:49:08.246658291 +0100
+--- openjdk-boot.orig/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystemProvider.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystemProvider.java	2016-09-21 06:38:08.248138264 +0100
 @@ -62,7 +62,7 @@
  public class ZipFileSystemProvider extends FileSystemProvider {
  
@@ -7023,8 +8845,8 @@
      public ZipFileSystemProvider() {}
  
 diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/java/lang/ProcessEnvironment.java openjdk-boot/jdk/src/solaris/classes/java/lang/ProcessEnvironment.java
---- openjdk-boot.orig/jdk/src/solaris/classes/java/lang/ProcessEnvironment.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/solaris/classes/java/lang/ProcessEnvironment.java	2015-09-08 10:49:08.246658291 +0100
+--- openjdk-boot.orig/jdk/src/solaris/classes/java/lang/ProcessEnvironment.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/classes/java/lang/ProcessEnvironment.java	2016-09-21 06:38:08.248138264 +0100
 @@ -68,7 +68,7 @@
          // We cache the C environment.  This means that subsequent calls
          // to putenv/setenv from C will not be visible from Java code.
@@ -7035,8 +8857,8 @@
          // so that earlier variables override later ones.
          for (int i = environ.length-1; i > 0; i-=2)
 diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java openjdk-boot/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java
---- openjdk-boot.orig/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java	2015-09-08 10:42:12.578241595 +0100
-+++ openjdk-boot/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java	2015-09-08 10:49:08.250658218 +0100
+--- openjdk-boot.orig/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java	2016-09-21 06:14:42.831429038 +0100
++++ openjdk-boot/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java	2016-09-21 06:38:08.248138264 +0100
 @@ -354,7 +354,7 @@
       * log against that map.  The resulting map is then written back
       * to the disk.
@@ -7101,8 +8923,8 @@
          }
          if (!changeLog.isEmpty()) {
 diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/net/dns/ResolverConfigurationImpl.java openjdk-boot/jdk/src/solaris/classes/sun/net/dns/ResolverConfigurationImpl.java
---- openjdk-boot.orig/jdk/src/solaris/classes/sun/net/dns/ResolverConfigurationImpl.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/solaris/classes/sun/net/dns/ResolverConfigurationImpl.java	2015-09-08 10:49:08.250658218 +0100
+--- openjdk-boot.orig/jdk/src/solaris/classes/sun/net/dns/ResolverConfigurationImpl.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/classes/sun/net/dns/ResolverConfigurationImpl.java	2016-09-21 06:38:08.248138264 +0100
 @@ -60,7 +60,7 @@
                                            int maxperkeyword,
                                            int maxkeywords)
@@ -7122,8 +8944,8 @@
          if (domain != null && domain.length() > 0) {
              sl.add(domain);
 diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/net/www/protocol/jar/JarFileFactory.java openjdk-boot/jdk/src/solaris/classes/sun/net/www/protocol/jar/JarFileFactory.java
---- openjdk-boot.orig/jdk/src/solaris/classes/sun/net/www/protocol/jar/JarFileFactory.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/solaris/classes/sun/net/www/protocol/jar/JarFileFactory.java	2015-09-08 10:49:08.250658218 +0100
+--- openjdk-boot.orig/jdk/src/solaris/classes/sun/net/www/protocol/jar/JarFileFactory.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/classes/sun/net/www/protocol/jar/JarFileFactory.java	2016-09-21 06:38:08.248138264 +0100
 @@ -43,10 +43,10 @@
  class JarFileFactory implements URLJarFile.URLJarFileCloseController {
  
@@ -7138,8 +8960,8 @@
      private static final JarFileFactory instance = new JarFileFactory();
  
 diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/ch/DevPollArrayWrapper.java openjdk-boot/jdk/src/solaris/classes/sun/nio/ch/DevPollArrayWrapper.java
---- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/ch/DevPollArrayWrapper.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/solaris/classes/sun/nio/ch/DevPollArrayWrapper.java	2015-09-08 10:49:08.250658218 +0100
+--- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/ch/DevPollArrayWrapper.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/ch/DevPollArrayWrapper.java	2016-09-21 06:38:08.248138264 +0100
 @@ -133,7 +133,7 @@
          pollArrayAddress = pollArray.address();
          wfd = init();
@@ -7150,8 +8972,8 @@
  
      void initInterrupt(int fd0, int fd1) {
 diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/ch/EPollArrayWrapper.java openjdk-boot/jdk/src/solaris/classes/sun/nio/ch/EPollArrayWrapper.java
---- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/ch/EPollArrayWrapper.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/solaris/classes/sun/nio/ch/EPollArrayWrapper.java	2015-09-08 10:49:08.250658218 +0100
+--- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/ch/EPollArrayWrapper.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/ch/EPollArrayWrapper.java	2016-09-21 06:38:08.248138264 +0100
 @@ -136,7 +136,7 @@
  
          // eventHigh needed when using file descriptors > 64k
@@ -7162,8 +8984,8 @@
  
      void initInterrupt(int fd0, int fd1) {
 diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/ch/EPollSelectorImpl.java openjdk-boot/jdk/src/solaris/classes/sun/nio/ch/EPollSelectorImpl.java
---- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/ch/EPollSelectorImpl.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/solaris/classes/sun/nio/ch/EPollSelectorImpl.java	2015-09-08 10:49:08.250658218 +0100
+--- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/ch/EPollSelectorImpl.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/ch/EPollSelectorImpl.java	2016-09-21 06:38:08.248138264 +0100
 @@ -67,7 +67,7 @@
          fd1 = (int) pipeFds;
          pollWrapper = new EPollArrayWrapper();
@@ -7174,8 +8996,8 @@
  
      protected int doSelect(long timeout) throws IOException {
 diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/ch/EventPortSelectorImpl.java openjdk-boot/jdk/src/solaris/classes/sun/nio/ch/EventPortSelectorImpl.java
---- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/ch/EventPortSelectorImpl.java	2015-09-08 10:59:25.727479643 +0100
-+++ openjdk-boot/jdk/src/solaris/classes/sun/nio/ch/EventPortSelectorImpl.java	2015-09-08 11:06:35.343756145 +0100
+--- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/ch/EventPortSelectorImpl.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/ch/EventPortSelectorImpl.java	2016-09-21 06:38:08.248138264 +0100
 @@ -58,7 +58,7 @@
      EventPortSelectorImpl(SelectorProvider sp) throws IOException {
          super(sp);
@@ -7186,8 +9008,8 @@
  
      protected int doSelect(long timeout) throws IOException {
 diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/ch/EventPortWrapper.java openjdk-boot/jdk/src/solaris/classes/sun/nio/ch/EventPortWrapper.java
---- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/ch/EventPortWrapper.java	2015-09-08 10:59:26.831459742 +0100
-+++ openjdk-boot/jdk/src/solaris/classes/sun/nio/ch/EventPortWrapper.java	2015-09-08 11:06:22.823980643 +0100
+--- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/ch/EventPortWrapper.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/ch/EventPortWrapper.java	2016-09-21 06:38:08.252138196 +0100
 @@ -96,7 +96,7 @@
          pollArrayAddress = pollArray.address();
          this.pfd = port_create();
@@ -7198,8 +9020,8 @@
  
      void close() throws IOException {
 diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/ch/SctpNet.java openjdk-boot/jdk/src/solaris/classes/sun/nio/ch/SctpNet.java
---- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/ch/SctpNet.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/solaris/classes/sun/nio/ch/SctpNet.java	2015-09-08 10:49:08.250658218 +0100
+--- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/ch/SctpNet.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/ch/SctpNet.java	2016-09-21 06:38:08.252138196 +0100
 @@ -113,7 +113,7 @@
              SocketAddress[] saa)
      {
@@ -7210,8 +9032,8 @@
               set.add(getRevealedLocalAddress(sa, sm));
           }
 diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/cs/ext/CompoundTextSupport.java openjdk-boot/jdk/src/solaris/classes/sun/nio/cs/ext/CompoundTextSupport.java
---- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/cs/ext/CompoundTextSupport.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/solaris/classes/sun/nio/cs/ext/CompoundTextSupport.java	2015-09-08 10:49:08.250658218 +0100
+--- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/cs/ext/CompoundTextSupport.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/cs/ext/CompoundTextSupport.java	2016-09-21 06:38:08.252138196 +0100
 @@ -153,12 +153,12 @@
  
      static {
@@ -7230,8 +9052,8 @@
          if (!(isEncodingSupported("US-ASCII") &&
                isEncodingSupported("ISO-8859-1")))
 diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java
---- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java	2015-09-08 10:49:08.250658218 +0100
+--- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java	2016-09-21 06:38:08.252138196 +0100
 @@ -53,7 +53,7 @@
          static final Set<String> supportedFileAttributeViews =
              supportedFileAttributeViews();
@@ -7251,8 +9073,8 @@
              long fp = setmntent(fstab.getBytes(), "r".getBytes());
              try {
 diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/LinuxUserDefinedFileAttributeView.java openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/LinuxUserDefinedFileAttributeView.java
---- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/LinuxUserDefinedFileAttributeView.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/LinuxUserDefinedFileAttributeView.java	2015-09-08 10:49:08.250658218 +0100
+--- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/LinuxUserDefinedFileAttributeView.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/LinuxUserDefinedFileAttributeView.java	2016-09-21 06:38:08.252138196 +0100
 @@ -63,7 +63,7 @@
  
      // Parses buffer as array of NULL-terminated C strings.
@@ -7263,8 +9085,8 @@
          int pos = 0;
          while (pos < size) {
 diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java
---- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java	2015-09-08 10:49:08.250658218 +0100
+--- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java	2016-09-21 06:38:08.252138196 +0100
 @@ -198,7 +198,7 @@
       * Decode the buffer, returning an ACL
       */
@@ -7275,8 +9097,8 @@
              long offset = address + i*SIZEOF_ACE_T;
  
 diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystem.java openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystem.java
---- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystem.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystem.java	2015-09-08 10:49:08.250658218 +0100
+--- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystem.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystem.java	2016-09-21 06:38:08.252138196 +0100
 @@ -76,7 +76,7 @@
          static final Set<String> supportedFileAttributeViews =
              supportedFileAttributeViews();
@@ -7296,8 +9118,8 @@
              UnixPath mnttab = new UnixPath(this, "/etc/mnttab");
              long fp = fopen(mnttab, "r");
 diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/SolarisUserDefinedFileAttributeView.java openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisUserDefinedFileAttributeView.java
---- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/SolarisUserDefinedFileAttributeView.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisUserDefinedFileAttributeView.java	2015-09-08 10:49:08.250658218 +0100
+--- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/SolarisUserDefinedFileAttributeView.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisUserDefinedFileAttributeView.java	2016-09-21 06:38:08.252138196 +0100
 @@ -83,7 +83,7 @@
                  }
  
@@ -7308,8 +9130,8 @@
                      byte[] name;
                      while ((name = readdir(dp)) != null) {
 diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java
---- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java	2015-09-08 10:49:08.250658218 +0100
+--- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java	2016-09-21 06:38:08.252138196 +0100
 @@ -194,7 +194,7 @@
      @Override
      public Set<PosixFilePermission> permissions() {
@@ -7320,8 +9142,8 @@
          if ((bits & UnixConstants.S_IRUSR) > 0)
              perms.add(PosixFilePermission.OWNER_READ);
 diff -Nru openjdk-boot.orig/jdk/src/windows/classes/java/lang/ProcessEnvironment.java openjdk-boot/jdk/src/windows/classes/java/lang/ProcessEnvironment.java
---- openjdk-boot.orig/jdk/src/windows/classes/java/lang/ProcessEnvironment.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/windows/classes/java/lang/ProcessEnvironment.java	2015-09-08 10:49:08.250658218 +0100
+--- openjdk-boot.orig/jdk/src/windows/classes/java/lang/ProcessEnvironment.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/windows/classes/java/lang/ProcessEnvironment.java	2016-09-21 06:38:08.252138196 +0100
 @@ -250,7 +250,8 @@
                                     envblock.substring(eql+1,end));
          }
@@ -7343,8 +9165,8 @@
  
          StringBuilder sb = new StringBuilder(size()*30);
 diff -Nru openjdk-boot.orig/jdk/src/windows/classes/java/lang/ProcessImpl.java openjdk-boot/jdk/src/windows/classes/java/lang/ProcessImpl.java
---- openjdk-boot.orig/jdk/src/windows/classes/java/lang/ProcessImpl.java	2015-09-08 10:59:27.791442437 +0100
-+++ openjdk-boot/jdk/src/windows/classes/java/lang/ProcessImpl.java	2015-09-08 11:02:47.539846358 +0100
+--- openjdk-boot.orig/jdk/src/windows/classes/java/lang/ProcessImpl.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/windows/classes/java/lang/ProcessImpl.java	2016-09-21 06:38:08.252138196 +0100
 @@ -162,7 +162,7 @@
       * There are no escape sequences.
       */
@@ -7355,8 +9177,8 @@
          while (regexMatcher.find())
              matchList.add(regexMatcher.group());
 diff -Nru openjdk-boot.orig/jdk/src/windows/classes/sun/net/dns/ResolverConfigurationImpl.java openjdk-boot/jdk/src/windows/classes/sun/net/dns/ResolverConfigurationImpl.java
---- openjdk-boot.orig/jdk/src/windows/classes/sun/net/dns/ResolverConfigurationImpl.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/windows/classes/sun/net/dns/ResolverConfigurationImpl.java	2015-09-08 10:49:08.250658218 +0100
+--- openjdk-boot.orig/jdk/src/windows/classes/sun/net/dns/ResolverConfigurationImpl.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/windows/classes/sun/net/dns/ResolverConfigurationImpl.java	2016-09-21 06:38:08.252138196 +0100
 @@ -63,7 +63,7 @@
      // Parse string that consists of token delimited by space or commas
      // and return LinkedHashMap
@@ -7367,8 +9189,8 @@
          // comma and space are valid delimites
          StringTokenizer st = new StringTokenizer(str, ", ");
 diff -Nru openjdk-boot.orig/jdk/src/windows/classes/sun/net/www/protocol/jar/JarFileFactory.java openjdk-boot/jdk/src/windows/classes/sun/net/www/protocol/jar/JarFileFactory.java
---- openjdk-boot.orig/jdk/src/windows/classes/sun/net/www/protocol/jar/JarFileFactory.java	2015-09-08 10:59:27.803442220 +0100
-+++ openjdk-boot/jdk/src/windows/classes/sun/net/www/protocol/jar/JarFileFactory.java	2015-09-08 11:06:02.968336755 +0100
+--- openjdk-boot.orig/jdk/src/windows/classes/sun/net/www/protocol/jar/JarFileFactory.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/windows/classes/sun/net/www/protocol/jar/JarFileFactory.java	2016-09-21 06:38:08.252138196 +0100
 @@ -43,10 +43,10 @@
  class JarFileFactory implements URLJarFile.URLJarFileCloseController {
  
@@ -7383,8 +9205,8 @@
      private static final JarFileFactory instance = new JarFileFactory();
  
 diff -Nru openjdk-boot.orig/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystem.java openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystem.java
---- openjdk-boot.orig/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystem.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystem.java	2015-09-08 10:49:08.250658218 +0100
+--- openjdk-boot.orig/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystem.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystem.java	2016-09-21 06:38:08.252138196 +0100
 @@ -128,7 +128,7 @@
          }
  
@@ -7395,8 +9217,8 @@
          for (int i = 0; i <= 25; i++) {  // 0->A, 1->B, 2->C...
              if ((drives & (1 << i)) != 0) {
 diff -Nru openjdk-boot.orig/jdk/src/windows/classes/sun/nio/fs/WindowsPath.java openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsPath.java
---- openjdk-boot.orig/jdk/src/windows/classes/sun/nio/fs/WindowsPath.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsPath.java	2015-09-08 10:49:08.254658145 +0100
+--- openjdk-boot.orig/jdk/src/windows/classes/sun/nio/fs/WindowsPath.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsPath.java	2016-09-21 06:38:08.252138196 +0100
 @@ -575,7 +575,7 @@
      // generate offset array
      private void initOffsets() {
@@ -7407,8 +9229,8 @@
                  // empty path considered to have one name element
                  list.add(0);
 diff -Nru openjdk-boot.orig/jdk/src/windows/classes/sun/nio/fs/WindowsSecurityDescriptor.java openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsSecurityDescriptor.java
---- openjdk-boot.orig/jdk/src/windows/classes/sun/nio/fs/WindowsSecurityDescriptor.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsSecurityDescriptor.java	2015-09-08 10:49:08.254658145 +0100
+--- openjdk-boot.orig/jdk/src/windows/classes/sun/nio/fs/WindowsSecurityDescriptor.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsSecurityDescriptor.java	2016-09-21 06:38:08.252138196 +0100
 @@ -378,7 +378,7 @@
              AclInformation aclInfo = GetAclInformation(aclAddress);
              aceCount = aclInfo.aceCount();
@@ -7419,8 +9241,8 @@
          // decode each of the ACEs to AclEntry objects
          for (int i=0; i<aceCount; i++) {
 diff -Nru openjdk-boot.orig/jdk/src/windows/classes/sun/nio/fs/WindowsUserDefinedFileAttributeView.java openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsUserDefinedFileAttributeView.java
---- openjdk-boot.orig/jdk/src/windows/classes/sun/nio/fs/WindowsUserDefinedFileAttributeView.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsUserDefinedFileAttributeView.java	2015-09-08 10:49:08.254658145 +0100
+--- openjdk-boot.orig/jdk/src/windows/classes/sun/nio/fs/WindowsUserDefinedFileAttributeView.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsUserDefinedFileAttributeView.java	2016-09-21 06:38:08.252138196 +0100
 @@ -65,7 +65,7 @@
  
      // enumerates the file streams using FindFirstStream/FindNextStream APIs.
@@ -7467,8 +9289,8 @@
                  opts.add(WindowsChannelFactory.OPEN_REPARSE_POINT);
              opts.add(CREATE);
 diff -Nru openjdk-boot.orig/jdk/src/windows/classes/sun/nio/fs/WindowsWatchService.java openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsWatchService.java
---- openjdk-boot.orig/jdk/src/windows/classes/sun/nio/fs/WindowsWatchService.java	2015-09-08 10:59:29.791406384 +0100
-+++ openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsWatchService.java	2015-09-08 11:05:40.332742830 +0100
+--- openjdk-boot.orig/jdk/src/windows/classes/sun/nio/fs/WindowsWatchService.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsWatchService.java	2016-09-21 06:38:08.252138196 +0100
 @@ -289,8 +289,8 @@
              this.fs = fs;
              this.watcher = watcher;
@@ -7481,8 +9303,8 @@
          }
  
 diff -Nru openjdk-boot.orig/jdk/test/java/io/Serializable/NPEProvoker/NPEProvoker.java openjdk-boot/jdk/test/java/io/Serializable/NPEProvoker/NPEProvoker.java
---- openjdk-boot.orig/jdk/test/java/io/Serializable/NPEProvoker/NPEProvoker.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/test/java/io/Serializable/NPEProvoker/NPEProvoker.java	2015-09-08 10:49:08.254658145 +0100
+--- openjdk-boot.orig/jdk/test/java/io/Serializable/NPEProvoker/NPEProvoker.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/test/java/io/Serializable/NPEProvoker/NPEProvoker.java	2016-09-21 06:38:08.252138196 +0100
 @@ -56,7 +56,7 @@
      public static void main(String[] args) {
          System.err.println("\n Regression test for bug 6541870\n");
@@ -7493,8 +9315,8 @@
              ByteArrayOutputStream baos = new ByteArrayOutputStream();
              ObjectOutputStream oos = new ObjectOutputStream(baos);
 diff -Nru openjdk-boot.orig/jdk/test/java/lang/instrument/ilib/InjectBytecodes.java openjdk-boot/jdk/test/java/lang/instrument/ilib/InjectBytecodes.java
---- openjdk-boot.orig/jdk/test/java/lang/instrument/ilib/InjectBytecodes.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/test/java/lang/instrument/ilib/InjectBytecodes.java	2015-09-08 10:49:08.254658145 +0100
+--- openjdk-boot.orig/jdk/test/java/lang/instrument/ilib/InjectBytecodes.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/test/java/lang/instrument/ilib/InjectBytecodes.java	2016-09-21 06:38:08.256138130 +0100
 @@ -50,7 +50,7 @@
      private final Injector[] after  = new Injector[256];
      private final String className;
@@ -7505,8 +9327,8 @@
      private int pos;
      private int newPos;
 diff -Nru openjdk-boot.orig/jdk/test/java/lang/instrument/ilib/Inject.java openjdk-boot/jdk/test/java/lang/instrument/ilib/Inject.java
---- openjdk-boot.orig/jdk/test/java/lang/instrument/ilib/Inject.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/test/java/lang/instrument/ilib/Inject.java	2015-09-08 10:49:08.254658145 +0100
+--- openjdk-boot.orig/jdk/test/java/lang/instrument/ilib/Inject.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/test/java/lang/instrument/ilib/Inject.java	2016-09-21 06:38:08.256138130 +0100
 @@ -107,7 +107,7 @@
      class IndexedInjector implements TrackerInjector {
          int counter = 0;
@@ -7517,8 +9339,8 @@
          public int stackSize(int currentSize) {
              return currentSize + 1;
 diff -Nru openjdk-boot.orig/jdk/test/java/lang/reflect/Generics/TestPlainArrayNotGeneric.java openjdk-boot/jdk/test/java/lang/reflect/Generics/TestPlainArrayNotGeneric.java
---- openjdk-boot.orig/jdk/test/java/lang/reflect/Generics/TestPlainArrayNotGeneric.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/test/java/lang/reflect/Generics/TestPlainArrayNotGeneric.java	2015-09-08 10:49:08.254658145 +0100
+--- openjdk-boot.orig/jdk/test/java/lang/reflect/Generics/TestPlainArrayNotGeneric.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/test/java/lang/reflect/Generics/TestPlainArrayNotGeneric.java	2016-09-21 06:38:08.256138130 +0100
 @@ -103,7 +103,7 @@
          }
      }
@@ -7529,8 +9351,8 @@
      private static void check(Type t, String what) {
          if (t == null || !checking.add(t))
 diff -Nru openjdk-boot.orig/jdk/test/java/util/logging/ClassLoaderLeakTest.java openjdk-boot/jdk/test/java/util/logging/ClassLoaderLeakTest.java
---- openjdk-boot.orig/jdk/test/java/util/logging/ClassLoaderLeakTest.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/test/java/util/logging/ClassLoaderLeakTest.java	2015-09-08 10:49:08.254658145 +0100
+--- openjdk-boot.orig/jdk/test/java/util/logging/ClassLoaderLeakTest.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/test/java/util/logging/ClassLoaderLeakTest.java	2016-09-21 06:38:08.256138130 +0100
 @@ -89,7 +89,7 @@
  
           MyClassLoader appClassLoader = new MyClassLoader(urls, "test0");
@@ -7541,8 +9363,8 @@
  
           Thread appThread = new Thread(appsThreadGroup, launcher, "AppThread-0");
 diff -Nru openjdk-boot.orig/jdk/test/java/util/Random/DistinctSeeds.java openjdk-boot/jdk/test/java/util/Random/DistinctSeeds.java
---- openjdk-boot.orig/jdk/test/java/util/Random/DistinctSeeds.java	2015-07-31 14:21:55.000000000 +0100
-+++ openjdk-boot/jdk/test/java/util/Random/DistinctSeeds.java	2015-09-08 10:49:08.254658145 +0100
+--- openjdk-boot.orig/jdk/test/java/util/Random/DistinctSeeds.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/test/java/util/Random/DistinctSeeds.java	2016-09-21 06:38:08.256138130 +0100
 @@ -59,7 +59,7 @@
              }
          }
@@ -7552,15 +9374,3 @@
          List<Thread> threads = new ArrayList<Thread>();
          for (int i = 0; i < threadCount; i++) {
              RandomCollector r = new RandomCollector();
-diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/java2d/cmm/lcms/LCMSProfile.java openjdk-boot/jdk/src/share/classes/sun/java2d/cmm/lcms/LCMSProfile.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/java2d/cmm/lcms/LCMSProfile.java	2016-07-20 03:24:05.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/java2d/cmm/lcms/LCMSProfile.java	2016-07-20 04:22:41.946636327 +0100
-@@ -61,7 +61,7 @@
- 
-         TagCache(LCMSProfile p) {
-             profile = p;
--            tags = new HashMap<>();
-+            tags = new HashMap<Integer, TagData>();
-         }
- 
-         TagData getTag(int sig) {
--- a/patches/boot/ecj-multicatch.patch	Mon Sep 19 19:06:57 2016 +0100
+++ b/patches/boot/ecj-multicatch.patch	Wed Sep 28 07:32:57 2016 +0100
@@ -638,3 +638,280 @@
              // Missing VK is okay
              return 0;
          }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/PrincipalName.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/PrincipalName.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/PrincipalName.java	2016-09-21 20:40:40.276914774 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/PrincipalName.java	2016-09-21 20:41:14.560360126 +0100
+@@ -421,7 +421,9 @@
+                                 hostName.toLowerCase(Locale.ENGLISH)+".")) {
+                         hostName = canonicalized;
+                     }
+-                } catch (UnknownHostException | SecurityException e) {
++                } catch (UnknownHostException e) {
++                    // not canonicalized or no permission to do so, use old
++                } catch (SecurityException e) {
+                     // not canonicalized or no permission to do so, use old
+                 }
+                 nameParts[1] = hostName.toLowerCase(Locale.ENGLISH);
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MemberName.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/MemberName.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MemberName.java	2016-09-23 15:15:03.191967011 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MemberName.java	2016-09-23 15:22:20.332755375 +0100
+@@ -862,7 +862,12 @@
+                 m = MethodHandleNatives.resolve(m, lookupClass);
+                 m.checkForTypeAlias(m.getDeclaringClass());
+                 m.resolution = null;
+-            } catch (ClassNotFoundException | LinkageError ex) {
++            } catch (ClassNotFoundException ex) {
++                // JVM reports that the "bytecode behavior" would get an error
++                assert(!m.isResolved());
++                m.resolution = ex;
++                return m;
++            } catch (LinkageError ex) {
+                 // JVM reports that the "bytecode behavior" would get an error
+                 assert(!m.isResolved());
+                 m.resolution = ex;
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/invoke/util/VerifyAccess.java openjdk-boot/jdk/src/share/classes/sun/invoke/util/VerifyAccess.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/invoke/util/VerifyAccess.java	2016-09-23 15:15:03.199966880 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/invoke/util/VerifyAccess.java	2016-09-23 15:22:46.000332273 +0100
+@@ -222,7 +222,9 @@
+                     public Class<?> run() {
+                         try {
+                             return Class.forName(name, false, refcLoader);
+-                        } catch (ClassNotFoundException | LinkageError e) {
++                        } catch (ClassNotFoundException e) {
++                            return null; // Assume the class is not found
++                        } catch (LinkageError e) {
+                             return null; // Assume the class is not found
+                         }
+                     }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/crypto/EncryptedPrivateKeyInfo.java openjdk-boot/jdk/src/share/classes/javax/crypto/EncryptedPrivateKeyInfo.java
+--- openjdk-boot.orig/jdk/src/share/classes/javax/crypto/EncryptedPrivateKeyInfo.java	2016-09-23 16:23:05.180335751 +0100
++++ openjdk-boot/jdk/src/share/classes/javax/crypto/EncryptedPrivateKeyInfo.java	2016-09-23 16:27:25.492014703 +0100
+@@ -249,9 +249,13 @@
+         try {
+             encoded = cipher.doFinal(encryptedData);
+             checkPKCS8Encoding(encoded);
+-        } catch (GeneralSecurityException |
+-                 IOException |
+-                 IllegalStateException ex) {
++        } catch (GeneralSecurityException ex) {
++            throw new InvalidKeySpecException(
++                    "Cannot retrieve the PKCS8EncodedKeySpec", ex);
++        } catch (IOException ex) {
++            throw new InvalidKeySpecException(
++                    "Cannot retrieve the PKCS8EncodedKeySpec", ex);
++        } catch (IllegalStateException ex) {
+             throw new InvalidKeySpecException(
+                     "Cannot retrieve the PKCS8EncodedKeySpec", ex);
+         }
+@@ -276,7 +280,10 @@
+         } catch (NoSuchAlgorithmException nsae) {
+             // rethrow
+             throw nsae;
+-        } catch (GeneralSecurityException | IOException ex) {
++        } catch (GeneralSecurityException ex) {
++            throw new InvalidKeyException(
++                    "Cannot retrieve the PKCS8EncodedKeySpec", ex);
++        } catch (IOException ex) {
+             throw new InvalidKeyException(
+                     "Cannot retrieve the PKCS8EncodedKeySpec", ex);
+         }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/crypto/SealedObject.java openjdk-boot/jdk/src/share/classes/javax/crypto/SealedObject.java
+--- openjdk-boot.orig/jdk/src/share/classes/javax/crypto/SealedObject.java	2016-09-23 16:23:05.192335551 +0100
++++ openjdk-boot/jdk/src/share/classes/javax/crypto/SealedObject.java	2016-09-23 16:24:51.118576883 +0100
+@@ -353,7 +353,9 @@
+ 
+         try {
+             return unseal(key, provider);
+-        } catch (IllegalBlockSizeException | BadPaddingException ex) {
++        } catch (IllegalBlockSizeException ex) {
++            throw new InvalidKeyException(ex.getMessage());
++        } catch (BadPaddingException ex) {
+             throw new InvalidKeyException(ex.getMessage());
+         }
+     }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/certpath/URICertStore.java openjdk-boot/jdk/src/share/classes/sun/security/provider/certpath/URICertStore.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/certpath/URICertStore.java	2016-09-23 17:07:13.421018536 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/provider/certpath/URICertStore.java	2016-09-23 17:07:55.180339579 +0100
+@@ -307,7 +307,12 @@
+                     factory.generateCertificates(in);
+             }
+             return getMatchingCerts(certs, selector);
+-        } catch (IOException | CertificateException e) {
++        } catch (IOException e) {
++            if (debug != null) {
++                debug.println("Exception fetching certificates:");
++                e.printStackTrace();
++            }
++        } catch (CertificateException e) {
+             if (debug != null) {
+                 debug.println("Exception fetching certificates:");
+                 e.printStackTrace();
+@@ -414,7 +419,12 @@
+                 crl = (X509CRL) factory.generateCRL(in);
+             }
+             return getMatchingCRLs(crl, selector);
+-        } catch (IOException | CRLException e) {
++        } catch (IOException e) {
++            if (debug != null) {
++                debug.println("Exception fetching CRL:");
++                e.printStackTrace();
++            }
++        } catch (CRLException e) {
+             if (debug != null) {
+                 debug.println("Exception fetching CRL:");
+                 e.printStackTrace();
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/RSAClientKeyExchange.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/RSAClientKeyExchange.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/RSAClientKeyExchange.java	2016-09-23 17:07:13.457017951 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/RSAClientKeyExchange.java	2016-09-23 17:15:54.756537449 +0100
+@@ -173,8 +173,14 @@
+                     clientVersion, serverVersion, encodedSecret),
+                     generator);
+             return kg.generateKey();
+-        } catch (InvalidAlgorithmParameterException |
+-                NoSuchAlgorithmException iae) {
++        } catch (InvalidAlgorithmParameterException iae) {
++            // unlikely to happen, otherwise, must be a provider exception
++            if (debug != null && Debug.isOn("handshake")) {
++                System.out.println("RSA premaster secret generation error:");
++                iae.printStackTrace(System.out);
++            }
++            throw new RuntimeException("Could not generate premaster secret", iae);
++        } catch (NoSuchAlgorithmException iae) {
+             // unlikely to happen, otherwise, must be a provider exception
+             if (debug != null && Debug.isOn("handshake")) {
+                 System.out.println("RSA premaster secret generation error:");
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/pkcs11/P11KeyStore.java openjdk-boot/jdk/src/share/classes/sun/security/pkcs11/P11KeyStore.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/pkcs11/P11KeyStore.java	2016-09-23 18:04:55.125088351 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/pkcs11/P11KeyStore.java	2016-09-23 18:10:03.312134476 +0100
+@@ -325,7 +325,9 @@
+ 
+             // did not find anything
+             return null;
+-        } catch (PKCS11Exception | KeyStoreException e) {
++        } catch (PKCS11Exception e) {
++            throw new ProviderException(e);
++        } catch (KeyStoreException e) {
+             throw new ProviderException(e);
+         } finally {
+             token.releaseSession(session);
+@@ -450,7 +452,9 @@
+             } else if (key instanceof SecretKey) {
+                 entry = new KeyStore.SecretKeyEntry((SecretKey)key);
+             }
+-        } catch (NullPointerException | IllegalArgumentException e) {
++        } catch (NullPointerException e) {
++            throw new KeyStoreException(e);
++        } catch (IllegalArgumentException e) {
+             throw new KeyStoreException(e);
+         }
+         engineSetEntry(alias, entry, new KeyStore.PasswordProtection(password));
+@@ -556,7 +560,9 @@
+                 } else {
+                     throw new KeyStoreException("unexpected entry type");
+                 }
+-            } catch (PKCS11Exception | CertificateException e) {
++            } catch (PKCS11Exception e) {
++                throw new KeyStoreException(e);
++            } catch (CertificateException e) {
+                 throw new KeyStoreException(e);
+             }
+         }
+@@ -758,7 +764,11 @@
+             if (debug != null) {
+                 dumpTokenMap();
+             }
+-        } catch (LoginException | KeyStoreException | PKCS11Exception e) {
++        } catch (LoginException e) {
++            throw new IOException("load failed", e);
++        } catch (KeyStoreException e) {
++            throw new IOException("load failed", e);
++        } catch (PKCS11Exception e) {
+             throw new IOException("load failed", e);
+         }
+     }
+@@ -838,7 +848,11 @@
+             if (debug != null) {
+                 dumpTokenMap();
+             }
+-        } catch (LoginException | KeyStoreException | PKCS11Exception e) {
++        } catch (LoginException e) {
++            throw new IOException("load failed", e);
++        } catch (KeyStoreException e) {
++            throw new IOException("load failed", e);
++        } catch (PKCS11Exception e) {
+             throw new IOException("load failed", e);
+         }
+     }
+@@ -1028,7 +1042,9 @@
+                 storeCert(alias, xcert);
+                 module.setTrust(token, xcert);
+                 mapLabels();
+-            } catch (PKCS11Exception | CertificateException e) {
++            } catch (PKCS11Exception e) {
++                throw new KeyStoreException(e);
++            } catch (CertificateException e) {
+                 throw new KeyStoreException(e);
+             }
+ 
+@@ -1090,7 +1106,9 @@
+                         storePkey(alias, (KeyStore.PrivateKeyEntry)entry);
+                     }
+ 
+-                } catch (PKCS11Exception | CertificateException pe) {
++                } catch (PKCS11Exception pe) {
++                    throw new KeyStoreException(pe);
++                } catch (CertificateException pe) {
+                     throw new KeyStoreException(pe);
+                 }
+ 
+@@ -1128,7 +1146,9 @@
+                 if (debug != null) {
+                     dumpTokenMap();
+                 }
+-            } catch (PKCS11Exception | CertificateException pe) {
++            } catch (PKCS11Exception pe) {
++                throw new KeyStoreException(pe);
++            } catch (CertificateException pe) {
+                 throw new KeyStoreException(pe);
+             }
+         }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/pkcs11/P11RSAKeyFactory.java openjdk-boot/jdk/src/share/classes/sun/security/pkcs11/P11RSAKeyFactory.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/pkcs11/P11RSAKeyFactory.java	2016-09-23 18:04:55.137088159 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/pkcs11/P11RSAKeyFactory.java	2016-09-23 18:06:53.927179034 +0100
+@@ -130,7 +130,10 @@
+                 rs.getModulus(),
+                 rs.getPublicExponent()
+             );
+-        } catch (PKCS11Exception | InvalidKeyException e) {
++        } catch (PKCS11Exception e) {
++            throw new InvalidKeySpecException
++                ("Could not create RSA public key", e);
++        } catch (InvalidKeyException e) {
+             throw new InvalidKeySpecException
+                 ("Could not create RSA public key", e);
+         }
+@@ -174,7 +177,10 @@
+                 throw new InvalidKeySpecException("Only RSAPrivate(Crt)KeySpec "
+                     + "and PKCS8EncodedKeySpec supported for RSA private keys");
+             }
+-        } catch (PKCS11Exception | InvalidKeyException e) {
++        } catch (PKCS11Exception e) {
++            throw new InvalidKeySpecException
++                ("Could not create RSA private key", e);
++        } catch (InvalidKeyException e) {
+             throw new InvalidKeySpecException
+                 ("Could not create RSA private key", e);
+         }
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/keytool/Main.java	2016-09-23 18:24:05.646575464 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/tools/keytool/Main.java	2016-09-23 18:24:20.022343797 +0100
+@@ -2538,7 +2538,9 @@
+         X509Certificate cert = null;
+         try {
+             cert = (X509Certificate)cf.generateCertificate(in);
+-        } catch (ClassCastException | CertificateException ce) {
++        } catch (ClassCastException ce) {
++            throw new Exception(rb.getString("Input.not.an.X.509.certificate"));
++        } catch (CertificateException ce) {
+             throw new Exception(rb.getString("Input.not.an.X.509.certificate"));
+         }
+ 
--- a/patches/boot/ecj-stringswitch.patch	Mon Sep 19 19:06:57 2016 +0100
+++ b/patches/boot/ecj-stringswitch.patch	Wed Sep 28 07:32:57 2016 +0100
@@ -1,10 +1,10 @@
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java	2013-12-26 19:50:56.000000000 +0000
-+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java	2013-12-26 22:14:29.670206162 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java	2016-09-21 04:56:42.479974458 +0100
 @@ -350,19 +350,16 @@
              if (attrCommands != null) {
-                 Object lkey = Attribute.keyForLookup(ctype, name);
-                 String cmd = (String) attrCommands.get(lkey);
+                 Attribute.Layout lkey = Attribute.keyForLookup(ctype, name);
+                 String cmd = attrCommands.get(lkey);
 -                if (cmd != null) {
 -                    switch (cmd) {
 -                        case "pass":
@@ -32,8 +32,8 @@
              // Find canonical instance of the requested attribute.
              Attribute a = Attribute.lookup(Package.attrDefs, ctype, name);
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java	2013-12-26 19:50:56.000000000 +0000
-+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java	2013-12-26 22:14:29.670206162 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java	2016-09-21 04:55:45.672897910 +0100
 @@ -73,16 +73,14 @@
          {
              // Non-standard, undocumented "--unpack" switch enables unpack mode.
@@ -91,9 +91,9 @@
  
          if (logFile != null && !logFile.equals("")) {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java	2013-12-26 19:50:56.000000000 +0000
-+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java	2013-12-26 22:14:29.670206162 +0000
-@@ -1116,30 +1116,25 @@
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java	2016-09-21 04:55:45.672897910 +0100
+@@ -1107,30 +1107,25 @@
          // what is one of { Debug, Compile, Constant, Exceptions, InnerClasses }
          if (verbose > 0)
              Utils.log.info("Stripping "+what.toLowerCase()+" data and attributes...");
@@ -144,9 +144,9 @@
      }
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/security/ntlm/NTLM.java openjdk-boot/jdk/src/share/classes/com/sun/security/ntlm/NTLM.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/security/ntlm/NTLM.java	2013-12-26 19:50:56.000000000 +0000
-+++ openjdk-boot/jdk/src/share/classes/com/sun/security/ntlm/NTLM.java	2013-12-26 22:14:29.670206162 +0000
-@@ -64,17 +64,23 @@
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/security/ntlm/NTLM.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/security/ntlm/NTLM.java	2016-09-21 04:55:45.672897910 +0100
+@@ -65,17 +65,23 @@
  
      protected NTLM(String version) throws NTLMException {
          if (version == null) version = "LMv2/NTLMv2";
@@ -182,8 +182,8 @@
              fac = SecretKeyFactory.getInstance ("DES");
              cipher = Cipher.getInstance ("DES/ECB/NoPadding");
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java	2013-12-26 19:50:56.000000000 +0000
-+++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java	2013-12-26 22:19:11.986517834 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java	2016-09-21 04:55:45.672897910 +0100
 @@ -328,12 +328,11 @@
                                       Object[] appendixResult) {
          try {
@@ -434,8 +434,8 @@
          }
          return false;
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleProxies.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleProxies.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleProxies.java	2013-12-26 19:50:56.000000000 +0000
-+++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleProxies.java	2013-12-26 22:14:29.670206162 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleProxies.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleProxies.java	2016-09-21 04:55:45.672897910 +0100
 @@ -269,14 +269,16 @@
  
      private static
@@ -477,8 +477,8 @@
          }
          return null;
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/launcher/LauncherHelper.java openjdk-boot/jdk/src/share/classes/sun/launcher/LauncherHelper.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/launcher/LauncherHelper.java	2013-12-26 19:50:56.000000000 +0000
-+++ openjdk-boot/jdk/src/share/classes/sun/launcher/LauncherHelper.java	2013-12-26 22:14:29.670206162 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/sun/launcher/LauncherHelper.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/launcher/LauncherHelper.java	2016-09-21 04:55:45.672897910 +0100
 @@ -119,24 +119,20 @@
          String optStr = (opts.length > 1 && opts[1] != null)
                  ? opts[1].trim()
@@ -515,10 +515,53 @@
      }
  
      /*
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java openjdk-boot/jdk/src/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java	2016-09-21 04:55:45.672897910 +0100
+@@ -65,14 +65,12 @@
+         if (paramTypes.length != 0)
+             throw new AssertionError("Too many parameters for an annotation method");
+ 
+-        switch(member) {
+-        case "toString":
++	if ("toString".equals(member))
+             return toStringImpl();
+-        case "hashCode":
++	if ("hashCode".equals(member))
+             return hashCodeImpl();
+-        case "annotationType":
++	if ("annotationType".equals(member))
+             return type;
+-        }
+ 
+         // Handle annotation member accessors
+         Object result = memberValues.get(member);
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/Config.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/Config.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/Config.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/Config.java	2016-09-21 04:55:45.676897844 +0100
+@@ -428,14 +428,13 @@
+         if (s == null) {
+             return null;
+         }
+-        switch (s.toLowerCase(Locale.US)) {
+-            case "yes": case "true":
++        String lCase = s.toLowerCase(Locale.US);
++        if ("yes".equals(lCase) || "true".equals(lCase)) {
+                 return Boolean.TRUE;
+-            case "no": case "false":
++        } else if ("no".equals(lCase) || "false".equals(lCase)) {
+                 return Boolean.FALSE;
+-            default:
+-                return null;
+         }
++        return null;
+     }
+ 
+     /**
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/util/DisabledAlgorithmConstraints.java openjdk-boot/jdk/src/share/classes/sun/security/util/DisabledAlgorithmConstraints.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/util/DisabledAlgorithmConstraints.java	2013-12-26 19:50:56.000000000 +0000
-+++ openjdk-boot/jdk/src/share/classes/sun/security/util/DisabledAlgorithmConstraints.java	2013-12-26 22:14:29.670206162 +0000
-@@ -378,19 +378,23 @@
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/util/DisabledAlgorithmConstraints.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/util/DisabledAlgorithmConstraints.java	2016-09-21 04:55:45.672897910 +0100
+@@ -228,19 +228,23 @@
              GE;         // ">="
  
              static Operator of(String s) {
@@ -555,30 +598,9 @@
                  }
  
                  throw new IllegalArgumentException(
-diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java openjdk-boot/jdk/src/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java	2014-10-14 19:33:10.606587037 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java	2014-10-14 19:34:06.831372783 +0100
-@@ -64,14 +64,12 @@
-         if (paramTypes.length != 0)
-             throw new AssertionError("Too many parameters for an annotation method");
- 
--        switch(member) {
--        case "toString":
-+	if ("toString".equals(member))
-             return toStringImpl();
--        case "hashCode":
-+	if ("hashCode".equals(member))
-             return hashCodeImpl();
--        case "annotationType":
-+	if ("annotationType".equals(member))
-             return type;
--        }
- 
-         // Handle annotation member accessors
-         Object result = memberValues.get(member);
 diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/security/smartcardio/PlatformPCSC.java openjdk-boot/jdk/src/solaris/classes/sun/security/smartcardio/PlatformPCSC.java
---- openjdk-boot.orig/jdk/src/solaris/classes/sun/security/smartcardio/PlatformPCSC.java	2015-07-08 04:13:13.914186008 +0100
-+++ openjdk-boot/jdk/src/solaris/classes/sun/security/smartcardio/PlatformPCSC.java	2015-07-08 04:14:07.193257306 +0100
+--- openjdk-boot.orig/jdk/src/solaris/classes/sun/security/smartcardio/PlatformPCSC.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/classes/sun/security/smartcardio/PlatformPCSC.java	2016-09-21 04:55:45.676897844 +0100
 @@ -101,19 +101,17 @@
          k = lib.indexOf("$ARCH");
          if (k != -1) {
@@ -606,24 +628,584 @@
              }
              lib = replace(k, lib, "$ARCH", arch);
          }
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/Config.java	2015-10-20 02:20:59.588588403 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/Config.java	2015-10-20 02:22:51.051758602 +0100
-@@ -420,14 +420,13 @@
-         if (s == null) {
-             return null;
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/certpath/X509CertPath.java openjdk-boot/jdk/src/share/classes/sun/security/provider/certpath/X509CertPath.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/certpath/X509CertPath.java	2016-09-22 01:48:46.637378277 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/provider/certpath/X509CertPath.java	2016-09-22 01:50:21.179836041 +0100
+@@ -153,15 +153,12 @@
+             throws CertificateException {
+         super("X.509");
+ 
+-        switch (encoding) {
+-            case PKIPATH_ENCODING:
+-                certs = parsePKIPATH(is);
+-                break;
+-            case PKCS7_ENCODING:
+-                certs = parsePKCS7(is);
+-                break;
+-            default:
+-                throw new CertificateException("unsupported encoding");
++        if (PKIPATH_ENCODING.equals(encoding)) {
++	    certs = parsePKIPATH(is);
++	} else if (PKCS7_ENCODING.equals(encoding)) {
++	    certs = parsePKCS7(is);
++	} else {
++	    throw new CertificateException("unsupported encoding");
+         }
+     }
+ 
+@@ -344,13 +341,12 @@
+      */
+     public byte[] getEncoded(String encoding)
+             throws CertificateEncodingException {
+-        switch (encoding) {
+-            case PKIPATH_ENCODING:
+-                return encodePKIPATH();
+-            case PKCS7_ENCODING:
+-                return encodePKCS7();
+-            default:
+-                throw new CertificateEncodingException("unsupported encoding");
++        if (PKIPATH_ENCODING.equals(encoding)) {
++	    return encodePKIPATH();
++	} else if (PKCS7_ENCODING.equals(encoding)) {
++	    return encodePKCS7();
++	} else {
++	    throw new CertificateEncodingException("unsupported encoding");
+         }
+     }
+ 
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java	2016-09-23 17:47:51.277522108 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java	2016-09-23 17:52:27.357088372 +0100
+@@ -823,16 +823,13 @@
+             sig = JsseJce.getSignature(
+                         preferableSignatureAlgorithm.getAlgorithmName());
+         } else {
+-                switch (algorithm) {
+-                    case "DSA":
+-                        sig = JsseJce.getSignature(JsseJce.SIGNATURE_DSA);
+-                        break;
+-                    case "RSA":
+-                        sig = RSASignature.getInstance();
+-                        break;
+-                    default:
+-                        throw new SSLKeyException("neither an RSA or a DSA key");
+-                }
++            if ("DSA".equals(algorithm)) {
++                sig = JsseJce.getSignature(JsseJce.SIGNATURE_DSA);
++            } else if ("RSA".equals(algorithm)) {
++                sig = RSASignature.getInstance();
++            } else {
++                throw new SSLKeyException("neither an RSA or a DSA key");
++            }
+         }
+ 
+         sig.initVerify(publicKey);
+@@ -1112,14 +1109,13 @@
+ 
+     private static Signature getSignature(String keyAlgorithm)
+             throws NoSuchAlgorithmException {
+-            switch (keyAlgorithm) {
+-                case "EC":
+-                    return JsseJce.getSignature(JsseJce.SIGNATURE_ECDSA);
+-                case "RSA":
+-                    return RSASignature.getInstance();
+-                default:
+-                    throw new NoSuchAlgorithmException("neither an RSA or a EC key");
+-            }
++        if ("EC".equals(keyAlgorithm)) {
++            return JsseJce.getSignature(JsseJce.SIGNATURE_ECDSA);
++        } else if ("RSA".equals(keyAlgorithm)) {
++            return RSASignature.getInstance();
++        } else {
++            throw new NoSuchAlgorithmException("neither an RSA or a EC key");
++        }
+     }
+ 
+     private void updateSignature(Signature sig, byte clntNonce[],
+@@ -1627,17 +1623,16 @@
+      */
+     private static Signature getSignature(ProtocolVersion protocolVersion,
+             String algorithm) throws GeneralSecurityException {
+-            switch (algorithm) {
+-                case "RSA":
+-                    return RSASignature.getInternalInstance();
+-                case "DSA":
+-                    return JsseJce.getSignature(JsseJce.SIGNATURE_RAWDSA);
+-                case "EC":
+-                    return JsseJce.getSignature(JsseJce.SIGNATURE_RAWECDSA);
+-                default:
+-                    throw new SignatureException("Unrecognized algorithm: "
+-                        + algorithm);
+-            }
++        if ("RSA".equals(algorithm)) {
++            return RSASignature.getInternalInstance();
++        } else if ("DSA".equals(algorithm)) {
++            return JsseJce.getSignature(JsseJce.SIGNATURE_RAWDSA);
++        } else if ("EC".equals(algorithm)) {
++            return JsseJce.getSignature(JsseJce.SIGNATURE_RAWECDSA);
++        } else {
++            throw new SignatureException("Unrecognized algorithm: "
++                                         + algorithm);
++        }
+     }
+ 
+     /*
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/X509KeyManagerImpl.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/X509KeyManagerImpl.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/X509KeyManagerImpl.java	2016-09-23 17:47:51.305521658 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/X509KeyManagerImpl.java	2016-09-23 17:52:23.493150294 +0100
+@@ -525,43 +525,38 @@
+                 if (ku != null) {
+                     String algorithm = cert.getPublicKey().getAlgorithm();
+                     boolean kuSignature = getBit(ku, 0);
+-                    switch (algorithm) {
+-                        case "RSA":
+-                            // require either signature bit
+-                            // or if server also allow key encipherment bit
+-                            if (kuSignature == false) {
+-                                if ((this == CLIENT) || (getBit(ku, 2) == false)) {
+-                                    return CheckResult.EXTENSION_MISMATCH;
+-                                }
+-                            }
+-                            break;
+-                        case "DSA":
+-                            // require signature bit
+-                            if (kuSignature == false) {
+-                                return CheckResult.EXTENSION_MISMATCH;
+-                            }
+-                            break;
+-                        case "DH":
+-                            // require keyagreement bit
+-                            if (getBit(ku, 4) == false) {
+-                                return CheckResult.EXTENSION_MISMATCH;
+-                            }
+-                            break;
+-                        case "EC":
+-                            // require signature bit
+-                            if (kuSignature == false) {
+-                                return CheckResult.EXTENSION_MISMATCH;
+-                            }
+-                            // For servers, also require key agreement.
+-                            // This is not totally accurate as the keyAgreement bit
+-                            // is only necessary for static ECDH key exchange and
+-                            // not ephemeral ECDH. We leave it in for now until
+-                            // there are signs that this check causes problems
+-                            // for real world EC certificates.
+-                            if ((this == SERVER) && (getBit(ku, 4) == false)) {
++                    if ("RSA".equals(algorithm)) {
++                        // require either signature bit
++                        // or if server also allow key encipherment bit
++                        if (kuSignature == false) {
++                            if ((this == CLIENT) || (getBit(ku, 2) == false)) {
+                                 return CheckResult.EXTENSION_MISMATCH;
+                             }
+-                            break;
++                        }
++                    } else if ("DSA".equals(algorithm)) {
++                        // require signature bit
++                        if (kuSignature == false) {
++                            return CheckResult.EXTENSION_MISMATCH;
++                        }
++                    } else if ("DH".equals(algorithm)) {
++                        // require keyagreement bit
++                        if (getBit(ku, 4) == false) {
++                            return CheckResult.EXTENSION_MISMATCH;
++                        }
++                    } else if ("EC".equals(algorithm)) {
++                        // require signature bit
++                        if (kuSignature == false) {
++                            return CheckResult.EXTENSION_MISMATCH;
++                        }
++                        // For servers, also require key agreement.
++                        // This is not totally accurate as the keyAgreement bit
++                        // is only necessary for static ECDH key exchange and
++                        // not ephemeral ECDH. We leave it in for now until
++                        // there are signs that this check causes problems
++                        // for real world EC certificates.
++                        if ((this == SERVER) && (getBit(ku, 4) == false)) {
++                            return CheckResult.EXTENSION_MISMATCH;
++                        }
+                     }
+                 }
+             } catch (CertificateException e) {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/pkcs11/Config.java openjdk-boot/jdk/src/share/classes/sun/security/pkcs11/Config.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/pkcs11/Config.java	2016-09-23 17:57:17.100442422 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/pkcs11/Config.java	2016-09-23 18:01:58.299928821 +0100
+@@ -574,13 +574,12 @@
+ 
+     private boolean parseBoolean() throws IOException {
+         String val = parseWord();
+-        switch (val) {
+-            case "true":
+-                return true;
+-            case "false":
+-                return false;
+-            default:
+-                throw excToken("Expected boolean value, read:");
++        if ("true".equals(val)) {
++            return true;
++        } else if ("false".equals(val)) {
++            return false;
++        } else {
++            throw excToken("Expected boolean value, read:");
+         }
+     }
+ 
+@@ -917,15 +916,14 @@
+ 
+     private String parseOperation() throws IOException {
+         String op = parseWord();
+-        switch (op) {
+-            case "*":
+-                return TemplateManager.O_ANY;
+-            case "generate":
+-                return TemplateManager.O_GENERATE;
+-            case "import":
+-                return TemplateManager.O_IMPORT;
+-            default:
+-                throw excLine("Unknown operation " + op);
++        if ("*".equals(op)) {
++            return TemplateManager.O_ANY;
++        } else if ("generate".equals(op)) {
++            return TemplateManager.O_GENERATE;
++        } else if ("import".equals(op)) {
++            return TemplateManager.O_IMPORT;
++        } else {
++            throw excLine("Unknown operation " + op);
          }
--        switch (s.toLowerCase(Locale.US)) {
--            case "yes": case "true":
-+        String lCase = s.toLowerCase(Locale.US);
-+        if ("yes".equals(lCase) || "true".equals(lCase)) {
-                 return Boolean.TRUE;
--            case "no": case "false":
-+        } else if ("no".equals(lCase) || "false".equals(lCase)) {
-                 return Boolean.FALSE;
+     }
+ 
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/pkcs11/P11Key.java openjdk-boot/jdk/src/share/classes/sun/security/pkcs11/P11Key.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/pkcs11/P11Key.java	2016-09-23 17:57:17.108442294 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/pkcs11/P11Key.java	2016-09-23 18:01:58.287929014 +0100
+@@ -304,22 +304,21 @@
+     // we assume that all components of public keys are always accessible
+     static PublicKey publicKey(Session session, long keyID, String algorithm,
+             int keyLength, CK_ATTRIBUTE[] attributes) {
+-        switch (algorithm) {
+-            case "RSA":
+-                return new P11RSAPublicKey
+-                    (session, keyID, algorithm, keyLength, attributes);
+-            case "DSA":
+-                return new P11DSAPublicKey
+-                    (session, keyID, algorithm, keyLength, attributes);
+-            case "DH":
+-                return new P11DHPublicKey
+-                    (session, keyID, algorithm, keyLength, attributes);
+-            case "EC":
+-                return new P11ECPublicKey
+-                    (session, keyID, algorithm, keyLength, attributes);
+-            default:
+-                throw new ProviderException
+-                    ("Unknown public key algorithm " + algorithm);
++        if ("RSA".equals(algorithm)) {
++            return new P11RSAPublicKey
++                (session, keyID, algorithm, keyLength, attributes);
++        } else if ("DSA".equals(algorithm)) {
++            return new P11DSAPublicKey
++                (session, keyID, algorithm, keyLength, attributes);
++        } else if ("DH".equals(algorithm)) {
++            return new P11DHPublicKey
++                (session, keyID, algorithm, keyLength, attributes);
++        } else if ("EC".equals(algorithm)) {
++            return new P11ECPublicKey
++                (session, keyID, algorithm, keyLength, attributes);
++        } else {
++            throw new ProviderException
++                ("Unknown public key algorithm " + algorithm);
+         }
+     }
+ 
+@@ -334,43 +333,42 @@
+             return new P11PrivateKey
+                 (session, keyID, algorithm, keyLength, attributes);
+         } else {
+-            switch (algorithm) {
+-                case "RSA":
+-                    // XXX better test for RSA CRT keys (single getAttributes() call)
+-                    // we need to determine whether this is a CRT key
+-                    // see if we can obtain the public exponent
+-                    // this should also be readable for sensitive/extractable keys
+-                    CK_ATTRIBUTE[] attrs2 = new CK_ATTRIBUTE[] {
+-                        new CK_ATTRIBUTE(CKA_PUBLIC_EXPONENT),
+-                    };
+-                    boolean crtKey;
+-                    try {
+-                        session.token.p11.C_GetAttributeValue
+-                            (session.id(), keyID, attrs2);
+-                        crtKey = (attrs2[0].pValue instanceof byte[]);
+-                    } catch (PKCS11Exception e) {
+-                        // ignore, assume not available
+-                        crtKey = false;
+-                    }
+-                    if (crtKey) {
+-                        return new P11RSAPrivateKey
+-                                (session, keyID, algorithm, keyLength, attributes);
+-                    } else {
+-                        return new P11RSAPrivateNonCRTKey
+-                                (session, keyID, algorithm, keyLength, attributes);
+-                    }
+-                case "DSA":
+-                    return new P11DSAPrivateKey
+-                            (session, keyID, algorithm, keyLength, attributes);
+-                case "DH":
+-                    return new P11DHPrivateKey
+-                            (session, keyID, algorithm, keyLength, attributes);
+-                case "EC":
+-                    return new P11ECPrivateKey
+-                            (session, keyID, algorithm, keyLength, attributes);
+-                default:
+-                    throw new ProviderException
+-                            ("Unknown private key algorithm " + algorithm);
++            if ("RSA".equals(algorithm)) {
++                // XXX better test for RSA CRT keys (single getAttributes() call)
++                // we need to determine whether this is a CRT key
++                // see if we can obtain the public exponent
++                // this should also be readable for sensitive/extractable keys
++                CK_ATTRIBUTE[] attrs2 = new CK_ATTRIBUTE[] {
++                    new CK_ATTRIBUTE(CKA_PUBLIC_EXPONENT),
++                };
++                boolean crtKey;
++                try {
++                    session.token.p11.C_GetAttributeValue
++                        (session.id(), keyID, attrs2);
++                    crtKey = (attrs2[0].pValue instanceof byte[]);
++                } catch (PKCS11Exception e) {
++                    // ignore, assume not available
++                    crtKey = false;
++                }
++                if (crtKey) {
++                    return new P11RSAPrivateKey
++                        (session, keyID, algorithm, keyLength, attributes);
++                } else {
++                    return new P11RSAPrivateNonCRTKey
++                        (session, keyID, algorithm, keyLength, attributes);
++                }
++            } else if ("DSA".equals(algorithm)) {
++                return new P11DSAPrivateKey
++                    (session, keyID, algorithm, keyLength, attributes);
++            } else if ("DH".equals(algorithm)) {
++                return new P11DHPrivateKey
++                    (session, keyID, algorithm, keyLength, attributes);
++            } else if ("EC".equals(algorithm)) {
++                return new P11ECPrivateKey
++                    (session, keyID, algorithm, keyLength, attributes);
++            } else {
++                throw new ProviderException
++                    ("Unknown private key algorithm " + algorithm);
+             }
+         }
+     }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/security/sasl/digest/DigestMD5Base.java openjdk-boot/jdk/src/share/classes/com/sun/security/sasl/digest/DigestMD5Base.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/security/sasl/digest/DigestMD5Base.java	2016-09-24 00:05:03.122266846 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/security/sasl/digest/DigestMD5Base.java	2016-09-24 00:11:08.200316405 +0100
+@@ -1579,45 +1579,42 @@
+         KeySpec spec = null;
+         SecretKeyFactory desFactory =
+             SecretKeyFactory.getInstance(desStrength);
+-        switch (desStrength) {
+-            case "des":
+-                spec = new DESKeySpec(subkey1, 0);
+-                if (logger.isLoggable(Level.FINEST)) {
+-                    traceOutput(DP_CLASS_NAME, "makeDesKeys",
+-                        "DIGEST42:DES key input: ", input);
+-                    traceOutput(DP_CLASS_NAME, "makeDesKeys",
+-                        "DIGEST43:DES key parity-adjusted: ", subkey1);
+-                    traceOutput(DP_CLASS_NAME, "makeDesKeys",
+-                        "DIGEST44:DES key material: ", ((DESKeySpec)spec).getKey());
+-                    logger.log(Level.FINEST, "DIGEST45: is parity-adjusted? {0}",
+-                        Boolean.valueOf(DESKeySpec.isParityAdjusted(subkey1, 0)));
+-                }
+-                break;
+-            case "desede":
+-                // Generate second subkey using second 7 bytes
+-                byte[] subkey2 = addDesParity(input, 7, 7);
+-                // Construct 24-byte encryption-decryption-encryption sequence
+-                byte[] ede = new byte[subkey1.length*2+subkey2.length];
+-                System.arraycopy(subkey1, 0, ede, 0, subkey1.length);
+-                System.arraycopy(subkey2, 0, ede, subkey1.length, subkey2.length);
+-                System.arraycopy(subkey1, 0, ede, subkey1.length+subkey2.length,
+-                    subkey1.length);
+-                spec = new DESedeKeySpec(ede, 0);
+-                if (logger.isLoggable(Level.FINEST)) {
+-                    traceOutput(DP_CLASS_NAME, "makeDesKeys",
+-                        "DIGEST46:3DES key input: ", input);
+-                    traceOutput(DP_CLASS_NAME, "makeDesKeys",
+-                        "DIGEST47:3DES key ede: ", ede);
+-                    traceOutput(DP_CLASS_NAME, "makeDesKeys",
+-                        "DIGEST48:3DES key material: ",
+-                        ((DESedeKeySpec)spec).getKey());
+-                    logger.log(Level.FINEST, "DIGEST49: is parity-adjusted? ",
+-                        Boolean.valueOf(DESedeKeySpec.isParityAdjusted(ede, 0)));
+-                }
+-                break;
+-            default:
+-                throw new IllegalArgumentException("Invalid DES strength:" +
+-                    desStrength);
++        if ("des".equals(desStrength)) {
++            spec = new DESKeySpec(subkey1, 0);
++            if (logger.isLoggable(Level.FINEST)) {
++                traceOutput(DP_CLASS_NAME, "makeDesKeys",
++                            "DIGEST42:DES key input: ", input);
++                traceOutput(DP_CLASS_NAME, "makeDesKeys",
++                            "DIGEST43:DES key parity-adjusted: ", subkey1);
++                traceOutput(DP_CLASS_NAME, "makeDesKeys",
++                            "DIGEST44:DES key material: ", ((DESKeySpec)spec).getKey());
++                logger.log(Level.FINEST, "DIGEST45: is parity-adjusted? {0}",
++                           Boolean.valueOf(DESKeySpec.isParityAdjusted(subkey1, 0)));
++            }
++        } else if ("desede".equals(desStrength)) {
++            // Generate second subkey using second 7 bytes
++            byte[] subkey2 = addDesParity(input, 7, 7);
++            // Construct 24-byte encryption-decryption-encryption sequence
++            byte[] ede = new byte[subkey1.length*2+subkey2.length];
++            System.arraycopy(subkey1, 0, ede, 0, subkey1.length);
++            System.arraycopy(subkey2, 0, ede, subkey1.length, subkey2.length);
++            System.arraycopy(subkey1, 0, ede, subkey1.length+subkey2.length,
++                             subkey1.length);
++            spec = new DESedeKeySpec(ede, 0);
++            if (logger.isLoggable(Level.FINEST)) {
++                traceOutput(DP_CLASS_NAME, "makeDesKeys",
++                            "DIGEST46:3DES key input: ", input);
++                traceOutput(DP_CLASS_NAME, "makeDesKeys",
++                            "DIGEST47:3DES key ede: ", ede);
++                traceOutput(DP_CLASS_NAME, "makeDesKeys",
++                            "DIGEST48:3DES key material: ",
++                            ((DESedeKeySpec)spec).getKey());
++                logger.log(Level.FINEST, "DIGEST49: is parity-adjusted? ",
++                           Boolean.valueOf(DESedeKeySpec.isParityAdjusted(ede, 0)));
++            }
++        } else {
++            throw new IllegalArgumentException("Invalid DES strength:" +
++                                               desStrength);
+         }
+         return desFactory.generateSecret(spec);
+     }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/security/sasl/digest/DigestMD5Server.java openjdk-boot/jdk/src/share/classes/com/sun/security/sasl/digest/DigestMD5Server.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/security/sasl/digest/DigestMD5Server.java	2016-09-24 00:05:03.130266715 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/security/sasl/digest/DigestMD5Server.java	2016-09-24 00:11:08.172316862 +0100
+@@ -461,23 +461,19 @@
+ 
+         // Check that QOP is one sent by server
+         byte cQop;
+-        switch (negotiatedQop) {
+-            case "auth":
+-                cQop = NO_PROTECTION;
+-                break;
+-            case "auth-int":
+-                cQop = INTEGRITY_ONLY_PROTECTION;
+-                integrity = true;
+-                rawSendSize = sendMaxBufSize - 16;
+-                break;
+-            case "auth-conf":
+-                cQop = PRIVACY_PROTECTION;
+-                integrity = privacy = true;
+-                rawSendSize = sendMaxBufSize - 26;
+-                break;
+-            default:
+-                throw new SaslException("DIGEST-MD5: digest response format " +
+-                    "violation. Invalid QOP: " + negotiatedQop);
++        if ("auth".equals(negotiatedQop)) {
++            cQop = NO_PROTECTION;
++        } else if ("auth-int".equals(negotiatedQop)) {
++            cQop = INTEGRITY_ONLY_PROTECTION;
++            integrity = true;
++            rawSendSize = sendMaxBufSize - 16;
++        } else if ("auth-conf".equals(negotiatedQop)) {
++            cQop = PRIVACY_PROTECTION;
++            integrity = privacy = true;
++            rawSendSize = sendMaxBufSize - 26;
++        } else {
++            throw new SaslException("DIGEST-MD5: digest response format " +
++                                    "violation. Invalid QOP: " + negotiatedQop);
+         }
+         if ((cQop&allQop) == 0) {
+             throw new SaslException("DIGEST-MD5: server does not support " +
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/security/sasl/ntlm/NTLMClient.java openjdk-boot/jdk/src/share/classes/com/sun/security/sasl/ntlm/NTLMClient.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/security/sasl/ntlm/NTLMClient.java	2016-09-24 00:05:03.142266519 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/security/sasl/ntlm/NTLMClient.java	2016-09-24 00:11:08.164316992 +0100
+@@ -205,13 +205,12 @@
+         if (!isComplete()) {
+             throw new IllegalStateException("authentication not complete");
+         }
+-        switch (propName) {
+-            case Sasl.QOP:
+-                return "auth";
+-            case NTLM_DOMAIN:
+-                return client.getDomain();
 -            default:
 -                return null;
++        if (Sasl.QOP.equals(propName)) {
++            return "auth";
++        } else if (NTLM_DOMAIN.equals(propName)) {
++            return client.getDomain();
++        } else {
++            return null;
          }
-+        return null;
+     }
+ 
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/security/sasl/ntlm/NTLMServer.java openjdk-boot/jdk/src/share/classes/com/sun/security/sasl/ntlm/NTLMServer.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/security/sasl/ntlm/NTLMServer.java	2016-09-24 00:05:03.154266324 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/security/sasl/ntlm/NTLMServer.java	2016-09-24 00:11:08.156317122 +0100
+@@ -219,13 +219,12 @@
+         if (!isComplete()) {
+             throw new IllegalStateException("authentication not complete");
+         }
+-        switch (propName) {
+-            case Sasl.QOP:
+-                return "auth";
+-            case NTLM_HOSTNAME:
+-                return hostname;
+-            default:
+-                return null;
++        if (Sasl.QOP.equals(propName)) {
++            return "auth";
++        } else if (NTLM_HOSTNAME.equals(propName)) {
++            return hostname;
++        } else {
++            return null;
+         }
      }
  
-     /**
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/security/sasl/util/AbstractSaslImpl.java openjdk-boot/jdk/src/share/classes/com/sun/security/sasl/util/AbstractSaslImpl.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/security/sasl/util/AbstractSaslImpl.java	2016-09-24 00:05:03.166266129 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/security/sasl/util/AbstractSaslImpl.java	2016-09-24 00:11:08.152317188 +0100
+@@ -155,23 +155,22 @@
+         if (!completed) {
+             throw new IllegalStateException("SASL authentication not completed");
+         }
+-        switch (propName) {
+-            case Sasl.QOP:
+-                if (privacy) {
+-                    return "auth-conf";
+-                } else if (integrity) {
+-                    return "auth-int";
+-                } else {
+-                    return "auth";
+-                }
+-            case Sasl.MAX_BUFFER:
+-                return Integer.toString(recvMaxBufSize);
+-            case Sasl.RAW_SEND_SIZE:
+-                return Integer.toString(rawSendSize);
+-            case MAX_SEND_BUF:
+-                return Integer.toString(sendMaxBufSize);
+-            default:
+-                return null;
++        if (Sasl.QOP.equals(propName)) {
++            if (privacy) {
++                return "auth-conf";
++            } else if (integrity) {
++                return "auth-int";
++            } else {
++                return "auth";
++            }
++        } else if (Sasl.MAX_BUFFER.equals(propName)) {
++            return Integer.toString(recvMaxBufSize);
++        } else if (Sasl.RAW_SEND_SIZE.equals(propName)) {
++            return Integer.toString(rawSendSize);
++        } else if (MAX_SEND_BUF.equals(propName)) {
++            return Integer.toString(sendMaxBufSize);
++        } else {
++            return null;
+         }
+     }
+ 
--- a/patches/boot/ecj-trywithresources.patch	Mon Sep 19 19:06:57 2016 +0100
+++ b/patches/boot/ecj-trywithresources.patch	Wed Sep 28 07:32:57 2016 +0100
@@ -1,6 +1,6 @@
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java	2015-11-21 04:01:44.049911644 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java	2016-09-24 15:19:13.304801728 +0100
 @@ -743,7 +743,9 @@
  
          private void dumpBand() throws IOException {
@@ -54,8 +54,8 @@
  
          public void readDataFrom(InputStream in) throws IOException {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java	2015-11-20 05:14:27.699509574 +0000
-+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java	2015-11-21 04:01:44.049911644 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java	2016-09-24 15:17:56.922022903 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java	2016-09-24 15:19:13.308801664 +0100
 @@ -151,8 +151,13 @@
                  if ("--config-file=".equals(state)) {
                      String propFile = av.remove(0);
@@ -109,8 +109,8 @@
      }
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java	2015-11-21 04:01:44.049911644 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java	2016-09-24 15:19:13.308801664 +0100
 @@ -245,9 +245,15 @@
      void run(File inFile, JarOutputStream jstream) throws IOException {
          // %%% maybe memory-map the file, and pass it straight into unpacker
@@ -129,8 +129,8 @@
      }
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java	2015-11-21 04:01:44.049911644 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java	2016-09-24 15:19:13.308801664 +0100
 @@ -540,9 +540,15 @@
              Index index = initCPIndex(tag, cpMap);
  
@@ -174,8 +174,8 @@
          attr_definition_name.doneDisbursing();
          attr_definition_layout.doneDisbursing();
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java	2015-11-21 04:01:44.053911577 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java	2016-09-24 15:19:13.308801664 +0100
 @@ -458,9 +458,15 @@
                  Utils.log.info("Writing "+cpMap.length+" "+ConstantPool.tagName(tag)+" entries...");
  
@@ -193,7 +193,7 @@
              }
  
              switch (tag) {
-@@ -923,9 +929,10 @@
+@@ -921,9 +927,10 @@
              }
          });
          attrDefsWritten = new Attribute.Layout[numAttrDefs];
@@ -207,7 +207,7 @@
              int[] indexForDebug = Arrays.copyOf(attrIndexLimit, ATTR_CONTEXT_LIMIT);
              for (int i = 0; i < defs.length; i++) {
                  int header = ((Integer)defs[i][0]).intValue();
-@@ -951,6 +958,10 @@
+@@ -949,6 +956,10 @@
                  }
              }
          }
@@ -219,9 +219,9 @@
  
      void writeAttrCounts() throws IOException {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java	2015-11-21 04:01:44.053911577 +0000
-@@ -123,8 +123,9 @@
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java	2016-09-24 15:19:13.308801664 +0100
+@@ -122,8 +122,9 @@
          // Do this after the previous props are put in place,
          // to allow override if necessary.
          String propFile = "intrinsic.properties";
@@ -233,7 +233,7 @@
              if (propStr == null) {
                  throw new RuntimeException(propFile + " cannot be loaded");
              }
-@@ -132,6 +133,14 @@
+@@ -131,6 +132,14 @@
          } catch (IOException ee) {
              throw new RuntimeException(ee);
          }
@@ -249,9 +249,9 @@
          for (Map.Entry<Object, Object> e : props.entrySet()) {
              String key = (String) e.getKey();
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java	2015-11-21 04:01:44.053911577 +0000
-@@ -161,9 +161,15 @@
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java	2016-09-24 15:19:13.308801664 +0100
+@@ -160,9 +160,15 @@
          }
          // Use the stream-based implementation.
          // %%% Reconsider if native unpacker learns to memory-map the file.
@@ -269,8 +269,8 @@
              in.delete();
          }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java
---- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java	2015-11-21 04:01:44.053911577 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java	2016-09-24 15:19:13.308801664 +0100
 @@ -268,18 +268,30 @@
          // 4947205 : Peformance is slow when using pack-effort=0
          out = new BufferedOutputStream(out);
@@ -305,8 +305,8 @@
          // Wrapper to prevent closing of client-supplied stream.
      static private
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java	2015-11-21 04:01:44.053911577 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java	2016-09-24 15:19:13.308801664 +0100
 @@ -912,10 +912,15 @@
                              java.net.URLConnection uconn = tClass.getResource(tResource).openConnection();
                              int len = uconn.getContentLength();
@@ -326,8 +326,8 @@
                          } catch (java.io.IOException ex) {
                              throw newInternalError(ex);
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/Package.java openjdk-boot/jdk/src/share/classes/java/lang/Package.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/Package.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/lang/Package.java	2015-11-21 04:01:44.053911577 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/Package.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/Package.java	2016-09-24 15:19:13.308801664 +0100
 @@ -578,12 +578,23 @@
       * Returns the Manifest for the specified JAR file name.
       */
@@ -356,8 +356,8 @@
      }
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/nio/channels/SocketChannel.java openjdk-boot/jdk/src/share/classes/java/nio/channels/SocketChannel.java
---- openjdk-boot.orig/jdk/src/share/classes/java/nio/channels/SocketChannel.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/nio/channels/SocketChannel.java	2015-11-21 04:01:44.053911577 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/java/nio/channels/SocketChannel.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/nio/channels/SocketChannel.java	2016-09-24 15:19:13.308801664 +0100
 @@ -188,7 +188,7 @@
              } catch (Throwable suppressed) {
                  x.addSuppressed(suppressed);
@@ -368,8 +368,8 @@
          assert sc.isConnected();
          return sc;
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/nio/file/CopyMoveHelper.java openjdk-boot/jdk/src/share/classes/java/nio/file/CopyMoveHelper.java
---- openjdk-boot.orig/jdk/src/share/classes/java/nio/file/CopyMoveHelper.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/nio/file/CopyMoveHelper.java	2015-11-21 04:01:44.053911577 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/java/nio/file/CopyMoveHelper.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/nio/file/CopyMoveHelper.java	2016-09-24 15:19:13.308801664 +0100
 @@ -122,9 +122,15 @@
          if (attrs.isDirectory()) {
              Files.createDirectory(target);
@@ -397,8 +397,8 @@
          }
      }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/nio/file/Files.java openjdk-boot/jdk/src/share/classes/java/nio/file/Files.java
---- openjdk-boot.orig/jdk/src/share/classes/java/nio/file/Files.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/nio/file/Files.java	2015-11-21 04:01:44.053911577 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/java/nio/file/Files.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/nio/file/Files.java	2016-09-24 15:19:13.308801664 +0100
 @@ -2850,8 +2850,11 @@
          }
  
@@ -526,8 +526,8 @@
      }
  }
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/Currency.java openjdk-boot/jdk/src/share/classes/java/util/Currency.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/Currency.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/Currency.java	2015-11-21 04:02:23.585245874 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/Currency.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/Currency.java	2016-09-24 15:19:13.308801664 +0100
 @@ -237,9 +237,14 @@
                                               "currency.properties");
                      if (propFile.exists()) {
@@ -545,8 +545,8 @@
                          Pattern propertiesPattern =
                              Pattern.compile("([A-Z]{3})\\s*,\\s*(\\d{3})\\s*,\\s*(\\d+)");
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/jar/JarFile.java openjdk-boot/jdk/src/share/classes/java/util/jar/JarFile.java
---- openjdk-boot.orig/jdk/src/share/classes/java/util/jar/JarFile.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/java/util/jar/JarFile.java	2015-11-21 04:01:44.057911510 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/jar/JarFile.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/jar/JarFile.java	2016-09-24 15:19:13.308801664 +0100
 @@ -386,9 +386,14 @@
       * META-INF files.
       */
@@ -565,8 +565,8 @@
  
      /**
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/sql/rowset/serial/SerialClob.java openjdk-boot/jdk/src/share/classes/javax/sql/rowset/serial/SerialClob.java
---- openjdk-boot.orig/jdk/src/share/classes/javax/sql/rowset/serial/SerialClob.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/javax/sql/rowset/serial/SerialClob.java	2015-11-21 04:01:44.057911510 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/javax/sql/rowset/serial/SerialClob.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/javax/sql/rowset/serial/SerialClob.java	2016-09-24 15:19:13.308801664 +0100
 @@ -144,8 +144,9 @@
          buf = new char[(int)len];
          int read = 0;
@@ -626,8 +626,8 @@
      }
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/sql/rowset/spi/SyncFactory.java openjdk-boot/jdk/src/share/classes/javax/sql/rowset/spi/SyncFactory.java
---- openjdk-boot.orig/jdk/src/share/classes/javax/sql/rowset/spi/SyncFactory.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/javax/sql/rowset/spi/SyncFactory.java	2015-11-21 04:01:44.057911510 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/javax/sql/rowset/spi/SyncFactory.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/javax/sql/rowset/spi/SyncFactory.java	2016-09-24 15:19:13.308801664 +0100
 @@ -382,9 +382,15 @@
                      // Load user's implementation of SyncProvider
                      // here. -Drowset.properties=/abc/def/pqr.txt
@@ -678,8 +678,8 @@
                  } catch (PrivilegedActionException ex) {
                      Throwable e = ex.getException();
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/launcher/LauncherHelper.java openjdk-boot/jdk/src/share/classes/sun/launcher/LauncherHelper.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/launcher/LauncherHelper.java	2015-11-20 05:14:27.703509505 +0000
-+++ openjdk-boot/jdk/src/share/classes/sun/launcher/LauncherHelper.java	2015-11-21 04:01:44.057911510 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/sun/launcher/LauncherHelper.java	2016-09-24 15:17:56.922022903 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/launcher/LauncherHelper.java	2016-09-24 15:19:13.308801664 +0100
 @@ -555,8 +555,9 @@
                  if (parent == null) {
                      parent = new File(".");
@@ -703,8 +703,8 @@
              } else {
                  out.add(a.arg);
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/net/www/protocol/jar/URLJarFile.java openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/jar/URLJarFile.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/net/www/protocol/jar/URLJarFile.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/jar/URLJarFile.java	2015-11-21 04:01:44.057911510 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/sun/net/www/protocol/jar/URLJarFile.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/jar/URLJarFile.java	2016-09-24 15:19:13.308801664 +0100
 @@ -194,7 +194,8 @@
       * Given a URL, retrieves a JAR file, caches it to disk, and creates a
       * cached JAR file object.
@@ -738,8 +738,8 @@
                          }
                      });
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java openjdk-boot/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java	2015-11-21 04:01:44.057911510 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java	2016-09-24 15:19:13.308801664 +0100
 @@ -255,7 +255,9 @@
              this.entries = new HashMap<Path,CacheEntry>();
  
@@ -763,8 +763,8 @@
          }
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/print/PSPrinterJob.java openjdk-boot/jdk/src/share/classes/sun/print/PSPrinterJob.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/print/PSPrinterJob.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/print/PSPrinterJob.java	2015-11-21 04:01:44.057911510 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/sun/print/PSPrinterJob.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/print/PSPrinterJob.java	2016-09-24 15:19:13.312801601 +0100
 @@ -680,25 +680,38 @@
  
          private void handleProcessFailure(final Process failedProcess,
@@ -811,8 +811,8 @@
  
          public Object run() {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/log/ReliableLog.java openjdk-boot/jdk/src/share/classes/sun/rmi/log/ReliableLog.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/log/ReliableLog.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/rmi/log/ReliableLog.java	2015-11-21 04:01:44.057911510 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/log/ReliableLog.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/rmi/log/ReliableLog.java	2016-09-24 15:19:13.312801601 +0100
 @@ -594,10 +594,16 @@
          } else {
              name = versionFile;
@@ -851,8 +851,8 @@
  
      /**
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/Activation.java openjdk-boot/jdk/src/share/classes/sun/rmi/server/Activation.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/Activation.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/rmi/server/Activation.java	2015-11-21 04:01:44.057911510 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/Activation.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/rmi/server/Activation.java	2016-09-24 15:19:13.312801601 +0100
 @@ -1233,13 +1233,16 @@
                      PipeWriter.plugTogetherPair
                          (child.getInputStream(), System.out,
@@ -874,8 +874,8 @@
  
                  } catch (IOException e) {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java openjdk-boot/jdk/src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java	2015-11-20 05:14:27.959505128 +0000
-+++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java	2015-11-21 04:01:44.057911510 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java	2016-09-24 15:17:57.814008645 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java	2016-09-24 15:19:13.312801601 +0100
 @@ -233,13 +233,14 @@
                          proxyLog.log(Log.BRIEF,
                              "trying with factory: " + factory);
@@ -905,12 +905,12 @@
  
                      // factory succeeded, open new socket for caller's use
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java	2015-11-21 04:01:44.057911510 +0000
-@@ -159,18 +159,33 @@
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java	2016-09-24 15:19:13.312801601 +0100
+@@ -156,18 +156,33 @@
+     synchronized void init(PrincipalName principal, String name)
          throws IOException, KrbException {
          primaryPrincipal = principal;
-         primaryRealm = principal.getRealm();
 -        try (FileOutputStream fos = new FileOutputStream(name);
 -             CCacheOutputStream cos = new CCacheOutputStream(fos)) {
 +        FileOutputStream fos = null;
@@ -945,7 +945,7 @@
              version = cis.readVersion();
              if (version == KRB5_FCC_FVNO_4) {
                  tag = cis.readTag();
-@@ -196,6 +211,14 @@
+@@ -192,6 +207,14 @@
                      credentialsList.addElement(cred);
                  }
              }
@@ -960,7 +960,7 @@
          }
      }
  
-@@ -255,8 +278,11 @@
+@@ -251,8 +274,11 @@
       * Saves the credentials cache file to the disk.
       */
      public synchronized void save() throws IOException, Asn1Exception {
@@ -974,7 +974,7 @@
              cos.writeHeader(primaryPrincipal, version);
              Credentials[] tmp = null;
              if ((tmp = getCredsList()) != null) {
-@@ -264,6 +290,14 @@
+@@ -260,6 +286,14 @@
                      cos.addCreds(tmp[i]);
                  }
              }
@@ -990,8 +990,8 @@
      }
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java	2015-11-21 04:01:44.057911510 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java	2016-09-24 15:19:13.312801601 +0100
 @@ -92,9 +92,13 @@
          tabName = filename;
          try {
@@ -1059,9 +1059,52 @@
          }
      }
  }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/certpath/URICertStore.java openjdk-boot/jdk/src/share/classes/sun/security/provider/certpath/URICertStore.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/certpath/URICertStore.java	2016-09-24 15:17:57.818008581 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/provider/certpath/URICertStore.java	2016-09-24 16:37:32.492712711 +0100
+@@ -279,7 +279,9 @@
+                 connection.setIfModifiedSince(lastModified);
+             }
+             long oldLastModified = lastModified;
+-            try (InputStream in = connection.getInputStream()) {
++            InputStream in = null;
++            try {
++                in = connection.getInputStream();
+                 lastModified = connection.getLastModified();
+                 if (oldLastModified != 0) {
+                     if (oldLastModified == lastModified) {
+@@ -305,6 +307,8 @@
+                 // Safe cast since factory is an X.509 certificate factory
+                 certs = (Collection<X509Certificate>)
+                     factory.generateCertificates(in);
++            } finally {
++                if (in != null) { in.close(); }
+             }
+             return getMatchingCerts(certs, selector);
+         } catch (IOException e) {
+@@ -393,7 +397,9 @@
+             }
+             long oldLastModified = lastModified;
+             connection.setConnectTimeout(CRL_CONNECT_TIMEOUT);
+-            try (InputStream in = connection.getInputStream()) {
++            InputStream in = null;
++            try {
++                in = connection.getInputStream();
+                 lastModified = connection.getLastModified();
+                 if (oldLastModified != 0) {
+                     if (oldLastModified == lastModified) {
+@@ -417,6 +423,8 @@
+                     debug.println("Downloading new CRL...");
+                 }
+                 crl = (X509CRL) factory.generateCRL(in);
++            } finally {
++                if (in != null) { in.close(); }
+             }
+             return getMatchingCRLs(crl, selector);
+         } catch (IOException e) {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/SeedGenerator.java openjdk-boot/jdk/src/share/classes/sun/security/provider/SeedGenerator.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/SeedGenerator.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/provider/SeedGenerator.java	2015-11-21 04:01:44.061911442 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/SeedGenerator.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/provider/SeedGenerator.java	2016-09-24 15:19:13.312801601 +0100
 @@ -179,7 +179,9 @@
                          // The temporary dir
                          File f = new File(p.getProperty("java.io.tmpdir"));
@@ -1084,29 +1127,171 @@
                          }
                      } catch (Exception ex) {
                          md.update((byte)ex.hashCode());
-diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/KeyTool.java openjdk-boot/jdk/src/share/classes/sun/security/tools/KeyTool.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/KeyTool.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/security/tools/KeyTool.java	2015-11-21 04:01:44.061911442 +0000
-@@ -1149,9 +1149,14 @@
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/KeyStoreUtil.java openjdk-boot/jdk/src/share/classes/sun/security/tools/KeyStoreUtil.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/KeyStoreUtil.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/tools/KeyStoreUtil.java	2016-09-24 15:19:13.312801601 +0100
+@@ -94,9 +94,13 @@
+             return null;
+         }
+         KeyStore caks = null;
+-        try (FileInputStream fis = new FileInputStream(file)) {
++        FileInputStream fis = null;
++        try {
++            fis = new FileInputStream(file);
+             caks = KeyStore.getInstance(JKS);
+             caks.load(fis, null);
++        } finally {
++            if (fis != null) { fis.close(); }
+         }
+         return caks;
+     }
+@@ -130,9 +134,9 @@
+                     }
+                 }
+ 
+-                try (BufferedReader br =
+-                     new BufferedReader(new InputStreamReader(
+-                         url.openStream()))) {
++                BufferedReader br = null;
++                try {
++                    br = new BufferedReader(new InputStreamReader(url.openStream()));
+                     String value = br.readLine();
+ 
+                     if (value == null) {
+@@ -140,6 +144,8 @@
+                     }
+ 
+                     return value.toCharArray();
++                } finally {
++                    if (br != null) { br.close(); }
+                 }
+             } catch (IOException ioe) {
+                 System.err.println(ioe);
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/keytool/Main.java openjdk-boot/jdk/src/share/classes/sun/security/tools/keytool/Main.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/keytool/Main.java	2016-09-24 15:17:57.818008581 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/tools/keytool/Main.java	2016-09-24 15:19:13.316801537 +0100
+@@ -917,9 +917,12 @@
+         // Perform the specified command
+         if (command == CERTREQ) {
+             if (filename != null) {
+-                try (PrintStream ps = new PrintStream(new FileOutputStream
+-                                                      (filename))) {
++                PrintStream ps = null;
++                try {
++                    ps = new PrintStream(new FileOutputStream(filename));
+                     doCertReq(alias, sigAlgName, ps);
++                } finally {
++                    if (ps != null) { ps.close(); }
+                 }
+             } else {
+                 doCertReq(alias, sigAlgName, out);
+@@ -936,9 +939,12 @@
+             kssave = true;
+         } else if (command == EXPORTCERT) {
+             if (filename != null) {
+-                try (PrintStream ps = new PrintStream(new FileOutputStream
+-                                                   (filename))) {
++                PrintStream ps = null;
++                try {
++                    ps = new PrintStream(new FileOutputStream(filename));
+                     doExportCert(alias, ps);
++                } finally {
++                    if (ps != null) { ps.close(); }
+                 }
+             } else {
+                 doExportCert(alias, out);
+@@ -963,8 +969,12 @@
+             kssave = true;
+         } else if (command == IDENTITYDB) {
+             if (filename != null) {
+-                try (InputStream inStream = new FileInputStream(filename)) {
++                InputStream inStream = null;
++                try {
++                    inStream = new FileInputStream(filename);
+                     doImportIdentityDatabase(inStream);
++                } finally {
++                    if (inStream != null) { inStream.close(); }
+                 }
+             } else {
+                 doImportIdentityDatabase(System.in);
+@@ -1087,17 +1097,24 @@
+                 alias = keyAlias;
+             }
+             if (filename != null) {
+-                try (PrintStream ps =
+-                         new PrintStream(new FileOutputStream(filename))) {
++                PrintStream ps = null;
++                try {
++                    ps = new PrintStream(new FileOutputStream(filename));
+                     doGenCRL(ps);
++                } finally {
++                    if (ps != null) { ps.close(); }
+                 }
+             } else {
+                 doGenCRL(out);
+             }
+         } else if (command == PRINTCERTREQ) {
+             if (filename != null) {
+-                try (InputStream inStream = new FileInputStream(filename)) {
++                InputStream inStream = null;
++                try {
++                    inStream = new FileInputStream(filename);
+                     doPrintCertReq(inStream, out);
++                } finally {
++                    if (inStream != null) { inStream.close(); }
+                 }
+             } else {
+                 doPrintCertReq(System.in, out);
+@@ -1124,8 +1141,13 @@
                  } else {
                      ByteArrayOutputStream bout = new ByteArrayOutputStream();
                      keyStore.store(bout, pass);
 -                    try (FileOutputStream fout = new FileOutputStream(ksfname)) {
-+		    FileOutputStream fout = null;
++                    FileOutputStream fout = null;
 +                    try {
-+			fout = new FileOutputStream(ksfname);
++                        fout = new FileOutputStream(ksfname);
                          fout.write(bout.toByteArray());
--                    }
-+		    } finally {
-+			if (fout != null)
-+			    fout.close();
-+		    }
++                    } finally {
++                        if (fout != null)
++                            fout.close();
+                     }
                  }
              }
-         }
+@@ -2241,12 +2263,16 @@
+             int pos = 0;
+             while (entries.hasMoreElements()) {
+                 JarEntry je = entries.nextElement();
+-                try (InputStream is = jf.getInputStream(je)) {
++                InputStream is = null;
++                try {
++                    is = jf.getInputStream(je);
+                     while (is.read(buffer) != -1) {
+                         // we just read. this will throw a SecurityException
+                         // if a signature/digest check fails. This also
+                         // populate the signers
+                     }
++                } finally {
++                    if (is != null) { is.close(); }
+                 }
+                 CodeSigner[] signers = je.getCodeSigners();
+                 if (signers != null) {
+@@ -2333,8 +2359,12 @@
+             }
+         } else {
+             if (filename != null) {
+-                try (FileInputStream inStream = new FileInputStream(filename)) {
++                FileInputStream inStream = null;
++                try {
++                    inStream = new FileInputStream(filename);
+                     printCertFromStream(inStream, out);
++                } finally {
++                    if (inStream != null) { inStream.close(); }
+                 }
+             } else {
+                 printCertFromStream(System.in, out);
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java openjdk-boot/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java	2015-11-20 05:14:27.963505061 +0000
-+++ openjdk-boot/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java	2015-11-21 04:01:44.061911442 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java	2016-09-24 15:17:57.814008645 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java	2016-09-24 15:19:13.312801601 +0100
 @@ -56,8 +56,9 @@
  
      private static void add(String alias, String pemCert) {
@@ -1138,8 +1323,8 @@
      }
  
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/tools/jcmd/Arguments.java openjdk-boot/jdk/src/share/classes/sun/tools/jcmd/Arguments.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/tools/jcmd/Arguments.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/tools/jcmd/Arguments.java	2015-11-21 04:01:44.061911442 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/sun/tools/jcmd/Arguments.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/tools/jcmd/Arguments.java	2016-09-24 15:19:13.312801601 +0100
 @@ -99,14 +99,19 @@
      }
  
@@ -1169,8 +1354,8 @@
  
      public static void usage() {
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/tools/jcmd/JCmd.java openjdk-boot/jdk/src/share/classes/sun/tools/jcmd/JCmd.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/tools/jcmd/JCmd.java	2015-11-20 05:14:27.963505061 +0000
-+++ openjdk-boot/jdk/src/share/classes/sun/tools/jcmd/JCmd.java	2015-11-21 04:01:44.061911442 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/sun/tools/jcmd/JCmd.java	2016-09-24 15:17:57.814008645 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/tools/jcmd/JCmd.java	2016-09-24 15:19:13.312801601 +0100
 @@ -158,7 +158,9 @@
              if (line.trim().equals("stop")) {
                  break;
@@ -1193,8 +1378,8 @@
          }
          vm.detach();
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/util/calendar/LocalGregorianCalendar.java openjdk-boot/jdk/src/share/classes/sun/util/calendar/LocalGregorianCalendar.java
---- openjdk-boot.orig/jdk/src/share/classes/sun/util/calendar/LocalGregorianCalendar.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/share/classes/sun/util/calendar/LocalGregorianCalendar.java	2015-11-21 04:01:44.061911442 +0000
+--- openjdk-boot.orig/jdk/src/share/classes/sun/util/calendar/LocalGregorianCalendar.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/util/calendar/LocalGregorianCalendar.java	2016-09-24 15:19:13.312801601 +0100
 @@ -127,9 +127,15 @@
              calendarProps = (Properties) AccessController.doPrivileged(new PrivilegedExceptionAction() {
                  public Object run() throws IOException {
@@ -1213,8 +1398,8 @@
                  }
              });
 diff -Nru openjdk-boot.orig/jdk/src/share/demo/jfc/Font2DTest/RangeMenu.java openjdk-boot/jdk/src/share/demo/jfc/Font2DTest/RangeMenu.java
---- openjdk-boot.orig/jdk/src/share/demo/jfc/Font2DTest/RangeMenu.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/share/demo/jfc/Font2DTest/RangeMenu.java	2015-11-21 04:01:44.061911442 +0000
+--- openjdk-boot.orig/jdk/src/share/demo/jfc/Font2DTest/RangeMenu.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/share/demo/jfc/Font2DTest/RangeMenu.java	2016-09-24 15:19:13.312801601 +0100
 @@ -200,7 +200,7 @@
      }
  
@@ -1225,8 +1410,8 @@
          Character.UnicodeBlock currentBlock = Character.UnicodeBlock.of(0);
          for (int cp = 0x000001; cp < 0x110000; cp++ ) {
 diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java openjdk-boot/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java
---- openjdk-boot.orig/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java	2015-11-21 04:01:44.061911442 +0000
+--- openjdk-boot.orig/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java	2016-09-24 15:19:13.312801601 +0100
 @@ -569,11 +569,11 @@
                  public Void run() throws BackingStoreException {
                      Map<String, String> m = new TreeMap<>();
@@ -1290,8 +1475,8 @@
                  }
              });
 diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java
---- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java	2015-11-21 04:01:44.061911442 +0000
+--- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java	2016-09-24 15:19:13.312801601 +0100
 @@ -255,9 +255,16 @@
          String fstypes = System.getProperty("java.home") + "/lib/fstypes.properties";
          Path file = Paths.get(fstypes);
@@ -1311,8 +1496,8 @@
          }
          return result;
 diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/print/UnixPrintJob.java openjdk-boot/jdk/src/solaris/classes/sun/print/UnixPrintJob.java
---- openjdk-boot.orig/jdk/src/solaris/classes/sun/print/UnixPrintJob.java	2015-07-23 09:51:31.000000000 +0100
-+++ openjdk-boot/jdk/src/solaris/classes/sun/print/UnixPrintJob.java	2015-11-21 04:01:44.061911442 +0000
+--- openjdk-boot.orig/jdk/src/solaris/classes/sun/print/UnixPrintJob.java	2016-09-20 03:39:19.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/classes/sun/print/UnixPrintJob.java	2016-09-24 15:19:13.312801601 +0100
 @@ -960,25 +960,38 @@
  
          private void handleProcessFailure(final Process failedProcess,