#existing API

# dirRoot_old is missing because refJars are being supplied 
name_old gwt15userApi
#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/Benchmark*.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/etc/**\
: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/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/**\
:**/rebind/**\
:**/remote/**\
:**/server/**\
:**/tools/**\
:com/google/gwt/junit/*.java\
:com/google/gwt/junit/client/GWTTestCase.java\
:com/google/gwt/junit/client/impl/GWTRunner.java\
:com/google/gwt/user/client/rpc/core/java/util/LinkedHashMap_CustomFieldSerializer.java\

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

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

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/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/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/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\

##############################################
#excluded packages
excludedPackages 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.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. 

com.google.gwt.i18n.client.LocaleInfo::getAvailableLocaleNames() FINAL_ADDED
com.google.gwt.i18n.client.LocaleInfo::getCurrentLocale() FINAL_ADDED
com.google.gwt.i18n.client.LocaleInfo::getLocaleName() FINAL_ADDED
com.google.gwt.i18n.client.LocaleInfo::isRTL() FINAL_ADDED
# added addAndReplaceElement(Widget, Element) in 2.0
com.google.gwt.user.client.ui.HTMLPanel::addAndReplaceElement(Lcom/google/gwt/user/client/ui/Widget;Ljava/lang/String;) OVERLOADED_METHOD_CALL

# Deprecating ImageBundle
com.google.gwt.user.client.ui.HorizontalSplitPanel::HorizontalSplitPanel(Lcom/google/gwt/user/client/ui/HorizontalSplitPanelImages;) OVERLOADED_METHOD_CALL
com.google.gwt.user.client.ui.MenuBar::MenuBar(ZLcom/google/gwt/user/client/ui/MenuBar$MenuBarImages;) OVERLOADED_METHOD_CALL
com.google.gwt.user.client.ui.Tree::Tree(Lcom/google/gwt/user/client/ui/TreeImages;) OVERLOADED_METHOD_CALL
com.google.gwt.user.client.ui.Tree::Tree(Lcom/google/gwt/user/client/ui/TreeImages;Z) OVERLOADED_METHOD_CALL
com.google.gwt.user.client.ui.Tree::getImageBase() MISSING
com.google.gwt.user.client.ui.VerticalSplitPanel::VerticalSplitPanel(Lcom/google/gwt/user/client/ui/VerticalSplitPanelImages;) OVERLOADED_METHOD_CALL

# added CurrencyData overloads
com.google.gwt.i18n.client.NumberFormat::getFormat(Ljava/lang/String;Ljava/lang/String;) OVERLOADED_METHOD_CALL
com.google.gwt.i18n.client.NumberFormat::getCurrencyFormat(Ljava/lang/String;) OVERLOADED_METHOD_CALL
com.google.gwt.i18n.client.NumberFormat::NumberFormat(Lcom/google/gwt/i18n/client/constants/NumberConstants;Ljava/lang/String;Lcom/google/gwt/i18n/client/impl/CurrencyData;Z) MISSING
com.google.gwt.i18n.client.NumberFormat::NumberFormat(Ljava/lang/String;Lcom/google/gwt/i18n/client/impl/CurrencyData;Z) MISSING
