SOCInventory.removeItem: Return the item removed
SOCGame +cancelPlaceInventoryItem, canPlayInventoryItem, playInventoryItem; state PLACING_INV_ITEM -> 42
SOCGame +placePort(edge), comments
SOCInventoryItem: Javadocs mention checkCanPlayInventoryItem, clarify adding new kind
SOCCancelBuildRequest +INV_ITEM_PLACE_CANCEL, serialVersionUID, javadocs
SOCSimpleAction: javadocs add another purpose
SOCInventoryItemAction: +reasonCode, javadocs other related messages, notes for certain special items
_SC_FTRI: SOCSimpleAction +TRADE_PORT_REMOVED, SOCSimpleRequest +TRADE_PORT_PLACE
SOCGameHandler +handleINVENTORYITEMACTION; handle SOCCancelBuildRequest.INV_ITEM_PLACE_CANCEL; handleSIMPLEREQUEST and forceEndGameTurn structural adds
client PCli, PI, PCL: SOCInventoryItem, SimpleRequest, SimpleAction adjustments; remove pcli.scen_SC_PIRI_attackPirateFortressRequest
SOCHandPanel: clickPlayCardButton check invitem isPlayable, isKept; clickPlayInventorySpecialItem call gmgr.playInventoryItem
SOCBoardPanel: Javadocs adding new mode; _SC_PIRI refactor drawBoardEmpty -> drawSeaEdgeLines, use gmgr.sendSimpleRequest
SOCServer: Clarify comment SOCGameHandler.processCommand
_SC_FTRI: SOCGameHandler SOCSimpleRequest.TRADE_PORT_PLACE, playerEvent.REMOVED_TRADE_PORT
_SC_FTRI: PCli, PI: SimpleAction.TRADE_PORT_REMOVED, updateAtGameState(PLACING_INV_ITEM), SimpleRequest.TRADE_PORT_PLACE, invItemPlayRejected
_SC_FTRI: SOCBoardPanel + mode SC_FTRI_PLACE_PORT: Draw potential locations, hilight cursor edge, request placement at click