ICU-21581 ICU Change Reports for 70rc

See #1877
diff --git a/icu4c/APIChangeReport.html b/icu4c/APIChangeReport.html
index a3d1da6..f262ed9 100644
--- a/icu4c/APIChangeReport.html
+++ b/icu4c/APIChangeReport.html
@@ -5,31 +5,31 @@
 	-->
 <head>
 <META http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>ICU4C API Comparison: ICU 68 (update #1: 68.2) with ICU 69</title>
+<title>ICU4C API Comparison: ICU 69 with ICU 70</title>
 <link type="text/css" href="icu4c.css" rel="stylesheet">
 </head>
 <body>
 <a name="#_top"></a>
-<h1>ICU4C API Comparison: ICU 68 (update #1: 68.2) with ICU 69</h1>
+<h1>ICU4C API Comparison: ICU 69 with ICU 70</h1>
 <div id="toc">
 <ul>
 <li>
-<a href="#removed">Removed from ICU 68</a>
+<a href="#removed">Removed from ICU 69</a>
 </li>
 <li>
-<a href="#deprecated">Deprecated or Obsoleted in ICU 69</a>
+<a href="#deprecated">Deprecated or Obsoleted in ICU 70</a>
 </li>
 <li>
-<a href="#changed">Changed in  ICU 69</a>
+<a href="#changed">Changed in  ICU 70</a>
 </li>
 <li>
-<a href="#promoted">Promoted to stable in ICU 69</a>
+<a href="#promoted">Promoted to stable in ICU 70</a>
 </li>
 <li>
-<a href="#added">Added in ICU 69</a>
+<a href="#added">Added in ICU 70</a>
 </li>
 <li>
-<a href="#other">Other existing drafts in ICU 69</a>
+<a href="#other">Other existing drafts in ICU 70</a>
 </li>
 <li>
 <a href="#simplifications">Signature Simplifications</a>
@@ -38,71 +38,15 @@
 <hr>
 </div>
 <a name="removed"></a>
-<h2>Removed from ICU 68</h2>
+<h2>Removed from ICU 69</h2>
 <table BORDER="1" class="genTable">
 <THEAD>
 <tr>
-<th>File</th><th>API</th><th>ICU 68</th><th>ICU 69</th>
+<th>File</th><th>API</th><th>ICU 69</th><th>ICU 70</th>
 </tr>
 </THEAD>
 <tr class="row1">
-<td class="file">listformatter.h</td><td class="proto"><tt>static</tt> ListFormatter* icu::ListFormatter::createInstance(const Locale&amp;, const char*, UErrorCode&amp;)</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::withSIPrefix(UMeasureSIPrefix, UErrorCode&amp;) const</td><td class="">Draft<br>ICU 67</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto">UMeasureSIPrefix icu::MeasureUnit::getSIPrefix(UErrorCode&amp;) const</td><td class="">Draft<br>ICU 67</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Usage&amp; icu::number::impl::Usage::operator=(Usage&amp;&amp;)</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Usage&amp; icu::number::impl::Usage::operator=(const Usage&amp;)</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">bool icu::number::impl::Usage::isSet() const</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::impl::Usage::Usage(Usage&amp;&amp;)</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::impl::Usage::Usage(const Usage&amp;)</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::impl::Usage::~Usage()</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">int16_t icu::number::impl::Usage::length() const</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">void icu::number::impl::Usage::set(StringPiece)</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::getFirstDecimal(UErrorCode&amp;) const</td><td class="">Deprecated<br>ICU 68</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::getSecondDecimal(UErrorCode&amp;) const</td><td class="">Deprecated<br>ICU 68</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">rbtz.h</td><td class="proto">void icu::RuleBasedTimeZone::getOffsetFromLocal(UDate, int32_t, int32_t, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">simpletz.h</td><td class="proto">void icu::SimpleTimeZone::getOffsetFromLocal(UDate, int32_t, int32_t, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const</td><td class="">Internal</td><td>(missing)<br>
+<td class="file">tmutfmt.h</td><td class="proto">bool icu::TimeUnitFormat::operator!=(const Format&amp;) const</td><td class="">Deprecated<br>ICU 53</td><td>(missing)<br>
 <span class=""><span></span></span></td>
 </tr>
 </table>
@@ -110,685 +54,799 @@
 <a href="#_top">(jump back to top)</a>
 <hr>
 <a name="deprecated"></a>
-<h2>Deprecated or Obsoleted in ICU 69</h2>
+<h2>Deprecated or Obsoleted in ICU 70</h2>
 <table BORDER="1" class="genTable">
 <THEAD>
 <tr>
-<th>File</th><th>API</th><th>ICU 68</th><th>ICU 69</th>
+<th>File</th><th>API</th><th>ICU 69</th><th>ICU 70</th>
 </tr>
 </THEAD>
 <tr class="row1">
-<td class="file">ubrk.h</td><td class="proto">UBreakIterator* ubrk_safeClone(const UBreakIterator*, void*, int32_t*, UErrorCode*)</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 69</span></span></td>
+<td class="file">timezone.h</td><td class="proto"><tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration()</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 70</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">timezone.h</td><td class="proto"><tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration(const char*)</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 70</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">timezone.h</td><td class="proto"><tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration(int32_t)</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 70</span></span></td>
 </tr>
 </table>
 <P></P>
 <a href="#_top">(jump back to top)</a>
 <hr>
 <a name="changed"></a>
-<h2>Changed in  ICU 69 (old, new)</h2>
+<h2>Changed in  ICU 70 (old, new)</h2>
 <table BORDER="1" class="genTable">
 <THEAD>
 <tr>
-<th>File</th><th>API</th><th>ICU 68</th><th>ICU 69</th>
+<th>File</th><th>API</th><th>ICU 69</th><th>ICU 70</th>
 </tr>
 </THEAD>
 <tr class="row1">
-<td class="file">bytestream.h</td><td class="proto">void icu::ByteSink::AppendU8(const char*, int32_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">dtitvfmt.h</td><td class="proto">UDisplayContext icu::DateIntervalFormat::getContext(UDisplayContextType, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">bytestream.h</td><td class="proto">void icu::ByteSink::AppendU8(const char8_t*, int32_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">dtitvfmt.h</td><td class="proto">void icu::DateIntervalFormat::setContext(UDisplayContext, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">dtptngen.h</td><td class="proto">UDateFormatHourCycle icu::DateTimePatternGenerator::getDefaultHourCycle(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setMaxDistance(const Locale&amp;, const Locale&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setDirection(ULocMatchDirection)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setNoDefaultLocale()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_ONLY_TWO_WAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">localematcher.h</td><td class="proto">bool icu::LocaleMatcher::isMatch(const Locale&amp;, const Locale&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_WITH_ONE_WAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCandela()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">locid.h</td><td class="proto">void icu::Locale::canonicalize(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoon()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::product(const MeasureUnit&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoonImperial()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::reciprocal(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDot()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::withDimensionality(int32_t, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDram()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto">MeasureUnit&amp; icu::MeasureUnit::operator=(MeasureUnit&amp;&amp;) noexcept</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDrop()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto">UMeasureUnitComplexity icu::MeasureUnit::getComplexity(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getEarthRadius()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto">const char* icu::MeasureUnit::getIdentifier() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGrain()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto">icu::MeasureUnit::MeasureUnit(MeasureUnit&amp;&amp;) noexcept</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getJigger()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto">int32_t icu::MeasureUnit::getDimensionality(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getLumen()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::forIdentifier(StringPiece, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPinch()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(const char8_t*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getQuartImperial()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(const char8_t*, int32_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createCandela(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(const std::u8string&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoon(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(std::nullptr_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoonImperial(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">stringpiece.h</td><td class="proto">int32_t icu::StringPiece::compare(StringPiece)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDot(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">stringpiece.h</td><td class="proto">int32_t icu::StringPiece::find(StringPiece, int32_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDram(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">stringpiece.h</td><td class="proto">void icu::StringPiece::set(const char8_t*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDrop(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">stringpiece.h</td><td class="proto">void icu::StringPiece::set(const char8_t*, int32_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createEarthRadius(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">translit.h</td><td class="proto">UnicodeSet&amp; icu::Transliterator::getSourceSet(UnicodeSet&amp;) const</td><td class=""><i>(untagged)</i></td><td>Stable<br>
-<span class=""><span>ICU 2.4</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createGrain(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">translit.h</td><td class="proto"><tt>static</tt> UnicodeString&amp; icu::Transliterator::getDisplayName(const UnicodeString&amp;, UnicodeString&amp;)</td><td class=""><i>(untagged)</i></td><td>Stable<br>
-<span class=""><span>ICU 2.0</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createJigger(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">translit.h</td><td class="proto">void icu::Transliterator::finishTransliteration(Replaceable&amp;, UTransPosition&amp;) const</td><td class=""><i>(untagged)</i></td><td>Stable<br>
-<span class=""><span>ICU 2.0</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createLumen(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">translit.h</td><td class="proto">void icu::Transliterator::transliterate(Replaceable&amp;, UTransPosition&amp;, UErrorCode&amp;) const</td><td class=""><i>(untagged)</i></td><td>Stable<br>
-<span class=""><span>ICU 2.0</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPinch(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">ubrk.h</td><td class="proto">UBreakIterator* ubrk_safeClone(const UBreakIterator*, void*, int32_t*, UErrorCode*)</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 69</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createQuartImperial(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_11</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto">std::pair&lt; LocalArray&lt; MeasureUnit &gt;, int32_t &gt; icu::MeasureUnit::splitToSingleUnits(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_12</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::usage(StringPiece) const&amp;</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_23</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::usage(StringPiece)&amp;&amp;</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_24</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">numberformatter.h</td><td class="proto">MeasureUnit icu::number::FormattedNumber::getOutputUnit(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">udateintervalformat.h</td><td class="proto">void udtitvfmt_formatCalendarToResult(const UDateIntervalFormat*, UCalendar*, UCalendar*, UFormattedDateInterval*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">numberrangeformatter.h</td><td class="proto">std::pair&lt; StringClass, StringClass &gt; icu::number::FormattedNumberRange::getDecimalNumbers(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">udateintervalformat.h</td><td class="proto">void udtitvfmt_formatToResult(const UDateIntervalFormat*, UDate, UDate, UFormattedDateInterval*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">plurrule.h</td><td class="proto">UnicodeString icu::PluralRules::select(const number::FormattedNumberRange&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">udatpg.h</td><td class="proto">UDateFormatHourCycle udatpg_getDefaultHourCycle(const UDateTimePatternGenerator*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">timezone.h</td><td class="proto"><tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration()</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 70</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_BREAK_ENGINE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">timezone.h</td><td class="proto"><tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration(const char*)</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 70</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_CHARACTER</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">timezone.h</td><td class="proto"><tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration(int32_t)</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 70</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_LINE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">ucurr.h</td><td class="proto"><tt>enum</tt> UCurrNameStyle::UCURR_FORMAL_SYMBOL_NAME</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_SENTENCE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">ucurr.h</td><td class="proto"><tt>enum</tt> UCurrNameStyle::UCURR_VARIANT_SYMBOL_NAME</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_TITLE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">udateintervalformat.h</td><td class="proto">UDisplayContext udtitvfmt_getContext(const UDateIntervalFormat*, UDisplayContextType, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_WORD</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">udateintervalformat.h</td><td class="proto">void udtitvfmt_setContext(UDateIntervalFormat*, UDisplayContext, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_START</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_AUTO</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row0">
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_MIN2</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row1">
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_FORMAL</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row0">
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_VARIANT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row1">
+<td class="file">unumberformatter.h</td><td class="proto">int32_t unumf_resultToDecimalNumber(const UFormattedNumber*, char*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row0">
+<td class="file">unumberrangeformatter.h</td><td class="proto">UFormattedNumberRange* unumrf_openResult(UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row1">
+<td class="file">unumberrangeformatter.h</td><td class="proto">UNumberRangeFormatter* unumrf_openForSkeletonWithCollapseAndIdentityFallback(const UChar*, int32_t, UNumberRangeCollapse, UNumberRangeIdentityFallback, const char*, UParseError*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row0">
+<td class="file">unumberrangeformatter.h</td><td class="proto">UNumberRangeIdentityResult unumrf_resultGetIdentityResult(const UFormattedNumberRange*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row1">
+<td class="file">unumberrangeformatter.h</td><td class="proto">const UFormattedValue* unumrf_resultAsValue(const UFormattedNumberRange*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row0">
+<td class="file">unumberrangeformatter.h</td><td class="proto">int32_t unumrf_resultGetFirstDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row1">
+<td class="file">unumberrangeformatter.h</td><td class="proto">int32_t unumrf_resultGetSecondDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row0">
+<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_close(UNumberRangeFormatter*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row1">
+<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_closeResult(UFormattedNumberRange*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row0">
+<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_formatDecimalRange(const UNumberRangeFormatter*, const char*, int32_t, const char*, int32_t, UFormattedNumberRange*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row1">
+<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_formatDoubleRange(const UNumberRangeFormatter*, double, double, UFormattedNumberRange*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row0">
+<td class="file">upluralrules.h</td><td class="proto">int32_t uplrules_selectForRange(const UPluralRules*, const struct UFormattedNumberRange*, UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 </table>
 <P></P>
 <a href="#_top">(jump back to top)</a>
 <hr>
 <a name="promoted"></a>
-<h2>Promoted to stable in ICU 69</h2>
+<h2>Promoted to stable in ICU 70</h2>
 <table BORDER="1" class="genTable">
 <THEAD>
 <tr>
-<th>File</th><th>API</th><th>ICU 68</th><th>ICU 69</th>
+<th>File</th><th>API</th><th>ICU 69</th><th>ICU 70</th>
 </tr>
 </THEAD>
 <tr class="row1">
-<td class="file">bytestream.h</td><td class="proto">void icu::ByteSink::AppendU8(const char*, int32_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">dtitvfmt.h</td><td class="proto">UDisplayContext icu::DateIntervalFormat::getContext(UDisplayContextType, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">bytestream.h</td><td class="proto">void icu::ByteSink::AppendU8(const char8_t*, int32_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">dtitvfmt.h</td><td class="proto">void icu::DateIntervalFormat::setContext(UDisplayContext, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">dtptngen.h</td><td class="proto">UDateFormatHourCycle icu::DateTimePatternGenerator::getDefaultHourCycle(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setMaxDistance(const Locale&amp;, const Locale&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setDirection(ULocMatchDirection)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setNoDefaultLocale()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_ONLY_TWO_WAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">localematcher.h</td><td class="proto">bool icu::LocaleMatcher::isMatch(const Locale&amp;, const Locale&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">localematcher.h</td><td class="proto"><tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_WITH_ONE_WAY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCandela()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">locid.h</td><td class="proto">void icu::Locale::canonicalize(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoon()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::product(const MeasureUnit&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoonImperial()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::reciprocal(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDot()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::withDimensionality(int32_t, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDram()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto">MeasureUnit&amp; icu::MeasureUnit::operator=(MeasureUnit&amp;&amp;) noexcept</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDrop()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto">UMeasureUnitComplexity icu::MeasureUnit::getComplexity(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getEarthRadius()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto">const char* icu::MeasureUnit::getIdentifier() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGrain()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto">icu::MeasureUnit::MeasureUnit(MeasureUnit&amp;&amp;) noexcept</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getJigger()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto">int32_t icu::MeasureUnit::getDimensionality(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getLumen()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::forIdentifier(StringPiece, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPinch()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(const char8_t*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getQuartImperial()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(const char8_t*, int32_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createCandela(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(const std::u8string&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoon(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">stringpiece.h</td><td class="proto">icu::StringPiece::StringPiece(std::nullptr_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoonImperial(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">stringpiece.h</td><td class="proto">int32_t icu::StringPiece::compare(StringPiece)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDot(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">stringpiece.h</td><td class="proto">int32_t icu::StringPiece::find(StringPiece, int32_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDram(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">stringpiece.h</td><td class="proto">void icu::StringPiece::set(const char8_t*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDrop(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">stringpiece.h</td><td class="proto">void icu::StringPiece::set(const char8_t*, int32_t)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createEarthRadius(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">translit.h</td><td class="proto">UnicodeSet&amp; icu::Transliterator::getSourceSet(UnicodeSet&amp;) const</td><td class=""><i>(untagged)</i></td><td>Stable<br>
-<span class=""><span>ICU 2.4</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createGrain(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">translit.h</td><td class="proto"><tt>static</tt> UnicodeString&amp; icu::Transliterator::getDisplayName(const UnicodeString&amp;, UnicodeString&amp;)</td><td class=""><i>(untagged)</i></td><td>Stable<br>
-<span class=""><span>ICU 2.0</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createJigger(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">translit.h</td><td class="proto">void icu::Transliterator::finishTransliteration(Replaceable&amp;, UTransPosition&amp;) const</td><td class=""><i>(untagged)</i></td><td>Stable<br>
-<span class=""><span>ICU 2.0</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createLumen(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">translit.h</td><td class="proto">void icu::Transliterator::transliterate(Replaceable&amp;, UTransPosition&amp;, UErrorCode&amp;) const</td><td class=""><i>(untagged)</i></td><td>Stable<br>
-<span class=""><span>ICU 2.0</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPinch(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_11</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createQuartImperial(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_12</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">measunit.h</td><td class="proto">std::pair&lt; LocalArray&lt; MeasureUnit &gt;, int32_t &gt; icu::MeasureUnit::splitToSingleUnits(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_23</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::usage(StringPiece) const&amp;</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_24</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::usage(StringPiece)&amp;&amp;</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">udateintervalformat.h</td><td class="proto">void udtitvfmt_formatCalendarToResult(const UDateIntervalFormat*, UCalendar*, UCalendar*, UFormattedDateInterval*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">numberformatter.h</td><td class="proto">MeasureUnit icu::number::FormattedNumber::getOutputUnit(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">udateintervalformat.h</td><td class="proto">void udtitvfmt_formatToResult(const UDateIntervalFormat*, UDate, UDate, UFormattedDateInterval*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">numberrangeformatter.h</td><td class="proto">std::pair&lt; StringClass, StringClass &gt; icu::number::FormattedNumberRange::getDecimalNumbers(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row1">
-<td class="file">udatpg.h</td><td class="proto">UDateFormatHourCycle udatpg_getDefaultHourCycle(const UDateTimePatternGenerator*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">plurrule.h</td><td class="proto">UnicodeString icu::PluralRules::select(const number::FormattedNumberRange&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
 </tr>
 <tr class="row0">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_BREAK_ENGINE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">timezone.h</td><td class="proto"><tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration(UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_CHARACTER</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">timezone.h</td><td class="proto"><tt>static</tt> StringEnumeration* icu::TimeZone::createEnumerationForRawOffset(int32_t, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_LINE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">timezone.h</td><td class="proto"><tt>static</tt> StringEnumeration* icu::TimeZone::createEnumerationForRegion(const char*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_SENTENCE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_ARABIC_EXTENDED_B</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_TITLE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_CYPRO_MINOAN</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_WORD</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_ETHIOPIC_EXTENDED_B</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">utrace.h</td><td class="proto"><tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_START</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 67</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_KANA_EXTENDED_B</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_LATIN_EXTENDED_F</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_LATIN_EXTENDED_G</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_OLD_UYGHUR</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_TANGSA</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_TOTO</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_A</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_VITHKUQI</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_ZNAMENNY_MUSICAL_NOTATION</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UJoiningGroup::U_JG_THIN_YEH</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UJoiningGroup::U_JG_VERTICAL_TAIL</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row1">
+<td class="file">ucurr.h</td><td class="proto"><tt>enum</tt> UCurrNameStyle::UCURR_FORMAL_SYMBOL_NAME</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row0">
+<td class="file">ucurr.h</td><td class="proto"><tt>enum</tt> UCurrNameStyle::UCURR_VARIANT_SYMBOL_NAME</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row1">
+<td class="file">udateintervalformat.h</td><td class="proto">UDisplayContext udtitvfmt_getContext(const UDateIntervalFormat*, UDisplayContextType, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row0">
+<td class="file">udateintervalformat.h</td><td class="proto">void udtitvfmt_setContext(UDateIntervalFormat*, UDisplayContext, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row1">
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_AUTO</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row0">
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_MIN2</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row1">
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_FORMAL</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row0">
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_VARIANT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row1">
+<td class="file">unumberformatter.h</td><td class="proto">int32_t unumf_resultToDecimalNumber(const UFormattedNumber*, char*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row0">
+<td class="file">unumberrangeformatter.h</td><td class="proto">UFormattedNumberRange* unumrf_openResult(UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row1">
+<td class="file">unumberrangeformatter.h</td><td class="proto">UNumberRangeFormatter* unumrf_openForSkeletonWithCollapseAndIdentityFallback(const UChar*, int32_t, UNumberRangeCollapse, UNumberRangeIdentityFallback, const char*, UParseError*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row0">
+<td class="file">unumberrangeformatter.h</td><td class="proto">UNumberRangeIdentityResult unumrf_resultGetIdentityResult(const UFormattedNumberRange*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row1">
+<td class="file">unumberrangeformatter.h</td><td class="proto">const UFormattedValue* unumrf_resultAsValue(const UFormattedNumberRange*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row0">
+<td class="file">unumberrangeformatter.h</td><td class="proto">int32_t unumrf_resultGetFirstDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row1">
+<td class="file">unumberrangeformatter.h</td><td class="proto">int32_t unumrf_resultGetSecondDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row0">
+<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_close(UNumberRangeFormatter*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row1">
+<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_closeResult(UFormattedNumberRange*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row0">
+<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_formatDecimalRange(const UNumberRangeFormatter*, const char*, int32_t, const char*, int32_t, UFormattedNumberRange*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row1">
+<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_formatDoubleRange(const UNumberRangeFormatter*, double, double, UFormattedNumberRange*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row0">
+<td class="file">upluralrules.h</td><td class="proto">int32_t uplrules_selectForRange(const UPluralRules*, const struct UFormattedNumberRange*, UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 68</td>
+</tr>
+<tr class="row1">
+<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_CYPRO_MINOAN</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row0">
+<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_OLD_UYGHUR</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row1">
+<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_TANGSA</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row0">
+<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_TOTO</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row1">
+<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_VITHKUQI</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row0">
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_INPUT_TOO_LONG_ERROR</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 </table>
 <P></P>
 <a href="#_top">(jump back to top)</a>
 <hr>
 <a name="added"></a>
-<h2>Added in ICU 69</h2>
+<h2>Added in ICU 70</h2>
 <table BORDER="1" class="genTable">
 <THEAD>
 <tr>
-<th>File</th><th>API</th><th>ICU 68</th><th>ICU 69</th>
+<th>File</th><th>API</th><th>ICU 69</th><th>ICU 70</th>
 </tr>
 </THEAD>
 <tr class="row1">
-<td class="file">basictz.h</td><td class="proto">void icu::BasicTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::withPrefix(UMeasurePrefix, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto">UMeasurePrefix icu::MeasureUnit::getPrefix(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMilligramOfglucosePerDeciliter()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMilligramOfglucosePerDeciliter(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::unitDisplayCase(StringPiece) const&amp;</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::unitDisplayCase(StringPiece)&amp;&amp;</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Precision icu::number::FractionPrecision::withSignificantDigits(int32_t, int32_t, UNumberRoundingPriority) const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Precision icu::number::Precision::trailingZeroDisplay(UNumberTrailingZeroDisplay) const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">StringProp&amp; icu::number::impl::StringProp::operator=(StringProp&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">StringProp&amp; icu::number::impl::StringProp::operator=(const StringProp&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<td class="file">dcfmtsym.h</td><td class="proto"><tt>enum</tt>  							icu::DecimalFormatSymbols::ENumberFormatSymbol::kApproximatelySignSymbol</td><td class="">(missing)</td><td>Internal<br>
 <span class=""><span></span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">bool icu::number::impl::StringProp::isSet() const</td><td class="">(missing)</td><td>Internal<br>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getItem()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 70</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilowattHourPer100Kilometer()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 70</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createItem(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 70</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createKilowattHourPer100Kilometer(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 70</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">numberformatter.h</td><td class="proto">const DecimalFormatSymbols* icu::number::LocalizedNumberFormatter::getDecimalFormatSymbols() const</td><td class="">(missing)</td><td>Internal<br>
 <span class=""><span></span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">const char* icu::number::FormattedNumber::getGender(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span>ICU 69</span></span></td>
+<td class="file">numberrangeformatter.h</td><td class="proto">icu::number::FormattedNumberRange::FormattedNumberRange()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 70</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::impl::StringProp::StringProp(StringProp&amp;&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<td class="file">timezone.h</td><td class="proto"><tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration(UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row1">
+<td class="file">timezone.h</td><td class="proto"><tt>static</tt> StringEnumeration* icu::TimeZone::createEnumerationForRawOffset(int32_t, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row0">
+<td class="file">timezone.h</td><td class="proto"><tt>static</tt> StringEnumeration* icu::TimeZone::createEnumerationForRegion(const char*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto">bool u_stringHasBinaryProperty(const UChar*, int32_t, UProperty)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 70</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_ARABIC_EXTENDED_B</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_CYPRO_MINOAN</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_ETHIOPIC_EXTENDED_B</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_KANA_EXTENDED_B</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_LATIN_EXTENDED_F</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_LATIN_EXTENDED_G</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_OLD_UYGHUR</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_TANGSA</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_TOTO</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_A</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_VITHKUQI</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_ZNAMENNY_MUSICAL_NOTATION</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UJoiningGroup::U_JG_THIN_YEH</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UJoiningGroup::U_JG_VERTICAL_TAIL</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_BASIC_EMOJI</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 70</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_EMOJI_KEYCAP_SEQUENCE</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 70</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_FLAG_SEQUENCE</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 70</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_MODIFIER_SEQUENCE</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 70</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_TAG_SEQUENCE</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 70</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_ZWJ_SEQUENCE</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 70</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_RGI_EMOJI</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 70</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatSymbolType::UDAT_NARROW_QUARTERS</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 70</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatSymbolType::UDAT_STANDALONE_NARROW_QUARTERS</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 70</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uniset.h</td><td class="proto">bool icu::UnicodeSet::hasStrings() const</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 70</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatSymbol::UNUM_APPROXIMATELY_SIGN_SYMBOL</td><td class="">(missing)</td><td>Internal<br>
 <span class=""><span></span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::impl::StringProp::StringProp(const StringProp&amp;)</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span></span></span></td>
+<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_CYPRO_MINOAN</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">icu::number::impl::StringProp::~StringProp()</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span></span></span></td>
+<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_OLD_UYGHUR</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">int16_t icu::number::impl::StringProp::length() const</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span></span></span></td>
+<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_TANGSA</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">void icu::number::impl::StringProp::set(StringPiece)</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span></span></span></td>
+<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_TOTO</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
 </tr>
 <tr class="row1">
-<td class="file">rbtz.h</td><td class="proto">void icu::RuleBasedTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
+<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_VITHKUQI</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
 </tr>
 <tr class="row0">
-<td class="file">simpletz.h</td><td class="proto">void icu::SimpleTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
+<td class="file">uset.h</td><td class="proto">bool uset_hasStrings(const USet*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 70</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">ubrk.h</td><td class="proto">UBreakIterator* ubrk_clone(const UBreakIterator*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
+<td class="file">uset.h</td><td class="proto">int32_t uset_getRangeCount(const USet*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 70</span></span></td>
 </tr>
 <tr class="row0">
-<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_DAYLIGHT_FORMER</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
+<td class="file">usetiter.h</td><td class="proto">UnicodeSetIterator&amp; icu::UnicodeSetIterator::skipToStrings()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 70</span></span></td>
 </tr>
 <tr class="row1">
-<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_DAYLIGHT_LATTER</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_FORMER</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_LATTER</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_STANDARD_FORMER</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_STANDARD_LATTER</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">ucal.h</td><td class="proto">void ucal_getTimeZoneOffsetFromLocal(const UCalendar*, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t*, int32_t*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto"><tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_NUMBER_RANGE_SPAN</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uniset.h</td><td class="proto">UnicodeSet&amp; icu::UnicodeSet::retain(const UnicodeString&amp;)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_CEILING</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_FLOOR</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_ODD</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberRoundingPriority::UNUM_ROUNDING_PRIORITY_RELAXED</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberRoundingPriority::UNUM_ROUNDING_PRIORITY_STRICT</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_NEGATIVE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_NEGATIVE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberTrailingZeroDisplay::UNUM_TRAILING_ZERO_AUTO</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberTrailingZeroDisplay::UNUM_TRAILING_ZERO_HIDE_IF_WHOLE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uset.h</td><td class="proto">void uset_complementAllCodePoints(USet*, const UChar*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uset.h</td><td class="proto">void uset_complementRange(USet*, UChar32, UChar32)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uset.h</td><td class="proto">void uset_complementString(USet*, const UChar*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uset.h</td><td class="proto">void uset_removeAllCodePoints(USet*, const UChar*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uset.h</td><td class="proto">void uset_retainAllCodePoints(USet*, const UChar*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uset.h</td><td class="proto">void uset_retainString(USet*, const UChar*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">vtzone.h</td><td class="proto">void icu::VTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 69</span></span></td>
+<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_INPUT_TOO_LONG_ERROR</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 68</span></span></td>
 </tr>
 </table>
 <P></P>
 <a href="#_top">(jump back to top)</a>
 <hr>
 <a name="other"></a>
-<h2>Other existing drafts in ICU 69</h2>
+<h2>Other existing drafts in ICU 70</h2>
 <div class="other">
 <table BORDER="1" class="genTable">
 <THEAD>
 <tr>
-<th>File</th><th>API</th><th>ICU 68</th><th>ICU 69</th>
+<th>File</th><th>API</th><th>ICU 69</th><th>ICU 70</th>
 </tr>
 </THEAD>
 <tr class="row1">
-<td class="file">dtitvfmt.h</td><td class="proto">UDisplayContext icu::DateIntervalFormat::getContext(UDisplayContextType, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">dtitvfmt.h</td><td class="proto">void icu::DateIntervalFormat::setContext(UDisplayContext, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setMaxDistance(const Locale&amp;, const Locale&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">Builder&amp; icu::LocaleMatcher::Builder::setNoDefaultLocale()</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">UBool icu::LocaleMatcher::isMatch(const Locale&amp;, const Locale&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
+<td class="file">basictz.h</td><td class="proto">void icu::BasicTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
 </tr>
 <tr class="row0">
 <td class="file">measfmt.h</td><td class="proto">void icu::MeasureFormat::parseObject(const UnicodeString&amp;, Formattable&amp;, ParsePosition&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 53</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCandela()</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
+<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::withPrefix(UMeasurePrefix, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoon()</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
+<td class="file">measunit.h</td><td class="proto">UMeasurePrefix icu::MeasureUnit::getPrefix(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoonImperial()</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMilligramOfglucosePerDeciliter()</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDot()</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMilligramOfglucosePerDeciliter(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDram()</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
+<td class="file">numberformatter.h</td><td class="proto">Precision icu::number::FractionPrecision::withSignificantDigits(int32_t, int32_t, UNumberRoundingPriority) const</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDrop()</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
+<td class="file">numberformatter.h</td><td class="proto">Precision icu::number::Precision::trailingZeroDisplay(UNumberTrailingZeroDisplay) const</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getEarthRadius()</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
+<td class="file">rbtz.h</td><td class="proto">void icu::RuleBasedTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGrain()</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
+<td class="file">simpletz.h</td><td class="proto">void icu::SimpleTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getJigger()</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
+<td class="file">ubrk.h</td><td class="proto">UBreakIterator* ubrk_clone(const UBreakIterator*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getLumen()</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
+<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_DAYLIGHT_FORMER</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPinch()</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
+<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_DAYLIGHT_LATTER</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getQuartImperial()</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
+<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_FORMER</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createCandela(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
+<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_LATTER</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoon(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
+<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_STANDARD_FORMER</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoonImperial(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
+<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_STANDARD_LATTER</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDot(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
+<td class="file">ucal.h</td><td class="proto">void ucal_getTimeZoneOffsetFromLocal(const UCalendar*, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t*, int32_t*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDram(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
+<td class="file">uformattedvalue.h</td><td class="proto"><tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_NUMBER_RANGE_SPAN</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDrop(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
+<td class="file">uniset.h</td><td class="proto">UnicodeSet&amp; icu::UnicodeSet::retain(const UnicodeString&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createEarthRadius(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_CEILING</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createGrain(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_FLOOR</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createJigger(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_ODD</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createLumen(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberRoundingPriority::UNUM_ROUNDING_PRIORITY_RELAXED</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPinch(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberRoundingPriority::UNUM_ROUNDING_PRIORITY_STRICT</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
 </tr>
 <tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createQuartImperial(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_NEGATIVE</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
 </tr>
 <tr class="row1">
-<td class="file">measunit.h</td><td class="proto">std::pair&lt; LocalArray&lt; MeasureUnit &gt;, int32_t &gt; icu::MeasureUnit::splitToSingleUnits(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_NEGATIVE</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
 </tr>
 <tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::usage(StringPiece) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberTrailingZeroDisplay::UNUM_TRAILING_ZERO_AUTO</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
 </tr>
 <tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::usage(StringPiece)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberTrailingZeroDisplay::UNUM_TRAILING_ZERO_HIDE_IF_WHOLE</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
 </tr>
 <tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">MeasureUnit icu::number::FormattedNumber::getOutputUnit(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">std::pair&lt; StringClass, StringClass &gt; icu::number::FormattedNumberRange::getDecimalNumbers(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">plurrule.h</td><td class="proto">UnicodeString icu::PluralRules::select(const number::FormattedNumberRange&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">ucurr.h</td><td class="proto"><tt>enum</tt> UCurrNameStyle::UCURR_FORMAL_SYMBOL_NAME</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">ucurr.h</td><td class="proto"><tt>enum</tt> UCurrNameStyle::UCURR_VARIANT_SYMBOL_NAME</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">udateintervalformat.h</td><td class="proto">UDisplayContext udtitvfmt_getContext(const UDateIntervalFormat*, UDisplayContextType, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">udateintervalformat.h</td><td class="proto">void udtitvfmt_setContext(UDateIntervalFormat*, UDisplayContext, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_AUTO</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_MIN2</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_FORMAL</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_VARIANT</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto">int32_t unumf_resultToDecimalNumber(const UFormattedNumber*, char*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberrangeformatter.h</td><td class="proto">UFormattedNumberRange* unumrf_openResult(UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberrangeformatter.h</td><td class="proto">UNumberRangeFormatter* unumrf_openForSkeletonWithCollapseAndIdentityFallback(const UChar*, int32_t, UNumberRangeCollapse, UNumberRangeIdentityFallback, const char*, UParseError*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberrangeformatter.h</td><td class="proto">UNumberRangeIdentityResult unumrf_resultGetIdentityResult(const UFormattedNumberRange*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberrangeformatter.h</td><td class="proto">const UFormattedValue* unumrf_resultAsValue(const UFormattedNumberRange*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberrangeformatter.h</td><td class="proto">int32_t unumrf_resultGetFirstDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberrangeformatter.h</td><td class="proto">int32_t unumrf_resultGetSecondDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_close(UNumberRangeFormatter*)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_closeResult(UFormattedNumberRange*)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_formatDecimalRange(const UNumberRangeFormatter*, const char*, int32_t, const char*, int32_t, UFormattedNumberRange*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_formatDoubleRange(const UNumberRangeFormatter*, double, double, UFormattedNumberRange*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">upluralrules.h</td><td class="proto">int32_t uplrules_selectForRange(const UPluralRules*, const struct UFormattedNumberRange*, UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 68</td>
-</tr>
-<tr class="row1">
 <td class="file">uregex.h</td><td class="proto"><tt>enum</tt> URegexpFlag::UREGEX_CANON_EQ</td><td class="" colspan="2" align="center">Draft<br>ICU 2.4</td>
 </tr>
+<tr class="row1">
+<td class="file">uset.h</td><td class="proto">void uset_complementAllCodePoints(USet*, const UChar*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
+</tr>
+<tr class="row0">
+<td class="file">uset.h</td><td class="proto">void uset_complementRange(USet*, UChar32, UChar32)</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
+</tr>
+<tr class="row1">
+<td class="file">uset.h</td><td class="proto">void uset_complementString(USet*, const UChar*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
+</tr>
+<tr class="row0">
+<td class="file">uset.h</td><td class="proto">void uset_removeAllCodePoints(USet*, const UChar*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
+</tr>
+<tr class="row1">
+<td class="file">uset.h</td><td class="proto">void uset_retainAllCodePoints(USet*, const UChar*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
+</tr>
+<tr class="row0">
+<td class="file">uset.h</td><td class="proto">void uset_retainString(USet*, const UChar*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
+</tr>
+<tr class="row1">
+<td class="file">vtzone.h</td><td class="proto">void icu::VTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
+</tr>
 </table>
 </div>
 <P></P>
@@ -799,13 +857,502 @@
 <i>This section shows cases where the signature was "simplified" for the sake of comparison. The simplified form is in bold, followed by
     	all possible variations in "original" form.</i>
 <div class="other">
-<ul></ul>
+<ul>
+<li>
+<b>UClassID icu::BreakIterator::getDynamicClassID() const</b>
+<br>UClassID icu::BreakIterator::getDynamicClassID() const override=0<br>UClassID icu::BreakIterator::getDynamicClassID() const=0<br>
+</li>
+<li>
+<b>UClassID icu::Calendar::getDynamicClassID() const</b>
+<br>UClassID icu::Calendar::getDynamicClassID() const override=0<br>UClassID icu::Calendar::getDynamicClassID() const=0<br>
+</li>
+<li>
+<b>UClassID icu::Collator::getDynamicClassID() const</b>
+<br>UClassID icu::Collator::getDynamicClassID() const override=0<br>UClassID icu::Collator::getDynamicClassID() const=0<br>
+</li>
+<li>
+<b>UClassID icu::ForwardCharacterIterator::getDynamicClassID() const</b>
+<br>UClassID icu::ForwardCharacterIterator::getDynamicClassID() const override=0<br>UClassID icu::ForwardCharacterIterator::getDynamicClassID() const=0<br>
+</li>
+<li>
+<b>UClassID icu::NumberFormat::getDynamicClassID() const</b>
+<br>UClassID icu::NumberFormat::getDynamicClassID() const override=0<br>UClassID icu::NumberFormat::getDynamicClassID() const=0<br>
+</li>
+<li>
+<b>UClassID icu::TimeZone::getDynamicClassID() const</b>
+<br>UClassID icu::TimeZone::getDynamicClassID() const override=0<br>UClassID icu::TimeZone::getDynamicClassID() const=0<br>
+</li>
+<li>
+<b>UClassID icu::Transliterator::getDynamicClassID() const</b>
+<br>UClassID icu::Transliterator::getDynamicClassID() const override=0<br>UClassID icu::Transliterator::getDynamicClassID() const=0<br>
+</li>
+<li>
+<b>UClassID icu::UnicodeFunctor::getDynamicClassID() const</b>
+<br>UClassID icu::UnicodeFunctor::getDynamicClassID() const override=0<br>UClassID icu::UnicodeFunctor::getDynamicClassID() const=0<br>
+</li>
+<li>
+<b>UMatchDegree icu::UnicodeFilter::matches(const Replaceable&amp;, int32_t&amp;, int32_t, bool)</b>
+<br>UMatchDegree icu::UnicodeFilter::matches(const Replaceable&amp;, int32_t&amp;, int32_t, UBool)<br>UMatchDegree icu::UnicodeFilter::matches(const Replaceable&amp;, int32_t&amp;, int32_t, UBool) override<br>
+</li>
+<li>
+<b>UMatchDegree icu::UnicodeSet::matches(const Replaceable&amp;, int32_t&amp;, int32_t, bool)</b>
+<br>UMatchDegree icu::UnicodeSet::matches(const Replaceable&amp;, int32_t&amp;, int32_t, UBool)<br>UMatchDegree icu::UnicodeSet::matches(const Replaceable&amp;, int32_t&amp;, int32_t, UBool) override<br>
+</li>
+<li>
+<b>UnicodeString&amp; icu::UnicodeSet::toPattern(UnicodeString&amp;, bool escapeUnprintable=) const</b>
+<br>UnicodeString&amp; icu::UnicodeSet::toPattern(UnicodeString&amp;, UBool escapeUnprintable=) const<br>UnicodeString&amp; icu::UnicodeSet::toPattern(UnicodeString&amp;, UBool escapeUnprintable=) const override<br>
+</li>
+<li>
+<b>bool icu::AnnualTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&amp;) const</b>
+<br>UBool icu::AnnualTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&amp;) const<br>UBool icu::AnnualTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::AnnualTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&amp;) const</b>
+<br>UBool icu::AnnualTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&amp;) const<br>UBool icu::AnnualTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::AnnualTimeZoneRule::getNextStart(UDate, int32_t, int32_t, bool, UDate&amp;) const</b>
+<br>UBool icu::AnnualTimeZoneRule::getNextStart(UDate, int32_t, int32_t, UBool, UDate&amp;) const<br>UBool icu::AnnualTimeZoneRule::getNextStart(UDate, int32_t, int32_t, UBool, UDate&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::AnnualTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, bool, UDate&amp;) const</b>
+<br>UBool icu::AnnualTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, UBool, UDate&amp;) const<br>UBool icu::AnnualTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, UBool, UDate&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::AnnualTimeZoneRule::isEquivalentTo(const TimeZoneRule&amp;) const</b>
+<br>UBool icu::AnnualTimeZoneRule::isEquivalentTo(const TimeZoneRule&amp;) const<br>UBool icu::AnnualTimeZoneRule::isEquivalentTo(const TimeZoneRule&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::AnnualTimeZoneRule::operator!=(const TimeZoneRule&amp;) const</b>
+<br>UBool icu::AnnualTimeZoneRule::operator!=(const TimeZoneRule&amp;) const<br>bool icu::AnnualTimeZoneRule::operator!=(const TimeZoneRule&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::AnnualTimeZoneRule::operator==(const TimeZoneRule&amp;) const</b>
+<br>UBool icu::AnnualTimeZoneRule::operator==(const TimeZoneRule&amp;) const<br>bool icu::AnnualTimeZoneRule::operator==(const TimeZoneRule&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::BreakIterator::operator==(const BreakIterator&amp;) const</b>
+<br>UBool icu::BreakIterator::operator==(const BreakIterator&amp;) const=0<br>bool icu::BreakIterator::operator==(const BreakIterator&amp;) const=0<br>
+</li>
+<li>
+<b>bool icu::ChoiceFormat::operator==(const Format&amp;) const</b>
+<br>UBool icu::ChoiceFormat::operator==(const Format&amp;) const<br>bool icu::ChoiceFormat::operator==(const Format&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::DateFormat::operator==(const Format&amp;) const</b>
+<br>UBool icu::DateFormat::operator==(const Format&amp;) const<br>bool icu::DateFormat::operator==(const Format&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::DateIntervalFormat::operator==(const Format&amp;) const</b>
+<br>UBool icu::DateIntervalFormat::operator==(const Format&amp;) const<br>bool icu::DateIntervalFormat::operator==(const Format&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::DecimalFormat::operator==(const Format&amp;) const</b>
+<br>UBool icu::DecimalFormat::operator==(const Format&amp;) const U_OVERRIDE<br>bool icu::DecimalFormat::operator==(const Format&amp;) const U_OVERRIDE<br>
+</li>
+<li>
+<b>bool icu::Format::operator==(const Format&amp;) const</b>
+<br>UBool icu::Format::operator==(const Format&amp;) const=0<br>bool icu::Format::operator==(const Format&amp;) const=0<br>
+</li>
+<li>
+<b>bool icu::ForwardCharacterIterator::operator==(const ForwardCharacterIterator&amp;) const</b>
+<br>UBool icu::ForwardCharacterIterator::operator==(const ForwardCharacterIterator&amp;) const=0<br>bool icu::ForwardCharacterIterator::operator==(const ForwardCharacterIterator&amp;) const=0<br>
+</li>
+<li>
+<b>bool icu::GregorianCalendar::haveDefaultCentury() const</b>
+<br>UBool icu::GregorianCalendar::haveDefaultCentury() const<br>UBool icu::GregorianCalendar::haveDefaultCentury() const override<br>
+</li>
+<li>
+<b>bool icu::GregorianCalendar::inDaylightTime(UErrorCode&amp;) const</b>
+<br>UBool icu::GregorianCalendar::inDaylightTime(UErrorCode&amp;) const<br>UBool icu::GregorianCalendar::inDaylightTime(UErrorCode&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::GregorianCalendar::isEquivalentTo(const Calendar&amp;) const</b>
+<br>UBool icu::GregorianCalendar::isEquivalentTo(const Calendar&amp;) const<br>UBool icu::GregorianCalendar::isEquivalentTo(const Calendar&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::InitialTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&amp;) const</b>
+<br>UBool icu::InitialTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&amp;) const<br>UBool icu::InitialTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::InitialTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&amp;) const</b>
+<br>UBool icu::InitialTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&amp;) const<br>UBool icu::InitialTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::InitialTimeZoneRule::getNextStart(UDate, int32_t, int32_t, bool, UDate&amp;) const</b>
+<br>UBool icu::InitialTimeZoneRule::getNextStart(UDate, int32_t, int32_t, UBool, UDate&amp;) const<br>UBool icu::InitialTimeZoneRule::getNextStart(UDate, int32_t, int32_t, UBool, UDate&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::InitialTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, bool, UDate&amp;) const</b>
+<br>UBool icu::InitialTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, UBool, UDate&amp;) const<br>UBool icu::InitialTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, UBool, UDate&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::InitialTimeZoneRule::isEquivalentTo(const TimeZoneRule&amp;) const</b>
+<br>UBool icu::InitialTimeZoneRule::isEquivalentTo(const TimeZoneRule&amp;) const<br>UBool icu::InitialTimeZoneRule::isEquivalentTo(const TimeZoneRule&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::InitialTimeZoneRule::operator!=(const TimeZoneRule&amp;) const</b>
+<br>UBool icu::InitialTimeZoneRule::operator!=(const TimeZoneRule&amp;) const<br>bool icu::InitialTimeZoneRule::operator!=(const TimeZoneRule&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::InitialTimeZoneRule::operator==(const TimeZoneRule&amp;) const</b>
+<br>UBool icu::InitialTimeZoneRule::operator==(const TimeZoneRule&amp;) const<br>bool icu::InitialTimeZoneRule::operator==(const TimeZoneRule&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::MeasureFormat::operator==(const Format&amp;) const</b>
+<br>UBool icu::MeasureFormat::operator==(const Format&amp;) const<br>bool icu::MeasureFormat::operator==(const Format&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::MessageFormat::operator==(const Format&amp;) const</b>
+<br>UBool icu::MessageFormat::operator==(const Format&amp;) const<br>bool icu::MessageFormat::operator==(const Format&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::NumberFormat::operator==(const Format&amp;) const</b>
+<br>UBool icu::NumberFormat::operator==(const Format&amp;) const<br>bool icu::NumberFormat::operator==(const Format&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::PluralFormat::operator==(const Format&amp;) const</b>
+<br>UBool icu::PluralFormat::operator==(const Format&amp;) const<br>bool icu::PluralFormat::operator==(const Format&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::RuleBasedBreakIterator::isBoundary(int32_t)</b>
+<br>UBool icu::RuleBasedBreakIterator::isBoundary(int32_t)<br>UBool icu::RuleBasedBreakIterator::isBoundary(int32_t) override<br>
+</li>
+<li>
+<b>bool icu::RuleBasedBreakIterator::operator==(const BreakIterator&amp;) const</b>
+<br>UBool icu::RuleBasedBreakIterator::operator==(const BreakIterator&amp;) const<br>bool icu::RuleBasedBreakIterator::operator==(const BreakIterator&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::RuleBasedCollator::operator==(const Collator&amp;) const</b>
+<br>UBool icu::RuleBasedCollator::operator==(const Collator&amp;) const<br>bool icu::RuleBasedCollator::operator==(const Collator&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::RuleBasedNumberFormat::isLenient() const</b>
+<br>UBool icu::RuleBasedNumberFormat::isLenient() const<br>UBool icu::RuleBasedNumberFormat::isLenient() const override<br>
+</li>
+<li>
+<b>bool icu::RuleBasedNumberFormat::operator==(const Format&amp;) const</b>
+<br>UBool icu::RuleBasedNumberFormat::operator==(const Format&amp;) const<br>bool icu::RuleBasedNumberFormat::operator==(const Format&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::RuleBasedTimeZone::getNextTransition(UDate, bool, TimeZoneTransition&amp;) const</b>
+<br>UBool icu::RuleBasedTimeZone::getNextTransition(UDate, UBool, TimeZoneTransition&amp;) const<br>UBool icu::RuleBasedTimeZone::getNextTransition(UDate, UBool, TimeZoneTransition&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::RuleBasedTimeZone::getPreviousTransition(UDate, bool, TimeZoneTransition&amp;) const</b>
+<br>UBool icu::RuleBasedTimeZone::getPreviousTransition(UDate, UBool, TimeZoneTransition&amp;) const<br>UBool icu::RuleBasedTimeZone::getPreviousTransition(UDate, UBool, TimeZoneTransition&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::RuleBasedTimeZone::hasSameRules(const TimeZone&amp;) const</b>
+<br>UBool icu::RuleBasedTimeZone::hasSameRules(const TimeZone&amp;) const<br>UBool icu::RuleBasedTimeZone::hasSameRules(const TimeZone&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::RuleBasedTimeZone::inDaylightTime(UDate, UErrorCode&amp;) const</b>
+<br>UBool icu::RuleBasedTimeZone::inDaylightTime(UDate, UErrorCode&amp;) const<br>UBool icu::RuleBasedTimeZone::inDaylightTime(UDate, UErrorCode&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::RuleBasedTimeZone::operator==(const TimeZone&amp;) const</b>
+<br>UBool icu::RuleBasedTimeZone::operator==(const TimeZone&amp;) const<br>bool icu::RuleBasedTimeZone::operator==(const TimeZone&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::RuleBasedTimeZone::useDaylightTime() const</b>
+<br>UBool icu::RuleBasedTimeZone::useDaylightTime() const<br>UBool icu::RuleBasedTimeZone::useDaylightTime() const override<br>
+</li>
+<li>
+<b>bool icu::SelectFormat::operator==(const Format&amp;) const</b>
+<br>UBool icu::SelectFormat::operator==(const Format&amp;) const<br>bool icu::SelectFormat::operator==(const Format&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::SimpleDateFormat::operator==(const Format&amp;) const</b>
+<br>UBool icu::SimpleDateFormat::operator==(const Format&amp;) const<br>bool icu::SimpleDateFormat::operator==(const Format&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::SimpleNumberFormatFactory::visible() const</b>
+<br>UBool icu::SimpleNumberFormatFactory::visible() const<br>UBool icu::SimpleNumberFormatFactory::visible() const override<br>
+</li>
+<li>
+<b>bool icu::SimpleTimeZone::getNextTransition(UDate, bool, TimeZoneTransition&amp;) const</b>
+<br>UBool icu::SimpleTimeZone::getNextTransition(UDate, UBool, TimeZoneTransition&amp;) const<br>UBool icu::SimpleTimeZone::getNextTransition(UDate, UBool, TimeZoneTransition&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::SimpleTimeZone::getPreviousTransition(UDate, bool, TimeZoneTransition&amp;) const</b>
+<br>UBool icu::SimpleTimeZone::getPreviousTransition(UDate, UBool, TimeZoneTransition&amp;) const<br>UBool icu::SimpleTimeZone::getPreviousTransition(UDate, UBool, TimeZoneTransition&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::SimpleTimeZone::hasSameRules(const TimeZone&amp;) const</b>
+<br>UBool icu::SimpleTimeZone::hasSameRules(const TimeZone&amp;) const<br>UBool icu::SimpleTimeZone::hasSameRules(const TimeZone&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::SimpleTimeZone::inDaylightTime(UDate, UErrorCode&amp;) const</b>
+<br>UBool icu::SimpleTimeZone::inDaylightTime(UDate, UErrorCode&amp;) const<br>UBool icu::SimpleTimeZone::inDaylightTime(UDate, UErrorCode&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::SimpleTimeZone::operator==(const TimeZone&amp;) const</b>
+<br>UBool icu::SimpleTimeZone::operator==(const TimeZone&amp;) const<br>bool icu::SimpleTimeZone::operator==(const TimeZone&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::SimpleTimeZone::useDaylightTime() const</b>
+<br>UBool icu::SimpleTimeZone::useDaylightTime() const<br>UBool icu::SimpleTimeZone::useDaylightTime() const override<br>
+</li>
+<li>
+<b>bool icu::StringCharacterIterator::operator==(const ForwardCharacterIterator&amp;) const</b>
+<br>UBool icu::StringCharacterIterator::operator==(const ForwardCharacterIterator&amp;) const<br>bool icu::StringCharacterIterator::operator==(const ForwardCharacterIterator&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::StringSearch::operator==(const SearchIterator&amp;) const</b>
+<br>UBool icu::StringSearch::operator==(const SearchIterator&amp;) const<br>bool icu::StringSearch::operator==(const SearchIterator&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::TimeArrayTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&amp;) const</b>
+<br>UBool icu::TimeArrayTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&amp;) const<br>UBool icu::TimeArrayTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::TimeArrayTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&amp;) const</b>
+<br>UBool icu::TimeArrayTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&amp;) const<br>UBool icu::TimeArrayTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::TimeArrayTimeZoneRule::getNextStart(UDate, int32_t, int32_t, bool, UDate&amp;) const</b>
+<br>UBool icu::TimeArrayTimeZoneRule::getNextStart(UDate, int32_t, int32_t, UBool, UDate&amp;) const<br>UBool icu::TimeArrayTimeZoneRule::getNextStart(UDate, int32_t, int32_t, UBool, UDate&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::TimeArrayTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, bool, UDate&amp;) const</b>
+<br>UBool icu::TimeArrayTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, UBool, UDate&amp;) const<br>UBool icu::TimeArrayTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, UBool, UDate&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::TimeArrayTimeZoneRule::isEquivalentTo(const TimeZoneRule&amp;) const</b>
+<br>UBool icu::TimeArrayTimeZoneRule::isEquivalentTo(const TimeZoneRule&amp;) const<br>UBool icu::TimeArrayTimeZoneRule::isEquivalentTo(const TimeZoneRule&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::TimeArrayTimeZoneRule::operator!=(const TimeZoneRule&amp;) const</b>
+<br>UBool icu::TimeArrayTimeZoneRule::operator!=(const TimeZoneRule&amp;) const<br>bool icu::TimeArrayTimeZoneRule::operator!=(const TimeZoneRule&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::TimeArrayTimeZoneRule::operator==(const TimeZoneRule&amp;) const</b>
+<br>UBool icu::TimeArrayTimeZoneRule::operator==(const TimeZoneRule&amp;) const<br>bool icu::TimeArrayTimeZoneRule::operator==(const TimeZoneRule&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::TimeZoneFormat::operator==(const Format&amp;) const</b>
+<br>UBool icu::TimeZoneFormat::operator==(const Format&amp;) const<br>bool icu::TimeZoneFormat::operator==(const Format&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::TimeZoneNames::operator==(const TimeZoneNames&amp;) const</b>
+<br>UBool icu::TimeZoneNames::operator==(const TimeZoneNames&amp;) const=0<br>bool icu::TimeZoneNames::operator==(const TimeZoneNames&amp;) const=0<br>
+</li>
+<li>
+<b>bool icu::UCharCharacterIterator::hasNext()</b>
+<br>UBool icu::UCharCharacterIterator::hasNext()<br>UBool icu::UCharCharacterIterator::hasNext() override<br>
+</li>
+<li>
+<b>bool icu::UCharCharacterIterator::hasPrevious()</b>
+<br>UBool icu::UCharCharacterIterator::hasPrevious()<br>UBool icu::UCharCharacterIterator::hasPrevious() override<br>
+</li>
+<li>
+<b>bool icu::UCharCharacterIterator::operator==(const ForwardCharacterIterator&amp;) const</b>
+<br>UBool icu::UCharCharacterIterator::operator==(const ForwardCharacterIterator&amp;) const<br>bool icu::UCharCharacterIterator::operator==(const ForwardCharacterIterator&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::UnicodeSet::contains(UChar32) const</b>
+<br>UBool icu::UnicodeSet::contains(UChar32) const<br>UBool icu::UnicodeSet::contains(UChar32) const override<br>
+</li>
+<li>
+<b>bool icu::UnicodeString::hasMetaData() const</b>
+<br>UBool icu::UnicodeString::hasMetaData() const<br>UBool icu::UnicodeString::hasMetaData() const override<br>
+</li>
+<li>
+<b>bool icu::UnicodeStringAppendable::appendCodePoint(UChar32)</b>
+<br>UBool icu::UnicodeStringAppendable::appendCodePoint(UChar32)<br>UBool icu::UnicodeStringAppendable::appendCodePoint(UChar32) override<br>
+</li>
+<li>
+<b>bool icu::UnicodeStringAppendable::appendCodeUnit(char16_t)</b>
+<br>UBool icu::UnicodeStringAppendable::appendCodeUnit(char16_t)<br>UBool icu::UnicodeStringAppendable::appendCodeUnit(char16_t) override<br>
+</li>
+<li>
+<b>bool icu::UnicodeStringAppendable::appendString(const char16_t*, int32_t)</b>
+<br>UBool icu::UnicodeStringAppendable::appendString(const char16_t*, int32_t)<br>UBool icu::UnicodeStringAppendable::appendString(const char16_t*, int32_t) override<br>
+</li>
+<li>
+<b>bool icu::UnicodeStringAppendable::reserveAppendCapacity(int32_t)</b>
+<br>UBool icu::UnicodeStringAppendable::reserveAppendCapacity(int32_t)<br>UBool icu::UnicodeStringAppendable::reserveAppendCapacity(int32_t) override<br>
+</li>
+<li>
+<b>bool icu::VTimeZone::getNextTransition(UDate, bool, TimeZoneTransition&amp;) const</b>
+<br>UBool icu::VTimeZone::getNextTransition(UDate, UBool, TimeZoneTransition&amp;) const<br>UBool icu::VTimeZone::getNextTransition(UDate, UBool, TimeZoneTransition&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::VTimeZone::getPreviousTransition(UDate, bool, TimeZoneTransition&amp;) const</b>
+<br>UBool icu::VTimeZone::getPreviousTransition(UDate, UBool, TimeZoneTransition&amp;) const<br>UBool icu::VTimeZone::getPreviousTransition(UDate, UBool, TimeZoneTransition&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::VTimeZone::hasSameRules(const TimeZone&amp;) const</b>
+<br>UBool icu::VTimeZone::hasSameRules(const TimeZone&amp;) const<br>UBool icu::VTimeZone::hasSameRules(const TimeZone&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::VTimeZone::inDaylightTime(UDate, UErrorCode&amp;) const</b>
+<br>UBool icu::VTimeZone::inDaylightTime(UDate, UErrorCode&amp;) const<br>UBool icu::VTimeZone::inDaylightTime(UDate, UErrorCode&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::VTimeZone::operator==(const TimeZone&amp;) const</b>
+<br>UBool icu::VTimeZone::operator==(const TimeZone&amp;) const<br>bool icu::VTimeZone::operator==(const TimeZone&amp;) const override<br>
+</li>
+<li>
+<b>bool icu::VTimeZone::useDaylightTime() const</b>
+<br>UBool icu::VTimeZone::useDaylightTime() const<br>UBool icu::VTimeZone::useDaylightTime() const override<br>
+</li>
+<li>
+<b>void icu::RuleBasedNumberFormat::setLenient(bool)</b>
+<br>void icu::RuleBasedNumberFormat::setLenient(UBool)<br>void icu::RuleBasedNumberFormat::setLenient(UBool) override<br>
+</li>
+<li>
+<b>void icu::RuleBasedTimeZone::getOffset(UDate, bool, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const</b>
+<br>void icu::RuleBasedTimeZone::getOffset(UDate, UBool, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const<br>void icu::RuleBasedTimeZone::getOffset(UDate, UBool, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const override<br>
+</li>
+<li>
+<b>void icu::SimpleTimeZone::getOffset(UDate, bool, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const</b>
+<br>void icu::SimpleTimeZone::getOffset(UDate, UBool, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const<br>void icu::SimpleTimeZone::getOffset(UDate, UBool, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const override<br>
+</li>
+<li>
+<b>void icu::VTimeZone::getOffset(UDate, bool, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const</b>
+<br>void icu::VTimeZone::getOffset(UDate, UBool, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const<br>void icu::VTimeZone::getOffset(UDate, UBool, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const override<br>
+</li>
+<li>
+<b>void* icu::AnnualTimeZoneRule::clone() const</b>
+<br>AnnualTimeZoneRule* icu::AnnualTimeZoneRule::clone() const<br>AnnualTimeZoneRule* icu::AnnualTimeZoneRule::clone() const override<br>
+</li>
+<li>
+<b>void* icu::BasicTimeZone::clone() const</b>
+<br>BasicTimeZone* icu::BasicTimeZone::clone() const override=0<br>BasicTimeZone* icu::BasicTimeZone::clone() const=0<br>
+</li>
+<li>
+<b>void* icu::ChoiceFormat::clone() const</b>
+<br>ChoiceFormat* icu::ChoiceFormat::clone() const<br>ChoiceFormat* icu::ChoiceFormat::clone() const override<br>
+</li>
+<li>
+<b>void* icu::CurrencyAmount::clone() const</b>
+<br>CurrencyAmount* icu::CurrencyAmount::clone() const<br>CurrencyAmount* icu::CurrencyAmount::clone() const override<br>
+</li>
+<li>
+<b>void* icu::CurrencyUnit::clone() const</b>
+<br>CurrencyUnit* icu::CurrencyUnit::clone() const<br>CurrencyUnit* icu::CurrencyUnit::clone() const override<br>
+</li>
+<li>
+<b>void* icu::DateFormat::clone() const</b>
+<br>DateFormat* icu::DateFormat::clone() const override=0<br>DateFormat* icu::DateFormat::clone() const=0<br>
+</li>
+<li>
+<b>void* icu::DateIntervalFormat::clone() const</b>
+<br>DateIntervalFormat* icu::DateIntervalFormat::clone() const<br>DateIntervalFormat* icu::DateIntervalFormat::clone() const override<br>
+</li>
+<li>
+<b>void* icu::GregorianCalendar::clone() const</b>
+<br>GregorianCalendar* icu::GregorianCalendar::clone() const<br>GregorianCalendar* icu::GregorianCalendar::clone() const override<br>
+</li>
+<li>
+<b>void* icu::InitialTimeZoneRule::clone() const</b>
+<br>InitialTimeZoneRule* icu::InitialTimeZoneRule::clone() const<br>InitialTimeZoneRule* icu::InitialTimeZoneRule::clone() const override<br>
+</li>
+<li>
+<b>void* icu::MeasureFormat::clone() const</b>
+<br>MeasureFormat* icu::MeasureFormat::clone() const<br>MeasureFormat* icu::MeasureFormat::clone() const override<br>
+</li>
+<li>
+<b>void* icu::MessageFormat::clone() const</b>
+<br>MessageFormat* icu::MessageFormat::clone() const<br>MessageFormat* icu::MessageFormat::clone() const override<br>
+</li>
+<li>
+<b>void* icu::NumberFormat::clone() const</b>
+<br>NumberFormat* icu::NumberFormat::clone() const override=0<br>NumberFormat* icu::NumberFormat::clone() const=0<br>
+</li>
+<li>
+<b>void* icu::PluralFormat::clone() const</b>
+<br>PluralFormat* icu::PluralFormat::clone() const<br>PluralFormat* icu::PluralFormat::clone() const override<br>
+</li>
+<li>
+<b>void* icu::RuleBasedBreakIterator::clone() const</b>
+<br>RuleBasedBreakIterator* icu::RuleBasedBreakIterator::clone() const<br>RuleBasedBreakIterator* icu::RuleBasedBreakIterator::clone() const override<br>
+</li>
+<li>
+<b>void* icu::RuleBasedBreakIterator::createBufferClone(void*, int32_t&amp;, UErrorCode&amp;)</b>
+<br>RuleBasedBreakIterator* icu::RuleBasedBreakIterator::createBufferClone(void*, int32_t&amp;, UErrorCode&amp;)<br>RuleBasedBreakIterator* icu::RuleBasedBreakIterator::createBufferClone(void*, int32_t&amp;, UErrorCode&amp;) override<br>
+</li>
+<li>
+<b>void* icu::RuleBasedCollator::clone() const</b>
+<br>RuleBasedCollator* icu::RuleBasedCollator::clone() const<br>RuleBasedCollator* icu::RuleBasedCollator::clone() const override<br>
+</li>
+<li>
+<b>void* icu::RuleBasedNumberFormat::clone() const</b>
+<br>RuleBasedNumberFormat* icu::RuleBasedNumberFormat::clone() const<br>RuleBasedNumberFormat* icu::RuleBasedNumberFormat::clone() const override<br>
+</li>
+<li>
+<b>void* icu::RuleBasedTimeZone::clone() const</b>
+<br>RuleBasedTimeZone* icu::RuleBasedTimeZone::clone() const<br>RuleBasedTimeZone* icu::RuleBasedTimeZone::clone() const override<br>
+</li>
+<li>
+<b>void* icu::SelectFormat::clone() const</b>
+<br>SelectFormat* icu::SelectFormat::clone() const<br>SelectFormat* icu::SelectFormat::clone() const override<br>
+</li>
+<li>
+<b>void* icu::SimpleDateFormat::clone() const</b>
+<br>SimpleDateFormat* icu::SimpleDateFormat::clone() const<br>SimpleDateFormat* icu::SimpleDateFormat::clone() const override<br>
+</li>
+<li>
+<b>void* icu::SimpleTimeZone::clone() const</b>
+<br>SimpleTimeZone* icu::SimpleTimeZone::clone() const<br>SimpleTimeZone* icu::SimpleTimeZone::clone() const override<br>
+</li>
+<li>
+<b>void* icu::StringCharacterIterator::clone() const</b>
+<br>StringCharacterIterator* icu::StringCharacterIterator::clone() const<br>StringCharacterIterator* icu::StringCharacterIterator::clone() const override<br>
+</li>
+<li>
+<b>void* icu::StringSearch::safeClone() const</b>
+<br>StringSearch* icu::StringSearch::safeClone() const<br>StringSearch* icu::StringSearch::safeClone() const override<br>
+</li>
+<li>
+<b>void* icu::TimeArrayTimeZoneRule::clone() const</b>
+<br>TimeArrayTimeZoneRule* icu::TimeArrayTimeZoneRule::clone() const<br>TimeArrayTimeZoneRule* icu::TimeArrayTimeZoneRule::clone() const override<br>
+</li>
+<li>
+<b>void* icu::TimeUnit::clone() const</b>
+<br>TimeUnit* icu::TimeUnit::clone() const<br>TimeUnit* icu::TimeUnit::clone() const override<br>
+</li>
+<li>
+<b>void* icu::TimeUnitAmount::clone() const</b>
+<br>TimeUnitAmount* icu::TimeUnitAmount::clone() const<br>TimeUnitAmount* icu::TimeUnitAmount::clone() const override<br>
+</li>
+<li>
+<b>void* icu::TimeUnitFormat::clone() const</b>
+<br>TimeUnitFormat* icu::TimeUnitFormat::clone() const<br>TimeUnitFormat* icu::TimeUnitFormat::clone() const override<br>
+</li>
+<li>
+<b>void* icu::TimeZoneFormat::clone() const</b>
+<br>TimeZoneFormat* icu::TimeZoneFormat::clone() const<br>TimeZoneFormat* icu::TimeZoneFormat::clone() const override<br>
+</li>
+<li>
+<b>void* icu::UCharCharacterIterator::clone() const</b>
+<br>UCharCharacterIterator* icu::UCharCharacterIterator::clone() const<br>UCharCharacterIterator* icu::UCharCharacterIterator::clone() const override<br>
+</li>
+<li>
+<b>void* icu::UnicodeFilter::clone() const</b>
+<br>UnicodeFilter* icu::UnicodeFilter::clone() const override=0<br>UnicodeFilter* icu::UnicodeFilter::clone() const=0<br>
+</li>
+<li>
+<b>void* icu::UnicodeSet::clone() const</b>
+<br>UnicodeSet* icu::UnicodeSet::clone() const<br>UnicodeSet* icu::UnicodeSet::clone() const override<br>
+</li>
+<li>
+<b>void* icu::UnicodeString::clone() const</b>
+<br>UnicodeString* icu::UnicodeString::clone() const<br>UnicodeString* icu::UnicodeString::clone() const override<br>
+</li>
+<li>
+<b>void* icu::VTimeZone::clone() const</b>
+<br>VTimeZone* icu::VTimeZone::clone() const<br>VTimeZone* icu::VTimeZone::clone() const override<br>
+</li>
+</ul>
 </div>
 <P></P>
 <a href="#_top">(jump back to top)</a>
 <hr>
 <p>
-<i><font size="-1">Contents generated by StableAPI tool on Thu Mar 11 15:54:11 PST 2021<br>
+<i><font size="-1">Contents generated by StableAPI tool on Wed Sep 29 11:59:05 PDT 2021<br>
         Copyright &copy; 2017 and later: Unicode, Inc. and others.<br>
         License &amp; terms of use: http://www.unicode.org/copyright.html
     </font></i>
diff --git a/icu4c/APIChangeReport.md b/icu4c/APIChangeReport.md
index 9184c42..07cb985 100644
--- a/icu4c/APIChangeReport.md
+++ b/icu4c/APIChangeReport.md
@@ -5,275 +5,659 @@
  License & terms of use: http://www.unicode.org/copyright.html
 -->
 
-# ICU4C API Comparison: ICU 68 (update #1: 68.2) with ICU 69
+# ICU4C API Comparison: ICU 69 with ICU 70
 
 > _Note_ Markdown format of this document is new for ICU 65.
 
-- [Removed from ICU 68](#removed)
-- [Deprecated or Obsoleted in ICU 69](#deprecated)
-- [Changed in  ICU 69](#changed)
-- [Promoted to stable in ICU 69](#promoted)
-- [Added in ICU 69](#added)
-- [Other existing drafts in ICU 69](#other)
+- [Removed from ICU 69](#removed)
+- [Deprecated or Obsoleted in ICU 70](#deprecated)
+- [Changed in  ICU 70](#changed)
+- [Promoted to stable in ICU 70](#promoted)
+- [Added in ICU 70](#added)
+- [Other existing drafts in ICU 70](#other)
 - [Signature Simplifications](#simplifications)
 
 ## Removed
 
-Removed from ICU 68
+Removed from ICU 69
   
-| File | API | ICU 68 | ICU 69 |
+| File | API | ICU 69 | ICU 70 |
 |---|---|---|---|
-| listformatter.h | <tt>static</tt> ListFormatter* icu::ListFormatter::createInstance(const Locale&amp;, const char*, UErrorCode&amp;) |  Internal | (missing)
-| measunit.h | MeasureUnit icu::MeasureUnit::withSIPrefix(UMeasureSIPrefix, UErrorCode&amp;) const |  DraftICU 67 | (missing)
-| measunit.h | UMeasureSIPrefix icu::MeasureUnit::getSIPrefix(UErrorCode&amp;) const |  DraftICU 67 | (missing)
-| numberformatter.h | Usage&amp; icu::number::impl::Usage::operator=(Usage&amp;&amp;) |  Internal | (missing)
-| numberformatter.h | Usage&amp; icu::number::impl::Usage::operator=(const Usage&amp;) |  Internal | (missing)
-| numberformatter.h | bool icu::number::impl::Usage::isSet() const |  Internal | (missing)
-| numberformatter.h | icu::number::impl::Usage::Usage(Usage&amp;&amp;) |  Internal | (missing)
-| numberformatter.h | icu::number::impl::Usage::Usage(const Usage&amp;) |  Internal | (missing)
-| numberformatter.h | icu::number::impl::Usage::~Usage() |  Internal | (missing)
-| numberformatter.h | int16_t icu::number::impl::Usage::length() const |  Internal | (missing)
-| numberformatter.h | void icu::number::impl::Usage::set(StringPiece) |  Internal | (missing)
-| numberrangeformatter.h | UnicodeString icu::number::FormattedNumberRange::getFirstDecimal(UErrorCode&amp;) const |  DeprecatedICU 68 | (missing)
-| numberrangeformatter.h | UnicodeString icu::number::FormattedNumberRange::getSecondDecimal(UErrorCode&amp;) const |  DeprecatedICU 68 | (missing)
-| rbtz.h | void icu::RuleBasedTimeZone::getOffsetFromLocal(UDate, int32_t, int32_t, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const |  Internal | (missing)
-| simpletz.h | void icu::SimpleTimeZone::getOffsetFromLocal(UDate, int32_t, int32_t, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const |  Internal | (missing)
+| tmutfmt.h | bool icu::TimeUnitFormat::operator!=(const Format&amp;) const |  DeprecatedICU 53 | (missing)
 
 ## Deprecated
 
-Deprecated or Obsoleted in ICU 69
+Deprecated or Obsoleted in ICU 70
   
-| File | API | ICU 68 | ICU 69 |
+| File | API | ICU 69 | ICU 70 |
 |---|---|---|---|
-| ubrk.h | UBreakIterator* ubrk_safeClone(const UBreakIterator*, void*, int32_t*, UErrorCode*) |  StableICU 2.0 | DeprecatedICU 69
+| timezone.h | <tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration() |  StableICU 2.4 | DeprecatedICU 70
+| timezone.h | <tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration(const char*) |  StableICU 2.4 | DeprecatedICU 70
+| timezone.h | <tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration(int32_t) |  StableICU 2.4 | DeprecatedICU 70
 
 ## Changed
 
-Changed in  ICU 69 (old, new)
+Changed in  ICU 70 (old, new)
 
 
   
-| File | API | ICU 68 | ICU 69 |
+| File | API | ICU 69 | ICU 70 |
 |---|---|---|---|
-| bytestream.h | void icu::ByteSink::AppendU8(const char*, int32_t) |  Draft→StableICU 67
-| bytestream.h | void icu::ByteSink::AppendU8(const char8_t*, int32_t) |  Draft→StableICU 67
-| dtptngen.h | UDateFormatHourCycle icu::DateTimePatternGenerator::getDefaultHourCycle(UErrorCode&amp;) const |  Draft→StableICU 67
-| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setDirection(ULocMatchDirection) |  Draft→StableICU 67
-| localematcher.h | <tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_ONLY_TWO_WAY |  Draft→StableICU 67
-| localematcher.h | <tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_WITH_ONE_WAY |  Draft→StableICU 67
-| locid.h | void icu::Locale::canonicalize(UErrorCode&amp;) |  Draft→StableICU 67
-| measunit.h | MeasureUnit icu::MeasureUnit::product(const MeasureUnit&amp;, UErrorCode&amp;) const |  Draft→StableICU 67
-| measunit.h | MeasureUnit icu::MeasureUnit::reciprocal(UErrorCode&amp;) const |  Draft→StableICU 67
-| measunit.h | MeasureUnit icu::MeasureUnit::withDimensionality(int32_t, UErrorCode&amp;) const |  Draft→StableICU 67
-| measunit.h | MeasureUnit&amp; icu::MeasureUnit::operator=(MeasureUnit&amp;&amp;) noexcept |  Draft→StableICU 67
-| measunit.h | UMeasureUnitComplexity icu::MeasureUnit::getComplexity(UErrorCode&amp;) const |  Draft→StableICU 67
-| measunit.h | const char* icu::MeasureUnit::getIdentifier() const |  Draft→StableICU 67
-| measunit.h | icu::MeasureUnit::MeasureUnit(MeasureUnit&amp;&amp;) noexcept |  Draft→StableICU 67
-| measunit.h | int32_t icu::MeasureUnit::getDimensionality(UErrorCode&amp;) const |  Draft→StableICU 67
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::forIdentifier(StringPiece, UErrorCode&amp;) |  Draft→StableICU 67
-| stringpiece.h | icu::StringPiece::StringPiece(const char8_t*) |  Draft→StableICU 67
-| stringpiece.h | icu::StringPiece::StringPiece(const char8_t*, int32_t) |  Draft→StableICU 67
-| stringpiece.h | icu::StringPiece::StringPiece(const std::u8string&amp;) |  Draft→StableICU 67
-| stringpiece.h | icu::StringPiece::StringPiece(std::nullptr_t) |  Draft→StableICU 67
-| stringpiece.h | int32_t icu::StringPiece::compare(StringPiece) |  Draft→StableICU 67
-| stringpiece.h | int32_t icu::StringPiece::find(StringPiece, int32_t) |  Draft→StableICU 67
-| stringpiece.h | void icu::StringPiece::set(const char8_t*) |  Draft→StableICU 67
-| stringpiece.h | void icu::StringPiece::set(const char8_t*, int32_t) |  Draft→StableICU 67
-| translit.h | UnicodeSet&amp; icu::Transliterator::getSourceSet(UnicodeSet&amp;) const |   _untagged _  | StableICU 2.4
-| translit.h | <tt>static</tt> UnicodeString&amp; icu::Transliterator::getDisplayName(const UnicodeString&amp;, UnicodeString&amp;) |   _untagged _  | StableICU 2.0
-| translit.h | void icu::Transliterator::finishTransliteration(Replaceable&amp;, UTransPosition&amp;) const |   _untagged _  | StableICU 2.0
-| translit.h | void icu::Transliterator::transliterate(Replaceable&amp;, UTransPosition&amp;, UErrorCode&amp;) const |   _untagged _  | StableICU 2.0
-| ubrk.h | UBreakIterator* ubrk_safeClone(const UBreakIterator*, void*, int32_t*, UErrorCode*) |  StableICU 2.0 | DeprecatedICU 69
-| udat.h | <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_11 |  Draft→StableICU 67
-| udat.h | <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_12 |  Draft→StableICU 67
-| udat.h | <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_23 |  Draft→StableICU 67
-| udat.h | <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_24 |  Draft→StableICU 67
-| udateintervalformat.h | void udtitvfmt_formatCalendarToResult(const UDateIntervalFormat*, UCalendar*, UCalendar*, UFormattedDateInterval*, UErrorCode*) |  Draft→StableICU 67
-| udateintervalformat.h | void udtitvfmt_formatToResult(const UDateIntervalFormat*, UDate, UDate, UFormattedDateInterval*, UErrorCode*) |  Draft→StableICU 67
-| udatpg.h | UDateFormatHourCycle udatpg_getDefaultHourCycle(const UDateTimePatternGenerator*, UErrorCode*) |  Draft→StableICU 67
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_BREAK_ENGINE |  Draft→StableICU 67
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_CHARACTER |  Draft→StableICU 67
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_LINE |  Draft→StableICU 67
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_SENTENCE |  Draft→StableICU 67
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_TITLE |  Draft→StableICU 67
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_WORD |  Draft→StableICU 67
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_START |  Draft→StableICU 67
+| dtitvfmt.h | UDisplayContext icu::DateIntervalFormat::getContext(UDisplayContextType, UErrorCode&amp;) const |  Draft→StableICU 68
+| dtitvfmt.h | void icu::DateIntervalFormat::setContext(UDisplayContext, UErrorCode&amp;) |  Draft→StableICU 68
+| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setMaxDistance(const Locale&amp;, const Locale&amp;) |  Draft→StableICU 68
+| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setNoDefaultLocale() |  Draft→StableICU 68
+| localematcher.h | bool icu::LocaleMatcher::isMatch(const Locale&amp;, const Locale&amp;, UErrorCode&amp;) const |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCandela() |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoon() |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoonImperial() |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDot() |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDram() |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDrop() |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getEarthRadius() |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGrain() |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getJigger() |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getLumen() |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPinch() |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getQuartImperial() |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createCandela(UErrorCode&amp;) |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoon(UErrorCode&amp;) |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoonImperial(UErrorCode&amp;) |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDot(UErrorCode&amp;) |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDram(UErrorCode&amp;) |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDrop(UErrorCode&amp;) |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createEarthRadius(UErrorCode&amp;) |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createGrain(UErrorCode&amp;) |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createJigger(UErrorCode&amp;) |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createLumen(UErrorCode&amp;) |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPinch(UErrorCode&amp;) |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createQuartImperial(UErrorCode&amp;) |  Draft→StableICU 68
+| measunit.h | std::pair&lt; LocalArray&lt; MeasureUnit &gt;, int32_t &gt; icu::MeasureUnit::splitToSingleUnits(UErrorCode&amp;) const |  Draft→StableICU 68
+| numberformatter.h | Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::usage(StringPiece) const&amp; |  Draft→StableICU 68
+| numberformatter.h | Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::usage(StringPiece)&amp;&amp; |  Draft→StableICU 68
+| numberformatter.h | MeasureUnit icu::number::FormattedNumber::getOutputUnit(UErrorCode&amp;) const |  Draft→StableICU 68
+| numberrangeformatter.h | std::pair&lt; StringClass, StringClass &gt; icu::number::FormattedNumberRange::getDecimalNumbers(UErrorCode&amp;) const |  Draft→StableICU 68
+| plurrule.h | UnicodeString icu::PluralRules::select(const number::FormattedNumberRange&amp;, UErrorCode&amp;) const |  Draft→StableICU 68
+| timezone.h | <tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration() |  StableICU 2.4 | DeprecatedICU 70
+| timezone.h | <tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration(const char*) |  StableICU 2.4 | DeprecatedICU 70
+| timezone.h | <tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration(int32_t) |  StableICU 2.4 | DeprecatedICU 70
+| ucurr.h | <tt>enum</tt> UCurrNameStyle::UCURR_FORMAL_SYMBOL_NAME |  Draft→StableICU 68
+| ucurr.h | <tt>enum</tt> UCurrNameStyle::UCURR_VARIANT_SYMBOL_NAME |  Draft→StableICU 68
+| udateintervalformat.h | UDisplayContext udtitvfmt_getContext(const UDateIntervalFormat*, UDisplayContextType, UErrorCode*) |  Draft→StableICU 68
+| udateintervalformat.h | void udtitvfmt_setContext(UDateIntervalFormat*, UDisplayContext, UErrorCode*) |  Draft→StableICU 68
+| unum.h | <tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_AUTO |  Draft→StableICU 68
+| unum.h | <tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_MIN2 |  Draft→StableICU 68
+| unumberformatter.h | <tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_FORMAL |  Draft→StableICU 68
+| unumberformatter.h | <tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_VARIANT |  Draft→StableICU 68
+| unumberformatter.h | int32_t unumf_resultToDecimalNumber(const UFormattedNumber*, char*, int32_t, UErrorCode*) |  Draft→StableICU 68
+| unumberrangeformatter.h | UFormattedNumberRange* unumrf_openResult(UErrorCode*) |  Draft→StableICU 68
+| unumberrangeformatter.h | UNumberRangeFormatter* unumrf_openForSkeletonWithCollapseAndIdentityFallback(const UChar*, int32_t, UNumberRangeCollapse, UNumberRangeIdentityFallback, const char*, UParseError*, UErrorCode*) |  Draft→StableICU 68
+| unumberrangeformatter.h | UNumberRangeIdentityResult unumrf_resultGetIdentityResult(const UFormattedNumberRange*, UErrorCode*) |  Draft→StableICU 68
+| unumberrangeformatter.h | const UFormattedValue* unumrf_resultAsValue(const UFormattedNumberRange*, UErrorCode*) |  Draft→StableICU 68
+| unumberrangeformatter.h | int32_t unumrf_resultGetFirstDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*) |  Draft→StableICU 68
+| unumberrangeformatter.h | int32_t unumrf_resultGetSecondDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*) |  Draft→StableICU 68
+| unumberrangeformatter.h | void unumrf_close(UNumberRangeFormatter*) |  Draft→StableICU 68
+| unumberrangeformatter.h | void unumrf_closeResult(UFormattedNumberRange*) |  Draft→StableICU 68
+| unumberrangeformatter.h | void unumrf_formatDecimalRange(const UNumberRangeFormatter*, const char*, int32_t, const char*, int32_t, UFormattedNumberRange*, UErrorCode*) |  Draft→StableICU 68
+| unumberrangeformatter.h | void unumrf_formatDoubleRange(const UNumberRangeFormatter*, double, double, UFormattedNumberRange*, UErrorCode*) |  Draft→StableICU 68
+| upluralrules.h | int32_t uplrules_selectForRange(const UPluralRules*, const struct UFormattedNumberRange*, UChar*, int32_t, UErrorCode*) |  Draft→StableICU 68
 
 ## Promoted
 
-Promoted to stable in ICU 69
+Promoted to stable in ICU 70
   
-| File | API | ICU 68 | ICU 69 |
+| File | API | ICU 69 | ICU 70 |
 |---|---|---|---|
-| bytestream.h | void icu::ByteSink::AppendU8(const char*, int32_t) |  Draft→StableICU 67
-| bytestream.h | void icu::ByteSink::AppendU8(const char8_t*, int32_t) |  Draft→StableICU 67
-| dtptngen.h | UDateFormatHourCycle icu::DateTimePatternGenerator::getDefaultHourCycle(UErrorCode&amp;) const |  Draft→StableICU 67
-| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setDirection(ULocMatchDirection) |  Draft→StableICU 67
-| localematcher.h | <tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_ONLY_TWO_WAY |  Draft→StableICU 67
-| localematcher.h | <tt>enum</tt> ULocMatchDirection::ULOCMATCH_DIRECTION_WITH_ONE_WAY |  Draft→StableICU 67
-| locid.h | void icu::Locale::canonicalize(UErrorCode&amp;) |  Draft→StableICU 67
-| measunit.h | MeasureUnit icu::MeasureUnit::product(const MeasureUnit&amp;, UErrorCode&amp;) const |  Draft→StableICU 67
-| measunit.h | MeasureUnit icu::MeasureUnit::reciprocal(UErrorCode&amp;) const |  Draft→StableICU 67
-| measunit.h | MeasureUnit icu::MeasureUnit::withDimensionality(int32_t, UErrorCode&amp;) const |  Draft→StableICU 67
-| measunit.h | MeasureUnit&amp; icu::MeasureUnit::operator=(MeasureUnit&amp;&amp;) noexcept |  Draft→StableICU 67
-| measunit.h | UMeasureUnitComplexity icu::MeasureUnit::getComplexity(UErrorCode&amp;) const |  Draft→StableICU 67
-| measunit.h | const char* icu::MeasureUnit::getIdentifier() const |  Draft→StableICU 67
-| measunit.h | icu::MeasureUnit::MeasureUnit(MeasureUnit&amp;&amp;) noexcept |  Draft→StableICU 67
-| measunit.h | int32_t icu::MeasureUnit::getDimensionality(UErrorCode&amp;) const |  Draft→StableICU 67
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::forIdentifier(StringPiece, UErrorCode&amp;) |  Draft→StableICU 67
-| stringpiece.h | icu::StringPiece::StringPiece(const char8_t*) |  Draft→StableICU 67
-| stringpiece.h | icu::StringPiece::StringPiece(const char8_t*, int32_t) |  Draft→StableICU 67
-| stringpiece.h | icu::StringPiece::StringPiece(const std::u8string&amp;) |  Draft→StableICU 67
-| stringpiece.h | icu::StringPiece::StringPiece(std::nullptr_t) |  Draft→StableICU 67
-| stringpiece.h | int32_t icu::StringPiece::compare(StringPiece) |  Draft→StableICU 67
-| stringpiece.h | int32_t icu::StringPiece::find(StringPiece, int32_t) |  Draft→StableICU 67
-| stringpiece.h | void icu::StringPiece::set(const char8_t*) |  Draft→StableICU 67
-| stringpiece.h | void icu::StringPiece::set(const char8_t*, int32_t) |  Draft→StableICU 67
-| translit.h | UnicodeSet&amp; icu::Transliterator::getSourceSet(UnicodeSet&amp;) const |   _untagged _  | StableICU 2.4
-| translit.h | <tt>static</tt> UnicodeString&amp; icu::Transliterator::getDisplayName(const UnicodeString&amp;, UnicodeString&amp;) |   _untagged _  | StableICU 2.0
-| translit.h | void icu::Transliterator::finishTransliteration(Replaceable&amp;, UTransPosition&amp;) const |   _untagged _  | StableICU 2.0
-| translit.h | void icu::Transliterator::transliterate(Replaceable&amp;, UTransPosition&amp;, UErrorCode&amp;) const |   _untagged _  | StableICU 2.0
-| udat.h | <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_11 |  Draft→StableICU 67
-| udat.h | <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_12 |  Draft→StableICU 67
-| udat.h | <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_23 |  Draft→StableICU 67
-| udat.h | <tt>enum</tt> UDateFormatHourCycle::UDAT_HOUR_CYCLE_24 |  Draft→StableICU 67
-| udateintervalformat.h | void udtitvfmt_formatCalendarToResult(const UDateIntervalFormat*, UCalendar*, UCalendar*, UFormattedDateInterval*, UErrorCode*) |  Draft→StableICU 67
-| udateintervalformat.h | void udtitvfmt_formatToResult(const UDateIntervalFormat*, UDate, UDate, UFormattedDateInterval*, UErrorCode*) |  Draft→StableICU 67
-| udatpg.h | UDateFormatHourCycle udatpg_getDefaultHourCycle(const UDateTimePatternGenerator*, UErrorCode*) |  Draft→StableICU 67
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_BREAK_ENGINE |  Draft→StableICU 67
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_CHARACTER |  Draft→StableICU 67
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_LINE |  Draft→StableICU 67
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_SENTENCE |  Draft→StableICU 67
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_TITLE |  Draft→StableICU 67
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_CREATE_WORD |  Draft→StableICU 67
-| utrace.h | <tt>enum</tt> UTraceFunctionNumber::UTRACE_UBRK_START |  Draft→StableICU 67
+| dtitvfmt.h | UDisplayContext icu::DateIntervalFormat::getContext(UDisplayContextType, UErrorCode&amp;) const |  Draft→StableICU 68
+| dtitvfmt.h | void icu::DateIntervalFormat::setContext(UDisplayContext, UErrorCode&amp;) |  Draft→StableICU 68
+| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setMaxDistance(const Locale&amp;, const Locale&amp;) |  Draft→StableICU 68
+| localematcher.h | Builder&amp; icu::LocaleMatcher::Builder::setNoDefaultLocale() |  Draft→StableICU 68
+| localematcher.h | bool icu::LocaleMatcher::isMatch(const Locale&amp;, const Locale&amp;, UErrorCode&amp;) const |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCandela() |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoon() |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoonImperial() |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDot() |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDram() |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDrop() |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getEarthRadius() |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGrain() |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getJigger() |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getLumen() |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPinch() |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getQuartImperial() |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createCandela(UErrorCode&amp;) |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoon(UErrorCode&amp;) |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoonImperial(UErrorCode&amp;) |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDot(UErrorCode&amp;) |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDram(UErrorCode&amp;) |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDrop(UErrorCode&amp;) |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createEarthRadius(UErrorCode&amp;) |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createGrain(UErrorCode&amp;) |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createJigger(UErrorCode&amp;) |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createLumen(UErrorCode&amp;) |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPinch(UErrorCode&amp;) |  Draft→StableICU 68
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createQuartImperial(UErrorCode&amp;) |  Draft→StableICU 68
+| measunit.h | std::pair&lt; LocalArray&lt; MeasureUnit &gt;, int32_t &gt; icu::MeasureUnit::splitToSingleUnits(UErrorCode&amp;) const |  Draft→StableICU 68
+| numberformatter.h | Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::usage(StringPiece) const&amp; |  Draft→StableICU 68
+| numberformatter.h | Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::usage(StringPiece)&amp;&amp; |  Draft→StableICU 68
+| numberformatter.h | MeasureUnit icu::number::FormattedNumber::getOutputUnit(UErrorCode&amp;) const |  Draft→StableICU 68
+| numberrangeformatter.h | std::pair&lt; StringClass, StringClass &gt; icu::number::FormattedNumberRange::getDecimalNumbers(UErrorCode&amp;) const |  Draft→StableICU 68
+| plurrule.h | UnicodeString icu::PluralRules::select(const number::FormattedNumberRange&amp;, UErrorCode&amp;) const |  Draft→StableICU 68
+| timezone.h | <tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration(UErrorCode&amp;) |  (missing) | StableICU 70| *(Born Stable)* |
+| timezone.h | <tt>static</tt> StringEnumeration* icu::TimeZone::createEnumerationForRawOffset(int32_t, UErrorCode&amp;) |  (missing) | StableICU 70| *(Born Stable)* |
+| timezone.h | <tt>static</tt> StringEnumeration* icu::TimeZone::createEnumerationForRegion(const char*, UErrorCode&amp;) |  (missing) | StableICU 70| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_ARABIC_EXTENDED_B |  (missing) | StableICU 70| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_CYPRO_MINOAN |  (missing) | StableICU 70| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_ETHIOPIC_EXTENDED_B |  (missing) | StableICU 70| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_KANA_EXTENDED_B |  (missing) | StableICU 70| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_LATIN_EXTENDED_F |  (missing) | StableICU 70| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_LATIN_EXTENDED_G |  (missing) | StableICU 70| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_OLD_UYGHUR |  (missing) | StableICU 70| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_TANGSA |  (missing) | StableICU 70| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_TOTO |  (missing) | StableICU 70| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_A |  (missing) | StableICU 70| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_VITHKUQI |  (missing) | StableICU 70| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_ZNAMENNY_MUSICAL_NOTATION |  (missing) | StableICU 70| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> UJoiningGroup::U_JG_THIN_YEH |  (missing) | StableICU 70| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> UJoiningGroup::U_JG_VERTICAL_TAIL |  (missing) | StableICU 70| *(Born Stable)* |
+| ucurr.h | <tt>enum</tt> UCurrNameStyle::UCURR_FORMAL_SYMBOL_NAME |  Draft→StableICU 68
+| ucurr.h | <tt>enum</tt> UCurrNameStyle::UCURR_VARIANT_SYMBOL_NAME |  Draft→StableICU 68
+| udateintervalformat.h | UDisplayContext udtitvfmt_getContext(const UDateIntervalFormat*, UDisplayContextType, UErrorCode*) |  Draft→StableICU 68
+| udateintervalformat.h | void udtitvfmt_setContext(UDateIntervalFormat*, UDisplayContext, UErrorCode*) |  Draft→StableICU 68
+| unum.h | <tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_AUTO |  Draft→StableICU 68
+| unum.h | <tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_MIN2 |  Draft→StableICU 68
+| unumberformatter.h | <tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_FORMAL |  Draft→StableICU 68
+| unumberformatter.h | <tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_VARIANT |  Draft→StableICU 68
+| unumberformatter.h | int32_t unumf_resultToDecimalNumber(const UFormattedNumber*, char*, int32_t, UErrorCode*) |  Draft→StableICU 68
+| unumberrangeformatter.h | UFormattedNumberRange* unumrf_openResult(UErrorCode*) |  Draft→StableICU 68
+| unumberrangeformatter.h | UNumberRangeFormatter* unumrf_openForSkeletonWithCollapseAndIdentityFallback(const UChar*, int32_t, UNumberRangeCollapse, UNumberRangeIdentityFallback, const char*, UParseError*, UErrorCode*) |  Draft→StableICU 68
+| unumberrangeformatter.h | UNumberRangeIdentityResult unumrf_resultGetIdentityResult(const UFormattedNumberRange*, UErrorCode*) |  Draft→StableICU 68
+| unumberrangeformatter.h | const UFormattedValue* unumrf_resultAsValue(const UFormattedNumberRange*, UErrorCode*) |  Draft→StableICU 68
+| unumberrangeformatter.h | int32_t unumrf_resultGetFirstDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*) |  Draft→StableICU 68
+| unumberrangeformatter.h | int32_t unumrf_resultGetSecondDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*) |  Draft→StableICU 68
+| unumberrangeformatter.h | void unumrf_close(UNumberRangeFormatter*) |  Draft→StableICU 68
+| unumberrangeformatter.h | void unumrf_closeResult(UFormattedNumberRange*) |  Draft→StableICU 68
+| unumberrangeformatter.h | void unumrf_formatDecimalRange(const UNumberRangeFormatter*, const char*, int32_t, const char*, int32_t, UFormattedNumberRange*, UErrorCode*) |  Draft→StableICU 68
+| unumberrangeformatter.h | void unumrf_formatDoubleRange(const UNumberRangeFormatter*, double, double, UFormattedNumberRange*, UErrorCode*) |  Draft→StableICU 68
+| upluralrules.h | int32_t uplrules_selectForRange(const UPluralRules*, const struct UFormattedNumberRange*, UChar*, int32_t, UErrorCode*) |  Draft→StableICU 68
+| uscript.h | <tt>enum</tt> UScriptCode::USCRIPT_CYPRO_MINOAN |  (missing) | StableICU 70| *(Born Stable)* |
+| uscript.h | <tt>enum</tt> UScriptCode::USCRIPT_OLD_UYGHUR |  (missing) | StableICU 70| *(Born Stable)* |
+| uscript.h | <tt>enum</tt> UScriptCode::USCRIPT_TANGSA |  (missing) | StableICU 70| *(Born Stable)* |
+| uscript.h | <tt>enum</tt> UScriptCode::USCRIPT_TOTO |  (missing) | StableICU 70| *(Born Stable)* |
+| uscript.h | <tt>enum</tt> UScriptCode::USCRIPT_VITHKUQI |  (missing) | StableICU 70| *(Born Stable)* |
+| utypes.h | <tt>enum</tt> UErrorCode::U_INPUT_TOO_LONG_ERROR |  (missing) | StableICU 68
 
 ## Added
 
-Added in ICU 69
+Added in ICU 70
   
-| File | API | ICU 68 | ICU 69 |
+| File | API | ICU 69 | ICU 70 |
 |---|---|---|---|
-| basictz.h | void icu::BasicTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const |  (missing) | DraftICU 69
-| measunit.h | MeasureUnit icu::MeasureUnit::withPrefix(UMeasurePrefix, UErrorCode&amp;) const |  (missing) | DraftICU 69
-| measunit.h | UMeasurePrefix icu::MeasureUnit::getPrefix(UErrorCode&amp;) const |  (missing) | DraftICU 69
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMilligramOfglucosePerDeciliter() |  (missing) | DraftICU 69
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createMilligramOfglucosePerDeciliter(UErrorCode&amp;) |  (missing) | DraftICU 69
-| numberformatter.h | Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::unitDisplayCase(StringPiece) const&amp; |  (missing) | InternalICU 69
-| numberformatter.h | Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::unitDisplayCase(StringPiece)&amp;&amp; |  (missing) | InternalICU 69
-| numberformatter.h | Precision icu::number::FractionPrecision::withSignificantDigits(int32_t, int32_t, UNumberRoundingPriority) const |  (missing) | DraftICU 69
-| numberformatter.h | Precision icu::number::Precision::trailingZeroDisplay(UNumberTrailingZeroDisplay) const |  (missing) | DraftICU 69
-| numberformatter.h | StringProp&amp; icu::number::impl::StringProp::operator=(StringProp&amp;&amp;) |  (missing) | Internal
-| numberformatter.h | StringProp&amp; icu::number::impl::StringProp::operator=(const StringProp&amp;) |  (missing) | Internal
-| numberformatter.h | bool icu::number::impl::StringProp::isSet() const |  (missing) | Internal
-| numberformatter.h | const char* icu::number::FormattedNumber::getGender(UErrorCode&amp;) const |  (missing) | InternalICU 69
-| numberformatter.h | icu::number::impl::StringProp::StringProp(StringProp&amp;&amp;) |  (missing) | Internal
-| numberformatter.h | icu::number::impl::StringProp::StringProp(const StringProp&amp;) |  (missing) | Internal
-| numberformatter.h | icu::number::impl::StringProp::~StringProp() |  (missing) | Internal
-| numberformatter.h | int16_t icu::number::impl::StringProp::length() const |  (missing) | Internal
-| numberformatter.h | void icu::number::impl::StringProp::set(StringPiece) |  (missing) | Internal
-| rbtz.h | void icu::RuleBasedTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const |  (missing) | DraftICU 69
-| simpletz.h | void icu::SimpleTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const |  (missing) | DraftICU 69
-| ubrk.h | UBreakIterator* ubrk_clone(const UBreakIterator*, UErrorCode*) |  (missing) | DraftICU 69
-| ucal.h | <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_DAYLIGHT_FORMER |  (missing) | DraftICU 69
-| ucal.h | <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_DAYLIGHT_LATTER |  (missing) | DraftICU 69
-| ucal.h | <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_FORMER |  (missing) | DraftICU 69
-| ucal.h | <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_LATTER |  (missing) | DraftICU 69
-| ucal.h | <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_STANDARD_FORMER |  (missing) | DraftICU 69
-| ucal.h | <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_STANDARD_LATTER |  (missing) | DraftICU 69
-| ucal.h | void ucal_getTimeZoneOffsetFromLocal(const UCalendar*, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t*, int32_t*, UErrorCode*) |  (missing) | DraftICU 69
-| uformattedvalue.h | <tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_NUMBER_RANGE_SPAN |  (missing) | DraftICU 69
-| uniset.h | UnicodeSet&amp; icu::UnicodeSet::retain(const UnicodeString&amp;) |  (missing) | DraftICU 69
-| unum.h | <tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_CEILING |  (missing) | DraftICU 69
-| unum.h | <tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_FLOOR |  (missing) | DraftICU 69
-| unum.h | <tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_ODD |  (missing) | DraftICU 69
-| unumberformatter.h | <tt>enum</tt> UNumberRoundingPriority::UNUM_ROUNDING_PRIORITY_RELAXED |  (missing) | DraftICU 69
-| unumberformatter.h | <tt>enum</tt> UNumberRoundingPriority::UNUM_ROUNDING_PRIORITY_STRICT |  (missing) | DraftICU 69
-| unumberformatter.h | <tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_NEGATIVE |  (missing) | DraftICU 69
-| unumberformatter.h | <tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_NEGATIVE |  (missing) | DraftICU 69
-| unumberformatter.h | <tt>enum</tt> UNumberTrailingZeroDisplay::UNUM_TRAILING_ZERO_AUTO |  (missing) | DraftICU 69
-| unumberformatter.h | <tt>enum</tt> UNumberTrailingZeroDisplay::UNUM_TRAILING_ZERO_HIDE_IF_WHOLE |  (missing) | DraftICU 69
-| uset.h | void uset_complementAllCodePoints(USet*, const UChar*, int32_t) |  (missing) | DraftICU 69
-| uset.h | void uset_complementRange(USet*, UChar32, UChar32) |  (missing) | DraftICU 69
-| uset.h | void uset_complementString(USet*, const UChar*, int32_t) |  (missing) | DraftICU 69
-| uset.h | void uset_removeAllCodePoints(USet*, const UChar*, int32_t) |  (missing) | DraftICU 69
-| uset.h | void uset_retainAllCodePoints(USet*, const UChar*, int32_t) |  (missing) | DraftICU 69
-| uset.h | void uset_retainString(USet*, const UChar*, int32_t) |  (missing) | DraftICU 69
-| vtzone.h | void icu::VTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const |  (missing) | DraftICU 69
+| dcfmtsym.h | <tt>enum</tt>  							icu::DecimalFormatSymbols::ENumberFormatSymbol::kApproximatelySignSymbol |  (missing) | Internal
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getItem() |  (missing) | DraftICU 70
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilowattHourPer100Kilometer() |  (missing) | DraftICU 70
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createItem(UErrorCode&amp;) |  (missing) | DraftICU 70
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createKilowattHourPer100Kilometer(UErrorCode&amp;) |  (missing) | DraftICU 70
+| numberformatter.h | const DecimalFormatSymbols* icu::number::LocalizedNumberFormatter::getDecimalFormatSymbols() const |  (missing) | Internal
+| numberrangeformatter.h | icu::number::FormattedNumberRange::FormattedNumberRange() |  (missing) | DraftICU 70
+| timezone.h | <tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration(UErrorCode&amp;) |  (missing) | StableICU 70| *(Born Stable)* |
+| timezone.h | <tt>static</tt> StringEnumeration* icu::TimeZone::createEnumerationForRawOffset(int32_t, UErrorCode&amp;) |  (missing) | StableICU 70| *(Born Stable)* |
+| timezone.h | <tt>static</tt> StringEnumeration* icu::TimeZone::createEnumerationForRegion(const char*, UErrorCode&amp;) |  (missing) | StableICU 70| *(Born Stable)* |
+| uchar.h | bool u_stringHasBinaryProperty(const UChar*, int32_t, UProperty) |  (missing) | DraftICU 70
+| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_ARABIC_EXTENDED_B |  (missing) | StableICU 70| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_CYPRO_MINOAN |  (missing) | StableICU 70| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_ETHIOPIC_EXTENDED_B |  (missing) | StableICU 70| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_KANA_EXTENDED_B |  (missing) | StableICU 70| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_LATIN_EXTENDED_F |  (missing) | StableICU 70| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_LATIN_EXTENDED_G |  (missing) | StableICU 70| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_OLD_UYGHUR |  (missing) | StableICU 70| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_TANGSA |  (missing) | StableICU 70| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_TOTO |  (missing) | StableICU 70| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_A |  (missing) | StableICU 70| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_VITHKUQI |  (missing) | StableICU 70| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_ZNAMENNY_MUSICAL_NOTATION |  (missing) | StableICU 70| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> UJoiningGroup::U_JG_THIN_YEH |  (missing) | StableICU 70| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> UJoiningGroup::U_JG_VERTICAL_TAIL |  (missing) | StableICU 70| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> UProperty::UCHAR_BASIC_EMOJI |  (missing) | DraftICU 70
+| uchar.h | <tt>enum</tt> UProperty::UCHAR_EMOJI_KEYCAP_SEQUENCE |  (missing) | DraftICU 70
+| uchar.h | <tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_FLAG_SEQUENCE |  (missing) | DraftICU 70
+| uchar.h | <tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_MODIFIER_SEQUENCE |  (missing) | DraftICU 70
+| uchar.h | <tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_TAG_SEQUENCE |  (missing) | DraftICU 70
+| uchar.h | <tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_ZWJ_SEQUENCE |  (missing) | DraftICU 70
+| uchar.h | <tt>enum</tt> UProperty::UCHAR_RGI_EMOJI |  (missing) | DraftICU 70
+| udat.h | <tt>enum</tt> UDateFormatSymbolType::UDAT_NARROW_QUARTERS |  (missing) | DraftICU 70
+| udat.h | <tt>enum</tt> UDateFormatSymbolType::UDAT_STANDALONE_NARROW_QUARTERS |  (missing) | DraftICU 70
+| uniset.h | bool icu::UnicodeSet::hasStrings() const |  (missing) | DraftICU 70
+| unum.h | <tt>enum</tt> UNumberFormatSymbol::UNUM_APPROXIMATELY_SIGN_SYMBOL |  (missing) | Internal
+| uscript.h | <tt>enum</tt> UScriptCode::USCRIPT_CYPRO_MINOAN |  (missing) | StableICU 70| *(Born Stable)* |
+| uscript.h | <tt>enum</tt> UScriptCode::USCRIPT_OLD_UYGHUR |  (missing) | StableICU 70| *(Born Stable)* |
+| uscript.h | <tt>enum</tt> UScriptCode::USCRIPT_TANGSA |  (missing) | StableICU 70| *(Born Stable)* |
+| uscript.h | <tt>enum</tt> UScriptCode::USCRIPT_TOTO |  (missing) | StableICU 70| *(Born Stable)* |
+| uscript.h | <tt>enum</tt> UScriptCode::USCRIPT_VITHKUQI |  (missing) | StableICU 70| *(Born Stable)* |
+| uset.h | bool uset_hasStrings(const USet*) |  (missing) | DraftICU 70
+| uset.h | int32_t uset_getRangeCount(const USet*) |  (missing) | DraftICU 70
+| usetiter.h | UnicodeSetIterator&amp; icu::UnicodeSetIterator::skipToStrings() |  (missing) | DraftICU 70
+| utypes.h | <tt>enum</tt> UErrorCode::U_INPUT_TOO_LONG_ERROR |  (missing) | StableICU 68
 
 ## Other
 
-Other existing drafts in ICU 69
+Other existing drafts in ICU 70
 
-| File | API | ICU 68 | ICU 69 |
+| File | API | ICU 69 | ICU 70 |
 |---|---|---|---|
-| dtitvfmt.h |  UDisplayContext icu::DateIntervalFormat::getContext(UDisplayContextType, UErrorCode&amp;) const | DraftICU 68 | 
-| dtitvfmt.h |  void icu::DateIntervalFormat::setContext(UDisplayContext, UErrorCode&amp;) | DraftICU 68 | 
-| localematcher.h |  Builder&amp; icu::LocaleMatcher::Builder::setMaxDistance(const Locale&amp;, const Locale&amp;) | DraftICU 68 | 
-| localematcher.h |  Builder&amp; icu::LocaleMatcher::Builder::setNoDefaultLocale() | DraftICU 68 | 
-| localematcher.h |  UBool icu::LocaleMatcher::isMatch(const Locale&amp;, const Locale&amp;, UErrorCode&amp;) const | DraftICU 68 | 
+| basictz.h |  void icu::BasicTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const | DraftICU 69 | 
 | measfmt.h |  void icu::MeasureFormat::parseObject(const UnicodeString&amp;, Formattable&amp;, ParsePosition&amp;) const | DraftICU 53 | 
-| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getCandela() | DraftICU 68 | 
-| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoon() | DraftICU 68 | 
-| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoonImperial() | DraftICU 68 | 
-| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getDot() | DraftICU 68 | 
-| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getDram() | DraftICU 68 | 
-| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getDrop() | DraftICU 68 | 
-| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getEarthRadius() | DraftICU 68 | 
-| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getGrain() | DraftICU 68 | 
-| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getJigger() | DraftICU 68 | 
-| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getLumen() | DraftICU 68 | 
-| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getPinch() | DraftICU 68 | 
-| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getQuartImperial() | DraftICU 68 | 
-| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createCandela(UErrorCode&amp;) | DraftICU 68 | 
-| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoon(UErrorCode&amp;) | DraftICU 68 | 
-| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoonImperial(UErrorCode&amp;) | DraftICU 68 | 
-| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDot(UErrorCode&amp;) | DraftICU 68 | 
-| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDram(UErrorCode&amp;) | DraftICU 68 | 
-| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDrop(UErrorCode&amp;) | DraftICU 68 | 
-| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createEarthRadius(UErrorCode&amp;) | DraftICU 68 | 
-| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createGrain(UErrorCode&amp;) | DraftICU 68 | 
-| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createJigger(UErrorCode&amp;) | DraftICU 68 | 
-| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createLumen(UErrorCode&amp;) | DraftICU 68 | 
-| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPinch(UErrorCode&amp;) | DraftICU 68 | 
-| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createQuartImperial(UErrorCode&amp;) | DraftICU 68 | 
-| measunit.h |  std::pair&lt; LocalArray&lt; MeasureUnit &gt;, int32_t &gt; icu::MeasureUnit::splitToSingleUnits(UErrorCode&amp;) const | DraftICU 68 | 
-| numberformatter.h |  Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::usage(StringPiece) const&amp; | DraftICU 68 | 
-| numberformatter.h |  Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::usage(StringPiece)&amp;&amp; | DraftICU 68 | 
-| numberformatter.h |  MeasureUnit icu::number::FormattedNumber::getOutputUnit(UErrorCode&amp;) const | DraftICU 68 | 
-| numberrangeformatter.h |  std::pair&lt; StringClass, StringClass &gt; icu::number::FormattedNumberRange::getDecimalNumbers(UErrorCode&amp;) const | DraftICU 68 | 
-| plurrule.h |  UnicodeString icu::PluralRules::select(const number::FormattedNumberRange&amp;, UErrorCode&amp;) const | DraftICU 68 | 
-| ucurr.h |  <tt>enum</tt> UCurrNameStyle::UCURR_FORMAL_SYMBOL_NAME | DraftICU 68 | 
-| ucurr.h |  <tt>enum</tt> UCurrNameStyle::UCURR_VARIANT_SYMBOL_NAME | DraftICU 68 | 
-| udateintervalformat.h |  UDisplayContext udtitvfmt_getContext(const UDateIntervalFormat*, UDisplayContextType, UErrorCode*) | DraftICU 68 | 
-| udateintervalformat.h |  void udtitvfmt_setContext(UDateIntervalFormat*, UDisplayContext, UErrorCode*) | DraftICU 68 | 
-| unum.h |  <tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_AUTO | DraftICU 68 | 
-| unum.h |  <tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_MIN2 | DraftICU 68 | 
-| unumberformatter.h |  <tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_FORMAL | DraftICU 68 | 
-| unumberformatter.h |  <tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_VARIANT | DraftICU 68 | 
-| unumberformatter.h |  int32_t unumf_resultToDecimalNumber(const UFormattedNumber*, char*, int32_t, UErrorCode*) | DraftICU 68 | 
-| unumberrangeformatter.h |  UFormattedNumberRange* unumrf_openResult(UErrorCode*) | DraftICU 68 | 
-| unumberrangeformatter.h |  UNumberRangeFormatter* unumrf_openForSkeletonWithCollapseAndIdentityFallback(const UChar*, int32_t, UNumberRangeCollapse, UNumberRangeIdentityFallback, const char*, UParseError*, UErrorCode*) | DraftICU 68 | 
-| unumberrangeformatter.h |  UNumberRangeIdentityResult unumrf_resultGetIdentityResult(const UFormattedNumberRange*, UErrorCode*) | DraftICU 68 | 
-| unumberrangeformatter.h |  const UFormattedValue* unumrf_resultAsValue(const UFormattedNumberRange*, UErrorCode*) | DraftICU 68 | 
-| unumberrangeformatter.h |  int32_t unumrf_resultGetFirstDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*) | DraftICU 68 | 
-| unumberrangeformatter.h |  int32_t unumrf_resultGetSecondDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*) | DraftICU 68 | 
-| unumberrangeformatter.h |  void unumrf_close(UNumberRangeFormatter*) | DraftICU 68 | 
-| unumberrangeformatter.h |  void unumrf_closeResult(UFormattedNumberRange*) | DraftICU 68 | 
-| unumberrangeformatter.h |  void unumrf_formatDecimalRange(const UNumberRangeFormatter*, const char*, int32_t, const char*, int32_t, UFormattedNumberRange*, UErrorCode*) | DraftICU 68 | 
-| unumberrangeformatter.h |  void unumrf_formatDoubleRange(const UNumberRangeFormatter*, double, double, UFormattedNumberRange*, UErrorCode*) | DraftICU 68 | 
-| upluralrules.h |  int32_t uplrules_selectForRange(const UPluralRules*, const struct UFormattedNumberRange*, UChar*, int32_t, UErrorCode*) | DraftICU 68 | 
+| measunit.h |  MeasureUnit icu::MeasureUnit::withPrefix(UMeasurePrefix, UErrorCode&amp;) const | DraftICU 69 | 
+| measunit.h |  UMeasurePrefix icu::MeasureUnit::getPrefix(UErrorCode&amp;) const | DraftICU 69 | 
+| measunit.h |  <tt>static</tt> MeasureUnit icu::MeasureUnit::getMilligramOfglucosePerDeciliter() | DraftICU 69 | 
+| measunit.h |  <tt>static</tt> MeasureUnit* icu::MeasureUnit::createMilligramOfglucosePerDeciliter(UErrorCode&amp;) | DraftICU 69 | 
+| numberformatter.h |  Precision icu::number::FractionPrecision::withSignificantDigits(int32_t, int32_t, UNumberRoundingPriority) const | DraftICU 69 | 
+| numberformatter.h |  Precision icu::number::Precision::trailingZeroDisplay(UNumberTrailingZeroDisplay) const | DraftICU 69 | 
+| rbtz.h |  void icu::RuleBasedTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const | DraftICU 69 | 
+| simpletz.h |  void icu::SimpleTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const | DraftICU 69 | 
+| ubrk.h |  UBreakIterator* ubrk_clone(const UBreakIterator*, UErrorCode*) | DraftICU 69 | 
+| ucal.h |  <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_DAYLIGHT_FORMER | DraftICU 69 | 
+| ucal.h |  <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_DAYLIGHT_LATTER | DraftICU 69 | 
+| ucal.h |  <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_FORMER | DraftICU 69 | 
+| ucal.h |  <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_LATTER | DraftICU 69 | 
+| ucal.h |  <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_STANDARD_FORMER | DraftICU 69 | 
+| ucal.h |  <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_STANDARD_LATTER | DraftICU 69 | 
+| ucal.h |  void ucal_getTimeZoneOffsetFromLocal(const UCalendar*, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t*, int32_t*, UErrorCode*) | DraftICU 69 | 
+| uformattedvalue.h |  <tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_NUMBER_RANGE_SPAN | DraftICU 69 | 
+| uniset.h |  UnicodeSet&amp; icu::UnicodeSet::retain(const UnicodeString&amp;) | DraftICU 69 | 
+| unum.h |  <tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_CEILING | DraftICU 69 | 
+| unum.h |  <tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_FLOOR | DraftICU 69 | 
+| unum.h |  <tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_ODD | DraftICU 69 | 
+| unumberformatter.h |  <tt>enum</tt> UNumberRoundingPriority::UNUM_ROUNDING_PRIORITY_RELAXED | DraftICU 69 | 
+| unumberformatter.h |  <tt>enum</tt> UNumberRoundingPriority::UNUM_ROUNDING_PRIORITY_STRICT | DraftICU 69 | 
+| unumberformatter.h |  <tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_NEGATIVE | DraftICU 69 | 
+| unumberformatter.h |  <tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_NEGATIVE | DraftICU 69 | 
+| unumberformatter.h |  <tt>enum</tt> UNumberTrailingZeroDisplay::UNUM_TRAILING_ZERO_AUTO | DraftICU 69 | 
+| unumberformatter.h |  <tt>enum</tt> UNumberTrailingZeroDisplay::UNUM_TRAILING_ZERO_HIDE_IF_WHOLE | DraftICU 69 | 
 | uregex.h |  <tt>enum</tt> URegexpFlag::UREGEX_CANON_EQ | DraftICU 2.4 | 
+| uset.h |  void uset_complementAllCodePoints(USet*, const UChar*, int32_t) | DraftICU 69 | 
+| uset.h |  void uset_complementRange(USet*, UChar32, UChar32) | DraftICU 69 | 
+| uset.h |  void uset_complementString(USet*, const UChar*, int32_t) | DraftICU 69 | 
+| uset.h |  void uset_removeAllCodePoints(USet*, const UChar*, int32_t) | DraftICU 69 | 
+| uset.h |  void uset_retainAllCodePoints(USet*, const UChar*, int32_t) | DraftICU 69 | 
+| uset.h |  void uset_retainString(USet*, const UChar*, int32_t) | DraftICU 69 | 
+| vtzone.h |  void icu::VTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&amp;, int32_t&amp;, UErrorCode&amp;) const | DraftICU 69 | 
 
 ## Simplifications
 
 This section shows cases where the signature was "simplified" for the sake of comparison. The simplified form is in bold, followed by
     all possible variations in "original" form.
 
+- **`UClassID icu::BreakIterator::getDynamicClassID() const`**
+  - `UClassID icu::BreakIterator::getDynamicClassID() const override=0`
+  - `UClassID icu::BreakIterator::getDynamicClassID() const=0`
+- **`UClassID icu::Calendar::getDynamicClassID() const`**
+  - `UClassID icu::Calendar::getDynamicClassID() const override=0`
+  - `UClassID icu::Calendar::getDynamicClassID() const=0`
+- **`UClassID icu::Collator::getDynamicClassID() const`**
+  - `UClassID icu::Collator::getDynamicClassID() const override=0`
+  - `UClassID icu::Collator::getDynamicClassID() const=0`
+- **`UClassID icu::ForwardCharacterIterator::getDynamicClassID() const`**
+  - `UClassID icu::ForwardCharacterIterator::getDynamicClassID() const override=0`
+  - `UClassID icu::ForwardCharacterIterator::getDynamicClassID() const=0`
+- **`UClassID icu::NumberFormat::getDynamicClassID() const`**
+  - `UClassID icu::NumberFormat::getDynamicClassID() const override=0`
+  - `UClassID icu::NumberFormat::getDynamicClassID() const=0`
+- **`UClassID icu::TimeZone::getDynamicClassID() const`**
+  - `UClassID icu::TimeZone::getDynamicClassID() const override=0`
+  - `UClassID icu::TimeZone::getDynamicClassID() const=0`
+- **`UClassID icu::Transliterator::getDynamicClassID() const`**
+  - `UClassID icu::Transliterator::getDynamicClassID() const override=0`
+  - `UClassID icu::Transliterator::getDynamicClassID() const=0`
+- **`UClassID icu::UnicodeFunctor::getDynamicClassID() const`**
+  - `UClassID icu::UnicodeFunctor::getDynamicClassID() const override=0`
+  - `UClassID icu::UnicodeFunctor::getDynamicClassID() const=0`
+- **`UMatchDegree icu::UnicodeFilter::matches(const Replaceable&, int32_t&, int32_t, bool)`**
+  - `UMatchDegree icu::UnicodeFilter::matches(const Replaceable&, int32_t&, int32_t, UBool)`
+  - `UMatchDegree icu::UnicodeFilter::matches(const Replaceable&, int32_t&, int32_t, UBool) override`
+- **`UMatchDegree icu::UnicodeSet::matches(const Replaceable&, int32_t&, int32_t, bool)`**
+  - `UMatchDegree icu::UnicodeSet::matches(const Replaceable&, int32_t&, int32_t, UBool)`
+  - `UMatchDegree icu::UnicodeSet::matches(const Replaceable&, int32_t&, int32_t, UBool) override`
+- **`UnicodeString& icu::UnicodeSet::toPattern(UnicodeString&, bool escapeUnprintable=) const`**
+  - `UnicodeString& icu::UnicodeSet::toPattern(UnicodeString&, UBool escapeUnprintable=) const`
+  - `UnicodeString& icu::UnicodeSet::toPattern(UnicodeString&, UBool escapeUnprintable=) const override`
+- **`bool icu::AnnualTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&) const`**
+  - `UBool icu::AnnualTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&) const`
+  - `UBool icu::AnnualTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&) const override`
+- **`bool icu::AnnualTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&) const`**
+  - `UBool icu::AnnualTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&) const`
+  - `UBool icu::AnnualTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&) const override`
+- **`bool icu::AnnualTimeZoneRule::getNextStart(UDate, int32_t, int32_t, bool, UDate&) const`**
+  - `UBool icu::AnnualTimeZoneRule::getNextStart(UDate, int32_t, int32_t, UBool, UDate&) const`
+  - `UBool icu::AnnualTimeZoneRule::getNextStart(UDate, int32_t, int32_t, UBool, UDate&) const override`
+- **`bool icu::AnnualTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, bool, UDate&) const`**
+  - `UBool icu::AnnualTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, UBool, UDate&) const`
+  - `UBool icu::AnnualTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, UBool, UDate&) const override`
+- **`bool icu::AnnualTimeZoneRule::isEquivalentTo(const TimeZoneRule&) const`**
+  - `UBool icu::AnnualTimeZoneRule::isEquivalentTo(const TimeZoneRule&) const`
+  - `UBool icu::AnnualTimeZoneRule::isEquivalentTo(const TimeZoneRule&) const override`
+- **`bool icu::AnnualTimeZoneRule::operator!=(const TimeZoneRule&) const`**
+  - `UBool icu::AnnualTimeZoneRule::operator!=(const TimeZoneRule&) const`
+  - `bool icu::AnnualTimeZoneRule::operator!=(const TimeZoneRule&) const override`
+- **`bool icu::AnnualTimeZoneRule::operator==(const TimeZoneRule&) const`**
+  - `UBool icu::AnnualTimeZoneRule::operator==(const TimeZoneRule&) const`
+  - `bool icu::AnnualTimeZoneRule::operator==(const TimeZoneRule&) const override`
+- **`bool icu::BreakIterator::operator==(const BreakIterator&) const`**
+  - `UBool icu::BreakIterator::operator==(const BreakIterator&) const=0`
+  - `bool icu::BreakIterator::operator==(const BreakIterator&) const=0`
+- **`bool icu::ChoiceFormat::operator==(const Format&) const`**
+  - `UBool icu::ChoiceFormat::operator==(const Format&) const`
+  - `bool icu::ChoiceFormat::operator==(const Format&) const override`
+- **`bool icu::DateFormat::operator==(const Format&) const`**
+  - `UBool icu::DateFormat::operator==(const Format&) const`
+  - `bool icu::DateFormat::operator==(const Format&) const override`
+- **`bool icu::DateIntervalFormat::operator==(const Format&) const`**
+  - `UBool icu::DateIntervalFormat::operator==(const Format&) const`
+  - `bool icu::DateIntervalFormat::operator==(const Format&) const override`
+- **`bool icu::DecimalFormat::operator==(const Format&) const`**
+  - `UBool icu::DecimalFormat::operator==(const Format&) const U_OVERRIDE`
+  - `bool icu::DecimalFormat::operator==(const Format&) const U_OVERRIDE`
+- **`bool icu::Format::operator==(const Format&) const`**
+  - `UBool icu::Format::operator==(const Format&) const=0`
+  - `bool icu::Format::operator==(const Format&) const=0`
+- **`bool icu::ForwardCharacterIterator::operator==(const ForwardCharacterIterator&) const`**
+  - `UBool icu::ForwardCharacterIterator::operator==(const ForwardCharacterIterator&) const=0`
+  - `bool icu::ForwardCharacterIterator::operator==(const ForwardCharacterIterator&) const=0`
+- **`bool icu::GregorianCalendar::haveDefaultCentury() const`**
+  - `UBool icu::GregorianCalendar::haveDefaultCentury() const`
+  - `UBool icu::GregorianCalendar::haveDefaultCentury() const override`
+- **`bool icu::GregorianCalendar::inDaylightTime(UErrorCode&) const`**
+  - `UBool icu::GregorianCalendar::inDaylightTime(UErrorCode&) const`
+  - `UBool icu::GregorianCalendar::inDaylightTime(UErrorCode&) const override`
+- **`bool icu::GregorianCalendar::isEquivalentTo(const Calendar&) const`**
+  - `UBool icu::GregorianCalendar::isEquivalentTo(const Calendar&) const`
+  - `UBool icu::GregorianCalendar::isEquivalentTo(const Calendar&) const override`
+- **`bool icu::InitialTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&) const`**
+  - `UBool icu::InitialTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&) const`
+  - `UBool icu::InitialTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&) const override`
+- **`bool icu::InitialTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&) const`**
+  - `UBool icu::InitialTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&) const`
+  - `UBool icu::InitialTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&) const override`
+- **`bool icu::InitialTimeZoneRule::getNextStart(UDate, int32_t, int32_t, bool, UDate&) const`**
+  - `UBool icu::InitialTimeZoneRule::getNextStart(UDate, int32_t, int32_t, UBool, UDate&) const`
+  - `UBool icu::InitialTimeZoneRule::getNextStart(UDate, int32_t, int32_t, UBool, UDate&) const override`
+- **`bool icu::InitialTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, bool, UDate&) const`**
+  - `UBool icu::InitialTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, UBool, UDate&) const`
+  - `UBool icu::InitialTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, UBool, UDate&) const override`
+- **`bool icu::InitialTimeZoneRule::isEquivalentTo(const TimeZoneRule&) const`**
+  - `UBool icu::InitialTimeZoneRule::isEquivalentTo(const TimeZoneRule&) const`
+  - `UBool icu::InitialTimeZoneRule::isEquivalentTo(const TimeZoneRule&) const override`
+- **`bool icu::InitialTimeZoneRule::operator!=(const TimeZoneRule&) const`**
+  - `UBool icu::InitialTimeZoneRule::operator!=(const TimeZoneRule&) const`
+  - `bool icu::InitialTimeZoneRule::operator!=(const TimeZoneRule&) const override`
+- **`bool icu::InitialTimeZoneRule::operator==(const TimeZoneRule&) const`**
+  - `UBool icu::InitialTimeZoneRule::operator==(const TimeZoneRule&) const`
+  - `bool icu::InitialTimeZoneRule::operator==(const TimeZoneRule&) const override`
+- **`bool icu::MeasureFormat::operator==(const Format&) const`**
+  - `UBool icu::MeasureFormat::operator==(const Format&) const`
+  - `bool icu::MeasureFormat::operator==(const Format&) const override`
+- **`bool icu::MessageFormat::operator==(const Format&) const`**
+  - `UBool icu::MessageFormat::operator==(const Format&) const`
+  - `bool icu::MessageFormat::operator==(const Format&) const override`
+- **`bool icu::NumberFormat::operator==(const Format&) const`**
+  - `UBool icu::NumberFormat::operator==(const Format&) const`
+  - `bool icu::NumberFormat::operator==(const Format&) const override`
+- **`bool icu::PluralFormat::operator==(const Format&) const`**
+  - `UBool icu::PluralFormat::operator==(const Format&) const`
+  - `bool icu::PluralFormat::operator==(const Format&) const override`
+- **`bool icu::RuleBasedBreakIterator::isBoundary(int32_t)`**
+  - `UBool icu::RuleBasedBreakIterator::isBoundary(int32_t)`
+  - `UBool icu::RuleBasedBreakIterator::isBoundary(int32_t) override`
+- **`bool icu::RuleBasedBreakIterator::operator==(const BreakIterator&) const`**
+  - `UBool icu::RuleBasedBreakIterator::operator==(const BreakIterator&) const`
+  - `bool icu::RuleBasedBreakIterator::operator==(const BreakIterator&) const override`
+- **`bool icu::RuleBasedCollator::operator==(const Collator&) const`**
+  - `UBool icu::RuleBasedCollator::operator==(const Collator&) const`
+  - `bool icu::RuleBasedCollator::operator==(const Collator&) const override`
+- **`bool icu::RuleBasedNumberFormat::isLenient() const`**
+  - `UBool icu::RuleBasedNumberFormat::isLenient() const`
+  - `UBool icu::RuleBasedNumberFormat::isLenient() const override`
+- **`bool icu::RuleBasedNumberFormat::operator==(const Format&) const`**
+  - `UBool icu::RuleBasedNumberFormat::operator==(const Format&) const`
+  - `bool icu::RuleBasedNumberFormat::operator==(const Format&) const override`
+- **`bool icu::RuleBasedTimeZone::getNextTransition(UDate, bool, TimeZoneTransition&) const`**
+  - `UBool icu::RuleBasedTimeZone::getNextTransition(UDate, UBool, TimeZoneTransition&) const`
+  - `UBool icu::RuleBasedTimeZone::getNextTransition(UDate, UBool, TimeZoneTransition&) const override`
+- **`bool icu::RuleBasedTimeZone::getPreviousTransition(UDate, bool, TimeZoneTransition&) const`**
+  - `UBool icu::RuleBasedTimeZone::getPreviousTransition(UDate, UBool, TimeZoneTransition&) const`
+  - `UBool icu::RuleBasedTimeZone::getPreviousTransition(UDate, UBool, TimeZoneTransition&) const override`
+- **`bool icu::RuleBasedTimeZone::hasSameRules(const TimeZone&) const`**
+  - `UBool icu::RuleBasedTimeZone::hasSameRules(const TimeZone&) const`
+  - `UBool icu::RuleBasedTimeZone::hasSameRules(const TimeZone&) const override`
+- **`bool icu::RuleBasedTimeZone::inDaylightTime(UDate, UErrorCode&) const`**
+  - `UBool icu::RuleBasedTimeZone::inDaylightTime(UDate, UErrorCode&) const`
+  - `UBool icu::RuleBasedTimeZone::inDaylightTime(UDate, UErrorCode&) const override`
+- **`bool icu::RuleBasedTimeZone::operator==(const TimeZone&) const`**
+  - `UBool icu::RuleBasedTimeZone::operator==(const TimeZone&) const`
+  - `bool icu::RuleBasedTimeZone::operator==(const TimeZone&) const override`
+- **`bool icu::RuleBasedTimeZone::useDaylightTime() const`**
+  - `UBool icu::RuleBasedTimeZone::useDaylightTime() const`
+  - `UBool icu::RuleBasedTimeZone::useDaylightTime() const override`
+- **`bool icu::SelectFormat::operator==(const Format&) const`**
+  - `UBool icu::SelectFormat::operator==(const Format&) const`
+  - `bool icu::SelectFormat::operator==(const Format&) const override`
+- **`bool icu::SimpleDateFormat::operator==(const Format&) const`**
+  - `UBool icu::SimpleDateFormat::operator==(const Format&) const`
+  - `bool icu::SimpleDateFormat::operator==(const Format&) const override`
+- **`bool icu::SimpleNumberFormatFactory::visible() const`**
+  - `UBool icu::SimpleNumberFormatFactory::visible() const`
+  - `UBool icu::SimpleNumberFormatFactory::visible() const override`
+- **`bool icu::SimpleTimeZone::getNextTransition(UDate, bool, TimeZoneTransition&) const`**
+  - `UBool icu::SimpleTimeZone::getNextTransition(UDate, UBool, TimeZoneTransition&) const`
+  - `UBool icu::SimpleTimeZone::getNextTransition(UDate, UBool, TimeZoneTransition&) const override`
+- **`bool icu::SimpleTimeZone::getPreviousTransition(UDate, bool, TimeZoneTransition&) const`**
+  - `UBool icu::SimpleTimeZone::getPreviousTransition(UDate, UBool, TimeZoneTransition&) const`
+  - `UBool icu::SimpleTimeZone::getPreviousTransition(UDate, UBool, TimeZoneTransition&) const override`
+- **`bool icu::SimpleTimeZone::hasSameRules(const TimeZone&) const`**
+  - `UBool icu::SimpleTimeZone::hasSameRules(const TimeZone&) const`
+  - `UBool icu::SimpleTimeZone::hasSameRules(const TimeZone&) const override`
+- **`bool icu::SimpleTimeZone::inDaylightTime(UDate, UErrorCode&) const`**
+  - `UBool icu::SimpleTimeZone::inDaylightTime(UDate, UErrorCode&) const`
+  - `UBool icu::SimpleTimeZone::inDaylightTime(UDate, UErrorCode&) const override`
+- **`bool icu::SimpleTimeZone::operator==(const TimeZone&) const`**
+  - `UBool icu::SimpleTimeZone::operator==(const TimeZone&) const`
+  - `bool icu::SimpleTimeZone::operator==(const TimeZone&) const override`
+- **`bool icu::SimpleTimeZone::useDaylightTime() const`**
+  - `UBool icu::SimpleTimeZone::useDaylightTime() const`
+  - `UBool icu::SimpleTimeZone::useDaylightTime() const override`
+- **`bool icu::StringCharacterIterator::operator==(const ForwardCharacterIterator&) const`**
+  - `UBool icu::StringCharacterIterator::operator==(const ForwardCharacterIterator&) const`
+  - `bool icu::StringCharacterIterator::operator==(const ForwardCharacterIterator&) const override`
+- **`bool icu::StringSearch::operator==(const SearchIterator&) const`**
+  - `UBool icu::StringSearch::operator==(const SearchIterator&) const`
+  - `bool icu::StringSearch::operator==(const SearchIterator&) const override`
+- **`bool icu::TimeArrayTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&) const`**
+  - `UBool icu::TimeArrayTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&) const`
+  - `UBool icu::TimeArrayTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&) const override`
+- **`bool icu::TimeArrayTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&) const`**
+  - `UBool icu::TimeArrayTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&) const`
+  - `UBool icu::TimeArrayTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&) const override`
+- **`bool icu::TimeArrayTimeZoneRule::getNextStart(UDate, int32_t, int32_t, bool, UDate&) const`**
+  - `UBool icu::TimeArrayTimeZoneRule::getNextStart(UDate, int32_t, int32_t, UBool, UDate&) const`
+  - `UBool icu::TimeArrayTimeZoneRule::getNextStart(UDate, int32_t, int32_t, UBool, UDate&) const override`
+- **`bool icu::TimeArrayTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, bool, UDate&) const`**
+  - `UBool icu::TimeArrayTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, UBool, UDate&) const`
+  - `UBool icu::TimeArrayTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, UBool, UDate&) const override`
+- **`bool icu::TimeArrayTimeZoneRule::isEquivalentTo(const TimeZoneRule&) const`**
+  - `UBool icu::TimeArrayTimeZoneRule::isEquivalentTo(const TimeZoneRule&) const`
+  - `UBool icu::TimeArrayTimeZoneRule::isEquivalentTo(const TimeZoneRule&) const override`
+- **`bool icu::TimeArrayTimeZoneRule::operator!=(const TimeZoneRule&) const`**
+  - `UBool icu::TimeArrayTimeZoneRule::operator!=(const TimeZoneRule&) const`
+  - `bool icu::TimeArrayTimeZoneRule::operator!=(const TimeZoneRule&) const override`
+- **`bool icu::TimeArrayTimeZoneRule::operator==(const TimeZoneRule&) const`**
+  - `UBool icu::TimeArrayTimeZoneRule::operator==(const TimeZoneRule&) const`
+  - `bool icu::TimeArrayTimeZoneRule::operator==(const TimeZoneRule&) const override`
+- **`bool icu::TimeZoneFormat::operator==(const Format&) const`**
+  - `UBool icu::TimeZoneFormat::operator==(const Format&) const`
+  - `bool icu::TimeZoneFormat::operator==(const Format&) const override`
+- **`bool icu::TimeZoneNames::operator==(const TimeZoneNames&) const`**
+  - `UBool icu::TimeZoneNames::operator==(const TimeZoneNames&) const=0`
+  - `bool icu::TimeZoneNames::operator==(const TimeZoneNames&) const=0`
+- **`bool icu::UCharCharacterIterator::hasNext()`**
+  - `UBool icu::UCharCharacterIterator::hasNext()`
+  - `UBool icu::UCharCharacterIterator::hasNext() override`
+- **`bool icu::UCharCharacterIterator::hasPrevious()`**
+  - `UBool icu::UCharCharacterIterator::hasPrevious()`
+  - `UBool icu::UCharCharacterIterator::hasPrevious() override`
+- **`bool icu::UCharCharacterIterator::operator==(const ForwardCharacterIterator&) const`**
+  - `UBool icu::UCharCharacterIterator::operator==(const ForwardCharacterIterator&) const`
+  - `bool icu::UCharCharacterIterator::operator==(const ForwardCharacterIterator&) const override`
+- **`bool icu::UnicodeSet::contains(UChar32) const`**
+  - `UBool icu::UnicodeSet::contains(UChar32) const`
+  - `UBool icu::UnicodeSet::contains(UChar32) const override`
+- **`bool icu::UnicodeString::hasMetaData() const`**
+  - `UBool icu::UnicodeString::hasMetaData() const`
+  - `UBool icu::UnicodeString::hasMetaData() const override`
+- **`bool icu::UnicodeStringAppendable::appendCodePoint(UChar32)`**
+  - `UBool icu::UnicodeStringAppendable::appendCodePoint(UChar32)`
+  - `UBool icu::UnicodeStringAppendable::appendCodePoint(UChar32) override`
+- **`bool icu::UnicodeStringAppendable::appendCodeUnit(char16_t)`**
+  - `UBool icu::UnicodeStringAppendable::appendCodeUnit(char16_t)`
+  - `UBool icu::UnicodeStringAppendable::appendCodeUnit(char16_t) override`
+- **`bool icu::UnicodeStringAppendable::appendString(const char16_t*, int32_t)`**
+  - `UBool icu::UnicodeStringAppendable::appendString(const char16_t*, int32_t)`
+  - `UBool icu::UnicodeStringAppendable::appendString(const char16_t*, int32_t) override`
+- **`bool icu::UnicodeStringAppendable::reserveAppendCapacity(int32_t)`**
+  - `UBool icu::UnicodeStringAppendable::reserveAppendCapacity(int32_t)`
+  - `UBool icu::UnicodeStringAppendable::reserveAppendCapacity(int32_t) override`
+- **`bool icu::VTimeZone::getNextTransition(UDate, bool, TimeZoneTransition&) const`**
+  - `UBool icu::VTimeZone::getNextTransition(UDate, UBool, TimeZoneTransition&) const`
+  - `UBool icu::VTimeZone::getNextTransition(UDate, UBool, TimeZoneTransition&) const override`
+- **`bool icu::VTimeZone::getPreviousTransition(UDate, bool, TimeZoneTransition&) const`**
+  - `UBool icu::VTimeZone::getPreviousTransition(UDate, UBool, TimeZoneTransition&) const`
+  - `UBool icu::VTimeZone::getPreviousTransition(UDate, UBool, TimeZoneTransition&) const override`
+- **`bool icu::VTimeZone::hasSameRules(const TimeZone&) const`**
+  - `UBool icu::VTimeZone::hasSameRules(const TimeZone&) const`
+  - `UBool icu::VTimeZone::hasSameRules(const TimeZone&) const override`
+- **`bool icu::VTimeZone::inDaylightTime(UDate, UErrorCode&) const`**
+  - `UBool icu::VTimeZone::inDaylightTime(UDate, UErrorCode&) const`
+  - `UBool icu::VTimeZone::inDaylightTime(UDate, UErrorCode&) const override`
+- **`bool icu::VTimeZone::operator==(const TimeZone&) const`**
+  - `UBool icu::VTimeZone::operator==(const TimeZone&) const`
+  - `bool icu::VTimeZone::operator==(const TimeZone&) const override`
+- **`bool icu::VTimeZone::useDaylightTime() const`**
+  - `UBool icu::VTimeZone::useDaylightTime() const`
+  - `UBool icu::VTimeZone::useDaylightTime() const override`
+- **`void icu::RuleBasedNumberFormat::setLenient(bool)`**
+  - `void icu::RuleBasedNumberFormat::setLenient(UBool)`
+  - `void icu::RuleBasedNumberFormat::setLenient(UBool) override`
+- **`void icu::RuleBasedTimeZone::getOffset(UDate, bool, int32_t&, int32_t&, UErrorCode&) const`**
+  - `void icu::RuleBasedTimeZone::getOffset(UDate, UBool, int32_t&, int32_t&, UErrorCode&) const`
+  - `void icu::RuleBasedTimeZone::getOffset(UDate, UBool, int32_t&, int32_t&, UErrorCode&) const override`
+- **`void icu::SimpleTimeZone::getOffset(UDate, bool, int32_t&, int32_t&, UErrorCode&) const`**
+  - `void icu::SimpleTimeZone::getOffset(UDate, UBool, int32_t&, int32_t&, UErrorCode&) const`
+  - `void icu::SimpleTimeZone::getOffset(UDate, UBool, int32_t&, int32_t&, UErrorCode&) const override`
+- **`void icu::VTimeZone::getOffset(UDate, bool, int32_t&, int32_t&, UErrorCode&) const`**
+  - `void icu::VTimeZone::getOffset(UDate, UBool, int32_t&, int32_t&, UErrorCode&) const`
+  - `void icu::VTimeZone::getOffset(UDate, UBool, int32_t&, int32_t&, UErrorCode&) const override`
+- **`void* icu::AnnualTimeZoneRule::clone() const`**
+  - `AnnualTimeZoneRule* icu::AnnualTimeZoneRule::clone() const`
+  - `AnnualTimeZoneRule* icu::AnnualTimeZoneRule::clone() const override`
+- **`void* icu::BasicTimeZone::clone() const`**
+  - `BasicTimeZone* icu::BasicTimeZone::clone() const override=0`
+  - `BasicTimeZone* icu::BasicTimeZone::clone() const=0`
+- **`void* icu::ChoiceFormat::clone() const`**
+  - `ChoiceFormat* icu::ChoiceFormat::clone() const`
+  - `ChoiceFormat* icu::ChoiceFormat::clone() const override`
+- **`void* icu::CurrencyAmount::clone() const`**
+  - `CurrencyAmount* icu::CurrencyAmount::clone() const`
+  - `CurrencyAmount* icu::CurrencyAmount::clone() const override`
+- **`void* icu::CurrencyUnit::clone() const`**
+  - `CurrencyUnit* icu::CurrencyUnit::clone() const`
+  - `CurrencyUnit* icu::CurrencyUnit::clone() const override`
+- **`void* icu::DateFormat::clone() const`**
+  - `DateFormat* icu::DateFormat::clone() const override=0`
+  - `DateFormat* icu::DateFormat::clone() const=0`
+- **`void* icu::DateIntervalFormat::clone() const`**
+  - `DateIntervalFormat* icu::DateIntervalFormat::clone() const`
+  - `DateIntervalFormat* icu::DateIntervalFormat::clone() const override`
+- **`void* icu::GregorianCalendar::clone() const`**
+  - `GregorianCalendar* icu::GregorianCalendar::clone() const`
+  - `GregorianCalendar* icu::GregorianCalendar::clone() const override`
+- **`void* icu::InitialTimeZoneRule::clone() const`**
+  - `InitialTimeZoneRule* icu::InitialTimeZoneRule::clone() const`
+  - `InitialTimeZoneRule* icu::InitialTimeZoneRule::clone() const override`
+- **`void* icu::MeasureFormat::clone() const`**
+  - `MeasureFormat* icu::MeasureFormat::clone() const`
+  - `MeasureFormat* icu::MeasureFormat::clone() const override`
+- **`void* icu::MessageFormat::clone() const`**
+  - `MessageFormat* icu::MessageFormat::clone() const`
+  - `MessageFormat* icu::MessageFormat::clone() const override`
+- **`void* icu::NumberFormat::clone() const`**
+  - `NumberFormat* icu::NumberFormat::clone() const override=0`
+  - `NumberFormat* icu::NumberFormat::clone() const=0`
+- **`void* icu::PluralFormat::clone() const`**
+  - `PluralFormat* icu::PluralFormat::clone() const`
+  - `PluralFormat* icu::PluralFormat::clone() const override`
+- **`void* icu::RuleBasedBreakIterator::clone() const`**
+  - `RuleBasedBreakIterator* icu::RuleBasedBreakIterator::clone() const`
+  - `RuleBasedBreakIterator* icu::RuleBasedBreakIterator::clone() const override`
+- **`void* icu::RuleBasedBreakIterator::createBufferClone(void*, int32_t&, UErrorCode&)`**
+  - `RuleBasedBreakIterator* icu::RuleBasedBreakIterator::createBufferClone(void*, int32_t&, UErrorCode&)`
+  - `RuleBasedBreakIterator* icu::RuleBasedBreakIterator::createBufferClone(void*, int32_t&, UErrorCode&) override`
+- **`void* icu::RuleBasedCollator::clone() const`**
+  - `RuleBasedCollator* icu::RuleBasedCollator::clone() const`
+  - `RuleBasedCollator* icu::RuleBasedCollator::clone() const override`
+- **`void* icu::RuleBasedNumberFormat::clone() const`**
+  - `RuleBasedNumberFormat* icu::RuleBasedNumberFormat::clone() const`
+  - `RuleBasedNumberFormat* icu::RuleBasedNumberFormat::clone() const override`
+- **`void* icu::RuleBasedTimeZone::clone() const`**
+  - `RuleBasedTimeZone* icu::RuleBasedTimeZone::clone() const`
+  - `RuleBasedTimeZone* icu::RuleBasedTimeZone::clone() const override`
+- **`void* icu::SelectFormat::clone() const`**
+  - `SelectFormat* icu::SelectFormat::clone() const`
+  - `SelectFormat* icu::SelectFormat::clone() const override`
+- **`void* icu::SimpleDateFormat::clone() const`**
+  - `SimpleDateFormat* icu::SimpleDateFormat::clone() const`
+  - `SimpleDateFormat* icu::SimpleDateFormat::clone() const override`
+- **`void* icu::SimpleTimeZone::clone() const`**
+  - `SimpleTimeZone* icu::SimpleTimeZone::clone() const`
+  - `SimpleTimeZone* icu::SimpleTimeZone::clone() const override`
+- **`void* icu::StringCharacterIterator::clone() const`**
+  - `StringCharacterIterator* icu::StringCharacterIterator::clone() const`
+  - `StringCharacterIterator* icu::StringCharacterIterator::clone() const override`
+- **`void* icu::StringSearch::safeClone() const`**
+  - `StringSearch* icu::StringSearch::safeClone() const`
+  - `StringSearch* icu::StringSearch::safeClone() const override`
+- **`void* icu::TimeArrayTimeZoneRule::clone() const`**
+  - `TimeArrayTimeZoneRule* icu::TimeArrayTimeZoneRule::clone() const`
+  - `TimeArrayTimeZoneRule* icu::TimeArrayTimeZoneRule::clone() const override`
+- **`void* icu::TimeUnit::clone() const`**
+  - `TimeUnit* icu::TimeUnit::clone() const`
+  - `TimeUnit* icu::TimeUnit::clone() const override`
+- **`void* icu::TimeUnitAmount::clone() const`**
+  - `TimeUnitAmount* icu::TimeUnitAmount::clone() const`
+  - `TimeUnitAmount* icu::TimeUnitAmount::clone() const override`
+- **`void* icu::TimeUnitFormat::clone() const`**
+  - `TimeUnitFormat* icu::TimeUnitFormat::clone() const`
+  - `TimeUnitFormat* icu::TimeUnitFormat::clone() const override`
+- **`void* icu::TimeZoneFormat::clone() const`**
+  - `TimeZoneFormat* icu::TimeZoneFormat::clone() const`
+  - `TimeZoneFormat* icu::TimeZoneFormat::clone() const override`
+- **`void* icu::UCharCharacterIterator::clone() const`**
+  - `UCharCharacterIterator* icu::UCharCharacterIterator::clone() const`
+  - `UCharCharacterIterator* icu::UCharCharacterIterator::clone() const override`
+- **`void* icu::UnicodeFilter::clone() const`**
+  - `UnicodeFilter* icu::UnicodeFilter::clone() const override=0`
+  - `UnicodeFilter* icu::UnicodeFilter::clone() const=0`
+- **`void* icu::UnicodeSet::clone() const`**
+  - `UnicodeSet* icu::UnicodeSet::clone() const`
+  - `UnicodeSet* icu::UnicodeSet::clone() const override`
+- **`void* icu::UnicodeString::clone() const`**
+  - `UnicodeString* icu::UnicodeString::clone() const`
+  - `UnicodeString* icu::UnicodeString::clone() const override`
+- **`void* icu::VTimeZone::clone() const`**
+  - `VTimeZone* icu::VTimeZone::clone() const`
+  - `VTimeZone* icu::VTimeZone::clone() const override`
 
 ## Colophon
 
-Contents generated by StableAPI tool on Thu Mar 11 16:09:31 PST 2021
+Contents generated by StableAPI tool on Wed Sep 29 11:59:13 PDT 2021
 
 Copyright © 2019 and later: Unicode, Inc. and others.
 License & terms of use: http://www.unicode.org/copyright.html
diff --git a/icu4j/APIChangeReport.html b/icu4j/APIChangeReport.html
index 525608a..24c7712 100644
--- a/icu4j/APIChangeReport.html
+++ b/icu4j/APIChangeReport.html
@@ -4,260 +4,231 @@
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <!-- © 2021 and later: Unicode, Inc. and others. -->
 <!-- License & terms of use: http://www.unicode.org/copyright.html -->
-<title>ICU4J API Comparison: ICU4J 68.1 with ICU4J 69.1</title>
+<title>ICU4J API Comparison: ICU4J 69.1 with ICU4J 70.1</title>
 </head>
 <body>
-<h1>ICU4J API Comparison: ICU4J 68.1 with ICU4J 69.1</h1>
+<h1>ICU4J API Comparison: ICU4J 69.1 with ICU4J 70.1</h1>
 
 <hr/>
-<h2>Removed from ICU4J 68.1</h2>
+<h2>Removed from ICU4J 69.1</h2>
+
+<h3>Package com.ibm.icu.lang</h3>
+<ul>
+UCharacter
+<ul>
+<li><span style='color:green'>(stable)</span> public static boolean <i>isHighSurrogate</i>(char)</li>
+<li><span style='color:green'>(stable)</span> public static boolean <i>isLowSurrogate</i>(char)</li>
+<li><span style='color:green'>(stable)</span> public static final boolean <i>isSurrogatePair</i>(char, char)</li>
+<li><span style='color:green'>(stable)</span> public static final int <i>toCodePoint</i>(char, char)</li>
+</ul>
+</ul>
 
 <h3>Package com.ibm.icu.text</h3>
 <ul>
-DateIntervalFormat.SpanField
+UTF16
 <ul>
-<li><span style='color:orange'>(draft)</span> protected java.lang.Object <i>readResolve</i>()</li>
-</ul>
-ListFormatter.Field
-<ul>
-<li><span style='color:orange'>(draft)</span> protected java.lang.Object <i>readResolve</i>()</li>
-</ul>
-RelativeDateTimeFormatter.Field
-<ul>
-<li><span style='color:orange'>(draft)</span> protected java.lang.Object <i>readResolve</i>()</li>
-</ul>
-</ul>
-
-<h3>Package com.ibm.icu.util</h3>
-<ul>
-<li><span style='color:orange'>(draft)</span> public static enum <i>MeasureUnit.SIPrefix</i></li>
-MeasureUnit
-<ul>
-<li><span style='color:orange'>(draft)</span> public MeasureUnit.SIPrefix <i>getSIPrefix</i>()</li>
-<li><span style='color:orange'>(draft)</span> public MeasureUnit <i>withSIPrefix</i>(MeasureUnit.SIPrefix)</li>
-</ul>
-MeasureUnit.SIPrefix
-<ul>
-<li><span style='color:orange'>(draft)</span> public int <i>getPower</i>()</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix ATTO</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix CENTI</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix DECI</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix DEKA</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix EXA</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix FEMTO</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix GIGA</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix HECTO</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix KILO</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix MEGA</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix MICRO</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix MILLI</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix NANO</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix ONE</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix PETA</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix PICO</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix TERA</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix YOCTO</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix YOTTA</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix ZEPTO</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.SIPrefix ZETTA</li>
+<li><span style='color:green'>(stable)</span> public static boolean <i>isLeadSurrogate</i>(char)</li>
+<li><span style='color:green'>(stable)</span> public static boolean <i>isSurrogate</i>(char)</li>
+<li><span style='color:green'>(stable)</span> public static boolean <i>isTrailSurrogate</i>(char)</li>
 </ul>
 </ul>
 
 
 <hr/>
-<h2>Deprecated or Obsoleted in ICU4J 69.1</h2>
+<h2>Deprecated or Obsoleted in ICU4J 70.1</h2>
 <p>(no API obsoleted)</p>
 
 <hr/>
-<h2>Changed in ICU4J 69.1 (old, new)</h2>
-<p>(no API changed)</p>
+<h2>Changed in ICU4J 70.1 (old, new)</h2>
+
+<h3>Package com.ibm.icu.lang</h3>
+<ul>
+UCharacter
+<ul>
+<li>    <span style='color:green'>(stable)</span> public static int <i>getCodePoint</i>(char, char)</br>
+<span style='color:green'>(stable)</span> public static int <i>getCodePoint</i>(int, int)</li>
+</ul>
+</ul>
+
 
 <hr/>
-<h2>Promoted to stable in ICU4J 69.1</h2>
+<h2>Promoted to stable in ICU4J 70.1</h2>
 
 <h3>Package com.ibm.icu.number</h3>
 <ul>
-NumberFormatter.UnitWidth
+FormattedNumber
 <ul>
-<li><span style='color:green'>(stable)</span> public static final NumberFormatter.UnitWidth FORMAL</li>
-<li><span style='color:green'>(stable)</span> public static final NumberFormatter.UnitWidth VARIANT</li>
+<li><span style='color:green'>(stable)</span> public MeasureUnit <i>getOutputUnit</i>()</li>
+</ul>
+NumberFormatterSettings
+<ul>
+<li><span style='color:green'>(stable)</span> public T extends NumberFormatterSettings&lt;?&gt; <i>usage</i>(java.lang.String)</li>
 </ul>
 </ul>
 
 <h3>Package com.ibm.icu.text</h3>
 <ul>
-<li><span style='color:green'>(stable)</span> public static final class <i>ListFormatter.Field</i></li>
-<li><span style='color:green'>(stable)</span> public static final class <i>ListFormatter.FormattedList</i></li>
-<li><span style='color:green'>(stable)</span> public static final class <i>ListFormatter.SpanField</i></li>
-<li><span style='color:green'>(stable)</span> public static enum <i>DateFormat.HourCycle</i></li>
-<li><span style='color:green'>(stable)</span> public static enum <i>ListFormatter.Type</i></li>
-<li><span style='color:green'>(stable)</span> public static enum <i>ListFormatter.Width</i></li>
-CurrencyDisplayNames
+DateIntervalFormat
 <ul>
-<li><span style='color:green'>(stable)</span> public abstract java.lang.String <i>getFormalSymbol</i>(java.lang.String)</li>
-<li><span style='color:green'>(stable)</span> public abstract java.lang.String <i>getVariantSymbol</i>(java.lang.String)</li>
+<li><span style='color:green'>(stable)</span> public DisplayContext <i>getContext</i>(DisplayContext.Type)</li>
+<li><span style='color:green'>(stable)</span> public void <i>setContext</i>(DisplayContext)</li>
 </ul>
-DateFormat.HourCycle
+DecimalFormat
 <ul>
-<li><span style='color:green'>(stable)</span> public static final DateFormat.HourCycle HOUR_CYCLE_11</li>
-<li><span style='color:green'>(stable)</span> public static final DateFormat.HourCycle HOUR_CYCLE_12</li>
-<li><span style='color:green'>(stable)</span> public static final DateFormat.HourCycle HOUR_CYCLE_23</li>
-<li><span style='color:green'>(stable)</span> public static final DateFormat.HourCycle HOUR_CYCLE_24</li>
+<li><span style='color:green'>(stable)</span> public static final int MINIMUM_GROUPING_DIGITS_AUTO</li>
+<li><span style='color:green'>(stable)</span> public static final int MINIMUM_GROUPING_DIGITS_MIN2</li>
 </ul>
-DateTimePatternGenerator
+PluralRules
 <ul>
-<li><span style='color:green'>(stable)</span> public DateFormat.HourCycle <i>getDefaultHourCycle</i>()</li>
-</ul>
-ListFormatter
-<ul>
-<li><span style='color:green'>(stable)</span> public ListFormatter.FormattedList <i>formatToValue</i>(java.lang.Object...)</li>
-<li><span style='color:green'>(stable)</span> public ListFormatter.FormattedList <i>formatToValue</i>(java.util.Collection&lt;?&gt;)</li>
-<li><span style='color:green'>(stable)</span> public static ListFormatter <i>getInstance</i>(ULocale, ListFormatter.Type, ListFormatter.Width)</li>
-<li><span style='color:green'>(stable)</span> public static ListFormatter <i>getInstance</i>(java.util.Locale, ListFormatter.Type, ListFormatter.Width)</li>
-</ul>
-ListFormatter.Type
-<ul>
-<li><span style='color:green'>(stable)</span> public static final ListFormatter.Type AND</li>
-<li><span style='color:green'>(stable)</span> public static final ListFormatter.Type OR</li>
-<li><span style='color:green'>(stable)</span> public static final ListFormatter.Type UNITS</li>
-</ul>
-ListFormatter.Width
-<ul>
-<li><span style='color:green'>(stable)</span> public static final ListFormatter.Width NARROW</li>
-<li><span style='color:green'>(stable)</span> public static final ListFormatter.Width SHORT</li>
-<li><span style='color:green'>(stable)</span> public static final ListFormatter.Width WIDE</li>
+<li><span style='color:green'>(stable)</span> public java.lang.String <i>select</i>(FormattedNumberRange)</li>
 </ul>
 </ul>
 
 <h3>Package com.ibm.icu.util</h3>
 <ul>
-<li><span style='color:green'>(stable)</span> public static enum <i>LocaleMatcher.Direction</i></li>
-Currency
+<li><span style='color:green'>(stable)</span> public class <i>ICUInputTooLongException</i></li>
+<li><span style='color:green'>(stable)</span> public final class <i>NoUnit</i></li>
+<li><span style='color:green'>(stable)</span> public static enum <i>MeasureUnit.Complexity</i></li>
+LocaleMatcher
 <ul>
-<li><span style='color:green'>(stable)</span> public static final int FORMAL_SYMBOL_NAME</li>
-<li><span style='color:green'>(stable)</span> public static final int VARIANT_SYMBOL_NAME</li>
+<li><span style='color:green'>(stable)</span> public boolean <i>isMatch</i>(ULocale, ULocale)</li>
+<li><span style='color:green'>(stable)</span> public boolean <i>isMatch</i>(java.util.Locale, java.util.Locale)</li>
 </ul>
 LocaleMatcher.Builder
 <ul>
-<li><span style='color:green'>(stable)</span> public LocaleMatcher.Builder <i>setDirection</i>(LocaleMatcher.Direction)</li>
+<li><span style='color:green'>(stable)</span> public LocaleMatcher.Builder <i>setMaxDistance</i>(ULocale, ULocale)</li>
+<li><span style='color:green'>(stable)</span> public LocaleMatcher.Builder <i>setMaxDistance</i>(java.util.Locale, java.util.Locale)</li>
+<li><span style='color:green'>(stable)</span> public LocaleMatcher.Builder <i>setNoDefaultLocale</i>()</li>
 </ul>
-LocaleMatcher.Direction
+MeasureUnit
 <ul>
-<li><span style='color:green'>(stable)</span> public static final LocaleMatcher.Direction ONLY_TWO_WAY</li>
-<li><span style='color:green'>(stable)</span> public static final LocaleMatcher.Direction WITH_ONE_WAY</li>
+<li><span style='color:green'>(stable)</span> public static final MeasureUnit CANDELA</li>
+<li><span style='color:green'>(stable)</span> public static final MeasureUnit DESSERT_SPOON</li>
+<li><span style='color:green'>(stable)</span> public static final MeasureUnit DESSERT_SPOON_IMPERIAL</li>
+<li><span style='color:green'>(stable)</span> public static final MeasureUnit DOT</li>
+<li><span style='color:green'>(stable)</span> public static final MeasureUnit DRAM</li>
+<li><span style='color:green'>(stable)</span> public static final MeasureUnit DROP</li>
+<li><span style='color:green'>(stable)</span> public static final MeasureUnit EARTH_RADIUS</li>
+<li><span style='color:green'>(stable)</span> public static final MeasureUnit GRAIN</li>
+<li><span style='color:green'>(stable)</span> public static final MeasureUnit JIGGER</li>
+<li><span style='color:green'>(stable)</span> public static final MeasureUnit LUMEN</li>
+<li><span style='color:green'>(stable)</span> public static final MeasureUnit PINCH</li>
+<li><span style='color:green'>(stable)</span> public static final MeasureUnit QUART_IMPERIAL</li>
+<li><span style='color:green'>(stable)</span> public static MeasureUnit <i>forIdentifier</i>(java.lang.String)</li>
+<li><span style='color:green'>(stable)</span> public MeasureUnit.Complexity <i>getComplexity</i>()</li>
+<li><span style='color:green'>(stable)</span> public int <i>getDimensionality</i>()</li>
+<li><span style='color:green'>(stable)</span> public java.lang.String <i>getIdentifier</i>()</li>
+<li><span style='color:green'>(stable)</span> public MeasureUnit <i>product</i>(MeasureUnit)</li>
+<li><span style='color:green'>(stable)</span> public MeasureUnit <i>reciprocal</i>()</li>
+<li><span style='color:green'>(stable)</span> public java.util.List&lt;MeasureUnit&gt; <i>splitToSingleUnits</i>()</li>
+<li><span style='color:green'>(stable)</span> public MeasureUnit <i>withDimensionality</i>(int)</li>
 </ul>
-ULocale
+MeasureUnit.Complexity
 <ul>
-<li><span style='color:green'>(stable)</span> public static ULocale <i>createCanonical</i>(ULocale)</li>
+<li><span style='color:green'>(stable)</span> public static final MeasureUnit.Complexity COMPOUND</li>
+<li><span style='color:green'>(stable)</span> public static final MeasureUnit.Complexity MIXED</li>
+<li><span style='color:green'>(stable)</span> public static final MeasureUnit.Complexity SINGLE</li>
 </ul>
 </ul>
 
 
 <hr/>
-<h2>Added in ICU4J 69.1</h2>
+<h2>Added in ICU4J 70.1</h2>
 
-<h3>Package com.ibm.icu.number</h3>
+<h3>Package com.ibm.icu.lang</h3>
 <ul>
-<li><span style='color:orange'>(draft)</span> public static final class <i>NumberRangeFormatter.SpanField</i></li>
-<li><span style='color:orange'>(draft)</span> public static enum <i>NumberFormatter.RoundingPriority</i></li>
-<li><span style='color:orange'>(draft)</span> public static enum <i>NumberFormatter.TrailingZeroDisplay</i></li>
-FractionPrecision
+UCharacter
 <ul>
-<li><span style='color:orange'>(draft)</span> public Precision <i>withSignificantDigits</i>(int, int, NumberFormatter.RoundingPriority)</li>
+<li><span style='color:orange'>(draft)</span> public static boolean <i>hasBinaryProperty</i>(java.lang.CharSequence, int)</li>
+<li><span style='color:green'>(stable)</span> public static boolean <i>isHighSurrogate</i>(int)</li>
+<li><span style='color:green'>(stable)</span> public static boolean <i>isLowSurrogate</i>(int)</li>
+<li><span style='color:green'>(stable)</span> public static final boolean <i>isSurrogatePair</i>(int, int)</li>
+<li><span style='color:green'>(stable)</span> public static final int <i>toCodePoint</i>(int, int)</li>
 </ul>
-NumberFormatter.RoundingPriority
+UCharacter.JoiningGroup
 <ul>
-<li><span style='color:orange'>(draft)</span> public static final NumberFormatter.RoundingPriority RELAXED</li>
-<li><span style='color:orange'>(draft)</span> public static final NumberFormatter.RoundingPriority STRICT</li>
+<li><span style='color:green'>(stable)</span> public static final int THIN_YEH</li>
+<li><span style='color:green'>(stable)</span> public static final int VERTICAL_TAIL</li>
 </ul>
-NumberFormatter.SignDisplay
+UCharacter.UnicodeBlock
 <ul>
-<li><span style='color:orange'>(draft)</span> public static final NumberFormatter.SignDisplay ACCOUNTING_NEGATIVE</li>
-<li><span style='color:orange'>(draft)</span> public static final NumberFormatter.SignDisplay NEGATIVE</li>
+<li><span style='color:green'>(stable)</span> public static final UCharacter.UnicodeBlock ARABIC_EXTENDED_B</li>
+<li><span style='color:green'>(stable)</span> public static final int ARABIC_EXTENDED_B_ID</li>
+<li><span style='color:green'>(stable)</span> public static final UCharacter.UnicodeBlock CYPRO_MINOAN</li>
+<li><span style='color:green'>(stable)</span> public static final int CYPRO_MINOAN_ID</li>
+<li><span style='color:green'>(stable)</span> public static final UCharacter.UnicodeBlock ETHIOPIC_EXTENDED_B</li>
+<li><span style='color:green'>(stable)</span> public static final int ETHIOPIC_EXTENDED_B_ID</li>
+<li><span style='color:green'>(stable)</span> public static final UCharacter.UnicodeBlock KANA_EXTENDED_B</li>
+<li><span style='color:green'>(stable)</span> public static final int KANA_EXTENDED_B_ID</li>
+<li><span style='color:green'>(stable)</span> public static final UCharacter.UnicodeBlock LATIN_EXTENDED_F</li>
+<li><span style='color:green'>(stable)</span> public static final int LATIN_EXTENDED_F_ID</li>
+<li><span style='color:green'>(stable)</span> public static final UCharacter.UnicodeBlock LATIN_EXTENDED_G</li>
+<li><span style='color:green'>(stable)</span> public static final int LATIN_EXTENDED_G_ID</li>
+<li><span style='color:green'>(stable)</span> public static final UCharacter.UnicodeBlock OLD_UYGHUR</li>
+<li><span style='color:green'>(stable)</span> public static final int OLD_UYGHUR_ID</li>
+<li><span style='color:green'>(stable)</span> public static final UCharacter.UnicodeBlock TANGSA</li>
+<li><span style='color:green'>(stable)</span> public static final int TANGSA_ID</li>
+<li><span style='color:green'>(stable)</span> public static final UCharacter.UnicodeBlock TOTO</li>
+<li><span style='color:green'>(stable)</span> public static final int TOTO_ID</li>
+<li><span style='color:green'>(stable)</span> public static final UCharacter.UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_A</li>
+<li><span style='color:green'>(stable)</span> public static final int UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_A_ID</li>
+<li><span style='color:green'>(stable)</span> public static final UCharacter.UnicodeBlock VITHKUQI</li>
+<li><span style='color:green'>(stable)</span> public static final int VITHKUQI_ID</li>
+<li><span style='color:green'>(stable)</span> public static final UCharacter.UnicodeBlock ZNAMENNY_MUSICAL_NOTATION</li>
+<li><span style='color:green'>(stable)</span> public static final int ZNAMENNY_MUSICAL_NOTATION_ID</li>
 </ul>
-NumberFormatter.TrailingZeroDisplay
+UProperty
 <ul>
-<li><span style='color:orange'>(draft)</span> public static final NumberFormatter.TrailingZeroDisplay AUTO</li>
-<li><span style='color:orange'>(draft)</span> public static final NumberFormatter.TrailingZeroDisplay HIDE_IF_WHOLE</li>
+<li><span style='color:orange'>(draft)</span> public static final int BASIC_EMOJI</li>
+<li><span style='color:orange'>(draft)</span> public static final int EMOJI_KEYCAP_SEQUENCE</li>
+<li><span style='color:orange'>(draft)</span> public static final int RGI_EMOJI</li>
+<li><span style='color:orange'>(draft)</span> public static final int RGI_EMOJI_FLAG_SEQUENCE</li>
+<li><span style='color:orange'>(draft)</span> public static final int RGI_EMOJI_MODIFIER_SEQUENCE</li>
+<li><span style='color:orange'>(draft)</span> public static final int RGI_EMOJI_TAG_SEQUENCE</li>
+<li><span style='color:orange'>(draft)</span> public static final int RGI_EMOJI_ZWJ_SEQUENCE</li>
 </ul>
-Precision
+UScript
 <ul>
-<li><span style='color:orange'>(draft)</span> public Precision <i>trailingZeroDisplay</i>(NumberFormatter.TrailingZeroDisplay)</li>
+<li><span style='color:green'>(stable)</span> public static final int CYPRO_MINOAN</li>
+<li><span style='color:green'>(stable)</span> public static final int OLD_UYGHUR</li>
+<li><span style='color:green'>(stable)</span> public static final int TANGSA</li>
+<li><span style='color:green'>(stable)</span> public static final int TOTO</li>
+<li><span style='color:green'>(stable)</span> public static final int VITHKUQI</li>
+</ul>
+</ul>
+
+<h3>Package com.ibm.icu.text</h3>
+<ul>
+UTF16
+<ul>
+<li><span style='color:green'>(stable)</span> public static boolean <i>isLeadSurrogate</i>(int)</li>
+<li><span style='color:green'>(stable)</span> public static boolean <i>isSurrogate</i>(int)</li>
+<li><span style='color:green'>(stable)</span> public static boolean <i>isTrailSurrogate</i>(int)</li>
+</ul>
+UnicodeSet
+<ul>
+<li><span style='color:orange'>(draft)</span> public boolean <i>hasStrings</i>()</li>
+</ul>
+UnicodeSetIterator
+<ul>
+<li><span style='color:orange'>(draft)</span> public UnicodeSetIterator <i>skipToStrings</i>()</li>
 </ul>
 </ul>
 
 <h3>Package com.ibm.icu.util</h3>
 <ul>
-<li><span style='color:orange'>(draft)</span> public static enum <i>BasicTimeZone.LocalOption</i></li>
-<li><span style='color:orange'>(draft)</span> public static enum <i>MeasureUnit.MeasurePrefix</i></li>
-BasicTimeZone
-<ul>
-<li><span style='color:orange'>(draft)</span> public void <i>getOffsetFromLocal</i>(long, BasicTimeZone.LocalOption, BasicTimeZone.LocalOption, int[])</li>
-</ul>
-BasicTimeZone.LocalOption
-<ul>
-<li><span style='color:orange'>(draft)</span> public static final BasicTimeZone.LocalOption DAYLIGHT_FORMER</li>
-<li><span style='color:orange'>(draft)</span> public static final BasicTimeZone.LocalOption DAYLIGHT_LATTER</li>
-<li><span style='color:orange'>(draft)</span> public static final BasicTimeZone.LocalOption FORMER</li>
-<li><span style='color:orange'>(draft)</span> public static final BasicTimeZone.LocalOption LATTER</li>
-<li><span style='color:orange'>(draft)</span> public static final BasicTimeZone.LocalOption STANDARD_FORMER</li>
-<li><span style='color:orange'>(draft)</span> public static final BasicTimeZone.LocalOption STANDARD_LATTER</li>
-</ul>
 MeasureUnit
 <ul>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit MILLIGRAM_OFGLUCOSE_PER_DECILITER</li>
-<li><span style='color:orange'>(draft)</span> public MeasureUnit.MeasurePrefix <i>getPrefix</i>()</li>
-<li><span style='color:orange'>(draft)</span> public MeasureUnit <i>withPrefix</i>(MeasureUnit.MeasurePrefix)</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit ITEM</li>
+<li><span style='color:orange'>(draft)</span> public static final MeasureUnit KILOWATT_HOUR_PER_100_KILOMETER</li>
 </ul>
-MeasureUnit.MeasurePrefix
+VersionInfo
 <ul>
-<li><span style='color:orange'>(draft)</span> public int <i>getBase</i>()</li>
-<li><span style='color:orange'>(draft)</span> public int <i>getPower</i>()</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix ATTO</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix CENTI</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix DECI</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix DEKA</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix EXA</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix EXBI</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix FEMTO</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix GIBI</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix GIGA</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix HECTO</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix KIBI</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix KILO</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix MEBI</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix MEGA</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix MICRO</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix MILLI</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix NANO</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix ONE</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix PEBI</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix PETA</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix PICO</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix TEBI</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix TERA</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix YOBI</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix YOCTO</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix YOTTA</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix ZEBI</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix ZEPTO</li>
-<li><span style='color:orange'>(draft)</span> public static final MeasureUnit.MeasurePrefix ZETTA</li>
-</ul>
-RuleBasedTimeZone
-<ul>
-<li><span style='color:orange'>(draft)</span> public void <i>getOffsetFromLocal</i>(long, BasicTimeZone.LocalOption, BasicTimeZone.LocalOption, int[])</li>
-</ul>
-SimpleTimeZone
-<ul>
-<li><span style='color:orange'>(draft)</span> public void <i>getOffsetFromLocal</i>(long, BasicTimeZone.LocalOption, BasicTimeZone.LocalOption, int[])</li>
-</ul>
-VTimeZone
-<ul>
-<li><span style='color:orange'>(draft)</span> public void <i>getOffsetFromLocal</i>(long, BasicTimeZone.LocalOption, BasicTimeZone.LocalOption, int[])</li>
+<li><span style='color:green'>(stable)</span> public static final VersionInfo UNICODE_14_0</li>
 </ul>
 </ul>
 
 <hr/>
-<p><i><font size="-1">Contents generated by ReportAPI tool on Thu Mar 11 17:12:02 PST 2021<br/>© 2021 and later: Unicode, Inc. and others. License & terms of use: <a href="http://www.unicode.org/copyright.html">http://www.unicode.org/copyright.html</a></font></i></p>
+<p><i><font size="-1">Contents generated by ReportAPI tool on Tue Sep 28 16:43:15 PDT 2021<br/>© 2021 and later: Unicode, Inc. and others. License & terms of use: <a href="http://www.unicode.org/copyright.html">http://www.unicode.org/copyright.html</a></font></i></p>
 </body>
 </html>
diff --git a/tools/release/java/src/main/java/com/ibm/icu/dev/tools/docs/StableAPI.java b/tools/release/java/src/main/java/com/ibm/icu/dev/tools/docs/StableAPI.java
index 5dc98a0..eafe0f8 100644
--- a/tools/release/java/src/main/java/com/ibm/icu/dev/tools/docs/StableAPI.java
+++ b/tools/release/java/src/main/java/com/ibm/icu/dev/tools/docs/StableAPI.java
@@ -548,11 +548,12 @@
                                       //  TODO: notify about this difference, separately
                 "[ ]*U_NOEXCEPT", "", // remove U_NOEXCEPT (this was fixed in Doxyfile, but fixing here so it is
                                       //  retroactive)
-                "[ ]*U_OVERRIDE", "", // remove U_OVERRIDE
+                "[ ]*(override|U_OVERRIDE)", "", // remove U_OVERRIDE and override
                 // Simplify possibly-covariant functions to void*
                 "^([^\\* ]+)\\*(.*)::(clone|safeClone|cloneAsThawed|freeze|createBufferClone)\\((.*)", "void*$2::$3($4",
                 "\\s+$", "", // remove trailing spaces.
-                "^U_NAMESPACE_END ", "" // Bug in processing of uspoof.h
+                "^U_NAMESPACE_END ", "", // Bug in processing of uspoof.h
+                "\\bUBool\\b", "bool"
         };
 
         /**