#existing API

# dirRoot_old is missing because refJars are being supplied
name_old gwt20userApi
#sourceFiles is specified as colon-separated list of files
sourceFiles_old com/google/gwt

#excludedFiles is specified as colon-separated ant patterns
excludedFiles_old com/google/gwt/benchmarks/BenchmarkReport.java\
:com/google/gwt/benchmarks/BenchmarkShell.java\
:com/google/gwt/benchmarks/client/Benchmark.java\
:com/google/gwt/core/ext/**\
:com/google/gwt/core/linker/**\
:com/google/gwt/dev/*.java\
:com/google/gwt/dev/asm/**\
:com/google/gwt/dev/cfg/**\
:com/google/gwt/dev/generator/**\
:com/google/gwt/dev/javac/**\
:com/google/gwt/dev/jdt/**\
:com/google/gwt/dev/jjs/*.java\
:com/google/gwt/dev/jjs/ast/**\
:com/google/gwt/dev/jjs/impl/**\
:com/google/gwt/dev/js/**\
:com/google/gwt/dev/resource/**\
:com/google/gwt/dev/shell/**\
:com/google/gwt/dev/ui/**\
:com/google/gwt/dev/util/**\
:com/google/gwt/resources/css/**\
:com/google/gwt/resources/ext/**\
:com/google/gwt/resources/rg/**\
:com/google/gwt/user/linker/**\
:com/google/gwt/util/**\
:com/google/gwt/soyc/**\
:**/rebind/**\
:**/remote/**\
:**/server/**\
:**/tools/**\
:com/google/gwt/core/client/impl/WeakMapping.java\
:com/google/gwt/junit/*.java\
:com/google/gwt/junit/client/GWTTestCase.java\
:com/google/gwt/junit/client/impl/GWTRunner.java\
:com/google/gwt/regexp/shared/**\
:com/google/gwt/rpc/client/impl/ClientWriterFactory.java\
:com/google/gwt/rpc/client/impl/EscapeUtil.java\
:com/google/gwt/rpc/linker/*.java\
:com/google/gwt/uibinder/attributeparsers/*.java\
:com/google/gwt/uibinder/elementparsers/*.java\
:com/google/gwt/uibinder/testing/*.java\
:com/google/gwt/user/client/rpc/core/java/util/LinkedHashMap_CustomFieldSerializer.java\

##############################################
#new Api

dirRoot_new ./
name_new gwt21userApi
#sourceFiles is specified as colon-separated list of files
sourceFiles_new dev/core/super\
:user/src\
:user/super\

#excludedFiles is specified as colon-separated ant patterns
excludedFiles_new user/src/com/google/gwt/benchmarks/BenchmarkReport.java\
:user/src/com/google/gwt/benchmarks/BenchmarkShell.java\
:user/src/com/google/gwt/benchmarks/client/Benchmark.java\
:**/rebind/**\
:**/server/**\
:**/tools/**\
:user/src/com/google/gwt/regexp/shared/**\
:user/src/com/google/gwt/core/client/impl/WeakMapping.java\
:user/src/com/google/gwt/junit/*.java\
:user/src/com/google/gwt/junit/client/GWTTestCase.java\
:user/src/com/google/gwt/junit/client/impl/GWTRunner.java\
:user/src/com/google/gwt/junit/remote\
:user/src/com/google/gwt/precompress/linker\
:user/src/com/google/gwt/resources/css\
:user/src/com/google/gwt/resources/ext\
:user/src/com/google/gwt/resources/rg\
:user/src/com/google/gwt/rpc/client/impl/ClientWriterFactory.java\
:user/src/com/google/gwt/rpc/client/impl/EscapeUtil.java\
:user/src/com/google/gwt/rpc/linker\
:user/src/com/google/gwt/safehtml/shared/SafeHtmlHostedModeUtils.java\
:user/src/com/google/gwt/user/client/rpc/core/java/util/LinkedHashMap_CustomFieldSerializer.java\
:user/src/com/google/gwt/user/linker\
:user/src/com/google/gwt/uibinder/attributeparsers\
:user/src/com/google/gwt/uibinder/elementparsers\
:user/src/com/google/gwt/uibinder/testing\
:user/src/com/google/gwt/util/regexfilter\

##############################################
#excluded packages
excludedPackages com.google.gwt.benchmarks.client.impl\
:com.google.gwt.core.client.impl\
:com.google.gwt.i18n.client.impl\
:com.google.gwt.i18n.client.impl.cldr\
:com.google.gwt.i18n.client.impl.plurals\
:com.google.gwt.junit.client.impl\
:com.google.gwt.user.client.impl\
:com.google.gwt.user.client.rpc.impl\
:com.google.gwt.user.client.ui.impl\
:com.google.gwt.xml.client.impl\

##############################################
#Api  whitelist
# when adding to the white-list, include comments as to why the addition is
# being made.

# Added repeating FinallyCommand.
com.google.gwt.core.client.Scheduler::scheduleFinally(Lcom/google/gwt/core/client/Scheduler$ScheduledCommand;) OVERLOADED_METHOD_CALL

# Adding StackLayoutPanel.add overrides.
com.google.gwt.user.client.ui.StackLayoutPanel::add(Lcom/google/gwt/user/client/ui/Widget;Lcom/google/gwt/user/client/ui/Widget;D) OVERLOADED_METHOD_CALL

# Removing HTTPRequest.
com.google.gwt.user.client.HTTPRequest MISSING

# SafeHtml adds a safe alternative to the raw html/string methods in widgets.
# This requires very similar method signatures: For every method(String html), 
# there needs to be: method(SafeHtml html), etc.
# Null is not acceptable to any of these methods, so adding the overload is
# unlikely to break any code besides possibly test mocks.
com.google.gwt.user.client.ui.Anchor::setHTML(Ljava/lang/String;) OVERLOADED_METHOD_CALL
com.google.gwt.user.client.ui.ButtonBase::setHTML(Ljava/lang/String;) OVERLOADED_METHOD_CALL
com.google.gwt.user.client.ui.CaptionPanel::CaptionPanel(Ljava/lang/String;) OVERLOADED_METHOD_CALL
com.google.gwt.user.client.ui.CaptionPanel::setCaptionHTML(Ljava/lang/String;) OVERLOADED_METHOD_CALL
com.google.gwt.user.client.ui.CheckBox::setHTML(Ljava/lang/String;) OVERLOADED_METHOD_CALL
com.google.gwt.user.client.ui.CustomButton::setHTML(Ljava/lang/String;) OVERLOADED_METHOD_CALL
com.google.gwt.user.client.ui.DialogBox::setHTML(Ljava/lang/String;) OVERLOADED_METHOD_CALL
com.google.gwt.user.client.ui.HTML::HTML(Ljava/lang/String;Z) OVERLOADED_METHOD_CALL
com.google.gwt.user.client.ui.HTML::setHTML(Ljava/lang/String;) OVERLOADED_METHOD_CALL
com.google.gwt.user.client.ui.HTMLPanel::HTMLPanel(Ljava/lang/String;) OVERLOADED_METHOD_CALL
com.google.gwt.user.client.ui.HTMLTable::setHTML(IILjava/lang/String;) OVERLOADED_METHOD_CALL
com.google.gwt.user.client.ui.Hyperlink::Hyperlink(Ljava/lang/String;Ljava/lang/String;) OVERLOADED_METHOD_CALL
com.google.gwt.user.client.ui.Hyperlink::setHTML(Ljava/lang/String;) OVERLOADED_METHOD_CALL
com.google.gwt.user.client.ui.InlineHyperlink::InlineHyperlink(Ljava/lang/String;Ljava/lang/String;) OVERLOADED_METHOD_CALL
com.google.gwt.user.client.ui.MenuItem::setHTML(Ljava/lang/String;) OVERLOADED_METHOD_CALL
com.google.gwt.user.client.ui.RadioButton::RadioButton(Ljava/lang/String;Ljava/lang/String;) OVERLOADED_METHOD_CALL
com.google.gwt.user.client.ui.ResetButton::ResetButton(Ljava/lang/String;Lcom/google/gwt/event/dom/client/ClickHandler;) OVERLOADED_METHOD_CALL
com.google.gwt.user.client.ui.RichTextArea::setHTML(Ljava/lang/String;) OVERLOADED_METHOD_CALL
com.google.gwt.user.client.ui.StackPanel::setStackText(ILjava/lang/String;) OVERLOADED_METHOD_CALL
com.google.gwt.user.client.ui.SubmitButton::SubmitButton(Ljava/lang/String;Lcom/google/gwt/event/dom/client/ClickHandler;) OVERLOADED_METHOD_CALL
com.google.gwt.user.client.ui.TabBar::setTabHTML(ILjava/lang/String;) OVERLOADED_METHOD_CALL
com.google.gwt.user.client.ui.TabLayoutPanel::setTabHTML(ILjava/lang/String;) OVERLOADED_METHOD_CALL
com.google.gwt.user.client.ui.TreeItem::setHTML(Ljava/lang/String;) OVERLOADED_METHOD_CALL

# Change signature for native long from double[2] to LongEmul{l=int,m=int,h=int}
com.google.gwt.lang.LongLib::RUN_IN_JVM MISSING
com.google.gwt.lang.LongLib::add([D[D) MISSING
com.google.gwt.lang.LongLib::and([D[D) MISSING
com.google.gwt.lang.LongLib::compare([D[D) MISSING
com.google.gwt.lang.LongLib::div([D[D) MISSING
com.google.gwt.lang.LongLib::eq([D[D) MISSING
com.google.gwt.lang.LongLib::fromDouble(D) RETURN_TYPE_ERROR  from double[] to java.lang.Object
com.google.gwt.lang.LongLib::fromInt(I) RETURN_TYPE_ERROR  from double[] to java.lang.Object
com.google.gwt.lang.LongLib::gt([D[D) MISSING
com.google.gwt.lang.LongLib::gte([D[D) MISSING
com.google.gwt.lang.LongLib::lt([D[D) MISSING
com.google.gwt.lang.LongLib::lte([D[D) MISSING
com.google.gwt.lang.LongLib::mod([D[D) MISSING
com.google.gwt.lang.LongLib::mul([D[D) MISSING
com.google.gwt.lang.LongLib::neg([D) MISSING
com.google.gwt.lang.LongLib::neq([D[D) MISSING
com.google.gwt.lang.LongLib::not([D) MISSING
com.google.gwt.lang.LongLib::or([D[D) MISSING
com.google.gwt.lang.LongLib::shl([DI) MISSING
com.google.gwt.lang.LongLib::shr([DI) MISSING
com.google.gwt.lang.LongLib::shru([DI) MISSING
com.google.gwt.lang.LongLib::sub([D[D) MISSING
com.google.gwt.lang.LongLib::toDouble([D) MISSING
com.google.gwt.lang.LongLib::toInt([D) MISSING
com.google.gwt.lang.LongLib::toString([D) MISSING
com.google.gwt.lang.LongLib::typeChange(J) MISSING
com.google.gwt.lang.LongLib::xor([D[D) MISSING

# Array.length is now intrinsic to the compiler
com.google.gwt.lang.Array::length MISSING

# Array initialization modified to include castableTypeMap arg
com.google.gwt.lang.Array::initDim(Ljava/lang/Class;IIII) MISSING
com.google.gwt.lang.Array::initDims([Ljava/lang/Class;[I[I[III) MISSING
com.google.gwt.lang.Array::initValues(Ljava/lang/Class;IILcom/google/gwt/lang/Array;) MISSING

# Add DateTimeFormatInfo, PredefinedFormat overrides
com.google.gwt.i18n.client.DateTimeFormat::DateTimeFormat(Ljava/lang/String;Lcom/google/gwt/i18n/client/constants/DateTimeConstants;) OVERLOADED_METHOD_CALL
com.google.gwt.i18n.client.DateTimeFormat::getFormat(Ljava/lang/String;) OVERLOADED_METHOD_CALL

# All protected methods that were overridden by generated classes; user shouldn't be subclassing.
com.google.gwt.i18n.client.CurrencyList::dataMap MISSING
com.google.gwt.i18n.client.CurrencyList::ensureCurrencyMap() MISSING
com.google.gwt.i18n.client.CurrencyList::ensureNamesMap() MISSING
com.google.gwt.i18n.client.CurrencyList::getEntry(Ljava/lang/String;) MISSING
com.google.gwt.i18n.client.CurrencyList::getNamesEntry(Ljava/lang/String;) MISSING
com.google.gwt.i18n.client.CurrencyList::isDeprecated(Lcom/google/gwt/i18n/client/CurrencyData;) MISSING
com.google.gwt.i18n.client.CurrencyList::loadCurrencyMap() MISSING
com.google.gwt.i18n.client.CurrencyList::loadNamesMap() MISSING
com.google.gwt.i18n.client.CurrencyList::namesMap MISSING
com.google.gwt.i18n.client.CurrencyList::overrideCurrencyMap(Lcom/google/gwt/core/client/JavaScriptObject;) MISSING
com.google.gwt.i18n.client.CurrencyList::overrideNamesMap(Lcom/google/gwt/core/client/JavaScriptObject;) MISSING

# Introduction of RpcStatsContext, which is now passed instead of the integer ids.
com.google.gwt.rpc.client.impl.RpcCallbackAdapter::RpcCallbackAdapter(Lcom/google/gwt/user/client/rpc/SerializationStreamFactory;Ljava/lang/String;ILcom/google/gwt/user/client/rpc/AsyncCallback;) MISSING
com.google.gwt.rpc.client.impl.RpcServiceProxy::doInvoke(Lcom/google/gwt/user/client/rpc/impl/RequestCallbackAdapter$ResponseReader;Ljava/lang/String;ILjava/lang/String;Lcom/google/gwt/user/client/rpc/AsyncCallback;) MISSING
com.google.gwt.rpc.client.impl.RpcServiceProxy::doPrepareRequestBuilder(Lcom/google/gwt/user/client/rpc/impl/RequestCallbackAdapter$ResponseReader;Ljava/lang/String;ILjava/lang/String;Lcom/google/gwt/user/client/rpc/AsyncCallback;) MISSING
com.google.gwt.rpc.client.impl.RpcServiceProxy::doCreateRequestCallback(Lcom/google/gwt/user/client/rpc/impl/RequestCallbackAdapter$ResponseReader;Ljava/lang/String;ILcom/google/gwt/user/client/rpc/AsyncCallback;) MISSING

