changeset 10864:6d99922443ef

Merge
author kcr
date Thu, 08 Mar 2018 04:57:31 -0800
parents d14b61c6be12 74a27d49d1a9
children a40eb1171ed6
files .hgtags apps/experiments/.classpath apps/experiments/.project apps/experiments/Chess/ChessLibrary/nb-configuration.xml apps/experiments/Chess/ChessLibrary/pom.xml apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/model/Bishop.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/model/Board.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/model/Color.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/model/Game.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/model/GameException.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/model/GameWatcher.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/model/King.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/model/Knight.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/model/Move.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/model/Pawn.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/model/Piece.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/model/Point.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/model/Queen.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/model/Rook.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/model/Square.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/BoardRep.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/CheckCredentials.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/CheckCredentialsRsp.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/ClientMessageProcessor.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/CreateGame.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/CreateGameRsp.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/GameRsp.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/JoinGame.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/JoinGameRsp.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/Message.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/MessageRsp.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/QueryGame.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/QueryGameRsp.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/QueryGames.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/QueryGamesRsp.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/QueryMoves.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/QueryMovesRsp.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/SendAction.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/SendActionRsp.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/SendMove.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/SendMoveRsp.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/ServerMessageProcessor.java apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/UpdateGame.java apps/experiments/ConferenceScheduleApp/build.gradle apps/experiments/ConferenceScheduleApp/manifest.mf apps/experiments/ConferenceScheduleApp/nbproject/build-impl.xml apps/experiments/ConferenceScheduleApp/nbproject/configs/Run_as_WebStart.properties apps/experiments/ConferenceScheduleApp/nbproject/configs/Run_in_Browser.properties apps/experiments/ConferenceScheduleApp/nbproject/configs/Test_Mode.properties apps/experiments/ConferenceScheduleApp/nbproject/genfiles.properties apps/experiments/ConferenceScheduleApp/nbproject/jfx-impl.xml apps/experiments/ConferenceScheduleApp/nbproject/project.properties apps/experiments/ConferenceScheduleApp/nbproject/project.xml apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/AutoLogoutLightBox.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/ConferenceScheduleApp.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/Page.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/PageContainer.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/PlatformIntegration.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/Theme.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/TouchClickedEventAvoider.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/TouchScrollEventSynthesizer.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/control/CheckBoxItem.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/control/EventPopoverPage.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/control/LoginProgressBarSkin.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/control/NoopScrollBarSkin.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/control/Popover.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/control/PopoverBox.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/control/PopoverBoxItem.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/control/PopoverTreeList.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/control/ResizableWrappingText.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/control/ScrollPaneSkin3.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/control/SearchBox.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/control/SimpleVBox.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/control/TestPopover.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/control/TestVirtualKeyboard.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/control/TreeBoxItem.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/control/VirtualKeyboard.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/control/VirtualKeyboardSkin.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/data/DataService.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/data/JSONParserJP.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/data/SessionManagement.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/data/TwitterJson.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/data/devoxx/DevoxxDataService.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/data/devoxx/GetConferenceDataTask.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/data/devoxx/LoginTask.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/data/devoxx/TestDataService.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/data/devoxx/UpdateScheduleTask.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/model/Availability.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/model/Event.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/model/FilterType.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/model/Level.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/model/Room.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/model/Session.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/model/SessionTime.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/model/SessionType.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/model/Speaker.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/model/Track.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/model/Tweet.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/model/Venue.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/pages/CatalogPage.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/pages/FilterSessionsByTrackPage.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/pages/FilterSessionsByTypePage.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/pages/LoginScreen.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/pages/SearchFilterPopoverPage.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/pages/SessionFilterCriteria.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/pages/SessionListPage.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/pages/SocialPage.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/pages/SpeakersPage.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/pages/TimelinePage.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/pages/TracksPage.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/pages/VenueRoomPage.java apps/experiments/ConferenceScheduleApp/src/main/java/com/javafx/experiments/scheduleapp/pages/VenuesPage.java apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/SchedulerStyleSheet-Desktop.css apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/SchedulerStyleSheet.css apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/control/AsciiBoard.txt apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/control/EmailBoard.txt apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/control/SymbolBoard.txt apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/back-arrow.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/backspace-icon.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/blue-linen.jpg apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/cancel.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/cancel@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/capslock-icon.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/done.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/done@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/duke48.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/enter-icon.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/filter-btn-pressed.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/filter-btn-pressed@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/filter-btn.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/filter-btn@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/filter-popover.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/filter-popover@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/header-arrow.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/header-arrow@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/header-shadow.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/header-shadow@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/ios-list-transparent.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/ios-list-transparent@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/key-pressed.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/key.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/large-blue-button.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/large-blue-button@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/large-gray-button.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/large-grey-button-pressed.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/large-light-blue-button-pressed.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/large-light-blue-button-pressed@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/large-light-blue-button.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/large-light-blue-button@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/large-red-button.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/large-red-button@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/login-badge-background-SMALL.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/login-badge-background.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/login-badge-strap-SMALL.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/login-badge-strap.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/login-btn-pressed.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/login-btn-pressed@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/login-btn.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/login-btn@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/login-guest-btn-pressed.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/login-guest-btn.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/login-login-btn-pressed.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/login-login-btn.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/login-title-SMALL.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/login-title.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/logout-btn-pressed.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/logout-btn-pressed@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/logout-btn.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/logout-btn@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/need-to-be-logged-in.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/now-btn-pressed.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/now-btn-pressed@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/now-btn.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/now-btn@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/pic-shadow.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/pic-shadow@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/popover-arrow.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/popover-arrow@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/popover-blue-btn.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/popover-blue-btn@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/popover-light-blue-btn.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/popover-light-blue-btn@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/popover-list-border.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/popover-list-border@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/popover-no-arrow-empty.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/popover-no-arrow-empty@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/popover-no-arrow.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/popover-no-arrow@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/refresh-btn-pressed.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/refresh-btn.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/rough_diagonal.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/rough_diagonal_blue.jpg apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/search-clear.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/search-clear@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/search.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/search@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/shift-icon.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/short-key-pressed.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/short-key.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/special-key-pressed.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/special-key.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/star.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/tick.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/tick@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/timeline-bottom-fade.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/timeline-bubble-tooth.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/timeline-bubble-tooth@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/timeline-bubble.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/timeline-bubble@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/timeline-dot.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/timeline-dot@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/timeline-presentation.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/timeline-presentation@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/timeline-top-fade.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/tweet-pressed.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/tweet-pressed@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/tweet.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/tweet@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/view-sessions-btn-pressed.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/view-sessions-btn-pressed@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/view-sessions-btn.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/view-sessions-btn@2x.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/vk-dark-pressed.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/vk-dark.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/vk-hide.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/vk-light-pressed.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/vk-light.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/vk-medium-pressed.png apps/experiments/ConferenceScheduleApp/src/main/resources/com/javafx/experiments/scheduleapp/images/vk-medium.png apps/experiments/DukePad/.idea/artifacts/browser.xml apps/experiments/DukePad/.idea/artifacts/calculator.xml apps/experiments/DukePad/.idea/artifacts/chess.xml apps/experiments/DukePad/.idea/artifacts/clock.xml apps/experiments/DukePad/.idea/artifacts/compass.xml apps/experiments/DukePad/.idea/artifacts/core.xml apps/experiments/DukePad/.idea/artifacts/cubeGame.xml apps/experiments/DukePad/.idea/artifacts/dukepad.xml apps/experiments/DukePad/.idea/artifacts/lockScreen.xml apps/experiments/DukePad/.idea/artifacts/mediaPlayer.xml apps/experiments/DukePad/.idea/artifacts/networking.xml apps/experiments/DukePad/.idea/artifacts/notes.xml apps/experiments/DukePad/.idea/artifacts/settings.xml apps/experiments/DukePad/.idea/artifacts/weather.xml apps/experiments/DukePad/.idea/codeStyleSettings.xml apps/experiments/DukePad/.idea/compiler.xml apps/experiments/DukePad/.idea/copyright/profiles_settings.xml apps/experiments/DukePad/.idea/encodings.xml apps/experiments/DukePad/.idea/libraries/com_pi4j_pi4j_core_0_0_5.xml apps/experiments/DukePad/.idea/libraries/org_eclipse_birt_runtime_org_eclipse_equinox_common_3_6_200_v20130402_1505.xml apps/experiments/DukePad/.idea/libraries/org_eclipse_birt_runtime_org_eclipse_equinox_preferences_3_5_100_v20130422_1538.xml apps/experiments/DukePad/.idea/libraries/org_eclipse_birt_runtime_org_eclipse_osgi_3_9_0_v20130529_1710.xml apps/experiments/DukePad/.idea/libraries/org_glassfish_javax_json_1_0_1.xml apps/experiments/DukePad/.idea/libraries/org_glassfish_tyrus_tyrus_client_1_0.xml apps/experiments/DukePad/.idea/libraries/org_glassfish_tyrus_tyrus_client_1_1.xml apps/experiments/DukePad/.idea/libraries/org_glassfish_tyrus_tyrus_container_grizzly_1_0.xml apps/experiments/DukePad/.idea/misc.xml apps/experiments/DukePad/.idea/modules.xml apps/experiments/DukePad/.idea/runConfigurations/StarterApplication.xml apps/experiments/DukePad/.idea/scopes/scope_settings.xml apps/experiments/DukePad/.idea/uiDesigner.xml apps/experiments/DukePad/.idea/vcs.xml apps/experiments/DukePad/.idea/workspace.xml apps/experiments/DukePad/build.gradle apps/experiments/DukePad/modules/browser/browser.iml apps/experiments/DukePad/modules/browser/src/main/java/com/javafx/experiments/dukepad/browser/BrowserApp.java apps/experiments/DukePad/modules/browser/src/main/java/com/javafx/experiments/dukepad/browser/BrowserUI.java apps/experiments/DukePad/modules/browser/src/main/resources/META-INF/MANIFEST.MF apps/experiments/DukePad/modules/browser/src/main/resources/images/ico-browser.png apps/experiments/DukePad/modules/calculator/calculator.iml apps/experiments/DukePad/modules/calculator/src/main/java/com/javafx/experiments/dukepad/calculator/CalculatorApp.java apps/experiments/DukePad/modules/calculator/src/main/java/com/javafx/experiments/dukepad/calculator/CalculatorTheme.java apps/experiments/DukePad/modules/calculator/src/main/java/com/javafx/experiments/dukepad/calculator/CalculatorUI.java apps/experiments/DukePad/modules/calculator/src/main/resources/META-INF/MANIFEST.MF apps/experiments/DukePad/modules/calculator/src/main/resources/com/javafx/experiments/dukepad/calculator/Calc.css apps/experiments/DukePad/modules/calculator/src/main/resources/images/ico-calc.png apps/experiments/DukePad/modules/chess/chess.iml apps/experiments/DukePad/modules/chess/src/main/java/com/javafx/experiments/dukepad/chess/ChessApp.java apps/experiments/DukePad/modules/chess/src/main/java/com/javafx/experiments/dukepad/chess/ChessUI.java apps/experiments/DukePad/modules/chess/src/main/java/com/javafx/experiments/dukepad/chess/JoinGameMenu.java apps/experiments/DukePad/modules/chess/src/main/java/com/javafx/experiments/dukepad/chess/MainMenu.java apps/experiments/DukePad/modules/chess/src/main/java/com/javafx/experiments/dukepad/chess/NewGameMenu.java apps/experiments/DukePad/modules/chess/src/main/java/com/javafx/experiments/dukepad/chess/client/ChessClient.java apps/experiments/DukePad/modules/chess/src/main/java/com/javafx/experiments/dukepad/chess/client/MessageDecoder.java apps/experiments/DukePad/modules/chess/src/main/java/com/javafx/experiments/dukepad/chess/client/MessageEncoder.java apps/experiments/DukePad/modules/chess/src/main/java/com/javafx/experiments/dukepad/chess/client/RandomChessClient.java apps/experiments/DukePad/modules/chess/src/main/java/com/javafx/experiments/dukepad/chess/client3d/ChessBoard.java apps/experiments/DukePad/modules/chess/src/main/java/com/javafx/experiments/dukepad/chess/client3d/ChessPiece.java apps/experiments/DukePad/modules/chess/src/main/java/com/javafx/experiments/dukepad/chess/client3d/Duke3DModel.java apps/experiments/DukePad/modules/chess/src/main/java/com/javafx/experiments/dukepad/chess/client3d/Utils3D.java apps/experiments/DukePad/modules/chess/src/main/resources/META-INF/MANIFEST.MF apps/experiments/DukePad/modules/chess/src/main/resources/images/ico-chess.png apps/experiments/DukePad/modules/clock/clock.iml apps/experiments/DukePad/modules/clock/src/main/java/com/javafx/experiments/dukepad/clock/ClockApp.java apps/experiments/DukePad/modules/clock/src/main/java/com/javafx/experiments/dukepad/clock/ClockUI.java apps/experiments/DukePad/modules/clock/src/main/resources/META-INF/MANIFEST.MF apps/experiments/DukePad/modules/clock/src/main/resources/images/ico-clock.png apps/experiments/DukePad/modules/compass/compass.iml apps/experiments/DukePad/modules/compass/src/main/java/com/javafx/experiments/dukepad/compass/app/CompassApp.java apps/experiments/DukePad/modules/compass/src/main/java/com/javafx/experiments/dukepad/compass/app/CompassUI.java apps/experiments/DukePad/modules/compass/src/main/java/com/javafx/experiments/dukepad/compass/imu/CalData.java apps/experiments/DukePad/modules/compass/src/main/java/com/javafx/experiments/dukepad/compass/imu/DmpKey.java apps/experiments/DukePad/modules/compass/src/main/java/com/javafx/experiments/dukepad/compass/imu/DmpMap.java apps/experiments/DukePad/modules/compass/src/main/java/com/javafx/experiments/dukepad/compass/imu/IMUConfigurator.java apps/experiments/DukePad/modules/compass/src/main/java/com/javafx/experiments/dukepad/compass/imu/InvMpu.java apps/experiments/DukePad/modules/compass/src/main/java/com/javafx/experiments/dukepad/compass/imu/InvMpuDmpMotionDriver.java apps/experiments/DukePad/modules/compass/src/main/java/com/javafx/experiments/dukepad/compass/imu/Mpu9150.java apps/experiments/DukePad/modules/compass/src/main/java/com/javafx/experiments/dukepad/compass/imu/MpuData.java apps/experiments/DukePad/modules/compass/src/main/java/com/javafx/experiments/dukepad/compass/imu/Quaternion.java apps/experiments/DukePad/modules/compass/src/main/java/com/javafx/experiments/dukepad/compass/utils/DragSupport.java apps/experiments/DukePad/modules/compass/src/main/resources/META-INF/MANIFEST.MF apps/experiments/DukePad/modules/compass/src/main/resources/images/ico-compass.png apps/experiments/DukePad/modules/core/core.iml apps/experiments/DukePad/modules/core/src/main/java/com/javafx/experiments/dukepad/core/AppContainer.java apps/experiments/DukePad/modules/core/src/main/java/com/javafx/experiments/dukepad/core/AppPane.java apps/experiments/DukePad/modules/core/src/main/java/com/javafx/experiments/dukepad/core/AppearanceSettings.java apps/experiments/DukePad/modules/core/src/main/java/com/javafx/experiments/dukepad/core/Base3DDukeApplication.java apps/experiments/DukePad/modules/core/src/main/java/com/javafx/experiments/dukepad/core/BaseDukeApplication.java apps/experiments/DukePad/modules/core/src/main/java/com/javafx/experiments/dukepad/core/BaseSettings.java apps/experiments/DukePad/modules/core/src/main/java/com/javafx/experiments/dukepad/core/CoreActivator.java apps/experiments/DukePad/modules/core/src/main/java/com/javafx/experiments/dukepad/core/DateTimeHelper.java apps/experiments/DukePad/modules/core/src/main/java/com/javafx/experiments/dukepad/core/DukeApplication.java apps/experiments/DukePad/modules/core/src/main/java/com/javafx/experiments/dukepad/core/EasyGrid.java apps/experiments/DukePad/modules/core/src/main/java/com/javafx/experiments/dukepad/core/Fonts.java apps/experiments/DukePad/modules/core/src/main/java/com/javafx/experiments/dukepad/core/HomeScreen.java apps/experiments/DukePad/modules/core/src/main/java/com/javafx/experiments/dukepad/core/LockScreen.java apps/experiments/DukePad/modules/core/src/main/java/com/javafx/experiments/dukepad/core/Page.java apps/experiments/DukePad/modules/core/src/main/java/com/javafx/experiments/dukepad/core/PageContainer.java apps/experiments/DukePad/modules/core/src/main/java/com/javafx/experiments/dukepad/core/PageNavigationBar.java apps/experiments/DukePad/modules/core/src/main/java/com/javafx/experiments/dukepad/core/Palette.java apps/experiments/DukePad/modules/core/src/main/java/com/javafx/experiments/dukepad/core/Root.java apps/experiments/DukePad/modules/core/src/main/java/com/javafx/experiments/dukepad/core/Settings.java apps/experiments/DukePad/modules/core/src/main/resources/DukePadTheme.css apps/experiments/DukePad/modules/core/src/main/resources/META-INF/MANIFEST.MF apps/experiments/DukePad/modules/core/src/main/resources/images/01.jpg apps/experiments/DukePad/modules/core/src/main/resources/images/01thumb.png apps/experiments/DukePad/modules/core/src/main/resources/images/02.jpg apps/experiments/DukePad/modules/core/src/main/resources/images/02thumb.png apps/experiments/DukePad/modules/core/src/main/resources/images/03.jpg apps/experiments/DukePad/modules/core/src/main/resources/images/03thumb.png apps/experiments/DukePad/modules/core/src/main/resources/images/04.jpg apps/experiments/DukePad/modules/core/src/main/resources/images/04thumb.png apps/experiments/DukePad/modules/core/src/main/resources/images/05.jpg apps/experiments/DukePad/modules/core/src/main/resources/images/05thumb.png apps/experiments/DukePad/modules/core/src/main/resources/images/background-with-gripper.jpg apps/experiments/DukePad/modules/core/src/main/resources/images/background.jpg apps/experiments/DukePad/modules/core/src/main/resources/images/background2.jpg apps/experiments/DukePad/modules/core/src/main/resources/images/home-bar-small.png apps/experiments/DukePad/modules/core/src/main/resources/images/home-bar.png apps/experiments/DukePad/modules/core/src/main/resources/images/java-logo.png apps/experiments/DukePad/modules/core/src/main/resources/images/under-construction.png apps/experiments/DukePad/modules/core/src/main/resources/images/wifi-strength-placeholder.png apps/experiments/DukePad/modules/cubeGame/cubeGame.iml apps/experiments/DukePad/modules/cubeGame/src/main/java/com/javafx/experiments/dukepad/cubeGame/CubeGameApp.java apps/experiments/DukePad/modules/cubeGame/src/main/java/com/javafx/experiments/dukepad/cubeGame/CubeGameUI.java apps/experiments/DukePad/modules/cubeGame/src/main/java/com/javafx/experiments/dukepad/cubeGame/FancyBox3D.java apps/experiments/DukePad/modules/cubeGame/src/main/java/com/javafx/experiments/dukepad/cubeGame/MagicCube.java apps/experiments/DukePad/modules/cubeGame/src/main/java/com/javafx/experiments/dukepad/cubeGame/MagicCubePlayer.java apps/experiments/DukePad/modules/cubeGame/src/main/java/com/javafx/experiments/dukepad/cubeGame/utils/DragSupport.java apps/experiments/DukePad/modules/cubeGame/src/main/resources/META-INF/MANIFEST.MF apps/experiments/DukePad/modules/cubeGame/src/main/resources/images/RubixCubeTexture-color.png apps/experiments/DukePad/modules/cubeGame/src/main/resources/images/RubixCubeTexture-normal-map.png apps/experiments/DukePad/modules/cubeGame/src/main/resources/images/RubixCubeTexture.png apps/experiments/DukePad/modules/cubeGame/src/main/resources/images/ico-cube.png apps/experiments/DukePad/modules/lockScreen/lockScreen.iml apps/experiments/DukePad/modules/lockScreen/src/main/java/com/javafx/experiments/dukepad/lockScreen/LockScreenApp.java apps/experiments/DukePad/modules/lockScreen/src/main/resources/META-INF/MANIFEST.MF apps/experiments/DukePad/modules/lockScreen/src/main/resources/desktop.jpg apps/experiments/DukePad/modules/lockScreen/src/main/resources/images/Inner.png apps/experiments/DukePad/modules/lockScreen/src/main/resources/images/Outer.png apps/experiments/DukePad/modules/lockScreen/src/main/resources/images/Ticks.png apps/experiments/DukePad/modules/lockScreen/src/main/resources/images/ico-lock.png apps/experiments/DukePad/modules/lockScreen/src/main/resources/images/lock-screen-background.jpg apps/experiments/DukePad/modules/mediaPlayer/mediaPlayer.iml apps/experiments/DukePad/modules/mediaPlayer/src/main/java/com/javafx/experiments/dukepad/mediaPlayer/MediaFolder.java apps/experiments/DukePad/modules/mediaPlayer/src/main/java/com/javafx/experiments/dukepad/mediaPlayer/MediaPlayerApp.java apps/experiments/DukePad/modules/mediaPlayer/src/main/java/com/javafx/experiments/dukepad/mediaPlayer/MediaPlayerUI.java apps/experiments/DukePad/modules/mediaPlayer/src/main/java/com/javafx/experiments/dukepad/mediaPlayer/MovieFullScreen.java apps/experiments/DukePad/modules/mediaPlayer/src/main/java/com/javafx/experiments/dukepad/mediaPlayer/MusicPane.java apps/experiments/DukePad/modules/mediaPlayer/src/main/java/com/javafx/experiments/dukepad/mediaPlayer/MusicPlayer.java apps/experiments/DukePad/modules/mediaPlayer/src/main/java/com/javafx/experiments/dukepad/mediaPlayer/PhotosFullScreen.java apps/experiments/DukePad/modules/mediaPlayer/src/main/resources/META-INF/MANIFEST.MF apps/experiments/DukePad/modules/mediaPlayer/src/main/resources/images/fs-close.png apps/experiments/DukePad/modules/mediaPlayer/src/main/resources/images/fs-left.png apps/experiments/DukePad/modules/mediaPlayer/src/main/resources/images/fs-pause.png apps/experiments/DukePad/modules/mediaPlayer/src/main/resources/images/fs-play.png apps/experiments/DukePad/modules/mediaPlayer/src/main/resources/images/fs-right.png apps/experiments/DukePad/modules/mediaPlayer/src/main/resources/images/fs-vol-down.png apps/experiments/DukePad/modules/mediaPlayer/src/main/resources/images/fs-vol-up.png apps/experiments/DukePad/modules/mediaPlayer/src/main/resources/images/ico-media.png apps/experiments/DukePad/modules/mediaPlayer/src/main/resources/images/pause.png apps/experiments/DukePad/modules/mediaPlayer/src/main/resources/images/play.png apps/experiments/DukePad/modules/mediaPlayer/src/main/resources/images/thumb-rect.png apps/experiments/DukePad/modules/mediaPlayer/src/main/resources/images/volume-down.png apps/experiments/DukePad/modules/mediaPlayer/src/main/resources/images/volume-up.png apps/experiments/DukePad/modules/networking/networking.iml apps/experiments/DukePad/modules/networking/src/main/java/com/javafx/experiments/dukepad/networking/EthernetManager.java apps/experiments/DukePad/modules/networking/src/main/java/com/javafx/experiments/dukepad/networking/NetworkInterface.java apps/experiments/DukePad/modules/networking/src/main/java/com/javafx/experiments/dukepad/networking/NetworkSettings.java apps/experiments/DukePad/modules/networking/src/main/java/com/javafx/experiments/dukepad/networking/OutputListener.java apps/experiments/DukePad/modules/networking/src/main/java/com/javafx/experiments/dukepad/networking/WifiManager.java apps/experiments/DukePad/modules/networking/src/main/java/com/javafx/experiments/dukepad/networking/WifiSignalStrength.java apps/experiments/DukePad/modules/networking/src/main/java/com/javafx/experiments/dukepad/networking/command/Command.java apps/experiments/DukePad/modules/networking/src/main/java/com/javafx/experiments/dukepad/networking/command/ConfigureWifiCommands.java apps/experiments/DukePad/modules/networking/src/main/java/com/javafx/experiments/dukepad/networking/command/IfconfigCommand.java apps/experiments/DukePad/modules/networking/src/main/java/com/javafx/experiments/dukepad/networking/command/IwconfigCommand.java apps/experiments/DukePad/modules/networking/src/main/java/com/javafx/experiments/dukepad/networking/command/IwlistCommand.java apps/experiments/DukePad/modules/networking/src/main/java/com/javafx/experiments/dukepad/networking/command/package.html apps/experiments/DukePad/modules/networking/src/main/java/com/javafx/experiments/dukepad/networking/worker/BaseCommandTask.java apps/experiments/DukePad/modules/networking/src/main/java/com/javafx/experiments/dukepad/networking/worker/CommandService.java apps/experiments/DukePad/modules/networking/src/main/java/com/javafx/experiments/dukepad/networking/worker/CommandTask.java apps/experiments/DukePad/modules/networking/src/main/java/com/javafx/experiments/dukepad/networking/worker/ConfigureWifiTask.java apps/experiments/DukePad/modules/networking/src/main/java/com/javafx/experiments/dukepad/networking/worker/GetNetworkInterfacesTask.java apps/experiments/DukePad/modules/networking/src/main/java/com/javafx/experiments/dukepad/networking/worker/GetSSIDTask.java apps/experiments/DukePad/modules/networking/src/main/java/com/javafx/experiments/dukepad/networking/worker/GetWifiSignalStrengthTask.java apps/experiments/DukePad/modules/networking/src/main/java/com/javafx/experiments/dukepad/networking/worker/JobModel.java apps/experiments/DukePad/modules/networking/src/main/java/com/javafx/experiments/dukepad/networking/worker/PollNetworkInterfacesService.java apps/experiments/DukePad/modules/networking/src/main/java/com/javafx/experiments/dukepad/networking/worker/PollWifiSignalStrengthService.java apps/experiments/DukePad/modules/networking/src/main/java/com/javafx/experiments/dukepad/networking/worker/package.html apps/experiments/DukePad/modules/networking/src/main/resources/META-INF/MANIFEST.MF apps/experiments/DukePad/modules/notes/notes.iml apps/experiments/DukePad/modules/notes/src/main/java/com/javafx/experiments/dukepad/notes/NotesApp.java apps/experiments/DukePad/modules/notes/src/main/java/com/javafx/experiments/dukepad/notes/NotesUI.java apps/experiments/DukePad/modules/notes/src/main/resources/META-INF/MANIFEST.MF apps/experiments/DukePad/modules/notes/src/main/resources/com/javafx/experiments/dukepad/notes/Notes.css apps/experiments/DukePad/modules/notes/src/main/resources/com/javafx/experiments/dukepad/notes/Notes.fxml apps/experiments/DukePad/modules/notes/src/main/resources/images/ico-notes.png apps/experiments/DukePad/modules/settings/settings.iml apps/experiments/DukePad/modules/settings/src/main/java/com/javafx/experiments/dukepad/settings/SettingsApp.java apps/experiments/DukePad/modules/settings/src/main/resources/META-INF/MANIFEST.MF apps/experiments/DukePad/modules/settings/src/main/resources/images/ico-settings.png apps/experiments/DukePad/modules/settings/src/main/resources/images/power.png apps/experiments/DukePad/modules/weather/src/main/java/com/javafx/experiments/dukepad/weather/WeatherApp.java apps/experiments/DukePad/modules/weather/src/main/java/com/javafx/experiments/dukepad/weather/WeatherUI.java apps/experiments/DukePad/modules/weather/src/main/resources/META-INF/MANIFEST.MF apps/experiments/DukePad/modules/weather/src/main/resources/images/ico-weather.png apps/experiments/DukePad/modules/weather/weather.iml apps/experiments/DukePad/settings.gradle apps/experiments/DukePad/starter/src/main/java/com/javafx/experiments/dukepad/starter/StarterApplication.java apps/experiments/DukePad/starter/src/main/resources/Duke-Startup.jpg apps/experiments/DukePad/starter/src/main/resources/META-INF/MANIFEST.MF apps/experiments/DukePad/starter/starter.iml apps/experiments/ModenaTest/lib/readme.txt apps/experiments/ModenaTest/manifest.mf apps/experiments/ModenaTest/nbproject/build-impl.xml apps/experiments/ModenaTest/nbproject/genfiles.properties apps/experiments/ModenaTest/nbproject/project.properties apps/experiments/ModenaTest/nbproject/project.xml apps/experiments/ModenaTest/readme.txt apps/experiments/ModenaTest/test/modenatest/ModenaTest.java apps/experiments/PtyConsole/README.txt apps/experiments/PtyConsole/build.xml apps/experiments/PtyConsole/manifest.mf apps/experiments/PtyConsole/native/Makefile apps/experiments/PtyConsole/native/pty.c apps/experiments/PtyConsole/native/pty_fork.c apps/experiments/PtyConsole/native/pty_fork.h apps/experiments/PtyConsole/nbproject/build-impl.xml apps/experiments/PtyConsole/nbproject/genfiles.properties apps/experiments/PtyConsole/nbproject/project.properties apps/experiments/PtyConsole/nbproject/project.xml apps/experiments/PtyConsole/src/ptyconsole/App.java apps/experiments/PtyConsole/src/ptyconsole/PTY.java apps/experiments/PtyConsole/src/ptyconsole/PtyConsole.java apps/experiments/WebTerminal/.ant-targets-build.xml apps/experiments/WebTerminal/README.txt apps/experiments/WebTerminal/build.xml apps/experiments/WebTerminal/manifest.mf apps/experiments/WebTerminal/nbproject/build-impl.xml apps/experiments/WebTerminal/nbproject/genfiles.properties apps/experiments/WebTerminal/nbproject/project.properties apps/experiments/WebTerminal/nbproject/project.xml apps/experiments/WebTerminal/src/webterminal/NodeWriter.java apps/experiments/WebTerminal/src/webterminal/RunInConsole.java apps/experiments/WebTerminal/src/webterminal/ShellConsole.java apps/experiments/WebTerminal/src/webterminal/WTDebug.java apps/experiments/WebTerminal/src/webterminal/WebOutputStream.java apps/experiments/WebTerminal/src/webterminal/WebTerminal.java apps/experiments/WebTerminal/src/webterminal/WebWriter.java apps/experiments/WebTerminal/src/webterminal/repl.html apps/experiments/WebTerminal/src/webterminal/repl.xml apps/experiments/WebTerminal/terminfo/j/jfxterm apps/experiments/WebTerminal/terminfo/j/jfxterm.ti apps/experiments/WebTerminal/terminfo/j/xjfxterm.ti apps/experiments/WebTerminal/util/hcat apps/experiments/WebTerminal/util/myemacs apps/experiments/build.xml modules/javafx.base/src/main/java-jfr/com/sun/javafx/logging/JFRInputEvent.java modules/javafx.base/src/main/java-jfr/com/sun/javafx/logging/JFRLogger.java modules/javafx.base/src/main/java-jfr/com/sun/javafx/logging/JFRPulseEvent.java modules/javafx.web/src/main/native/Source/WebCore/bridge/jni/jni_jsobject.mm modules/javafx.web/src/main/native/Source/WebCore/bridge/jni/jni_objc.mm
diffstat 623 files changed, 1948 insertions(+), 50061 deletions(-) [+]
line wrap: on
line diff
--- a/.hgtags	Wed Mar 07 12:42:40 2018 -0800
+++ b/.hgtags	Thu Mar 08 04:57:31 2018 -0800
@@ -473,6 +473,7 @@
 3932162186a7b4c53945256818eb7723d1b6a71e jdk-10+34
 90773bfb2a58cce7c1aede30cc47f28cb9c53fe6 jdk-10+35
 674513271a88e51bcd2fb598634519d5f5f46270 jdk-10+36
+afed83541a56745884906842049658b84f1c2650 jdk-11+0
 afed83541a56745884906842049658b84f1c2650 jdk-10+37
 14621a723393fd1f6fc79f5445d8d6cdba8917c0 jdk-10+38
 b43e44ecc365e7ed2063bcdbf60152cbd5e28e5a jdk-10+39
@@ -480,6 +481,10 @@
 401d510e1b3a1bb34e68afe58a0de529087bbb6d jdk-10+41
 1d6be9481c6304a5cb1d85c78a25021425f33e7a jdk-10+42
 648d92cb88819d5718699c48480a0dec5d24e581 jdk-10+43
+31c320bdc3a9712d8b4df58e657271104b33e063 jdk-11+1
 d4868b8fd76f3a68c3b6be6622d09fe5ad7f2833 jdk-10+44
+f8b0d53d9542f12bbf488c02e32ed16b57e3d099 jdk-11+2
 16bbff0c695c78b45dfa14ffac42e222bf055139 jdk-10+45
+375aedc5702a5ea36a8740e8b04164df8ac3198e jdk-11+3
 1156c4991681b1383c5ee5b3b75e95587726f510 jdk-10+46
+ccf8cc465b843d2ace703f20fb1c6225288cf9cc jdk-11+4
--- a/.idea/base.iml	Wed Mar 07 12:42:40 2018 -0800
+++ b/.idea/base.iml	Thu Mar 08 04:57:31 2018 -0800
@@ -8,7 +8,6 @@
       <sourceFolder url="file://$MODULE_DIR$/modules/javafx.base/src/main/resources" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/modules/javafx.base/src/test/java" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/modules/javafx.base/src/test/resources" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/modules/javafx.base/src/main/java-jfr" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/modules/javafx.base/build/gensrc/java" isTestSource="false" />
       <excludeFolder url="file://$MODULE_DIR$/modules/javafx.base/build/classes" />
       <excludeFolder url="file://$MODULE_DIR$/modules/javafx.base/build/dependency-cache" />
@@ -20,4 +19,4 @@
     <orderEntry type="inheritedJdk" />
     <orderEntry type="library" scope="TEST" name="junit4" level="application" />
   </component>
-</module>
\ No newline at end of file
+</module>
--- a/apps/build.xml	Wed Mar 07 12:42:40 2018 -0800
+++ b/apps/build.xml	Thu Mar 08 04:57:31 2018 -0800
@@ -8,7 +8,6 @@
 
     <target name="sampleAppsJar">
         <ant dir="samples" target="jar" inheritAll="true"/>
-        <ant dir="experiments" target="jar" inheritAll="true"/>
         <ant dir="performance" target="jar" inheritAll="true"/>
         <ant dir="toys" target="jar" inheritAll="true"/>
         <ant dir="tests" target="jar" inheritAll="true"/>
@@ -16,7 +15,6 @@
 
     <target name="sampleAppsClean">
         <ant dir="samples" target="clean" inheritAll="true"/>
-        <ant dir="experiments" target="clean" inheritAll="true"/>
         <ant dir="performance" target="clean" inheritAll="true"/>
         <ant dir="toys" target="clean" inheritAll="true"/>
         <ant dir="tests" target="clean" inheritAll="true"/>
--- a/apps/experiments/.classpath	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-    <!--
-    <classpathentry kind="src" path="Chess/ChessLibrary/src/main/java"/>
-    -->
-    <classpathentry combineaccessrules="false" kind="src" path="/rt">
-      <attributes>
-        <attribute name="optional" value="true"/>
-      </attributes>
-    </classpathentry>
-    <classpathentry kind="output" path="bin"/>
-</classpath>
\ No newline at end of file
--- a/apps/experiments/.project	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>experiments</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
--- a/apps/experiments/Chess/ChessLibrary/nb-configuration.xml	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project-shared-configuration>
-    <!--
-This file contains additional configuration written by modules in the NetBeans IDE.
-The configuration is intended to be shared among all the users of project and
-therefore it is assumed to be part of version control checkout.
-Without this configuration present, some functionality in the IDE may be limited or fail altogether.
--->
-    <properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1">
-        <!--
-Properties that influence various parts of the IDE, especially code formatting and the like. 
-You can copy and paste the single properties, into the pom.xml file and the IDE will pick them up.
-That way multiple projects can share the same settings (useful for formatting rules for example).
-Any value defined here will override the pom.xml file value but is only applicable to the current project.
--->
-        <netbeans.hint.j2eeVersion>1.7-web</netbeans.hint.j2eeVersion>
-    </properties>
-</project-shared-configuration>
--- a/apps/experiments/Chess/ChessLibrary/pom.xml	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <groupId>com.oracle.chess</groupId>
-    <artifactId>ChessLibrary</artifactId>
-    <version>1.0-SNAPSHOT</version>
-    <packaging>jar</packaging>
-
-    <parent>
-        <groupId>com.oracle.chess</groupId>
-        <artifactId>Chess</artifactId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
-
-    <name>ChessLibrary</name>
-
-    <properties>
-        <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    </properties>
-    
-    <dependencies>
-        <dependency>
-            <groupId>javax</groupId>
-            <artifactId>javaee-web-api</artifactId>
-            <version>7.0</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.10</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.glassfish</groupId>
-            <artifactId>javax.json</artifactId>
-            <version>1.0.1</version>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.1</version>
-                <configuration>
-                    <source>1.7</source>
-                    <target>1.7</target>
-                    <compilerArguments>
-                        <endorseddirs>${endorsed.dir}</endorseddirs>
-                    </compilerArguments>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-war-plugin</artifactId>
-                <version>2.3</version>
-                <configuration>
-                    <failOnMissingWebXml>false</failOnMissingWebXml>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-dependency-plugin</artifactId>
-                <version>2.6</version>
-                <executions>
-                    <execution>
-                        <phase>validate</phase>
-                        <goals>
-                            <goal>copy</goal>
-                        </goals>
-                        <configuration>
-                            <outputDirectory>${endorsed.dir}</outputDirectory>
-                            <silent>true</silent>
-                            <artifactItems>
-                                <artifactItem>
-                                    <groupId>javax</groupId>
-                                    <artifactId>javaee-endorsed-api</artifactId>
-                                    <version>7.0</version>
-                                    <type>jar</type>
-                                </artifactItem>
-                            </artifactItems>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-
-</project>
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/model/Bishop.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,138 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.model;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Bishop class.
- *
- */
-public final class Bishop extends Piece {
-
-    protected Bishop(Color color) {
-        super(color);
-    }
-
-    @Override
-    public boolean isValidMove(int x1, int y1, int x2, int y2) {
-        if (!super.isValidMove(x1, y1, x2, y2)) {
-            return false;
-        }
-        return Math.abs(x2 - x1) == Math.abs(y2 - y1);
-    }
-
-    @Override
-    public String toNotation() {
-        return "B";
-    }
-
-    @Override
-    public List<Point> generatePath(Point from, Point to) throws GameException {
-        if (!isValidMove(from, to)) {
-            throw new GameException(this, from, to);
-        }
-
-        int x, y;
-        final List<Point> path = new ArrayList<>();
-        if (from.getX() >= to.getX()) {
-            if (from.getY() >= to.getY()) {
-                // (-,-)
-                for (x = from.getX() - 1, y = from.getY() - 1; x > to.getX() && y > to.getY(); x--, y--) {
-                    path.add(Point.fromXY(x, y));
-                }
-            } else {
-                // (-,+)
-                for (x = from.getX() - 1, y = from.getY() + 1; x > to.getX() && y < to.getY(); x--, y++) {
-                    path.add(Point.fromXY(x, y));
-                }
-            }
-        } else {
-            if (from.getY() >= to.getY()) {
-                // (+,-)
-                for (x = from.getX() + 1, y = from.getY() - 1; x < to.getX() && y > to.getY(); x++, y--) {
-                    path.add(Point.fromXY(x, y));
-                }
-            } else {
-                // (+,+)
-                for (x = from.getX() + 1, y = from.getY() + 1; x < to.getX() && y < to.getY(); x++, y++) {
-                    path.add(Point.fromXY(x, y));
-                }
-            }
-        }
-        return path;
-    }
-
-    @Override
-    public List<Point> generateMoves(Point from, Board board) {
-        int x, y;
-        final List<Point> moves = new ArrayList<>();
-
-        // (+, +)
-        x = from.getX() + 1;
-        y = from.getY() + 1;
-        while (x < Board.N_SQUARES && y < Board.N_SQUARES) {
-            final Point to = Point.fromXY(x, y);
-            if (isLegalMove(from, to, board)) {
-                moves.add(to);
-            }
-            x++; y++;
-        }
-        // (+, -)
-        x = from.getX() + 1;
-        y = from.getY() - 1;
-        while (x < Board.N_SQUARES && y >= 0) {
-            final Point to = Point.fromXY(x, y);
-            if (isLegalMove(from, to, board)) {
-                moves.add(to);
-            }
-            x++; y--;
-        }
-        // (-, +)
-        x = from.getX() - 1;
-        y = from.getY() + 1;
-        while (x >= 0 && y < Board.N_SQUARES) {
-            final Point to = Point.fromXY(x, y);
-            if (isLegalMove(from, to, board)) {
-                moves.add(to);
-            }
-            x--; y++;
-        }
-        // (-, -)
-        x = from.getX() - 1;
-        y = from.getY() - 1;
-        while (x >= 0 && y >= 0) {
-            final Point to = Point.fromXY(x, y);
-            if (isLegalMove(from, to, board)) {
-                moves.add(to);
-            }
-            x--; y--;
-        }
-        return moves;
-    }
-
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/model/Board.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,407 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.model;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.NoSuchElementException;
-
-import static com.oracle.chess.model.Piece.*;
-
-/**
- * Board class.
- *
- */
-public final class Board {
-
-    public static final int N_SQUARES = 8;
-
-    private static final Piece[] WHITE_ROW = {
-        WHITE_ROOK, WHITE_KNIGHT, WHITE_BISHOP, WHITE_QUEEN,
-        WHITE_KING, WHITE_BISHOP, WHITE_KNIGHT, WHITE_ROOK };
-
-    private static final Piece[] BLACK_ROW = {
-        BLACK_ROOK, BLACK_KNIGHT, BLACK_BISHOP, BLACK_QUEEN,
-        BLACK_KING, BLACK_BISHOP, BLACK_KNIGHT, BLACK_ROOK };
-
-    /**
-     * Board is comprised of 8x8 squares.
-     */
-    private Square[][] squares = new Square[N_SQUARES][N_SQUARES];
-
-    /**
-     * Square of white king on the board.
-     */
-    private Square whiteKing;
-
-    /**
-     * Square of black king on the board.
-     */
-    private Square blackKing;
-
-    /**
-     * List of moves made so far.
-     */
-    private List<Move> moves = new ArrayList<>();
-
-    public Board() {
-        initialize();
-    }
-
-    public void initialize() {
-        // Init white pieces on board
-        for (int x = 0; x < N_SQUARES; x++) {
-            squares[x][0] = new Square(x, 0, WHITE_ROW[x]);
-            if (WHITE_ROW[x] == WHITE_KING) {
-                whiteKing = squares[x][0];
-            }
-        }
-        for (int x = 0; x < N_SQUARES; x++) {
-            squares[x][1] = new Square(x, 1, WHITE_PAWN);
-        }
-
-        // Init black pieces on board
-        for (int x = 0; x < N_SQUARES; x++) {
-            squares[x][7] = new Square(x, 7, BLACK_ROW[x]);
-            if (BLACK_ROW[x] == BLACK_KING) {
-                blackKing = squares[x][7];
-            }
-        }
-        for (int x = 0; x < N_SQUARES; x++) {
-            squares[x][6] = new Square(x, 6, BLACK_PAWN);
-        }
-
-        // Init all other empty squares
-        for (int y = 2; y <= 5; y++) {
-            for (int x = 0; x < N_SQUARES; x++) {
-                squares[x][y] = new Square(x, y);
-            }
-        }
-    }
-
-    public List<Move> getMoves() {
-        return moves;
-    }
-
-    public void setMoves(List<Move> moves) {
-        this.moves = moves;
-    }
-
-    public Move getLastMove() {
-        return moves.isEmpty() ? null : moves.get(moves.size() - 1);
-    }
-
-    public void doMove(Move move) {
-        final Point from = move.getFrom();
-        final Point to = move.getTo();
-        final Piece piece = move.getPiece();
-
-        // Carry out the move on the board
-        squares[from.getX()][from.getY()].setPiece(null);
-        move.setCaptured(squares[to.getX()][to.getY()].getPiece());
-        squares[to.getX()][to.getY()].setPiece(piece);
-
-        // Keep track of the kings
-        if (piece == WHITE_KING) {
-            whiteKing = squares[to.getX()][to.getY()];
-        } else if (piece == BLACK_KING) {
-            blackKing = squares[to.getX()][to.getY()];
-        }
-
-        // Check for castling first
-        if (move.isLeftCastling()) {
-            if (piece.getColor() == Color.W) {
-                setPiece(null, King.W_LEFT_ROOK);
-                setPiece(Piece.WHITE_ROOK, to.incrementX(1));
-            } else {
-                setPiece(null, King.B_LEFT_ROOK);
-                setPiece(Piece.BLACK_ROOK, to.incrementX(1));
-            }
-        } else if (move.isRightCastling()) {
-            if (piece.getColor() == Color.W) {
-                setPiece(null, King.W_RIGHT_ROOK);
-                setPiece(Piece.WHITE_ROOK, to.decrementX(1));
-            } else {
-                setPiece(null, King.B_RIGHT_ROOK);
-                setPiece(Piece.BLACK_ROOK, to.decrementX(1));
-            }
-        } else {
-            // Check for pawn promotions
-            if (piece.isPromoted(to)) {
-                setPiece(piece.getColor().getQueen(), to);
-                move.setPromoted(true);
-            }
-
-            // En passant?
-            final Move lastMove = getLastMove();
-            if (move.isEnPassantAllowed(lastMove)) {
-                final Point lastTo = lastMove.getTo();
-                move.setEnPassant(true);
-                move.setCaptured(squares[lastTo.getX()][lastTo.getY()].getPiece());
-                squares[lastTo.getX()][lastTo.getY()].setPiece(null);
-            }
-        }
-
-        // Record last move
-        moves.add(move);
-    }
-
-    public void undoLastMove() {
-        // Check that we have a move to undo
-        if (moves.isEmpty()) {
-            throw new InternalError("No move available to undo");
-        }
-
-        final Move lastMove = getLastMove();
-        final Point from = lastMove.getFrom();
-        final Point to = lastMove.getTo();
-        final Piece piece = lastMove.getPiece();
-
-        squares[from.getX()][from.getY()].setPiece(piece);
-
-        if (lastMove.isLeftCastling()) {
-            squares[to.getX()][to.getY()].setPiece(null);
-            if (piece.getColor() == Color.W) {
-                setPiece(Piece.WHITE_ROOK, King.W_LEFT_ROOK);
-                setPiece(null, to.incrementX(1));
-            } else {
-                setPiece(Piece.BLACK_ROOK, King.B_LEFT_ROOK);
-                setPiece(null, to.incrementX(1));
-            }
-        } else if (lastMove.isRightCastling()) {
-            squares[to.getX()][to.getY()].setPiece(null);
-            if (piece.getColor() == Color.W) {
-                setPiece(Piece.WHITE_ROOK, King.W_RIGHT_ROOK);
-                setPiece(null, to.decrementX(1));
-            } else {
-                setPiece(Piece.BLACK_ROOK, King.B_RIGHT_ROOK);
-                setPiece(null, to.decrementX(1));
-            }
-        } else {
-            final Piece captured = lastMove.getCaptured();
-
-            // Undoing an en passant move?
-            if (lastMove.isEnPassant()) {
-                if (captured.getColor() == Color.B) {
-                    squares[to.getX()][to.getY() - 1].setPiece(captured);
-                } else {
-                    squares[to.getX()][to.getY() + 1].setPiece(captured);
-                }
-                squares[to.getX()][to.getY()].setPiece(null);
-            } else {
-                squares[to.getX()][to.getY()].setPiece(captured);
-            }
-
-            // Keep track of the kings
-            if (piece == WHITE_KING) {
-                whiteKing = squares[from.getX()][from.getY()];
-            } else if (piece == BLACK_KING) {
-                blackKing = squares[from.getX()][from.getY()];
-            }
-        }
-
-        // Remove move from history
-        moves.remove(moves.size() - 1);
-    }
-
-    public boolean hasPiecedMoved(Point from) {
-        for (Move move : moves) {
-            if (move.getFrom().equals(from)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    public Piece getPiece(Point p) {
-        return squares[p.getX()][p.getY()].getPiece();
-    }
-
-    public boolean hasPiece(Point p) {
-        return squares[p.getX()][p.getY()].getPiece() != null;
-    }
-
-    public Square getSquare(Point p) {
-        return squares[p.getX()][p.getY()];
-    }
-
-    public boolean hasColoredPiece(Point p, Color color) {
-        return hasPiece(p) && getPiece(p).getColor() == color;
-    }
-
-    public Square getKingSquare(Color color) {
-        return color == Color.W ? whiteKing : blackKing;
-    }
-
-    public void clear() {
-        for (int x = 0; x < N_SQUARES; x++) {
-            for (int y = 0; y < N_SQUARES; y++) {
-                squares[x][y] = new Square(x, y);
-            }
-        }
-
-        // Need at least the kings on the board
-        final Point wk = Point.fromXY(4, 0);
-        whiteKing = squares[wk.getX()][wk.getY()] = new Square(wk, WHITE_KING);
-        final Point bk = Point.fromXY(4, 7);
-        blackKing = squares[bk.getX()][bk.getY()] = new Square(bk, BLACK_KING);
-    }
-
-    public void setPiece(Piece piece, Point p) {
-        final Square sq = squares[p.getX()][p.getY()];
-        sq.setPiece(piece);
-
-        // Keep track of the kings
-        if (piece == WHITE_KING && whiteKing != sq) {
-            whiteKing.setPiece(null);
-            whiteKing = sq;
-        } else if (piece == BLACK_KING && blackKing != sq) {
-            blackKing.setPiece(null);
-            blackKing = sq;
-        }
-    }
-
-    public Iterator<Square> getIterator(final Color filter) {
-        return new Iterator<Square>() {
-            private static final int TOTAL_SQUARES = N_SQUARES * N_SQUARES;
-
-            private Color color = filter;
-
-            private int lastK = 0;
-
-            private Square next = null;
-
-            private Square findNext() {
-                int k;
-                for (k = lastK; k < TOTAL_SQUARES; k++) {
-                    final Point p = Point.fromXY(k % N_SQUARES, k / N_SQUARES);
-                    if (hasColoredPiece(p, color)) {
-                        lastK = k + 1;
-                        return getSquare(p);
-                    }
-                }
-                lastK = k;
-                return null;
-            }
-
-            @Override
-            public boolean hasNext() {
-                if (next == null) {
-                    next = findNext();
-                }
-                return next != null;
-            }
-
-            @Override
-            public Square next() {
-                if (next == null) {
-                    findNext();
-                    if (next == null) {
-                        throw new NoSuchElementException("No more pieces on the board");
-                    }
-                }
-                final Square result = next;
-                next = null;
-                return result;
-            }
-
-            @Override
-            public void remove() {
-                throw new UnsupportedOperationException("Not supported yet.");
-            }
-        };
-    }
-
-    List<Point> queryMoves(Point from) {
-        final Piece piece = getPiece(from);
-        return piece.generateMoves(from, this);
-    }
-
-    /**
-     * Determines if the king of <code>color</code> is in check or not.
-     *
-     * @param color King's color.
-     * @return Result of in-check test.
-     */
-    public boolean isKingAttacked(Color color) {
-        final Point toKing = getKingSquare(color).getPoint();
-        return kingAttackers(color, toKing) != null;
-    }
-
-    /**
-     * Determines if the king of <code>color</code> is in check or not
-     * after moving to <code>toKing</code>.
-     *
-     * @param color King's color.
-     * @param toKing King's location on the board.
-     * @return Result of in-check test.
-     */
-    public boolean isKingAttacked(Color color, Point toKing) {
-        return kingAttackers(color, toKing) != null;
-    }
-
-    /**
-     * Returns the list of pieces that are attacking the king of <code>color</code> or
-     * <code>null</null> if king is not in check.
-     *
-     * @param color King's color.
-     * @param toKing King's location on the board.
-     * @return The list of pieces attacking king or <code>null</code> if not in check.
-     */
-    public List<Square> kingAttackers(Color color, Point toKing) {
-        List<Square> result = null;
-        final Color opponent = color.getOpponentColor();
-        Iterator<Square> iter = getIterator(opponent);
-        while (iter.hasNext()) {
-            final Square square = iter.next();
-            if (square.getPiece().isLegalMove(square.getPoint(), toKing, this)) {
-                if (result == null) {
-                    result = new ArrayList<>();
-                }
-                result.add(square);
-            }
-        }
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        final StringBuffer sb = new StringBuffer();
-        sb.append("+---+---+---+---+---+---+---+---+\n");
-        for (int y = N_SQUARES - 1; y >=0; y--) {
-            sb.append("|");
-            for (int x = 0; x < N_SQUARES; x++) {
-                sb.append(squares[x][y]).append("|");
-            }
-            sb.append("\n");
-            sb.append("+---+---+---+---+---+---+---+---+\n");
-        }
-        return sb.toString();
-    }
-
-
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/model/Color.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.model;
-
-/**
- * Color enumeration.
- *
- */
-public enum Color {
-
-    W {
-        @Override
-        public King getKing() {
-            return Piece.WHITE_KING;
-        }
-
-        @Override
-        public Queen getQueen() {
-            return Piece.WHITE_QUEEN;
-        }
-
-        @Override
-        public Bishop getBishop() {
-            return Piece.WHITE_BISHOP;
-        }
-
-        @Override
-        public Rook getRook() {
-            return Piece.WHITE_ROOK;
-        }
-
-        @Override
-        public Color getOpponentColor() {
-            return B;
-        }
-
-        @Override
-        public String toString() {
-            return "W";
-        }
-    },
-    B {
-        @Override
-        public King getKing() {
-            return Piece.BLACK_KING;
-        }
-
-        @Override
-        public Queen getQueen() {
-            return Piece.BLACK_QUEEN;
-        }
-
-        @Override
-        public Bishop getBishop() {
-            return Piece.BLACK_BISHOP;
-        }
-
-        @Override
-        public Rook getRook() {
-            return Piece.BLACK_ROOK;
-        }
-
-        @Override
-        public Color getOpponentColor() {
-            return W;
-        }
-
-        @Override
-        public String toString() {
-            return "B";
-        }
-    };
-
-    public abstract King getKing();
-
-    public abstract Queen getQueen();
-
-    public abstract Bishop getBishop();
-
-    public abstract Rook getRook();
-
-    public abstract Color getOpponentColor();
-};
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/model/Game.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,789 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.model;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Iterator;
-import java.util.Collections;
-import java.util.Set;
-import java.util.Objects;
-import java.util.UUID;
-
-import static com.oracle.chess.model.GameException.ErrorCode.*;
-
-/**
- * Game class.
- *
- * @param <P> Type of a game player.
- * @param <O> Type of a game observer.
- */
-public final class Game<P, O> {
-
-    public enum State {
-        PLAYING("Game being played"),
-        DRAW("Game ended by draw"),
-        WHITE_WINS("White player wins"),
-        BLACK_WINS("Black player wins");
-
-        private String msg;
-
-        State(String msg) {
-            this.msg = msg;
-        }
-
-        @Override
-        public String toString() {
-            return msg;
-        }
-    };
-
-    private Board board;
-
-    private Color turn;
-
-    private Color startTurn;
-
-    private String summary;
-
-    private String gameId;
-
-    private P whitePlayer;
-
-    private P blackPlayer;
-
-    private P drawRequester;
-
-    private List<O> observers = new ArrayList<>();
-
-    private State state = State.PLAYING;
-
-    private GameWatcher<P, O> watcher;
-
-    private long creationStamp;
-
-    private long updateStamp;
-
-    public Game() {
-        this(new Board(), Color.W);
-    }
-
-    public Game(Color turn, String summary) {
-        this(new Board(), turn, summary);
-    }
-
-    public Game(Board board, Color turn) {
-        this(board, turn, null);
-    }
-
-    public Game(Board board, Color turn, String summary) {
-        this.board = board != null ? board : new Board();
-        this.turn = this.startTurn = turn;
-        this.summary = summary;
-        creationStamp = updateStamp = System.currentTimeMillis();
-        generateGameId();
-    }
-
-    /**
-     * Generates a unique ID for this game.
-     */
-    public void generateGameId() {
-        gameId = UUID.randomUUID().toString();
-    }
-
-    /**
-     * Gets the color that started the game. This is used when an initial
-     * board is specified (mostly for testing).
-     *
-     * @return Start color.
-     */
-    public synchronized Color getStartTurn() {
-        return startTurn;
-    }
-
-    /**
-     * Sets the start color for the game. This is used when an initial board
-     * is specified (mostly for testing).
-     *
-     * @param startTurn Start color.
-     */
-    public synchronized void setStartTurn(Color startTurn) {
-        if (watcher != null) {
-            watcher.setStartTurn(this, startTurn);
-        }
-        this.startTurn = startTurn;
-    }
-
-    /**
-     * Sets a player for a color.
-     *
-     * @param color The color.
-     * @param player The player.
-     */
-    public synchronized void setPlayer(Color color, P player) {
-        if (watcher != null) {
-            watcher.setPlayer(this, color, player);
-        }
-        if (color == Color.W) {
-            whitePlayer = player;
-        } else {
-            blackPlayer = player;
-        }
-    }
-
-    /**
-     * Gets a player of a certain color.
-     *
-     * @param color The color.
-     * @return The player of that color or <code>null</code> if no player exists.
-     */
-    public synchronized P getPlayer(Color color) {
-        return color == Color.W ? whitePlayer : blackPlayer;
-    }
-
-    /**
-     * Determines if there is a player of a certain color.
-     *
-     * @param color The color.
-     * @return Outcome of test.
-     */
-    public synchronized boolean hasPlayer(Color color) {
-        return color == Color.W ? whitePlayer != null : blackPlayer != null;
-    }
-
-    /**
-     * Returns the color of a player.
-     *
-     * @param player The player.
-     * @return Color of player or <code>null</code> if player is unknown.
-     */
-    public synchronized Color getPlayerColor(P player) {
-        return player.equals(whitePlayer) ? Color.W : player.equals(blackPlayer) ? Color.B : null;
-    }
-
-    /**
-     * Adds an observer to this game.
-     *
-     * @param observer The observer.
-     */
-    public synchronized void addObserver(O observer) {
-        observers.add(observer);
-    }
-
-    /**
-     * Determines if observer is in the game.
-     *
-     * @param observer The observer.
-     */
-    public synchronized void hasObserver(O observer) {
-        observers.contains(observer);
-    }
-
-    /**
-     * Removes an observer from a game.
-     *
-     * @param observer The observer.
-     * @return Boolean indicating if observer was found and removed.
-     */
-    public synchronized boolean removeObserver(O observer) {
-        return observers.remove(observer);
-    }
-
-    /**
-     * Gets a list of current observers.
-     *
-     * @return List of observers.
-     */
-    public synchronized List<O> getObservers() {
-        return observers;
-    }
-
-    /**
-     * Returns the opponent of a given player.
-     *
-     * @param player The player.
-     * @return Opponent or <code>null</code> if it doesn't exist.
-     */
-    public synchronized P getOpponent(P player) {
-        if (player != null) {
-            if (player.equals(whitePlayer)) {
-                return blackPlayer;
-            } else if (player.equals(blackPlayer)) {
-                return whitePlayer;
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Determines if player has an opponent.
-     *
-     * @param player The player.
-     * @return Outcome of test.
-     */
-    public synchronized boolean hasOpponent(P player) {
-        return getOpponent(player) != null;
-    }
-
-    /**
-     * Determines if player has an opponent, using color.
-     *
-     * @param color Color of player.
-     * @return Outcome of test.
-     */
-    public synchronized boolean hasOpponent(Color color) {
-        return getPlayer(color.getOpponentColor()) != null;
-    }
-
-    /**
-     * Returns opponent of a given player, using color.
-     *
-     * @param color Color of player.
-     * @return Outcome of test.
-     */
-    public synchronized P getOpponent(Color color) {
-        return getPlayer(color.getOpponentColor());
-    }
-
-    /**
-     * Returns the next turn.
-     *
-     * @return Next turn.
-     */
-    public synchronized Color getTurn() {
-        return turn;
-    }
-
-    /**
-     * Sets the next turn.
-     *
-     * @param turn Next turn.
-     */
-    public synchronized void setTurn(Color turn) {
-        this.turn = turn;
-    }
-
-    /**
-     * Returns complete list of moves in game.
-     *
-     * @return List of moves.
-     */
-    public synchronized List<Move> getMoves() {
-        return board.getMoves();
-    }
-
-    /**
-     * Adds a move to the end of the list.
-     *
-     * @param move The move.
-     */
-    public synchronized void addMove(Move move) {
-        if (watcher != null) {
-            watcher.addMove(this, move);
-        }
-        board.getMoves().add(move);
-    }
-
-    /**
-     * Gets summary for this game.
-     *
-     * @return The summary.
-     */
-    public synchronized String getSummary() {
-        return summary;
-    }
-
-    /**
-     * Sets a summary for this game.
-     *
-     * @param summary The summary.
-     */
-    public synchronized void setSummary(String summary) {
-        if (watcher != null) {
-            watcher.setSummary(this, summary);
-        }
-        this.summary = summary;
-    }
-
-    /**
-     * Gets the underlying board.
-     *
-     * @return The board.
-     */
-    public synchronized Board getBoard() {
-        return board;
-    }
-
-    /**
-     * Sets the underlying board for this game.
-     *
-     * @param board The board.
-     */
-    public synchronized void setBoard(Board board) {
-        this.board = board;
-    }
-
-    /**
-     * Returns game ID for this game.
-     *
-     * @return Game ID.
-     */
-    public synchronized String getGameId() {
-        return gameId;
-    }
-
-    /**
-     * Sets game ID for this game.
-     *
-     * @param gameId Game ID.
-     */
-    public synchronized void setGameId(String gameId) {
-        this.gameId = gameId;
-    }
-
-    /**
-     * Determines if the game is open. I.e., if there is less than
-     * two players.
-     *
-     * @return Outcome of test.
-     */
-    public synchronized boolean isOpen() {
-        return whitePlayer == null || blackPlayer == null;
-    }
-
-    /**
-     * Returns the internal state of the game.
-     *
-     * @return The state.
-     */
-    public synchronized State getState() {
-        return state;
-    }
-
-    /**
-     * Sets the internal state for this game.
-     *
-     * @param state The state.
-     */
-    public synchronized void setState(State state) {
-        if (watcher != null) {
-            watcher.setState(this, state);
-        }
-        this.state = state;
-    }
-
-    /**
-     * Sets the winner for the game.
-     *
-     * @param color The player's color.
-     */
-    public synchronized void setWinner(Color color) {
-        setState(color == Color.W ? State.WHITE_WINS : State.BLACK_WINS);
-    }
-
-    /**
-     * Returns this game's watcher.
-     *
-     * @return Watcher or <code>null</code> if no watcher set.
-     */
-    public GameWatcher<P, O> getWatcher() {
-        return watcher;
-    }
-
-    /**
-     * Get creation timestamp.
-     *
-     * @return Game creation timestamp.
-     */
-    public long getCreationStamp() {
-        return creationStamp;
-    }
-
-    /**
-     * Sets creation timestamp.
-     *
-     * @param creationStamp Creation timestamp.
-     */
-    public void setCreationStamp(long creationStamp) {
-        this.creationStamp = creationStamp;
-    }
-
-    /**
-     * Get update timestamp. This timestamp is updated every time a {@link #makeMove}
-     * is called.
-     *
-     * @return Game update timestamp.
-     */
-    public long getUpdateStamp() {
-        return updateStamp;
-    }
-
-    /**
-     * Sets a watcher for this game.
-     *
-     * @param watcher A watcher for this game.
-     */
-    public void setWatcher(GameWatcher<P, O> watcher) {
-        this.watcher = watcher;
-    }
-
-    /**
-     * Updates the internal state of the game by making a piece move. Allows
-     * <code>from</code> to be either a column or null.
-     *
-     * @param piece Piece to move.
-     * @param from Initial location in notation format.
-     * @param to Final location in notation format.
-     * @return The move.
-     * @throws GameException If an error is found while trying to move the piece.
-     */
-    public synchronized Move makeMove(Piece piece, String from, String to) throws GameException {
-        Point pointFrom = null;
-        final Point pointTo = Point.fromNotation(to);
-
-        // If not from or only column in from, compute from
-        if (from == null || from.length() == 1) {
-            int x = -1, y = -1;
-            if (from != null && from.length() == 1) {
-                final char ch = from.charAt(0);
-                if (Character.isDigit(ch)) {
-                    y = (ch - '1');
-                } else if (Character.isLetter(ch)) {
-                    x = (ch - 'a');
-                } else {
-                    throw new GameException(ILLEGAL_MOVE, "Not a valid chess move!");
-                }
-            }
-
-            final Iterator<Square> it = board.getIterator(piece.getColor());
-            while (it.hasNext()) {
-                final Square square = it.next();
-                if (square.getPiece() == piece && piece.isLegalMove(square.getPoint(), pointTo, board)
-                        && (x == -1 || square.getPoint().getX() == x)
-                        && (y == -1 || square.getPoint().getY() == y)) {
-                    pointFrom = square.getPoint();
-                    break;
-                }
-            }
-        } else {
-            pointFrom = Point.fromNotation(from);
-        }
-        if (pointFrom == null) {
-            throw new GameException(ILLEGAL_MOVE, "Not a valid chess move!");
-        }
-        return makeMove(piece.getColor(), pointFrom, pointTo);
-    }
-
-    /**
-     * Updates the internal state of the game by making a piece move.
-     *
-     * @param color Color of piece to move.
-     * @param from Initial location in notation format.
-     * @param to Final location in notation format.
-     * @return The move.
-     * @throws GameException If an error is found while trying to move the piece.
-     */
-    public synchronized Move makeMove(Color color, String from, String to) throws GameException {
-        return makeMove(color, Point.fromNotation(from), Point.fromNotation(to));
-    }
-
-    /**
-     * Updates the internal state of the game by making a piece move.
-     *
-     * @param color Color of piece to move.
-     * @param from Initial location of piece.
-     * @param to Final location of piece.
-     * @return The move.
-     * @throws GameException If an error is found while trying to move the piece.
-     */
-    public synchronized Move makeMove(Color color, Point from, Point to) throws GameException {
-        if (state != State.PLAYING) {
-            throw new GameException(GAME_OVER, state.toString());
-        }
-        if (color != turn) {
-            throw new GameException(NOT_YOUR_TURN, "Slow down, it is not your turn to play");
-        }
-        if (!board.hasPiece(from)) {
-            throw new GameException(NO_PIECE_AT_LOCATION, "Get some glasses, there's no piece there");
-        }
-        final Piece piece = board.getPiece(from);
-        if (color != piece.getColor()) {
-            throw new GameException(NOT_YOUR_PIECE, "Cheater! That's not your piece");
-        }
-        if (!piece.isLegalMove(from, to, board)) {
-            throw new GameException(ILLEGAL_MOVE, "You need to learn Chess!");
-        }
-
-        // Apply move to board
-        final Move move = new Move(piece, from, to);
-        board.doMove(move);
-
-        // Inform game observer
-        if (watcher != null) {
-            watcher.addMove(this, move);
-        }
-
-        // Is my king in check after this move?
-        final Square kingSquare = board.getKingSquare(color);
-        if (board.isKingAttacked(color, kingSquare.getPoint())) {
-            board.undoLastMove();
-            throw new GameException(ILLEGAL_MOVE_KING_CHECK, "Can't leave your king in check!");
-        }
-
-        // Switch turns
-        turn = turn.getOpponentColor();
-
-        // Update timestamp
-        updateStamp = System.currentTimeMillis();
-
-        return move;
-    }
-
-    /**
-     * Returns the list of moves that are legal for a piece of <code>color</code>
-     * located at position <code>from</code>.
-     *
-     * @param color Piece's color.
-     * @param from Piece's location in notation format.
-     * @return List of moves in algebraic notation format.
-     * @throws GameException If no piece at location or of the wrong color.
-     */
-    public synchronized List<String> queryMoves(Color color, String from) throws GameException {
-        return queryMoves(color, Point.fromNotation(from));
-    }
-
-    /**
-     * Returns the list of moves that are legal for a piece of <code>color</code>
-     * located at position <code>from</code>.
-     *
-     * @param color Piece's color.
-     * @param from Piece's location.
-     * @return List of moves in algebraic notation format.
-     * @throws GameException If no piece at location or of the wrong color.
-     */
-    public synchronized List<String> queryMoves(Color color, Point from) throws GameException {
-        if (!board.hasPiece(from)) {
-            throw new GameException(NO_PIECE_AT_LOCATION, "Get some glasses, there's no piece there");
-        }
-        final Piece piece = board.getPiece(from);
-        if (color != piece.getColor()) {
-            throw new GameException(NOT_YOUR_PIECE, "Piece at that location of wrong color");
-        }
-
-        final List<Point> points = board.queryMoves(from);
-        final List<String> result = new ArrayList<>(points.size());
-        for (Point to : points) {
-            // Filter out moves that leave king in check
-            final Move move = new Move(piece, from, to);
-            try {
-                board.doMove(move);
-                final Square kingSquare = board.getKingSquare(color);
-                if (!board.isKingAttacked(color, kingSquare.getPoint())) {
-                    result.add(to.toNotation());
-                }
-            } finally {
-                board.undoLastMove();
-            }
-        }
-        return result;
-    }
-
-    /**
-     * Determines if the game is over due to a checkmate.
-     *
-     * @param color King's color to check.
-     * @return Outcome of checkmate test.
-     */
-    public synchronized boolean isCheckmate(Color color) {
-        final Square kingSquare = board.getKingSquare(color);
-        final Point kingPoint = kingSquare.getPoint();
-
-        // Is King in check?
-        List<Square> attackers = kingAttackers(color, kingPoint);
-        if (attackers == null) {
-            return false;
-        }
-
-        // Is it in check no matter where it moves?
-        List<Point> tos = kingSquare.getPiece().generateMoves(kingPoint, board);
-        for (Point to : tos) {
-            final Move move = new Move(kingSquare.getPiece(), kingPoint, to);
-            board.doMove(move);
-            if (!board.isKingAttacked(color, to)) {
-                board.undoLastMove();
-                return false;
-            }
-            board.undoLastMove();
-        }
-
-        try {
-            // Is there any other piece that can stop all attackers?
-            Iterator<Square> squares = board.getIterator(color);
-            while (squares.hasNext()) {
-                final Square square = squares.next();
-                final Piece piece = square.getPiece();
-                if (piece == color.getKing()) {
-                    continue;               // skip king!
-                }
-                List<Point> pieceMoves = piece.generateMoves(square.getPoint(), board);
-                int nAttackers = attackers.size();
-                for (Square attacker : attackers) {
-                    List<Point> path = attacker.getPiece().generatePath(attacker.getPoint(), kingPoint);
-                    if (!Collections.disjoint(path, pieceMoves)) {
-                        nAttackers--;       // piece that can block attacker
-                        continue;
-                    }
-                    Set<Point> attackerPoint = Collections.singleton(attacker.getPoint());
-                    if (!Collections.disjoint(attackerPoint, pieceMoves)) {
-                        nAttackers--;       // piece that can capture attacker
-                    }
-                }
-                if (nAttackers == 0) {
-                    return false;       // piece can stop all the attackers
-                }
-            }
-        } catch (GameException _) {
-            throw new InternalError();
-        }
-
-        return true;        // checkmate!
-    }
-
-    /**
-     * Determines if the king of <code>color</code> is in check or not.
-     *
-     * @param color King's color.
-     * @return Result of in-check test.
-     */
-    public synchronized boolean isKingAttacked(Color color) {
-        return board.isKingAttacked(color);
-    }
-
-    /**
-     * Returns the list of pieces that are attacking the king of <code>color</code> or
-     * <code>null</null> if king is not in check.
-     *
-     * @param color King's color.
-     * @param toKing King's location on the board.
-     * @return The list of pieces attacking king or <code>null</code> if not in check.
-     */
-    public synchronized List<Square> kingAttackers(Color color, Point toKing) {
-        return board.kingAttackers(color, toKing);
-    }
-
-    /**
-     * Determines if a stalemate situation is found for <code>color</code>. Game
-     * should end as a draw.
-     *
-     * @param color Color to check for stalemate situation.
-     * @return Outcome of test.
-     */
-    public synchronized boolean isStalemate(Color color) {
-        try {
-            Iterator<Square> squares = board.getIterator(color);
-            while (squares.hasNext()) {
-                final Square square = squares.next();
-                if (queryMoves(color, square.getPoint()).size() > 0) {
-                    return false;
-                }
-            }
-            return true;
-        } catch (GameException _) {
-            throw new InternalError();
-        }
-    }
-
-    /**
-     * Determines if a player has requested a draw.
-     *
-     * @return Outcome of test.
-     */
-    public synchronized boolean hasDrawRequester() {
-        return drawRequester != null;
-    }
-
-    /**
-     * Gets player that requested a draw or no null if there is no such player.
-     *
-     * @return Player that requested draw.
-     */
-    public synchronized P getDrawRequester() {
-        return drawRequester;
-    }
-
-    /**
-     * Sets player that requested a draw.
-     *
-     * @param color Draw requester's color.
-     */
-    public synchronized void setDrawRequester(Color color) {
-        this.drawRequester = getPlayer(color);
-    }
-
-    /**
-     * Computes hash code based on game ID.
-     *
-     * @return Hash code.
-     */
-    @Override
-    public int hashCode() {
-        return gameId != null ? gameId.hashCode() : super.hashCode();
-    }
-
-    /**
-     * Determines equality using game IDs.
-     *
-     * @param obj Other object.
-     * @return Outcome of test.
-     */
-    @Override
-    public boolean equals(Object obj) {
-        if (obj == null) {
-            return false;
-        }
-        if (getClass() != obj.getClass()) {
-            return false;
-        }
-        final Game<P, O> other = (Game<P, O>) obj;
-        if (!Objects.equals(this.gameId, other.gameId)) {
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * Returns string representation for the game. Mostly for debugging purposes.
-     *
-     * @return String representation for game.
-     */
-    @Override
-    public String toString() {
-        StringBuilder sb = new StringBuilder();
-        sb.append("Next turn is ").append(turn).append("\n\n");
-        sb.append(board);
-        return sb.toString();
-    }
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/model/GameException.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.model;
-
-/**
- * IllegalMoveException class.
- *
- */
-public class GameException extends Exception {
-
-    // Error codes must be between 0 and 999
-    public static enum ErrorCode {
-        NOT_YOUR_TURN(100),
-        NO_PIECE_AT_LOCATION(200),
-        NOT_YOUR_PIECE(300),
-        ILLEGAL_MOVE(400),
-        ILLEGAL_MOVE_KING_CHECK(500),
-        GAME_OVER(600);
-
-        int code;
-
-        ErrorCode(int code) {
-            this.code = code;
-        }
-
-        public int getCode() {
-            return code;
-        }
-     };
-
-    private ErrorCode code;
-
-    private Piece piece;
-
-    private Point from;
-
-    private Point to;
-
-    public GameException(ErrorCode code, String message) {
-        super(message);
-        this.code = code;
-    }
-
-    public GameException(Piece piece, Point from, Point to) {
-        this.piece = piece;
-        this.from = from;
-        this.to = to;
-    }
-
-    public ErrorCode getErrorCode() {
-        return code;
-    }
-
-    public Piece getPiece() {
-        return piece;
-    }
-
-    public Point getFrom() {
-        return from;
-    }
-
-    public Point getTo() {
-        return to;
-    }
-
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/model/GameWatcher.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.model;
-
-import com.oracle.chess.model.Game.State;
-
-/**
- * GameObserver class.
- *
- * @param <P> Type of a game player.
- * @param <O> Type of a game observer.
- */
-public interface GameWatcher<P, O> {
-
-    void addMove(Game<P,O> game, Move move);
-
-    void setPlayer(Game<P,O> game, Color color, P player);
-
-    void setStartTurn(Game<P,O> game, Color startTurn);
-
-    void setState(Game<P,O> game, State state);
-
-    void setSummary(Game<P,O> game, String summary);
-
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/model/King.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,228 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.model;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * King class.
- *
- */
-public final class King extends Piece {
-
-    final static Point W_START_CASTLING = Point.fromXY(4, 0);
-    final static Point W_LEFT_CASTLING  = Point.fromXY(2, 0);
-    final static Point W_RIGHT_CASTLING = Point.fromXY(6, 0);
-    final static Point W_LEFT_ROOK      = Point.fromXY(0, 0);
-    final static Point W_RIGHT_ROOK     = Point.fromXY(7, 0);
-
-    final static Point B_START_CASTLING = Point.fromXY(4, 7);
-    final static Point B_LEFT_CASTLING  = Point.fromXY(2, 7);
-    final static Point B_RIGHT_CASTLING = Point.fromXY(6, 7);
-    final static Point B_LEFT_ROOK      = Point.fromXY(0, 7);
-    final static Point B_RIGHT_ROOK     = Point.fromXY(7, 7);
-
-    protected King(Color color) {
-        super(color);
-    }
-
-    @Override
-    public boolean isValidMove(int x1, int y1, int x2, int y2) {
-        if (!super.isValidMove(x1, y1, x2, y2)) {
-            return false;
-        }
-        return Math.abs(x2 - x1) <= 1 && Math.abs(y2 - y1) <= 1;
-    }
-
-    @Override
-    public boolean isLegalMove(Point from, Point to, Board board) {
-        if (super.isLegalMove(from, to, board)) {
-            return true;
-        }
-
-        // Check if this is a castling move
-        if (color == Color.W) {
-            if (from.equals(W_START_CASTLING)) {
-                // Has king been moved?
-                if (board.hasPiecedMoved(from)) {
-                    return false;
-                }
-                // Check additional castling conditions depending on direction
-                if (to.equals(W_LEFT_CASTLING)) {
-                    return checkCastlingConditions(W_LEFT_ROOK, board);
-                } else if (to.equals(W_RIGHT_CASTLING)) {
-                    return checkCastlingConditions(W_RIGHT_ROOK, board);
-                }
-            }
-        } else {
-            if (from.equals(B_START_CASTLING)) {
-                // Has king been moved?
-                if (board.hasPiecedMoved(from)) {
-                    return false;
-                }
-                // Check additional castling conditions depending on direction
-                if (to.equals(B_LEFT_CASTLING)) {
-                    return checkCastlingConditions(B_LEFT_ROOK, board);
-                } else if (to.equals(B_RIGHT_CASTLING)) {
-                    return checkCastlingConditions(B_RIGHT_ROOK, board);
-                }
-            }
-        }
-        return false;
-    }
-
-    @Override
-    public String toNotation() {
-        return "K";
-    }
-
-    @Override
-    public List<Point> generatePath(Point from, Point to) throws GameException {
-        return Collections.EMPTY_LIST;
-    }
-
-    @Override
-    public List<Point> generateMoves(Point from, Board board) {
-        final List<Point> moves = new ArrayList<>();
-        final int x = from.getX();
-        final int y = from.getY();
-
-        Point to;
-        if (x > 0) {
-            to = Point.fromXY(x - 1, y);
-            if (isLegalMove(from, to, board)) {
-                moves.add(to);
-            }
-            if (y > 0) {
-                to = Point.fromXY(x - 1, y - 1);
-                if (isLegalMove(from, to, board)) {
-                    moves.add(to);
-                }
-            }
-            if (y < Board.N_SQUARES - 1) {
-                to = Point.fromXY(x - 1, y + 1);
-                if (isLegalMove(from, to, board)) {
-                    moves.add(to);
-                }
-            }
-        }
-        if (y > 0) {
-            to = Point.fromXY(x, y - 1);
-            if (isLegalMove(from, to, board)) {
-                moves.add(to);
-            }
-        }
-        if (x < Board.N_SQUARES - 1) {
-            to = Point.fromXY(x + 1, y);
-            if (isLegalMove(from, to, board)) {
-                moves.add(to);
-            }
-            if (y < Board.N_SQUARES - 1) {
-                to = Point.fromXY(x + 1, y + 1);
-                if (isLegalMove(from, to, board)) {
-                    moves.add(to);
-                }
-            }
-            if (y > 0) {
-                to = Point.fromXY(x + 1, y - 1);
-                if (isLegalMove(from, to, board)) {
-                    moves.add(to);
-                }
-            }
-        }
-        if (y < Board.N_SQUARES - 1) {
-            to = Point.fromXY(x, y + 1);
-            if (isLegalMove(from, to, board)) {
-                moves.add(to);
-            }
-        }
-
-        if (color == Color.W && from.equals(W_START_CASTLING) ||
-                color == Color.B && from.equals(B_START_CASTLING)) {
-            to = Point.fromXY(x - 2, y);
-            if (isLegalMove(from, to, board)) {
-                moves.add(to);
-            }
-            to = Point.fromXY(x + 2, y);
-            if (isLegalMove(from, to, board)) {
-                moves.add(to);
-            }
-        }
-
-        return moves;
-    }
-
-    /**
-     * Checks that (i) the rook has not been moved (ii) that there are no pieces
-     * between the rook and the king and (iii) that king is not in check when
-     * during and at the end of the castling move.
-     *
-     * @param rook Rook involved in move.
-     * @param board The board.
-     * @return Outcome of test.
-     */
-    private boolean checkCastlingConditions(Point rook, Board board) {
-        boolean isAllowed;
-        final boolean left = (rook.getX() == 0);
-        final Point start = color == Color.W ? W_START_CASTLING : B_START_CASTLING;
-
-        if (left) {
-            isAllowed = !board.hasPiecedMoved(rook)
-                    && !board.hasPiece(rook.incrementX(1))
-                    && !board.hasPiece(rook.incrementX(2))
-                    && !board.hasPiece(rook.incrementX(3))
-                    && !board.isKingAttacked(color);
-            if (isAllowed) {
-                board.doMove(new Move(this, start, start.decrementX(1)));
-                isAllowed = !board.isKingAttacked(color);
-                board.undoLastMove();
-                if (isAllowed) {
-                    board.doMove(new Move(this, start, start.decrementX(2)));
-                    isAllowed = !board.isKingAttacked(color);
-                    board.undoLastMove();
-                }
-            }
-        } else {
-            isAllowed = !board.hasPiecedMoved(rook)
-                    && !board.hasPiece(rook.decrementX(1))
-                    && !board.hasPiece(rook.decrementX(2))
-                    && !board.isKingAttacked(color);
-            if (isAllowed) {
-                board.doMove(new Move(this, start, start.incrementX(1)));
-                isAllowed = !board.isKingAttacked(color);
-                board.undoLastMove();
-                if (isAllowed) {
-                    board.doMove(new Move(this, start, start.incrementX(2)));
-                    isAllowed = !board.isKingAttacked(color);
-                    board.undoLastMove();
-                }
-            }
-        }
-        return isAllowed;
-    }
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/model/Knight.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,129 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.model;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * Knight class.
- *
- */
-public final class Knight extends Piece {
-
-    protected Knight(Color color) {
-        super(color);
-    }
-
-    @Override
-    public boolean isValidMove(int x1, int y1, int x2, int y2) {
-        if (!super.isValidMove(x1, y1, x2, y2)) {
-            return false;
-        }
-        return Math.abs(y2 - y1) == 2 && Math.abs(x2 - x1) == 1
-                || Math.abs(y2 - y1) == 1 && Math.abs(x2 - x1) == 2;
-    }
-
-    @Override
-    public String toNotation() {
-        return "N";
-    }
-
-    @Override
-    public List<Point> generatePath(Point from, Point to) throws GameException {
-        if (!isValidMove(from, to)) {
-            throw new GameException(this, from, to);
-        }
-        return Collections.EMPTY_LIST;      // horses can jump!
-    }
-
-    @Override
-    public List<Point> generateMoves(Point from, Board board) {
-        final List<Point> moves = new ArrayList<>();
-        int x = from.getX();
-        int y = from.getY();
-
-        Point to;
-        if (x + 1 < Board.N_SQUARES) {
-            if (y + 2 < Board.N_SQUARES) {
-                to = Point.fromXY(x + 1, y + 2);
-                if (isLegalMove(from, to, board)) {
-                    moves.add(to);
-                }
-            }
-            if (y - 2 >= 0) {
-                to = Point.fromXY(x + 1, y - 2);
-                if (isLegalMove(from, to, board)) {
-                    moves.add(to);
-                }
-            }
-        }
-        if (x - 1 >= 0) {
-            if (y + 2 < Board.N_SQUARES) {
-                to = Point.fromXY(x - 1, y + 2);
-                if (isLegalMove(from, to, board)) {
-                    moves.add(to);
-                }
-            }
-            if (y - 2 >= 0) {
-                to = Point.fromXY(x - 1, y - 2);
-                if (isLegalMove(from, to, board)) {
-                    moves.add(to);
-                }
-            }
-        }
-        if (x + 2 < Board.N_SQUARES) {
-            if (y + 1 < Board.N_SQUARES) {
-                to = Point.fromXY(x + 2, y + 1);
-                if (isLegalMove(from, to, board)) {
-                    moves.add(to);
-                }
-            }
-            if (y - 1 >= 0) {
-                to = Point.fromXY(x + 2, y - 1);
-                if (isLegalMove(from, to, board)) {
-                    moves.add(to);
-                }
-            }
-        }
-        if (x - 2 >= 0) {
-            if (y + 1 < Board.N_SQUARES) {
-                to = Point.fromXY(x - 2, y + 1);
-                if (isLegalMove(from, to, board)) {
-                    moves.add(to);
-                }
-            }
-            if (y - 1 >= 0) {
-                to = Point.fromXY(x - 2, y - 1);
-                if (isLegalMove(from, to, board)) {
-                    moves.add(to);
-                }
-            }
-        }
-        return moves;
-    }
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/model/Move.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,166 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.model;
-
-/**
- * Move class.
- *
- */
-public class Move {
-
-    public enum Type {
-        NORMAL, PROMOTION, EN_PASSANT, LEFT_CASTLING, RIGHT_CASTLING
-    };
-
-    private Point from;
-
-    private Point to;
-
-    private Piece piece;
-
-    private Piece captured;
-
-    private boolean promoted;
-
-    private boolean enPassant;
-
-    public Move() {
-    }
-
-    public Move(Piece piece, Point from, Point to) {
-        this(piece, from, to, null);
-    }
-
-    public Move(Piece piece, Point from, Point to, Piece captured) {
-        this.piece = piece;
-        this.from = from;
-        this.to = to;
-        this.captured = captured;
-    }
-
-    public Point getFrom() {
-        return from;
-    }
-
-    public void setFrom(Point from) {
-        this.from = from;
-    }
-
-    public Point getTo() {
-        return to;
-    }
-
-    public void setTo(Point to) {
-        this.to = to;
-    }
-
-    public Piece getPiece() {
-        return piece;
-    }
-
-    public void setPiece(Piece piece) {
-        this.piece = piece;
-    }
-
-    public Color getColor() {
-        return piece.getColor();
-    }
-
-    public Piece getCaptured() {
-        return captured;
-    }
-
-    public void setCaptured(Piece captured) {
-        this.captured = captured;
-    }
-
-    public boolean hasCaptured() {
-        return captured != null;
-    }
-
-    public boolean isPromoted() {
-        return promoted;
-    }
-
-    public void setPromoted(boolean promoted) {
-        this.promoted = promoted;
-    }
-
-    public boolean isEnPassant() {
-        return enPassant;
-    }
-
-    public void setEnPassant(boolean enPassant) {
-        this.enPassant = enPassant;
-    }
-
-    public boolean isEnPassantAllowed(Move lastMove) {
-        if (lastMove != null && piece instanceof Pawn) {
-            if (piece.getColor() == Color.W) {
-                return lastMove.getPiece() == Piece.BLACK_PAWN
-                        && from.getY() == lastMove.getTo().getY()
-                        && lastMove.getFrom().getY() == 6
-                        && to.getX() == lastMove.getTo().getX();
-            } else {
-                return lastMove.getPiece() == Piece.WHITE_PAWN
-                        && from.getY() == lastMove.getTo().getY()
-                        && lastMove.getFrom().getY() == 1
-                        && to.getX() == lastMove.getTo().getX();
-            }
-        }
-        return false;
-    }
-
-    public boolean isLeftCastling() {
-        return (piece == Piece.WHITE_KING
-                && from.equals(King.W_START_CASTLING)
-                && to.equals(King.W_START_CASTLING.decrementX(2))) ||
-                (piece == Piece.BLACK_KING
-                && from.equals(King.B_START_CASTLING)
-                && to.equals(King.B_START_CASTLING.decrementX(2)));
-    }
-
-    public boolean isRightCastling() {
-        return (piece == Piece.WHITE_KING
-                && from.equals(King.W_START_CASTLING)
-                && to.equals(King.W_START_CASTLING.incrementX(2))) ||
-                (piece == Piece.BLACK_KING
-                && from.equals(King.B_START_CASTLING)
-                && to.equals(King.B_START_CASTLING.incrementX(2)));
-    }
-
-    public Type getType() {
-        return enPassant ? Type.EN_PASSANT
-                : promoted ? Type.PROMOTION
-                : isLeftCastling() ? Type.LEFT_CASTLING
-                : isRightCastling() ? Type.RIGHT_CASTLING
-                : Type.NORMAL;
-    }
-
-    public String toNotation() {
-        return from.toNotation() + to.toNotation();     // TODO: capture/promotion?
-    }
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/model/Pawn.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,139 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.model;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Pawn class.
- *
- */
-public final class Pawn extends Piece {
-
-    protected Pawn(Color color) {
-        super(color);
-    }
-
-    @Override
-    public boolean isValidMove(int x1, int y1, int x2, int y2) {
-        if (!super.isValidMove(x1, y1, x2, y2)) {
-            return false;
-        }
-        switch (color) {
-            case W:
-                return x1 == x2 && y2 - y1 == 1 ||                 // one square forward
-                       x1 == x2 && y2 - y1 == 2 && y1 == 1 ||      // two squares forward at start
-                       y2 - y1 == 1 && Math.abs(x2 - x1) == 1;     // captures
-            case B:
-                return x1 == x2 && y2 - y1 == -1 ||                // one square forward
-                       x1 == x2 && y2 - y1 == -2 && y1 == 6 ||     // two squares forward at start
-                       y2 - y1 == -1 && Math.abs(x2 - x1) == 1;    // captures
-        }
-        throw new IllegalStateException();
-    }
-
-    @Override
-    public boolean isLegalMove(Point from, Point to, Board board) {
-        if (!super.isLegalMove(from, to, board)) {
-            return false;
-        }
-
-        if (from.getX() == to.getX()) {
-            return !board.hasPiece(to);
-        } else if (board.hasPiece(to)) {
-            return board.hasColoredPiece(to, color.getOpponentColor());        // a normal capture
-        } else {
-            // Perhaps an en passant move?
-            return new Move(this, from, to).isEnPassantAllowed(board.getLastMove());
-        }
-    }
-
-    @Override
-    public String toNotation() {
-        return "P";
-    }
-
-    @Override
-    public List<Point> generatePath(Point from, Point to) throws GameException {
-        if (!isValidMove(from, to)) {
-            throw new GameException(this, from, to);
-        }
-        // Move is valid for pawn, so we use queen here
-        return WHITE_QUEEN.generatePath(from, to);
-    }
-
-    @Override
-    public List<Point> generateMoves(Point from, Board board) {
-        Point to;
-        final List<Point> moves = new ArrayList<>();
-
-        switch (color) {
-            case W:
-                to = Point.fromXY(from.getX(), from.getY() + 1);
-                if (isLegalMove(from, to, board)) {
-                    moves.add(to);
-                }
-                to = Point.fromXY(from.getX(), from.getY() + 2);
-                if (isLegalMove(from, to, board)) {
-                    moves.add(to);
-                }
-                to = Point.fromXY(from.getX() + 1, from.getY() + 1);
-                if (isLegalMove(from, to, board)) {
-                    moves.add(to);
-                }
-                to = Point.fromXY(from.getX() - 1, from.getY() + 1);
-                if (isLegalMove(from, to, board)) {
-                    moves.add(to);
-                }
-                break;
-            case B:
-                to = Point.fromXY(from.getX(), from.getY() - 1);
-                if (isLegalMove(from, to, board)) {
-                    moves.add(to);
-                }
-                to = Point.fromXY(from.getX(), from.getY() - 2);
-                if (isLegalMove(from, to, board)) {
-                    moves.add(to);
-                }
-                to = Point.fromXY(from.getX() + 1, from.getY() - 1);
-                if (isLegalMove(from, to, board)) {
-                    moves.add(to);
-                }
-                to = Point.fromXY(from.getX() - 1, from.getY() - 1);
-                if (isLegalMove(from, to, board)) {
-                    moves.add(to);
-                }
-                break;
-        }
-        return moves;
-    }
-
-    @Override
-    public boolean isPromoted(Point to) {
-        return color == Color.W && to.getY() == 7 || color == Color.B && to.getY() == 0;
-    }
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/model/Piece.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,190 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.model;
-
-
-import static com.oracle.chess.model.Board.N_SQUARES;
-import java.util.List;
-
-/**
- * Piece class.
- *
- */
-public abstract class Piece {
-
-    public static final Pawn WHITE_PAWN = new Pawn(Color.W);
-    public static final Pawn BLACK_PAWN = new Pawn(Color.B);
-
-    public static final Rook WHITE_ROOK = new Rook(Color.W);
-    public static final Rook BLACK_ROOK = new Rook(Color.B);
-
-    public static final Knight WHITE_KNIGHT = new Knight(Color.W);
-    public static final Knight BLACK_KNIGHT = new Knight(Color.B);
-
-    public static final Bishop WHITE_BISHOP = new Bishop(Color.W);
-    public static final Bishop BLACK_BISHOP = new Bishop(Color.B);
-
-    public static final King WHITE_KING = new King(Color.W);
-    public static final King BLACK_KING = new King(Color.B);
-
-    public static final Queen WHITE_QUEEN = new Queen(Color.W);
-    public static final Queen BLACK_QUEEN = new Queen(Color.B);
-
-    protected Color color;
-
-    protected Piece(Color color) {
-        this.color = color;
-    }
-
-    public Color getColor() {
-        return color;
-    }
-
-    private boolean inRange(int z) {
-        return z >= 0 && z < N_SQUARES;
-    }
-
-    /**
-     * Determines if this piece can move from (x1,y1) to (x2,y2) based
-     * on its kind, regardless of other pieces or the game's state.
-     *
-     * @param x1 Source x coordinate.
-     * @param y1 Source y coordinate.
-     * @param x2 Destination x coordinate.
-     * @param y2 Destination y coordinate.
-     * @return Validity of move based on kind.
-     */
-    public boolean isValidMove(int x1, int y1, int x2, int y2) {
-        return (x1 != x2 || y1 != y2) && inRange(x1) && inRange(y1) && inRange(x2) && inRange(y2);
-    }
-
-    /**
-     * Determines is this piece can move from one point to another based
-     * on its kind, regardless of other pieces or the game's state.
-     *
-     * @param from From point.
-     * @param to To point.
-     * @return Validity of move based on kind.
-     */
-    public boolean isValidMove(Point from, Point to) {
-        return isValidMove(from.getX(), from.getY(), to.getX(), to.getY());
-    }
-
-    /**
-     * Generates a list of points between <code>from</code> and <code>to</code>
-     * for this piece, excluding <code>from</code> and <code>to</code>, or
-     * throws an exception if that isn't possible.
-     *
-     * @param from From point.
-     * @param to To point.
-     * @return List of points in path excluding <code>from</code> and <code>to</code>.
-     * @throws GameException If not allowed for this kind of piece.
-     */
-    public abstract List<Point> generatePath(Point from, Point to) throws GameException;
-
-    /**
-     * Generates a list of all <b>legal</b> moves for this piece.
-     *
-     * @param from From point.
-     * @param board The chessboard.
-     * @return List of points that this piece can move to.
-     */
-    public abstract List<Point> generateMoves(Point from, Board board);
-
-    /**
-     * A move is legal if (i) it is valid for this piece and (ii) it can be completed
-     * without being blocked by any other piece on the board. Note that this method
-     * does not check if the king is in check after this move.
-     *
-     * @param from From point.
-     * @param to To point.
-     * @param board The chess board.
-     * @return Legality of move based on kind and game state.
-     */
-    public boolean isLegalMove(Point from, Point to, Board board) {
-        if (!isValidMove(from, to)) {
-            return false;
-        }
-        try {
-            List<Point> path = generatePath(from, to);
-            for (Point p : path) {
-                if (board.hasPiece(p)) {
-                    return false;       // Another piece in the way
-                }
-            }
-            // Check if trying to capture piece of same color
-            Piece other = board.getPiece(to);
-            if (other != null && other.getColor() == color) {
-                return false;
-            }
-        } catch (GameException _) {
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * Determines if this piece can be promoted when moved to this point. This
-     * method is overridden in {@link com.oracle.chess.model.Pawn}.
-     *
-     * @param to To point.
-     * @return Outcome of promotion test.
-     */
-    public boolean isPromoted(Point to) {
-        return false;
-    }
-
-    public abstract String toNotation();
-
-    public static Piece fromNotation(Color color, String notation) {
-        char ch = notation.charAt(0);
-        switch (ch) {
-            case 'P':
-                return color == Color.W ? WHITE_PAWN : BLACK_PAWN;
-            case 'R':
-                return color == Color.W ? WHITE_ROOK : BLACK_ROOK;
-            case 'N':
-                return color == Color.W ? WHITE_KNIGHT : BLACK_KNIGHT;
-            case 'B':
-                return color == Color.W ? WHITE_BISHOP : BLACK_BISHOP;
-            case 'K':
-                return color == Color.W ? WHITE_KING : BLACK_KING;
-            case 'Q':
-                return color == Color.W ? WHITE_QUEEN : BLACK_QUEEN;
-            default:
-                throw new InternalError("Unknown piece notation " + notation);
-        }
-    }
-
-    public static Piece fromString(String s) {
-        return fromNotation(Color.valueOf(s.substring(0, 1)), s.substring(1));
-    }
-
-    @Override
-    public String toString() {
-        return color.toString() + toNotation();
-    }
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/model/Point.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,109 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.model;
-
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * Point class.
- *
- */
-public final class Point {
-
-    static final char[] letters = { 'a', 'b', 'c', 'd', 'e', 'f', 'g' ,'h' };
-
-    private final int x;
-    private final int y;
-
-    public Point(int x, int y) {
-        this.x = x;
-        this.y = y;
-    }
-
-    public int getX() {
-        return x;
-    }
-
-    public int getY() {
-        return y;
-    }
-
-    public Point decrementX(int delta) {
-        return fromXY(x - delta, y);
-    }
-
-    public Point incrementX(int delta) {
-        return fromXY(x + delta, y);
-    }
-
-    public Point decrementY(int delta) {
-        return fromXY(x, y - delta);
-    }
-
-    public Point incrementY(int delta) {
-        return fromXY(x, y + delta);
-    }
-
-    @Override
-    public int hashCode() {
-        return y * 8 + x;
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (obj == null || getClass() != obj.getClass()) {
-            return false;
-        }
-        final Point other = (Point) obj;
-        return this.x == other.x && this.y == other.y;
-    }
-
-    @Override
-    public String toString() {
-        return "(" + x + "," + y + ")";
-    }
-
-    private static final Map<Integer, Point> cache = new ConcurrentHashMap<>();
-
-    public static Point fromXY(int x, int y) {
-        final int index = y * Board.N_SQUARES + x;
-        Point point = cache.get(index);
-        if (point == null) {
-            point = new Point(x, y);
-            cache.put(index, point);
-        }
-        return point;
-    }
-
-    public static Point fromNotation(String s) {
-        return fromXY((int) s.charAt(0) - 'a', (int) s.charAt(1) - '1');
-    }
-
-    public String toNotation() {
-        return letters[x] + Integer.toString(y + 1);
-    }
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/model/Queen.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.model;
-
-import java.util.List;
-
-/**
- * Queen class.
- *
- */
-public final class Queen extends Piece {
-
-    public Queen(Color color) {
-        super(color);
-    }
-
-    @Override
-    public boolean isValidMove(int x1, int y1, int x2, int y2) {
-        if (!super.isValidMove(x1, y1, x2, y2)) {
-            return false;
-        }
-        return (x1 == x2 && y1 != y2)
-                || (x1 != x2 && y1 == y2)
-                || Math.abs(x2 - x1) == Math.abs(y2 - y1);
-    }
-
-    @Override
-    public String toNotation() {
-        return "Q";
-    }
-
-    @Override
-    public List<Point> generatePath(Point from, Point to) throws GameException {
-        if (!isValidMove(from, to)) {
-            throw new GameException(this, from, to);
-        }
-        return (from.getX() != to.getX() && from.getY() != to.getY())
-                ? color.getBishop().generatePath(from, to) : color.getRook().generatePath(from, to);
-    }
-
-    @Override
-    public List<Point> generateMoves(Point from, Board board) {
-        final List<Point> moves = color.getBishop().generateMoves(from, board);
-        moves.addAll(color.getRook().generateMoves(from, board));
-        return moves;
-    }
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/model/Rook.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,131 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.model;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Rook class.
- *
- */
-public final class Rook extends Piece {
-
-    protected Rook(Color color) {
-        super(color);
-    }
-
-    @Override
-    public boolean isValidMove(int x1, int y1, int x2, int y2) {
-        if (!super.isValidMove(x1, y1, x2, y2)) {
-            return false;
-        }
-        return (x1 == x2 && y1 != y2) || (x1 != x2 && y1 == y2);
-    }
-
-    @Override
-    public String toNotation() {
-        return "R";
-    }
-
-    @Override
-    public List<Point> generatePath(Point from, Point to) throws GameException {
-        if (!isValidMove(from, to)) {
-            throw new GameException(this, from, to);
-        }
-
-        int x, y;
-        final List<Point> path = new ArrayList<>();
-        if (from.getX() > to.getX()) {
-            for (x = from.getX() - 1; x > to.getX(); x--) {
-                path.add(Point.fromXY(x, from.getY()));
-            }
-        } else if (from.getX() < to.getX()) {
-            for (x = from.getX() + 1; x < to.getX(); x++) {
-                path.add(Point.fromXY(x, from.getY()));
-            }
-        } else if (from.getY() > to.getY()) {
-            for (y = from.getY() - 1; y > to.getY(); y--) {
-                path.add(Point.fromXY(from.getX(), y));
-            }
-        } else if (from.getY() < to.getY()) {
-            for (y = from.getY() + 1; y < to.getY(); y++) {
-                path.add(Point.fromXY(from.getX(), y));
-            }
-        } else {
-            throw new InternalError();
-        }
-        return path;
-    }
-
-    @Override
-    public List<Point> generateMoves(Point from, Board board) {
-        int x, y;
-        final List<Point> moves = new ArrayList<>();
-
-        // (+, y)
-        x = from.getX() + 1;
-        y = from.getY();
-        while (x < Board.N_SQUARES) {
-            final Point to = Point.fromXY(x, y);
-            if (isLegalMove(from, to, board)) {
-                moves.add(to);
-            }
-            x++;
-        }
-        // (-, y)
-        x = from.getX() - 1;
-        y = from.getY();
-        while (x >= 0) {
-            final Point to = Point.fromXY(x, y);
-            if (isLegalMove(from, to, board)) {
-                moves.add(to);
-            }
-            x--;
-        }
-        // (x, +)
-        x = from.getX();
-        y = from.getY() + 1;
-        while (y < Board.N_SQUARES) {
-            final Point to = Point.fromXY(x, y);
-            if (isLegalMove(from, to, board)) {
-                moves.add(to);
-            }
-            y++;
-        }
-        // (x, -)
-        x = from.getX();
-        y = from.getY() - 1;
-        while (y >= 0) {
-            final Point to = Point.fromXY(x, y);
-            if (isLegalMove(from, to, board)) {
-                moves.add(to);
-            }
-            y--;
-        }
-        return moves;
-    }
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/model/Square.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,132 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.model;
-
-/**
- * Square class.
- *
- */
-public class Square {
-
-    /**
-     * Point or coordinate of this square in the board.
-     */
-    private final Point point;
-
-    /**
-     * Piece sitting on this square or <code>null</code> if square
-     * is empty.
-     */
-    private Piece piece;
-
-    public Square(int x, int y) {
-        this(x, y, null);
-    }
-
-    public Square(int x, int y, Piece piece) {
-        point = new Point(x, y);
-        this.piece = piece;
-    }
-
-    public Square(Point point) {
-        this(point, null);
-    }
-
-    public Square(Point point, Piece piece) {
-        this.point = point;
-        this.piece = piece;
-    }
-
-    /**
-     * Returns the point of this square on the board.
-     *
-     * @return Point or coordinate for this square.
-     */
-    public Point getPoint() {
-        return point;
-    }
-
-    /**
-     * Returns the piece sitting on this square or <code>null<code>
-     * if the square is empty.
-     *
-     * @return Piece on square or <code>null</code>.
-     */
-    public Piece getPiece() {
-        return piece;
-    }
-
-    /**
-     * Sets a new piece on this square.
-     *
-     * @param piece New piece.
-     */
-    public void setPiece(Piece piece) {
-        this.piece = piece;
-    }
-
-    /**
-     * Determines if a square is empty or not.
-     *
-     * @return Value <code>true</code> if piece on square, <code>false</code> otherwise.
-     */
-    public boolean isEmpty() {
-        return piece == null;
-    }
-
-    /**
-     * Returns the color for this square on the board.
-     *
-     * @return Color for this square.
-     */
-    public Color getColor() {
-        return (point.getX() + point.getY()) % 2 == 0 ? Color.B : Color.W;
-    }
-
-    /**
-     * Returns representation in algebraic notation. Letter for piece followed
-     * by coordinate. For example, Ra1 for rook on a1 (0, 0). If no piece in
-     * square, returns a strings with spaces.
-     *
-     * @return Notation representation.
-     */
-    public String toNotation() {
-        if (piece == null) {
-            return "   ";
-        }
-        return piece.toNotation() + point.toNotation();
-    }
-
-    /**
-     * String representation for this square.
-     *
-     * @return String representation.
-     */
-    @Override
-    public String toString() {
-        return toNotation();
-    }
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/BoardRep.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.protocol;
-
-import java.util.List;
-
-import com.oracle.chess.model.Board;
-import com.oracle.chess.model.Color;
-import com.oracle.chess.model.Piece;
-import com.oracle.chess.model.Point;
-import com.oracle.chess.model.Square;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-/**
- * BoardRep class.
- *
- */
-public class BoardRep {
-
-    private List<String> whites;
-
-    private List<String> blacks;
-
-    public BoardRep() {
-    }
-
-    public BoardRep(Board board) {
-        whites = new ArrayList<>();
-        final Iterator<Square> wi = board.getIterator(Color.W);
-        while (wi.hasNext()) {
-            whites.add(wi.next().toNotation());
-        }
-        blacks = new ArrayList<>();
-        final Iterator<Square> bi = board.getIterator(Color.B);
-        while (bi.hasNext()) {
-            blacks.add(bi.next().toNotation());
-        }
-    }
-
-    public List<String> getWhites() {
-        return whites;
-    }
-
-    public void setWhites(List<String> whites) {
-        this.whites = whites;
-    }
-
-    public List<String> getBlacks() {
-        return blacks;
-    }
-
-    public void setBlacks(List<String> blacks) {
-        this.blacks = blacks;
-    }
-
-    public Board toBoard() {
-        final Board board = new Board();
-        board.clear();
-        if (whites != null) {
-            for (String w : whites) {
-                board.setPiece(Piece.fromNotation(Color.W, w.substring(0, 1)),
-                               Point.fromNotation(w.substring(1)));
-            }
-        }
-        if (blacks != null) {
-            for (String b : blacks) {
-                board.setPiece(Piece.fromNotation(Color.B, b.substring(0, 1)),
-                               Point.fromNotation(b.substring(1)));
-            }
-        }
-        return board;
-    }
-
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/CheckCredentials.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.protocol;
-
-/**
- * CheckCredentials class.
- *
- */
-public class CheckCredentials extends Message {
-
-    @Override
-    public Message processMe(ServerMessageProcessor processor) {
-        return processor.process(this);
-    }
-
-    @Override
-    public CheckCredentialsRsp newResponse() {
-        return new CheckCredentialsRsp(getUsername(), getPassword());
-    }
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/CheckCredentialsRsp.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.protocol;
-
-/**
- * CheckCredentialsRsp class.
- *
- */
-public class CheckCredentialsRsp extends MessageRsp {
-
-    public static enum Check {
-        VALID, INVALID, NOT_REGISTERED
-    };
-
-    public CheckCredentialsRsp() {
-    }
-
-    public CheckCredentialsRsp(String username, String password) {
-        setUsername(username);
-        setPassword(password);
-    }
-
-    private Check type;
-
-    public Check getCheck() {
-        return type;
-    }
-
-    public void setCheck(Check type) {
-        this.type = type;
-    }
-
-    @Override
-    public void processMe(ClientMessageProcessor processor) {
-        processor.process(this);
-    }
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/ClientMessageProcessor.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.protocol;
-
-/**
- * Interface ClientMessageProcessor.
- *
- */
-public interface ClientMessageProcessor {
-
-    public void process(CreateGameRsp message);
-
-    public void process(JoinGameRsp message);
-
-    public void process(SendMoveRsp message);
-
-    public void process(QueryMovesRsp message);
-
-    public void process(UpdateGame message);
-
-    public void process(QueryGamesRsp message);
-
-    public void process(QueryGameRsp message);
-
-    public void process(SendAction message);
-
-    public void process(SendActionRsp message);
-
-    public void process(CheckCredentialsRsp message);
-
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/CreateGame.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.protocol;
-
-import com.oracle.chess.model.Color;
-
-/**
- * CreateGame class.
- *
- */
-public class CreateGame extends Message {
-
-    protected String summary;
-
-    private BoardRep board;
-
-    private Color turn;
-
-    private boolean persisted;
-
-    public CreateGame() {
-    }
-
-    public CreateGame(String gameId, Color color) {
-        this(gameId, color, null);
-    }
-
-    public CreateGame(String gameId, Color color, String summary) {
-        super(gameId);
-        this.color = color;
-        this.summary = summary;
-    }
-
-    public String getSummary() {
-        return summary;
-    }
-
-    public void setSummary(String summary) {
-        this.summary = summary;
-    }
-
-    public BoardRep getBoard() {
-        return board;
-    }
-
-    public void setBoard(BoardRep board) {
-        this.board = board;
-    }
-
-    public boolean hasBoard() {
-        return board != null;
-    }
-
-    public Color getTurn() {
-        return turn;
-    }
-
-    public void setTurn(Color turn) {
-        this.turn = turn;
-    }
-
-    public boolean hasTurn() {
-        return turn != null;
-    }
-
-    public boolean isPersisted() {
-        return persisted;
-    }
-
-    public void setPersisted(boolean persisted) {
-        this.persisted = persisted;
-    }
-
-    @Override
-    public Message processMe(ServerMessageProcessor processor) {
-        return processor.process(this);
-    }
-
-    @Override
-    public CreateGameRsp newResponse() {
-        return new CreateGameRsp(gameId, color);
-    }
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/CreateGameRsp.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.protocol;
-
-import com.oracle.chess.model.Color;
-
-/**
- * CreateGameRsp class.
- *
- */
-public class CreateGameRsp extends GameRsp {
-
-    public CreateGameRsp() {
-    }
-
-    public CreateGameRsp(String gameId, Color color) {
-        super(gameId);
-        this.color = color;
-    }
-
-    @Override
-    public void processMe(ClientMessageProcessor processor) {
-        processor.process(this);
-    }
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/GameRsp.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.protocol;
-
-/**
- * GameRsp class.
- *
- */
-public abstract class GameRsp extends MessageRsp {
-
-    private String summary;
-
-    private boolean open;
-
-    private String whitePlayer;
-
-    private String blackPlayer;
-
-    private boolean completed;
-
-    public GameRsp() {
-    }
-
-    public GameRsp(String gameId) {
-        super(gameId);
-    }
-
-    public String getSummary() {
-        return summary;
-    }
-
-    public void setSummary(String summary) {
-        this.summary = summary;
-    }
-
-    public boolean isOpen() {
-        return open;
-    }
-
-    public void setOpen(boolean open) {
-        this.open = open;
-    }
-
-    public String getWhitePlayer() {
-        return whitePlayer;
-    }
-
-    public void setWhitePlayer(String whitePlayer) {
-        this.whitePlayer = whitePlayer;
-    }
-
-    public String getBlackPlayer() {
-        return blackPlayer;
-    }
-
-    public void setBlackPlayer(String blackPlayer) {
-        this.blackPlayer = blackPlayer;
-    }
-
-    public boolean isCompleted() {
-        return completed;
-    }
-
-    public void setCompleted(boolean completed) {
-        this.completed = completed;
-    }
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/JoinGame.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.protocol;
-
-/**
- * JoinGame class.
- *
- */
-public class JoinGame extends Message {
-
-    private boolean observer;
-
-    private boolean replay;
-
-    public JoinGame() {
-    }
-
-    public JoinGame(String gameId) {
-        super(gameId);
-    }
-
-    public boolean isObserver() {
-        return observer;
-    }
-
-    public void setObserver(boolean observer) {
-        this.observer = observer;
-    }
-
-    public boolean isReplay() {
-        return replay;
-    }
-
-    public void setReplay(boolean replay) {
-        this.replay = replay;
-    }
-
-    @Override
-    public Message processMe(ServerMessageProcessor processor) {
-        return processor.process(this);
-    }
-
-    @Override
-    public JoinGameRsp newResponse() {
-        return new JoinGameRsp(gameId);
-    }
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/JoinGameRsp.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.protocol;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * JoinGameRsp class.
- *
- */
-public class JoinGameRsp extends GameRsp {
-
-    private List<String> moves;
-
-    public JoinGameRsp() {
-    }
-
-    public JoinGameRsp(String gameId) {
-        super(gameId);
-    }
-
-    public List<String> getMoves() {
-        return moves;
-    }
-
-    public void setMoves(List<String> moves) {
-        this.moves = moves;
-    }
-
-    public void addMove(String move) {
-        if (moves == null) {
-            moves = new ArrayList<>();
-        }
-        moves.add(move);
-    }
-
-    @Override
-    public void processMe(ClientMessageProcessor processor) {
-        processor.process(this);
-    }
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/Message.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,276 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.protocol;
-
-import java.beans.IntrospectionException;
-import java.beans.Introspector;
-import java.beans.PropertyDescriptor;
-import java.io.StringWriter;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import javax.json.Json;
-import javax.json.JsonNumber;
-import javax.json.JsonObject;
-import javax.json.JsonObjectBuilder;
-import javax.json.JsonString;
-import javax.json.JsonValue;
-import javax.json.JsonArray;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import javax.json.JsonArrayBuilder;
-import javax.json.JsonWriter;
-import javax.json.JsonWriterFactory;
-import javax.json.stream.JsonGenerator;
-
-import com.oracle.chess.model.Color;
-import java.lang.reflect.ParameterizedType;
-
-/**
- * Message class.
- *
- */
-public abstract class Message {
-
-    // Create JSON writer factory with pretty printing enabled
-    private static final Map<String, Boolean> config;
-    private static final JsonWriterFactory factory;
-    static {
-        config = new HashMap<>();
-        config.put(JsonGenerator.PRETTY_PRINTING, Boolean.TRUE);
-        factory = Json.createWriterFactory(config);
-    }
-
-    protected String msg;
-
-    protected String gameId;
-
-    protected Color color;
-
-    private String username;
-
-    private String password;
-
-    public Message() {
-        msg = getClass().getSimpleName();
-    }
-
-    public Message(String gameId) {
-        msg = getClass().getSimpleName();
-        this.gameId = gameId;
-    }
-
-    public String getMsg() {
-        return msg;
-    }
-
-    public void setMsg(String msg) {
-        this.msg = msg;
-    }
-
-    public String getGameId() {
-        return gameId;
-    }
-
-    public void setGameId(String gameId) {
-        this.gameId = gameId;
-    }
-
-    public boolean hasGameId() {
-        return gameId != null;
-    }
-
-    public Color getColor() {
-        return color;
-    }
-
-    public void setColor(Color color) {
-        this.color = color;
-    }
-
-    public boolean hasColor() {
-        return color != null;
-    }
-
-    public String getUsername() {
-        return username;
-    }
-
-    public void setUsername(String username) {
-        this.username = username;
-    }
-
-    public boolean hasUsername() {
-        return username != null;
-    }
-
-    public String getPassword() {
-        return password;
-    }
-
-    public void setPassword(String password) {
-        this.password = password;
-    }
-
-    public Message readFrom(JsonObject jobj) {
-        readFrom(this, jobj);
-        return this;
-    }
-
-    private static void readFrom(Object object, JsonObject jobj) {
-        try {
-            for (PropertyDescriptor pd
-                    : Introspector.getBeanInfo(object.getClass(), Object.class).getPropertyDescriptors()) {
-                final Method m = pd.getWriteMethod();
-                if (m != null) {
-                    JsonValue jv = jobj.get(pd.getName());
-                    if (jv == null) {
-                        continue;
-                    }
-                    Class<?> clazz = m.getParameterTypes()[0];
-                    switch (jv.getValueType()) {
-                        case NULL:
-                            break;
-                        case STRING:
-                            final String sv = ((JsonString) jv).getString();
-                            if (clazz.isEnum()) {
-                                m.invoke(object, Enum.valueOf((Class<? extends Enum>) clazz, sv));
-                            } else {
-                                m.invoke(object, sv);
-                            }
-                            break;
-                        case NUMBER:
-                            m.invoke(object, ((JsonNumber) jv).intValue());
-                            break;
-                        case TRUE:
-                            m.invoke(object, true);
-                            break;
-                        case FALSE:
-                            m.invoke(object, false);
-                            break;
-                        case OBJECT:
-                            Object instance = clazz.newInstance();
-                            readFrom(instance, (JsonObject) jv);
-                            m.invoke(object, instance);
-                            break;
-                        case ARRAY:     // only array of strings and objects supported!
-                            final JsonArray ja = (JsonArray) jv;
-                            final List<Object> list = new ArrayList<>(ja.size());
-                            for (JsonValue v : ja) {
-                                if (v instanceof JsonString) {
-                                    list.add(((JsonString) v).getString());
-                                } else {
-                                    ParameterizedType pt = (ParameterizedType) m.getGenericParameterTypes()[0];
-                                    clazz = (Class<?>) pt.getActualTypeArguments()[0];
-                                    instance = clazz.newInstance();
-                                    readFrom(instance, (JsonObject) v);
-                                    list.add(instance);
-                                }
-                            }
-                            m.invoke(object, list);
-                            break;
-                        default:
-                            throw new UnsupportedOperationException("Unsupported type " + jv.getValueType());
-                    }
-                }
-            }
-        } catch (IntrospectionException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | InstantiationException ex) {
-            throw new RuntimeException(ex);
-        }
-    }
-
-    public void writeTo(JsonObjectBuilder jobj) {
-        writeTo(this, jobj);
-    }
-
-    private static void writeTo(Object object, JsonObjectBuilder jobj) {
-        try {
-            for (PropertyDescriptor pd
-                    : Introspector.getBeanInfo(object.getClass(), Object.class).getPropertyDescriptors()) {
-                final Method m = pd.getReadMethod();
-                if (m != null) {
-                    Object v = m.invoke(object);
-                    if (v == null) {
-                        continue;
-                    } else if (v instanceof String) {
-                        jobj.add(pd.getName(), (String) v);
-                    } else if (v instanceof Integer) {
-                        jobj.add(pd.getName(), (Integer) v);
-                    } else if (v instanceof Boolean) {
-                        jobj.add(pd.getName(), (Boolean) v);
-                    } else if (v instanceof Enum) {
-                        jobj.add(pd.getName(), ((Enum) v).toString());
-                    } else if (v instanceof List) {     // only list of strings or objects supported!
-                        JsonArrayBuilder jab = Json.createArrayBuilder();
-                        for (Object o : (List) v) {
-                            if (o instanceof String) {
-                                jab.add((String) o);
-                            } else {
-                                JsonObjectBuilder njobj = Json.createObjectBuilder();
-                                writeTo(o, njobj);
-                                jab.add(njobj);
-                            }
-                        }
-                        jobj.add(pd.getName(), jab.build());
-                    } else {
-                        JsonObjectBuilder newJobj = Json.createObjectBuilder();
-                        writeTo(v, newJobj);
-                        jobj.add(pd.getName(), newJobj.build());
-                    }
-                }
-            }
-        } catch (IntrospectionException | IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) {
-            throw new RuntimeException(ex);
-        }
-    }
-
-    public static Message createInstance(String className) {
-        try {
-            final ClassLoader ccl = Thread.currentThread().getContextClassLoader();
-            return (Message) ccl.loadClass("com.oracle.chess.protocol." + className).newInstance();
-        } catch (ClassNotFoundException | InstantiationException | IllegalAccessException ex) {
-            throw new RuntimeException(ex);
-        }
-    }
-
-    public abstract Message processMe(ServerMessageProcessor processor);
-
-    public MessageRsp newResponse() {
-        throw new UnsupportedOperationException("Not implemented");
-    }
-
-    @Override
-    public String toString() {
-        final JsonObjectBuilder jobj = Json.createObjectBuilder();
-        writeTo(jobj);
-        final StringWriter sw = new StringWriter();
-        try (JsonWriter jw = factory.createWriter(sw)) {
-            jw.writeObject(jobj.build());
-        }
-        return sw.toString();
-    }
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/MessageRsp.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,162 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.protocol;
-
-import com.oracle.chess.model.Color;
-
-/**
- * MessageRsp class.
- *
- */
-public abstract class MessageRsp extends Message {
-
-    public static class Error {
-
-        private int code;
-        private String message;
-
-        public Error() {
-        }
-
-        public Error(int code, String message) {
-            this.code = code;
-            this.message = message;
-        }
-
-        public int getCode() {
-            return code;
-        }
-
-        public void setCode(int code) {
-            this.code = code;
-        }
-
-        public String getMessage() {
-            return message;
-        }
-
-        public void setMessage(String message) {
-            this.message = message;
-        }
-    };
-
-    public static enum AlertType {
-        CHECKMATE, CHECK, DRAW
-    };
-
-    public static class Alert {
-
-        private AlertType type;
-        private String message;
-
-        public Alert() {
-        }
-
-        public Alert(AlertType type, String message) {
-            this.type = type;
-            this.message = message;
-        }
-
-        public AlertType getType() {
-            return type;
-        }
-
-        public void setType(AlertType type) {
-            this.type = type;
-        }
-
-        public String getMessage() {
-            return message;
-        }
-
-        public void setMessage(String message) {
-            this.message = message;
-        }
-    }
-
-    private Error error;
-
-    private Alert alert;
-
-    private BoardRep board;
-
-    private Color turn;
-
-    public MessageRsp() {
-    }
-
-    public MessageRsp(String gameId) {
-        super(gameId);
-    }
-
-    public Error getError() {
-        return error;
-    }
-
-    public void setError(Error error) {
-        this.error = error;
-    }
-
-    public boolean hasError() {
-        return error != null;
-    }
-
-    public BoardRep getBoard() {
-        return board;
-    }
-
-    public void setBoard(BoardRep board) {
-        this.board = board;
-    }
-
-    public Color getTurn() {
-        return turn;
-    }
-
-    public void setTurn(Color turn) {
-        this.turn = turn;
-    }
-
-    public boolean hasAlert() {
-        return alert != null;
-    }
-
-    public Alert getAlert() {
-        return alert;
-    }
-
-    public void setAlert(Alert alert) {
-        this.alert = alert;
-    }
-
-    @Override
-    public Message processMe(ServerMessageProcessor processor) {
-        throw new InternalError("Not implemented");
-    }
-
-    public abstract void processMe(ClientMessageProcessor processor);
-
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/QueryGame.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.protocol;
-
-/**
- * QueryGame class.
- *
- */
-public class QueryGame extends Message {
-
-    public QueryGame() {
-    }
-
-    @Override
-    public Message processMe(ServerMessageProcessor processor) {
-        return processor.process(this);
-    }
-
-    @Override
-    public QueryGameRsp newResponse() {
-        return new QueryGameRsp(gameId);
-    }
-
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/QueryGameRsp.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.protocol;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * QueryGameRsp class.
- *
- */
-public class QueryGameRsp extends GameRsp {
-
-    private List<String> moves;
-
-    public QueryGameRsp() {
-    }
-
-    public QueryGameRsp(String gameId) {
-        super(gameId);
-    }
-
-    public List<String> getMoves() {
-        return moves;
-    }
-
-    public void setMoves(List<String> moves) {
-        this.moves = moves;
-    }
-
-    public void addMove(String move) {
-        if (moves == null) {
-            moves = new ArrayList<>();
-        }
-        moves.add(move);
-    }
-
-    @Override
-    public void processMe(ClientMessageProcessor processor) {
-        processor.process(this);
-    }
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/QueryGames.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.protocol;
-
-/**
- * QueryGames class.
- *
- */
-public class QueryGames extends Message {
-
-    public QueryGames() {
-    }
-
-    @Override
-    public Message processMe(ServerMessageProcessor processor) {
-        return processor.process(this);
-    }
-
-    @Override
-    public QueryGamesRsp newResponse() {
-        return new QueryGamesRsp(gameId);
-    }
-
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/QueryGamesRsp.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,129 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.protocol;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * QueryGamesRsp class.
- *
- */
-public class QueryGamesRsp extends MessageRsp {
-
-    public static class Game {
-
-        private String gameId;
-
-        private String summary;
-
-        private boolean open;
-
-        private String whitePlayer;
-
-        private String blackPlayer;
-
-        private boolean completed;
-
-        public String getGameId() {
-            return gameId;
-        }
-
-        public void setGameId(String gameId) {
-            this.gameId = gameId;
-        }
-
-        public String getSummary() {
-            return summary;
-        }
-
-        public void setSummary(String summary) {
-            this.summary = summary;
-        }
-
-        public boolean isOpen() {
-            return open;
-        }
-
-        public void setOpen(boolean open) {
-            this.open = open;
-        }
-
-        public String getWhitePlayer() {
-            return whitePlayer;
-        }
-
-        public void setWhitePlayer(String whitePlayer) {
-            this.whitePlayer = whitePlayer;
-        }
-
-        public String getBlackPlayer() {
-            return blackPlayer;
-        }
-
-        public void setBlackPlayer(String blackPlayer) {
-            this.blackPlayer = blackPlayer;
-        }
-
-        public boolean isCompleted() {
-            return completed;
-        }
-
-        public void setCompleted(boolean completed) {
-            this.completed = completed;
-        }
-    };
-
-    private List<Game> games = new ArrayList<>();
-
-    public QueryGamesRsp() {
-    }
-
-    public QueryGamesRsp(String gameId) {
-        super(gameId);
-    }
-
-    public void addGame(Game game) {
-        if (games == null) {
-            games = new ArrayList<>();
-        }
-        games.add(game);
-    }
-
-    public List<Game> getGames() {
-        return games;
-    }
-
-    public void setGames(List<Game> games) {
-        this.games = games;
-    }
-
-    @Override
-    public void processMe(ClientMessageProcessor processor) {
-        processor.process(this);
-    }
-
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/QueryMoves.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.protocol;
-
-/**
- * QueryMoves class.
- *
- */
-public class QueryMoves extends Message {
-
-    private String from;
-
-    public QueryMoves() {
-    }
-
-    public String getFrom() {
-        return from;
-    }
-
-    public void setFrom(String from) {
-        this.from = from;
-    }
-
-    @Override
-    public Message processMe(ServerMessageProcessor processor) {
-        return processor.process(this);
-    }
-
-    @Override
-    public QueryMovesRsp newResponse() {
-        return new QueryMovesRsp(gameId);
-    }
-
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/QueryMovesRsp.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.protocol;
-
-import java.util.List;
-
-/**
- * QueryMovesRsp class.
- *
- */
-public class QueryMovesRsp extends MessageRsp {
-
-    private String from;
-
-    private List<String> moves;
-
-    public QueryMovesRsp() {
-    }
-
-    public QueryMovesRsp(String gameId) {
-        super(gameId);
-    }
-
-    public QueryMovesRsp(List<String> moves) {
-        this.moves = moves;
-    }
-
-    public String getFrom() {
-        return from;
-    }
-
-    public void setFrom(String from) {
-        this.from = from;
-    }
-
-    public List<String> getMoves() {
-        return moves;
-    }
-
-    public void setMoves(List<String> moves) {
-        this.moves = moves;
-    }
-
-    @Override
-    public void processMe(ClientMessageProcessor processor) {
-        processor.process(this);
-    }
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/SendAction.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.protocol;
-
-/**
- * SendAction class.
- *
- */
-public class SendAction extends Message {
-
-    public static enum Type {
-        RESIGN, DRAW_REQUEST
-    };
-
-    private Type type;
-
-    private String message;
-
-    public SendAction() {
-    }
-
-    public SendAction(String gameId) {
-        super(gameId);
-    }
-
-    public Type getType() {
-        return type;
-    }
-
-    public void setType(Type type) {
-        this.type = type;
-    }
-
-    public String getMessage() {
-        return message;
-    }
-
-    public void setMessage(String message) {
-        this.message = message;
-    }
-
-    @Override
-    public Message processMe(ServerMessageProcessor processor) {
-        return processor.process(this);
-    }
-
-    public void processMe(ClientMessageProcessor processor) {
-        processor.process(this);
-    }
-
-    @Override
-    public SendActionRsp newResponse() {
-        return new SendActionRsp(gameId);
-    }
-
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/SendActionRsp.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.protocol;
-
-/**
- * SendAction class.
- *
- */
-public class SendActionRsp extends MessageRsp {
-
-    public static enum Type {
-        RESIGN_PROCESSED, DRAW_ACCEPTED, DRAW_REJECTED
-    };
-
-    private Type type;
-
-    private String message;
-
-    public SendActionRsp() {
-    }
-
-    public SendActionRsp(String gameId) {
-        super(gameId);
-    }
-
-    public Type getType() {
-        return type;
-    }
-
-    public void setType(Type type) {
-        this.type = type;
-    }
-
-    public String getMessage() {
-        return message;
-    }
-
-    public void setMessage(String message) {
-        this.message = message;
-    }
-
-    @Override
-    public Message processMe(ServerMessageProcessor processor) {
-        return processor.process(this);
-    }
-
-    @Override
-    public void processMe(ClientMessageProcessor processor) {
-        processor.process(this);
-    }
-
-    @Override
-    public MessageRsp newResponse() {
-        return new SendActionRsp(gameId);
-    }
-
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/SendMove.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.protocol;
-
-/**
- * SendMove class.
- *
- */
-public class SendMove extends Message {
-
-    private String from;
-
-    private String to;
-
-    private String piece = "P";         // pawn
-
-    public SendMove() {
-    }
-
-    public SendMove(String gameId) {
-        super(gameId);
-    }
-
-    public String getFrom() {
-        return from;
-    }
-
-    public void setFrom(String from) {
-        this.from = from;
-    }
-
-    public String getTo() {
-        return to;
-    }
-
-    public void setTo(String to) {
-        this.to = to;
-    }
-
-    public String getPiece() {
-        return piece;
-    }
-
-    public void setPiece(String piece) {
-        this.piece = piece;
-    }
-
-    @Override
-    public Message processMe(ServerMessageProcessor processor) {
-        return processor.process(this);
-    }
-
-    @Override
-    public SendMoveRsp newResponse() {
-        return new SendMoveRsp(gameId);
-    }
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/SendMoveRsp.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.protocol;
-
-import com.oracle.chess.model.Move.Type;
-
-/**
- * SendMoveRsp class.
- *
- */
-public class SendMoveRsp extends MessageRsp {
-
-    private Type moveType;
-
-    public SendMoveRsp() {
-    }
-
-    public SendMoveRsp(String gameId) {
-        super(gameId);
-    }
-
-    public Type getMoveType() {
-        return moveType;
-    }
-
-    public void setMoveType(Type moveType) {
-        this.moveType = moveType;
-    }
-
-    @Override
-    public void processMe(ClientMessageProcessor processor) {
-        processor.process(this);
-    }
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/ServerMessageProcessor.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.protocol;
-
-/**
- * Interface MessageProcessor.
- *
- */
-public interface ServerMessageProcessor {
-
-    public Message process(CreateGame message);
-
-    public Message process(JoinGame message);
-
-    public Message process(SendMove message);
-
-    public Message process(QueryMoves message);
-
-    public Message process(QueryGames message);
-
-    public Message process(QueryGame message);
-
-    public Message process(SendAction message);
-
-    public Message process(SendActionRsp message);
-
-    public Message process(CheckCredentials message);
-
-}
--- a/apps/experiments/Chess/ChessLibrary/src/main/java/com/oracle/chess/protocol/UpdateGame.java	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.chess.protocol;
-
-import com.oracle.chess.model.Move.Type;
-
-/**
- * UpdateGame class.
- *
- */
-public class UpdateGame extends MessageRsp {
-
-    private String from;
-
-    private String to;
-
-    private Type moveType;
-
-    public UpdateGame() {
-    }
-
-    public UpdateGame(String gameId) {
-        super(gameId);
-    }
-
-    public String getFrom() {
-        return from;
-    }
-
-    public void setFrom(String from) {
-        this.from = from;
-    }
-
-    public String getTo() {
-        return to;
-    }
-
-    public void setTo(String to) {
-        this.to = to;
-    }
-
-    public Type getMoveType() {
-        return moveType;
-    }
-
-    public void setMoveType(Type moveType) {
-        this.moveType = moveType;
-    }
-
-    @Override
-    public void processMe(ClientMessageProcessor processor) {
-        processor.process(this);
-    }
-}
--- a/apps/experiments/ConferenceScheduleApp/build.gradle	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-
-
-apply plugin:'application'
-
-mainClassName = "com.javafx.experiments.scheduleapp.ConferenceScheduleApp"
-
-jar {
-    manifest.attributes("Main-Class": mainClassName)
-}
--- a/apps/experiments/ConferenceScheduleApp/manifest.mf	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-Manifest-Version: 1.0
-X-COMMENT: Main-Class will be added automatically by build
-
--- a/apps/experiments/ConferenceScheduleApp/nbproject/build-impl.xml	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1434 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-*** GENERATED FROM project.xml - DO NOT EDIT  ***
-***         EDIT ../build.xml INSTEAD         ***
-
-For the purpose of easier reading the script
-is divided into following sections:
-
-  - initialization
-  - compilation
-  - jar
-  - execution
-  - debugging
-  - javadoc
-  - test compilation
-  - test execution
-  - test debugging
-  - applet
-  - cleanup
-
-        -->
-<project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="ConferenceScheduleApp-impl">
-    <import file="jfx-impl.xml"/>
-    <fail message="Please build using Ant 1.8.0 or higher.">
-        <condition>
-            <not>
-                <antversion atleast="1.8.0"/>
-            </not>
-        </condition>
-    </fail>
-    <target depends="test,jar,javadoc" description="Build and test whole project." name="default"/>
-    <!-- 
-                ======================
-                INITIALIZATION SECTION 
-                ======================
-            -->
-    <target name="-pre-init">
-        <!-- Empty placeholder for easier customization. -->
-        <!-- You can override this target in the ../build.xml file. -->
-    </target>
-    <target depends="-pre-init" name="-init-private">
-        <property file="nbproject/private/config.properties"/>
-        <property file="nbproject/private/configs/${config}.properties"/>
-        <property file="nbproject/private/private.properties"/>
-    </target>
-    <target depends="-pre-init,-init-private" name="-init-user">
-        <property file="${user.properties.file}"/>
-        <!-- The two properties below are usually overridden -->
-        <!-- by the active platform. Just a fallback. -->
-        <property name="default.javac.source" value="1.4"/>
-        <property name="default.javac.target" value="1.4"/>
-    </target>
-    <target depends="-pre-init,-init-private,-init-user" name="-init-project">
-        <property file="nbproject/configs/${config}.properties"/>
-        <property file="nbproject/project.properties"/>
-    </target>
-    <target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init">
-        <j2seproject1:property name="platform.home" value="platforms.${platform.active}.home"/>
-        <j2seproject1:property name="platform.bootcp" value="platforms.${platform.active}.bootclasspath"/>
-        <j2seproject1:property name="platform.compiler" value="platforms.${platform.active}.compile"/>
-        <j2seproject1:property name="platform.javac.tmp" value="platforms.${platform.active}.javac"/>
-        <condition property="platform.javac" value="${platform.home}/bin/javac">
-            <equals arg1="${platform.javac.tmp}" arg2="$${platforms.${platform.active}.javac}"/>
-        </condition>
-        <property name="platform.javac" value="${platform.javac.tmp}"/>
-        <j2seproject1:property name="platform.java.tmp" value="platforms.${platform.active}.java"/>
-        <condition property="platform.java" value="${platform.home}/bin/java">
-            <equals arg1="${platform.java.tmp}" arg2="$${platforms.${platform.active}.java}"/>
-        </condition>
-        <property name="platform.java" value="${platform.java.tmp}"/>
-        <j2seproject1:property name="platform.javadoc.tmp" value="platforms.${platform.active}.javadoc"/>
-        <condition property="platform.javadoc" value="${platform.home}/bin/javadoc">
-            <equals arg1="${platform.javadoc.tmp}" arg2="$${platforms.${platform.active}.javadoc}"/>
-        </condition>
-        <property name="platform.javadoc" value="${platform.javadoc.tmp}"/>
-        <condition property="platform.invalid" value="true">
-            <or>
-                <contains string="${platform.javac}" substring="$${platforms."/>
-                <contains string="${platform.java}" substring="$${platforms."/>
-                <contains string="${platform.javadoc}" substring="$${platforms."/>
-            </or>
-        </condition>
-        <fail unless="platform.home">Must set platform.home</fail>
-        <fail unless="platform.bootcp">Must set platform.bootcp</fail>
-        <fail unless="platform.java">Must set platform.java</fail>
-        <fail unless="platform.javac">Must set platform.javac</fail>
-        <fail if="platform.invalid">
- The J2SE Platform is not correctly set up.
- Your active platform is: ${platform.active}, but the corresponding property "platforms.${platform.active}.home" is not found in the project's properties files. 
- Either open the project in the IDE and setup the Platform with the same name or add it manually.
- For example like this:
-     ant -Duser.properties.file=&lt;path_to_property_file&gt; jar (where you put the property "platforms.${platform.active}.home" in a .properties file)
-  or ant -Dplatforms.${platform.active}.home=&lt;path_to_JDK_home&gt; jar (where no properties file is used) 
-  </fail>
-        <available file="${manifest.file}" property="manifest.available"/>
-        <condition property="splashscreen.available">
-            <and>
-                <not>
-                    <equals arg1="${application.splash}" arg2="" trim="true"/>
-                </not>
-                <available file="${application.splash}"/>
-            </and>
-        </condition>
-        <condition property="main.class.available">
-            <and>
-                <isset property="main.class"/>
-                <not>
-                    <equals arg1="${main.class}" arg2="" trim="true"/>
-                </not>
-            </and>
-        </condition>
-        <condition property="manifest.available+main.class">
-            <and>
-                <isset property="manifest.available"/>
-                <isset property="main.class.available"/>
-            </and>
-        </condition>
-        <condition property="do.archive">
-            <not>
-                <istrue value="${jar.archive.disabled}"/>
-            </not>
-        </condition>
-        <condition property="do.mkdist">
-            <and>
-                <isset property="do.archive"/>
-                <isset property="libs.CopyLibs.classpath"/>
-                <not>
-                    <istrue value="${mkdist.disabled}"/>
-                </not>
-            </and>
-        </condition>
-        <condition property="manifest.available+main.class+mkdist.available">
-            <and>
-                <istrue value="${manifest.available+main.class}"/>
-                <isset property="do.mkdist"/>
-            </and>
-        </condition>
-        <condition property="do.archive+manifest.available">
-            <and>
-                <isset property="manifest.available"/>
-                <istrue value="${do.archive}"/>
-            </and>
-        </condition>
-        <condition property="do.archive+main.class.available">
-            <and>
-                <isset property="main.class.available"/>
-                <istrue value="${do.archive}"/>
-            </and>
-        </condition>
-        <condition property="do.archive+splashscreen.available">
-            <and>
-                <isset property="splashscreen.available"/>
-                <istrue value="${do.archive}"/>
-            </and>
-        </condition>
-        <condition property="do.archive+manifest.available+main.class">
-            <and>
-                <istrue value="${manifest.available+main.class}"/>
-                <istrue value="${do.archive}"/>
-            </and>
-        </condition>
-        <condition property="manifest.available-mkdist.available">
-            <or>
-                <istrue value="${manifest.available}"/>
-                <isset property="do.mkdist"/>
-            </or>
-        </condition>
-        <condition property="manifest.available+main.class-mkdist.available">
-            <or>
-                <istrue value="${manifest.available+main.class}"/>
-                <isset property="do.mkdist"/>
-            </or>
-        </condition>
-        <condition property="have.tests">
-            <or>
-                <available file="${test.src.dir}"/>
-            </or>
-        </condition>
-        <condition property="have.sources">
-            <or>
-                <available file="${src.dir}"/>
-            </or>
-        </condition>
-        <condition property="netbeans.home+have.tests">
-            <and>
-                <isset property="netbeans.home"/>
-                <isset property="have.tests"/>
-            </and>
-        </condition>
-        <condition property="no.javadoc.preview">
-            <and>
-                <isset property="javadoc.preview"/>
-                <isfalse value="${javadoc.preview}"/>
-            </and>
-        </condition>
-        <property name="run.jvmargs" value=""/>
-        <property name="run.jvmargs.ide" value=""/>
-        <property name="javac.compilerargs" value=""/>
-        <property name="work.dir" value="${basedir}"/>
-        <condition property="no.deps">
-            <and>
-                <istrue value="${no.dependencies}"/>
-            </and>
-        </condition>
-        <property name="javac.debug" value="true"/>
-        <property name="javadoc.preview" value="true"/>
-        <property name="application.args" value=""/>
-        <property name="source.encoding" value="${file.encoding}"/>
-        <property name="runtime.encoding" value="${source.encoding}"/>
-        <condition property="javadoc.encoding.used" value="${javadoc.encoding}">
-            <and>
-                <isset property="javadoc.encoding"/>
-                <not>
-                    <equals arg1="${javadoc.encoding}" arg2=""/>
-                </not>
-            </and>
-        </condition>
-        <property name="javadoc.encoding.used" value="${source.encoding}"/>
-        <property name="includes" value="**"/>
-        <property name="excludes" value=""/>
-        <property name="do.depend" value="false"/>
-        <condition property="do.depend.true">
-            <istrue value="${do.depend}"/>
-        </condition>
-        <path id="endorsed.classpath.path" path="${endorsed.classpath}"/>
-        <condition else="" property="endorsed.classpath.cmd.line.arg" value="-Xbootclasspath/p:'${toString:endorsed.classpath.path}'">
-            <length length="0" string="${endorsed.classpath}" when="greater"/>
-        </condition>
-        <property name="jar.index" value="false"/>
-        <property name="jar.index.metainf" value="${jar.index}"/>
-        <property name="copylibs.rebase" value="true"/>
-        <available file="${meta.inf.dir}/persistence.xml" property="has.persistence.xml"/>
-        <condition property="junit.available">
-            <or>
-                <available classname="org.junit.Test" classpath="${run.test.classpath}"/>
-                <available classname="junit.framework.Test" classpath="${run.test.classpath}"/>
-            </or>
-        </condition>
-        <condition property="testng.available">
-            <available classname="org.testng.annotations.Test" classpath="${run.test.classpath}"/>
-        </condition>
-        <condition property="junit+testng.available">
-            <and>
-                <istrue value="${junit.available}"/>
-                <istrue value="${testng.available}"/>
-            </and>
-        </condition>
-        <condition else="testng" property="testng.mode" value="mixed">
-            <istrue value="${junit+testng.available}"/>
-        </condition>
-        <condition else="" property="testng.debug.mode" value="-mixed">
-            <istrue value="${junit+testng.available}"/>
-        </condition>
-    </target>
-    <target name="-post-init">
-        <!-- Empty placeholder for easier customization. -->
-        <!-- You can override this target in the ../build.xml file. -->
-    </target>
-    <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-check-javafx" name="-init-check">
-        <fail unless="src.dir">Must set src.dir</fail>
-        <fail unless="test.src.dir">Must set test.src.dir</fail>
-        <fail unless="build.dir">Must set build.dir</fail>
-        <fail unless="dist.dir">Must set dist.dir</fail>
-        <fail unless="build.classes.dir">Must set build.classes.dir</fail>
-        <fail unless="dist.javadoc.dir">Must set dist.javadoc.dir</fail>
-        <fail unless="build.test.classes.dir">Must set build.test.classes.dir</fail>
-        <fail unless="build.test.results.dir">Must set build.test.results.dir</fail>
-        <fail unless="build.classes.excludes">Must set build.classes.excludes</fail>
-        <fail unless="dist.jar">Must set dist.jar</fail>
-    </target>
-    <target name="-init-macrodef-property">
-        <macrodef name="property" uri="http://www.netbeans.org/ns/j2se-project/1">
-            <attribute name="name"/>
-            <attribute name="value"/>
-            <sequential>
-                <property name="@{name}" value="${@{value}}"/>
-            </sequential>
-        </macrodef>
-    </target>
-    <target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-macrodef-javac-with-processors">
-        <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
-            <attribute default="${src.dir}" name="srcdir"/>
-            <attribute default="${build.classes.dir}" name="destdir"/>
-            <attribute default="${javac.classpath}" name="classpath"/>
-            <attribute default="${javac.processorpath}" name="processorpath"/>
-            <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/>
-            <attribute default="${includes}" name="includes"/>
-            <attribute default="${excludes}" name="excludes"/>
-            <attribute default="${javac.debug}" name="debug"/>
-            <attribute default="${empty.dir}" name="sourcepath"/>
-            <attribute default="${empty.dir}" name="gensrcdir"/>
-            <element name="customize" optional="true"/>
-            <sequential>
-                <property location="${build.dir}/empty" name="empty.dir"/>
-                <mkdir dir="${empty.dir}"/>
-                <mkdir dir="@{apgeneratedsrcdir}"/>
-                <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" executable="${platform.javac}" fork="yes" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
-                    <src>
-                        <dirset dir="@{gensrcdir}" erroronmissingdir="false">
-                            <include name="*"/>
-                        </dirset>
-                    </src>
-                    <classpath>
-                        <path path="@{classpath}"/>
-                    </classpath>
-                    <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
-                    <compilerarg line="${javac.compilerargs}"/>
-                    <compilerarg value="-processorpath"/>
-                    <compilerarg path="@{processorpath}:${empty.dir}"/>
-                    <compilerarg line="${ap.processors.internal}"/>
-                    <compilerarg line="${annotation.processing.processor.options}"/>
-                    <compilerarg value="-s"/>
-                    <compilerarg path="@{apgeneratedsrcdir}"/>
-                    <compilerarg line="${ap.proc.none.internal}"/>
-                    <customize/>
-                </javac>
-            </sequential>
-        </macrodef>
-    </target>
-    <target depends="-init-ap-cmdline-properties" name="-init-macrodef-javac-without-processors" unless="ap.supported.internal">
-        <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
-            <attribute default="${src.dir}" name="srcdir"/>
-            <attribute default="${build.classes.dir}" name="destdir"/>
-            <attribute default="${javac.classpath}" name="classpath"/>
-            <attribute default="${javac.processorpath}" name="processorpath"/>
-            <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/>
-            <attribute default="${includes}" name="includes"/>
-            <attribute default="${excludes}" name="excludes"/>
-            <attribute default="${javac.debug}" name="debug"/>
-            <attribute default="${empty.dir}" name="sourcepath"/>
-            <attribute default="${empty.dir}" name="gensrcdir"/>
-            <element name="customize" optional="true"/>
-            <sequential>
-                <property location="${build.dir}/empty" name="empty.dir"/>
-                <mkdir dir="${empty.dir}"/>
-                <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" executable="${platform.javac}" fork="yes" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
-                    <src>
-                        <dirset dir="@{gensrcdir}" erroronmissingdir="false">
-                            <include name="*"/>
-                        </dirset>
-                    </src>
-                    <classpath>
-                        <path path="@{classpath}"/>
-                    </classpath>
-                    <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
-                    <compilerarg line="${javac.compilerargs}"/>
-                    <customize/>
-                </javac>
-            </sequential>
-        </macrodef>
-    </target>
-    <target depends="-init-macrodef-javac-with-processors,-init-macrodef-javac-without-processors" name="-init-macrodef-javac">
-        <macrodef name="depend" uri="http://www.netbeans.org/ns/j2se-project/3">
-            <attribute default="${src.dir}" name="srcdir"/>
-            <attribute default="${build.classes.dir}" name="destdir"/>
-            <attribute default="${javac.classpath}" name="classpath"/>
-            <sequential>
-                <depend cache="${build.dir}/depcache" destdir="@{destdir}" excludes="${excludes}" includes="${includes}" srcdir="@{srcdir}">
-                    <classpath>
-                        <path path="@{classpath}"/>
-                    </classpath>
-                </depend>
-            </sequential>
-        </macrodef>
-        <macrodef name="force-recompile" uri="http://www.netbeans.org/ns/j2se-project/3">
-            <attribute default="${build.classes.dir}" name="destdir"/>
-            <sequential>
-                <fail unless="javac.includes">Must set javac.includes</fail>
-                <pathconvert pathsep="${line.separator}" property="javac.includes.binary">
-                    <path>
-                        <filelist dir="@{destdir}" files="${javac.includes}"/>
-                    </path>
-                    <globmapper from="*.java" to="*.class"/>
-                </pathconvert>
-                <tempfile deleteonexit="true" property="javac.includesfile.binary"/>
-                <echo file="${javac.includesfile.binary}" message="${javac.includes.binary}"/>
-                <delete>
-                    <files includesfile="${javac.includesfile.binary}"/>
-                </delete>
-                <delete>
-                    <fileset file="${javac.includesfile.binary}"/>
-                </delete>
-            </sequential>
-        </macrodef>
-    </target>
-    <target if="${junit.available}" name="-init-macrodef-junit-init">
-        <condition else="false" property="nb.junit.batch" value="true">
-            <and>
-                <istrue value="${junit.available}"/>
-                <not>
-                    <isset property="test.method"/>
-                </not>
-            </and>
-        </condition>
-        <condition else="false" property="nb.junit.single" value="true">
-            <and>
-                <istrue value="${junit.available}"/>
-                <isset property="test.method"/>
-            </and>
-        </condition>
-    </target>
-    <target if="${nb.junit.single}" name="-init-macrodef-junit-single" unless="${nb.junit.batch}">
-        <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
-            <attribute default="${includes}" name="includes"/>
-            <attribute default="${excludes}" name="excludes"/>
-            <attribute default="**" name="testincludes"/>
-            <attribute default="" name="testmethods"/>
-            <element name="customize" optional="true"/>
-            <sequential>
-                <property name="junit.forkmode" value="perTest"/>
-                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" jvm="${platform.java}" showoutput="true" tempdir="${build.dir}">
-                    <test methods="@{testmethods}" name="@{testincludes}" todir="${build.test.results.dir}"/>
-                    <syspropertyset>
-                        <propertyref prefix="test-sys-prop."/>
-                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
-                    </syspropertyset>
-                    <formatter type="brief" usefile="false"/>
-                    <formatter type="xml"/>
-                    <jvmarg value="-ea"/>
-                    <customize/>
-                </junit>
-            </sequential>
-        </macrodef>
-    </target>
-    <target if="${nb.junit.batch}" name="-init-macrodef-junit-batch" unless="${nb.junit.single}">
-        <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
-            <attribute default="${includes}" name="includes"/>
-            <attribute default="${excludes}" name="excludes"/>
-            <attribute default="**" name="testincludes"/>
-            <attribute default="" name="testmethods"/>
-            <element name="customize" optional="true"/>
-            <sequential>
-                <property name="junit.forkmode" value="perTest"/>
-                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" jvm="${platform.java}" showoutput="true" tempdir="${build.dir}">
-                    <batchtest todir="${build.test.results.dir}">
-                        <fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
-                            <filename name="@{testincludes}"/>
-                        </fileset>
-                    </batchtest>
-                    <syspropertyset>
-                        <propertyref prefix="test-sys-prop."/>
-                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
-                    </syspropertyset>
-                    <formatter type="brief" usefile="false"/>
-                    <formatter type="xml"/>
-                    <jvmarg value="-ea"/>
-                    <customize/>
-                </junit>
-            </sequential>
-        </macrodef>
-    </target>
-    <target depends="-init-macrodef-junit-init,-init-macrodef-junit-single, -init-macrodef-junit-batch" if="${junit.available}" name="-init-macrodef-junit"/>
-    <target if="${testng.available}" name="-init-macrodef-testng">
-        <macrodef name="testng" uri="http://www.netbeans.org/ns/j2se-project/3">
-            <attribute default="${includes}" name="includes"/>
-            <attribute default="${excludes}" name="excludes"/>
-            <attribute default="**" name="testincludes"/>
-            <attribute default="" name="testmethods"/>
-            <element name="customize" optional="true"/>
-            <sequential>
-                <condition else="" property="testng.methods.arg" value="@{testincludes}.@{testmethods}">
-                    <isset property="test.method"/>
-                </condition>
-                <union id="test.set">
-                    <fileset dir="${test.src.dir}" excludes="@{excludes},**/*.xml,${excludes}" includes="@{includes}">
-                        <filename name="@{testincludes}"/>
-                    </fileset>
-                </union>
-                <taskdef classname="org.testng.TestNGAntTask" classpath="${run.test.classpath}" name="testng"/>
-                <testng classfilesetref="test.set" failureProperty="tests.failed" jvm="${platform.java}" methods="${testng.methods.arg}" mode="${testng.mode}" outputdir="${build.test.results.dir}" suitename="ConferenceScheduleApp" testname="TestNG tests" workingDir="${work.dir}">
-                    <xmlfileset dir="${build.test.classes.dir}" includes="@{testincludes}"/>
-                    <propertyset>
-                        <propertyref prefix="test-sys-prop."/>
-                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
-                    </propertyset>
-                    <customize/>
-                </testng>
-            </sequential>
-        </macrodef>
-    </target>
-    <target name="-init-macrodef-test-impl">
-        <macrodef name="test-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
-            <attribute default="${includes}" name="includes"/>
-            <attribute default="${excludes}" name="excludes"/>
-            <attribute default="**" name="testincludes"/>
-            <attribute default="" name="testmethods"/>
-            <element implicit="true" name="customize" optional="true"/>
-            <sequential>
-                <echo>No tests executed.</echo>
-            </sequential>
-        </macrodef>
-    </target>
-    <target depends="-init-macrodef-junit" if="${junit.available}" name="-init-macrodef-junit-impl">
-        <macrodef name="test-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
-            <attribute default="${includes}" name="includes"/>
-            <attribute default="${excludes}" name="excludes"/>
-            <attribute default="**" name="testincludes"/>
-            <attribute default="" name="testmethods"/>
-            <element implicit="true" name="customize" optional="true"/>
-            <sequential>
-                <j2seproject3:junit excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
-                    <customize/>
-                </j2seproject3:junit>
-            </sequential>
-        </macrodef>
-    </target>
-    <target depends="-init-macrodef-testng" if="${testng.available}" name="-init-macrodef-testng-impl">
-        <macrodef name="test-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
-            <attribute default="${includes}" name="includes"/>
-            <attribute default="${excludes}" name="excludes"/>
-            <attribute default="**" name="testincludes"/>
-            <attribute default="" name="testmethods"/>
-            <element implicit="true" name="customize" optional="true"/>
-            <sequential>
-                <j2seproject3:testng excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
-                    <customize/>
-                </j2seproject3:testng>
-            </sequential>
-        </macrodef>
-    </target>
-    <target depends="-init-macrodef-test-impl,-init-macrodef-junit-impl,-init-macrodef-testng-impl" name="-init-macrodef-test">
-        <macrodef name="test" uri="http://www.netbeans.org/ns/j2se-project/3">
-            <attribute default="${includes}" name="includes"/>
-            <attribute default="${excludes}" name="excludes"/>
-            <attribute default="**" name="testincludes"/>
-            <attribute default="" name="testmethods"/>
-            <sequential>
-                <j2seproject3:test-impl excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
-                    <customize>
-                        <classpath>
-                            <path path="${run.test.classpath}"/>
-                        </classpath>
-                        <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
-                        <jvmarg line="${run.jvmargs}"/>
-                        <jvmarg line="${run.jvmargs.ide}"/>
-                    </customize>
-                </j2seproject3:test-impl>
-            </sequential>
-        </macrodef>
-    </target>
-    <target if="${junit.available}" name="-init-macrodef-junit-debug" unless="${nb.junit.batch}">
-        <macrodef name="junit-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
-            <attribute default="${includes}" name="includes"/>
-            <attribute default="${excludes}" name="excludes"/>
-            <attribute default="**" name="testincludes"/>
-            <attribute default="" name="testmethods"/>
-            <element name="customize" optional="true"/>
-            <sequential>
-                <property name="junit.forkmode" value="perTest"/>
-                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" jvm="${platform.java}" showoutput="true" tempdir="${build.dir}">
-                    <test methods="@{testmethods}" name="@{testincludes}" todir="${build.test.results.dir}"/>
-                    <syspropertyset>
-                        <propertyref prefix="test-sys-prop."/>
-                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
-                    </syspropertyset>
-                    <formatter type="brief" usefile="false"/>
-                    <formatter type="xml"/>
-                    <jvmarg value="-ea"/>
-                    <jvmarg line="${debug-args-line}"/>
-                    <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
-                    <customize/>
-                </junit>
-            </sequential>
-        </macrodef>
-    </target>
-    <target if="${nb.junit.batch}" name="-init-macrodef-junit-debug-batch">
-        <macrodef name="junit-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
-            <attribute default="${includes}" name="includes"/>
-            <attribute default="${excludes}" name="excludes"/>
-            <attribute default="**" name="testincludes"/>
-            <attribute default="" name="testmethods"/>
-            <element name="customize" optional="true"/>
-            <sequential>
-                <property name="junit.forkmode" value="perTest"/>
-                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" jvm="${platform.java}" showoutput="true" tempdir="${build.dir}">
-                    <batchtest todir="${build.test.results.dir}">
-                        <fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
-                            <filename name="@{testincludes}"/>
-                        </fileset>
-                    </batchtest>
-                    <syspropertyset>
-                        <propertyref prefix="test-sys-prop."/>
-                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
-                    </syspropertyset>
-                    <formatter type="brief" usefile="false"/>
-                    <formatter type="xml"/>
-                    <jvmarg value="-ea"/>
-                    <jvmarg line="${debug-args-line}"/>
-                    <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
-                    <customize/>
-                </junit>
-            </sequential>
-        </macrodef>
-    </target>
-    <target depends="-init-macrodef-junit-debug,-init-macrodef-junit-debug-batch" if="${junit.available}" name="-init-macrodef-junit-debug-impl">
-        <macrodef name="test-debug-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
-            <attribute default="${includes}" name="includes"/>
-            <attribute default="${excludes}" name="excludes"/>
-            <attribute default="**" name="testincludes"/>
-            <attribute default="" name="testmethods"/>
-            <element implicit="true" name="customize" optional="true"/>
-            <sequential>
-                <j2seproject3:junit-debug excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
-                    <customize/>
-                </j2seproject3:junit-debug>
-            </sequential>
-        </macrodef>
-    </target>
-    <target if="${testng.available}" name="-init-macrodef-testng-debug">
-        <macrodef name="testng-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
-            <attribute default="${main.class}" name="testClass"/>
-            <attribute default="" name="testMethod"/>
-            <element name="customize2" optional="true"/>
-            <sequential>
-                <condition else="-testclass @{testClass}" property="test.class.or.method" value="-methods @{testClass}.@{testMethod}">
-                    <isset property="test.method"/>
-                </condition>
-                <condition else="-suitename ConferenceScheduleApp -testname @{testClass} ${test.class.or.method}" property="testng.cmd.args" value="@{testClass}">
-                    <matches pattern=".*\.xml" string="@{testClass}"/>
-                </condition>
-                <delete dir="${build.test.results.dir}" quiet="true"/>
-                <mkdir dir="${build.test.results.dir}"/>
-                <j2seproject3:debug classname="org.testng.TestNG" classpath="${debug.test.classpath}">
-                    <customize>
-                        <customize2/>
-                        <jvmarg value="-ea"/>
-                        <arg line="${testng.debug.mode}"/>
-                        <arg line="-d ${build.test.results.dir}"/>
-                        <arg line="-listener org.testng.reporters.VerboseReporter"/>
-                        <arg line="${testng.cmd.args}"/>
-                    </customize>
-                </j2seproject3:debug>
-            </sequential>
-        </macrodef>
-    </target>
-    <target depends="-init-macrodef-testng-debug" if="${testng.available}" name="-init-macrodef-testng-debug-impl">
-        <macrodef name="testng-debug-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
-            <attribute default="${main.class}" name="testClass"/>
-            <attribute default="" name="testMethod"/>
-            <element implicit="true" name="customize2" optional="true"/>
-            <sequential>
-                <j2seproject3:testng-debug testClass="@{testClass}" testMethod="@{testMethod}">
-                    <customize2/>
-                </j2seproject3:testng-debug>
-            </sequential>
-        </macrodef>
-    </target>
-    <target depends="-init-macrodef-junit-debug-impl" if="${junit.available}" name="-init-macrodef-test-debug-junit">
-        <macrodef name="test-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
-            <attribute default="${includes}" name="includes"/>
-            <attribute default="${excludes}" name="excludes"/>
-            <attribute default="**" name="testincludes"/>
-            <attribute default="" name="testmethods"/>
-            <attribute default="${main.class}" name="testClass"/>
-            <attribute default="" name="testMethod"/>
-            <sequential>
-                <j2seproject3:test-debug-impl excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
-                    <customize>
-                        <classpath>
-                            <path path="${run.test.classpath}"/>
-                        </classpath>
-                        <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
-                        <jvmarg line="${run.jvmargs}"/>
-                        <jvmarg line="${run.jvmargs.ide}"/>
-                    </customize>
-                </j2seproject3:test-debug-impl>
-            </sequential>
-        </macrodef>
-    </target>
-    <target depends="-init-macrodef-testng-debug-impl" if="${testng.available}" name="-init-macrodef-test-debug-testng">
-        <macrodef name="test-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
-            <attribute default="${includes}" name="includes"/>
-            <attribute default="${excludes}" name="excludes"/>
-            <attribute default="**" name="testincludes"/>
-            <attribute default="" name="testmethods"/>
-            <attribute default="${main.class}" name="testClass"/>
-            <attribute default="" name="testMethod"/>
-            <sequential>
-                <j2seproject3:testng-debug-impl testClass="@{testClass}" testMethod="@{testMethod}">
-                    <customize2>
-                        <syspropertyset>
-                            <propertyref prefix="test-sys-prop."/>
-                            <mapper from="test-sys-prop.*" to="*" type="glob"/>
-                        </syspropertyset>
-                    </customize2>
-                </j2seproject3:testng-debug-impl>
-            </sequential>
-        </macrodef>
-    </target>
-    <target depends="-init-macrodef-test-debug-junit,-init-macrodef-test-debug-testng" name="-init-macrodef-test-debug"/>
-    <!--
-                pre NB7.2 profiling section; consider it deprecated
-            -->
-    <target depends="-profile-pre-init, init, -profile-post-init, -profile-init-macrodef-profile, -profile-init-check" if="profiler.info.jvmargs.agent" name="profile-init"/>
-    <target if="profiler.info.jvmargs.agent" name="-profile-pre-init">
-        <!-- Empty placeholder for easier customization. -->
-        <!-- You can override this target in the ../build.xml file. -->
-    </target>
-    <target if="profiler.info.jvmargs.agent" name="-profile-post-init">
-        <!-- Empty placeholder for easier customization. -->
-        <!-- You can override this target in the ../build.xml file. -->
-    </target>
-    <target if="profiler.info.jvmargs.agent" name="-profile-init-macrodef-profile">
-        <macrodef name="resolve">
-            <attribute name="name"/>
-            <attribute name="value"/>
-            <sequential>
-                <property name="@{name}" value="${env.@{value}}"/>
-            </sequential>
-        </macrodef>
-        <macrodef name="profile">
-            <attribute default="${main.class}" name="classname"/>
-            <element name="customize" optional="true"/>
-            <sequential>
-                <property environment="env"/>
-                <resolve name="profiler.current.path" value="${profiler.info.pathvar}"/>
-                <java classname="@{classname}" dir="${profiler.info.dir}" fork="true" jvm="${profiler.info.jvm}">
-                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
-                    <jvmarg value="${profiler.info.jvmargs.agent}"/>
-                    <jvmarg line="${profiler.info.jvmargs}"/>
-                    <env key="${profiler.info.pathvar}" path="${profiler.info.agentpath}:${profiler.current.path}"/>
-                    <arg line="${application.args}"/>
-                    <classpath>
-                        <path path="${run.classpath}"/>
-                    </classpath>
-                    <syspropertyset>
-                        <propertyref prefix="run-sys-prop."/>
-                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
-                    </syspropertyset>
-                    <customize/>
-                </java>
-            </sequential>
-        </macrodef>
-    </target>
-    <target depends="-profile-pre-init, init, -profile-post-init, -profile-init-macrodef-profile" if="profiler.info.jvmargs.agent" name="-profile-init-check">
-        <fail unless="profiler.info.jvm">Must set JVM to use for profiling in profiler.info.jvm</fail>
-        <fail unless="profiler.info.jvmargs.agent">Must set profiler agent JVM arguments in profiler.info.jvmargs.agent</fail>
-    </target>
-    <!--
-                end of pre NB7.2 profiling section
-            -->
-    <target depends="-init-debug-args" name="-init-macrodef-nbjpda">
-        <macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/j2se-project/1">
-            <attribute default="${main.class}" name="name"/>
-            <attribute default="${debug.classpath}" name="classpath"/>
-            <attribute default="" name="stopclassname"/>
-            <sequential>
-                <nbjpdastart addressproperty="jpda.address" name="@{name}" stopclassname="@{stopclassname}" transport="${debug-transport}">
-                    <classpath>
-                        <path path="@{classpath}"/>
-                    </classpath>
-                    <bootclasspath>
-                        <path path="${platform.bootcp}"/>
-                    </bootclasspath>
-                </nbjpdastart>
-            </sequential>
-        </macrodef>
-        <macrodef name="nbjpdareload" uri="http://www.netbeans.org/ns/j2se-project/1">
-            <attribute default="${build.classes.dir}" name="dir"/>
-            <sequential>
-                <nbjpdareload>
-                    <fileset dir="@{dir}" includes="${fix.classes}">
-                        <include name="${fix.includes}*.class"/>
-                    </fileset>
-                </nbjpdareload>
-            </sequential>
-        </macrodef>
-    </target>
-    <target name="-init-debug-args">
-        <exec executable="${platform.java}" outputproperty="version-output">
-            <arg value="-version"/>
-        </exec>
-        <condition property="have-jdk-older-than-1.4">
-            <or>
-                <contains string="${version-output}" substring="java version &quot;1.0"/>
-                <contains string="${version-output}" substring="java version &quot;1.1"/>
-                <contains string="${version-output}" substring="java version &quot;1.2"/>
-                <contains string="${version-output}" substring="java version &quot;1.3"/>
-            </or>
-        </condition>
-        <condition else="-Xdebug" property="debug-args-line" value="-Xdebug -Xnoagent -Djava.compiler=none">
-            <istrue value="${have-jdk-older-than-1.4}"/>
-        </condition>
-        <condition else="dt_socket" property="debug-transport-by-os" value="dt_shmem">
-            <os family="windows"/>
-        </condition>
-        <condition else="${debug-transport-by-os}" property="debug-transport" value="${debug.transport}">
-            <isset property="debug.transport"/>
-        </condition>
-    </target>
-    <target depends="-init-debug-args" name="-init-macrodef-debug">
-        <macrodef name="debug" uri="http://www.netbeans.org/ns/j2se-project/3">
-            <attribute default="${main.class}" name="classname"/>
-            <attribute default="${debug.classpath}" name="classpath"/>
-            <element name="customize" optional="true"/>
-            <sequential>
-                <java classname="@{classname}" dir="${work.dir}" fork="true" jvm="${platform.java}">
-                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
-                    <jvmarg line="${debug-args-line}"/>
-                    <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
-                    <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
-                    <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
-                    <jvmarg line="${run.jvmargs}"/>
-                    <jvmarg line="${run.jvmargs.ide}"/>
-                    <classpath>
-                        <path path="@{classpath}"/>
-                    </classpath>
-                    <syspropertyset>
-                        <propertyref prefix="run-sys-prop."/>
-                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
-                    </syspropertyset>
-                    <customize/>
-                </java>
-            </sequential>
-        </macrodef>
-    </target>
-    <target name="-init-macrodef-java">
-        <macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
-            <attribute default="${main.class}" name="classname"/>
-            <attribute default="${run.classpath}" name="classpath"/>
-            <attribute default="jvm" name="jvm"/>
-            <element name="customize" optional="true"/>
-            <sequential>
-                <java classname="@{classname}" dir="${work.dir}" fork="true" jvm="${platform.java}">
-                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
-                    <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
-                    <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
-                    <jvmarg line="${run.jvmargs}"/>
-                    <jvmarg line="${run.jvmargs.ide}"/>
-                    <classpath>
-                        <path path="@{classpath}"/>
-                    </classpath>
-                    <syspropertyset>
-                        <propertyref prefix="run-sys-prop."/>
-                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
-                    </syspropertyset>
-                    <customize/>
-                </java>
-            </sequential>
-        </macrodef>
-    </target>
-    <target name="-init-macrodef-copylibs">
-        <macrodef name="copylibs" uri="http://www.netbeans.org/ns/j2se-project/3">
-            <attribute default="${manifest.file}" name="manifest"/>
-            <element name="customize" optional="true"/>
-            <sequential>
-                <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
-                <pathconvert property="run.classpath.without.build.classes.dir">
-                    <path path="${run.classpath}"/>
-                    <map from="${build.classes.dir.resolved}" to=""/>
-                </pathconvert>
-                <pathconvert pathsep=" " property="jar.classpath">
-                    <path path="${run.classpath.without.build.classes.dir}"/>
-                    <chainedmapper>
-                        <flattenmapper/>
-                        <filtermapper>
-                            <replacestring from=" " to="%20"/>
-                        </filtermapper>
-                        <globmapper from="*" to="lib/*"/>
-                    </chainedmapper>
-                </pathconvert>
-                <taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
-                <copylibs compress="${jar.compress}" index="${jar.index}" indexMetaInf="${jar.index.metainf}" jarfile="${dist.jar}" manifest="@{manifest}" rebase="${copylibs.rebase}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
-                    <fileset dir="${build.classes.dir}"/>
-                    <manifest>
-                        <attribute name="Class-Path" value="${jar.classpath}"/>
-                        <customize/>
-                    </manifest>
-                </copylibs>
-            </sequential>
-        </macrodef>
-    </target>
-    <target name="-init-presetdef-jar">
-        <presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
-            <jar compress="${jar.compress}" index="${jar.index}" jarfile="${dist.jar}">
-                <j2seproject1:fileset dir="${build.classes.dir}"/>
-            </jar>
-        </presetdef>
-    </target>
-    <target name="-init-ap-cmdline-properties">
-        <property name="annotation.processing.enabled" value="true"/>
-        <property name="annotation.processing.processors.list" value=""/>
-        <property name="annotation.processing.processor.options" value=""/>
-        <property name="annotation.processing.run.all.processors" value="true"/>
-        <property name="javac.processorpath" value="${javac.classpath}"/>
-        <property name="javac.test.processorpath" value="${javac.test.classpath}"/>
-        <condition property="ap.supported.internal" value="true">
-            <not>
-                <matches pattern="1\.[0-5](\..*)?" string="${javac.source}"/>
-            </not>
-        </condition>
-    </target>
-    <target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-ap-cmdline-supported">
-        <condition else="" property="ap.processors.internal" value="-processor ${annotation.processing.processors.list}">
-            <isfalse value="${annotation.processing.run.all.processors}"/>
-        </condition>
-        <condition else="" property="ap.proc.none.internal" value="-proc:none">
-            <isfalse value="${annotation.processing.enabled}"/>
-        </condition>
-    </target>
-    <target depends="-init-ap-cmdline-properties,-init-ap-cmdline-supported" name="-init-ap-cmdline">
-        <property name="ap.cmd.line.internal" value=""/>
-    </target>
-    <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-test,-init-macrodef-test-debug,-init-macrodef-nbjpda,-init-macrodef-debug,-init-macrodef-java,-init-presetdef-jar,-init-ap-cmdline" name="init"/>
-    <!--
-                ===================
-                COMPILATION SECTION
-                ===================
-            -->
-    <target name="-deps-jar-init" unless="built-jar.properties">
-        <property location="${build.dir}/built-jar.properties" name="built-jar.properties"/>
-        <delete file="${built-jar.properties}" quiet="true"/>
-    </target>
-    <target if="already.built.jar.${basedir}" name="-warn-already-built-jar">
-        <echo level="warn" message="Cycle detected: ConferenceScheduleApp was already built"/>
-    </target>
-    <target depends="init,-deps-jar-init" name="deps-jar" unless="no.deps">
-        <mkdir dir="${build.dir}"/>
-        <touch file="${built-jar.properties}" verbose="false"/>
-        <property file="${built-jar.properties}" prefix="already.built.jar."/>
-        <antcall target="-warn-already-built-jar"/>
-        <propertyfile file="${built-jar.properties}">
-            <entry key="${basedir}" value=""/>
-        </propertyfile>
-    </target>
-    <target depends="init,-check-automatic-build,-clean-after-automatic-build" name="-verify-automatic-build"/>
-    <target depends="init" name="-check-automatic-build">
-        <available file="${build.classes.dir}/.netbeans_automatic_build" property="netbeans.automatic.build"/>
-    </target>
-    <target depends="init" if="netbeans.automatic.build" name="-clean-after-automatic-build">
-        <antcall target="clean"/>
-    </target>
-    <target depends="init,deps-jar" name="-pre-pre-compile">
-        <mkdir dir="${build.classes.dir}"/>
-    </target>
-    <target name="-pre-compile">
-        <!-- Empty placeholder for easier customization. -->
-        <!-- You can override this target in the ../build.xml file. -->
-    </target>
-    <target if="do.depend.true" name="-compile-depend">
-        <pathconvert property="build.generated.subdirs">
-            <dirset dir="${build.generated.sources.dir}" erroronmissingdir="false">
-                <include name="*"/>
-            </dirset>
-        </pathconvert>
-        <j2seproject3:depend srcdir="${src.dir}:${build.generated.subdirs}"/>
-    </target>
-    <target depends="init,deps-jar,-pre-pre-compile,-pre-compile, -copy-persistence-xml,-compile-depend" if="have.sources" name="-do-compile">
-        <j2seproject3:javac gensrcdir="${build.generated.sources.dir}"/>
-        <copy todir="${build.classes.dir}">
-            <fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
-        </copy>
-    </target>
-    <target if="has.persistence.xml" name="-copy-persistence-xml">
-        <mkdir dir="${build.classes.dir}/META-INF"/>
-        <copy todir="${build.classes.dir}/META-INF">
-            <fileset dir="${meta.inf.dir}" includes="persistence.xml"/>
-        </copy>
-    </target>
-    <target name="-post-compile">
-        <!-- Empty placeholder for easier customization. -->
-        <!-- You can override this target in the ../build.xml file. -->
-    </target>
-    <target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." name="compile"/>
-    <target name="-pre-compile-single">
-        <!-- Empty placeholder for easier customization. -->
-        <!-- You can override this target in the ../build.xml file. -->
-    </target>
-    <target depends="init,deps-jar,-pre-pre-compile" name="-do-compile-single">
-        <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
-        <j2seproject3:force-recompile/>
-        <j2seproject3:javac excludes="" gensrcdir="${build.generated.sources.dir}" includes="${javac.includes}" sourcepath="${src.dir}"/>
-    </target>
-    <target name="-post-compile-single">
-        <!-- Empty placeholder for easier customization. -->
-        <!-- You can override this target in the ../build.xml file. -->
-    </target>
-    <target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" name="compile-single"/>
-    <!--
-                ====================
-                JAR BUILDING SECTION
-                ====================
-            -->
-    <target depends="init" name="-pre-pre-jar">
-        <dirname file="${dist.jar}" property="dist.jar.dir"/>
-        <mkdir dir="${dist.jar.dir}"/>
-    </target>
-    <target name="-pre-jar">
-        <!-- Empty placeholder for easier customization. -->
-        <!-- You can override this target in the ../build.xml file. -->
-    </target>
-    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.archive" name="-do-jar-without-manifest" unless="manifest.available-mkdist.available">
-        <j2seproject1:jar/>
-    </target>
-    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.archive+manifest.available" name="-do-jar-with-manifest" unless="manifest.available+main.class-mkdist.available">
-        <j2seproject1:jar manifest="${manifest.file}"/>
-    </target>
-    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.archive+manifest.available+main.class" name="-do-jar-with-mainclass" unless="manifest.available+main.class+mkdist.available">
-        <j2seproject1:jar manifest="${manifest.file}">
-            <j2seproject1:manifest>
-                <j2seproject1:attribute name="Main-Class" value="${main.class}"/>
-            </j2seproject1:manifest>
-        </j2seproject1:jar>
-        <echo level="info">To run this application from the command line without Ant, try:</echo>
-        <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
-        <property location="${dist.jar}" name="dist.jar.resolved"/>
-        <pathconvert property="run.classpath.with.dist.jar">
-            <path path="${run.classpath}"/>
-            <map from="${build.classes.dir.resolved}" to="${dist.jar.resolved}"/>
-        </pathconvert>
-        <echo level="info">${platform.java} -cp "${run.classpath.with.dist.jar}" ${main.class}</echo>
-    </target>
-    <target depends="init" if="do.archive" name="-do-jar-with-libraries-create-manifest" unless="manifest.available">
-        <tempfile deleteonexit="true" destdir="${build.dir}" property="tmp.manifest.file"/>
-        <touch file="${tmp.manifest.file}" verbose="false"/>
-    </target>
-    <target depends="init" if="do.archive+manifest.available" name="-do-jar-with-libraries-copy-manifest">
-        <tempfile deleteonexit="true" destdir="${build.dir}" property="tmp.manifest.file"/>
-        <copy file="${manifest.file}" tofile="${tmp.manifest.file}"/>
-    </target>
-    <target depends="init,-do-jar-with-libraries-create-manifest,-do-jar-with-libraries-copy-manifest" if="do.archive+main.class.available" name="-do-jar-with-libraries-set-main">
-        <manifest file="${tmp.manifest.file}" mode="update">
-            <attribute name="Main-Class" value="${main.class}"/>
-        </manifest>
-    </target>
-    <target depends="init,-do-jar-with-libraries-create-manifest,-do-jar-with-libraries-copy-manifest" if="do.archive+splashscreen.available" name="-do-jar-with-libraries-set-splashscreen">
-        <basename file="${application.splash}" property="splashscreen.basename"/>
-        <mkdir dir="${build.classes.dir}/META-INF"/>
-        <copy failonerror="false" file="${application.splash}" todir="${build.classes.dir}/META-INF"/>
-        <manifest file="${tmp.manifest.file}" mode="update">
-            <attribute name="SplashScreen-Image" value="META-INF/${splashscreen.basename}"/>
-        </manifest>
-    </target>
-    <target depends="init,-init-macrodef-copylibs,compile,-pre-pre-jar,-pre-jar,-do-jar-with-libraries-create-manifest,-do-jar-with-libraries-copy-manifest,-do-jar-with-libraries-set-main,-do-jar-with-libraries-set-splashscreen" if="do.mkdist" name="-do-jar-with-libraries-pack">
-        <j2seproject3:copylibs manifest="${tmp.manifest.file}"/>
-        <echo level="info">To run this application from the command line without Ant, try:</echo>
-        <property location="${dist.jar}" name="dist.jar.resolved"/>
-        <echo level="info">${platform.java} -jar "${dist.jar.resolved}"</echo>
-    </target>
-    <target depends="-do-jar-with-libraries-pack" if="do.archive" name="-do-jar-with-libraries-delete-manifest">
-        <delete>
-            <fileset file="${tmp.manifest.file}"/>
-        </delete>
-    </target>
-    <target depends="init,compile,-pre-pre-jar,-pre-jar,-do-jar-with-libraries-create-manifest,-do-jar-with-libraries-copy-manifest,-do-jar-with-libraries-set-main,-do-jar-with-libraries-set-splashscreen,-do-jar-with-libraries-pack,-do-jar-with-libraries-delete-manifest" name="-do-jar-with-libraries"/>
-    <target depends="-jfx-copylibs,-rebase-libs,jfx-deployment" name="-post-jar">
-        <!-- Empty placeholder for easier customization. -->
-        <!-- You can override this target in the ../build.xml file. -->
-    </target>
-    <target depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries,-post-jar,-jfx-copylibs,-rebase-libs" description="Build JAR." name="jar"/>
-    <!--
-                =================
-                EXECUTION SECTION
-                =================
-            -->
-    <target depends="init,compile,jar" description="Run a main class." name="run">
-        <j2seproject1:java>
-            <customize>
-                <arg line="${application.args}"/>
-            </customize>
-        </j2seproject1:java>
-    </target>
-    <target name="-do-not-recompile">
-        <property name="javac.includes.binary" value=""/>
-    </target>
-    <target depends="init,compile-single" name="run-single">
-        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
-        <j2seproject1:java classname="${run.class}"/>
-    </target>
-    <target depends="init,compile-test-single" name="run-test-with-main">
-        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
-        <j2seproject1:java classname="${run.class}" classpath="${run.test.classpath}"/>
-    </target>
-    <!--
-                =================
-                DEBUGGING SECTION
-                =================
-            -->
-    <target depends="init" if="netbeans.home" name="-debug-start-debugger">
-        <j2seproject1:nbjpdastart name="${debug.class}"/>
-    </target>
-    <target depends="init" if="netbeans.home" name="-debug-start-debugger-main-test">
-        <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${debug.class}"/>
-    </target>
-    <target depends="init,compile" name="-debug-start-debuggee">
-        <j2seproject3:debug>
-            <customize>
-                <arg line="${application.args}"/>
-            </customize>
-        </j2seproject3:debug>
-    </target>
-    <target depends="init,compile,-debug-start-debugger,-debug-start-debuggee,jar" description="Debug project in IDE." if="netbeans.home" name="debug"/>
-    <target depends="init" if="netbeans.home" name="-debug-start-debugger-stepinto">
-        <j2seproject1:nbjpdastart stopclassname="${main.class}"/>
-    </target>
-    <target depends="init,compile,-debug-start-debugger-stepinto,-debug-start-debuggee" if="netbeans.home" name="debug-stepinto"/>
-    <target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-single">
-        <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
-        <j2seproject3:debug classname="${debug.class}"/>
-    </target>
-    <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single"/>
-    <target depends="init,compile-test-single" if="netbeans.home" name="-debug-start-debuggee-main-test">
-        <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
-        <j2seproject3:debug classname="${debug.class}" classpath="${debug.test.classpath}"/>
-    </target>
-    <target depends="init,compile-test-single,-debug-start-debugger-main-test,-debug-start-debuggee-main-test" if="netbeans.home" name="debug-test-with-main"/>
-    <target depends="init" name="-pre-debug-fix">
-        <fail unless="fix.includes">Must set fix.includes</fail>
-        <property name="javac.includes" value="${fix.includes}.java"/>
-    </target>
-    <target depends="init,-pre-debug-fix,compile-single" if="netbeans.home" name="-do-debug-fix">
-        <j2seproject1:nbjpdareload/>
-    </target>
-    <target depends="init,-pre-debug-fix,-do-debug-fix" if="netbeans.home" name="debug-fix"/>
-    <!--
-                =================
-                PROFILING SECTION
-                =================
-            -->
-    <!--
-                pre NB7.2 profiler integration
-            -->
-    <target depends="profile-init,compile" description="Profile a project in the IDE." if="profiler.info.jvmargs.agent" name="-profile-pre72">
-        <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
-        <nbprofiledirect>
-            <classpath>
-                <path path="${run.classpath}"/>
-            </classpath>
-        </nbprofiledirect>
-        <profile/>
-    </target>
-    <target depends="profile-init,compile-single" description="Profile a selected class in the IDE." if="profiler.info.jvmargs.agent" name="-profile-single-pre72">
-        <fail unless="profile.class">Must select one file in the IDE or set profile.class</fail>
-        <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
-        <nbprofiledirect>
-            <classpath>
-                <path path="${run.classpath}"/>
-            </classpath>
-        </nbprofiledirect>
-        <profile classname="${profile.class}"/>
-    </target>
-    <target depends="profile-init,compile-single" if="profiler.info.jvmargs.agent" name="-profile-applet-pre72">
-        <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
-        <nbprofiledirect>
-            <classpath>
-                <path path="${run.classpath}"/>
-            </classpath>
-        </nbprofiledirect>
-        <profile classname="sun.applet.AppletViewer">
-            <customize>
-                <arg value="${applet.url}"/>
-            </customize>
-        </profile>
-    </target>
-    <target depends="profile-init,compile-test-single" if="profiler.info.jvmargs.agent" name="-profile-test-single-pre72">
-        <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
-        <nbprofiledirect>
-            <classpath>
-                <path path="${run.test.classpath}"/>
-            </classpath>
-        </nbprofiledirect>
-        <junit dir="${profiler.info.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" jvm="${profiler.info.jvm}" showoutput="true">
-            <env key="${profiler.info.pathvar}" path="${profiler.info.agentpath}:${profiler.current.path}"/>
-            <jvmarg value="${profiler.info.jvmargs.agent}"/>
-            <jvmarg line="${profiler.info.jvmargs}"/>
-            <test name="${profile.class}"/>
-            <classpath>
-                <path path="${run.test.classpath}"/>
-            </classpath>
-            <syspropertyset>
-                <propertyref prefix="test-sys-prop."/>
-                <mapper from="test-sys-prop.*" to="*" type="glob"/>
-            </syspropertyset>
-            <formatter type="brief" usefile="false"/>
-            <formatter type="xml"/>
-        </junit>
-    </target>
-    <!--
-                end of pre NB72 profiling section
-            -->
-    <target if="netbeans.home" name="-profile-check">
-        <condition property="profiler.configured">
-            <or>
-                <contains casesensitive="true" string="${run.jvmargs.ide}" substring="-agentpath:"/>
-                <contains casesensitive="true" string="${run.jvmargs.ide}" substring="-javaagent:"/>
-            </or>
-        </condition>
-    </target>
-    <target depends="-profile-check,-profile-pre72,jar" description="Profile a project in the IDE." if="profiler.configured" name="profile" unless="profiler.info.jvmargs.agent">
-        <startprofiler/>
-        <antcall target="run"/>
-    </target>
-    <target depends="-profile-check,-profile-single-pre72" description="Profile a selected class in the IDE." if="profiler.configured" name="profile-single" unless="profiler.info.jvmargs.agent">
-        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
-        <startprofiler/>
-        <antcall target="run-single"/>
-    </target>
-    <target depends="-profile-test-single-pre72" description="Profile a selected test in the IDE." name="profile-test-single"/>
-    <target depends="-profile-check" description="Profile a selected test in the IDE." if="profiler.configured" name="profile-test" unless="profiler.info.jvmargs">
-        <fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
-        <startprofiler/>
-        <antcall target="test-single"/>
-    </target>
-    <target depends="-profile-check" description="Profile a selected class in the IDE." if="profiler.configured" name="profile-test-with-main">
-        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
-        <startprofiler/>
-        <antcal target="run-test-with-main"/>
-    </target>
-    <target depends="-profile-check,-profile-applet-pre72" if="profiler.configured" name="profile-applet" unless="profiler.info.jvmargs.agent">
-        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
-        <startprofiler/>
-        <antcall target="run-applet"/>
-    </target>
-    <!--
-                ===============
-                JAVADOC SECTION
-                ===============
-            -->
-    <target depends="init" if="have.sources" name="-javadoc-build">
-        <mkdir dir="${dist.javadoc.dir}"/>
-        <condition else="" property="javadoc.endorsed.classpath.cmd.line.arg" value="-J${endorsed.classpath.cmd.line.arg}">
-            <and>
-                <isset property="endorsed.classpath.cmd.line.arg"/>
-                <not>
-                    <equals arg1="${endorsed.classpath.cmd.line.arg}" arg2=""/>
-                </not>
-            </and>
-        </condition>
-        <javadoc additionalparam="${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" executable="${platform.javadoc}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
-            <classpath>
-                <path path="${javac.classpath}"/>
-            </classpath>
-            <fileset dir="${src.dir}" excludes="*.java,${excludes}" includes="${includes}">
-                <filename name="**/*.java"/>
-            </fileset>
-            <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false">
-                <include name="**/*.java"/>
-                <exclude name="*.java"/>
-            </fileset>
-            <arg line="${javadoc.endorsed.classpath.cmd.line.arg}"/>
-        </javadoc>
-        <copy todir="${dist.javadoc.dir}">
-            <fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
-                <filename name="**/doc-files/**"/>
-            </fileset>
-            <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false">
-                <include name="**/doc-files/**"/>
-            </fileset>
-        </copy>
-    </target>
-    <target depends="init,-javadoc-build" if="netbeans.home" name="-javadoc-browse" unless="no.javadoc.preview">
-        <nbbrowse file="${dist.javadoc.dir}/index.html"/>
-    </target>
-    <target depends="init,-javadoc-build,-javadoc-browse" description="Build Javadoc." name="javadoc"/>
-    <!--
-                =========================
-                TEST COMPILATION SECTION
-                =========================
-            -->
-    <target depends="init,compile" if="have.tests" name="-pre-pre-compile-test">
-        <mkdir dir="${build.test.classes.dir}"/>
-    </target>
-    <target name="-pre-compile-test">
-        <!-- Empty placeholder for easier customization. -->
-        <!-- You can override this target in the ../build.xml file. -->
-    </target>
-    <target if="do.depend.true" name="-compile-test-depend">
-        <j2seproject3:depend classpath="${javac.test.classpath}" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
-    </target>
-    <target depends="init,deps-jar,compile,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
-        <j2seproject3:javac apgeneratedsrcdir="${build.test.classes.dir}" classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" processorpath="${javac.test.processorpath}" srcdir="${test.src.dir}"/>
-        <copy todir="${build.test.classes.dir}">
-            <fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
-        </copy>
-    </target>
-    <target name="-post-compile-test">
-        <!-- Empty placeholder for easier customization. -->
-        <!-- You can override this target in the ../build.xml file. -->
-    </target>
-    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-do-compile-test,-post-compile-test" name="compile-test"/>
-    <target name="-pre-compile-test-single">
-        <!-- Empty placeholder for easier customization. -->
-        <!-- You can override this target in the ../build.xml file. -->
-    </target>
-    <target depends="init,deps-jar,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
-        <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
-        <j2seproject3:force-recompile destdir="${build.test.classes.dir}"/>
-        <j2seproject3:javac apgeneratedsrcdir="${build.test.classes.dir}" classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" processorpath="${javac.test.processorpath}" sourcepath="${test.src.dir}" srcdir="${test.src.dir}"/>
-        <copy todir="${build.test.classes.dir}">
-            <fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
-        </copy>
-    </target>
-    <target name="-post-compile-test-single">
-        <!-- Empty placeholder for easier customization. -->
-        <!-- You can override this target in the ../build.xml file. -->
-    </target>
-    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single,-do-compile-test-single,-post-compile-test-single" name="compile-test-single"/>
-    <!--
-                =======================
-                TEST EXECUTION SECTION
-                =======================
-            -->
-    <target depends="init" if="have.tests" name="-pre-test-run">
-        <mkdir dir="${build.test.results.dir}"/>
-    </target>
-    <target depends="init,compile-test,-pre-test-run" if="have.tests" name="-do-test-run">
-        <j2seproject3:test testincludes="**/*Test.java"/>
-    </target>
-    <target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
-        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
-    </target>
-    <target depends="init" if="have.tests" name="test-report"/>
-    <target depends="init" if="netbeans.home+have.tests" name="-test-browse"/>
-    <target depends="init,compile-test,-pre-test-run,-do-test-run,test-report,-post-test-run,-test-browse" description="Run unit tests." name="test"/>
-    <target depends="init" if="have.tests" name="-pre-test-run-single">
-        <mkdir dir="${build.test.results.dir}"/>
-    </target>
-    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single">
-        <fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
-        <j2seproject3:test excludes="" includes="${test.includes}" testincludes="${test.includes}"/>
-    </target>
-    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single">
-        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
-    </target>
-    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
-    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single-method">
-        <fail unless="test.class">Must select some files in the IDE or set test.class</fail>
-        <fail unless="test.method">Must select some method in the IDE or set test.method</fail>
-        <j2seproject3:test excludes="" includes="${javac.includes}" testincludes="${test.class}" testmethods="${test.method}"/>
-    </target>
-    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single-method" if="have.tests" name="-post-test-run-single-method">
-        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
-    </target>
-    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single-method,-post-test-run-single-method" description="Run single unit test." name="test-single-method"/>
-    <!--
-                =======================
-                TEST DEBUGGING SECTION
-                =======================
-            -->
-    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-debug-start-debuggee-test">
-        <fail unless="test.class">Must select one file in the IDE or set test.class</fail>
-        <j2seproject3:test-debug excludes="" includes="${javac.includes}" testClass="${test.class}" testincludes="${javac.includes}"/>
-    </target>
-    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-debug-start-debuggee-test-method">
-        <fail unless="test.class">Must select one file in the IDE or set test.class</fail>
-        <fail unless="test.method">Must select some method in the IDE or set test.method</fail>
-        <j2seproject3:test-debug excludes="" includes="${javac.includes}" testClass="${test.class}" testMethod="${test.method}" testincludes="${test.class}" testmethods="${test.method}"/>
-    </target>
-    <target depends="init,compile-test" if="netbeans.home+have.tests" name="-debug-start-debugger-test">
-        <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/>
-    </target>
-    <target depends="init,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
-    <target depends="init,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test-method" name="debug-test-method"/>
-    <target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
-        <j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
-    </target>
-    <target depends="init,-pre-debug-fix,-do-debug-fix-test" if="netbeans.home" name="debug-fix-test"/>
-    <!--
-                =========================
-                APPLET EXECUTION SECTION
-                =========================
-            -->
-    <target depends="init,compile-single" name="run-applet">
-        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
-        <j2seproject1:java classname="sun.applet.AppletViewer">
-            <customize>
-                <arg value="${applet.url}"/>
-            </customize>
-        </j2seproject1:java>
-    </target>
-    <!--
-                =========================
-                APPLET DEBUGGING  SECTION
-                =========================
-            -->
-    <target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-applet">
-        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
-        <j2seproject3:debug classname="sun.applet.AppletViewer">
-            <customize>
-                <arg value="${applet.url}"/>
-            </customize>
-        </j2seproject3:debug>
-    </target>
-    <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-applet" if="netbeans.home" name="debug-applet"/>
-    <!--
-                ===============
-                CLEANUP SECTION
-                ===============
-            -->
-    <target name="-deps-clean-init" unless="built-clean.properties">
-        <property location="${build.dir}/built-clean.properties" name="built-clean.properties"/>
-        <delete file="${built-clean.properties}" quiet="true"/>
-    </target>
-    <target if="already.built.clean.${basedir}" name="-warn-already-built-clean">
-        <echo level="warn" message="Cycle detected: ConferenceScheduleApp was already built"/>
-    </target>
-    <target depends="init,-deps-clean-init" name="deps-clean" unless="no.deps">
-        <mkdir dir="${build.dir}"/>
-        <touch file="${built-clean.properties}" verbose="false"/>
-        <property file="${built-clean.properties}" prefix="already.built.clean."/>
-        <antcall target="-warn-already-built-clean"/>
-        <propertyfile file="${built-clean.properties}">
-            <entry key="${basedir}" value=""/>
-        </propertyfile>
-    </target>
-    <target depends="init" name="-do-clean">
-        <delete dir="${build.dir}"/>
-        <delete dir="${dist.dir}" followsymlinks="false" includeemptydirs="true"/>
-    </target>
-    <target name="-post-clean">
-        <!-- Empty placeholder for easier customization. -->
-        <!-- You can override this target in the ../build.xml file. -->
-    </target>
-    <target depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products." name="clean"/>
-    <target name="-check-call-dep">
-        <property file="${call.built.properties}" prefix="already.built."/>
-        <condition property="should.call.dep">
-            <and>
-                <not>
-                    <isset property="already.built.${call.subproject}"/>
-                </not>
-                <available file="${call.script}"/>
-            </and>
-        </condition>
-    </target>
-    <target depends="-check-call-dep" if="should.call.dep" name="-maybe-call-dep">
-        <ant antfile="${call.script}" inheritall="false" target="${call.target}">
-            <propertyset>
-                <propertyref prefix="transfer."/>
-                <mapper from="transfer.*" to="*" type="glob"/>
-            </propertyset>
-        </ant>
-    </target>
-</project>
--- a/apps/experiments/ConferenceScheduleApp/nbproject/configs/Run_as_WebStart.properties	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-# Do not modify this property in this configuration. It can be re-generated.
-$label=Run as WebStart
--- a/apps/experiments/ConferenceScheduleApp/nbproject/configs/Run_in_Browser.properties	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-# Do not modify this property in this configuration. It can be re-generated.
-$label=Run in Browser
--- a/apps/experiments/ConferenceScheduleApp/nbproject/configs/Test_Mode.properties	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-$label=Test Mode
-run.jvmargs=-Dtest.mode=true
--- a/apps/experiments/ConferenceScheduleApp/nbproject/genfiles.properties	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-build.xml.data.CRC32=2f8e36c8
-build.xml.script.CRC32=f37d954b
-build.xml.stylesheet.CRC32=28e38971@1.53.1.46
-# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
-# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=2f8e36c8
-nbproject/build-impl.xml.script.CRC32=db927aa2
-nbproject/build-impl.xml.stylesheet.CRC32=6ddba6b6@1.53.1.46
--- a/apps/experiments/ConferenceScheduleApp/nbproject/jfx-impl.xml	Wed Mar 07 12:42:40 2018 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2374 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-*** GENERATED FROM TEMPLATE - DO NOT EDIT ***
-***       EDIT ../build.xml INSTEAD       ***
--->
-
-<project name="jfx-impl" default="jfx-deployment" basedir=".." xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" 
-         xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:fx="javafx:com.sun.javafx.tools.ant">
-    <description>JavaFX-specific Ant calls</description>
-
-
-    <!-- Empty placeholders for easier customization in ../build.xml -->
-    
-    <target name="-pre-jfx-jar">
-        <!-- Called right before <fx:jar> task. You can override this target in the ../build.xml file. -->
-    </target>
-
-    <target name="-post-jfx-jar">
-        <!-- Called right after <fx:jar> task. You can override this target in the ../build.xml file. -->
-    </target>
-
-    <target name="-pre-jfx-deploy">
-        <!-- Called right before <fx:deploy> task. You can override this target in the ../build.xml file. -->
-    </target>
-
-    <target name="-post-jfx-deploy">
-        <!-- Called right after <fx:deploy> task. You can override this target in the ../build.xml file. -->
-    </target>
-    
-    
-    <!-- Check system and JDK version -->
-
-    <target name="-check-operating-system">
-        <condition property="running.on.unix">
-            <os family="unix"/>
-        </condition>
-        <condition property="running.on.windows">
-            <os family="windows"/>
-        </condition>
-        <echo message="running.on.unix = ${running.on.unix}" level="verbose"/>
-        <echo message="running.on.windows = ${running.on.windows}" level="verbose"/>
-    </target>
-
-    <target name="-check-platform-home-fxsdk-java" depends="-check-property-javafx.sdk" if="javafx.sdk.defined">
-        <condition property="do.set.platform.home.fxsdk.java">
-            <and>
-                <not><isset property="active.platform.home.java.executable"/></not>
-                <or>
-                    <available file="${javafx.sdk}${file.separator}bin${file.separator}java"/>
-                    <available file="${javafx.sdk}${file.separator}bin${file.separator}java.exe"/>
-                </or>
-            </and>
-        </condition>
-    </target>
-    <target name="-set-platform-home-fxsdk-java" depends="-check-platform-home-fxsdk-java" if="do.set.platform.home.fxsdk.java">
-        <property name="active.platform.home.java.executable" value="${javafx.sdk}${file.separator}bin${file.separator}java"/>
-    </target>
-    <target name="-check-platform-home-java" if="platform.home">
-        <condition property="do.set.platform.home.java">
-            <and>
-                <not><isset property="active.platform.home.java.executable"/></not>
-                <or>
-                    <available file="${platform.home}${file.separator}bin${file.separator}java"/>
-                    <available file="${platform.home}${file.separator}bin${file.separator}java.exe"/>
-                </or>
-            </and>
-        </condition>
-    </target>
-    <target name="-set-platform-home-java" depends="-set-platform-home-fxsdk-java,-check-platform-home-java" if="do.set.platform.home.java">
-        <property name="active.platform.home.java.executable" value="${platform.home}${file.separator}bin${file.separator}java"/>
-    </target>
-    <target name="-check-platform-home-probjdk-java" unless="active.platform.home.java.executable">
-        <condition property="do.set.platform.home.probjdk.java">
-            <and>
-                <not><isset property="active.platform.home.java.executable"/></not>
-                <or>
-                    <available file="${java.home}${file.separator}..${file.separator}bin${file.separator}java"/>
-                    <available file="${java.home}${file.separator}..${file.separator}bin${file.separator}java.exe"/>
-                </or>
-            </and>
-        </condition>
-    </target>
-    <target name="-set-platform-home-probjdk-java" depends="-set-platform-home-java,-check-platform-home-probjdk-java" if="do.set.platform.home.probjdk.java">
-        <property name="active.platform.home.java.executable" value="${java.home}${file.separator}..${file.separator}bin${file.separator}java"/>
-    </target>
-    <target name="-check-platform-home-envjdk-java" unless="active.platform.home.java.executable">
-        <property environment="env"/>
-        <condition property="do.set.platform.home.envjdk.java">
-            <and>
-                <not><isset property="active.platform.home.java.executable"/></not>
-                <or>
-                    <available file="${env.JAVA_HOME}${file.separator}bin${file.separator}java"/>
-                    <available file="${env.JAVA_HOME}${file.separator}bin${file.separator}java.exe"/>
-                </or>
-            </and>
-        </condition>
-    </target>
-    <target name="-set-platform-home-envjdk-java" depends="-set-platform-home-probjdk-java,-check-platform-home-envjdk-java" if="do.set.platform.home.envjdk.java">
-        <property environment="env"/>
-        <property name="active.platform.home.java.executable" value="${env.JAVA_HOME}${file.separator}bin${file.separator}java"/>
-    </target>
-    <target name="-check-platform-home-fxrt-java" depends="-check-property-javafx.runtime" if="javafx.runtime.defined">
-        <condition property="do.set.platform.home.fxrt.java">
-            <and>
-                <not><isset property="active.platform.home.java.executable"/></not>
-                <or>
-                    <available file="${javafx.runtime}${file.separator}bin${file.separator}java"/>
-                    <available file="${javafx.runtime}${file.separator}bin${file.separator}java.exe"/>
-                </or>
-            </and>
-        </condition>
-    </target>
-    <target name="-set-platform-home-fxrt-java" depends="-set-platform-home-envjdk-java,-check-platform-home-fxrt-java" if="do.set.platform.home.fxrt.java">
-        <property name="active.platform.home.java.executable" value="${javafx.runtime}${file.separator}bin${file.separator}java"/>
-        <echo message="Warning: java executable not found in JDK, evaluating java executable in RT instead." level="info"/>
-    </target>
-    <target name="-check-platform-home-jre-java" unless="active.platform.home.java.executable">
-        <condition property="do.set.platform.home.jre.java">
-            <and>
-                <not><isset property="active.platform.home.java.executable"/></not>
-                <or>
-                    <available file="${java.home}${file.separator}bin${file.separator}java"/>
-                    <available file="${java.home}${file.separator}bin${file.separator}java.exe"/>
-                </or>
-            </and>
-        </condition>
-    </target>
-    <target name="-set-platform-home-jre-java" depends="-set-platform-home-fxrt-java,-check-platform-home-jre-java" if="do.set.platform.home.jre.java">
-        <property name="active.platform.home.java.executable" value="${java.home}${file.separator}bin${file.separator}java"/>
-        <echo message="Warning: java executable not found in JDK, evaluating java executable in RT instead." level="info"/>
-    </target>
-    <target name="-check-platform-home" depends="-set-platform-home-jre-java">
-        <echo message="active.platform.home.java.executable = ${active.platform.home.java.executable}" level="verbose"/>
-        <fail message="Error:${line.separator}java executable not found !" unless="active.platform.home.java.executable"/>
-    </target>
-        
-    <target name="-check-jdk-version" depends="-do-init,-check-platform-home" unless="jdk-version-checked-in-jfximpl">
-        <local name="version-output"/>
-        <exec executable="${active.platform.home.java.executable}" outputproperty="version-output">
-            <arg value="-version"/>
-        </exec>
-        <echo message="version-output:${line.separator}${version-output}" level="verbose"/>
-        <condition property="have-jdk-older-than-1.6">
-            <or>
-                <contains string="${version-output}" substring="java version &quot;1.0"/>
-                <contains string="${version-output}" substring="java version &quot;1.1"/>
-                <contains string="${version-output}" substring="java version &quot;1.2"/>
-                <contains string="${version-output}" substring="java version &quot;1.3"/>
-                <contains string="${version-output}" substring="java version &quot;1.4"/>
-                <contains string="${version-output}" substring="java version &quot;1.5"/>
-            </or>
-        </condition>
-        <fail message="Error:${line.separator}JavaFX 2.0+ projects require JDK version 1.6+ !" if="have-jdk-older-than-1.6"/>
-        <condition property="have-jdk-7u4or5-mac">
-            <and>
-                <or>
-                    <contains string="${version-output}" substring="java version &quot;1.7.0_04"/>
-                    <contains string="${version-output}" substring="java version &quot;1.7.0_05"/>
-                </or>
-                <os family="mac"/>
-            </and>
-        </condition>
-        <condition property="have-jdk-pre7u6">
-            <or>
-                <contains string="${version-output}" substring="java version &quot;1.6"/>
-                <contains string="${version-output}" substring="java version &quot;1.7.0&quot;"/>
-                <contains string="${version-output}" substring="java version &quot;1.7.0_01"/>
-                <contains string="${version-output}" substring="java version &quot;1.7.0_02"/>
-                <contains string="${version-output}" substring="java version &quot;1.7.0_03"/>
-                <contains string="${version-output}" substring="java version &quot;1.7.0_04"/>
-                <contains string="${version-output}" substring="java version &quot;1.7.0_05"/>
-            </or>
-        </condition>
-        <property name="jdk-version-checked-in-jfximpl" value="true"/>
-        <echo message="have-jdk-7u4or5-mac = ${have-jdk-7u4or5-mac}" level="verbose"/>
-        <echo message="have-jdk-pre7u6 = ${have-jdk-pre7u6}" level="verbose"/>
-    </target>
-        
-    <target name="-check-jdk-7u4or5-mac" depends="-check-jdk-version" if="have-jdk-7u4or5-mac">
-        <fail message="Error:${line.separator}JDK 7u4 Mac and 7u5 Mac do not support WebStart and JavaFX 2.0+ browser plugin technologies.${line.separator}Please upgrade to JDK 7u6 or later."/>
-    </target>
-
-    
-    <!-- Check availability of JavaFX SDK deployment support (ant-javafx.jar) -->
-
-    <target name="-check-endorsed-javafx-ant-classpath">
-        <condition property="endorsed-javafx-ant-classpath-available">
-            <and>
-                <isset property="endorsed.javafx.ant.classpath"/>
-                <not>
-                    <equals arg1="${endorsed.javafx.ant.classpath}" arg2=""/>
-                </not>
-            </and>
-        </condition>
-        <echo message="endorsed-javafx-ant-classpath-available = ${endorsed-javafx-ant-classpath-available}" level="verbose"/>
-    </target>
-
-    <target name="-check-property-javafx.sdk">
-        <echo message="javafx.sdk = ${javafx.sdk}" level="verbose"/>
-        <condition property="javafx.sdk.defined">
-            <and>
-                <isset property="javafx.sdk"/>
-                <not><contains string="${javafx.sdk}" substring="$${platform" casesensitive="false"/></not>
-            </and>
-        </condition>
-        <condition property="javafx.sdk.missing+default">
-            <and>
-                <equals arg1="${platform.active}" arg2="Default_JavaFX_Platform" trim="true"/>
-                <not><isset property="javafx.sdk.defined"/></not>
-            </and>
-        </condition>
-        <condition property="javafx.sdk.missing-default">
-            <and>
-                <not><equals arg1="${platform.active}" arg2="Default_JavaFX_Platform" trim="true"/></not>
-                <not><isset property="javafx.sdk.defined"/></not>
-            </and>
-        </condition>
-        <echo message="javafx.sdk.defined = ${javafx.sdk.defined}" level="verbose"/>
-        <echo message="javafx.sdk.missing+default = ${javafx.sdk.missing+default}" level="verbose"/>
-        <echo message="javafx.sdk.missing-default = ${javafx.sdk.missing-default}" level="verbose"/>
-    </target>
-
-    <target name="-check-ant-javafx-in-fxsdk-lib" depends="-check-property-javafx.sdk" if="javafx.sdk.defined">
-        <condition property="do.set.ant-javafx.in.fxsdk.lib">
-            <and>
-                <not><isset property="ant-javafx.jar.location"/></not>
-                <available file="${javafx.sdk}${file.separator}lib${file.separator}ant-javafx.jar"/>
-            </and>
-        </condition>
-    </target>
-    <target name="-set-ant-javafx-in-fxsdk-lib" depends="-chec