<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>ICU4J API Comparison: ICU4J 4.2.1 with ICU4J 4.3.4</title>
<!-- Copyright 2010, IBM, All Rights Reserved. -->
</head>
<body>
<h1>ICU4J API Comparison: ICU4J 4.2.1 with ICU4J 4.3.4</h1>

<hr/>
<h2>Removed from ICU4J 4.2.1</h2>

<h3>Package com.ibm.icu.math</h3>
<ul>
BigDecimal
<ul>
<li>(stable)     public int <i>compareTo</i>(java.lang.Object)</li>
</ul>
</ul>

<h3>Package com.ibm.icu.text</h3>
<ul>
<li><span style='color:red'>*internal*  </span>public class <i>BreakDictionary</i></li>
CollationKey
<ul>
<li>(stable)     public int <i>compareTo</i>(java.lang.Object)</li>
</ul>
DateIntervalInfo
<ul>
<li>(stable)     public java.lang.Object <i>cloneAsThawed</i>()</li>
<li>(stable)     public java.lang.Object <i>freeze</i>()</li>
</ul>
DateTimePatternGenerator
<ul>
<li>(stable)     public java.lang.Object <i>cloneAsThawed</i>()</li>
<li>(stable)     public java.lang.Object <i>freeze</i>()</li>
</ul>
DecimalFormatSymbols
<ul>
<li>(draft)      public static final int CURRENCT_SPC_SURROUNDING_MATCH</li>
</ul>
</ul>

<h3>Package com.ibm.icu.util</h3>
<ul>
Calendar
<ul>
<li>(stable)     public int <i>compareTo</i>(java.lang.Object)</li>
</ul>
ChineseCalendar
<ul>
<li>(stable)     public static int IS_LEAP_MONTH</li>
<li>(stable)     protected int[] <i>handleCreateFields</i>()</li>
</ul>
GlobalizationPreferences
<ul>
<li>(draft)      public java.lang.Object <i>cloneAsThawed</i>()</li>
<li>(draft)      public java.lang.Object <i>freeze</i>()</li>
</ul>
ULocale
<ul>
<li>(draft)      public static final char LDML_EXTENSION</li>
<li>(draft)      public static VersionInfo <i>getCLDRVersion</i>()</li>
<li>(draft)      public java.util.Set <i>getLDMLExtensionKeys</i>()</li>
<li>(draft)      public java.lang.String <i>getLDMLExtensionValue</i>(java.lang.String)</li>
</ul>
ULocale.Builder
<ul>
<li>(draft)      public ULocale <i>create</i>()</li>
<li>(draft)      public ULocale.Builder <i>setLDMLExtensionValue</i>(java.lang.String, java.lang.String)</li>
</ul>
UResourceBundle
<ul>
<li><span style='color:red'>*internal*  </span>protected static final int ALIAS</li>
<li><span style='color:red'>*internal*  </span>protected static final int TABLE32</li>
<li><span style='color:red'>*internal*  </span>protected boolean isTopLevel</li>
<li><span style='color:red'>*internal*  </span>protected java.lang.String key</li>
<li><span style='color:red'>*internal*  </span>protected long resource</li>
<li><span style='color:red'>*internal*  </span>protected int size</li>
</ul>
VersionInfo
<ul>
<li>(draft)      public int <i>compareTo</i>(java.lang.Object)</li>
</ul>
</ul>


<hr/>
<h2>Withdrawn, Deprecated, or Obsoleted in ICU4J 4.3.4</h2>

<h3>Package com.ibm.icu.util</h3>
<ul>
Calendar.FormatConfiguration
<ul>
<li><span style='color:red'>*internal*  </span>public java.lang.String <i>getOverrideString</i>()</li>
</ul>
</ul>


<hr/>
<h2>Changed in ICU4J 4.3.4 (old, new)</h2>

<h3>Package com.ibm.icu.charset</h3>
<ul>
CharsetProviderICU
<ul>
<li>    <span style='color:red'>*internal*  </span>public static final java.lang.Object[] <i>getAvailableNames</i>()</br>
<span style='color:red'>*internal*  </span>public static final java.lang.String[] <i>getAvailableNames</i>()</li>
</ul>
</ul>

<h3>Package com.ibm.icu.text</h3>
<ul>
CharsetMatch
<ul>
<li>    (stable)     public int <i>compareTo</i>(java.lang.Object)</br>
(stable)     public int <i>compareTo</i>(com.ibm.icu.text.CharsetMatch)</li>
</ul>
RawCollationKey
<ul>
<li>    (stable)     public int <i>compareTo</i>(java.lang.Object)</br>
(stable)     public int <i>compareTo</i>(com.ibm.icu.text.RawCollationKey)</li>
<li>    (stable)     public interface <i>StringTransform</i> </br>
(stable)     public interface <i>StringTransform</i> implements com.ibm.icu.text.Transform</li>
</ul>
UTF16.StringComparator
<ul>
<li>    (stable)     public int <i>compare</i>(java.lang.Object, java.lang.Object)</br>
(stable)     public int <i>compare</i>(java.lang.String, java.lang.String)</li>
<li>    (stable)     public class <i>UnicodeSet</i> extends com.ibm.icu.text.UnicodeFilter implements com.ibm.icu.util.Freezable</br>
(stable)     public class <i>UnicodeSet</i> extends com.ibm.icu.text.UnicodeFilter implements java.lang.Iterable, java.lang.Comparable, com.ibm.icu.util.Freezable</li>
</ul>
UnicodeSet
<ul>
<li>    (stable)     public void <i>addAll</i>(java.util.Collection)</br>
(draft)      public com.ibm.icu.text.UnicodeSet <i>addAll</i>(int, int)</li>
<li>    (stable)     public void <i>addAllTo</i>(java.util.Collection)</br>
(draft)      public static java.lang.Object[] <i>addAllTo</i>(java.lang.Iterable, T[])</li>
<li>    (stable)     public java.lang.Object <i>cloneAsThawed</i>()</br>
(stable)     public com.ibm.icu.text.UnicodeSet <i>cloneAsThawed</i>()</li>
<li>    (stable)     public java.lang.Object <i>freeze</i>()</br>
(stable)     public com.ibm.icu.text.UnicodeSet <i>freeze</i>()</li>
</ul>
</ul>

<h3>Package com.ibm.icu.util</h3>
<ul>
ByteArrayWrapper
<ul>
<li>    (stable)     public int <i>compareTo</i>(java.lang.Object)</br>
(stable)     public int <i>compareTo</i>(com.ibm.icu.util.ByteArrayWrapper)</li>
</ul>
UResourceBundle
<ul>
<li>    <span style='color:red'>*internal*  </span>protected static void <i>addToCache</i>(java.lang.ClassLoader, java.lang.String, com.ibm.icu.util.ULocale, com.ibm.icu.util.UResourceBundle)</br>
<span style='color:red'>*internal*  </span>protected static com.ibm.icu.util.UResourceBundle <i>addToCache</i>(java.lang.ClassLoader, java.lang.String, com.ibm.icu.util.ULocale, com.ibm.icu.util.UResourceBundle)</li>
</ul>
VersionInfo
<ul>
<li>    <span style='color:red'>*internal*  </span>public static final java.lang.String ICU_DATA_VERSION</br>
<span style='color:red'>*internal*  </span>public static final com.ibm.icu.util.VersionInfo ICU_DATA_VERSION</li>
</ul>
</ul>


<hr/>
<h2>Promoted to stable in ICU4J 4.3.4</h2>

<h3>Package com.ibm.icu.charset</h3>
<ul>
<li>(stable)     public final class <i>CharsetSelector</i></li>
</ul>

<h3>Package com.ibm.icu.text</h3>
<ul>
<li>(stable)     public class <i>CurrencyPluralInfo</i></li>
Collator
<ul>
<li>(stable)     public static final java.lang.String[] <i>getKeywordValuesForLocale</i>(java.lang.String, ULocale, boolean)</li>
</ul>
DecimalFormat
<ul>
<li>(stable)     public <i>DecimalFormat</i>(java.lang.String, DecimalFormatSymbols, CurrencyPluralInfo, int)</li>
<li>(stable)     public CurrencyPluralInfo <i>getCurrencyPluralInfo</i>()</li>
<li>(stable)     public java.math.MathContext <i>getMathContext</i>()</li>
<li>(stable)     public MathContext <i>getMathContextICU</i>()</li>
<li>(stable)     public void <i>setCurrencyPluralInfo</i>(CurrencyPluralInfo)</li>
<li>(stable)     public void <i>setMathContext</i>(java.math.MathContext)</li>
<li>(stable)     public void <i>setMathContextICU</i>(MathContext)</li>
</ul>
NumberFormat
<ul>
<li>(stable)     public static final int CURRENCYSTYLE</li>
<li>(stable)     public static final int INTEGERSTYLE</li>
<li>(stable)     public static final int ISOCURRENCYSTYLE</li>
<li>(stable)     public static final int NUMBERSTYLE</li>
<li>(stable)     public static final int PERCENTSTYLE</li>
<li>(stable)     public static final int PLURALCURRENCYSTYLE</li>
<li>(stable)     public static final int SCIENTIFICSTYLE</li>
<li>(stable)     public static NumberFormat <i>getInstance</i>(ULocale, int)</li>
<li>(stable)     public static final NumberFormat <i>getInstance</i>(int)</li>
<li>(stable)     public static NumberFormat <i>getInstance</i>(java.util.Locale, int)</li>
</ul>
PluralFormat
<ul>
<li>(stable)     public java.lang.String <i>toPattern</i>()</li>
</ul>
RuleBasedNumberFormat
<ul>
<li>(stable)     public static final int NUMBERING_SYSTEM</li>
</ul>
SimpleDateFormat
<ul>
<li>(stable)     public <i>SimpleDateFormat</i>(java.lang.String, java.lang.String, ULocale)</li>
</ul>
StringPrep
<ul>
<li>(stable)     public static final int RFC3491_NAMEPREP</li>
<li>(stable)     public static final int RFC3530_NFS4_CIS_PREP</li>
<li>(stable)     public static final int RFC3530_NFS4_CS_PREP</li>
<li>(stable)     public static final int RFC3530_NFS4_CS_PREP_CI</li>
<li>(stable)     public static final int RFC3530_NFS4_MIXED_PREP_PREFIX</li>
<li>(stable)     public static final int RFC3530_NFS4_MIXED_PREP_SUFFIX</li>
<li>(stable)     public static final int RFC3722_ISCSI</li>
<li>(stable)     public static final int RFC3920_NODEPREP</li>
<li>(stable)     public static final int RFC3920_RESOURCEPREP</li>
<li>(stable)     public static final int RFC4011_MIB</li>
<li>(stable)     public static final int RFC4013_SASLPREP</li>
<li>(stable)     public static final int RFC4505_TRACE</li>
<li>(stable)     public static final int RFC4518_LDAP</li>
<li>(stable)     public static final int RFC4518_LDAP_CI</li>
<li>(stable)     public static StringPrep <i>getInstance</i>(int)</li>
<li>(stable)     public java.lang.String <i>prepare</i>(java.lang.String, int)</li>
</ul>
TimeUnitFormat
<ul>
<li>(stable)     public static final int ABBREVIATED_NAME</li>
<li>(stable)     public static final int FULL_NAME</li>
<li>(stable)     public <i>TimeUnitFormat</i>(ULocale, int)</li>
<li>(stable)     public <i>TimeUnitFormat</i>(java.util.Locale, int)</li>
</ul>
UnicodeSet
<ul>
<li>(stable)     public final UnicodeSet <i>removeAllStrings</i>()</li>
</ul>
</ul>

<h3>Package com.ibm.icu.util</h3>
<ul>
Calendar
<ul>
<li>(stable)     public static final java.lang.String[] <i>getKeywordValuesForLocale</i>(java.lang.String, ULocale, boolean)</li>
</ul>
Currency
<ul>
<li>(stable)     public static final int PLURAL_LONG_NAME</li>
<li>(stable)     public static final java.lang.String[] <i>getKeywordValuesForLocale</i>(java.lang.String, ULocale, boolean)</li>
<li>(stable)     public java.lang.String <i>getName</i>(ULocale, int, java.lang.String, boolean[])</li>
<li>(stable)     public java.lang.String <i>getName</i>(java.util.Locale, int, java.lang.String, boolean[])</li>
</ul>
LocaleData
<ul>
<li>(stable)     public java.lang.String <i>getLocaleDisplayPattern</i>()</li>
<li>(stable)     public java.lang.String <i>getLocaleSeparator</i>()</li>
</ul>
</ul>


<hr/>
<h2>Added in ICU4J 4.3.4</h2>

<h3>Package com.ibm.icu.charset</h3>
<ul>
CharsetDecoderICU
<ul>
<li><span style='color:red'>*internal*  </span>protected static final int EXT_MAX_BYTES</li>
</ul>
</ul>

<h3>Package com.ibm.icu.lang</h3>
<ul>
UCharacter
<ul>
<li>(draft)      public static int <i>getCharFromNameAlias</i>(java.lang.String)</li>
<li>(draft)      public static java.lang.String <i>getNameAlias</i>(int)</li>
</ul>
UCharacter.JoiningGroup
<ul>
<li>(stable)     public static final int FARSI_YEH</li>
<li>(stable)     public static final int NYA</li>
</ul>
UCharacter.LineBreak
<ul>
<li>(stable)     public static final int CLOSE_PARENTHESIS</li>
</ul>
UCharacter.UnicodeBlock
<ul>
<li>(stable)     public static final UCharacter.UnicodeBlock AVESTAN</li>
<li>(stable)     public static final int AVESTAN_ID</li>
<li>(stable)     public static final UCharacter.UnicodeBlock BAMUM</li>
<li>(stable)     public static final int BAMUM_ID</li>
<li>(stable)     public static final UCharacter.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C</li>
<li>(stable)     public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C_ID</li>
<li>(stable)     public static final UCharacter.UnicodeBlock COMMON_INDIC_NUMBER_FORMS</li>
<li>(stable)     public static final int COMMON_INDIC_NUMBER_FORMS_ID</li>
<li>(stable)     public static final UCharacter.UnicodeBlock DEVANAGARI_EXTENDED</li>
<li>(stable)     public static final int DEVANAGARI_EXTENDED_ID</li>
<li>(stable)     public static final UCharacter.UnicodeBlock EGYPTIAN_HIEROGLYPHS</li>
<li>(stable)     public static final int EGYPTIAN_HIEROGLYPHS_ID</li>
<li>(stable)     public static final UCharacter.UnicodeBlock ENCLOSED_ALPHANUMERIC_SUPPLEMENT</li>
<li>(stable)     public static final int ENCLOSED_ALPHANUMERIC_SUPPLEMENT_ID</li>
<li>(stable)     public static final UCharacter.UnicodeBlock ENCLOSED_IDEOGRAPHIC_SUPPLEMENT</li>
<li>(stable)     public static final int ENCLOSED_IDEOGRAPHIC_SUPPLEMENT_ID</li>
<li>(stable)     public static final UCharacter.UnicodeBlock HANGUL_JAMO_EXTENDED_A</li>
<li>(stable)     public static final int HANGUL_JAMO_EXTENDED_A_ID</li>
<li>(stable)     public static final UCharacter.UnicodeBlock HANGUL_JAMO_EXTENDED_B</li>
<li>(stable)     public static final int HANGUL_JAMO_EXTENDED_B_ID</li>
<li>(stable)     public static final UCharacter.UnicodeBlock IMPERIAL_ARAMAIC</li>
<li>(stable)     public static final int IMPERIAL_ARAMAIC_ID</li>
<li>(stable)     public static final UCharacter.UnicodeBlock INSCRIPTIONAL_PAHLAVI</li>
<li>(stable)     public static final int INSCRIPTIONAL_PAHLAVI_ID</li>
<li>(stable)     public static final UCharacter.UnicodeBlock INSCRIPTIONAL_PARTHIAN</li>
<li>(stable)     public static final int INSCRIPTIONAL_PARTHIAN_ID</li>
<li>(stable)     public static final UCharacter.UnicodeBlock JAVANESE</li>
<li>(stable)     public static final int JAVANESE_ID</li>
<li>(stable)     public static final UCharacter.UnicodeBlock KAITHI</li>
<li>(stable)     public static final int KAITHI_ID</li>
<li>(stable)     public static final UCharacter.UnicodeBlock LISU</li>
<li>(stable)     public static final int LISU_ID</li>
<li>(stable)     public static final UCharacter.UnicodeBlock MEETEI_MAYEK</li>
<li>(stable)     public static final int MEETEI_MAYEK_ID</li>
<li>(stable)     public static final UCharacter.UnicodeBlock MYANMAR_EXTENDED_A</li>
<li>(stable)     public static final int MYANMAR_EXTENDED_A_ID</li>
<li>(stable)     public static final UCharacter.UnicodeBlock OLD_SOUTH_ARABIAN</li>
<li>(stable)     public static final int OLD_SOUTH_ARABIAN_ID</li>
<li>(stable)     public static final UCharacter.UnicodeBlock OLD_TURKIC</li>
<li>(stable)     public static final int OLD_TURKIC_ID</li>
<li>(stable)     public static final UCharacter.UnicodeBlock RUMI_NUMERAL_SYMBOLS</li>
<li>(stable)     public static final int RUMI_NUMERAL_SYMBOLS_ID</li>
<li>(stable)     public static final UCharacter.UnicodeBlock SAMARITAN</li>
<li>(stable)     public static final int SAMARITAN_ID</li>
<li>(stable)     public static final UCharacter.UnicodeBlock TAI_THAM</li>
<li>(stable)     public static final int TAI_THAM_ID</li>
<li>(stable)     public static final UCharacter.UnicodeBlock TAI_VIET</li>
<li>(stable)     public static final int TAI_VIET_ID</li>
<li>(stable)     public static final UCharacter.UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED</li>
<li>(stable)     public static final int UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_ID</li>
<li>(stable)     public static final UCharacter.UnicodeBlock VEDIC_EXTENSIONS</li>
<li>(stable)     public static final int VEDIC_EXTENSIONS_ID</li>
</ul>
UProperty
<ul>
<li>(stable)     public static final int CASED</li>
<li>(stable)     public static final int CASE_IGNORABLE</li>
<li>(stable)     public static final int CHANGES_WHEN_CASEFOLDED</li>
<li>(stable)     public static final int CHANGES_WHEN_CASEMAPPED</li>
<li>(stable)     public static final int CHANGES_WHEN_LOWERCASED</li>
<li>(stable)     public static final int CHANGES_WHEN_TITLECASED</li>
<li>(stable)     public static final int CHANGES_WHEN_UPPERCASED</li>
<li><span style='color:red'>*internal*  </span>public static final int UNDEFINED</li>
</ul>
UScript
<ul>
<li>(stable)     public static final int BAMUM</li>
<li>(stable)     public static final int LISU</li>
<li>(stable)     public static final int NAKHI_GEBA</li>
<li>(stable)     public static final int OLD_SOUTH_ARABIAN</li>
</ul>
</ul>

<h3>Package com.ibm.icu.text</h3>
<ul>
<li>(draft)      public abstract class <i>CurrencyDisplayNames</i></li>
<li>(draft)      public class <i>CurrencyMetaInfo</i></li>
<li>(draft)      public static final class <i>CurrencyMetaInfo.CurrencyDigits</i></li>
<li>(draft)      public static final class <i>CurrencyMetaInfo.CurrencyFilter</i></li>
<li>(draft)      public static final class <i>CurrencyMetaInfo.CurrencyInfo</i></li>
<li>(draft)      public class <i>FilteredNormalizer2</i></li>
<li>(draft)      public abstract class <i>LocaleDisplayNames</i></li>
<li>(draft)      public static final class <i>LocaleDisplayNames.DialectHandling</i></li>
<li>(draft)      public abstract class <i>Normalizer2</i></li>
<li>(draft)      public interface <i>RbnfLenientScanner</i></li>
<li>(draft)      public interface <i>RbnfLenientScannerProvider</i></li>
<li><span style='color:red'>*internal*  </span>public class <i>RbnfScannerProviderImpl</i></li>
<li>(draft)      public class <i>SelectFormat</i></li>
<li>(draft)      public interface <i>Transform</i></li>
<li>(draft)      public static final class <i>UnicodeSet.ComparisonStyle</i></li>
<li>(draft)      public static final class <i>UnicodeSet.SpanCondition</i></li>
Collator
<ul>
<li><span style='color:red'>*internal*  </span>public Collator <i>setStrength2</i>(int)</li>
</ul>
DateIntervalInfo
<ul>
<li>(stable)     public DateIntervalInfo <i>cloneAsThawed</i>()</li>
<li>(stable)     public DateIntervalInfo <i>freeze</i>()</li>
</ul>
DateTimePatternGenerator
<ul>
<li>(draft)      public static final int MATCH_ALL_FIELDS_LENGTH</li>
<li>(draft)      public static final int MATCH_HOUR_FIELD_LENGTH</li>
<li>(draft)      public static final int MATCH_NO_OPTIONS</li>
<li>(stable)     public DateTimePatternGenerator <i>cloneAsThawed</i>()</li>
<li>(stable)     public DateTimePatternGenerator <i>freeze</i>()</li>
<li>(draft)      public java.lang.String <i>getBestPattern</i>(java.lang.String, int)</li>
<li><span style='color:red'>*internal*  </span>public static DateTimePatternGenerator <i>getFrozenInstance</i>(ULocale)</li>
<li>(draft)      public java.lang.String <i>replaceFieldTypes</i>(java.lang.String, java.lang.String, int)</li>
<li><span style='color:red'>*internal*  </span>public boolean <i>skeletonsAreSimilar</i>(java.lang.String, java.lang.String)</li>
</ul>
DateTimePatternGenerator.VariableField
<ul>
<li>(draft)      protected boolean <i>isNumeric</i>()</li>
</ul>
DecimalFormatSymbols
<ul>
<li>(draft)      public static final int CURRENCY_SPC_SURROUNDING_MATCH</li>
</ul>
IndexCharacters
<ul>
<li>(draft)      public <i>IndexCharacters</i>(ULocale, UnicodeSet, Collator)</li>
</ul>
RuleBasedNumberFormat
<ul>
<li>(draft)      public RbnfLenientScannerProvider <i>getLenientScannerProvider</i>()</li>
<li>(draft)      public void <i>setLenientScannerProvider</i>(RbnfLenientScannerProvider)</li>
</ul>
UnicodeSet
<ul>
<li>(draft)      public <i>UnicodeSet</i>(int[])</li>
<li>(stable)     public UnicodeSet <i>add</i>(java.util.Collection)</li>
<li>(draft)      public UnicodeSet <i>addAll</i>(java.lang.String[])</li>
<li>(stable)     public UnicodeSet <i>addAll</i>(java.util.Collection)</li>
<li>(draft)      public java.lang.String[] <i>addAllTo</i>(java.lang.String[])</li>
<li>(draft)      public java.util.Collection <i>addAllTo</i>(T)</li>
<li>(draft)      public static java.util.Collection <i>addAllTo</i>(java.lang.Iterable, U)</li>
<li><span style='color:red'>*internal*  </span>public UnicodeSet <i>addBridges</i>(UnicodeSet)</li>
<li>(draft)      public static int <i>compare</i>(int, java.lang.String)</li>
<li>(draft)      public static int <i>compare</i>(java.lang.Iterable, java.lang.Iterable)</li>
<li>(draft)      public static int <i>compare</i>(java.lang.String, int)</li>
<li>(draft)      public static int <i>compare</i>(java.util.Collection, java.util.Collection, UnicodeSet.ComparisonStyle)</li>
<li>(draft)      public int <i>compareTo</i>(UnicodeSet)</li>
<li>(draft)      public int <i>compareTo</i>(UnicodeSet, UnicodeSet.ComparisonStyle)</li>
<li>(draft)      public int <i>compareTo</i>(java.lang.Iterable)</li>
<li>(draft)      public boolean <i>containsAll</i>(java.util.Collection)</li>
<li>(draft)      public boolean <i>containsNone</i>(java.util.Collection)</li>
<li>(draft)      public final boolean <i>containsSome</i>(java.util.Collection)</li>
<li><span style='color:red'>*internal*  </span>public int <i>findIn</i>(java.lang.CharSequence, int, boolean)</li>
<li><span style='color:red'>*internal*  </span>public int <i>findLastIn</i>(java.lang.CharSequence, int, boolean)</li>
<li><span style='color:red'>*internal*  </span>public static int <i>getSingleCodePoint</i>(java.lang.String)</li>
<li>(draft)      public java.util.Iterator <i>iterator</i>()</li>
<li>(draft)      public UnicodeSet <i>removeAll</i>(java.util.Collection)</li>
<li>(draft)      public UnicodeSet <i>retainAll</i>(java.util.Collection)</li>
<li>(draft)      public int <i>span</i>(java.lang.CharSequence, UnicodeSet.SpanCondition)</li>
<li>(draft)      public int <i>span</i>(java.lang.CharSequence, int, UnicodeSet.SpanCondition)</li>
<li>(draft)      public int <i>spanBack</i>(java.lang.CharSequence, UnicodeSet.SpanCondition)</li>
<li>(draft)      public int <i>spanBack</i>(java.lang.CharSequence, int, UnicodeSet.SpanCondition)</li>
<li>(draft)      public java.lang.Iterable <i>strings</i>()</li>
<li>(draft)      public java.lang.String <i>stripFrom</i>(java.lang.CharSequence, boolean)</li>
<li>(draft)      public static java.lang.String[] <i>toArray</i>(UnicodeSet)</li>
</ul>
</ul>

<h3>Package com.ibm.icu.util</h3>
<ul>
<li>(draft)      public class <i>LocaleMatcher</i></li>
<li><span style='color:red'>*internal*  </span>public static class <i>LocaleMatcher.LanguageMatcherData</i></li>
<li>(draft)      public class <i>LocalePriorityList</i></li>
<li>(draft)      public static class <i>LocalePriorityList.Builder</i></li>
Calendar
<ul>
<li>(draft)      public static final int IS_LEAP_MONTH</li>
</ul>
GlobalizationPreferences
<ul>
<li>(draft)      public GlobalizationPreferences <i>cloneAsThawed</i>()</li>
<li>(draft)      public GlobalizationPreferences <i>freeze</i>()</li>
</ul>
HebrewCalendar
<ul>
<li><span style='color:red'>*internal*  </span>public static boolean <i>isLeapYear</i>(int)</li>
</ul>
LocaleData
<ul>
<li>(stable)     public static VersionInfo <i>getCLDRVersion</i>()</li>
</ul>
TimeZone
<ul>
<li>(draft)      public static final int GENERIC_LOCATION</li>
<li>(draft)      public static final int LONG_GENERIC</li>
<li>(draft)      public static final int LONG_GMT</li>
<li>(draft)      public static final int SHORT_COMMONLY_USED</li>
<li>(draft)      public static final int SHORT_GENERIC</li>
<li>(draft)      public static final int SHORT_GMT</li>
<li>(draft)      public static ICULogger TimeZoneLogger</li>
</ul>
ULocale
<ul>
<li>(draft)      public static final char UNICODE_LOCALE_EXTENSION</li>
<li>(draft)      public java.lang.String <i>getDisplayLanguageWithDialect</i>()</li>
<li>(draft)      public java.lang.String <i>getDisplayLanguageWithDialect</i>(ULocale)</li>
<li>(draft)      public static java.lang.String <i>getDisplayLanguageWithDialect</i>(java.lang.String, ULocale)</li>
<li>(draft)      public static java.lang.String <i>getDisplayLanguageWithDialect</i>(java.lang.String, java.lang.String)</li>
<li>(draft)      public java.lang.String <i>getDisplayNameWithDialect</i>()</li>
<li>(draft)      public java.lang.String <i>getDisplayNameWithDialect</i>(ULocale)</li>
<li>(draft)      public static java.lang.String <i>getDisplayNameWithDialect</i>(java.lang.String, ULocale)</li>
<li>(draft)      public static java.lang.String <i>getDisplayNameWithDialect</i>(java.lang.String, java.lang.String)</li>
<li>(draft)      public java.util.Set <i>getUnicodeLocaleKeys</i>()</li>
<li>(draft)      public java.lang.String <i>getUnicodeLocaleType</i>(java.lang.String)</li>
</ul>
ULocale.Builder
<ul>
<li>(draft)      public <i>ULocale.Builder</i>(boolean)</li>
<li>(draft)      public ULocale <i>build</i>()</li>
<li>(draft)      public boolean <i>isLenientVariant</i>()</li>
<li>(draft)      public ULocale.Builder <i>setUnicodeLocaleKeyword</i>(java.lang.String, java.lang.String)</li>
</ul>
UResourceBundle
<ul>
<li><span style='color:red'>*internal*  </span>protected UResourceBundle <i>findTopLevel</i>(int)</li>
<li><span style='color:red'>*internal*  </span>protected UResourceBundle <i>findTopLevel</i>(java.lang.String)</li>
<li><span style='color:red'>*internal*  </span>protected java.util.Set <i>handleKeySet</i>()</li>
<li><span style='color:red'>*internal*  </span>protected boolean <i>isTopLevelResource</i>()</li>
<li><span style='color:red'>*internal*  </span>public java.util.Set <i>keySet</i>()</li>
</ul>
VersionInfo
<ul>
<li><span style='color:red'>*internal*  </span>public static final java.lang.String ICU_DATA_VERSION_PATH</li>
<li>(stable)     public static final VersionInfo UNICODE_5_2</li>
</ul>
</ul>

<hr/>
<p><i><font size="-1">Contents generated by ReportAPI tool on Fri Jan 22 16:46:37 EST 2010<br/>Copyright (C) 2010, International Business Machines Corporation, All Rights Reserved.</font></i></p>
</body>
</html>
