8186466: Fix accessibility and other minor issues in java.base
Reviewed-by: mchung, naoto, martin
--- a/jdk/src/java.base/share/classes/java/lang/String.java Wed Aug 23 12:24:55 2017 -0400
+++ b/jdk/src/java.base/share/classes/java/lang/String.java Wed Aug 23 10:58:11 2017 -0700
@@ -2488,12 +2488,8 @@
* <tr>
* <td>(all)</td>
* <th scope="row" style="font-weight:normal; text-align:left">
- * <img src="doc-files/capiota.gif" alt="capiota"><img src="doc-files/capchi.gif" alt="capchi">
- * <img src="doc-files/captheta.gif" alt="captheta"><img src="doc-files/capupsil.gif" alt="capupsil">
- * <img src="doc-files/capsigma.gif" alt="capsigma"></th>
- * <td><img src="doc-files/iota.gif" alt="iota"><img src="doc-files/chi.gif" alt="chi">
- * <img src="doc-files/theta.gif" alt="theta"><img src="doc-files/upsilon.gif" alt="upsilon">
- * <img src="doc-files/sigma1.gif" alt="sigma"></td>
+ * ΙΧΘΥΣ</th>
+ * <td>ιχθυσ</td>
* <td>lowercased all chars in String</td>
* </tr>
* </tbody>
--- a/jdk/src/java.base/share/classes/java/lang/doc-files/ValueBased.html Wed Aug 23 12:24:55 2017 -0400
+++ b/jdk/src/java.base/share/classes/java/lang/doc-files/ValueBased.html Wed Aug 23 10:58:11 2017 -0700
@@ -1,4 +1,4 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!doctype html>
<html lang="en">
<head>
<title>Value-based Classes</title>
Binary file jdk/src/java.base/share/classes/java/lang/doc-files/capchi.gif has changed
Binary file jdk/src/java.base/share/classes/java/lang/doc-files/capiota.gif has changed
Binary file jdk/src/java.base/share/classes/java/lang/doc-files/capsigma.gif has changed
Binary file jdk/src/java.base/share/classes/java/lang/doc-files/captheta.gif has changed
Binary file jdk/src/java.base/share/classes/java/lang/doc-files/capupsil.gif has changed
Binary file jdk/src/java.base/share/classes/java/lang/doc-files/chi.gif has changed
Binary file jdk/src/java.base/share/classes/java/lang/doc-files/iota.gif has changed
Binary file jdk/src/java.base/share/classes/java/lang/doc-files/javalang.doc.anc21.gif has changed
Binary file jdk/src/java.base/share/classes/java/lang/doc-files/javalang.doc.anc38.gif has changed
Binary file jdk/src/java.base/share/classes/java/lang/doc-files/javalang.doc.anc40.gif has changed
Binary file jdk/src/java.base/share/classes/java/lang/doc-files/javalang.doc.anc41.gif has changed
Binary file jdk/src/java.base/share/classes/java/lang/doc-files/sigma1.gif has changed
Binary file jdk/src/java.base/share/classes/java/lang/doc-files/theta.gif has changed
--- a/jdk/src/java.base/share/classes/java/lang/doc-files/threadPrimitiveDeprecation.html Wed Aug 23 12:24:55 2017 -0400
+++ b/jdk/src/java.base/share/classes/java/lang/doc-files/threadPrimitiveDeprecation.html Wed Aug 23 10:58:11 2017 -0700
@@ -1,3 +1,4 @@
+<!doctype html>
<!--
Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -22,7 +23,6 @@
or visit www.oracle.com if you need additional information or have any
questions.
-->
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<title>Java Thread Primitive Deprecation</title>
@@ -30,7 +30,7 @@
</head>
<body>
<h2>Java Thread Primitive Deprecation</h2>
-<hr size="3" noshade="noshade" />
+<hr>
<h3>Why is <code>Thread.stop</code> deprecated?</h3>
<p>Because it is inherently unsafe. Stopping a thread causes it to
unlock all the monitors that it has locked. (The monitors are
@@ -45,7 +45,7 @@
no warning that his program may be corrupted. The corruption can
manifest itself at any time after the actual damage occurs, even
hours or days in the future.</p>
-<hr />
+<hr>
<h3>Couldn't I just catch the <code>ThreadDeath</code> exception
and fix the damaged object?</h3>
<p>In theory, perhaps, but it would <em>vastly</em> complicate the
@@ -61,7 +61,7 @@
it succeeded. The code to ensure this would be quite complex.</li>
</ol>
In sum, it just isn't practical.
-<hr />
+<hr>
<h3>What about <code>Thread.stop(Throwable)</code>?</h3>
<p>In addition to all of the problems noted above, this method may
be used to generate exceptions that its target thread is unprepared
@@ -76,7 +76,7 @@
Thread.currentThread().stop(t);
}
</pre>
-<hr />
+<hr>
<h3>What should I use instead of <code>Thread.stop</code>?</h3>
<p>Most uses of <code>stop</code> should be replaced by code that
simply modifies some variable to indicate that the target thread
@@ -84,7 +84,7 @@
regularly, and return from its run method in an orderly fashion if
the variable indicates that it is to stop running. To ensure prompt
communication of the stop-request, the variable must be
-<tt>volatile</tt> (or access to the variable must be
+<code>volatile</code> (or access to the variable must be
synchronized).</p>
<p>For example, suppose your applet contains the following
<code>start</code>, <code>stop</code> and <code>run</code>
@@ -131,7 +131,7 @@
}
}
</pre>
-<hr />
+<hr>
<h3>How do I stop a thread that waits for long periods (e.g., for
input)?</h3>
<p>That's what the <code>Thread.interrupt</code> method is for. The
@@ -159,7 +159,7 @@
</pre>
This ensures that the Thread will reraise the
<code>InterruptedException</code> as soon as it is able.
-<hr />
+<hr>
<h3>What if a thread doesn't respond to
<code>Thread.interrupt</code>?</h3>
<p>In some cases, you can use application specific tricks. For
@@ -172,7 +172,7 @@
cases include deliberate denial-of-service attacks, and I/O
operations for which thread.stop and thread.interrupt do not work
properly.</p>
-<hr />
+<hr>
<h3>Why are <code>Thread.suspend</code> and
<code>Thread.resume</code> deprecated?</h3>
<p><code>Thread.suspend</code> is inherently deadlock-prone. If the
@@ -182,7 +182,7 @@
would resume the target thread attempts to lock this monitor prior
to calling <code>resume</code>, deadlock results. Such deadlocks
typically manifest themselves as "frozen" processes.</p>
-<hr />
+<hr>
<h3>What should I use instead of <code>Thread.suspend</code> and
<code>Thread.resume</code>?</h3>
<p>As with <code>Thread.stop</code>, the prudent approach is to
@@ -274,7 +274,7 @@
}
</pre>
<p>In the absence of explicit synchronization,
-<tt>threadSuspended</tt> must be made <tt>volatile</tt> to ensure
+<code>threadSuspended</code> must be made <code>volatile</code> to ensure
prompt communication of the suspend-request.</p>
The resulting <code>run</code> method is:
<pre>
@@ -302,17 +302,17 @@
be safely "stopped" or "suspended"?</h3>
Yes, it's reasonably straightforward. The one subtlety is that the
target thread may already be suspended at the time that another
-thread tries to stop it. If the <tt>stop</tt> method merely sets
-the state variable (<tt>blinker</tt>) to null, the target thread
+thread tries to stop it. If the <code>stop</code> method merely sets
+the state variable (<code>blinker</code>) to null, the target thread
will remain suspended (waiting on the monitor), rather than exiting
gracefully as it should. If the applet is restarted, multiple
threads could end up waiting on the monitor at the same time,
resulting in erratic behavior.
-<p>To rectify this situation, the <tt>stop</tt> method must ensure
+<p>To rectify this situation, the <code>stop</code> method must ensure
that the target thread resumes immediately if it is suspended. Once
the target thread resumes, it must recognize immediately that it
has been stopped, and exit gracefully. Here's how the resulting
-<tt>run</tt> and <tt>stop</tt> methods look:</p>
+<code>run</code> and <code>stop</code> methods look:</p>
<pre>
public void run() {
Thread thisThread = Thread.currentThread();
@@ -335,18 +335,18 @@
notify();
}
</pre>
-If the <tt>stop</tt> method calls <tt>Thread.interrupt</tt>, as
-described above, it needn't call <tt>notify</tt> as well, but it
+If the <code>stop</code> method calls <code>Thread.interrupt</code>, as
+described above, it needn't call <code>notify</code> as well, but it
still must be synchronized. This ensures that the target thread
won't miss an interrupt due to a race condition.
-<hr />
+<hr>
<h3>What about <code>Thread.destroy</code>?</h3>
<code>Thread.destroy</code> was never implemented and has been
deprecated. If it were implemented, it would be deadlock-prone in
the manner of <code>Thread.suspend</code>. (In fact, it is roughly
equivalent to <code>Thread.suspend</code> without the possibility
of a subsequent <code>Thread.resume</code>.)
-<hr />
+<hr>
<h3>Why is <code>Runtime.runFinalizersOnExit</code>
deprecated?</h3>
Because it is inherently unsafe. It may result in finalizers being
Binary file jdk/src/java.base/share/classes/java/lang/doc-files/upsilon.gif has changed
--- a/jdk/src/java.base/share/classes/java/time/format/DateTimeFormatter.java Wed Aug 23 12:24:55 2017 -0400
+++ b/jdk/src/java.base/share/classes/java/time/format/DateTimeFormatter.java Wed Aug 23 10:58:11 2017 -0700
@@ -223,7 +223,7 @@
* <tr>
* <th scope="row"> {@link #ISO_OFFSET_DATE_TIME}</th>
* <td> Date Time with Offset
- * </td><td>2011-12-03T10:15:30+01:00'</td>
+ * </td><td>'2011-12-03T10:15:30+01:00'</td>
* </tr>
* <tr>
* <th scope="row"> {@link #ISO_ZONED_DATE_TIME}</th>
@@ -243,7 +243,7 @@
* <tr>
* <th scope="row"> {@link #ISO_WEEK_DATE}</th>
* <td> Year and Week </td>
- * <td>2012-W48-6'</td></tr>
+ * <td>'2012-W48-6'</td></tr>
* <tr>
* <th scope="row"> {@link #ISO_INSTANT}</th>
* <td> Date and Time of an Instant </td>
--- a/jdk/src/java.base/share/classes/java/util/Deque.java Wed Aug 23 12:24:55 2017 -0400
+++ b/jdk/src/java.base/share/classes/java/util/Deque.java Wed Aug 23 10:58:11 2017 -0700
@@ -56,41 +56,44 @@
* <p>The twelve methods described above are summarized in the
* following table:
*
- * <table class="plain">
+ * <table class="striped">
* <caption>Summary of Deque methods</caption>
+ * <thead>
* <tr>
- * <td></td>
- * <td style="text-align:center" COLSPAN = 2> <b>First Element (Head)</b></td>
- * <td style="text-align:center" COLSPAN = 2> <b>Last Element (Tail)</b></td>
+ * <td rowspan="2"></td>
+ * <th scope="col" colspan="2"> First Element (Head)</th>
+ * <th scope="col" colspan="2"> Last Element (Tail)</th>
* </tr>
* <tr>
- * <td></td>
- * <td style="text-align:center"><em>Throws exception</em></td>
- * <td style="text-align:center"><em>Special value</em></td>
- * <td style="text-align:center"><em>Throws exception</em></td>
- * <td style="text-align:center"><em>Special value</em></td>
+ * <th scope="col" style="font-weight:normal; font-style:italic">Throws exception</th>
+ * <th scope="col" style="font-weight:normal; font-style:italic">Special value</th>
+ * <th scope="col" style="font-weight:normal; font-style:italic">Throws exception</th>
+ * <th scope="col" style="font-weight:normal; font-style:italic">Special value</th>
* </tr>
+ * </thead>
+ * <tbody>
* <tr>
- * <td><b>Insert</b></td>
+ * <th scope="row">Insert</th>
* <td>{@link #addFirst(Object) addFirst(e)}</td>
* <td>{@link #offerFirst(Object) offerFirst(e)}</td>
* <td>{@link #addLast(Object) addLast(e)}</td>
* <td>{@link #offerLast(Object) offerLast(e)}</td>
* </tr>
* <tr>
- * <td><b>Remove</b></td>
+ * <th scope="row">Remove</th>
* <td>{@link #removeFirst() removeFirst()}</td>
* <td>{@link #pollFirst() pollFirst()}</td>
* <td>{@link #removeLast() removeLast()}</td>
* <td>{@link #pollLast() pollLast()}</td>
* </tr>
* <tr>
- * <td><b>Examine</b></td>
+ * <th scope="row">Examine</th>
* <td>{@link #getFirst() getFirst()}</td>
* <td>{@link #peekFirst() peekFirst()}</td>
* <td>{@link #getLast() getLast()}</td>
* <td>{@link #peekLast() peekLast()}</td>
* </tr>
+ * </tbody>
* </table>
*
* <p>This interface extends the {@link Queue} interface. When a deque is
@@ -99,36 +102,40 @@
* inherited from the {@code Queue} interface are precisely equivalent to
* {@code Deque} methods as indicated in the following table:
*
- * <table class="plain">
+ * <table class="striped">
* <caption>Comparison of Queue and Deque methods</caption>
+ * <thead>
* <tr>
- * <td style="text-align:center"> <b>{@code Queue} Method</b></td>
- * <td style="text-align:center"> <b>Equivalent {@code Deque} Method</b></td>
+ * <th scope="col"> {@code Queue} Method</th>
+ * <th scope="col"> Equivalent {@code Deque} Method</th>
* </tr>
+ * </thead>
+ * <tbody>
* <tr>
- * <td>{@link #add(Object) add(e)}</td>
+ * <th scope="row">{@link #add(Object) add(e)}</th>
* <td>{@link #addLast(Object) addLast(e)}</td>
* </tr>
* <tr>
- * <td>{@link #offer(Object) offer(e)}</td>
+ * <th scope="row">{@link #offer(Object) offer(e)}</th>
* <td>{@link #offerLast(Object) offerLast(e)}</td>
* </tr>
* <tr>
- * <td>{@link #remove() remove()}</td>
+ * <th scope="row">{@link #remove() remove()}</th>
* <td>{@link #removeFirst() removeFirst()}</td>
* </tr>
* <tr>
- * <td>{@link #poll() poll()}</td>
+ * <th scope="row">{@link #poll() poll()}</th>
* <td>{@link #pollFirst() pollFirst()}</td>
* </tr>
* <tr>
- * <td>{@link #element() element()}</td>
+ * <th scope="row">{@link #element() element()}</th>
* <td>{@link #getFirst() getFirst()}</td>
* </tr>
* <tr>
- * <td>{@link #peek() peek()}</td>
+ * <th scope="row">{@link #peek() peek()}</th>
* <td>{@link #peekFirst() peekFirst()}</td>
* </tr>
+ * </tbody>
* </table>
*
* <p>Deques can also be used as LIFO (Last-In-First-Out) stacks. This
@@ -137,24 +144,28 @@
* beginning of the deque. Stack methods are precisely equivalent to
* {@code Deque} methods as indicated in the table below:
*
- * <table class="plain">
+ * <table class="striped">
* <caption>Comparison of Stack and Deque methods</caption>
+ * <thead>
* <tr>
- * <td style="text-align:center"> <b>Stack Method</b></td>
- * <td style="text-align:center"> <b>Equivalent {@code Deque} Method</b></td>
+ * <th scope="col"> Stack Method</th>
+ * <th scope="col"> Equivalent {@code Deque} Method</th>
* </tr>
+ * </thead>
+ * <tbody>
* <tr>
- * <td>{@link #push(Object) push(e)}</td>
+ * <th scope="row">{@link #push(Object) push(e)}</th>
* <td>{@link #addFirst(Object) addFirst(e)}</td>
* </tr>
* <tr>
- * <td>{@link #pop() pop()}</td>
+ * <th scope="row">{@link #pop() pop()}</th>
* <td>{@link #removeFirst() removeFirst()}</td>
* </tr>
* <tr>
- * <td>{@link #peek() peek()}</td>
+ * <th scope="row">{@link #peek() peek()}</th>
* <td>{@link #peekFirst() peekFirst()}</td>
* </tr>
+ * </tbody>
* </table>
*
* <p>Note that the {@link #peek peek} method works equally well when
--- a/jdk/src/java.base/share/classes/java/util/Queue.java Wed Aug 23 12:24:55 2017 -0400
+++ b/jdk/src/java.base/share/classes/java/util/Queue.java Wed Aug 23 10:58:11 2017 -0700
@@ -46,28 +46,32 @@
* use with capacity-restricted {@code Queue} implementations; in most
* implementations, insert operations cannot fail.
*
- * <table class="plain">
+ * <table class="striped">
* <caption>Summary of Queue methods</caption>
+ * <thead>
* <tr>
* <td></td>
- * <td style="text-align:center"><em>Throws exception</em></td>
- * <td style="text-align:center"><em>Returns special value</em></td>
+ * <th scope="col" style="font-weight:normal; font-style:italic">Throws exception</th>
+ * <th scope="col" style="font-weight:normal; font-style:italic">Returns special value</th>
* </tr>
+ * </thead>
+ * <tbody>
* <tr>
- * <td><b>Insert</b></td>
+ * <th scope="row">Insert</th>
* <td>{@link #add(Object) add(e)}</td>
* <td>{@link #offer(Object) offer(e)}</td>
* </tr>
* <tr>
- * <td><b>Remove</b></td>
+ * <th scope="row">Remove</th>
* <td>{@link #remove() remove()}</td>
* <td>{@link #poll() poll()}</td>
* </tr>
* <tr>
- * <td><b>Examine</b></td>
+ * <th scope="row">Examine</th>
* <td>{@link #element() element()}</td>
* <td>{@link #peek() peek()}</td>
* </tr>
+ * </tbody>
* </table>
*
* <p>Queues typically, but do not necessarily, order elements in a
--- a/jdk/src/java.base/share/classes/java/util/ResourceBundle.java Wed Aug 23 12:24:55 2017 -0400
+++ b/jdk/src/java.base/share/classes/java/util/ResourceBundle.java Wed Aug 23 10:58:11 2017 -0700
@@ -1210,15 +1210,15 @@
* <strong>Example:</strong></a>
* <p>
* The following class and property files are provided:
- * <pre>
- * MyResources.class
- * MyResources.properties
- * MyResources_fr.properties
- * MyResources_fr_CH.class
- * MyResources_fr_CH.properties
- * MyResources_en.properties
- * MyResources_es_ES.class
- * </pre>
+ * <ul>
+ * <li>MyResources.class
+ * <li>MyResources.properties
+ * <li>MyResources_fr.properties
+ * <li>MyResources_fr_CH.class
+ * <li>MyResources_fr_CH.properties
+ * <li>MyResources_en.properties
+ * <li>MyResources_es_ES.class
+ * </ul>
*
* The contents of all files are valid (that is, public non-abstract
* subclasses of <code>ResourceBundle</code> for the ".class" files,
@@ -1228,14 +1228,17 @@
* <p>Calling <code>getBundle</code> with the locale arguments below will
* instantiate resource bundles as follows:
*
- * <table class="borderless">
+ * <table class="striped">
* <caption style="display:none">getBundle() locale to resource bundle mapping</caption>
+ * <thead>
+ * <tr><th scope="col">Locale</th><th scope="col">Resource bundle</th></tr>
+ * </thead>
* <tbody>
- * <tr><td>Locale("fr", "CH")</td><td>MyResources_fr_CH.class, parent MyResources_fr.properties, parent MyResources.class</td></tr>
- * <tr><td>Locale("fr", "FR")</td><td>MyResources_fr.properties, parent MyResources.class</td></tr>
- * <tr><td>Locale("de", "DE")</td><td>MyResources_en.properties, parent MyResources.class</td></tr>
- * <tr><td>Locale("en", "US")</td><td>MyResources_en.properties, parent MyResources.class</td></tr>
- * <tr><td>Locale("es", "ES")</td><td>MyResources_es_ES.class, parent MyResources.class</td></tr>
+ * <tr><th scope="row">Locale("fr", "CH")</th><td>MyResources_fr_CH.class, parent MyResources_fr.properties, parent MyResources.class</td></tr>
+ * <tr><th scope="row">Locale("fr", "FR")</th><td>MyResources_fr.properties, parent MyResources.class</td></tr>
+ * <tr><th scope="row">Locale("de", "DE")</th><td>MyResources_en.properties, parent MyResources.class</td></tr>
+ * <tr><th scope="row">Locale("en", "US")</th><td>MyResources_en.properties, parent MyResources.class</td></tr>
+ * <tr><th scope="row">Locale("es", "ES")</th><td>MyResources_es_ES.class, parent MyResources.class</td></tr>
* </tbody>
* </table>
*
@@ -1324,42 +1327,41 @@
* <caption style="display:none">locale-format combinations for newBundle</caption>
* <thead>
* <tr>
- * <td
- * style="vertical-align: top; text-align: left; font-weight: bold; width: 50%;"><code>Locale</code><br>
- * </td>
- * <td
- * style="vertical-align: top; text-align: left; font-weight: bold; width: 50%;"><code>format</code><br>
- * </td>
+ * <th scope="col">Index</th>
+ * <th scope="col"><code>Locale</code></th>
+ * <th scope="col"><code>format</code></th>
* </tr>
* </thead>
* <tbody>
* <tr>
- * <td style="vertical-align: top; width: 50%;"><code>Locale("de", "DE")</code><br>
- * </td>
- * <td style="vertical-align: top; width: 50%;"><code>java.class</code><br>
- * </td>
+ * <th scope="row">1</th>
+ * <td><code>Locale("de", "DE")</code></td>
+ * <td><code>java.class</code></td>
* </tr>
* <tr>
- * <td style="vertical-align: top; width: 50%;"><code>Locale("de", "DE")</code></td>
- * <td style="vertical-align: top; width: 50%;"><code>java.properties</code><br>
- * </td>
+ * <th scope="row">2</th>
+ * <td><code>Locale("de", "DE")</code></td>
+ * <td><code>java.properties</code></td>
* </tr>
* <tr>
- * <td style="vertical-align: top; width: 50%;"><code>Locale("de")</code></td>
- * <td style="vertical-align: top; width: 50%;"><code>java.class</code></td>
- * </tr>
- * <tr>
- * <td style="vertical-align: top; width: 50%;"><code>Locale("de")</code></td>
- * <td style="vertical-align: top; width: 50%;"><code>java.properties</code></td>
+ * <th scope="row">3</th>
+ * <td><code>Locale("de")</code></td>
+ * <td><code>java.class</code></td>
* </tr>
* <tr>
- * <td style="vertical-align: top; width: 50%;"><code>Locale("")</code><br>
- * </td>
- * <td style="vertical-align: top; width: 50%;"><code>java.class</code></td>
+ * <th scope="row">4</th>
+ * <td><code>Locale("de")</code></td>
+ * <td><code>java.properties</code></td>
* </tr>
* <tr>
- * <td style="vertical-align: top; width: 50%;"><code>Locale("")</code></td>
- * <td style="vertical-align: top; width: 50%;"><code>java.properties</code></td>
+ * <th scope="row">5</th>
+ * <td><code>Locale("")</code></td>
+ * <td><code>java.class</code></td>
+ * </tr>
+ * <tr>
+ * <th scope="row">6</th>
+ * <td><code>Locale("")</code></td>
+ * <td><code>java.properties</code></td>
* </tr>
* </tbody>
* </table>
@@ -3453,15 +3455,15 @@
}
/**
- * Converts the given <code>bundleName</code> to the form required
+ * Converts the given {@code bundleName} to the form required
* by the {@link ClassLoader#getResource ClassLoader.getResource}
- * method by replacing all occurrences of <code>'.'</code> in
- * <code>bundleName</code> with <code>'/'</code> and appending a
- * <code>'.'</code> and the given file <code>suffix</code>. For
- * example, if <code>bundleName</code> is
- * <code>"foo.bar.MyResources_ja_JP"</code> and <code>suffix</code>
- * is <code>"properties"</code>, then
- * <code>"foo/bar/MyResources_ja_JP.properties"</code> is returned.
+ * method by replacing all occurrences of {@code '.'} in
+ * {@code bundleName} with {@code '/'} and appending a
+ * {@code '.'} and the given file {@code suffix}. For
+ * example, if {@code bundleName} is
+ * {@code "foo.bar.MyResources_ja_JP"} and {@code suffix}
+ * is {@code "properties"}, then
+ * {@code "foo/bar/MyResources_ja_JP.properties"} is returned.
*
* @param bundleName
* the bundle name
@@ -3469,8 +3471,8 @@
* the file type suffix
* @return the converted resource name
* @exception NullPointerException
- * if <code>bundleName</code> or <code>suffix</code>
- * is <code>null</code>
+ * if {@code bundleName} or {@code suffix}
+ * is {@code null}
*/
public final String toResourceName(String bundleName, String suffix) {
StringBuilder sb = new StringBuilder(bundleName.length() + 1 + suffix.length());
--- a/jdk/src/java.base/share/classes/java/util/concurrent/BlockingDeque.java Wed Aug 23 12:24:55 2017 -0400
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/BlockingDeque.java Wed Aug 23 10:58:11 2017 -0700
@@ -56,66 +56,66 @@
* <table class="plain">
* <caption>Summary of BlockingDeque methods</caption>
* <tr>
- * <td style="text-align:center" COLSPAN = 5> <b>First Element (Head)</b></td>
+ * <th id="First" colspan="5"> First Element (Head)</th>
* </tr>
* <tr>
* <td></td>
- * <td style="text-align:center"><em>Throws exception</em></td>
- * <td style="text-align:center"><em>Special value</em></td>
- * <td style="text-align:center"><em>Blocks</em></td>
- * <td style="text-align:center"><em>Times out</em></td>
+ * <th id="FThrow" style="font-weight:normal; font-style: italic">Throws exception</th>
+ * <th id="FValue" style="font-weight:normal; font-style: italic">Special value</th>
+ * <th id="FBlock" style="font-weight:normal; font-style: italic">Blocks</th>
+ * <th id="FTimes" style="font-weight:normal; font-style: italic">Times out</th>
* </tr>
* <tr>
- * <td><b>Insert</b></td>
- * <td>{@link #addFirst(Object) addFirst(e)}</td>
- * <td>{@link #offerFirst(Object) offerFirst(e)}</td>
- * <td>{@link #putFirst(Object) putFirst(e)}</td>
- * <td>{@link #offerFirst(Object, long, TimeUnit) offerFirst(e, time, unit)}</td>
+ * <th id="FInsert" style="text-align:left">Insert</th>
+ * <td headers="First FInsert FThrow">{@link #addFirst(Object) addFirst(e)}</td>
+ * <td headers="First FInsert FValue">{@link #offerFirst(Object) offerFirst(e)}</td>
+ * <td headers="First FInsert FBlock">{@link #putFirst(Object) putFirst(e)}</td>
+ * <td headers="First FInsert FTimes">{@link #offerFirst(Object, long, TimeUnit) offerFirst(e, time, unit)}</td>
* </tr>
* <tr>
- * <td><b>Remove</b></td>
- * <td>{@link #removeFirst() removeFirst()}</td>
- * <td>{@link #pollFirst() pollFirst()}</td>
- * <td>{@link #takeFirst() takeFirst()}</td>
- * <td>{@link #pollFirst(long, TimeUnit) pollFirst(time, unit)}</td>
+ * <th id="FRemove" style="text-align:left">Remove</th>
+ * <td headers="First FRemove FThrow">{@link #removeFirst() removeFirst()}</td>
+ * <td headers="First FRemove FValue">{@link #pollFirst() pollFirst()}</td>
+ * <td headers="First FRemove FBlock">{@link #takeFirst() takeFirst()}</td>
+ * <td headers="First FRemove FTimes">{@link #pollFirst(long, TimeUnit) pollFirst(time, unit)}</td>
* </tr>
* <tr>
- * <td><b>Examine</b></td>
- * <td>{@link #getFirst() getFirst()}</td>
- * <td>{@link #peekFirst() peekFirst()}</td>
- * <td><em>not applicable</em></td>
- * <td><em>not applicable</em></td>
+ * <th id="FExamine" style="text-align:left">Examine</th>
+ * <td headers="First FExamine FThrow">{@link #getFirst() getFirst()}</td>
+ * <td headers="First FExamine FValue">{@link #peekFirst() peekFirst()}</td>
+ * <td headers="First FExamine FBlock" style="font-style:italic">not applicable</td>
+ * <td headers="First FExamine FTimes" style="font-style:italic">not applicable</td>
* </tr>
* <tr>
- * <td style="text-align:center" COLSPAN = 5> <b>Last Element (Tail)</b></td>
+ * <th id="Last" colspan="5"> Last Element (Tail)</th>
* </tr>
* <tr>
* <td></td>
- * <td style="text-align:center"><em>Throws exception</em></td>
- * <td style="text-align:center"><em>Special value</em></td>
- * <td style="text-align:center"><em>Blocks</em></td>
- * <td style="text-align:center"><em>Times out</em></td>
+ * <th id="LThrow" style="font-weight:normal; font-style: italic">Throws exception</th>
+ * <th id="LValue" style="font-weight:normal; font-style: italic">Special value</th>
+ * <th id="LBlock" style="font-weight:normal; font-style: italic">Blocks</th>
+ * <th id="LTimes" style="font-weight:normal; font-style: italic">Times out</th>
* </tr>
* <tr>
- * <td><b>Insert</b></td>
- * <td>{@link #addLast(Object) addLast(e)}</td>
- * <td>{@link #offerLast(Object) offerLast(e)}</td>
- * <td>{@link #putLast(Object) putLast(e)}</td>
- * <td>{@link #offerLast(Object, long, TimeUnit) offerLast(e, time, unit)}</td>
+ * <th id="LInsert" style="text-align:left">Insert</th>
+ * <td headers="Last LInsert LThrow">{@link #addLast(Object) addLast(e)}</td>
+ * <td headers="Last LInsert LValue">{@link #offerLast(Object) offerLast(e)}</td>
+ * <td headers="Last LInsert LBlock">{@link #putLast(Object) putLast(e)}</td>
+ * <td headers="Last LInsert LTimes">{@link #offerLast(Object, long, TimeUnit) offerLast(e, time, unit)}</td>
* </tr>
* <tr>
- * <td><b>Remove</b></td>
- * <td>{@link #removeLast() removeLast()}</td>
- * <td>{@link #pollLast() pollLast()}</td>
- * <td>{@link #takeLast() takeLast()}</td>
- * <td>{@link #pollLast(long, TimeUnit) pollLast(time, unit)}</td>
+ * <th id="LRemove" style="text-align:left">Remove</th>
+ * <td headers="Last LRemove LThrow">{@link #removeLast() removeLast()}</td>
+ * <td headers="Last LRemove LValue">{@link #pollLast() pollLast()}</td>
+ * <td headers="Last LRemove LBlock">{@link #takeLast() takeLast()}</td>
+ * <td headers="Last LRemove LTimes">{@link #pollLast(long, TimeUnit) pollLast(time, unit)}</td>
* </tr>
* <tr>
- * <td><b>Examine</b></td>
- * <td>{@link #getLast() getLast()}</td>
- * <td>{@link #peekLast() peekLast()}</td>
- * <td><em>not applicable</em></td>
- * <td><em>not applicable</em></td>
+ * <th id="LExamine" style="text-align:left">Examine</th>
+ * <td headers="Last LExamine LThrow">{@link #getLast() getLast()}</td>
+ * <td headers="Last LExamine LValue">{@link #peekLast() peekLast()}</td>
+ * <td headers="Last LExamine LBlock" style="font-style:italic">not applicable</td>
+ * <td headers="Last LExamine LTimes" style="font-style:italic">not applicable</td>
* </tr>
* </table>
*
@@ -131,57 +131,52 @@
* <table class="plain">
* <caption>Comparison of BlockingQueue and BlockingDeque methods</caption>
* <tr>
- * <td style="text-align:center"> <b>{@code BlockingQueue} Method</b></td>
- * <td style="text-align:center"> <b>Equivalent {@code BlockingDeque} Method</b></td>
+ * <td></td>
+ * <th id="BQueue"> {@code BlockingQueue} Method</th>
+ * <th id="BDeque"> Equivalent {@code BlockingDeque} Method</th>
* </tr>
* <tr>
- * <td style="text-align:center" COLSPAN = 2> <b>Insert</b></td>
- * </tr>
- * <tr>
- * <td>{@link #add(Object) add(e)}</td>
- * <td>{@link #addLast(Object) addLast(e)}</td>
+ * <th id="Insert" rowspan="4" style="text-align:left; vertical-align:top">Insert</th>
+ * <th id="add" style="font-weight:normal; text-align:left">{@link #add(Object) add(e)}</th>
+ * <td headers="Insert BDeque add">{@link #addLast(Object) addLast(e)}</td>
* </tr>
* <tr>
- * <td>{@link #offer(Object) offer(e)}</td>
- * <td>{@link #offerLast(Object) offerLast(e)}</td>
+ * <th id="offer1" style="font-weight:normal; text-align:left">{@link #offer(Object) offer(e)}</th>
+ * <td headers="Insert BDeque offer1">{@link #offerLast(Object) offerLast(e)}</td>
* </tr>
* <tr>
- * <td>{@link #put(Object) put(e)}</td>
- * <td>{@link #putLast(Object) putLast(e)}</td>
+ * <th id="put" style="font-weight:normal; text-align:left">{@link #put(Object) put(e)}</th>
+ * <td headers="Insert BDeque put">{@link #putLast(Object) putLast(e)}</td>
* </tr>
* <tr>
- * <td>{@link #offer(Object, long, TimeUnit) offer(e, time, unit)}</td>
- * <td>{@link #offerLast(Object, long, TimeUnit) offerLast(e, time, unit)}</td>
- * </tr>
- * <tr>
- * <td style="text-align:center" COLSPAN = 2> <b>Remove</b></td>
+ * <th id="offer2" style="font-weight:normal; text-align:left">{@link #offer(Object, long, TimeUnit) offer(e, time, unit)}</th>
+ * <td headers="Insert BDeque offer2">{@link #offerLast(Object, long, TimeUnit) offerLast(e, time, unit)}</td>
* </tr>
* <tr>
- * <td>{@link #remove() remove()}</td>
- * <td>{@link #removeFirst() removeFirst()}</td>
+ * <th id="Remove" rowspan="4" style="text-align:left; vertical-align:top">Remove</th>
+ * <th id="remove" style="font-weight:normal; text-align:left">{@link #remove() remove()}</th>
+ * <td headers="Remove BDeque remove">{@link #removeFirst() removeFirst()}</td>
* </tr>
* <tr>
- * <td>{@link #poll() poll()}</td>
- * <td>{@link #pollFirst() pollFirst()}</td>
- * </tr>
- * <tr>
- * <td>{@link #take() take()}</td>
- * <td>{@link #takeFirst() takeFirst()}</td>
+ * <th id="poll1" style="font-weight:normal; text-align:left">{@link #poll() poll()}</th>
+ * <td headers="Remove BDeque poll1">{@link #pollFirst() pollFirst()}</td>
* </tr>
* <tr>
- * <td>{@link #poll(long, TimeUnit) poll(time, unit)}</td>
- * <td>{@link #pollFirst(long, TimeUnit) pollFirst(time, unit)}</td>
+ * <th id="take" style="font-weight:normal; text-align:left">{@link #take() take()}</th>
+ * <td headers="Remove BDeque take">{@link #takeFirst() takeFirst()}</td>
* </tr>
* <tr>
- * <td style="text-align:center" COLSPAN = 2> <b>Examine</b></td>
+ * <th id="poll2" style="font-weight:normal; text-align:left">{@link #poll(long, TimeUnit) poll(time, unit)}</th>
+ * <td headers="Remove BDeque poll2">{@link #pollFirst(long, TimeUnit) pollFirst(time, unit)}</td>
* </tr>
* <tr>
- * <td>{@link #element() element()}</td>
- * <td>{@link #getFirst() getFirst()}</td>
+ * <th id="Examine" rowspan="2" style="text-align:left; vertical-align:top">Examine</th>
+ * <th id="element" style="font-weight:normal; text-align:left">{@link #element() element()}</th>
+ * <td headers="Examine BDeque element">{@link #getFirst() getFirst()}</td>
* </tr>
* <tr>
- * <td>{@link #peek() peek()}</td>
- * <td>{@link #peekFirst() peekFirst()}</td>
+ * <th id="peek" style="font-weight:normal; text-align:left">{@link #peek() peek()}</th>
+ * <td headers="Examine BDeque peek">{@link #peekFirst() peekFirst()}</td>
* </tr>
* </table>
*
--- a/jdk/src/java.base/share/classes/java/util/concurrent/BlockingQueue.java Wed Aug 23 12:24:55 2017 -0400
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/BlockingQueue.java Wed Aug 23 10:58:11 2017 -0700
@@ -56,31 +56,31 @@
* <caption>Summary of BlockingQueue methods</caption>
* <tr>
* <td></td>
- * <td style="text-align:center"><em>Throws exception</em></td>
- * <td style="text-align:center"><em>Special value</em></td>
- * <td style="text-align:center"><em>Blocks</em></td>
- * <td style="text-align:center"><em>Times out</em></td>
+ * <th scope="col" style="font-weight:normal; font-style:italic">Throws exception</th>
+ * <th scope="col" style="font-weight:normal; font-style:italic">Special value</th>
+ * <th scope="col" style="font-weight:normal; font-style:italic">Blocks</th>
+ * <th scope="col" style="font-weight:normal; font-style:italic">Times out</th>
* </tr>
* <tr>
- * <td><b>Insert</b></td>
+ * <th scope="row" style="text-align:left">Insert</th>
* <td>{@link #add(Object) add(e)}</td>
* <td>{@link #offer(Object) offer(e)}</td>
* <td>{@link #put(Object) put(e)}</td>
* <td>{@link #offer(Object, long, TimeUnit) offer(e, time, unit)}</td>
* </tr>
* <tr>
- * <td><b>Remove</b></td>
+ * <th scope="row" style="text-align:left">Remove</th>
* <td>{@link #remove() remove()}</td>
* <td>{@link #poll() poll()}</td>
* <td>{@link #take() take()}</td>
* <td>{@link #poll(long, TimeUnit) poll(time, unit)}</td>
* </tr>
* <tr>
- * <td><b>Examine</b></td>
+ * <th scope="row" style="text-align:left">Examine</th>
* <td>{@link #element() element()}</td>
* <td>{@link #peek() peek()}</td>
- * <td><em>not applicable</em></td>
- * <td><em>not applicable</em></td>
+ * <td style="font-style: italic">not applicable</td>
+ * <td style="font-style: italic">not applicable</td>
* </tr>
* </table>
*
--- a/jdk/src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java Wed Aug 23 12:24:55 2017 -0400
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java Wed Aug 23 10:58:11 2017 -0700
@@ -113,21 +113,21 @@
* <caption>Summary of task execution methods</caption>
* <tr>
* <td></td>
- * <td style="text-align:center"> <b>Call from non-fork/join clients</b></td>
- * <td style="text-align:center"> <b>Call from within fork/join computations</b></td>
+ * <th scope="col"> Call from non-fork/join clients</th>
+ * <th scope="col"> Call from within fork/join computations</th>
* </tr>
* <tr>
- * <td> <b>Arrange async execution</b></td>
+ * <th scope="row" style="text-align:left"> Arrange async execution</th>
* <td> {@link #execute(ForkJoinTask)}</td>
* <td> {@link ForkJoinTask#fork}</td>
* </tr>
* <tr>
- * <td> <b>Await and obtain result</b></td>
+ * <th scope="row" style="text-align:left"> Await and obtain result</th>
* <td> {@link #invoke(ForkJoinTask)}</td>
* <td> {@link ForkJoinTask#invoke}</td>
* </tr>
* <tr>
- * <td> <b>Arrange exec and obtain Future</b></td>
+ * <th scope="row" style="text-align:left"> Arrange exec and obtain Future</th>
* <td> {@link #submit(ForkJoinTask)}</td>
* <td> {@link ForkJoinTask#fork} (ForkJoinTasks <em>are</em> Futures)</td>
* </tr>
--- a/jdk/src/java.base/share/classes/java/util/doc-files/coll-designfaq.html Wed Aug 23 12:24:55 2017 -0400
+++ b/jdk/src/java.base/share/classes/java/util/doc-files/coll-designfaq.html Wed Aug 23 10:58:11 2017 -0700
@@ -1,7 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
+<!DOCTYPE html>
<!--
Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -26,16 +23,15 @@
or visit www.oracle.com if you need additional information or have any
questions.
-->
-
-<html lang="en-US" xmlns="http://www.w3.org/1999/xhtml" xml:lang=
-"en-US">
+<html lang="en-US">
<head>
<title>Java Collections API Design FAQ</title>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<h2>Java Collections API Design FAQ</h2>
<!-- Body text begins here -->
-<hr />
+<hr>
This document answers frequently asked questions concerning the
design of the Java collections framework. It is derived from the
large volume of traffic on the collections-comments alias. It
@@ -105,10 +101,10 @@
collections that send out Events when they're
modified?</b></a></li>
</ol>
-<hr size="3" noshade="noshade" />
+<hr>
<h3>Core Interfaces - General Questions</h3>
<ol>
-<li><a name="a1" id="a1"><b>Why don't you support immutability
+<li><a id="a1"><b>Why don't you support immutability
directly in the core collection interfaces so that you can do away
with <em>optional operations</em> (and
UnsupportedOperationException)?</b></a>
@@ -168,7 +164,7 @@
very small set of core interfaces that can throw a runtime
exception.</p>
</li>
-<li><a name="a2" id="a2"><b>Won't programmers have to surround any
+<li><a id="a2"><b>Won't programmers have to surround any
code that calls optional operations with a try-catch clause in case
they throw an UnsupportedOperationException?</b></a>
<p>It was never our intention that programs should catch these
@@ -176,7 +172,7 @@
should only arise as a result of programming errors, in which case,
your program will halt due to the uncaught exception.</p>
</li>
-<li><a name="a3" id="a3"><b>Why isn't there a core interface for
+<li><a id="a3"><b>Why isn't there a core interface for
"bags" (AKA multisets)?</b></a>
<p>The Collection interface provides this functionality. We are not
providing any public implementations of this interface, as we think
@@ -185,7 +181,7 @@
atop AbstractCollection (for example, the Collection returned by
Map.values).</p>
</li>
-<li><a name="a28" id="a28"><b>Why didn't you use "Beans-style
+<li><a id="a28"><b>Why didn't you use "Beans-style
names" for consistency?</b></a>
<p>While the names of the new collections methods do not adhere to
the "Beans naming conventions", we believe that they are
@@ -207,10 +203,10 @@
case. Thus, we adopted the "traditional" JDK style rather than the
Beans style.</li>
</ol>
-<hr />
+<hr>
<h3>Collection Interface</h3>
<ol>
-<li><a name="a5" id="a5"><b>Why doesn't Collection extend Cloneable
+<li><a id="a5"><b>Why doesn't Collection extend Cloneable
and Serializable?</b></a>
<p>Many Collection implementations (including all of the ones
provided by the JDK) will have a public clone method, but it would
@@ -224,7 +220,7 @@
this type, and use the addAll method to copy the elements of the
original collection into the new one.</p>
</li>
-<li><a name="a6" id="a6"><b>Why don't you provide an "apply" method
+<li><a id="a6"><b>Why don't you provide an "apply" method
in Collection to apply a given method ("upcall") to all the
elements of the Collection?</b></a>
<p>This is what is referred to as an "Internal Iterator" in the
@@ -235,7 +231,7 @@
this functionality is increased by the fact that it requires a
public interface to describe upcalls.</p>
</li>
-<li><a name="a7" id="a7"><b>Why didn't you provide a "Predicate"
+<li><a id="a7"><b>Why didn't you provide a "Predicate"
interface, and related methods (e.g., a method to find the first
element in the Collection satisfying the predicate)?</b></a>
<p>It's easy to implement this functionality atop Iterators, and
@@ -244,14 +240,14 @@
weight. It could be added to the Collections class at a later date
(implemented atop Iterator), if it's deemed useful.</p>
</li>
-<li><a name="a8" id="a8"><b>Why don't you provide a form of the
+<li><a id="a8"><b>Why don't you provide a form of the
addAll method that takes an Enumeration (or an Iterator)?</b></a>
<p>Because we don't believe in using Enumerations (or Iterators) as
"poor man's collections." This was occasionally done in prior
releases, but now that we have the Collection interface, it is the
preferred way to pass around abstract collections of objects.</p>
</li>
-<li><a name="a9" id="a9"><b>Why don't the concrete implementations
+<li><a id="a9"><b>Why don't the concrete implementations
in the JDK have Enumeration (or Iterator) constructors?</b></a>
<p>Again, this is an instance of an Enumeration serving as a "poor
man's collection" and we're trying to discourage that. Note
@@ -259,7 +255,7 @@
should have constructors that take a Collection (and create a new
Collection with the same elements).</p>
</li>
-<li><a name="a10" id="a10"><b>Why don't you provide an Iterator.add
+<li><a id="a10"><b>Why don't you provide an Iterator.add
method?</b></a>
<p>The semantics are unclear, given that the contract for Iterator
makes no guarantees about the order of iteration. Note, however,
@@ -267,10 +263,10 @@
guarantee the order of the iteration.</p>
</li>
</ol>
-<hr />
+<hr>
<h3>List Interface</h3>
<ol>
-<li><a name="a11" id="a11"><b>Why don't you rename the List
+<li><a id="a11"><b>Why don't you rename the List
interface to Sequence; doesn't "list" generally suggest "linked
list"? Also, doesn't it conflict with java.awt.List?</b></a>
<p>People were evenly divided as to whether List suggests linked
@@ -285,16 +281,16 @@
import java.awt.*;
import java.util.List; // Dictates interpretation of "List"
</pre></li>
-<li><a name="a12" id="a12"><b>Why don't you rename List's set
+<li><a id="a12"><b>Why don't you rename List's set
method to replace, to avoid confusion with Set.</b></a>
<p>It was decided that the "set/get" naming convention was strongly
enough enshrined in the language that we'd stick with it.</p>
</li>
</ol>
-<hr />
+<hr>
<h3>Map Interface</h3>
<ol>
-<li><a name="a14" id="a14"><b>Why doesn't Map extend
+<li><a id="a14"><b>Why doesn't Map extend
Collection?</b></a>
<p>This was by design. We feel that mappings are not collections
and collections are not mappings. Thus, it makes little sense for
@@ -317,10 +313,10 @@
Lists.</p>
</li>
</ol>
-<hr />
+<hr>
<h3>Iterator Interface</h3>
<ol>
-<li><a name="a18" id="a18"><b>Why doesn't Iterator extend
+<li><a id="a18"><b>Why doesn't Iterator extend
Enumeration?</b></a>
<p>We view the method names for Enumeration as unfortunate. They're
very long, and very frequently used. Given that we were adding a
@@ -329,7 +325,7 @@
names. Of course we could support the new and old names in
Iterator, but it doesn't seem worthwhile.</p>
</li>
-<li><a name="a19" id="a19"><b>Why don't you provide an
+<li><a id="a19"><b>Why don't you provide an
Iterator.peek method that allows you to look at the next element in
an iteration without advancing the iterator?</b></a>
<p>It can be implemented atop the current Iterators (a similar
@@ -338,10 +334,10 @@
that everyone has to implement.</p>
</li>
</ol>
-<hr />
+<hr>
<h3>Miscellaneous</h3>
<ol>
-<li><a name="a23" id="a23"><b>Why did you write a new collections
+<li><a id="a23"><b>Why did you write a new collections
framework instead of adopting JGL (a preexisting collections
package from ObjectSpace, Inc.) into the JDK?</b></a>
<p>If you examine the goals for our Collections framework (in the
@@ -363,7 +359,7 @@
as we can to keep them small and manageable, so that Java continues
to be an easy, fun language to learn and to use.</p>
</li>
-<li><a name="a26" id="a26"><b>Why don't you eliminate all of the
+<li><a id="a26"><b>Why don't you eliminate all of the
methods and classes that return "views" (Collections backed by
other collection-like objects). This would greatly reduce
aliasing.</b></a>
@@ -380,7 +376,7 @@
taking List on input do not have to write secondary forms taking an
offset and a length (as they do for arrays).</p>
</li>
-<li><a name="a27" id="a27"><b>Why don't you provide for
+<li><a id="a27"><b>Why don't you provide for
"observable" collections that send out Events when they're
modified?</b></a>
<p>Primarily, resource constraints. If we're going to commit to
@@ -390,9 +386,9 @@
facility on top of the public APIs.</p>
</li>
</ol>
-<hr />
+<hr>
<p style="font-size:smaller">
-Copyright © 1998, 2017, Oracle and/or its affiliates. 500 Oracle Parkway<br />
+Copyright © 1998, 2017, Oracle and/or its affiliates. 500 Oracle Parkway<br>
Redwood Shores, CA 94065 USA. All rights reserved.</p>
<!-- Body text ends here -->
</body>
--- a/jdk/src/java.base/share/classes/java/util/doc-files/coll-index.html Wed Aug 23 12:24:55 2017 -0400
+++ b/jdk/src/java.base/share/classes/java/util/doc-files/coll-index.html Wed Aug 23 10:58:11 2017 -0700
@@ -1,6 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html>
<!--
Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
@@ -27,8 +25,7 @@
questions.
-->
-<html lang="en-US" xmlns="http://www.w3.org/1999/xhtml" xml:lang=
-"en-US">
+<html lang="en-US">
<head>
<meta name="generator" content="HTML Tidy, see www.w3.org" />
<title>The Collections Framework</title>
@@ -71,7 +68,7 @@
frequently asked questions (FAQ) about the design of the
collections framework.</li>
</ul>
-<hr />
+<hr>
<p style="font-size:smaller">
Copyright © 1998, 2017, Oracle and/or its affiliates. 500 Oracle Parkway<br />
Redwood Shores, CA 94065 USA. All rights reserved.</p>
--- a/jdk/src/java.base/share/classes/java/util/doc-files/coll-overview.html Wed Aug 23 12:24:55 2017 -0400
+++ b/jdk/src/java.base/share/classes/java/util/doc-files/coll-overview.html Wed Aug 23 10:58:11 2017 -0700
@@ -1,7 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
+<!DOCTYPE html>
<!--
Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -26,11 +23,29 @@
or visit www.oracle.com if you need additional information or have any
questions.
-->
-
-<html lang="en-US" xmlns="http://www.w3.org/1999/xhtml" xml:lang=
-"en-US">
+<html lang="en-US">
<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Collections Framework Overview</title>
+<style>
+#impls {
+ border: 1px solid black;
+ border-collapse: collapse;
+ margin: 0 auto;
+}
+#impls caption {
+ font-weight: bold;
+ font-size: smaller;
+}
+#impls, #impls th, #impls td {
+ border: 1px solid black;
+ padding: 2px .5em;
+}
+#impls tbody th {
+ font-weight: normal;
+ text-align:left;
+}
+</style>
</head>
<body>
<h1>Collections Framework Overview</h1>
@@ -73,7 +88,7 @@
<li><strong>General-purpose implementations</strong>. Primary
implementations of the collection interfaces.</li>
<li><strong>Legacy implementations</strong>. The collection classes
-from earlier releases, <tt>Vector</tt> and <tt>Hashtable</tt>, were
+from earlier releases, <code>Vector</code> and <code>Hashtable</code>, were
retrofitted to implement the collection interfaces.</li>
<li><strong>Special-purpose implementations</strong>.
Implementations designed for use in special situations. These
@@ -101,57 +116,57 @@
<hr />
<h2>Collection Interfaces</h2>
<p>The <i>collection interfaces</i> are divided into two groups.
-The most basic interface, <tt><a href=
-"../Collection.html">java.util.Collection</a></tt>,
+The most basic interface, <code><a href=
+"../Collection.html">java.util.Collection</a></code>,
has the following descendants:</p>
<ul>
-<li><tt><a href=
-"../Set.html">java.util.Set</a></tt></li>
-<li><tt><a href=
-"../SortedSet.html">java.util.SortedSet</a></tt></li>
-<li><tt><a href=
-"../NavigableSet.html">java.util.NavigableSet</a></tt></li>
-<li><tt><a href=
-"../Queue.html">java.util.Queue</a></tt></li>
-<li><tt><a href=
-"../concurrent/BlockingQueue.html">java.util.concurrent.BlockingQueue</a></tt></li>
-<li><tt><a href=
-"../concurrent/TransferQueue.html">java.util.concurrent.TransferQueue</a></tt></li>
-<li><tt><a href=
-"../Deque.html">java.util.Deque</a></tt></li>
-<li><tt><a href=
-"../concurrent/BlockingDeque.html">java.util.concurrent.BlockingDeque</a></tt></li>
+<li><code><a href=
+"../Set.html">java.util.Set</a></code></li>
+<li><code><a href=
+"../SortedSet.html">java.util.SortedSet</a></code></li>
+<li><code><a href=
+"../NavigableSet.html">java.util.NavigableSet</a></code></li>
+<li><code><a href=
+"../Queue.html">java.util.Queue</a></code></li>
+<li><code><a href=
+"../concurrent/BlockingQueue.html">java.util.concurrent.BlockingQueue</a></code></li>
+<li><code><a href=
+"../concurrent/TransferQueue.html">java.util.concurrent.TransferQueue</a></code></li>
+<li><code><a href=
+"../Deque.html">java.util.Deque</a></code></li>
+<li><code><a href=
+"../concurrent/BlockingDeque.html">java.util.concurrent.BlockingDeque</a></code></li>
</ul>
-<p>The other collection interfaces are based on <tt><a href=
-"../Map.html">java.util.Map</a></tt> and are
+<p>The other collection interfaces are based on <code><a href=
+"../Map.html">java.util.Map</a></code> and are
not true collections. However, these interfaces contain
<i>collection-view</i> operations, which enable them to be
-manipulated as collections. <tt>Map</tt> has the following
+manipulated as collections. <code>Map</code> has the following
offspring:</p>
<ul>
-<li><tt><a href=
-"../SortedMap.html">java.util.SortedMap</a></tt></li>
-<li><tt><a href=
-"../NavigableMap.html">java.util.NavigableMap</a></tt></li>
-<li><tt><a href=
-"../concurrent/ConcurrentMap.html">java.util.concurrent.ConcurrentMap</a></tt></li>
-<li><tt><a href=
-"../concurrent/ConcurrentNavigableMap.html">java.util.concurrent.ConcurrentNavigableMap</a></tt></li>
+<li><code><a href=
+"../SortedMap.html">java.util.SortedMap</a></code></li>
+<li><code><a href=
+"../NavigableMap.html">java.util.NavigableMap</a></code></li>
+<li><code><a href=
+"../concurrent/ConcurrentMap.html">java.util.concurrent.ConcurrentMap</a></code></li>
+<li><code><a href=
+"../concurrent/ConcurrentNavigableMap.html">java.util.concurrent.ConcurrentNavigableMap</a></code></li>
</ul>
<p>Many of the modification methods in the collection interfaces
are labeled <i>optional</i>. Implementations are permitted to not
perform one or more of these operations, throwing a runtime
-exception (<tt>UnsupportedOperationException</tt>) if they are
+exception (<code>UnsupportedOperationException</code>) if they are
attempted. The documentation for each implementation must specify
which optional operations are supported. Several terms are
introduced to aid in this specification:</p>
<ul>
<li>Collections that do not support modification operations (such
-as <tt>add</tt>, <tt>remove</tt> and <tt>clear</tt>) are referred
+as <code>add</code>, <code>remove</code> and <code>clear</code>) are referred
to as <i>unmodifiable</i>. Collections that are not unmodifiable
are <i>modifiable.</i></li>
<li>Collections that additionally guarantee that no change in the
-<tt>Collection</tt> object will be visible are referred to as
+<code>Collection</code> object will be visible are referred to as
<i>immutable</i>. Collections that are not immutable are
<i>mutable</i>.</li>
<li>Lists that guarantee that their size remains constant even
@@ -161,15 +176,15 @@
<li>Lists that support fast (generally constant time) indexed
element access are known as <i>random access</i> lists. Lists that
do not support fast indexed element access are known as
-<i>sequential access</i> lists. The <tt><a href=
-"../RandomAccess.html">RandomAccess</a></tt>
+<i>sequential access</i> lists. The <code><a href=
+"../RandomAccess.html">RandomAccess</a></code>
marker interface enables lists to advertise the fact that they
support random access. This enables generic algorithms to change
their behavior to provide good performance when applied to either
random or sequential access lists.</li>
</ul>
<p>Some implementations restrict what elements (or in the case of
-<tt>Maps</tt>, keys and values) can be stored. Possible
+<code>Maps</code>, keys and values) can be stored. Possible
restrictions include requiring elements to:</p>
<ul>
<li>Be of a particular type.</li>
@@ -178,77 +193,70 @@
</ul>
<p>Attempting to add an element that violates an implementation's
restrictions results in a runtime exception, typically a
-<tt>ClassCastException</tt>, an <tt>IllegalArgumentException</tt>,
-or a <tt>NullPointerException</tt>. Attempting to remove or test
+<code>ClassCastException</code>, an <code>IllegalArgumentException</code>,
+or a <code>NullPointerException</code>. Attempting to remove or test
for the presence of an element that violates an implementation's
restrictions can result in an exception. Some restricted
collections permit this usage.</p>
-<hr />
+<hr>
<h2>Collection Implementations</h2>
<p>Classes that implement the collection interfaces typically have
names in the form of
<<em>Implementation-style</em>><<em>Interface</em>>.
The general purpose implementations are summarized in the following
table:</p>
-<table border="2" summary=
-"general purpose implementations and interfaces" align="center">
+<table id="impls">
+<caption>General purpose implementations</caption>
<thead>
<tr>
-<th id="interfaces">Interface</th>
-<th id="hashtable">Hash Table</th>
-<th id="resizablearray">Resizable Array</th>
-<th id="balancedtree">Balanced Tree</th>
-<th id="linkedlist">Linked List</th>
-<th id="hashtableandlinkedlist">Hash Table + Linked List</th>
+<th scope="col">Interface</th>
+<th scope="col">Hash Table</th>
+<th scope="col">Resizable Array</th>
+<th scope="col">Balanced Tree</th>
+<th scope="col">Linked List</th>
+<th scope="col">Hash Table + Linked List</th>
</tr>
+</thead>
+<tbody>
<tr>
-<td headers="interfaces"><code>Set</code></td>
-<td headers="hashtable"><a href=
-"../HashSet.html"><tt>HashSet</tt></a></td>
-<td headers="resizablearray"> </td>
-<td headers="balancedtree"><a href=
-"../TreeSet.html"><tt>TreeSet</tt></a></td>
-<td headers="linkedlist"> </td>
-<td headers="hashtableandlinkedlist"><a href=
-"../LinkedHashSet.html"><tt>LinkedHashSet</tt></a></td>
+<th scope="row"><code>Set</code></th>
+<td><a href="../HashSet.html"><code>HashSet</code></a></td>
+<td> </td>
+<td><a href="../TreeSet.html"><code>TreeSet</code></a></td>
+<td> </td>
+<td><a href=
+"../LinkedHashSet.html"><code>LinkedHashSet</code></a></td>
</tr>
<tr>
-<td headers="interfaces"><code>List</code></td>
-<td headers="hashtable"> </td>
-<td headers="resizablearray"><a href=
-"../ArrayList.html"><tt>ArrayList</tt></a></td>
-<td headers="balancedtree"> </td>
-<td headers="linkedlist"><a href=
-"../LinkedList.html"><tt>LinkedList</tt></a></td>
-<td headers="hashtableandlinkedlist"> </td>
+<th scope="row"><code>List</code></th>
+<td> </td>
+<td><a href="../ArrayList.html"><code>ArrayList</code></a></td>
+<td> </td>
+<td><a href="../LinkedList.html"><code>LinkedList</code></a></td>
+<td> </td>
</tr>
<tr>
-<td headers="interfaces"><code>Deque</code></td>
-<td headers="hashtable"> </td>
-<td headers="resizablearray"><a href=
-"../ArrayDeque.html"><tt>ArrayDeque</tt></a></td>
-<td headers="balancedtree"> </td>
-<td headers="linkedlist"><a href=
-"../LinkedList.html"><tt>LinkedList</tt></a></td>
-<td headers="hashtableandlinkedlist"> </td>
+<th scope="row"><code>Deque</code></th>
+<td> </td>
+<td><a href="../ArrayDeque.html"><code>ArrayDeque</code></a></td>
+<td> </td>
+<td><a href="../LinkedList.html"><code>LinkedList</code></a></td>
+<td> </td>
</tr>
<tr>
-<td headers="interfaces"><code>Map</code></td>
-<td headers="hashtable"><a href=
-"../HashMap.html"><tt>HashMap</tt></a></td>
-<td headers="resizablearray"> </td>
-<td headers="balancedtree"><a href=
-"../TreeMap.html"><tt>TreeMap</tt></a></td>
-<td headers="linkedlist"> </td>
-<td headers="hashtableandlinkedlist"><a href=
-"../LinkedHashMap.html"><tt>LinkedHashMap</tt></a></td>
+<th scope="row"><code>Map</code></th>
+<td><a href="../HashMap.html"><code>HashMap</code></a></td>
+<td> </td>
+<td><a href="../TreeMap.html"><code>TreeMap</code></a></td>
+<td> </td>
+<td><a href="../LinkedHashMap.html"><code>LinkedHashMap</code></a></td>
</tr>
-</thead>
+</tbody>
</table>
<p>The general-purpose implementations support all of the
<i>optional operations</i> in the collection interfaces and have no
restrictions on the elements they may contain. They are
-unsynchronized, but the <tt>Collections</tt> class contains static
+unsynchronized, but the <code>Collections</code> class contains static
factories called <a href=
"../Collections.html#synchronizedCollection-java.util.Collection-">
<em>synchronization wrappers</em></a> that can be used to add
@@ -256,15 +264,15 @@
implementations have <i>fail-fast iterators</i>, which detect
invalid concurrent modification, and fail quickly and cleanly
(rather than behaving erratically).</p>
-<p>The <tt>AbstractCollection</tt>, <tt>AbstractSet</tt>,
-<tt>AbstractList</tt>, <tt>AbstractSequentialList</tt> and
-<tt>AbstractMap</tt> classes provide basic implementations of the
+<p>The <code>AbstractCollection</code>, <code>AbstractSet</code>,
+<code>AbstractList</code>, <code>AbstractSequentialList</code> and
+<code>AbstractMap</code> classes provide basic implementations of the
core collection interfaces, to minimize the effort required to
implement them. The API documentation for these classes describes
precisely how each method is implemented so the implementer knows
which methods must be overridden, given the performance of the
basic operations of a specific implementation.</p>
-<hr />
+<hr>
<h2>Concurrent Collections</h2>
<p>Applications that use collections from more than one thread must
be carefully programmed. In general, this is known as <i>concurrent
@@ -279,47 +287,47 @@
in concurrent programming.</p>
<p>These concurrent-aware interfaces are available:</p>
<ul>
-<li><tt><a href=
-"../concurrent/BlockingQueue.html">BlockingQueue</a></tt></li>
-<li><tt><a href=
-"../concurrent/TransferQueue.html">TransferQueue</a></tt></li>
-<li><tt><a href=
-"../concurrent/BlockingDeque.html">BlockingDeque</a></tt></li>
-<li><tt><a href=
-"../concurrent/ConcurrentMap.html">ConcurrentMap</a></tt></li>
-<li><tt><a href=
-"../concurrent/ConcurrentNavigableMap.html">ConcurrentNavigableMap</a></tt></li>
+<li><code><a href=
+"../concurrent/BlockingQueue.html">BlockingQueue</a></code></li>
+<li><code><a href=
+"../concurrent/TransferQueue.html">TransferQueue</a></code></li>
+<li><code><a href=
+"../concurrent/BlockingDeque.html">BlockingDeque</a></code></li>
+<li><code><a href=
+"../concurrent/ConcurrentMap.html">ConcurrentMap</a></code></li>
+<li><code><a href=
+"../concurrent/ConcurrentNavigableMap.html">ConcurrentNavigableMap</a></code></li>
</ul>
<p>The following concurrent-aware implementation classes are
available. See the API documentation for the correct usage of these
implementations.</p>
<ul>
-<li><tt><a href=
-"../concurrent/LinkedBlockingQueue.html">LinkedBlockingQueue</a></tt></li>
-<li><tt><a href=
-"../concurrent/ArrayBlockingQueue.html">ArrayBlockingQueue</a></tt></li>
-<li><tt><a href=
-"../concurrent/PriorityBlockingQueue.html">PriorityBlockingQueue</a></tt></li>
-<li><tt><a href=
-"../concurrent/DelayQueue.html">DelayQueue</a></tt></li>
-<li><tt><a href=
-"../concurrent/SynchronousQueue.html">SynchronousQueue</a></tt></li>
+<li><code><a href=
+"../concurrent/LinkedBlockingQueue.html">LinkedBlockingQueue</a></code></li>
+<li><code><a href=
+"../concurrent/ArrayBlockingQueue.html">ArrayBlockingQueue</a></code></li>
+<li><code><a href=
+"../concurrent/PriorityBlockingQueue.html">PriorityBlockingQueue</a></code></li>
+<li><code><a href=
+"../concurrent/DelayQueue.html">DelayQueue</a></code></li>
+<li><code><a href=
+"../concurrent/SynchronousQueue.html">SynchronousQueue</a></code></li>
<li><a href=
-"../concurrent/LinkedBlockingDeque.html"><tt>LinkedBlockingDeque</tt></a></li>
+"../concurrent/LinkedBlockingDeque.html"><code>LinkedBlockingDeque</code></a></li>
<li><a href=
-"../concurrent/LinkedTransferQueue.html"><tt>LinkedTransferQueue</tt></a></li>
-<li><tt><a href=
-"../concurrent/CopyOnWriteArrayList.html">CopyOnWriteArrayList</a></tt></li>
-<li><tt><a href=
-"../concurrent/CopyOnWriteArraySet.html">CopyOnWriteArraySet</a></tt></li>
-<li><tt><a href=
-"../concurrent/ConcurrentSkipListSet.html">ConcurrentSkipListSet</a></tt></li>
-<li><tt><a href=
-"../concurrent/ConcurrentHashMap.html">ConcurrentHashMap</a></tt></li>
-<li><tt><a href=
-"../concurrent/ConcurrentSkipListMap.html">ConcurrentSkipListMap</a></tt></li>
+"../concurrent/LinkedTransferQueue.html"><code>LinkedTransferQueue</code></a></li>
+<li><code><a href=
+"../concurrent/CopyOnWriteArrayList.html">CopyOnWriteArrayList</a></code></li>
+<li><code><a href=
+"../concurrent/CopyOnWriteArraySet.html">CopyOnWriteArraySet</a></code></li>
+<li><code><a href=
+"../concurrent/ConcurrentSkipListSet.html">ConcurrentSkipListSet</a></code></li>
+<li><code><a href=
+"../concurrent/ConcurrentHashMap.html">ConcurrentHashMap</a></code></li>
+<li><code><a href=
+"../concurrent/ConcurrentSkipListMap.html">ConcurrentSkipListMap</a></code></li>
</ul>
-<hr />
+<hr>
<h2>Design Goals</h2>
<p>The main design goal was to produce an API that was small in
size and, more importantly, in "conceptual weight." It
@@ -332,7 +340,7 @@
not attempt to capture such subtle distinctions as mutability,
modifiability, and resizability. Instead, certain calls in the core
interfaces are <i>optional</i>, enabling implementations to throw
-an <tt>UnsupportedOperationException</tt> to indicate that they do
+an <code>UnsupportedOperationException</code> to indicate that they do
not support a specified optional operation. Collection implementers
must clearly document which optional operations are supported by an
implementation.</p>
@@ -346,13 +354,13 @@
</ul>
<p>It was critical that all reasonable representations of
collections interoperate well. This included arrays, which cannot
-be made to implement the <tt>Collection</tt> interface directly
+be made to implement the <code>Collection</code> interface directly
without changing the language. Thus, the framework includes methods
to enable collections to be moved into arrays, arrays to be viewed
as collections, and maps to be viewed as collections.</p>
-<hr />
+<hr>
<p style="font-size:smaller">
-Copyright © 1998, 2017, Oracle and/or its affiliates. 500 Oracle Parkway<br />
+Copyright © 1998, 2017, Oracle and/or its affiliates. 500 Oracle Parkway<br>
Redwood Shores, CA 94065 USA. All rights reserved.</p>
<!-- Body text ends here -->
</body>
--- a/jdk/src/java.base/share/classes/java/util/doc-files/coll-reference.html Wed Aug 23 12:24:55 2017 -0400
+++ b/jdk/src/java.base/share/classes/java/util/doc-files/coll-reference.html Wed Aug 23 10:58:11 2017 -0700
@@ -1,7 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
+<!DOCTYPE html>
<!--
Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -27,10 +24,10 @@
questions.
-->
-<html lang="en-US" xmlns="http://www.w3.org/1999/xhtml" xml:lang=
-"en-US">
+<html lang="en-US">
<head>
<title>Outline of the Collections Framework</title>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<h1>Outline of the Collections Framework</h1>
@@ -48,21 +45,21 @@
<li><a href=
"../Set.html"><strong>Set</strong></a> - The
familiar set abstraction. No duplicate elements permitted. May or
-may not be ordered. Extends the <tt>Collection</tt> interface.</li>
+may not be ordered. Extends the <code>Collection</code> interface.</li>
<li><a href=
"../List.html"><strong>List</strong></a> -
Ordered collection, also known as a <i>sequence</i>. Duplicates are
generally permitted. Allows positional access. Extends the
-<tt>Collection</tt> interface.</li>
+<code>Collection</code> interface.</li>
<li><a href=
"../Queue.html"><strong>Queue</strong></a> - A
collection designed for holding elements before processing. Besides
-basic <tt>Collection</tt> operations, queues provide additional
+basic <code>Collection</code> operations, queues provide additional
insertion, extraction, and inspection operations.</li>
<li><a href=
"../Deque.html"><strong>Deque</strong></a> - A
<em>double ended queue</em>, supporting element insertion and
-removal at both ends. Extends the <tt>Queue</tt> interface.</li>
+removal at both ends. Extends the <code>Queue</code> interface.</li>
<li><a href=
"../Map.html"><strong>Map</strong></a> - A
mapping from keys to values. Each key can map to one value.</li>
@@ -70,62 +67,62 @@
"../SortedSet.html"><strong>SortedSet</strong></a>
- A set whose elements are automatically sorted, either in their
<i>natural ordering</i> (see the <a href=
-"../../lang/Comparable.html"><tt>Comparable</tt></a>
+"../../lang/Comparable.html"><code>Comparable</code></a>
interface) or by a <a href=
-"../Comparator.html"><tt>Comparator</tt></a>
-object provided when a <tt>SortedSet</tt> instance is created.
-Extends the <tt>Set</tt> interface.</li>
+"../Comparator.html"><code>Comparator</code></a>
+object provided when a <code>SortedSet</code> instance is created.
+Extends the <code>Set</code> interface.</li>
<li><a href=
"../SortedMap.html"><strong>SortedMap</strong></a>
- A map whose mappings are automatically sorted by key, either
using the <i>natural ordering</i> of the keys or by a comparator
-provided when a <tt>SortedMap</tt> instance is created. Extends the
-<tt>Map</tt> interface.</li>
+provided when a <code>SortedMap</code> instance is created. Extends the
+<code>Map</code> interface.</li>
<li><a href=
"../NavigableSet.html"><strong>NavigableSet</strong></a>
-- A <tt>SortedSet</tt> extended with navigation methods reporting
-closest matches for given search targets. A <tt>NavigableSet</tt>
+- A <code>SortedSet</code> extended with navigation methods reporting
+closest matches for given search targets. A <code>NavigableSet</code>
may be accessed and traversed in either ascending or descending
order.</li>
<li><a href=
"../NavigableMap.html"><strong>NavigableMap</strong></a>
-- A <tt>SortedMap</tt> extended with navigation methods returning
+- A <code>SortedMap</code> extended with navigation methods returning
the closest matches for given search targets. A
-<tt>NavigableMap</tt> can be accessed and traversed in either
+<code>NavigableMap</code> can be accessed and traversed in either
ascending or descending key order.</li>
<li><a href=
"../concurrent/BlockingQueue.html"><strong>BlockingQueue</strong></a>
-- A <tt>Queue</tt> with operations that wait for the queue to
+- A <code>Queue</code> with operations that wait for the queue to
become nonempty when retrieving an element and that wait for space
to become available in the queue when storing an element. (This
-interface is part of the <tt><a href=
-"../concurrent/package-summary.html">java.util.concurrent</a></tt>
+interface is part of the <code><a href=
+"../concurrent/package-summary.html">java.util.concurrent</a></code>
package.)</li>
<li><a href=
"../concurrent/TransferQueue.html"><strong>TransferQueue</strong></a>
-- A <tt>BlockingQueue</tt> in which producers can wait for
+- A <code>BlockingQueue</code> in which producers can wait for
consumers to receive elements. (This interface is part of the
-<tt><a href=
-"../concurrent/package-summary.html">java.util.concurrent</a></tt>
+<code><a href=
+"../concurrent/package-summary.html">java.util.concurrent</a></code>
package.)</li>
<li><a href=
"../concurrent/BlockingDeque.html"><strong>BlockingDeque</strong></a>
-- A <tt>Deque</tt> with operations that wait for the deque to
+- A <code>Deque</code> with operations that wait for the deque to
become nonempty when retrieving an element and wait for space to
become available in the deque when storing an element. Extends both
-the <tt>Deque</tt> and <tt>BlockingQueue</tt> interfaces. (This
-interface is part of the <tt><a href=
-"../concurrent/package-summary.html">java.util.concurrent</a></tt>
+the <code>Deque</code> and <code>BlockingQueue</code> interfaces. (This
+interface is part of the <code><a href=
+"../concurrent/package-summary.html">java.util.concurrent</a></code>
package.)</li>
<li><a href=
"../concurrent/ConcurrentMap.html"><strong>ConcurrentMap</strong></a>
-- A <tt>Map</tt> with atomic <tt>putIfAbsent</tt>, <tt>remove</tt>,
-and <tt>replace</tt> methods. (This interface is part of the
-<tt>java.util.concurrent</tt> package.)</li>
+- A <code>Map</code> with atomic <code>putIfAbsent</code>, <code>remove</code>,
+and <code>replace</code> methods. (This interface is part of the
+<code>java.util.concurrent</code> package.)</li>
<li><a href=
"../concurrent/ConcurrentNavigableMap.html"><strong>
-ConcurrentNavigableMap</strong></a> - A <tt>ConcurrentMap</tt> that
-is also a <tt>NavigableMap</tt>.</li>
+ConcurrentNavigableMap</strong></a> - A <code>ConcurrentMap</code> that
+is also a <code>NavigableMap</code>.</li>
</ul>
</li>
<li><strong>General-purpose implementations</strong> - The primary
@@ -133,52 +130,52 @@
<ul>
<li><strong><a href=
"../HashSet.html">HashSet</a></strong> - Hash
-table implementation of the <tt>Set</tt> interface. The best
-all-around implementation of the <tt>Set</tt> interface.</li>
+table implementation of the <code>Set</code> interface. The best
+all-around implementation of the <code>Set</code> interface.</li>
<li><a href=
"../TreeSet.html"><strong>TreeSet</strong></a>
-- Red-black tree implementation of the <tt>NavigableSet</tt>
+- Red-black tree implementation of the <code>NavigableSet</code>
interface.</li>
<li><strong><a href=
"../LinkedHashSet.html">LinkedHashSet</a></strong>
-- Hash table and linked list implementation of the <tt>Set</tt>
-interface. An insertion-ordered <tt>Set</tt> implementation that
-runs nearly as fast as <tt>HashSet</tt>.</li>
+- Hash table and linked list implementation of the <code>Set</code>
+interface. An insertion-ordered <code>Set</code> implementation that
+runs nearly as fast as <code>HashSet</code>.</li>
<li><strong><a href=
"../ArrayList.html">ArrayList</a></strong> -
-Resizable array implementation of the <tt>List</tt> interface (an
-unsynchronized <tt>Vector</tt>). The best all-around implementation
-of the <tt>List</tt> interface.</li>
+Resizable array implementation of the <code>List</code> interface (an
+unsynchronized <code>Vector</code>). The best all-around implementation
+of the <code>List</code> interface.</li>
<li><strong><a href=
"../ArrayDeque.html">ArrayDeque</a></strong> -
-Efficient, resizable array implementation of the <tt>Deque</tt>
+Efficient, resizable array implementation of the <code>Deque</code>
interface.</li>
<li><a href=
"../LinkedList.html"><strong>LinkedList</strong></a>
-- Doubly-linked list implementation of the <tt>List</tt> interface.
-Provides better performance than the <tt>ArrayList</tt>
+- Doubly-linked list implementation of the <code>List</code> interface.
+Provides better performance than the <code>ArrayList</code>
implementation if elements are frequently inserted or deleted
-within the list. Also implements the <tt>Deque</tt> interface. When
-accessed through the <tt>Queue</tt> interface, <tt>LinkedList</tt>
+within the list. Also implements the <code>Deque</code> interface. When
+accessed through the <code>Queue</code> interface, <code>LinkedList</code>
acts as a FIFO queue.</li>
<li><strong><a href=
"../PriorityQueue.html">PriorityQueue</a></strong>
- Heap implementation of an unbounded priority queue.</li>
<li><strong><a href=
"../HashMap.html">HashMap</a></strong> - Hash
-table implementation of the <tt>Map</tt> interface (an
-unsynchronized <tt>Hashtable</tt> that supports <tt>null</tt> keys
-and values). The best all-around implementation of the <tt>Map</tt>
+table implementation of the <code>Map</code> interface (an
+unsynchronized <code>Hashtable</code> that supports <code>null</code> keys
+and values). The best all-around implementation of the <code>Map</code>
interface.</li>
<li><a href=
"../TreeMap.html"><strong>TreeMap</strong></a>
-Red-black tree implementation of the <tt>NavigableMap</tt>
+Red-black tree implementation of the <code>NavigableMap</code>
interface.</li>
<li><strong><a href=
"../LinkedHashMap.html">LinkedHashMap</a></strong>
-- Hash table and linked list implementation of the <tt>Map</tt>
-interface. An insertion-ordered <tt>Map</tt> implementation that
-runs nearly as fast as <tt>HashMap</tt>. Also useful for building
+- Hash table and linked list implementation of the <code>Map</code>
+interface. An insertion-ordered <code>Map</code> implementation that
+runs nearly as fast as <code>HashMap</code>. Also useful for building
caches (see <a href=
"../LinkedHashMap.html#removeEldestEntry-java.util.Map.Entry-">
removeEldestEntry(Map.Entry)</a> ).</li>
@@ -192,9 +189,9 @@
"../Collections.html#unmodifiableCollection-java.util.Collection-">
<strong>Collections.unmodifiable<i>Interface</i></strong></a> -
Returns an unmodifiable view of a specified collection that throws
-an <tt>UnsupportedOperationException</tt> if the user attempts to
+an <code>UnsupportedOperationException</code> if the user attempts to
modify it.</li>
-<li><a name="synchWrappers" href=
+<li><a href=
"../Collections.html#synchronizedCollection-java.util.Collection-"
id=
"synchWrappers"><strong>Collections.synchronized<i>Interface</i></strong></a>
@@ -206,7 +203,7 @@
"../Collections.html#checkedCollection-java.util.Collection-java.lang.Class-">
<strong>Collections.checked<i>Interface</i></strong></a> - Returns
a dynamically type-safe view of the specified collection, which
-throws a <tt>ClassCastException</tt> if a client attempts to add an
+throws a <code>ClassCastException</code> if a client attempts to add an
element of the wrong type. The generics mechanism in the language
provides compile-time (static) type checking, but it is possible to
bypass this mechanism. Dynamically type-safe views eliminate this
@@ -219,12 +216,12 @@
<li><strong><a href=
"../Collections.html#newSetFromMap-java.util.Map-">
newSetFromMap(Map)</a></strong> - Creates a general-purpose
-<tt>Set</tt> implementation from a general-purpose <tt>Map</tt>
+<code>Set</code> implementation from a general-purpose <code>Map</code>
implementation.</li>
<li><strong><a href=
"../Collections.html#asLifoQueue-java.util.Deque-">
asLifoQueue(Deque)</a></strong> - Returns a view of a
-<tt>Deque</tt> as a Last In First Out (LIFO) <tt>Queue</tt>.</li>
+<code>Deque</code> as a Last In First Out (LIFO) <code>Queue</code>.</li>
</ul>
</li>
<li><strong>Convenience implementations</strong> - High-performance
@@ -259,12 +256,12 @@
<ul>
<li><a href=
"../Vector.html"><strong>Vector</strong></a> -
-Synchronized resizable array implementation of the <tt>List</tt>
+Synchronized resizable array implementation of the <code>List</code>
interface with additional legacy methods.</li>
<li><a href=
"../Hashtable.html"><strong>Hashtable</strong></a>
-- Synchronized hash table implementation of the <tt>Map</tt>
-interface that does not allow <tt>null</tt> keys or values, plus
+- Synchronized hash table implementation of the <code>Map</code>
+interface that does not allow <code>null</code> keys or values, plus
additional legacy methods.</li>
</ul>
</li>
@@ -272,18 +269,18 @@
<ul>
<li><strong><a href=
"../WeakHashMap.html">WeakHashMap</a></strong>
-- An implementation of the <tt>Map</tt> interface that stores only
+- An implementation of the <code>Map</code> interface that stores only
<a href="../../lang/ref/WeakReference.html"><i>weak
references</i></a> to its keys. Storing only weak references
enables key-value pairs to be garbage collected when the key is no
-longer referenced outside of the <tt>WeakHashMap</tt>. This class
+longer referenced outside of the <code>WeakHashMap</code>. This class
is the easiest way to use the power of weak references. It is
useful for implementing registry-like data structures, where the
utility of an entry vanishes when its key is no longer reachable by
any thread.</li>
<li><strong><a href=
"../IdentityHashMap.html">IdentityHashMap</a></strong>
-- Identity-based <tt>Map</tt> implementation based on a hash table.
+- Identity-based <code>Map</code> implementation based on a hash table.
This class is useful for topology-preserving object graph
transformations (such as serialization or deep copying). To perform
these transformations, you must maintain an identity-based "node
@@ -292,43 +289,43 @@
object-to-meta-information mappings in dynamic debuggers and
similar systems. Finally, identity-based maps are useful in
preventing "spoof attacks" resulting from intentionally perverse
-equals methods. (<tt>IdentityHashMap</tt> never invokes the equals
+equals methods. (<code>IdentityHashMap</code> never invokes the equals
method on its keys.) An added benefit of this implementation is
that it is fast.</li>
<li><strong><a href=
"../concurrent/CopyOnWriteArrayList.html">CopyOnWriteArrayList</a></strong>
-- A <tt>List</tt> implementation backed by an copy-on-write array.
-All mutative operations (such as <tt>add</tt>, <tt>set</tt>, and
-<tt>remove</tt>) are implemented by making a new copy of the array.
+- A <code>List</code> implementation backed by an copy-on-write array.
+All mutative operations (such as <code>add</code>, <code>set</code>, and
+<code>remove</code>) are implemented by making a new copy of the array.
No synchronization is necessary, even during iteration, and
iterators are guaranteed never to throw
-<tt>ConcurrentModificationException</tt>. This implementation is
+<code>ConcurrentModificationException</code>. This implementation is
well-suited to maintaining event-handler lists (where change is
infrequent, and traversal is frequent and potentially
time-consuming).</li>
<li><strong><a href=
"../concurrent/CopyOnWriteArraySet.html">CopyOnWriteArraySet</a></strong>
-- A <tt>Set</tt> implementation backed by a copy-on-write array.
-This implementation is similar to <tt>CopyOnWriteArrayList</tt>.
-Unlike most <tt>Set</tt> implementations, the <tt>add</tt>,
-<tt>remove</tt>, and <tt>contains</tt> methods require time
+- A <code>Set</code> implementation backed by a copy-on-write array.
+This implementation is similar to <code>CopyOnWriteArrayList</code>.
+Unlike most <code>Set</code> implementations, the <code>add</code>,
+<code>remove</code>, and <code>contains</code> methods require time
proportional to the size of the set. This implementation is well
suited to maintaining event-handler lists that must prevent
duplicates.</li>
<li><strong><a href=
"../EnumSet.html">EnumSet</a></strong> - A
-high-performance <tt>Set</tt> implementation backed by a bit
-vector. All elements of each <tt>EnumSet</tt> instance must be
+high-performance <code>Set</code> implementation backed by a bit
+vector. All elements of each <code>EnumSet</code> instance must be
elements of a single enum type.</li>
<li><strong><a href=
"../EnumMap.html">EnumMap</a></strong> - A
-high-performance <tt>Map</tt> implementation backed by an array.
-All keys in each <tt>EnumMap</tt> instance must be elements of a
+high-performance <code>Map</code> implementation backed by an array.
+All keys in each <code>EnumMap</code> instance must be elements of a
single enum type.</li>
</ul>
</li>
<li><strong>Concurrent implementations</strong> - These
-implementations are part of <tt>java.util.concurrent</tt>.
+implementations are part of <code>java.util.concurrent</code>.
<ul>
<li><strong><a href=
"../concurrent/ConcurrentLinkedQueue.html">ConcurrentLinkedQueue</a></strong>
@@ -352,7 +349,7 @@
<li><a href=
"../concurrent/SynchronousQueue.html"><strong>SynchronousQueue</strong></a>
- A simple rendezvous mechanism that uses the
-<tt>BlockingQueue</tt> interface.</li>
+<code>BlockingQueue</code> interface.</li>
<li><a href=
"../concurrent/LinkedBlockingDeque.html"><strong>
LinkedBlockingDeque</strong></a> - An optionally bounded FIFO
@@ -360,25 +357,25 @@
<li><a href=
"../concurrent/LinkedTransferQueue.html"><strong>
LinkedTransferQueue</strong></a> - An unbounded
-<tt>TransferQueue</tt> backed by linked nodes.</li>
+<code>TransferQueue</code> backed by linked nodes.</li>
<li><a href=
"../concurrent/ConcurrentHashMap.html"><strong>ConcurrentHashMap</strong></a>
-- A highly concurrent, high-performance <tt>ConcurrentMap</tt>
+- A highly concurrent, high-performance <code>ConcurrentMap</code>
implementation based on a hash table. This implementation never
blocks when performing retrievals and enables the client to select
the concurrency level for updates. It is intended as a drop-in
-replacement for <tt><a href=
-"../Hashtable.html">Hashtable</a></tt>. In
-addition to implementing <tt>ConcurrentMap</tt>, it supports all of
-the legacy methods of <tt>Hashtable</tt>.</li>
+replacement for <code><a href=
+"../Hashtable.html">Hashtable</a></code>. In
+addition to implementing <code>ConcurrentMap</code>, it supports all of
+the legacy methods of <code>Hashtable</code>.</li>
<li><a href=
"../concurrent/ConcurrentSkipListSet.html"><strong>
ConcurrentSkipListSet</strong></a> - Skips list implementation of
-the <tt>NavigableSet</tt> interface.</li>
+the <code>NavigableSet</code> interface.</li>
<li><a href=
"../concurrent/ConcurrentSkipListMap.html"><strong>
ConcurrentSkipListMap</strong></a> - Skips list implementation of
-the <tt>ConcurrentNavigableMap</tt> interface.</li>
+the <code>ConcurrentNavigableMap</code> interface.</li>
</ul>
</li>
<li><strong>Abstract implementations</strong> - Skeletal
@@ -387,25 +384,25 @@
<ul>
<li><a href=
"../AbstractCollection.html"><strong>AbstractCollection</strong></a>
-- Skeletal <tt>Collection</tt> implementation that is neither a set
+- Skeletal <code>Collection</code> implementation that is neither a set
nor a list (such as a "bag" or multiset).</li>
<li><a href=
"../AbstractSet.html"><strong>AbstractSet</strong></a>
-- Skeletal <tt>Set</tt> implementation.</li>
+- Skeletal <code>Set</code> implementation.</li>
<li><a href=
"../AbstractList.html"><strong>AbstractList</strong></a>
-- Skeletal <tt>List</tt> implementation backed by a random access
+- Skeletal <code>List</code> implementation backed by a random access
data store (such as an array).</li>
<li><a href=
"../AbstractSequentialList.html"><strong>AbstractSequentialList</strong></a>
-- Skeletal <tt>List</tt> implementation backed by a sequential
+- Skeletal <code>List</code> implementation backed by a sequential
access data store (such as a linked list).</li>
<li><a href=
"../AbstractQueue.html"><strong>AbstractQueue</strong></a>
-- Skeletal <tt>Queue</tt> implementation.</li>
+- Skeletal <code>Queue</code> implementation.</li>
<li><a href=
"../AbstractMap.html"><strong>AbstractMap</strong></a>
-- Skeletal <tt>Map</tt> implementation.</li>
+- Skeletal <code>Map</code> implementation.</li>
</ul>
</li>
<li><strong>Algorithms</strong> - The <a href=
@@ -491,13 +488,13 @@
<ul>
<li><a href=
"../Iterator.html"><strong>Iterator</strong></a>
-- In addition to the functionality of the <tt>Enumeration</tt>
+- In addition to the functionality of the <code>Enumeration</code>
interface, enables the user to remove elements from the backing
collection with well-defined, useful semantics.</li>
<li><a href=
"../ListIterator.html"><strong>ListIterator</strong></a>
- Iterator for use with lists. In addition to the functionality of
-the <tt>Iterator</tt> interface, supports bidirectional iteration,
+the <code>Iterator</code> interface, supports bidirectional iteration,
element replacement, element insertion, and index retrieval.</li>
</ul>
</li>
@@ -514,7 +511,7 @@
- Represents an order relation, which can be used to sort a list or
maintain order in a sorted set or map. Can override a type's
natural ordering or order objects of a type that does not implement
-the <tt>Comparable</tt> interface.</li>
+the <code>Comparable</code> interface.</li>
</ul>
</li>
<li><strong>Runtime exceptions</strong>
@@ -536,7 +533,7 @@
<ul>
<li><strong><a href=
"../RandomAccess.html">RandomAccess</a></strong>
-- Marker interface that lets <tt>List</tt> implementations indicate
+- Marker interface that lets <code>List</code> implementations indicate
that they support fast (generally constant time) random access.
This lets generic algorithms change their behavior to provide good
performance when applied to either random or sequential access
@@ -550,14 +547,14 @@
<li><a href=
"../Arrays.html"><strong>Arrays</strong></a> -
Contains static methods to sort, search, compare, hash, copy,
-resize, convert to <tt>String</tt>, and fill arrays of primitives
+resize, convert to <code>String</code>, and fill arrays of primitives
and objects.</li>
</ul>
</li>
</ul>
-<hr />
+<hr>
<p style="font-size:smaller">
-Copyright © 1998, 2017, Oracle and/or its affiliates. 500 Oracle Parkway<br />
+Copyright © 1998, 2017, Oracle and/or its affiliates. 500 Oracle Parkway<br>
Redwood Shores, CA 94065 USA. All rights reserved.</p>
<!-- Body text ends here -->
</body>
--- a/jdk/src/java.base/share/classes/java/util/regex/Pattern.java Wed Aug 23 12:24:55 2017 -0400
+++ b/jdk/src/java.base/share/classes/java/util/regex/Pattern.java Wed Aug 23 10:58:11 2017 -0700
@@ -81,309 +81,296 @@
*
* <table class="borderless">
* <caption style="display:none">Regular expression constructs, and what they match</caption>
- * <thead>
- * <tr style="text-align:left">
- * <th style="text-align:left" id="construct">Construct</th>
- * <th style="text-align:left" id="matches">Matches</th>
+ * <thead style="text-align:left">
+ * <tr>
+ * <th id="construct">Construct</th>
+ * <th id="matches">Matches</th>
* </tr>
* </thead>
- * <tbody>
+ * <tbody style="text-align:left">
*
- * <tr><th> </th></tr>
- * <tr style="text-align:left"><th colspan="2" id="characters">Characters</th></tr>
+ * <tr><th colspan="2" style="padding-top:20px" id="characters">Characters</th></tr>
*
- * <tr><td style="vertical-align:top" headers="construct characters"><i>x</i></td>
- * <td headers="matches">The character <i>x</i></td></tr>
- * <tr><td style="vertical-align:top" headers="construct characters">{@code \\}</td>
- * <td headers="matches">The backslash character</td></tr>
- * <tr><td style="vertical-align:top" headers="construct characters">{@code \0}<i>n</i></td>
- * <td headers="matches">The character with octal value {@code 0}<i>n</i>
+ * <tr><th style="vertical-align:top; font-weight: normal" id="x"><i>x</i></th>
+ * <td headers="matches characters x">The character <i>x</i></td></tr>
+ * <tr><th style="vertical-align:top; font-weight: normal" id="backslash">{@code \\}</th>
+ * <td headers="matches characters backslash">The backslash character</td></tr>
+ * <tr><th style="vertical-align:top; font-weight: normal" id="octal_n">{@code \0}<i>n</i></th>
+ * <td headers="matches characters octal_n">The character with octal value {@code 0}<i>n</i>
* (0 {@code <=} <i>n</i> {@code <=} 7)</td></tr>
- * <tr><td style="vertical-align:top" headers="construct characters">{@code \0}<i>nn</i></td>
- * <td headers="matches">The character with octal value {@code 0}<i>nn</i>
+ * <tr><th style="vertical-align:top; font-weight: normal" id="octal_nn">{@code \0}<i>nn</i></th>
+ * <td headers="matches characters octal_nn">The character with octal value {@code 0}<i>nn</i>
* (0 {@code <=} <i>n</i> {@code <=} 7)</td></tr>
- * <tr><td style="vertical-align:top" headers="construct characters">{@code \0}<i>mnn</i></td>
- * <td headers="matches">The character with octal value {@code 0}<i>mnn</i>
+ * <tr><th style="vertical-align:top; font-weight: normal" id="octal_nnn">{@code \0}<i>mnn</i></th>
+ * <td headers="matches characters octal_nnn">The character with octal value {@code 0}<i>mnn</i>
* (0 {@code <=} <i>m</i> {@code <=} 3,
* 0 {@code <=} <i>n</i> {@code <=} 7)</td></tr>
- * <tr><td style="vertical-align:top" headers="construct characters">{@code \x}<i>hh</i></td>
- * <td headers="matches">The character with hexadecimal value {@code 0x}<i>hh</i></td></tr>
- * <tr><td style="vertical-align:top" headers="construct characters"><code>\u</code><i>hhhh</i></td>
- * <td headers="matches">The character with hexadecimal value {@code 0x}<i>hhhh</i></td></tr>
- * <tr><td style="vertical-align:top" headers="construct characters"><code>\x</code><i>{h...h}</i></td>
- * <td headers="matches">The character with hexadecimal value {@code 0x}<i>h...h</i>
+ * <tr><th style="vertical-align:top; font-weight: normal" id="hex_hh">{@code \x}<i>hh</i></th>
+ * <td headers="matches characters hex_hh">The character with hexadecimal value {@code 0x}<i>hh</i></td></tr>
+ * <tr><th style="vertical-align:top; font-weight: normal" id="hex_hhhh"><code>\u</code><i>hhhh</i></th>
+ * <td headers="matches characters hex_hhhh">The character with hexadecimal value {@code 0x}<i>hhhh</i></td></tr>
+ * <tr><th style="vertical-align:top; font-weight: normal" id="hex_h_h"><code>\x</code><i>{h...h}</i></th>
+ * <td headers="matches characters hex_h_h">The character with hexadecimal value {@code 0x}<i>h...h</i>
* ({@link java.lang.Character#MIN_CODE_POINT Character.MIN_CODE_POINT}
* <= {@code 0x}<i>h...h</i> <=
* {@link java.lang.Character#MAX_CODE_POINT Character.MAX_CODE_POINT})</td></tr>
- * <tr><td style="vertical-align:top" headers="construct characters"><code>\N{</code><i>name</i><code>}</code></td>
- * <td headers="matches">The character with Unicode character name <i>'name'</i></td></tr>
- * <tr><td style="vertical-align:top" headers="matches">{@code \t}</td>
- * <td headers="matches">The tab character (<code>'\u0009'</code>)</td></tr>
- * <tr><td style="vertical-align:top" headers="construct characters">{@code \n}</td>
- * <td headers="matches">The newline (line feed) character (<code>'\u000A'</code>)</td></tr>
- * <tr><td style="vertical-align:top" headers="construct characters">{@code \r}</td>
- * <td headers="matches">The carriage-return character (<code>'\u000D'</code>)</td></tr>
- * <tr><td style="vertical-align:top" headers="construct characters">{@code \f}</td>
- * <td headers="matches">The form-feed character (<code>'\u000C'</code>)</td></tr>
- * <tr><td style="vertical-align:top" headers="construct characters">{@code \a}</td>
- * <td headers="matches">The alert (bell) character (<code>'\u0007'</code>)</td></tr>
- * <tr><td style="vertical-align:top" headers="construct characters">{@code \e}</td>
- * <td headers="matches">The escape character (<code>'\u001B'</code>)</td></tr>
- * <tr><td style="vertical-align:top" headers="construct characters">{@code \c}<i>x</i></td>
- * <td headers="matches">The control character corresponding to <i>x</i></td></tr>
+ * <tr><th style="vertical-align:top; font-weight: normal" id="unicode_name"><code>\N{</code><i>name</i><code>}</code></th>
+ * <td headers="matches characters unicode_name">The character with Unicode character name <i>'name'</i></td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="tab">{@code \t}</th>
+ * <td headers="matches characters tab">The tab character (<code>'\u0009'</code>)</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="newline">{@code \n}</th>
+ * <td headers="matches characters newline">The newline (line feed) character (<code>'\u000A'</code>)</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="return">{@code \r}</th>
+ * <td headers="matches characters return">The carriage-return character (<code>'\u000D'</code>)</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="form_feed">{@code \f}</th>
+ * <td headers="matches characters form_feed">The form-feed character (<code>'\u000C'</code>)</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="bell">{@code \a}</th>
+ * <td headers="matches characters bell">The alert (bell) character (<code>'\u0007'</code>)</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="escape">{@code \e}</th>
+ * <td headers="matches characters escape">The escape character (<code>'\u001B'</code>)</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="ctrl_x">{@code \c}<i>x</i></th>
+ * <td headers="matches characters ctrl_x">The control character corresponding to <i>x</i></td></tr>
*
- * <tr><th> </th></tr>
- * <tr style="text-align:left"><th colspan="2" id="classes">Character classes</th></tr>
+ * <tr><th colspan="2" style="padding-top:20px" id="classes">Character classes</th></tr>
*
- * <tr><td style="vertical-align:top" headers="construct classes">{@code [abc]}</td>
- * <td headers="matches">{@code a}, {@code b}, or {@code c} (simple class)</td></tr>
- * <tr><td style="vertical-align:top" headers="construct classes">{@code [^abc]}</td>
- * <td headers="matches">Any character except {@code a}, {@code b}, or {@code c} (negation)</td></tr>
- * <tr><td style="vertical-align:top" headers="construct classes">{@code [a-zA-Z]}</td>
- * <td headers="matches">{@code a} through {@code z}
+ * <tr><th style="vertical-align:top; font-weight:normal" id="simple">{@code [abc]}</th>
+ * <td headers="matches classes simple">{@code a}, {@code b}, or {@code c} (simple class)</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="negation">{@code [^abc]}</th>
+ * <td headers="matches classes negation">Any character except {@code a}, {@code b}, or {@code c} (negation)</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="range">{@code [a-zA-Z]}</th>
+ * <td headers="matches classes range">{@code a} through {@code z}
* or {@code A} through {@code Z}, inclusive (range)</td></tr>
- * <tr><td style="vertical-align:top" headers="construct classes">{@code [a-d[m-p]]}</td>
- * <td headers="matches">{@code a} through {@code d},
+ * <tr><th style="vertical-align:top; font-weight:normal" id="union">{@code [a-d[m-p]]}</th>
+ * <td headers="matches classes union">{@code a} through {@code d},
* or {@code m} through {@code p}: {@code [a-dm-p]} (union)</td></tr>
- * <tr><td style="vertical-align:top" headers="construct classes">{@code [a-z&&[def]]}</td>
- * <td headers="matches">{@code d}, {@code e}, or {@code f} (intersection)</tr>
- * <tr><td style="vertical-align:top" headers="construct classes">{@code [a-z&&[^bc]]}</td>
- * <td headers="matches">{@code a} through {@code z},
+ * <tr><th style="vertical-align:top; font-weight:normal" id="intersection">{@code [a-z&&[def]]}</th>
+ * <td headers="matches classes intersection">{@code d}, {@code e}, or {@code f} (intersection)</tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="subtraction1">{@code [a-z&&[^bc]]}</th>
+ * <td headers="matches classes subtraction1">{@code a} through {@code z},
* except for {@code b} and {@code c}: {@code [ad-z]} (subtraction)</td></tr>
- * <tr><td style="vertical-align:top" headers="construct classes">{@code [a-z&&[^m-p]]}</td>
- * <td headers="matches">{@code a} through {@code z},
+ * <tr><th style="vertical-align:top; font-weight:normal" id="subtraction2">{@code [a-z&&[^m-p]]}</th>
+ * <td headers="matches classes subtraction2">{@code a} through {@code z},
* and not {@code m} through {@code p}: {@code [a-lq-z]}(subtraction)</td></tr>
- * <tr><th> </th></tr>
*
- * <tr style="text-align:left"><th colspan="2" id="predef">Predefined character classes</th></tr>
+ * <tr><th colspan="2" style="padding-top:20px" id="predef">Predefined character classes</th></tr>
*
- * <tr><td style="vertical-align:top" headers="construct predef">{@code .}</td>
- * <td headers="matches">Any character (may or may not match <a href="#lt">line terminators</a>)</td></tr>
- * <tr><td style="vertical-align:top" headers="construct predef">{@code \d}</td>
- * <td headers="matches">A digit: {@code [0-9]}</td></tr>
- * <tr><td style="vertical-align:top" headers="construct predef">{@code \D}</td>
- * <td headers="matches">A non-digit: {@code [^0-9]}</td></tr>
- * <tr><td style="vertical-align:top" headers="construct predef">{@code \h}</td>
- * <td headers="matches">A horizontal whitespace character:
+ * <tr><th style="vertical-align:top; font-weight:normal" id="any">{@code .}</th>
+ * <td headers="matches predef any">Any character (may or may not match <a href="#lt">line terminators</a>)</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="digit">{@code \d}</th>
+ * <td headers="matches predef digit">A digit: {@code [0-9]}</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="non_digit">{@code \D}</th>
+ * <td headers="matches predef non_digit">A non-digit: {@code [^0-9]}</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="horiz_white">{@code \h}</th>
+ * <td headers="matches predef horiz_white">A horizontal whitespace character:
* <code>[ \t\xA0\u1680\u180e\u2000-\u200a\u202f\u205f\u3000]</code></td></tr>
- * <tr><td style="vertical-align:top" headers="construct predef">{@code \H}</td>
- * <td headers="matches">A non-horizontal whitespace character: {@code [^\h]}</td></tr>
- * <tr><td style="vertical-align:top" headers="construct predef">{@code \s}</td>
- * <td headers="matches">A whitespace character: {@code [ \t\n\x0B\f\r]}</td></tr>
- * <tr><td style="vertical-align:top" headers="construct predef">{@code \S}</td>
- * <td headers="matches">A non-whitespace character: {@code [^\s]}</td></tr>
- * <tr><td style="vertical-align:top" headers="construct predef">{@code \v}</td>
- * <td headers="matches">A vertical whitespace character: <code>[\n\x0B\f\r\x85\u2028\u2029]</code>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="non_horiz_white">{@code \H}</th>
+ * <td headers="matches predef non_horiz_white">A non-horizontal whitespace character: {@code [^\h]}</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="white">{@code \s}</th>
+ * <td headers="matches predef white">A whitespace character: {@code [ \t\n\x0B\f\r]}</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="non_white">{@code \S}</th>
+ * <td headers="matches predef non_white">A non-whitespace character: {@code [^\s]}</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="vert_white">{@code \v}</th>
+ * <td headers="matches predef vert_white">A vertical whitespace character: <code>[\n\x0B\f\r\x85\u2028\u2029]</code>
* </td></tr>
- * <tr><td style="vertical-align:top" headers="construct predef">{@code \V}</td>
- * <td headers="matches">A non-vertical whitespace character: {@code [^\v]}</td></tr>
- * <tr><td style="vertical-align:top" headers="construct predef">{@code \w}</td>
- * <td headers="matches">A word character: {@code [a-zA-Z_0-9]}</td></tr>
- * <tr><td style="vertical-align:top" headers="construct predef">{@code \W}</td>
- * <td headers="matches">A non-word character: {@code [^\w]}</td></tr>
- * <tr><th> </th></tr>
- * <tr style="text-align:left"><th colspan="2" id="posix"><b>POSIX character classes (US-ASCII only)</b></th></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="non_vert_white">{@code \V}</th>
+ * <td headers="matches predef non_vert_white">A non-vertical whitespace character: {@code [^\v]}</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="word">{@code \w}</th>
+ * <td headers="matches predef word">A word character: {@code [a-zA-Z_0-9]}</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="non_word">{@code \W}</th>
+ * <td headers="matches predef non_word">A non-word character: {@code [^\w]}</td></tr>
+ *
+ * <tr><th colspan="2" style="padding-top:20px" id="posix"><b>POSIX character classes (US-ASCII only)</b></th></tr>
*
- * <tr><td style="vertical-align:top" headers="construct posix">{@code \p{Lower}}</td>
- * <td headers="matches">A lower-case alphabetic character: {@code [a-z]}</td></tr>
- * <tr><td style="vertical-align:top" headers="construct posix">{@code \p{Upper}}</td>
- * <td headers="matches">An upper-case alphabetic character:{@code [A-Z]}</td></tr>
- * <tr><td style="vertical-align:top" headers="construct posix">{@code \p{ASCII}}</td>
- * <td headers="matches">All ASCII:{@code [\x00-\x7F]}</td></tr>
- * <tr><td style="vertical-align:top" headers="construct posix">{@code \p{Alpha}}</td>
- * <td headers="matches">An alphabetic character:{@code [\p{Lower}\p{Upper}]}</td></tr>
- * <tr><td style="vertical-align:top" headers="construct posix">{@code \p{Digit}}</td>
- * <td headers="matches">A decimal digit: {@code [0-9]}</td></tr>
- * <tr><td style="vertical-align:top" headers="construct posix">{@code \p{Alnum}}</td>
- * <td headers="matches">An alphanumeric character:{@code [\p{Alpha}\p{Digit}]}</td></tr>
- * <tr><td style="vertical-align:top" headers="construct posix">{@code \p{Punct}}</td>
- * <td headers="matches">Punctuation: One of {@code !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~}</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="Lower">{@code \p{Lower}}</th>
+ * <td headers="matches posix Lower">A lower-case alphabetic character: {@code [a-z]}</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="Upper">{@code \p{Upper}}</th>
+ * <td headers="matches posix Upper">An upper-case alphabetic character:{@code [A-Z]}</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="ASCII">{@code \p{ASCII}}</th>
+ * <td headers="matches posix ASCII">All ASCII:{@code [\x00-\x7F]}</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="Alpha">{@code \p{Alpha}}</th>
+ * <td headers="matches posix Alpha">An alphabetic character:{@code [\p{Lower}\p{Upper}]}</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="Digit">{@code \p{Digit}}</th>
+ * <td headers="matches posix Digit">A decimal digit: {@code [0-9]}</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="Alnum">{@code \p{Alnum}}</th>
+ * <td headers="matches posix Alnum">An alphanumeric character:{@code [\p{Alpha}\p{Digit}]}</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="Punct">{@code \p{Punct}}</th>
+ * <td headers="matches posix Punct">Punctuation: One of {@code !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~}</td></tr>
* <!-- {@code [\!"#\$%&'\(\)\*\+,\-\./:;\<=\>\?@\[\\\]\^_`\{\|\}~]}
* {@code [\X21-\X2F\X31-\X40\X5B-\X60\X7B-\X7E]} -->
- * <tr><td style="vertical-align:top" headers="construct posix">{@code \p{Graph}}</td>
- * <td headers="matches">A visible character: {@code [\p{Alnum}\p{Punct}]}</td></tr>
- * <tr><td style="vertical-align:top" headers="construct posix">{@code \p{Print}}</td>
- * <td headers="matches">A printable character: {@code [\p{Graph}\x20]}</td></tr>
- * <tr><td style="vertical-align:top" headers="construct posix">{@code \p{Blank}}</td>
- * <td headers="matches">A space or a tab: {@code [ \t]}</td></tr>
- * <tr><td style="vertical-align:top" headers="construct posix">{@code \p{Cntrl}}</td>
- * <td headers="matches">A control character: {@code [\x00-\x1F\x7F]}</td></tr>
- * <tr><td style="vertical-align:top" headers="construct posix">{@code \p{XDigit}}</td>
- * <td headers="matches">A hexadecimal digit: {@code [0-9a-fA-F]}</td></tr>
- * <tr><td style="vertical-align:top" headers="construct posix">{@code \p{Space}}</td>
- * <td headers="matches">A whitespace character: {@code [ \t\n\x0B\f\r]}</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="Graph">{@code \p{Graph}}</th>
+ * <td headers="matches posix Graph">A visible character: {@code [\p{Alnum}\p{Punct}]}</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="Print">{@code \p{Print}}</th>
+ * <td headers="matches posix Print">A printable character: {@code [\p{Graph}\x20]}</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="Blank">{@code \p{Blank}}</th>
+ * <td headers="matches posix Blank">A space or a tab: {@code [ \t]}</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="Cntrl">{@code \p{Cntrl}}</th>
+ * <td headers="matches posix Cntrl">A control character: {@code [\x00-\x1F\x7F]}</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="XDigit">{@code \p{XDigit}}</th>
+ * <td headers="matches posix XDigit">A hexadecimal digit: {@code [0-9a-fA-F]}</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="Space">{@code \p{Space}}</th>
+ * <td headers="matches posix Space">A whitespace character: {@code [ \t\n\x0B\f\r]}</td></tr>
*
- * <tr><th> </th></tr>
- * <tr style="text-align:left"><th colspan="2">java.lang.Character classes (simple <a href="#jcc">java character type</a>)</th></tr>
+ * <tr><th colspan="2" style="padding-top:20px" id="java">java.lang.Character classes (simple <a href="#jcc">java character type</a>)</th></tr>
*
- * <tr><td style="vertical-align:top">{@code \p{javaLowerCase}}</td>
- * <td>Equivalent to java.lang.Character.isLowerCase()</td></tr>
- * <tr><td style="vertical-align:top">{@code \p{javaUpperCase}}</td>
- * <td>Equivalent to java.lang.Character.isUpperCase()</td></tr>
- * <tr><td style="vertical-align:top">{@code \p{javaWhitespace}}</td>
- * <td>Equivalent to java.lang.Character.isWhitespace()</td></tr>
- * <tr><td style="vertical-align:top">{@code \p{javaMirrored}}</td>
- * <td>Equivalent to java.lang.Character.isMirrored()</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="javaLowerCase">{@code \p{javaLowerCase}}</th>
+ * <td headers="matches java javaLowerCase">Equivalent to java.lang.Character.isLowerCase()</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="javaUpperCase">{@code \p{javaUpperCase}}</th>
+ * <td headers="matches java javaUpperCase">Equivalent to java.lang.Character.isUpperCase()</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="javaWhitespace">{@code \p{javaWhitespace}}</th>
+ * <td headers="matches java javaWhitespace">Equivalent to java.lang.Character.isWhitespace()</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="javaMirrored">{@code \p{javaMirrored}}</th>
+ * <td headers="matches java javaMirrored">Equivalent to java.lang.Character.isMirrored()</td></tr>
+ *
+ * <tr><th colspan="2" style="padding-top:20px" id="unicode">Classes for Unicode scripts, blocks, categories and binary properties</th></tr>
*
- * <tr><th> </th></tr>
- * <tr style="text-align:left"><th colspan="2" id="unicode">Classes for Unicode scripts, blocks, categories and binary properties</th></tr>
- * <tr><td style="vertical-align:top" headers="construct unicode">{@code \p{IsLatin}}</td>
- * <td headers="matches">A Latin script character (<a href="#usc">script</a>)</td></tr>
- * <tr><td style="vertical-align:top" headers="construct unicode">{@code \p{InGreek}}</td>
- * <td headers="matches">A character in the Greek block (<a href="#ubc">block</a>)</td></tr>
- * <tr><td style="vertical-align:top" headers="construct unicode">{@code \p{Lu}}</td>
- * <td headers="matches">An uppercase letter (<a href="#ucc">category</a>)</td></tr>
- * <tr><td style="vertical-align:top" headers="construct unicode">{@code \p{IsAlphabetic}}</td>
- * <td headers="matches">An alphabetic character (<a href="#ubpc">binary property</a>)</td></tr>
- * <tr><td style="vertical-align:top" headers="construct unicode">{@code \p{Sc}}</td>
- * <td headers="matches">A currency symbol</td></tr>
- * <tr><td style="vertical-align:top" headers="construct unicode">{@code \P{InGreek}}</td>
- * <td headers="matches">Any character except one in the Greek block (negation)</td></tr>
- * <tr><td style="vertical-align:top" headers="construct unicode">{@code [\p{L}&&[^\p{Lu}]]}</td>
- * <td headers="matches">Any letter except an uppercase letter (subtraction)</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="IsLatin">{@code \p{IsLatin}}</th>
+ * <td headers="matches unicode IsLatin">A Latin script character (<a href="#usc">script</a>)</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="InGreek">{@code \p{InGreek}}</th>
+ * <td headers="matches unicode InGreek">A character in the Greek block (<a href="#ubc">block</a>)</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="Lu">{@code \p{Lu}}</th>
+ * <td headers="matches unicode Lu">An uppercase letter (<a href="#ucc">category</a>)</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="IsAlphabetic">{@code \p{IsAlphabetic}}</th>
+ * <td headers="matches unicode IsAlphabetic">An alphabetic character (<a href="#ubpc">binary property</a>)</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="Sc">{@code \p{Sc}}</th>
+ * <td headers="matches unicode Sc">A currency symbol</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="not_InGreek">{@code \P{InGreek}}</th>
+ * <td headers="matches unicode not_InGreek">Any character except one in the Greek block (negation)</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="not_uppercase">{@code [\p{L}&&[^\p{Lu}]]}</th>
+ * <td headers="matches unicode not_uppercase">Any letter except an uppercase letter (subtraction)</td></tr>
*
- * <tr><th> </th></tr>
- * <tr style="text-align:left"><th colspan="2" id="bounds">Boundary matchers</th></tr>
+ * <tr><th colspan="2" style="padding-top:20px" id="bounds">Boundary matchers</th></tr>
*
- * <tr><td style="vertical-align:top" headers="construct bounds">{@code ^}</td>
- * <td headers="matches">The beginning of a line</td></tr>
- * <tr><td style="vertical-align:top" headers="construct bounds">{@code $}</td>
- * <td headers="matches">The end of a line</td></tr>
- * <tr><td style="vertical-align:top" headers="construct bounds">{@code \b}</td>
- * <td headers="matches">A word boundary</td></tr>
- * <tr><td style="vertical-align:top" headers="construct bounds">{@code \b{g}}</td>
- * <td headers="matches">A Unicode extended grapheme cluster boundary</td></tr>
- * <tr><td style="vertical-align:top" headers="construct bounds">{@code \B}</td>
- * <td headers="matches">A non-word boundary</td></tr>
- * <tr><td style="vertical-align:top" headers="construct bounds">{@code \A}</td>
- * <td headers="matches">The beginning of the input</td></tr>
- * <tr><td style="vertical-align:top" headers="construct bounds">{@code \G}</td>
- * <td headers="matches">The end of the previous match</td></tr>
- * <tr><td style="vertical-align:top" headers="construct bounds">{@code \Z}</td>
- * <td headers="matches">The end of the input but for the final
+ * <tr><th style="vertical-align:top; font-weight:normal" id="begin_line">{@code ^}</th>
+ * <td headers="matches bounds begin_line">The beginning of a line</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="end_line">{@code $}</th>
+ * <td headers="matches bounds end_line">The end of a line</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="word_boundary">{@code \b}</th>
+ * <td headers="matches bounds word_boundary">A word boundary</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="grapheme_cluster_boundary">{@code \b{g}}</th>
+ * <td headers="matches bounds grapheme_cluster_boundary">A Unicode extended grapheme cluster boundary</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="non_word_boundary">{@code \B}</th>
+ * <td headers="matches bounds non_word_boundary">A non-word boundary</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="begin_input">{@code \A}</th>
+ * <td headers="matches bounds begin_input">The beginning of the input</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="end_prev_match">{@code \G}</th>
+ * <td headers="matches bounds end_prev_match">The end of the previous match</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="end_input_except_term">{@code \Z}</th>
+ * <td headers="matches bounds end_input_except_term">The end of the input but for the final
* <a href="#lt">terminator</a>, if any</td></tr>
- * <tr><td style="vertical-align:top" headers="construct bounds">{@code \z}</td>
- * <td headers="matches">The end of the input</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="end_input">{@code \z}</th>
+ * <td headers="matches bounds end_input">The end of the input</td></tr>
*
- * <tr><th> </th></tr>
- * <tr style="text-align:left"><th colspan="2" id="lineending">Linebreak matcher</th></tr>
- * <tr><td style="vertical-align:top" headers="construct lineending">{@code \R}</td>
- * <td headers="matches">Any Unicode linebreak sequence, is equivalent to
+ * <tr><th colspan="2" style="padding-top:20px" id="linebreak">Linebreak matcher</th></tr>
+ *
+ * <tr><th style="vertical-align:top; font-weight:normal" id="any_unicode_linebreak">{@code \R}</th>
+ * <td headers="matches linebreak any_unicode_linebreak">Any Unicode linebreak sequence, is equivalent to
* <code>\u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029]
* </code></td></tr>
*
- * <tr><th> </th></tr>
- * <tr style="text-align:left"><th colspan="2" id="grapheme">Unicode Extended Grapheme matcher</th></tr>
- * <tr><td style="vertical-align:top" headers="construct grapheme">{@code \X}</td>
- * <td headers="matches">Any Unicode extended grapheme cluster</td></tr>
+ * <tr><th colspan="2" style="padding-top:20px" id="grapheme">Unicode Extended Grapheme matcher</th></tr>
*
- * <tr><th> </th></tr>
- * <tr style="text-align:left"><th colspan="2" id="greedy">Greedy quantifiers</th></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="grapheme_any">{@code \X}</th>
+ * <td headers="matches grapheme grapheme_any">Any Unicode extended grapheme cluster</td></tr>
+ *
+ * <tr><th colspan="2" style="padding-top:20px" id="greedy">Greedy quantifiers</th></tr>
*
- * <tr><td style="vertical-align:top" headers="construct greedy"><i>X</i>{@code ?}</td>
- * <td headers="matches"><i>X</i>, once or not at all</td></tr>
- * <tr><td style="vertical-align:top" headers="construct greedy"><i>X</i>{@code *}</td>
- * <td headers="matches"><i>X</i>, zero or more times</td></tr>
- * <tr><td style="vertical-align:top" headers="construct greedy"><i>X</i>{@code +}</td>
- * <td headers="matches"><i>X</i>, one or more times</td></tr>
- * <tr><td style="vertical-align:top" headers="construct greedy"><i>X</i><code>{</code><i>n</i><code>}</code></td>
- * <td headers="matches"><i>X</i>, exactly <i>n</i> times</td></tr>
- * <tr><td style="vertical-align:top" headers="construct greedy"><i>X</i><code>{</code><i>n</i>{@code ,}}</td>
- * <td headers="matches"><i>X</i>, at least <i>n</i> times</td></tr>
- * <tr><td style="vertical-align:top" headers="construct greedy"><i>X</i><code>{</code><i>n</i>{@code ,}<i>m</i><code>}</code></td>
- * <td headers="matches"><i>X</i>, at least <i>n</i> but not more than <i>m</i> times</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="greedy_once_or_not"><i>X</i>{@code ?}</th>
+ * <td headers="matches greedy greedy_once_or_not"><i>X</i>, once or not at all</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="greedy_zero_or_more"><i>X</i>{@code *}</th>
+ * <td headers="matches greedy greedy_zero_or_more"><i>X</i>, zero or more times</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="greedy_one_or_more"><i>X</i>{@code +}</th>
+ * <td headers="matches greedy greedy_one_or_more"><i>X</i>, one or more times</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="greedy_exactly"><i>X</i><code>{</code><i>n</i><code>}</code></th>
+ * <td headers="matches greedy greedy_exactly"><i>X</i>, exactly <i>n</i> times</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="greedy_at_least"><i>X</i><code>{</code><i>n</i>{@code ,}}</th>
+ * <td headers="matches greedy greedy_at_least"><i>X</i>, at least <i>n</i> times</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="greedy_at_least_up_to"><i>X</i><code>{</code><i>n</i>{@code ,}<i>m</i><code>}</code></th>
+ * <td headers="matches greedy greedy_at_least_up_to"><i>X</i>, at least <i>n</i> but not more than <i>m</i> times</td></tr>
*
- * <tr><th> </th></tr>
- * <tr style="text-align:left"><th colspan="2" id="reluc">Reluctant quantifiers</th></tr>
+ * <tr><th colspan="2" style="padding-top:20px" id="reluc">Reluctant quantifiers</th></tr>
*
- * <tr><td style="vertical-align:top" headers="construct reluc"><i>X</i>{@code ??}</td>
- * <td headers="matches"><i>X</i>, once or not at all</td></tr>
- * <tr><td style="vertical-align:top" headers="construct reluc"><i>X</i>{@code *?}</td>
- * <td headers="matches"><i>X</i>, zero or more times</td></tr>
- * <tr><td style="vertical-align:top" headers="construct reluc"><i>X</i>{@code +?}</td>
- * <td headers="matches"><i>X</i>, one or more times</td></tr>
- * <tr><td style="vertical-align:top" headers="construct reluc"><i>X</i><code>{</code><i>n</i><code>}?</code></td>
- * <td headers="matches"><i>X</i>, exactly <i>n</i> times</td></tr>
- * <tr><td style="vertical-align:top" headers="construct reluc"><i>X</i><code>{</code><i>n</i><code>,}?</code></td>
- * <td headers="matches"><i>X</i>, at least <i>n</i> times</td></tr>
- * <tr><td style="vertical-align:top" headers="construct reluc"><i>X</i><code>{</code><i>n</i>{@code ,}<i>m</i><code>}?</code></td>
- * <td headers="matches"><i>X</i>, at least <i>n</i> but not more than <i>m</i> times</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="reluc_once_or_not"><i>X</i>{@code ??}</th>
+ * <td headers="matches reluc reluc_once_or_not"><i>X</i>, once or not at all</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="reluc_zero_or_more"><i>X</i>{@code *?}</th>
+ * <td headers="matches reluc reluc_zero_or_more"><i>X</i>, zero or more times</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="reluc_one_or_more"><i>X</i>{@code +?}</th>
+ * <td headers="matches reluc reluc_one_or_more"><i>X</i>, one or more times</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="reluc_exactly"><i>X</i><code>{</code><i>n</i><code>}?</code></th>
+ * <td headers="matches reluc reluc_exactly"><i>X</i>, exactly <i>n</i> times</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="reluc_at_least"><i>X</i><code>{</code><i>n</i><code>,}?</code></th>
+ * <td headers="matches reluc reluc_at_least"><i>X</i>, at least <i>n</i> times</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="reluc_at_least_up_to"><i>X</i><code>{</code><i>n</i>{@code ,}<i>m</i><code>}?</code></th>
+ * <td headers="matches reluc reluc_at_least_up_to"><i>X</i>, at least <i>n</i> but not more than <i>m</i> times</td></tr>
*
- * <tr><th> </th></tr>
- * <tr style="text-align:left"><th colspan="2" id="poss">Possessive quantifiers</th></tr>
+ * <tr><th colspan="2" style="padding-top:20px" id="poss">Possessive quantifiers</th></tr>
*
- * <tr><td style="vertical-align:top" headers="construct poss"><i>X</i>{@code ?+}</td>
- * <td headers="matches"><i>X</i>, once or not at all</td></tr>
- * <tr><td style="vertical-align:top" headers="construct poss"><i>X</i>{@code *+}</td>
- * <td headers="matches"><i>X</i>, zero or more times</td></tr>
- * <tr><td style="vertical-align:top" headers="construct poss"><i>X</i>{@code ++}</td>
- * <td headers="matches"><i>X</i>, one or more times</td></tr>
- * <tr><td style="vertical-align:top" headers="construct poss"><i>X</i><code>{</code><i>n</i><code>}+</code></td>
- * <td headers="matches"><i>X</i>, exactly <i>n</i> times</td></tr>
- * <tr><td style="vertical-align:top" headers="construct poss"><i>X</i><code>{</code><i>n</i><code>,}+</code></td>
- * <td headers="matches"><i>X</i>, at least <i>n</i> times</td></tr>
- * <tr><td style="vertical-align:top" headers="construct poss"><i>X</i><code>{</code><i>n</i>{@code ,}<i>m</i><code>}+</code></td>
- * <td headers="matches"><i>X</i>, at least <i>n</i> but not more than <i>m</i> times</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="poss_once_or_not"><i>X</i>{@code ?+}</th>
+ * <td headers="matches poss poss_once_or_not"><i>X</i>, once or not at all</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="poss_zero_or_more"><i>X</i>{@code *+}</th>
+ * <td headers="matches poss poss_zero_or_more"><i>X</i>, zero or more times</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="poss_one_or_more"><i>X</i>{@code ++}</th>
+ * <td headers="matches poss poss_one_or_more"><i>X</i>, one or more times</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="poss_exactly"><i>X</i><code>{</code><i>n</i><code>}+</code></th>
+ * <td headers="matches poss poss_exactly"><i>X</i>, exactly <i>n</i> times</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="poss_at_least"><i>X</i><code>{</code><i>n</i><code>,}+</code></th>
+ * <td headers="matches poss poss_at_least"><i>X</i>, at least <i>n</i> times</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="poss_at_least_up_to"><i>X</i><code>{</code><i>n</i>{@code ,}<i>m</i><code>}+</code></th>
+ * <td headers="matches poss poss_at_least_up_to"><i>X</i>, at least <i>n</i> but not more than <i>m</i> times</td></tr>
*
- * <tr><th> </th></tr>
- * <tr style="text-align:left"><th colspan="2" id="logical">Logical operators</th></tr>
+ * <tr><th colspan="2" style="padding-top:20px" id="logical">Logical operators</th></tr>
*
- * <tr><td style="vertical-align:top" headers="construct logical"><i>XY</i></td>
- * <td headers="matches"><i>X</i> followed by <i>Y</i></td></tr>
- * <tr><td style="vertical-align:top" headers="construct logical"><i>X</i>{@code |}<i>Y</i></td>
- * <td headers="matches">Either <i>X</i> or <i>Y</i></td></tr>
- * <tr><td style="vertical-align:top" headers="construct logical">{@code (}<i>X</i>{@code )}</td>
- * <td headers="matches">X, as a <a href="#cg">capturing group</a></td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="concat"><i>XY</i></th>
+ * <td headers="matches logical concat"><i>X</i> followed by <i>Y</i></td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="alternate"><i>X</i>{@code |}<i>Y</i></th>
+ * <td headers="matches logical alternate">Either <i>X</i> or <i>Y</i></td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="group">{@code (}<i>X</i>{@code )}</th>
+ * <td headers="matches logical group">X, as a <a href="#cg">capturing group</a></td></tr>
*
- * <tr><th> </th></tr>
- * <tr style="text-align:left"><th colspan="2" id="backref">Back references</th></tr>
+ * <tr><th colspan="2" style="padding-top:20px" id="backref">Back references</th></tr>
*
- * <tr><td style="vertical-align:bottom" headers="construct backref">{@code \}<i>n</i></td>
- * <td style="vertical-align:bottom" headers="matches">Whatever the <i>n</i><sup>th</sup>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="back_nth">{@code \}<i>n</i></th>
+ * <td headers="matches backref back_nth">Whatever the <i>n</i><sup>th</sup>
* <a href="#cg">capturing group</a> matched</td></tr>
- *
- * <tr><td style="vertical-align:bottom" headers="construct backref">{@code \}<i>k</i><<i>name</i>></td>
- * <td style="vertical-align:bottom" headers="matches">Whatever the
+ * <tr><th style="vertical-align:top; font-weight:normal" id="back_named">{@code \}<i>k</i><<i>name</i>></th>
+ * <td headers="matches backref back_named">Whatever the
* <a href="#groupname">named-capturing group</a> "name" matched</td></tr>
*
- * <tr><th> </th></tr>
- * <tr style="text-align:left"><th colspan="2" id="quot">Quotation</th></tr>
+ * <tr><th colspan="2" style="padding-top:20px" id="quote">Quotation</th></tr>
*
- * <tr><td style="vertical-align:top" headers="construct quot">{@code \}</td>
- * <td headers="matches">Nothing, but quotes the following character</td></tr>
- * <tr><td style="vertical-align:top" headers="construct quot">{@code \Q}</td>
- * <td headers="matches">Nothing, but quotes all characters until {@code \E}</td></tr>
- * <tr><td style="vertical-align:top" headers="construct quot">{@code \E}</td>
- * <td headers="matches">Nothing, but ends quoting started by {@code \Q}</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="quote_follow">{@code \}</th>
+ * <td headers="matches quote quote_follow">Nothing, but quotes the following character</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="quote_begin">{@code \Q}</th>
+ * <td headers="matches quote quote_begin">Nothing, but quotes all characters until {@code \E}</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="quote_end">{@code \E}</th>
+ * <td headers="matches quote quote_end">Nothing, but ends quoting started by {@code \Q}</td></tr>
* <!-- Metachars: !$()*+.<>?[\]^{|} -->
*
- * <tr><th> </th></tr>
- * <tr style="text-align:left"><th colspan="2" id="special">Special constructs (named-capturing and non-capturing)</th></tr>
+ * <tr><th colspan="2" style="padding-top:20px" id="special">Special constructs (named-capturing and non-capturing)</th></tr>
*
- * <tr><td style="vertical-align:top" headers="construct special"><code>(?<<a href="#groupname">name</a>></code><i>X</i>{@code )}</td>
- * <td headers="matches"><i>X</i>, as a named-capturing group</td></tr>
- * <tr><td style="vertical-align:top" headers="construct special">{@code (?:}<i>X</i>{@code )}</td>
- * <td headers="matches"><i>X</i>, as a non-capturing group</td></tr>
- * <tr><td style="vertical-align:top" headers="construct special"><code>(?idmsuxU-idmsuxU) </code></td>
- * <td headers="matches">Nothing, but turns match flags <a href="#CASE_INSENSITIVE">i</a>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="named_group"><code>(?<<a href="#groupname">name</a>></code><i>X</i>{@code )}</th>
+ * <td headers="matches special named_group"><i>X</i>, as a named-capturing group</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="non_capture_group">{@code (?:}<i>X</i>{@code )}</th>
+ * <td headers="matches special non_capture_group"><i>X</i>, as a non-capturing group</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="flags"><code>(?idmsuxU-idmsuxU) </code></th>
+ * <td headers="matches special flags">Nothing, but turns match flags <a href="#CASE_INSENSITIVE">i</a>
* <a href="#UNIX_LINES">d</a> <a href="#MULTILINE">m</a> <a href="#DOTALL">s</a>
* <a href="#UNICODE_CASE">u</a> <a href="#COMMENTS">x</a> <a href="#UNICODE_CHARACTER_CLASS">U</a>
* on - off</td></tr>
- * <tr><td style="vertical-align:top" headers="construct special"><code>(?idmsux-idmsux:</code><i>X</i>{@code )} </td>
- * <td headers="matches"><i>X</i>, as a <a href="#cg">non-capturing group</a> with the
+ * <tr><th style="vertical-align:top; font-weight:normal" id="non_capture_group_flags"><code>(?idmsux-idmsux:</code><i>X</i>{@code )} </th>
+ * <td headers="matches special non_capture_group_flags"><i>X</i>, as a <a href="#cg">non-capturing group</a> with the
* given flags <a href="#CASE_INSENSITIVE">i</a> <a href="#UNIX_LINES">d</a>
* <a href="#MULTILINE">m</a> <a href="#DOTALL">s</a> <a href="#UNICODE_CASE">u</a >
* <a href="#COMMENTS">x</a> on - off</td></tr>
- * <tr><td style="vertical-align:top" headers="construct special">{@code (?=}<i>X</i>{@code )}</td>
- * <td headers="matches"><i>X</i>, via zero-width positive lookahead</td></tr>
- * <tr><td style="vertical-align:top" headers="construct special">{@code (?!}<i>X</i>{@code )}</td>
- * <td headers="matches"><i>X</i>, via zero-width negative lookahead</td></tr>
- * <tr><td style="vertical-align:top" headers="construct special">{@code (?<=}<i>X</i>{@code )}</td>
- * <td headers="matches"><i>X</i>, via zero-width positive lookbehind</td></tr>
- * <tr><td style="vertical-align:top" headers="construct special">{@code (?<!}<i>X</i>{@code )}</td>
- * <td headers="matches"><i>X</i>, via zero-width negative lookbehind</td></tr>
- * <tr><td style="vertical-align:top" headers="construct special">{@code (?>}<i>X</i>{@code )}</td>
- * <td headers="matches"><i>X</i>, as an independent, non-capturing group</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="pos_lookahead">{@code (?=}<i>X</i>{@code )}</th>
+ * <td headers="matches special pos_lookahead"><i>X</i>, via zero-width positive lookahead</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="neg_lookahead">{@code (?!}<i>X</i>{@code )}</th>
+ * <td headers="matches special neg_lookahead"><i>X</i>, via zero-width negative lookahead</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="pos_lookbehind">{@code (?<=}<i>X</i>{@code )}</th>
+ * <td headers="matches special pos_lookbehind"><i>X</i>, via zero-width positive lookbehind</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="neg_lookbehind">{@code (?<!}<i>X</i>{@code )}</th>
+ * <td headers="matches special neg_lookbehind"><i>X</i>, via zero-width negative lookbehind</td></tr>
+ * <tr><th style="vertical-align:top; font-weight:normal" id="indep_non_capture_group">{@code (?>}<i>X</i>{@code )}</th>
+ * <td headers="matches special indep_non_capture_group"><i>X</i>, as an independent, non-capturing group</td></tr>
*
* </tbody>
* </table>
@@ -432,26 +419,29 @@
* <p> The precedence of character-class operators is as follows, from
* highest to lowest:
*
- * <blockquote><table>
+ * <table class="striped" style="margin-left: 2em;">
* <caption style="display:none">Precedence of character class operators.</caption>
+ * <thead>
+ * <tr><th scope="col">Precedence<th scope="col">Name<th scope="col">Example
+ * </thead>
* <tbody>
- * <tr><th>1 </th>
+ * <tr><th scope="row">1</th>
* <td>Literal escape </td>
* <td>{@code \x}</td></tr>
- * <tr><th>2 </th>
+ * <tr><th scope="row">2</th>
* <td>Grouping</td>
* <td>{@code [...]}</td></tr>
- * <tr><th>3 </th>
+ * <tr><th scope="row">3</th>
* <td>Range</td>
* <td>{@code a-z}</td></tr>
- * <tr><th>4 </th>
+ * <tr><th scope="row">4</th>
* <td>Union</td>
* <td>{@code [a-e][i-u]}</td></tr>
- * <tr><th>5 </th>
+ * <tr><th scope="row">5</th>
* <td>Intersection</td>
* <td>{@code [a-z&&[aeiou]]}</td></tr>
* </tbody>
- * </table></blockquote>
+ * </table>
*
* <p> Note that a different set of metacharacters are in effect inside
* a character class than outside a character class. For instance, the
@@ -467,18 +457,18 @@
*
* <ul>
*
- * <li> A newline (line feed) character ({@code '\n'}),
+ * <li> A newline (line feed) character ({@code '\n'}),
*
* <li> A carriage-return character followed immediately by a newline
- * character ({@code "\r\n"}),
+ * character ({@code "\r\n"}),
*
- * <li> A standalone carriage-return character ({@code '\r'}),
+ * <li> A standalone carriage-return character ({@code '\r'}),
*
- * <li> A next-line character (<code>'\u0085'</code>),
+ * <li> A next-line character (<code>'\u0085'</code>),
*
- * <li> A line-separator character (<code>'\u2028'</code>), or
+ * <li> A line-separator character (<code>'\u2028'</code>), or
*
- * <li> A paragraph-separator character (<code>'\u2029'</code>).
+ * <li> A paragraph-separator character (<code>'\u2029'</code>).
*
* </ul>
* <p>If {@link #UNIX_LINES} mode is activated, then the only line terminators
@@ -501,19 +491,12 @@
* left to right. In the expression {@code ((A)(B(C)))}, for example, there
* are four such groups: </p>
*
- * <blockquote><table>
- * <caption style="display:none">Capturing group numberings</caption>
- * <tbody>
- * <tr><th>1 </th>
- * <td>{@code ((A)(B(C)))}</td></tr>
- * <tr><th>2 </th>
- * <td>{@code (A)}</td></tr>
- * <tr><th>3 </th>
- * <td>{@code (B(C))}</td></tr>
- * <tr><th>4 </th>
- * <td>{@code (C)}</td></tr>
- * </tbody>
- * </table></blockquote>
+ * <ol style="margin-left:2em;">
+ * <li> {@code ((A)(B(C)))}
+ * <li> {@code (A)}
+ * <li> {@code (B(C))}
+ * <li> {@code (C)}
+ * </ol>
*
* <p> Group zero always stands for the entire expression.
*
@@ -649,52 +632,52 @@
* of <a href="http://www.unicode.org/reports/tr18/"><i>Unicode Regular Expression
* </i></a>, when {@link #UNICODE_CHARACTER_CLASS} flag is specified.
*
- * <table>
+ * <table class="striped">
* <caption style="display:none">predefined and posix character classes in Unicode mode</caption>
* <thead>
- * <tr style="text-align:left">
- * <th style="text-align:left" id="predef_classes">Classes</th>
- * <th style="text-align:left" id="predef_matches">Matches</th>
+ * <tr>
+ * <th scope="col" id="predef_classes">Classes</th>
+ * <th scope="col" id="predef_matches">Matches</th>
* </tr>
* </thead>
* <tbody>
- * <tr><td>{@code \p{Lower}}</td>
+ * <tr><th scope="row">{@code \p{Lower}}</th>
* <td>A lowercase character:{@code \p{IsLowercase}}</td></tr>
- * <tr><td>{@code \p{Upper}}</td>
+ * <tr><th scope="row">{@code \p{Upper}}</th>
* <td>An uppercase character:{@code \p{IsUppercase}}</td></tr>
- * <tr><td>{@code \p{ASCII}}</td>
+ * <tr><th scope="row">{@code \p{ASCII}}</th>
* <td>All ASCII:{@code [\x00-\x7F]}</td></tr>
- * <tr><td>{@code \p{Alpha}}</td>
+ * <tr><th scope="row">{@code \p{Alpha}}</th>
* <td>An alphabetic character:{@code \p{IsAlphabetic}}</td></tr>
- * <tr><td>{@code \p{Digit}}</td>
+ * <tr><th scope="row">{@code \p{Digit}}</th>
* <td>A decimal digit character:{@code \p{IsDigit}}</td></tr>
- * <tr><td>{@code \p{Alnum}}</td>
+ * <tr><th scope="row">{@code \p{Alnum}}</th>
* <td>An alphanumeric character:{@code [\p{IsAlphabetic}\p{IsDigit}]}</td></tr>
- * <tr><td>{@code \p{Punct}}</td>
+ * <tr><th scope="row">{@code \p{Punct}}</th>
* <td>A punctuation character:{@code \p{IsPunctuation}}</td></tr>
- * <tr><td>{@code \p{Graph}}</td>
+ * <tr><th scope="row">{@code \p{Graph}}</th>
* <td>A visible character: {@code [^\p{IsWhite_Space}\p{gc=Cc}\p{gc=Cs}\p{gc=Cn}]}</td></tr>
- * <tr><td>{@code \p{Print}}</td>
+ * <tr><th scope="row">{@code \p{Print}}</th>
* <td>A printable character: {@code [\p{Graph}\p{Blank}&&[^\p{Cntrl}]]}</td></tr>
- * <tr><td>{@code \p{Blank}}</td>
+ * <tr><th scope="row">{@code \p{Blank}}</th>
* <td>A space or a tab: {@code [\p{IsWhite_Space}&&[^\p{gc=Zl}\p{gc=Zp}\x0a\x0b\x0c\x0d\x85]]}</td></tr>
- * <tr><td>{@code \p{Cntrl}}</td>
+ * <tr><th scope="row">{@code \p{Cntrl}}</th>
* <td>A control character: {@code \p{gc=Cc}}</td></tr>
- * <tr><td>{@code \p{XDigit}}</td>
+ * <tr><th scope="row">{@code \p{XDigit}}</th>
* <td>A hexadecimal digit: {@code [\p{gc=Nd}\p{IsHex_Digit}]}</td></tr>
- * <tr><td>{@code \p{Space}}</td>
+ * <tr><th scope="row">{@code \p{Space}}</th>
* <td>A whitespace character:{@code \p{IsWhite_Space}}</td></tr>
- * <tr><td>{@code \d}</td>
+ * <tr><th scope="row">{@code \d}</th>
* <td>A digit: {@code \p{IsDigit}}</td></tr>
- * <tr><td>{@code \D}</td>
+ * <tr><th scope="row">{@code \D}</th>
* <td>A non-digit: {@code [^\d]}</td></tr>
- * <tr><td>{@code \s}</td>
+ * <tr><th scope="row">{@code \s}</th>
* <td>A whitespace character: {@code \p{IsWhite_Space}}</td></tr>
- * <tr><td>{@code \S}</td>
+ * <tr><th scope="row">{@code \S}</th>
* <td>A non-whitespace character: {@code [^\s]}</td></tr>
- * <tr><td>{@code \w}</td>
+ * <tr><th scope="row">{@code \w}</th>
* <td>A word character: {@code [\p{Alpha}\p{gc=Mn}\p{gc=Me}\p{gc=Mc}\p{Digit}\p{gc=Pc}\p{IsJoin_Control}]}</td></tr>
- * <tr><td>{@code \W}</td>
+ * <tr><th scope="row">{@code \W}</th>
* <td>A non-word character: {@code [^\w]}</td></tr>
* </tbody>
* </table>
@@ -1219,34 +1202,36 @@
* <p> The input {@code "boo:and:foo"}, for example, yields the following
* results with these parameters:
*
- * <blockquote><table>
- * <caption>Split examples showing regex, limit, and result</caption>
+ * <table class="plain" style="margin-left:2em;">
+ * <caption style="display:none">Split example showing regex, limit, and result</caption>
* <thead>
- * <tr><th style="text-align:left"><i>Regex </i></th>
- * <th style="text-align:left"><i>Limit </i></th>
- * <th style="text-align:left"><i>Result </i></th></tr>
+ * <tr>
+ * <th scope="col">Regex</th>
+ * <th scope="col">Limit</th>
+ * <th scope="col">Result</th>
+ * </tr>
* </thead>
* <tbody>
- * <tr><td style="text-align:center">:</td>
- * <td style="text-align:center">2</td>
+ * <tr><th scope="row" rowspan="3" style="font-weight:normal">:</th>
+ * <th scope="row" style="font-weight:normal; text-align:right; padding-right:1em">2</th>
* <td>{@code { "boo", "and:foo" }}</td></tr>
- * <tr><td style="text-align:center">:</td>
- * <td style="text-align:center">5</td>
+ * <tr><!-- : -->
+ * <th scope="row" style="font-weight:normal; text-align:right; padding-right:1em">5</th>
* <td>{@code { "boo", "and", "foo" }}</td></tr>
- * <tr><td style="text-align:center">:</td>
- * <td style="text-align:center">-2</td>
+ * <tr><!-- : -->
+ * <th scope="row" style="font-weight:normal; text-align:right; padding-right:1em">-2</th>
* <td>{@code { "boo", "and", "foo" }}</td></tr>
- * <tr><td style="text-align:center">o</td>
- * <td style="text-align:center">5</td>
+ * <tr><th scope="row" rowspan="3" style="font-weight:normal">o</th>
+ * <th scope="row" style="font-weight:normal; text-align:right; padding-right:1em">5</th>
* <td>{@code { "b", "", ":and:f", "", "" }}</td></tr>
- * <tr><td style="text-align:center">o</td>
- * <td style="text-align:center">-2</td>
+ * <tr><!-- o -->
+ * <th scope="row" style="font-weight:normal; text-align:right; padding-right:1em">-2</th>
* <td>{@code { "b", "", ":and:f", "", "" }}</td></tr>
- * <tr><td style="text-align:center">o</td>
- * <td style="text-align:center">0</td>
+ * <tr><!-- o -->
+ * <th scope="row" style="font-weight:normal; text-align:right; padding-right:1em">0</th>
* <td>{@code { "b", "", ":and:f" }}</td></tr>
* </tbody>
- * </table></blockquote>
+ * </table>
*
* @param input
* The character sequence to be split
@@ -1310,19 +1295,21 @@
* <p> The input {@code "boo:and:foo"}, for example, yields the following
* results with these expressions:
*
- * <blockquote><table>
+ * <table class="plain" style="margin-left:2em">
* <caption style="display:none">Split examples showing regex and result</caption>
* <thead>
- * <tr><th style="text-align:left"><i>Regex </i></th>
- * <th style="text-align:left"><i>Result</i></th></tr>
+ * <tr>
+ * <th scope="col">Regex</th>
+ * <th scope="col">Result</th>
+ * </tr>
* </thead>
* <tbody>
- * <tr><td style="text-align:center">:</td>
+ * <tr><th scope="row" style="text-weight:normal">:</th>
* <td>{@code { "boo", "and", "foo" }}</td></tr>
- * <tr><td style="text-align:center">o</td>
+ * <tr><th scope="row" style="text-weight:normal">o</th>
* <td>{@code { "b", "", ":and:f" }}</td></tr>
* </tbody>
- * </table></blockquote>
+ * </table>
*
*
* @param input
--- a/jdk/src/java.base/share/classes/java/util/spi/CalendarNameProvider.java Wed Aug 23 12:24:55 2017 -0400
+++ b/jdk/src/java.base/share/classes/java/util/spi/CalendarNameProvider.java Wed Aug 23 10:58:11 2017 -0700
@@ -46,18 +46,18 @@
* Calendar}. The following are calendar-common fields and their values to be
* supported for each calendar system.
*
- * <table class="plain">
+ * <table class="striped">
* <caption style="display:none">Field values</caption>
* <thead>
* <tr>
- * <th>Field</th>
- * <th>Value</th>
- * <th>Description</th>
+ * <th scope="col">Field</th>
+ * <th scope="col">Value</th>
+ * <th scope="col">Description</th>
* </tr>
* </thead>
* <tbody>
* <tr>
- * <td style="vertical-align:top">{@link Calendar#MONTH}</td>
+ * <th scope="row" style="vertical-align:top">{@link Calendar#MONTH}</th>
* <td style="vertical-align:top">{@link Calendar#JANUARY} to {@link Calendar#UNDECIMBER}</td>
* <td>Month numbering is 0-based (e.g., 0 - January, ..., 11 -
* December). Some calendar systems have 13 months. Month
@@ -67,13 +67,13 @@
* in both of the forms.</td>
* </tr>
* <tr>
- * <td style="vertical-align:top">{@link Calendar#DAY_OF_WEEK}</td>
+ * <th scope="row" style="vertical-align:top">{@link Calendar#DAY_OF_WEEK}</th>
* <td style="vertical-align:top">{@link Calendar#SUNDAY} to {@link Calendar#SATURDAY}</td>
* <td>Day-of-week numbering is 1-based starting from Sunday (i.e., 1 - Sunday,
* ..., 7 - Saturday).</td>
* </tr>
* <tr>
- * <td style="vertical-align:top">{@link Calendar#AM_PM}</td>
+ * <th scope="row" style="vertical-align:top">{@link Calendar#AM_PM}</th>
* <td style="vertical-align:top">{@link Calendar#AM} to {@link Calendar#PM}</td>
* <td>0 - AM, 1 - PM</td>
* </tr>
@@ -86,81 +86,81 @@
* <caption style="display:none">Calendar type and field values</caption>
* <thead>
* <tr>
- * <th>Calendar Type</th>
- * <th>Field</th>
- * <th>Value</th>
- * <th>Description</th>
+ * <th scope="col">Calendar Type</th>
+ * <th scope="col">Field</th>
+ * <th scope="col">Value</th>
+ * <th scope="col">Description</th>
* </tr>
* </thead>
* <tbody>
* <tr>
- * <td rowspan="2" style="vertical-align:top">{@code "gregory"}</td>
- * <td rowspan="2" style="vertical-align:top">{@link Calendar#ERA}</td>
- * <td>0</td>
+ * <th scope="row"rowspan="2" style="font-weight:normal; text-align:left; vertical-align:top">{@code "gregory"}</th>
+ * <th scope="row" rowspan="2" style="font-weight:normal; text-align:left; vertical-align:top">{@link Calendar#ERA}</th>
+ * <th scope="row" style="font-weight:normal">0</th>
* <td>{@link java.util.GregorianCalendar#BC} (BCE)</td>
* </tr>
* <tr>
- * <td>1</td>
+ * <th scope="row" style="font-weight:normal">1</th>
* <td>{@link java.util.GregorianCalendar#AD} (CE)</td>
* </tr>
* <tr>
- * <td rowspan="2" style="vertical-align:top">{@code "buddhist"}</td>
- * <td rowspan="2" style="vertical-align:top">{@link Calendar#ERA}</td>
- * <td>0</td>
+ * <th scope="row" rowspan="2" style="font-weight:normal; text-align:left; vertical-align:top">{@code "buddhist"}</th>
+ * <th scope="row" rowspan="2" style="font-weight:normal; text-align:left; vertical-align:top">{@link Calendar#ERA}</th>
+ * <th scope="row" style="font-weight:normal">0</th>
* <td>BC (BCE)</td>
* </tr>
* <tr>
- * <td>1</td>
+ * <th scope="row" style="font-weight:normal">1</th>
* <td>B.E. (Buddhist Era)</td>
* </tr>
* <tr>
- * <td rowspan="6" style="vertical-align:top">{@code "japanese"}</td>
- * <td rowspan="5" style="vertical-align:top">{@link Calendar#ERA}</td>
- * <td>0</td>
+ * <th scope="row" rowspan="6" style="font-weight:normal; text-align:left; vertical-align:top">{@code "japanese"}</th>
+ * <th scope="row" rowspan="5" style="font-weight:normal; text-align:left; vertical-align:top">{@link Calendar#ERA}</th>
+ * <th scope="row" style="font-weight:normal">0</th>
* <td>Seireki (Before Meiji)</td>
* </tr>
* <tr>
- * <td>1</td>
+ * <th scope="row" style="font-weight:normal">1</th>
* <td>Meiji</td>
* </tr>
* <tr>
- * <td>2</td>
+ * <th scope="row" style="font-weight:normal">2</th>
* <td>Taisho</td>
* </tr>
* <tr>
- * <td>3</td>
+ * <th scope="row" style="font-weight:normal">3</th>
* <td>Showa</td>
* </tr>
* <tr>
- * <td>4</td>
+ * <th scope="row" style="font-weight:normal">4</th>
* <td >Heisei</td>
* </tr>
* <tr>
- * <td>{@link Calendar#YEAR}</td>
- * <td>1</td>
+ * <th scope="row" style="font-weight:normal; text-align:left; vertical-align:top">{@link Calendar#YEAR}</th>
+ * <th scope="row" style="font-weight:normal">1</th>
* <td>the first year in each era. It should be returned when a long
* style ({@link Calendar#LONG_FORMAT} or {@link Calendar#LONG_STANDALONE}) is
* specified. See also the <a href="../../text/SimpleDateFormat.html#year">
* Year representation in {@code SimpleDateFormat}</a>.</td>
* </tr>
* <tr>
- * <td rowspan="2" style="vertical-align:top">{@code "roc"}</td>
- * <td rowspan="2" style="vertical-align:top">{@link Calendar#ERA}</td>
- * <td>0</td>
+ * <th scope="row" rowspan="2" style="font-weight:normal; text-align:left; vertical-align:top">{@code "roc"}</th>
+ * <th scope="row" rowspan="2" style="font-weight:normal; text-align:left; vertical-align:top">{@link Calendar#ERA}</th>
+ * <th scope="row" style="font-weight:normal">0</th>
* <td>Before R.O.C.</td>
* </tr>
* <tr>
- * <td>1</td>
+ * <th scope="row" style="font-weight:normal">1</th>
* <td>R.O.C.</td>
* </tr>
* <tr>
- * <td rowspan="2" style="vertical-align:top">{@code "islamic"}</td>
- * <td rowspan="2" style="vertical-align:top">{@link Calendar#ERA}</td>
- * <td>0</td>
+ * <th scope="row" rowspan="2" style="font-weight:normal; text-align:left; vertical-align:top">{@code "islamic"}</th>
+ * <th scope="row" rowspan="2" style="font-weight:normal; text-align:left; vertical-align:top">{@link Calendar#ERA}</th>
+ * <th scope="row" style="font-weight:normal">0</th>
* <td>Before AH</td>
* </tr>
* <tr>
- * <td>1</td>
+ * <th scope="row" style="font-weight:normal">1</th>
* <td>Anno Hijrah (AH)</td>
* </tr>
* </tbody>