ICU-20979 BRS 67rc, ICU4C API promotion
diff --git a/icu4c/source/common/unicode/localebuilder.h b/icu4c/source/common/unicode/localebuilder.h
index 19e10f1..c5836fe 100644
--- a/icu4c/source/common/unicode/localebuilder.h
+++ b/icu4c/source/common/unicode/localebuilder.h
@@ -12,7 +12,6 @@
 #include "unicode/stringpiece.h"
 #include "unicode/uobject.h"
 
-#ifndef U_HIDE_DRAFT_API
 /**
  * \file
  * \brief C++ API: Builder API for Locale
@@ -57,7 +56,7 @@
  * UErrorCode, then track the error of the validation of the input parameter
  * into the internal UErrorCode.
  *
- * @draft ICU 64
+ * @stable ICU 64
  */
 class U_COMMON_API LocaleBuilder : public UObject {
 public:
@@ -66,13 +65,13 @@
      * fields, extensions, and private use information is the
      * empty string.
      *
-     * @draft ICU 64
+     * @stable ICU 64
      */
     LocaleBuilder();
 
     /**
      * Destructor
-     * @draft ICU 64
+     * @stable ICU 64
      */
     virtual ~LocaleBuilder();
 
@@ -86,7 +85,7 @@
      * @param locale the locale
      * @return This builder.
      *
-     * @draft ICU 64
+     * @stable ICU 64
      */
     LocaleBuilder& setLocale(const Locale& locale);
 
@@ -104,7 +103,7 @@
      * @param tag the language tag, defined as
      *   [unicode_locale_id](http://www.unicode.org/reports/tr35/tr35.html#unicode_locale_id).
      * @return This builder.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     LocaleBuilder& setLanguageTag(StringPiece tag);
 
@@ -119,7 +118,7 @@
      *
      * @param language the language
      * @return This builder.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     LocaleBuilder& setLanguage(StringPiece language);
 
@@ -135,7 +134,7 @@
      *
      * @param script the script
      * @return This builder.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     LocaleBuilder& setScript(StringPiece script);
 
@@ -154,7 +153,7 @@
      *
      * @param region the region
      * @return This builder.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     LocaleBuilder& setRegion(StringPiece region);
 
@@ -175,7 +174,7 @@
      *
      * @param variant the variant
      * @return This builder.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     LocaleBuilder& setVariant(StringPiece variant);
 
@@ -196,7 +195,7 @@
      * @param key the extension key
      * @param value the extension value
      * @return This builder.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     LocaleBuilder& setExtension(char key, StringPiece value);
 
@@ -216,7 +215,7 @@
      * @param key the Unicode locale key
      * @param type the Unicode locale type
      * @return This builder.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     LocaleBuilder& setUnicodeLocaleKeyword(
         StringPiece key, StringPiece type);
@@ -229,7 +228,7 @@
      *
      * @param attribute the attribute
      * @return This builder.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     LocaleBuilder& addUnicodeLocaleAttribute(StringPiece attribute);
 
@@ -242,7 +241,7 @@
      *
      * @param attribute the attribute
      * @return This builder.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     LocaleBuilder& removeUnicodeLocaleAttribute(StringPiece attribute);
 
@@ -251,7 +250,7 @@
      * <p>This method clears the internal UErrorCode.
      *
      * @return this builder
-     * @draft ICU 64
+     * @stable ICU 64
      */
     LocaleBuilder& clear();
 
@@ -260,7 +259,7 @@
      * Language, script, region and variant are unchanged.
      *
      * @return this builder
-     * @draft ICU 64
+     * @stable ICU 64
      */
     LocaleBuilder& clearExtensions();
 
@@ -275,7 +274,7 @@
      * the same builder to build more locales.
      *
      * @return a new Locale
-     * @draft ICU 64
+     * @stable ICU 64
      */
     Locale build(UErrorCode& status);
 
@@ -308,8 +307,6 @@
 
 U_NAMESPACE_END
 
-#endif  // U_HIDE_DRAFT_API
-
 #endif /* U_SHOW_CPLUSPLUS_API */
 
 #endif  // __LOCALEBUILDER_H__
diff --git a/icu4c/source/common/unicode/localematcher.h b/icu4c/source/common/unicode/localematcher.h
index 8e79aaf..2e1a7a3 100644
--- a/icu4c/source/common/unicode/localematcher.h
+++ b/icu4c/source/common/unicode/localematcher.h
@@ -20,7 +20,7 @@
  * \brief C++ API: Locale matcher: User's desired locales vs. application's supported locales.
  */
 
-#ifndef U_HIDE_DRAFT_API
+#ifndef U_FORCE_HIDE_DRAFT_API
 
 /**
  * Builder option for whether the language subtag or the script subtag is most important.
@@ -218,6 +218,7 @@
          */
         Result &operator=(Result &&src) U_NOEXCEPT;
 
+#ifndef U_HIDE_DRAFT_API
         /**
          * Returns the best-matching desired locale.
          * nullptr if the list of desired locales is empty or if none matched well enough.
@@ -272,6 +273,7 @@
          * @draft ICU 65
          */
         Locale makeResolvedLocale(UErrorCode &errorCode) const;
+#endif  // U_HIDE_DRAFT_API
 
     private:
         Result(const Locale *desired, const Locale *supported,
@@ -334,6 +336,7 @@
          */
         Builder &operator=(Builder &&src) U_NOEXCEPT;
 
+#ifndef U_HIDE_DRAFT_API
         /**
          * Parses an Accept-Language string
          * (<a href="https://tools.ietf.org/html/rfc2616#section-14.4">RFC 2616 Section 14.4</a>),
@@ -486,6 +489,7 @@
          * @draft ICU 65
          */
         LocaleMatcher build(UErrorCode &errorCode) const;
+#endif  // U_HIDE_DRAFT_API
 
     private:
         friend class LocaleMatcher;
@@ -531,6 +535,7 @@
      */
     LocaleMatcher &operator=(LocaleMatcher &&src) U_NOEXCEPT;
 
+#ifndef U_HIDE_DRAFT_API
     /**
      * Returns the supported locale which best matches the desired locale.
      *
@@ -598,6 +603,7 @@
      * @draft ICU 65
      */
     Result getBestMatchResult(Locale::Iterator &desiredLocales, UErrorCode &errorCode) const;
+#endif  // U_HIDE_DRAFT_API
 
 #ifndef U_HIDE_INTERNAL_API
     /**
@@ -654,6 +660,6 @@
 
 U_NAMESPACE_END
 
-#endif  // U_HIDE_DRAFT_API
+#endif  // U_FORCE_HIDE_DRAFT_API
 #endif  // U_SHOW_CPLUSPLUS_API
 #endif  // __LOCALEMATCHER_H__
diff --git a/icu4c/source/common/unicode/localpointer.h b/icu4c/source/common/unicode/localpointer.h
index e011688..61c3020 100644
--- a/icu4c/source/common/unicode/localpointer.h
+++ b/icu4c/source/common/unicode/localpointer.h
@@ -225,7 +225,6 @@
         src.ptr=NULL;
     }
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Constructs a LocalPointer from a C++11 std::unique_ptr.
      * The LocalPointer steals the object owned by the std::unique_ptr.
@@ -234,11 +233,10 @@
      * in a local variable, you must use std::move.
      *
      * @param p The std::unique_ptr from which the pointer will be stolen.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     explicit LocalPointer(std::unique_ptr<T> &&p)
         : LocalPointerBase<T>(p.release()) {}
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Destructor deletes the object it owns.
@@ -261,20 +259,18 @@
         return *this;
     }
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Move-assign from an std::unique_ptr to this LocalPointer.
      * Steals the pointer from the std::unique_ptr.
      *
      * @param p The std::unique_ptr from which the pointer will be stolen.
      * @return *this
-     * @draft ICU 64
+     * @stable ICU 64
      */
     LocalPointer<T> &operator=(std::unique_ptr<T> &&p) U_NOEXCEPT {
         adoptInstead(p.release());
         return *this;
     }
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Swap pointers.
@@ -332,7 +328,6 @@
         }
     }
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Conversion operator to a C++11 std::unique_ptr.
      * Disowns the object and gives it to the returned std::unique_ptr.
@@ -342,12 +337,11 @@
      *
      * @return An std::unique_ptr owning the pointer previously owned by this
      *         icu::LocalPointer.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     operator std::unique_ptr<T> () && {
         return std::unique_ptr<T>(LocalPointerBase<T>::orphan());
     }
-#endif  /* U_HIDE_DRAFT_API */
 };
 
 /**
@@ -406,7 +400,6 @@
         src.ptr=NULL;
     }
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Constructs a LocalArray from a C++11 std::unique_ptr of an array type.
      * The LocalPointer steals the array owned by the std::unique_ptr.
@@ -415,11 +408,10 @@
      * in a local variable, you must use std::move.
      *
      * @param p The std::unique_ptr from which the array will be stolen.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     explicit LocalArray(std::unique_ptr<T[]> &&p)
         : LocalPointerBase<T>(p.release()) {}
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Destructor deletes the array it owns.
@@ -442,20 +434,18 @@
         return *this;
     }
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Move-assign from an std::unique_ptr to this LocalPointer.
      * Steals the array from the std::unique_ptr.
      *
      * @param p The std::unique_ptr from which the array will be stolen.
      * @return *this
-     * @draft ICU 64
+     * @stable ICU 64
      */
     LocalArray<T> &operator=(std::unique_ptr<T[]> &&p) U_NOEXCEPT {
         adoptInstead(p.release());
         return *this;
     }
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Swap pointers.
@@ -521,7 +511,6 @@
      */
     T &operator[](ptrdiff_t i) const { return LocalPointerBase<T>::ptr[i]; }
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Conversion operator to a C++11 std::unique_ptr.
      * Disowns the object and gives it to the returned std::unique_ptr.
@@ -531,12 +520,11 @@
      *
      * @return An std::unique_ptr owning the pointer previously owned by this
      *         icu::LocalPointer.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     operator std::unique_ptr<T[]> () && {
         return std::unique_ptr<T[]>(LocalPointerBase<T>::orphan());
     }
-#endif  /* U_HIDE_DRAFT_API */
 };
 
 /**
diff --git a/icu4c/source/common/ustr_imp.h b/icu4c/source/common/ustr_imp.h
index 5d137c0..0717092 100644
--- a/icu4c/source/common/ustr_imp.h
+++ b/icu4c/source/common/ustr_imp.h
@@ -37,13 +37,13 @@
                 const UChar *s2, int32_t length2,
                 UBool strncmpStyle, UBool codePointOrder);
 
-U_CAPI int32_t U_EXPORT2 
+U_INTERNAL int32_t U_EXPORT2 
 ustr_hashUCharsN(const UChar *str, int32_t length);
 
-U_CAPI int32_t U_EXPORT2 
+U_INTERNAL int32_t U_EXPORT2 
 ustr_hashCharsN(const char *str, int32_t length);
 
-U_CAPI int32_t U_EXPORT2
+U_INTERNAL int32_t U_EXPORT2
 ustr_hashICharsN(const char *str, int32_t length);
 
 /**
@@ -53,7 +53,7 @@
  * @return If UChar is a lowercase ASCII character, returns the uppercase version.
  *         Otherwise, returns the input character.
  */
-U_CAPI UChar U_EXPORT2
+U_INTERNAL UChar U_EXPORT2
 u_asciiToUpper(UChar c);
 
 // TODO: Add u_asciiToLower if/when there is a need for it.
@@ -70,28 +70,28 @@
  * @param pErrorCode ICU error code.
  * @return length
  */
-U_CAPI int32_t U_EXPORT2
+U_INTERNAL int32_t U_EXPORT2
 u_terminateUChars(UChar *dest, int32_t destCapacity, int32_t length, UErrorCode *pErrorCode);
 
 /**
  * NUL-terminate a char * string if possible.
  * Same as u_terminateUChars() but for a different string type.
  */
-U_CAPI int32_t U_EXPORT2
+U_INTERNAL int32_t U_EXPORT2
 u_terminateChars(char *dest, int32_t destCapacity, int32_t length, UErrorCode *pErrorCode);
 
 /**
  * NUL-terminate a UChar32 * string if possible.
  * Same as u_terminateUChars() but for a different string type.
  */
-U_CAPI int32_t U_EXPORT2
+U_INTERNAL int32_t U_EXPORT2
 u_terminateUChar32s(UChar32 *dest, int32_t destCapacity, int32_t length, UErrorCode *pErrorCode);
 
 /**
  * NUL-terminate a wchar_t * string if possible.
  * Same as u_terminateUChars() but for a different string type.
  */
-U_CAPI int32_t U_EXPORT2
+U_INTERNAL int32_t U_EXPORT2
 u_terminateWChars(wchar_t *dest, int32_t destCapacity, int32_t length, UErrorCode *pErrorCode);
 
 /**
diff --git a/icu4c/source/i18n/unicode/currunit.h b/icu4c/source/i18n/unicode/currunit.h
index d536e2f..9b608fd 100644
--- a/icu4c/source/i18n/unicode/currunit.h
+++ b/icu4c/source/i18n/unicode/currunit.h
@@ -56,7 +56,6 @@
      */
     CurrencyUnit(ConstChar16Ptr isoCode, UErrorCode &ec);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Construct an object with the given ISO currency code.
      *
@@ -64,10 +63,9 @@
      * length 3. If invalid, the currency is initialized to XXX.
      * @param ec input-output error code. If the isoCode is invalid,
      * then this will be set to a failing value.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     CurrencyUnit(StringPiece isoCode, UErrorCode &ec);
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Copy constructor
diff --git a/icu4c/source/i18n/unicode/decimfmt.h b/icu4c/source/i18n/unicode/decimfmt.h
index 9e60103..8dba9b2 100644
--- a/icu4c/source/i18n/unicode/decimfmt.h
+++ b/icu4c/source/i18n/unicode/decimfmt.h
@@ -1283,14 +1283,13 @@
      */
     virtual void setNegativeSuffix(const UnicodeString& newValue);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Whether to show the plus sign on positive (non-negative) numbers; for example, "+12"
      *
      * For more control over sign display, use NumberFormatter.
      *
      * @return Whether the sign is shown on positive numbers and zero.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     UBool isSignAlwaysShown() const;
 
@@ -1300,10 +1299,9 @@
      * For more control over sign display, use NumberFormatter.
      *
      * @param value true to always show a sign; false to hide the sign on positive numbers and zero.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     void setSignAlwaysShown(UBool value);
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Get the multiplier for use in percent, permill, etc.
@@ -1650,7 +1648,6 @@
      */
     virtual void setSecondaryGroupingSize(int32_t newValue);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns the minimum number of grouping digits.
      * Grouping separators are output if there are at least this many
@@ -1672,7 +1669,7 @@
      *
      * @see setMinimumGroupingDigits
      * @see getGroupingSize
-     * @draft ICU 64
+     * @stable ICU 64
      */
     int32_t getMinimumGroupingDigits() const;
 
@@ -1684,11 +1681,9 @@
      *
      * @param newValue the new value of minimum grouping digits.
      * @see getMinimumGroupingDigits
-     * @draft ICU 64
+     * @stable ICU 64
      */
     void setMinimumGroupingDigits(int32_t newValue);
-#endif  /* U_HIDE_DRAFT_API */
-
 
     /**
      * Allows you to get the behavior of the decimal separator with integers.
@@ -1729,13 +1724,12 @@
      */
     virtual void setDecimalPatternMatchRequired(UBool newValue);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns whether to ignore exponents when parsing.
      *
      * @return Whether to ignore exponents when parsing.
      * @see #setParseNoExponent
-     * @draft ICU 64
+     * @stable ICU 64
      */
     UBool isParseNoExponent() const;
 
@@ -1745,7 +1739,7 @@
      * 5).
      *
      * @param value true to prevent exponents from being parsed; false to allow them to be parsed.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     void setParseNoExponent(UBool value);
 
@@ -1754,7 +1748,7 @@
      *
      * @return Whether parsing is case-sensitive.
      * @see #setParseCaseSensitive
-     * @draft ICU 64
+     * @stable ICU 64
      */
     UBool isParseCaseSensitive() const;
 
@@ -1767,7 +1761,7 @@
      *
      * @param value true to enable case-sensitive parsing (the default); false to force
      *              case-sensitive parsing behavior.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     void setParseCaseSensitive(UBool value);
 
@@ -1777,7 +1771,7 @@
      *
      * @return Whether an error code is set if high-order digits are truncated.
      * @see setFormatFailIfMoreThanMaxDigits
-     * @draft ICU 64
+     * @stable ICU 64
      */
     UBool isFormatFailIfMoreThanMaxDigits() const;
 
@@ -1786,11 +1780,9 @@
      * By default, setMaximumIntegerDigits truncates high-order digits silently.
      *
      * @param value Whether to set an error code if high-order digits are truncated.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     void setFormatFailIfMoreThanMaxDigits(UBool value);
-#endif  /* U_HIDE_DRAFT_API */
-
 
     /**
      * Synthesizes a pattern string that represents the current state
@@ -2067,7 +2059,6 @@
 
 #endif  /* U_HIDE_INTERNAL_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Converts this DecimalFormat to a (Localized)NumberFormatter. Starting
      * in ICU 60, NumberFormatter is the recommended way to format numbers.
@@ -2111,10 +2102,9 @@
      * @param status Set on failure, like U_MEMORY_ALLOCATION_ERROR.
      * @return A pointer to an internal object, or nullptr on failure.
      *         Do not delete the return value!
-     * @draft ICU 64
+     * @stable ICU 64
      */
     const number::LocalizedNumberFormatter* toNumberFormatter(UErrorCode& status) const;
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Return the class ID for this class.  This is useful only for
diff --git a/icu4c/source/i18n/unicode/dtitvfmt.h b/icu4c/source/i18n/unicode/dtitvfmt.h
index 4ec216e..4e4d712 100644
--- a/icu4c/source/i18n/unicode/dtitvfmt.h
+++ b/icu4c/source/i18n/unicode/dtitvfmt.h
@@ -38,7 +38,6 @@
 class FormattedDateIntervalData;
 class DateIntervalFormat;
 
-#ifndef U_HIDE_DRAFT_API
 /**
  * An immutable class containing the result of a date interval formatting operation.
  *
@@ -54,25 +53,25 @@
  *
  * Not intended for public subclassing.
  *
- * @draft ICU 64
+ * @stable ICU 64
  */
 class U_I18N_API FormattedDateInterval : public UMemory, public FormattedValue {
   public:
     /**
      * Default constructor; makes an empty FormattedDateInterval.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     FormattedDateInterval() : fData(nullptr), fErrorCode(U_INVALID_STATE_ERROR) {}
 
     /**
      * Move constructor: Leaves the source FormattedDateInterval in an undefined state.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     FormattedDateInterval(FormattedDateInterval&& src) U_NOEXCEPT;
 
     /**
      * Destruct an instance of FormattedDateInterval.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     virtual ~FormattedDateInterval() U_OVERRIDE;
 
@@ -84,7 +83,7 @@
 
     /**
      * Move assignment: Leaves the source FormattedDateInterval in an undefined state.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     FormattedDateInterval& operator=(FormattedDateInterval&& src) U_NOEXCEPT;
 
@@ -109,7 +108,6 @@
         : fData(nullptr), fErrorCode(errorCode) {}
     friend class DateIntervalFormat;
 };
-#endif /* U_HIDE_DRAFT_API */
 
 
 /**
@@ -504,7 +502,6 @@
                           FieldPosition& fieldPosition,
                           UErrorCode& status) const ;
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Format a DateInterval to produce a FormattedDateInterval.
      *
@@ -513,12 +510,11 @@
      * @param dtInterval        DateInterval to be formatted.
      * @param status            Set if an error occurs.
      * @return                  A FormattedDateInterval containing the format result.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     FormattedDateInterval formatToValue(
         const DateInterval& dtInterval,
         UErrorCode& status) const;
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Format 2 Calendars to produce a string.
@@ -549,7 +545,6 @@
                           FieldPosition& fieldPosition,
                           UErrorCode& status) const ;
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Format 2 Calendars to produce a FormattedDateInterval.
      *
@@ -564,13 +559,12 @@
      *                          to be formatted into date interval string
      * @param status            Set if an error occurs.
      * @return                  A FormattedDateInterval containing the format result.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     FormattedDateInterval formatToValue(
         Calendar& fromCalendar,
         Calendar& toCalendar,
         UErrorCode& status) const;
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Date interval parsing is not supported. Please do not use.
diff --git a/icu4c/source/i18n/unicode/formattedvalue.h b/icu4c/source/i18n/unicode/formattedvalue.h
index 5c47264..e7ba4ec 100644
--- a/icu4c/source/i18n/unicode/formattedvalue.h
+++ b/icu4c/source/i18n/unicode/formattedvalue.h
@@ -25,11 +25,6 @@
  * of APIs throughout ICU use these classes for expressing their localized output.
  */
 
-
-// The following cannot have #ifndef U_HIDE_DRAFT_API because
-// class FormattedValue depends on it, and FormattedValue cannot be
-// hidden becauseclass FormattedNumber (stable ICU 60) depends on it.
-#ifndef U_FORCE_HIDE_DRAFT_API
 /**
  * Represents a span of a string containing a given field.
  *
@@ -41,7 +36,7 @@
  *
  * This class is not intended for public subclassing.
  *
- * @draft ICU 64
+ * @stable ICU 64
  */
 class U_I18N_API ConstrainedFieldPosition : public UMemory {
   public:
@@ -51,21 +46,20 @@
      *
      * By default, the ConstrainedFieldPosition has no iteration constraints.
      *
-     * @draft ICU 64
+     * @stable ICU 64
      */
     ConstrainedFieldPosition();
 
-    /** @draft ICU 64 */
+    /** @stable ICU 64 */
     ~ConstrainedFieldPosition();
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Resets this ConstrainedFieldPosition to its initial state, as if it were newly created:
      *
      * - Removes any constraints that may have been set on the instance.
      * - Resets the iteration position.
      *
-     * @draft ICU 64
+     * @stable ICU 64
      */
     void reset();
 
@@ -89,7 +83,7 @@
      * does not generally have well-defined behavior.
      *
      * @param category The field category to fix when iterating.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     void constrainCategory(int32_t category);
 
@@ -114,7 +108,7 @@
      *
      * @param category The field category to fix when iterating.
      * @param field The field to fix when iterating.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     void constrainField(int32_t category, int32_t field);
 
@@ -125,7 +119,7 @@
      * FormattedValue#nextPosition returns TRUE.
      *
      * @return The field category saved in the instance.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     inline int32_t getCategory() const {
         return fCategory;
@@ -138,7 +132,7 @@
      * FormattedValue#nextPosition returns TRUE.
      *
      * @return The field saved in the instance.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     inline int32_t getField() const {
         return fField;
@@ -150,7 +144,7 @@
      * The return value is well-defined only after FormattedValue#nextPosition returns TRUE.
      *
      * @return The start index saved in the instance.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     inline int32_t getStart() const {
         return fStart;
@@ -162,7 +156,7 @@
      * The return value is well-defined only after FormattedValue#nextPosition returns TRUE.
      *
      * @return The end index saved in the instance.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     inline int32_t getLimit() const {
         return fLimit;
@@ -181,7 +175,7 @@
      * Users of FormattedValue should not need to call this method.
      *
      * @return The current iteration context from {@link #setInt64IterationContext}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     inline int64_t getInt64IterationContext() const {
         return fContext;
@@ -193,7 +187,7 @@
      * Intended to be used by FormattedValue implementations.
      *
      * @param context The new iteration context.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     void setInt64IterationContext(int64_t context);
 
@@ -205,7 +199,7 @@
      *
      * @param category The category to test.
      * @param field The field to test.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     UBool matchesField(int32_t category, int32_t field) const;
 
@@ -221,39 +215,32 @@
      * @param field The new field.
      * @param start The new inclusive start index.
      * @param limit The new exclusive end index.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     void setState(
         int32_t category,
         int32_t field,
         int32_t start,
         int32_t limit);
-#endif  /* U_HIDE_DRAFT_API */
 
   private:
     int64_t fContext = 0LL;
     int32_t fField = 0;
     int32_t fStart = 0;
     int32_t fLimit = 0;
-#ifndef U_HIDE_DRAFT_API
     int32_t fCategory = UFIELD_CATEGORY_UNDEFINED;
-#else   /* U_HIDE_DRAFT_API */
-    int32_t fCategory = 0;
-#endif  /* U_HIDE_DRAFT_API */
     int8_t fConstraint = 0;
 };
 
-// The following cannot have #ifndef U_HIDE_DRAFT_API because
-// class FormattedNumber (stable ICU 60) depends on it.
 /**
  * An abstract formatted value: a string with associated field attributes.
  * Many formatters format to classes implementing FormattedValue.
  *
- * @draft ICU 64
+ * @stable ICU 64
  */
 class U_I18N_API FormattedValue /* not : public UObject because this is an interface/mixin class */ {
   public:
-    /** @draft ICU 64 */
+    /** @stable ICU 64 */
     virtual ~FormattedValue();
 
     /**
@@ -264,7 +251,7 @@
      * @param status Set if an error occurs.
      * @return a UnicodeString containing the formatted string.
      *
-     * @draft ICU 64
+     * @stable ICU 64
      */
     virtual UnicodeString toString(UErrorCode& status) const = 0;
 
@@ -280,7 +267,7 @@
      * @param status Set if an error occurs.
      * @return a temporary UnicodeString containing the formatted string.
      *
-     * @draft ICU 64
+     * @stable ICU 64
      */
     virtual UnicodeString toTempString(UErrorCode& status) const = 0;
 
@@ -292,7 +279,7 @@
      * @param status Set if an error occurs.
      * @return The same Appendable, for chaining.
      *
-     * @draft ICU 64
+     * @stable ICU 64
      * @see Appendable
      */
     virtual Appendable& appendTo(Appendable& appendable, UErrorCode& status) const = 0;
@@ -317,11 +304,10 @@
      * @return TRUE if a new occurrence of the field was found;
      *         FALSE otherwise or if an error was set.
      *
-     * @draft ICU 64
+     * @stable ICU 64
      */
     virtual UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const = 0;
 };
-#endif  // U_FORCE_HIDE_DRAFT_API
 
 U_NAMESPACE_END
 
diff --git a/icu4c/source/i18n/unicode/listformatter.h b/icu4c/source/i18n/unicode/listformatter.h
index 9e88666..26b42c2 100644
--- a/icu4c/source/i18n/unicode/listformatter.h
+++ b/icu4c/source/i18n/unicode/listformatter.h
@@ -66,7 +66,6 @@
 
 
 #if !UCONFIG_NO_FORMATTING
-#ifndef U_HIDE_DRAFT_API
 /**
  * An immutable class containing the result of a list formatting operation.
  *
@@ -81,25 +80,25 @@
  *
  * Not intended for public subclassing.
  *
- * @draft ICU 64
+ * @stable ICU 64
  */
 class U_I18N_API FormattedList : public UMemory, public FormattedValue {
   public:
     /**
      * Default constructor; makes an empty FormattedList.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     FormattedList() : fData(nullptr), fErrorCode(U_INVALID_STATE_ERROR) {}
 
     /**
      * Move constructor: Leaves the source FormattedList in an undefined state.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     FormattedList(FormattedList&& src) U_NOEXCEPT;
 
     /**
      * Destruct an instance of FormattedList.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     virtual ~FormattedList() U_OVERRIDE;
 
@@ -111,7 +110,7 @@
 
     /**
      * Move assignment: Leaves the source FormattedList in an undefined state.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     FormattedList& operator=(FormattedList&& src) U_NOEXCEPT;
 
@@ -136,7 +135,6 @@
         : fData(nullptr), fErrorCode(errorCode) {}
     friend class ListFormatter;
 };
-#endif /* U_HIDE_DRAFT_API */
 #endif // !UCONFIG_NO_FORMATTING
 
 
@@ -240,7 +238,6 @@
         UnicodeString& appendTo, UErrorCode& errorCode) const;
 
 #if !UCONFIG_NO_FORMATTING
-#ifndef U_HIDE_DRAFT_API
     /**
      * Formats a list of strings to a FormattedList, which exposes field
      * position information. The FormattedList contains more information than
@@ -250,13 +247,12 @@
      * @param n_items   Length of the array items.
      * @param errorCode ICU error code returned here.
      * @return          A FormattedList containing field information.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     FormattedList formatStringsToValue(
         const UnicodeString items[],
         int32_t n_items,
         UErrorCode& errorCode) const;
-#endif  /* U_HIDE_DRAFT_API */
 #endif // !UCONFIG_NO_FORMATTING
 
 #ifndef U_HIDE_INTERNAL_API
diff --git a/icu4c/source/i18n/unicode/measunit.h b/icu4c/source/i18n/unicode/measunit.h
index 9aacfed..d221fd8 100644
--- a/icu4c/source/i18n/unicode/measunit.h
+++ b/icu4c/source/i18n/unicode/measunit.h
@@ -582,14 +582,12 @@
      */
     static MeasureUnit *createGForce(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of acceleration: g-force.
      * Also see {@link #createGForce()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getGForce();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of acceleration: meter-per-square-second.
@@ -600,14 +598,12 @@
      */
     static MeasureUnit *createMeterPerSecondSquared(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of acceleration: meter-per-square-second.
      * Also see {@link #createMeterPerSecondSquared()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMeterPerSecondSquared();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of angle: arc-minute.
@@ -618,14 +614,12 @@
      */
     static MeasureUnit *createArcMinute(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of angle: arc-minute.
      * Also see {@link #createArcMinute()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getArcMinute();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of angle: arc-second.
@@ -636,14 +630,12 @@
      */
     static MeasureUnit *createArcSecond(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of angle: arc-second.
      * Also see {@link #createArcSecond()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getArcSecond();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of angle: degree.
@@ -654,14 +646,12 @@
      */
     static MeasureUnit *createDegree(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of angle: degree.
      * Also see {@link #createDegree()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getDegree();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of angle: radian.
@@ -672,14 +662,12 @@
      */
     static MeasureUnit *createRadian(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of angle: radian.
      * Also see {@link #createRadian()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getRadian();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of angle: revolution.
@@ -690,14 +678,12 @@
      */
     static MeasureUnit *createRevolutionAngle(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of angle: revolution.
      * Also see {@link #createRevolutionAngle()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getRevolutionAngle();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of area: acre.
@@ -708,32 +694,28 @@
      */
     static MeasureUnit *createAcre(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of area: acre.
      * Also see {@link #createAcre()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getAcre();
-#endif  /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of area: dunam.
      * Caller owns returned value and must free it.
      * Also see {@link #getDunam()}.
      * @param status ICU error code.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit *createDunam(UErrorCode &status);
 
     /**
      * Returns by value, unit of area: dunam.
      * Also see {@link #createDunam()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getDunam();
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of area: hectare.
@@ -744,14 +726,12 @@
      */
     static MeasureUnit *createHectare(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of area: hectare.
      * Also see {@link #createHectare()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getHectare();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of area: square-centimeter.
@@ -762,14 +742,12 @@
      */
     static MeasureUnit *createSquareCentimeter(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of area: square-centimeter.
      * Also see {@link #createSquareCentimeter()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getSquareCentimeter();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of area: square-foot.
@@ -780,14 +758,12 @@
      */
     static MeasureUnit *createSquareFoot(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of area: square-foot.
      * Also see {@link #createSquareFoot()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getSquareFoot();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of area: square-inch.
@@ -798,14 +774,12 @@
      */
     static MeasureUnit *createSquareInch(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of area: square-inch.
      * Also see {@link #createSquareInch()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getSquareInch();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of area: square-kilometer.
@@ -816,14 +790,12 @@
      */
     static MeasureUnit *createSquareKilometer(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of area: square-kilometer.
      * Also see {@link #createSquareKilometer()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getSquareKilometer();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of area: square-meter.
@@ -834,14 +806,12 @@
      */
     static MeasureUnit *createSquareMeter(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of area: square-meter.
      * Also see {@link #createSquareMeter()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getSquareMeter();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of area: square-mile.
@@ -852,14 +822,12 @@
      */
     static MeasureUnit *createSquareMile(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of area: square-mile.
      * Also see {@link #createSquareMile()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getSquareMile();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of area: square-yard.
@@ -870,14 +838,12 @@
      */
     static MeasureUnit *createSquareYard(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of area: square-yard.
      * Also see {@link #createSquareYard()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getSquareYard();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of concentr: karat.
@@ -888,14 +854,12 @@
      */
     static MeasureUnit *createKarat(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of concentr: karat.
      * Also see {@link #createKarat()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getKarat();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of concentr: milligram-per-deciliter.
@@ -906,14 +870,12 @@
      */
     static MeasureUnit *createMilligramPerDeciliter(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of concentr: milligram-per-deciliter.
      * Also see {@link #createMilligramPerDeciliter()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMilligramPerDeciliter();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of concentr: millimole-per-liter.
@@ -924,32 +886,28 @@
      */
     static MeasureUnit *createMillimolePerLiter(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of concentr: millimole-per-liter.
      * Also see {@link #createMillimolePerLiter()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMillimolePerLiter();
-#endif  /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of concentr: mole.
      * Caller owns returned value and must free it.
      * Also see {@link #getMole()}.
      * @param status ICU error code.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit *createMole(UErrorCode &status);
 
     /**
      * Returns by value, unit of concentr: mole.
      * Also see {@link #createMole()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMole();
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of concentr: permillion.
@@ -960,14 +918,12 @@
      */
     static MeasureUnit *createPartPerMillion(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of concentr: permillion.
      * Also see {@link #createPartPerMillion()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getPartPerMillion();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of concentr: percent.
@@ -978,14 +934,12 @@
      */
     static MeasureUnit *createPercent(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of concentr: percent.
      * Also see {@link #createPercent()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getPercent();
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of concentr: permille.
@@ -996,32 +950,28 @@
      */
     static MeasureUnit *createPermille(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of concentr: permille.
      * Also see {@link #createPermille()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getPermille();
-#endif /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of concentr: permyriad.
      * Caller owns returned value and must free it.
      * Also see {@link #getPermyriad()}.
      * @param status ICU error code.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit *createPermyriad(UErrorCode &status);
 
     /**
      * Returns by value, unit of concentr: permyriad.
      * Also see {@link #createPermyriad()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getPermyriad();
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of consumption: liter-per-100-kilometer.
@@ -1032,14 +982,12 @@
      */
     static MeasureUnit *createLiterPer100Kilometers(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of consumption: liter-per-100-kilometer.
      * Also see {@link #createLiterPer100Kilometers()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getLiterPer100Kilometers();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of consumption: liter-per-kilometer.
@@ -1050,14 +998,12 @@
      */
     static MeasureUnit *createLiterPerKilometer(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of consumption: liter-per-kilometer.
      * Also see {@link #createLiterPerKilometer()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getLiterPerKilometer();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of consumption: mile-per-gallon.
@@ -1068,14 +1014,12 @@
      */
     static MeasureUnit *createMilePerGallon(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of consumption: mile-per-gallon.
      * Also see {@link #createMilePerGallon()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMilePerGallon();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of consumption: mile-per-gallon-imperial.
@@ -1086,14 +1030,12 @@
      */
     static MeasureUnit *createMilePerGallonImperial(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of consumption: mile-per-gallon-imperial.
      * Also see {@link #createMilePerGallonImperial()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMilePerGallonImperial();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of digital: bit.
@@ -1104,14 +1046,12 @@
      */
     static MeasureUnit *createBit(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of digital: bit.
      * Also see {@link #createBit()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getBit();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of digital: byte.
@@ -1122,14 +1062,12 @@
      */
     static MeasureUnit *createByte(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of digital: byte.
      * Also see {@link #createByte()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getByte();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of digital: gigabit.
@@ -1140,14 +1078,12 @@
      */
     static MeasureUnit *createGigabit(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of digital: gigabit.
      * Also see {@link #createGigabit()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getGigabit();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of digital: gigabyte.
@@ -1158,14 +1094,12 @@
      */
     static MeasureUnit *createGigabyte(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of digital: gigabyte.
      * Also see {@link #createGigabyte()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getGigabyte();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of digital: kilobit.
@@ -1176,14 +1110,12 @@
      */
     static MeasureUnit *createKilobit(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of digital: kilobit.
      * Also see {@link #createKilobit()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getKilobit();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of digital: kilobyte.
@@ -1194,14 +1126,12 @@
      */
     static MeasureUnit *createKilobyte(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of digital: kilobyte.
      * Also see {@link #createKilobyte()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getKilobyte();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of digital: megabit.
@@ -1212,14 +1142,12 @@
      */
     static MeasureUnit *createMegabit(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of digital: megabit.
      * Also see {@link #createMegabit()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMegabit();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of digital: megabyte.
@@ -1230,14 +1158,12 @@
      */
     static MeasureUnit *createMegabyte(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of digital: megabyte.
      * Also see {@link #createMegabyte()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMegabyte();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of digital: petabyte.
@@ -1248,14 +1174,12 @@
      */
     static MeasureUnit *createPetabyte(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of digital: petabyte.
      * Also see {@link #createPetabyte()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getPetabyte();
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of digital: terabit.
@@ -1266,14 +1190,12 @@
      */
     static MeasureUnit *createTerabit(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of digital: terabit.
      * Also see {@link #createTerabit()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getTerabit();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of digital: terabyte.
@@ -1284,14 +1206,12 @@
      */
     static MeasureUnit *createTerabyte(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of digital: terabyte.
      * Also see {@link #createTerabyte()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getTerabyte();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of duration: century.
@@ -1302,14 +1222,12 @@
      */
     static MeasureUnit *createCentury(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of duration: century.
      * Also see {@link #createCentury()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getCentury();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of duration: day.
@@ -1320,32 +1238,28 @@
      */
     static MeasureUnit *createDay(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of duration: day.
      * Also see {@link #createDay()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getDay();
-#endif  /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of duration: day-person.
      * Caller owns returned value and must free it.
      * Also see {@link #getDayPerson()}.
      * @param status ICU error code.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit *createDayPerson(UErrorCode &status);
 
     /**
      * Returns by value, unit of duration: day-person.
      * Also see {@link #createDayPerson()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getDayPerson();
-#endif /* U_HIDE_DRAFT_API */
 
 #ifndef U_HIDE_DRAFT_API
     /**
@@ -1374,14 +1288,12 @@
      */
     static MeasureUnit *createHour(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of duration: hour.
      * Also see {@link #createHour()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getHour();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of duration: microsecond.
@@ -1392,14 +1304,12 @@
      */
     static MeasureUnit *createMicrosecond(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of duration: microsecond.
      * Also see {@link #createMicrosecond()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMicrosecond();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of duration: millisecond.
@@ -1410,14 +1320,12 @@
      */
     static MeasureUnit *createMillisecond(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of duration: millisecond.
      * Also see {@link #createMillisecond()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMillisecond();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of duration: minute.
@@ -1428,14 +1336,12 @@
      */
     static MeasureUnit *createMinute(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of duration: minute.
      * Also see {@link #createMinute()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMinute();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of duration: month.
@@ -1446,32 +1352,28 @@
      */
     static MeasureUnit *createMonth(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of duration: month.
      * Also see {@link #createMonth()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMonth();
-#endif  /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of duration: month-person.
      * Caller owns returned value and must free it.
      * Also see {@link #getMonthPerson()}.
      * @param status ICU error code.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit *createMonthPerson(UErrorCode &status);
 
     /**
      * Returns by value, unit of duration: month-person.
      * Also see {@link #createMonthPerson()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMonthPerson();
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of duration: nanosecond.
@@ -1482,14 +1384,12 @@
      */
     static MeasureUnit *createNanosecond(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of duration: nanosecond.
      * Also see {@link #createNanosecond()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getNanosecond();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of duration: second.
@@ -1500,14 +1400,12 @@
      */
     static MeasureUnit *createSecond(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of duration: second.
      * Also see {@link #createSecond()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getSecond();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of duration: week.
@@ -1518,32 +1416,28 @@
      */
     static MeasureUnit *createWeek(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of duration: week.
      * Also see {@link #createWeek()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getWeek();
-#endif  /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of duration: week-person.
      * Caller owns returned value and must free it.
      * Also see {@link #getWeekPerson()}.
      * @param status ICU error code.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit *createWeekPerson(UErrorCode &status);
 
     /**
      * Returns by value, unit of duration: week-person.
      * Also see {@link #createWeekPerson()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getWeekPerson();
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of duration: year.
@@ -1554,32 +1448,28 @@
      */
     static MeasureUnit *createYear(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of duration: year.
      * Also see {@link #createYear()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getYear();
-#endif  /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of duration: year-person.
      * Caller owns returned value and must free it.
      * Also see {@link #getYearPerson()}.
      * @param status ICU error code.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit *createYearPerson(UErrorCode &status);
 
     /**
      * Returns by value, unit of duration: year-person.
      * Also see {@link #createYearPerson()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getYearPerson();
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of electric: ampere.
@@ -1590,14 +1480,12 @@
      */
     static MeasureUnit *createAmpere(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of electric: ampere.
      * Also see {@link #createAmpere()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getAmpere();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of electric: milliampere.
@@ -1608,14 +1496,12 @@
      */
     static MeasureUnit *createMilliampere(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of electric: milliampere.
      * Also see {@link #createMilliampere()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMilliampere();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of electric: ohm.
@@ -1626,14 +1512,12 @@
      */
     static MeasureUnit *createOhm(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of electric: ohm.
      * Also see {@link #createOhm()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getOhm();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of electric: volt.
@@ -1644,32 +1528,28 @@
      */
     static MeasureUnit *createVolt(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of electric: volt.
      * Also see {@link #createVolt()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getVolt();
-#endif  /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of energy: british-thermal-unit.
      * Caller owns returned value and must free it.
      * Also see {@link #getBritishThermalUnit()}.
      * @param status ICU error code.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit *createBritishThermalUnit(UErrorCode &status);
 
     /**
      * Returns by value, unit of energy: british-thermal-unit.
      * Also see {@link #createBritishThermalUnit()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getBritishThermalUnit();
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of energy: calorie.
@@ -1680,32 +1560,28 @@
      */
     static MeasureUnit *createCalorie(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of energy: calorie.
      * Also see {@link #createCalorie()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getCalorie();
-#endif  /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of energy: electronvolt.
      * Caller owns returned value and must free it.
      * Also see {@link #getElectronvolt()}.
      * @param status ICU error code.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit *createElectronvolt(UErrorCode &status);
 
     /**
      * Returns by value, unit of energy: electronvolt.
      * Also see {@link #createElectronvolt()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getElectronvolt();
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of energy: foodcalorie.
@@ -1716,14 +1592,12 @@
      */
     static MeasureUnit *createFoodcalorie(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of energy: foodcalorie.
      * Also see {@link #createFoodcalorie()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getFoodcalorie();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of energy: joule.
@@ -1734,14 +1608,12 @@
      */
     static MeasureUnit *createJoule(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of energy: joule.
      * Also see {@link #createJoule()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getJoule();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of energy: kilocalorie.
@@ -1752,14 +1624,12 @@
      */
     static MeasureUnit *createKilocalorie(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of energy: kilocalorie.
      * Also see {@link #createKilocalorie()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getKilocalorie();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of energy: kilojoule.
@@ -1770,14 +1640,12 @@
      */
     static MeasureUnit *createKilojoule(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of energy: kilojoule.
      * Also see {@link #createKilojoule()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getKilojoule();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of energy: kilowatt-hour.
@@ -1788,14 +1656,12 @@
      */
     static MeasureUnit *createKilowattHour(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of energy: kilowatt-hour.
      * Also see {@link #createKilowattHour()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getKilowattHour();
-#endif  /* U_HIDE_DRAFT_API */
 
 #ifndef U_HIDE_DRAFT_API
     /**
@@ -1815,41 +1681,37 @@
     static MeasureUnit getThermUs();
 #endif /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of force: newton.
      * Caller owns returned value and must free it.
      * Also see {@link #getNewton()}.
      * @param status ICU error code.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit *createNewton(UErrorCode &status);
 
     /**
      * Returns by value, unit of force: newton.
      * Also see {@link #createNewton()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getNewton();
-#endif /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of force: pound-force.
      * Caller owns returned value and must free it.
      * Also see {@link #getPoundForce()}.
      * @param status ICU error code.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit *createPoundForce(UErrorCode &status);
 
     /**
      * Returns by value, unit of force: pound-force.
      * Also see {@link #createPoundForce()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getPoundForce();
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of frequency: gigahertz.
@@ -1860,14 +1722,12 @@
      */
     static MeasureUnit *createGigahertz(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of frequency: gigahertz.
      * Also see {@link #createGigahertz()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getGigahertz();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of frequency: hertz.
@@ -1878,14 +1738,12 @@
      */
     static MeasureUnit *createHertz(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of frequency: hertz.
      * Also see {@link #createHertz()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getHertz();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of frequency: kilohertz.
@@ -1896,14 +1754,12 @@
      */
     static MeasureUnit *createKilohertz(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of frequency: kilohertz.
      * Also see {@link #createKilohertz()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getKilohertz();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of frequency: megahertz.
@@ -1914,14 +1770,12 @@
      */
     static MeasureUnit *createMegahertz(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of frequency: megahertz.
      * Also see {@link #createMegahertz()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMegahertz();
-#endif  /* U_HIDE_DRAFT_API */
 
 #ifndef U_HIDE_DRAFT_API
     /**
@@ -2058,14 +1912,12 @@
      */
     static MeasureUnit *createAstronomicalUnit(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of length: astronomical-unit.
      * Also see {@link #createAstronomicalUnit()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getAstronomicalUnit();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of length: centimeter.
@@ -2076,14 +1928,12 @@
      */
     static MeasureUnit *createCentimeter(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of length: centimeter.
      * Also see {@link #createCentimeter()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getCentimeter();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of length: decimeter.
@@ -2094,14 +1944,12 @@
      */
     static MeasureUnit *createDecimeter(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of length: decimeter.
      * Also see {@link #createDecimeter()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getDecimeter();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of length: fathom.
@@ -2112,14 +1960,12 @@
      */
     static MeasureUnit *createFathom(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of length: fathom.
      * Also see {@link #createFathom()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getFathom();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of length: foot.
@@ -2130,14 +1976,12 @@
      */
     static MeasureUnit *createFoot(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of length: foot.
      * Also see {@link #createFoot()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getFoot();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of length: furlong.
@@ -2148,14 +1992,12 @@
      */
     static MeasureUnit *createFurlong(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of length: furlong.
      * Also see {@link #createFurlong()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getFurlong();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of length: inch.
@@ -2166,14 +2008,12 @@
      */
     static MeasureUnit *createInch(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of length: inch.
      * Also see {@link #createInch()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getInch();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of length: kilometer.
@@ -2184,14 +2024,12 @@
      */
     static MeasureUnit *createKilometer(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of length: kilometer.
      * Also see {@link #createKilometer()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getKilometer();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of length: light-year.
@@ -2202,14 +2040,12 @@
      */
     static MeasureUnit *createLightYear(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of length: light-year.
      * Also see {@link #createLightYear()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getLightYear();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of length: meter.
@@ -2220,14 +2056,12 @@
      */
     static MeasureUnit *createMeter(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of length: meter.
      * Also see {@link #createMeter()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMeter();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of length: micrometer.
@@ -2238,14 +2072,12 @@
      */
     static MeasureUnit *createMicrometer(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of length: micrometer.
      * Also see {@link #createMicrometer()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMicrometer();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of length: mile.
@@ -2256,14 +2088,12 @@
      */
     static MeasureUnit *createMile(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of length: mile.
      * Also see {@link #createMile()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMile();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of length: mile-scandinavian.
@@ -2274,14 +2104,12 @@
      */
     static MeasureUnit *createMileScandinavian(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of length: mile-scandinavian.
      * Also see {@link #createMileScandinavian()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMileScandinavian();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of length: millimeter.
@@ -2292,14 +2120,12 @@
      */
     static MeasureUnit *createMillimeter(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of length: millimeter.
      * Also see {@link #createMillimeter()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMillimeter();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of length: nanometer.
@@ -2310,14 +2136,12 @@
      */
     static MeasureUnit *createNanometer(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of length: nanometer.
      * Also see {@link #createNanometer()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getNanometer();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of length: nautical-mile.
@@ -2328,14 +2152,12 @@
      */
     static MeasureUnit *createNauticalMile(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of length: nautical-mile.
      * Also see {@link #createNauticalMile()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getNauticalMile();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of length: parsec.
@@ -2346,14 +2168,12 @@
      */
     static MeasureUnit *createParsec(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of length: parsec.
      * Also see {@link #createParsec()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getParsec();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of length: picometer.
@@ -2364,14 +2184,12 @@
      */
     static MeasureUnit *createPicometer(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of length: picometer.
      * Also see {@link #createPicometer()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getPicometer();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of length: point.
@@ -2382,32 +2200,28 @@
      */
     static MeasureUnit *createPoint(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of length: point.
      * Also see {@link #createPoint()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getPoint();
-#endif  /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of length: solar-radius.
      * Caller owns returned value and must free it.
      * Also see {@link #getSolarRadius()}.
      * @param status ICU error code.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit *createSolarRadius(UErrorCode &status);
 
     /**
      * Returns by value, unit of length: solar-radius.
      * Also see {@link #createSolarRadius()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getSolarRadius();
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of length: yard.
@@ -2418,14 +2232,12 @@
      */
     static MeasureUnit *createYard(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of length: yard.
      * Also see {@link #createYard()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getYard();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of light: lux.
@@ -2436,32 +2248,28 @@
      */
     static MeasureUnit *createLux(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of light: lux.
      * Also see {@link #createLux()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getLux();
-#endif  /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of light: solar-luminosity.
      * Caller owns returned value and must free it.
      * Also see {@link #getSolarLuminosity()}.
      * @param status ICU error code.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit *createSolarLuminosity(UErrorCode &status);
 
     /**
      * Returns by value, unit of light: solar-luminosity.
      * Also see {@link #createSolarLuminosity()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getSolarLuminosity();
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of mass: carat.
@@ -2472,50 +2280,44 @@
      */
     static MeasureUnit *createCarat(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of mass: carat.
      * Also see {@link #createCarat()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getCarat();
-#endif  /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of mass: dalton.
      * Caller owns returned value and must free it.
      * Also see {@link #getDalton()}.
      * @param status ICU error code.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit *createDalton(UErrorCode &status);
 
     /**
      * Returns by value, unit of mass: dalton.
      * Also see {@link #createDalton()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getDalton();
-#endif /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of mass: earth-mass.
      * Caller owns returned value and must free it.
      * Also see {@link #getEarthMass()}.
      * @param status ICU error code.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit *createEarthMass(UErrorCode &status);
 
     /**
      * Returns by value, unit of mass: earth-mass.
      * Also see {@link #createEarthMass()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getEarthMass();
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of mass: gram.
@@ -2526,14 +2328,12 @@
      */
     static MeasureUnit *createGram(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of mass: gram.
      * Also see {@link #createGram()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getGram();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of mass: kilogram.
@@ -2544,14 +2344,12 @@
      */
     static MeasureUnit *createKilogram(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of mass: kilogram.
      * Also see {@link #createKilogram()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getKilogram();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of mass: metric-ton.
@@ -2562,14 +2360,12 @@
      */
     static MeasureUnit *createMetricTon(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of mass: metric-ton.
      * Also see {@link #createMetricTon()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMetricTon();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of mass: microgram.
@@ -2580,14 +2376,12 @@
      */
     static MeasureUnit *createMicrogram(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of mass: microgram.
      * Also see {@link #createMicrogram()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMicrogram();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of mass: milligram.
@@ -2598,14 +2392,12 @@
      */
     static MeasureUnit *createMilligram(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of mass: milligram.
      * Also see {@link #createMilligram()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMilligram();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of mass: ounce.
@@ -2616,14 +2408,12 @@
      */
     static MeasureUnit *createOunce(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of mass: ounce.
      * Also see {@link #createOunce()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getOunce();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of mass: ounce-troy.
@@ -2634,14 +2424,12 @@
      */
     static MeasureUnit *createOunceTroy(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of mass: ounce-troy.
      * Also see {@link #createOunceTroy()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getOunceTroy();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of mass: pound.
@@ -2652,32 +2440,28 @@
      */
     static MeasureUnit *createPound(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of mass: pound.
      * Also see {@link #createPound()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getPound();
-#endif  /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of mass: solar-mass.
      * Caller owns returned value and must free it.
      * Also see {@link #getSolarMass()}.
      * @param status ICU error code.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit *createSolarMass(UErrorCode &status);
 
     /**
      * Returns by value, unit of mass: solar-mass.
      * Also see {@link #createSolarMass()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getSolarMass();
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of mass: stone.
@@ -2688,14 +2472,12 @@
      */
     static MeasureUnit *createStone(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of mass: stone.
      * Also see {@link #createStone()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getStone();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of mass: ton.
@@ -2706,14 +2488,12 @@
      */
     static MeasureUnit *createTon(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of mass: ton.
      * Also see {@link #createTon()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getTon();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of power: gigawatt.
@@ -2724,14 +2504,12 @@
      */
     static MeasureUnit *createGigawatt(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of power: gigawatt.
      * Also see {@link #createGigawatt()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getGigawatt();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of power: horsepower.
@@ -2742,14 +2520,12 @@
      */
     static MeasureUnit *createHorsepower(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of power: horsepower.
      * Also see {@link #createHorsepower()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getHorsepower();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of power: kilowatt.
@@ -2760,14 +2536,12 @@
      */
     static MeasureUnit *createKilowatt(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of power: kilowatt.
      * Also see {@link #createKilowatt()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getKilowatt();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of power: megawatt.
@@ -2778,14 +2552,12 @@
      */
     static MeasureUnit *createMegawatt(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of power: megawatt.
      * Also see {@link #createMegawatt()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMegawatt();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of power: milliwatt.
@@ -2796,14 +2568,12 @@
      */
     static MeasureUnit *createMilliwatt(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of power: milliwatt.
      * Also see {@link #createMilliwatt()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMilliwatt();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of power: watt.
@@ -2814,14 +2584,12 @@
      */
     static MeasureUnit *createWatt(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of power: watt.
      * Also see {@link #createWatt()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getWatt();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of pressure: atmosphere.
@@ -2832,14 +2600,12 @@
      */
     static MeasureUnit *createAtmosphere(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of pressure: atmosphere.
      * Also see {@link #createAtmosphere()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getAtmosphere();
-#endif /* U_HIDE_DRAFT_API */
 
 #ifndef U_HIDE_DRAFT_API
     /**
@@ -2868,14 +2634,12 @@
      */
     static MeasureUnit *createHectopascal(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of pressure: hectopascal.
      * Also see {@link #createHectopascal()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getHectopascal();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of pressure: inch-ofhg.
@@ -2886,50 +2650,44 @@
      */
     static MeasureUnit *createInchHg(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of pressure: inch-ofhg.
      * Also see {@link #createInchHg()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getInchHg();
-#endif  /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of pressure: kilopascal.
      * Caller owns returned value and must free it.
      * Also see {@link #getKilopascal()}.
      * @param status ICU error code.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit *createKilopascal(UErrorCode &status);
 
     /**
      * Returns by value, unit of pressure: kilopascal.
      * Also see {@link #createKilopascal()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getKilopascal();
-#endif /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of pressure: megapascal.
      * Caller owns returned value and must free it.
      * Also see {@link #getMegapascal()}.
      * @param status ICU error code.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit *createMegapascal(UErrorCode &status);
 
     /**
      * Returns by value, unit of pressure: megapascal.
      * Also see {@link #createMegapascal()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMegapascal();
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of pressure: millibar.
@@ -2940,14 +2698,12 @@
      */
     static MeasureUnit *createMillibar(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of pressure: millibar.
      * Also see {@link #createMillibar()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMillibar();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of pressure: millimeter-ofhg.
@@ -2958,14 +2714,12 @@
      */
     static MeasureUnit *createMillimeterOfMercury(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of pressure: millimeter-ofhg.
      * Also see {@link #createMillimeterOfMercury()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMillimeterOfMercury();
-#endif  /* U_HIDE_DRAFT_API */
 
 #ifndef U_HIDE_DRAFT_API
     /**
@@ -2994,14 +2748,12 @@
      */
     static MeasureUnit *createPoundPerSquareInch(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of pressure: pound-force-per-square-inch.
      * Also see {@link #createPoundPerSquareInch()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getPoundPerSquareInch();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of speed: kilometer-per-hour.
@@ -3012,14 +2764,12 @@
      */
     static MeasureUnit *createKilometerPerHour(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of speed: kilometer-per-hour.
      * Also see {@link #createKilometerPerHour()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getKilometerPerHour();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of speed: knot.
@@ -3030,14 +2780,12 @@
      */
     static MeasureUnit *createKnot(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of speed: knot.
      * Also see {@link #createKnot()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getKnot();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of speed: meter-per-second.
@@ -3048,14 +2796,12 @@
      */
     static MeasureUnit *createMeterPerSecond(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of speed: meter-per-second.
      * Also see {@link #createMeterPerSecond()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMeterPerSecond();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of speed: mile-per-hour.
@@ -3066,14 +2812,12 @@
      */
     static MeasureUnit *createMilePerHour(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of speed: mile-per-hour.
      * Also see {@link #createMilePerHour()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMilePerHour();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of temperature: celsius.
@@ -3084,14 +2828,12 @@
      */
     static MeasureUnit *createCelsius(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of temperature: celsius.
      * Also see {@link #createCelsius()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getCelsius();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of temperature: fahrenheit.
@@ -3102,14 +2844,12 @@
      */
     static MeasureUnit *createFahrenheit(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of temperature: fahrenheit.
      * Also see {@link #createFahrenheit()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getFahrenheit();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of temperature: generic.
@@ -3120,14 +2860,12 @@
      */
     static MeasureUnit *createGenericTemperature(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of temperature: generic.
      * Also see {@link #createGenericTemperature()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getGenericTemperature();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of temperature: kelvin.
@@ -3138,50 +2876,44 @@
      */
     static MeasureUnit *createKelvin(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of temperature: kelvin.
      * Also see {@link #createKelvin()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getKelvin();
-#endif  /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of torque: newton-meter.
      * Caller owns returned value and must free it.
      * Also see {@link #getNewtonMeter()}.
      * @param status ICU error code.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit *createNewtonMeter(UErrorCode &status);
 
     /**
      * Returns by value, unit of torque: newton-meter.
      * Also see {@link #createNewtonMeter()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getNewtonMeter();
-#endif /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of torque: pound-force-foot.
      * Caller owns returned value and must free it.
      * Also see {@link #getPoundFoot()}.
      * @param status ICU error code.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit *createPoundFoot(UErrorCode &status);
 
     /**
      * Returns by value, unit of torque: pound-force-foot.
      * Also see {@link #createPoundFoot()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getPoundFoot();
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of volume: acre-foot.
@@ -3192,32 +2924,28 @@
      */
     static MeasureUnit *createAcreFoot(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of volume: acre-foot.
      * Also see {@link #createAcreFoot()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getAcreFoot();
-#endif  /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of volume: barrel.
      * Caller owns returned value and must free it.
      * Also see {@link #getBarrel()}.
      * @param status ICU error code.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit *createBarrel(UErrorCode &status);
 
     /**
      * Returns by value, unit of volume: barrel.
      * Also see {@link #createBarrel()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getBarrel();
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of volume: bushel.
@@ -3228,14 +2956,12 @@
      */
     static MeasureUnit *createBushel(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of volume: bushel.
      * Also see {@link #createBushel()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getBushel();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of volume: centiliter.
@@ -3246,14 +2972,12 @@
      */
     static MeasureUnit *createCentiliter(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of volume: centiliter.
      * Also see {@link #createCentiliter()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getCentiliter();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of volume: cubic-centimeter.
@@ -3264,14 +2988,12 @@
      */
     static MeasureUnit *createCubicCentimeter(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of volume: cubic-centimeter.
      * Also see {@link #createCubicCentimeter()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getCubicCentimeter();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of volume: cubic-foot.
@@ -3282,14 +3004,12 @@
      */
     static MeasureUnit *createCubicFoot(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of volume: cubic-foot.
      * Also see {@link #createCubicFoot()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getCubicFoot();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of volume: cubic-inch.
@@ -3300,14 +3020,12 @@
      */
     static MeasureUnit *createCubicInch(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of volume: cubic-inch.
      * Also see {@link #createCubicInch()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getCubicInch();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of volume: cubic-kilometer.
@@ -3318,14 +3036,12 @@
      */
     static MeasureUnit *createCubicKilometer(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of volume: cubic-kilometer.
      * Also see {@link #createCubicKilometer()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getCubicKilometer();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of volume: cubic-meter.
@@ -3336,14 +3052,12 @@
      */
     static MeasureUnit *createCubicMeter(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of volume: cubic-meter.
      * Also see {@link #createCubicMeter()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getCubicMeter();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of volume: cubic-mile.
@@ -3354,14 +3068,12 @@
      */
     static MeasureUnit *createCubicMile(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of volume: cubic-mile.
      * Also see {@link #createCubicMile()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getCubicMile();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of volume: cubic-yard.
@@ -3372,14 +3084,12 @@
      */
     static MeasureUnit *createCubicYard(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of volume: cubic-yard.
      * Also see {@link #createCubicYard()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getCubicYard();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of volume: cup.
@@ -3390,14 +3100,12 @@
      */
     static MeasureUnit *createCup(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of volume: cup.
      * Also see {@link #createCup()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getCup();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of volume: cup-metric.
@@ -3408,14 +3116,12 @@
      */
     static MeasureUnit *createCupMetric(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of volume: cup-metric.
      * Also see {@link #createCupMetric()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getCupMetric();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of volume: deciliter.
@@ -3426,14 +3132,12 @@
      */
     static MeasureUnit *createDeciliter(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of volume: deciliter.
      * Also see {@link #createDeciliter()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getDeciliter();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of volume: fluid-ounce.
@@ -3444,32 +3148,28 @@
      */
     static MeasureUnit *createFluidOunce(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of volume: fluid-ounce.
      * Also see {@link #createFluidOunce()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getFluidOunce();
-#endif  /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by pointer, unit of volume: fluid-ounce-imperial.
      * Caller owns returned value and must free it.
      * Also see {@link #getFluidOunceImperial()}.
      * @param status ICU error code.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit *createFluidOunceImperial(UErrorCode &status);
 
     /**
      * Returns by value, unit of volume: fluid-ounce-imperial.
      * Also see {@link #createFluidOunceImperial()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getFluidOunceImperial();
-#endif /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of volume: gallon.
@@ -3480,14 +3180,12 @@
      */
     static MeasureUnit *createGallon(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of volume: gallon.
      * Also see {@link #createGallon()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getGallon();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of volume: gallon-imperial.
@@ -3498,14 +3196,12 @@
      */
     static MeasureUnit *createGallonImperial(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of volume: gallon-imperial.
      * Also see {@link #createGallonImperial()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getGallonImperial();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of volume: hectoliter.
@@ -3516,14 +3212,12 @@
      */
     static MeasureUnit *createHectoliter(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of volume: hectoliter.
      * Also see {@link #createHectoliter()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getHectoliter();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of volume: liter.
@@ -3534,14 +3228,12 @@
      */
     static MeasureUnit *createLiter(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of volume: liter.
      * Also see {@link #createLiter()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getLiter();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of volume: megaliter.
@@ -3552,14 +3244,12 @@
      */
     static MeasureUnit *createMegaliter(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of volume: megaliter.
      * Also see {@link #createMegaliter()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMegaliter();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of volume: milliliter.
@@ -3570,14 +3260,12 @@
      */
     static MeasureUnit *createMilliliter(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of volume: milliliter.
      * Also see {@link #createMilliliter()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getMilliliter();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of volume: pint.
@@ -3588,14 +3276,12 @@
      */
     static MeasureUnit *createPint(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of volume: pint.
      * Also see {@link #createPint()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getPint();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of volume: pint-metric.
@@ -3606,14 +3292,12 @@
      */
     static MeasureUnit *createPintMetric(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of volume: pint-metric.
      * Also see {@link #createPintMetric()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getPintMetric();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of volume: quart.
@@ -3624,14 +3308,12 @@
      */
     static MeasureUnit *createQuart(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of volume: quart.
      * Also see {@link #createQuart()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getQuart();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of volume: tablespoon.
@@ -3642,14 +3324,12 @@
      */
     static MeasureUnit *createTablespoon(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of volume: tablespoon.
      * Also see {@link #createTablespoon()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getTablespoon();
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Returns by pointer, unit of volume: teaspoon.
@@ -3660,14 +3340,12 @@
      */
     static MeasureUnit *createTeaspoon(UErrorCode &status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns by value, unit of volume: teaspoon.
      * Also see {@link #createTeaspoon()}.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static MeasureUnit getTeaspoon();
-#endif  /* U_HIDE_DRAFT_API */
 
 
 // End generated createXXX methods
diff --git a/icu4c/source/i18n/unicode/numberformatter.h b/icu4c/source/i18n/unicode/numberformatter.h
index 95f4337..1f8c35b 100644
--- a/icu4c/source/i18n/unicode/numberformatter.h
+++ b/icu4c/source/i18n/unicode/numberformatter.h
@@ -2095,7 +2095,6 @@
      */
     UnicodeString toSkeleton(UErrorCode& status) const;
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns the current (Un)LocalizedNumberFormatter as a LocalPointer
      * wrapping a heap-allocated copy of the current object.
@@ -2105,7 +2104,7 @@
      *
      * @return A wrapped (Un)LocalizedNumberFormatter pointer, or a wrapped
      *         nullptr on failure.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     LocalPointer<Derived> clone() const &;
 
@@ -2114,10 +2113,9 @@
      *
      * @return A wrapped (Un)LocalizedNumberFormatter pointer, or a wrapped
      *         nullptr on failure.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     LocalPointer<Derived> clone() &&;
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Sets the UErrorCode if an error occurred in the fluent chain.
@@ -2429,14 +2427,12 @@
   public:
 
     // Default constructor cannot have #ifndef U_HIDE_DRAFT_API
-#ifndef U_FORCE_HIDE_DRAFT_API
     /**
      * Default constructor; makes an empty FormattedNumber.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     FormattedNumber()
         : fData(nullptr), fErrorCode(U_INVALID_STATE_ERROR) {}
-#endif  // U_FORCE_HIDE_DRAFT_API
 
     /**
      * Move constructor: Leaves the source FormattedNumber in an undefined state.
@@ -2610,7 +2606,6 @@
      */
     static UnlocalizedNumberFormatter forSkeleton(const UnicodeString& skeleton, UErrorCode& status);
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Call this method at the beginning of a NumberFormatter fluent chain to create an instance based
      * on a given number skeleton string.
@@ -2626,11 +2621,10 @@
      * @param status
      *            Set to U_NUMBER_SKELETON_SYNTAX_ERROR if the skeleton was invalid.
      * @return An UnlocalizedNumberFormatter, to be used for chaining.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     static UnlocalizedNumberFormatter forSkeleton(const UnicodeString& skeleton,
                                                   UParseError& perror, UErrorCode& status);
-#endif
 
     /**
      * Use factory methods instead of the constructor to create a NumberFormatter.
diff --git a/icu4c/source/i18n/unicode/numberrangeformatter.h b/icu4c/source/i18n/unicode/numberrangeformatter.h
index c086a9e..4d436a7 100644
--- a/icu4c/source/i18n/unicode/numberrangeformatter.h
+++ b/icu4c/source/i18n/unicode/numberrangeformatter.h
@@ -449,7 +449,6 @@
      */
     Derived identityFallback(UNumberRangeIdentityFallback identityFallback) &&;
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Returns the current (Un)LocalizedNumberRangeFormatter as a LocalPointer
      * wrapping a heap-allocated copy of the current object.
@@ -459,7 +458,7 @@
      *
      * @return A wrapped (Un)LocalizedNumberRangeFormatter pointer, or a wrapped
      *         nullptr on failure.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     LocalPointer<Derived> clone() const &;
 
@@ -468,10 +467,9 @@
      *
      * @return A wrapped (Un)LocalizedNumberRangeFormatter pointer, or a wrapped
      *         nullptr on failure.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     LocalPointer<Derived> clone() &&;
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Sets the UErrorCode if an error occurred in the fluent chain.
diff --git a/icu4c/source/i18n/unicode/numfmt.h b/icu4c/source/i18n/unicode/numfmt.h
index 722e6b7..48a69de 100644
--- a/icu4c/source/i18n/unicode/numfmt.h
+++ b/icu4c/source/i18n/unicode/numfmt.h
@@ -239,12 +239,10 @@
         kPermillField = UNUM_PERMILL_FIELD,
         /** @stable ICU 2.0 */
         kSignField = UNUM_SIGN_FIELD,
-#ifndef U_HIDE_DRAFT_API
-        /** @draft ICU 64 */
+        /** @stable ICU 64 */
         kMeasureUnitField = UNUM_MEASURE_UNIT_FIELD,
-        /** @draft ICU 64 */
+        /** @stable ICU 64 */
         kCompactField = UNUM_COMPACT_FIELD,
-#endif  // U_HIDE_DRAFT_API
 
     /**
      * These constants are provided for backwards compatibility only.
diff --git a/icu4c/source/i18n/unicode/plurrule.h b/icu4c/source/i18n/unicode/plurrule.h
index a155356..408efbc 100644
--- a/icu4c/source/i18n/unicode/plurrule.h
+++ b/icu4c/source/i18n/unicode/plurrule.h
@@ -350,7 +350,6 @@
      */
     UnicodeString select(double number) const;
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Given a formatted number, returns the keyword of the first rule
      * that applies to  the number.  This function can be used with
@@ -364,10 +363,9 @@
      * @param status  Set if an error occurs while selecting plural keyword.
      *                This could happen if the FormattedNumber is invalid.
      * @return        The keyword of the selected rule.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     UnicodeString select(const number::FormattedNumber& number, UErrorCode& status) const;
-#endif  /* U_HIDE_DRAFT_API */
 
 #ifndef U_HIDE_INTERNAL_API
     /**
diff --git a/icu4c/source/i18n/unicode/reldatefmt.h b/icu4c/source/i18n/unicode/reldatefmt.h
index 044465b..d5533bb 100644
--- a/icu4c/source/i18n/unicode/reldatefmt.h
+++ b/icu4c/source/i18n/unicode/reldatefmt.h
@@ -264,7 +264,6 @@
 class FormattedRelativeDateTime;
 class FormattedRelativeDateTimeData;
 
-#ifndef U_HIDE_DRAFT_API
 /**
  * An immutable class containing the result of a relative datetime formatting operation.
  *
@@ -272,25 +271,25 @@
  *
  * Not intended for public subclassing.
  *
- * @draft ICU 64
+ * @stable ICU 64
  */
 class U_I18N_API FormattedRelativeDateTime : public UMemory, public FormattedValue {
   public:
     /**
      * Default constructor; makes an empty FormattedRelativeDateTime.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     FormattedRelativeDateTime() : fData(nullptr), fErrorCode(U_INVALID_STATE_ERROR) {}
 
     /**
      * Move constructor: Leaves the source FormattedRelativeDateTime in an undefined state.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     FormattedRelativeDateTime(FormattedRelativeDateTime&& src) U_NOEXCEPT;
 
     /**
      * Destruct an instance of FormattedRelativeDateTime.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     virtual ~FormattedRelativeDateTime() U_OVERRIDE;
 
@@ -302,7 +301,7 @@
 
     /**
      * Move assignment: Leaves the source FormattedRelativeDateTime in an undefined state.
-     * @draft ICU 64
+     * @stable ICU 64
      */
     FormattedRelativeDateTime& operator=(FormattedRelativeDateTime&& src) U_NOEXCEPT;
 
@@ -327,7 +326,6 @@
         : fData(nullptr), fErrorCode(errorCode) {}
     friend class RelativeDateTimeFormatter;
 };
-#endif  /* U_HIDE_DRAFT_API */
 
 /**
  * Formats simple relative dates. There are two types of relative dates that
@@ -492,7 +490,6 @@
             UnicodeString& appendTo,
             UErrorCode& status) const;
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Formats a relative date with a quantity such as "in 5 days" or
      * "3 months ago"
@@ -508,14 +505,13 @@
      * @param unit the unit e.g day? month? year?
      * @param status ICU error code returned here.
      * @return The formatted relative datetime
-     * @draft ICU 64
+     * @stable ICU 64
      */
     FormattedRelativeDateTime formatToValue(
             double quantity,
             UDateDirection direction,
             UDateRelativeUnit unit,
             UErrorCode& status) const;
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Formats a relative date without a quantity.
@@ -539,7 +535,6 @@
             UnicodeString& appendTo,
             UErrorCode& status) const;
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Formats a relative date without a quantity.
      *
@@ -553,13 +548,12 @@
      * @param unit e.g SATURDAY, DAY, MONTH
      * @param status ICU error code returned here.
      * @return The formatted relative datetime
-     * @draft ICU 64
+     * @stable ICU 64
      */
     FormattedRelativeDateTime formatToValue(
             UDateDirection direction,
             UDateAbsoluteUnit unit,
             UErrorCode& status) const;
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Format a combination of URelativeDateTimeUnit and numeric offset
@@ -587,7 +581,6 @@
             UnicodeString& appendTo,
             UErrorCode& status) const;
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Format a combination of URelativeDateTimeUnit and numeric offset
      * using a numeric style, e.g. "1 week ago", "in 1 week",
@@ -604,13 +597,12 @@
      *                  UDAT_REL_UNIT_FRIDAY.
      * @param status    ICU error code returned here.
      * @return          The formatted relative datetime
-     * @draft ICU 64
+     * @stable ICU 64
      */
     FormattedRelativeDateTime formatNumericToValue(
             double offset,
             URelativeDateTimeUnit unit,
             UErrorCode& status) const;
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Format a combination of URelativeDateTimeUnit and numeric offset
@@ -638,7 +630,6 @@
             UnicodeString& appendTo,
             UErrorCode& status) const;
 
-#ifndef U_HIDE_DRAFT_API
     /**
      * Format a combination of URelativeDateTimeUnit and numeric offset
      * using a text style if possible, e.g. "last week", "this week",
@@ -655,13 +646,12 @@
      *                  UDAT_REL_UNIT_FRIDAY.
      * @param status    ICU error code returned here.
      * @return          The formatted relative datetime
-     * @draft ICU 64
+     * @stable ICU 64
      */
     FormattedRelativeDateTime formatToValue(
             double offset,
             URelativeDateTimeUnit unit,
             UErrorCode& status) const;
-#endif  /* U_HIDE_DRAFT_API */
 
     /**
      * Combines a relative date string and a time string in this object's
@@ -724,13 +714,11 @@
             UErrorCode& status,
             Args... args) const;
 
-#ifndef U_HIDE_DRAFT_API  // for FormattedRelativeDateTime
     template<typename F, typename... Args>
     FormattedRelativeDateTime doFormatToValue(
             F callback,
             UErrorCode& status,
             Args... args) const;
-#endif  // U_HIDE_DRAFT_API
 
     void formatImpl(
             double quantity,
diff --git a/icu4c/source/i18n/unicode/udateintervalformat.h b/icu4c/source/i18n/unicode/udateintervalformat.h
index d8b52b7..2f9ec91 100644
--- a/icu4c/source/i18n/unicode/udateintervalformat.h
+++ b/icu4c/source/i18n/unicode/udateintervalformat.h
@@ -83,14 +83,12 @@
 struct UDateIntervalFormat;
 typedef struct UDateIntervalFormat UDateIntervalFormat;  /**< C typedef for struct UDateIntervalFormat. @stable ICU 4.8 */
 
-#ifndef U_HIDE_DRAFT_API
 struct UFormattedDateInterval;
 /**
  * Opaque struct to contain the results of a UDateIntervalFormat operation.
- * @draft ICU 64
+ * @stable ICU 64
  */
 typedef struct UFormattedDateInterval UFormattedDateInterval;
-#endif /* U_HIDE_DRAFT_API */
 
 /**
  * Open a new UDateIntervalFormat object using the predefined rules for a
@@ -133,8 +131,6 @@
 U_STABLE void U_EXPORT2
 udtitvfmt_close(UDateIntervalFormat *formatter);
 
-
-#ifndef U_HIDE_DRAFT_API
 /**
  * Creates an object to hold the result of a UDateIntervalFormat
  * operation. The object can be used repeatedly; it is cleared whenever
@@ -142,7 +138,7 @@
  *
  * @param ec Set if an error occurs.
  * @return A pointer needing ownership.
- * @draft ICU 64
+ * @stable ICU 64
  */
 U_CAPI UFormattedDateInterval* U_EXPORT2
 udtitvfmt_openResult(UErrorCode* ec);
@@ -167,7 +163,7 @@
  * @param uresult The object containing the formatted string.
  * @param ec Set if an error occurs.
  * @return A UFormattedValue owned by the input object.
- * @draft ICU 64
+ * @stable ICU 64
  */
 U_CAPI const UFormattedValue* U_EXPORT2
 udtitvfmt_resultAsValue(const UFormattedDateInterval* uresult, UErrorCode* ec);
@@ -176,11 +172,10 @@
  * Releases the UFormattedDateInterval created by udtitvfmt_openResult().
  *
  * @param uresult The object to release.
- * @draft ICU 64
+ * @stable ICU 64
  */
 U_CAPI void U_EXPORT2
 udtitvfmt_closeResult(UFormattedDateInterval* uresult);
-#endif /* U_HIDE_DRAFT_API */
 
 
 #if U_SHOW_CPLUSPLUS_API
@@ -198,7 +193,6 @@
  */
 U_DEFINE_LOCAL_OPEN_POINTER(LocalUDateIntervalFormatPointer, UDateIntervalFormat, udtitvfmt_close);
 
-#ifndef U_HIDE_DRAFT_API
 /**
  * \class LocalUFormattedDateIntervalPointer
  * "Smart pointer" class, closes a UFormattedDateInterval via udtitvfmt_close().
@@ -206,10 +200,9 @@
  *
  * @see LocalPointerBase
  * @see LocalPointer
- * @draft ICU 64
+ * @stable ICU 64
  */
 U_DEFINE_LOCAL_OPEN_POINTER(LocalUFormattedDateIntervalPointer, UFormattedDateInterval, udtitvfmt_closeResult);
-#endif /* U_HIDE_DRAFT_API */
 
 U_NAMESPACE_END
 
diff --git a/icu4c/source/i18n/unicode/uformattedvalue.h b/icu4c/source/i18n/unicode/uformattedvalue.h
index 0b289e3..07f4281 100644
--- a/icu4c/source/i18n/unicode/uformattedvalue.h
+++ b/icu4c/source/i18n/unicode/uformattedvalue.h
@@ -10,8 +10,6 @@
 
 #include "unicode/ufieldpositer.h"
 
-#ifndef U_HIDE_DRAFT_API
-
 /**
  * \file
  * \brief C API: Abstract operations for localized strings.
@@ -31,41 +29,41 @@
  * categories 2^28 and higher or below zero (with the highest bit turned on)
  * are private-use and will not be used by ICU in the future.
  *
- * @draft ICU 64
+ * @stable ICU 64
  */
 typedef enum UFieldCategory {
     /**
      * For an undefined field category.
      * 
-     * @draft ICU 64
+     * @stable ICU 64
      */
     UFIELD_CATEGORY_UNDEFINED = 0,
 
     /**
      * For fields in UDateFormatField (udat.h), from ICU 3.0.
      *
-     * @draft ICU 64
+     * @stable ICU 64
      */
     UFIELD_CATEGORY_DATE,
 
     /**
      * For fields in UNumberFormatFields (unum.h), from ICU 49.
      *
-     * @draft ICU 64
+     * @stable ICU 64
      */
     UFIELD_CATEGORY_NUMBER,
 
     /**
      * For fields in UListFormatterField (ulistformatter.h), from ICU 63.
      *
-     * @draft ICU 64
+     * @stable ICU 64
      */
     UFIELD_CATEGORY_LIST,
 
     /**
      * For fields in URelativeDateTimeFormatterField (ureldatefmt.h), from ICU 64.
      *
-     * @draft ICU 64
+     * @stable ICU 64
      */
     UFIELD_CATEGORY_RELATIVE_DATETIME,
 
@@ -84,14 +82,14 @@
     /**
      * Category for spans in a list.
      *
-     * @draft ICU 64
+     * @stable ICU 64
      */
     UFIELD_CATEGORY_LIST_SPAN = 0x1000 + UFIELD_CATEGORY_LIST,
 
     /**
      * Category for spans in a date interval.
      *
-     * @draft ICU 64
+     * @stable ICU 64
      */
     UFIELD_CATEGORY_DATE_INTERVAL_SPAN = 0x1000 + UFIELD_CATEGORY_DATE_INTERVAL,
 
@@ -108,7 +106,7 @@
  *   2. It allows you to set constraints to use when iterating over field positions.
  *   3. It is used for the newer FormattedValue APIs.
  *
- * @draft ICU 64
+ * @stable ICU 64
  */
 typedef struct UConstrainedFieldPosition UConstrainedFieldPosition;
 
@@ -120,9 +118,9 @@
  *
  * @param ec Set if an error occurs.
  * @return The new object, or NULL if an error occurs.
- * @draft ICU 64
+ * @stable ICU 64
  */
-U_DRAFT UConstrainedFieldPosition* U_EXPORT2
+U_STABLE UConstrainedFieldPosition* U_EXPORT2
 ucfpos_open(UErrorCode* ec);
 
 
@@ -133,9 +131,9 @@
  *
  * @param ucfpos The instance of UConstrainedFieldPosition.
  * @param ec Set if an error occurs.
- * @draft ICU 64
+ * @stable ICU 64
  */
-U_DRAFT void U_EXPORT2
+U_STABLE void U_EXPORT2
 ucfpos_reset(
     UConstrainedFieldPosition* ucfpos,
     UErrorCode* ec);
@@ -145,9 +143,9 @@
  * Destroys a UConstrainedFieldPosition and releases its memory.
  *
  * @param ucfpos The instance of UConstrainedFieldPosition.
- * @draft ICU 64
+ * @stable ICU 64
  */
-U_DRAFT void U_EXPORT2
+U_STABLE void U_EXPORT2
 ucfpos_close(UConstrainedFieldPosition* ucfpos);
 
 
@@ -174,9 +172,9 @@
  * @param ucfpos The instance of UConstrainedFieldPosition.
  * @param category The field category to fix when iterating.
  * @param ec Set if an error occurs.
- * @draft ICU 64
+ * @stable ICU 64
  */
-U_DRAFT void U_EXPORT2
+U_STABLE void U_EXPORT2
 ucfpos_constrainCategory(
     UConstrainedFieldPosition* ucfpos,
     int32_t category,
@@ -207,9 +205,9 @@
  * @param category The field category to fix when iterating.
  * @param field The field to fix when iterating.
  * @param ec Set if an error occurs.
- * @draft ICU 64
+ * @stable ICU 64
  */
-U_DRAFT void U_EXPORT2
+U_STABLE void U_EXPORT2
 ucfpos_constrainField(
     UConstrainedFieldPosition* ucfpos,
     int32_t category,
@@ -227,9 +225,9 @@
  * @param ucfpos The instance of UConstrainedFieldPosition.
  * @param ec Set if an error occurs.
  * @return The field category saved in the instance.
- * @draft ICU 64
+ * @stable ICU 64
  */
-U_DRAFT int32_t U_EXPORT2
+U_STABLE int32_t U_EXPORT2
 ucfpos_getCategory(
     const UConstrainedFieldPosition* ucfpos,
     UErrorCode* ec);
@@ -245,9 +243,9 @@
  * @param ucfpos The instance of UConstrainedFieldPosition.
  * @param ec Set if an error occurs.
  * @return The field saved in the instance.
- * @draft ICU 64
+ * @stable ICU 64
  */
-U_DRAFT int32_t U_EXPORT2
+U_STABLE int32_t U_EXPORT2
 ucfpos_getField(
     const UConstrainedFieldPosition* ucfpos,
     UErrorCode* ec);
@@ -262,9 +260,9 @@
  * @param pStart Set to the start index saved in the instance. Ignored if nullptr.
  * @param pLimit Set to the end index saved in the instance. Ignored if nullptr.
  * @param ec Set if an error occurs.
- * @draft ICU 64
+ * @stable ICU 64
  */
-U_DRAFT void U_EXPORT2
+U_STABLE void U_EXPORT2
 ucfpos_getIndexes(
     const UConstrainedFieldPosition* ucfpos,
     int32_t* pStart,
@@ -282,9 +280,9 @@
  * @param ucfpos The instance of UConstrainedFieldPosition.
  * @param ec Set if an error occurs.
  * @return The current iteration context from ucfpos_setInt64IterationContext.
- * @draft ICU 64
+ * @stable ICU 64
  */
-U_DRAFT int64_t U_EXPORT2
+U_STABLE int64_t U_EXPORT2
 ucfpos_getInt64IterationContext(
     const UConstrainedFieldPosition* ucfpos,
     UErrorCode* ec);
@@ -298,9 +296,9 @@
  * @param ucfpos The instance of UConstrainedFieldPosition.
  * @param context The new iteration context.
  * @param ec Set if an error occurs.
- * @draft ICU 64
+ * @stable ICU 64
  */
-U_DRAFT void U_EXPORT2
+U_STABLE void U_EXPORT2
 ucfpos_setInt64IterationContext(
     UConstrainedFieldPosition* ucfpos,
     int64_t context,
@@ -317,9 +315,9 @@
  * @param category The category to test.
  * @param field The field to test.
  * @param ec Set if an error occurs.
- * @draft ICU 64
+ * @stable ICU 64
  */
-U_DRAFT UBool U_EXPORT2
+U_STABLE UBool U_EXPORT2
 ucfpos_matchesField(
     const UConstrainedFieldPosition* ucfpos,
     int32_t category,
@@ -341,9 +339,9 @@
  * @param start The new inclusive start index.
  * @param limit The new exclusive end index.
  * @param ec Set if an error occurs.
- * @draft ICU 64
+ * @stable ICU 64
  */
-U_DRAFT void U_EXPORT2
+U_STABLE void U_EXPORT2
 ucfpos_setState(
     UConstrainedFieldPosition* ucfpos,
     int32_t category,
@@ -358,7 +356,7 @@
  * An abstract formatted value: a string with associated field attributes.
  * Many formatters format to types compatible with UFormattedValue.
  *
- * @draft ICU 64
+ * @stable ICU 64
  */
 typedef struct UFormattedValue UFormattedValue;
 
@@ -374,9 +372,9 @@
  * @param pLength Output variable for the length of the string. Ignored if NULL.
  * @param ec Set if an error occurs.
  * @return A NUL-terminated char16 string owned by the UFormattedValue.
- * @draft ICU 64
+ * @stable ICU 64
  */
-U_DRAFT const UChar* U_EXPORT2
+U_STABLE const UChar* U_EXPORT2
 ufmtval_getString(
     const UFormattedValue* ufmtval,
     int32_t* pLength,
@@ -404,9 +402,9 @@
  *         and ucfpos_constrainField.
  * @param ec Set if an error occurs.
  * @return TRUE if another position was found; FALSE otherwise.
- * @draft ICU 64
+ * @stable ICU 64
  */
-U_DRAFT UBool U_EXPORT2
+U_STABLE UBool U_EXPORT2
 ufmtval_nextPosition(
     const UFormattedValue* ufmtval,
     UConstrainedFieldPosition* ucfpos,
@@ -426,7 +424,7 @@
  *     LocalUConstrainedFieldPositionPointer ucfpos(ucfpos_open(ec));
  *     // no need to explicitly call ucfpos_close()
  *
- * @draft ICU 64
+ * @stable ICU 64
  */
 U_DEFINE_LOCAL_OPEN_POINTER(LocalUConstrainedFieldPositionPointer,
     UConstrainedFieldPosition,
@@ -436,6 +434,5 @@
 #endif // U_SHOW_CPLUSPLUS_API
 
 
-#endif  /* U_HIDE_DRAFT_API */
 #endif /* #if !UCONFIG_NO_FORMATTING */
 #endif // __UFORMATTEDVALUE_H__
diff --git a/icu4c/source/i18n/unicode/ulistformatter.h b/icu4c/source/i18n/unicode/ulistformatter.h
index 5f36eba..2bdf0f8 100644
--- a/icu4c/source/i18n/unicode/ulistformatter.h
+++ b/icu4c/source/i18n/unicode/ulistformatter.h
@@ -34,34 +34,32 @@
 struct UListFormatter;
 typedef struct UListFormatter UListFormatter;  /**< C typedef for struct UListFormatter. @stable ICU 55 */
 
-#ifndef U_HIDE_DRAFT_API
 struct UFormattedList;
 /**
  * Opaque struct to contain the results of a UListFormatter operation.
- * @draft ICU 64
+ * @stable ICU 64
  */
 typedef struct UFormattedList UFormattedList;
-#endif  /* U_HIDE_DRAFT_API */
 
-#ifndef U_HIDE_DRAFT_API
 /**
  * FieldPosition and UFieldPosition selectors for format fields
  * defined by ListFormatter.
- * @draft ICU 63
+ * @stable ICU 63
  */
 typedef enum UListFormatterField {
     /**
      * The literal text in the result which came from the resources.
-     * @draft ICU 63
+     * @stable ICU 63
      */
     ULISTFMT_LITERAL_FIELD,
     /**
      * The element text in the result which came from the input strings.
-     * @draft ICU 63
+     * @stable ICU 63
      */
     ULISTFMT_ELEMENT_FIELD
 } UListFormatterField;
 
+#ifndef U_HIDE_DRAFT_API
 /**
  * Type of meaning expressed by the list.
  *
@@ -163,7 +161,7 @@
  *            or NULL if an error occurred.
  * @draft ICU 67
  */
-U_CAPI UListFormatter* U_EXPORT2
+U_DRAFT UListFormatter* U_EXPORT2
 ulistfmt_openForType(const char*  locale, UListFormatterType type,
                      UListFormatterWidth width, UErrorCode*  status);
 #endif /* U_HIDE_DRAFT_API */
@@ -177,7 +175,6 @@
 U_CAPI void U_EXPORT2
 ulistfmt_close(UListFormatter *listfmt);
 
-#ifndef U_HIDE_DRAFT_API
 /**
  * Creates an object to hold the result of a UListFormatter
  * operation. The object can be used repeatedly; it is cleared whenever
@@ -185,7 +182,7 @@
  *
  * @param ec Set if an error occurs.
  * @return A pointer needing ownership.
- * @draft ICU 64
+ * @stable ICU 64
  */
 U_CAPI UFormattedList* U_EXPORT2
 ulistfmt_openResult(UErrorCode* ec);
@@ -209,7 +206,7 @@
  * @param uresult The object containing the formatted string.
  * @param ec Set if an error occurs.
  * @return A UFormattedValue owned by the input object.
- * @draft ICU 64
+ * @stable ICU 64
  */
 U_CAPI const UFormattedValue* U_EXPORT2
 ulistfmt_resultAsValue(const UFormattedList* uresult, UErrorCode* ec);
@@ -218,11 +215,10 @@
  * Releases the UFormattedList created by ulistfmt_openResult().
  *
  * @param uresult The object to release.
- * @draft ICU 64
+ * @stable ICU 64
  */
 U_CAPI void U_EXPORT2
 ulistfmt_closeResult(UFormattedList* uresult);
-#endif /* U_HIDE_DRAFT_API */
 
 
 #if U_SHOW_CPLUSPLUS_API
@@ -240,7 +236,6 @@
  */
 U_DEFINE_LOCAL_OPEN_POINTER(LocalUListFormatterPointer, UListFormatter, ulistfmt_close);
 
-#ifndef U_HIDE_DRAFT_API
 /**
  * \class LocalUFormattedListPointer
  * "Smart pointer" class, closes a UFormattedList via ulistfmt_closeResult().
@@ -248,10 +243,9 @@
  *
  * @see LocalPointerBase
  * @see LocalPointer
- * @draft ICU 64
+ * @stable ICU 64
  */
 U_DEFINE_LOCAL_OPEN_POINTER(LocalUFormattedListPointer, UFormattedList, ulistfmt_closeResult);
-#endif /* U_HIDE_DRAFT_API */
 
 U_NAMESPACE_END
 
@@ -300,7 +294,6 @@
                 int32_t            resultCapacity,
                 UErrorCode*        status);
 
-#ifndef U_HIDE_DRAFT_API
 /**
  * Formats a list of strings to a UFormattedList, which exposes more
  * information than the string exported by ulistfmt_format().
@@ -325,7 +318,7 @@
  *            operation. See ulistfmt_openResult().
  * @param status
  *            Error code set if an error occurred during formatting.
- * @draft ICU 64
+ * @stable ICU 64
  */
 U_CAPI void U_EXPORT2
 ulistfmt_formatStringsToResult(
@@ -335,7 +328,6 @@
                 int32_t            stringCount,
                 UFormattedList*    uresult,
                 UErrorCode*        status);
-#endif /* U_HIDE_DRAFT_API */
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
 
diff --git a/icu4c/source/i18n/unicode/unum.h b/icu4c/source/i18n/unicode/unum.h
index 4304538..9036f95 100644
--- a/icu4c/source/i18n/unicode/unum.h
+++ b/icu4c/source/i18n/unicode/unum.h
@@ -377,12 +377,10 @@
     UNUM_PERMILL_FIELD,
     /** @stable ICU 49 */
     UNUM_SIGN_FIELD,
-#ifndef U_HIDE_DRAFT_API
-    /** @draft ICU 64 */
+    /** @stable ICU 64 */
     UNUM_MEASURE_UNIT_FIELD,
-    /** @draft ICU 64 */
+    /** @stable ICU 64 */
     UNUM_COMPACT_FIELD,
-#endif  /* U_HIDE_DRAFT_API */
 
 #ifndef U_HIDE_DEPRECATED_API
     /**
@@ -1032,17 +1030,15 @@
    * @stable ICU 51 */
   UNUM_SCALE = 21,
 
-#ifndef U_HIDE_DRAFT_API
   /**
    * Minimum grouping digits; most commonly set to 2 to print "1000" instead of "1,000".
    * See DecimalFormat::getMinimumGroupingDigits().
    *
    * For better control over grouping strategies, use UNumberFormatter.
    *
-   * @draft ICU 64
+   * @stable ICU 64
    */
   UNUM_MINIMUM_GROUPING_DIGITS = 22,
-#endif /* U_HIDE_DRAFT_API */
 
   /** 
    * if this attribute is set to 0, it is set to UNUM_CURRENCY_STANDARD purpose,
@@ -1083,12 +1079,10 @@
    */
   UNUM_PARSE_DECIMAL_MARK_REQUIRED = 0x1002,
 
-#ifndef U_HIDE_DRAFT_API
-
   /**
    * Parsing: if set to 1, parsing is sensitive to case (lowercase/uppercase).
    *
-   * @draft ICU 64
+   * @stable ICU 64
    */
   UNUM_PARSE_CASE_SENSITIVE = 0x1003,
 
@@ -1097,12 +1091,10 @@
    *
    * For better control over sign display, use UNumberFormatter.
    *
-   * @draft ICU 64
+   * @stable ICU 64
    */
   UNUM_SIGN_ALWAYS_SHOWN = 0x1004,
 
-#endif /* U_HIDE_DRAFT_API */
-
 #ifndef U_HIDE_INTERNAL_API
   /** Limit of boolean attributes. (value should
    * not depend on U_HIDE conditionals)
diff --git a/icu4c/source/i18n/unicode/unumberformatter.h b/icu4c/source/i18n/unicode/unumberformatter.h
index 12b88a4..af98ba0 100644
--- a/icu4c/source/i18n/unicode/unumberformatter.h
+++ b/icu4c/source/i18n/unicode/unumberformatter.h
@@ -437,7 +437,6 @@
                                UErrorCode* ec);
 
 
-#ifndef U_HIDE_DRAFT_API
 /**
  * Like unumf_openForSkeletonAndLocale, but accepts a UParseError, which will be populated with the
  * location of a skeleton syntax error if such a syntax error exists.
@@ -448,12 +447,11 @@
  * @param perror A parse error struct populated if an error occurs when parsing. Can be NULL.
  *               If no error occurs, perror->offset will be set to -1.
  * @param ec Set if an error occurs.
- * @draft ICU 64
+ * @stable ICU 64
  */
-U_DRAFT UNumberFormatter* U_EXPORT2
+U_STABLE UNumberFormatter* U_EXPORT2
 unumf_openForSkeletonAndLocaleWithError(
        const UChar* skeleton, int32_t skeletonLen, const char* locale, UParseError* perror, UErrorCode* ec);
-#endif  // U_HIDE_DRAFT_API
 
 
 /**
@@ -531,7 +529,6 @@
 unumf_formatDecimal(const UNumberFormatter* uformatter, const char* value, int32_t valueLen,
                     UFormattedNumber* uresult, UErrorCode* ec);
 
-#ifndef U_HIDE_DRAFT_API
 /**
  * Returns a representation of a UFormattedNumber as a UFormattedValue,
  * which can be subsequently passed to any API requiring that type.
@@ -544,11 +541,10 @@
  * @param uresult The object containing the formatted string.
  * @param ec Set if an error occurs.
  * @return A UFormattedValue owned by the input object.
- * @draft ICU 64
+ * @stable ICU 64
  */
-U_DRAFT const UFormattedValue* U_EXPORT2
+U_STABLE const UFormattedValue* U_EXPORT2
 unumf_resultAsValue(const UFormattedNumber* uresult, UErrorCode* ec);
-#endif  /* U_HIDE_DRAFT_API */
 
 
 /**
diff --git a/icu4c/source/i18n/unicode/upluralrules.h b/icu4c/source/i18n/unicode/upluralrules.h
index fc1b2fb..9c09dfa 100644
--- a/icu4c/source/i18n/unicode/upluralrules.h
+++ b/icu4c/source/i18n/unicode/upluralrules.h
@@ -152,7 +152,6 @@
                UChar *keyword, int32_t capacity,
                UErrorCode *status);
 
-#ifndef U_HIDE_DRAFT_API
 /**
  * Given a formatted number, returns the keyword of the first rule
  * that applies to the number, according to the supplied UPluralRules object.
@@ -168,14 +167,13 @@
  * @param capacity The capacity of the keyword buffer.
  * @param status A pointer to a UErrorCode to receive any errors.
  * @return The length of the keyword.
- * @draft ICU 64
+ * @stable ICU 64
  */
 U_CAPI int32_t U_EXPORT2
 uplrules_selectFormatted(const UPluralRules *uplrules,
                const struct UFormattedNumber* number,
                UChar *keyword, int32_t capacity,
                UErrorCode *status);
-#endif  /* U_HIDE_DRAFT_API */
 
 #ifndef U_HIDE_INTERNAL_API
 /**
diff --git a/icu4c/source/i18n/unicode/ureldatefmt.h b/icu4c/source/i18n/unicode/ureldatefmt.h
index 0724d38..e2e1974 100644
--- a/icu4c/source/i18n/unicode/ureldatefmt.h
+++ b/icu4c/source/i18n/unicode/ureldatefmt.h
@@ -175,25 +175,23 @@
 #endif  /* U_HIDE_DEPRECATED_API */
 } URelativeDateTimeUnit;
 
-#ifndef U_HIDE_DRAFT_API
 /**
  * FieldPosition and UFieldPosition selectors for format fields
  * defined by RelativeDateTimeFormatter.
- * @draft ICU 64
+ * @stable ICU 64
  */
 typedef enum URelativeDateTimeFormatterField {
     /**
      * Represents a literal text string, like "tomorrow" or "days ago".
-     * @draft ICU 64
+     * @stable ICU 64
      */
     UDAT_REL_LITERAL_FIELD,
     /**
      * Represents a number quantity, like "3" in "3 days ago".
-     * @draft ICU 64
+     * @stable ICU 64
      */
     UDAT_REL_NUMERIC_FIELD,
 } URelativeDateTimeFormatterField;
-#endif // U_HIDE_DRAFT_API
 
 
 /**
@@ -252,11 +250,10 @@
 U_STABLE void U_EXPORT2
 ureldatefmt_close(URelativeDateTimeFormatter *reldatefmt);
 
-#ifndef U_HIDE_DRAFT_API
 struct UFormattedRelativeDateTime;
 /**
  * Opaque struct to contain the results of a URelativeDateTimeFormatter operation.
- * @draft ICU 64
+ * @stable ICU 64
  */
 typedef struct UFormattedRelativeDateTime UFormattedRelativeDateTime;
 
@@ -267,9 +264,9 @@
  *
  * @param ec Set if an error occurs.
  * @return A pointer needing ownership.
- * @draft ICU 64
+ * @stable ICU 64
  */
-U_DRAFT UFormattedRelativeDateTime* U_EXPORT2
+U_STABLE UFormattedRelativeDateTime* U_EXPORT2
 ureldatefmt_openResult(UErrorCode* ec);
 
 /**
@@ -284,20 +281,19 @@
  * @param ufrdt The object containing the formatted string.
  * @param ec Set if an error occurs.
  * @return A UFormattedValue owned by the input object.
- * @draft ICU 64
+ * @stable ICU 64
  */
-U_DRAFT const UFormattedValue* U_EXPORT2
+U_STABLE const UFormattedValue* U_EXPORT2
 ureldatefmt_resultAsValue(const UFormattedRelativeDateTime* ufrdt, UErrorCode* ec);
 
 /**
  * Releases the UFormattedRelativeDateTime created by ureldatefmt_openResult.
  *
  * @param ufrdt The object to release.
- * @draft ICU 64
+ * @stable ICU 64
  */
-U_DRAFT void U_EXPORT2
+U_STABLE void U_EXPORT2
 ureldatefmt_closeResult(UFormattedRelativeDateTime* ufrdt);
-#endif  /* U_HIDE_DRAFT_API */
 
 
 #if U_SHOW_CPLUSPLUS_API
@@ -315,7 +311,6 @@
  */
 U_DEFINE_LOCAL_OPEN_POINTER(LocalURelativeDateTimeFormatterPointer, URelativeDateTimeFormatter, ureldatefmt_close);
 
-#ifndef U_HIDE_DRAFT_API
 /**
  * \class LocalUFormattedRelativeDateTimePointer
  * "Smart pointer" class, closes a UFormattedRelativeDateTime via ureldatefmt_closeResult().
@@ -323,10 +318,9 @@
  *
  * @see LocalPointerBase
  * @see LocalPointer
- * @draft ICU 64
+ * @stable ICU 64
  */
 U_DEFINE_LOCAL_OPEN_POINTER(LocalUFormattedRelativeDateTimePointer, UFormattedRelativeDateTime, ureldatefmt_closeResult);
-#endif  /* U_HIDE_DRAFT_API */
 
 U_NAMESPACE_END
 
@@ -368,7 +362,6 @@
                     int32_t               resultCapacity,
                     UErrorCode*           status);
 
-#ifndef U_HIDE_DRAFT_API
 /**
  * Format a combination of URelativeDateTimeUnit and numeric
  * offset using a numeric style, e.g. "1 week ago", "in 1 week",
@@ -390,16 +383,15 @@
  *          A pointer to a UErrorCode to receive any errors. In
  *          case of error status, the contents of result are
  *          undefined.
- * @draft ICU 64
+ * @stable ICU 64
  */
-U_DRAFT void U_EXPORT2
+U_STABLE void U_EXPORT2
 ureldatefmt_formatNumericToResult(
     const URelativeDateTimeFormatter* reldatefmt,
     double                            offset,
     URelativeDateTimeUnit             unit,
     UFormattedRelativeDateTime*       result,
     UErrorCode*                       status);
-#endif  /* U_HIDE_DRAFT_API */
 
 /**
  * Format a combination of URelativeDateTimeUnit and numeric offset
@@ -437,7 +429,6 @@
                     int32_t               resultCapacity,
                     UErrorCode*           status);
 
-#ifndef U_HIDE_DRAFT_API
 /**
  * Format a combination of URelativeDateTimeUnit and numeric offset
  * using a text style if possible, e.g. "last week", "this week",
@@ -462,16 +453,15 @@
  *          A pointer to a UErrorCode to receive any errors. In
  *          case of error status, the contents of result are
  *          undefined.
- * @draft ICU 64
+ * @stable ICU 64
  */
-U_DRAFT void U_EXPORT2
+U_STABLE void U_EXPORT2
 ureldatefmt_formatToResult(
     const URelativeDateTimeFormatter* reldatefmt,
     double                            offset,
     URelativeDateTimeUnit             unit,
     UFormattedRelativeDateTime*       result,
     UErrorCode*                       status);
-#endif  /* U_HIDE_DRAFT_API */
 
 /**
  * Combines a relative date string and a time string in this object's