Buggy code:
public class ModelFacade extends Observable implements IModelFacade { private IProxy proxy ; private Game game ; private PlayerInfo player ; private GameInfo gameInfo ; private Poller poller ; private boolean hasJoined = false ; private boolean hasPlayedDevCard ; private boolean isRoadBuilding ; private EdgeLocation firstRoadInRoadBuilding ; private boolean hasRolled ; private PlayerInfo [ ] players ; public ModelFacade ( IProxy proxy ) { } private static ModelFacade instance ; public static ModelFacade getInstance ( ) { } public static void createInstance ( IProxy proxy ) { } public void modelChanged ( ) { } public Resources getPorts ( ) { } public String getState ( ) { } public void setPlayerInfo ( PlayerInfo player ) { } public GameInfo getGameInfo ( ) { } public void setGameInfo ( GameInfo gameInfo ) { } public PlayerInfo getPlayerInfo ( ) { } public Game getGame ( ) { } public void setGame ( Game game ) { } public IProxy getProxy ( ) throws Exception { } public void setPoller ( Poller p ) { } public Poller getPoller ( ) { } public void setFirstRoadBuidingRoad ( EdgeLocation edge ) { } @ Override public boolean isPlayerTurn ( ) { } @ Override public boolean canAcceptTrade ( ) { } @ Override public boolean CanDiscardCards ( Resources resources ) { } private boolean canPlay ( ) { } @ Override public boolean CanRollNumber ( ) { } @ Override public boolean canPlaceRoad ( EdgeLocation edgeLoc , boolean free ) { } @ Override public boolean canPlaceSettlement ( VertexLocation vertLoc , boolean isSetup ) { } @ Override public boolean canPlaceCity ( VertexLocation vertLoc ) { } @ Override public boolean CanBuyRoad ( ) { } @ Override public boolean CanBuySettlement ( ) { } @ Override public boolean CanBuyCity ( ) { } @ Override public boolean CanOfferTrade ( Resources offer ) { } @ Override public boolean CanMaritimeTrade ( int ratio , String inputResource , String outResource ) { } @ Override public boolean canPlaceRobber ( HexLocation hexLoc ) { } @ Override public boolean canRobPlayer ( HexLocation location , int victimIndex ) { } @ Override public boolean CanFinishTurn ( ) { } @ Override public boolean CanBuyDevCard ( ) { } public boolean canPlayDevCard ( DevCardType devCard ) { <START_BUG> if ( ( ( ( ( ! ( isPlayerTurn ( ) ) ) || ( hasPlayedDevCard ) ) || ( ! ( getState ( ) . equals ( "Playing" ) ) ) ) || ( ! ( game . getPlayer ( ) . getOldDevCards ( ) . hasDevCard ( devCard ) ) ) ) || ( game . getPlayer ( ) . isPlayedDevCard ( ) ) ) <END_BUG> return false ; return true ; } @ Override public boolean CanUseSoldier ( int victimIndex , HexLocation location ) { } public boolean canUseSoldierOfficial ( ) { } @ Override public boolean CanUseYearOfPlenty ( String resource1 , String resource2 ) { } @ Override public boolean CanUseRoadBuilder ( EdgeLocation spot1 , EdgeLocation spot2 ) { } public boolean canUseRoadBuilderOfficial ( ) { } @ Override public boolean CanUseMonopoly ( String resource ) { } @ Override public boolean CanUseMonument ( ) { } @ Override public void sendChat ( SendChatParam param ) { } @ Override public void acceptTrade ( boolean accept ) { } @ Override public void discardCards ( Resources resources ) { } @ Override public void rollNumber ( int total , int dontUseThis ) { } @ Override public void buildRoad ( EdgeLocation edge , boolean free ) { } @ Override public void buildSettlement ( VertexLocation vert , boolean free ) { } @ Override public void buildCity ( VertexLocation vert ) { } @ Override public void offerTrade ( int receiver , Resources resources ) { } @ Override public void maritimeTrade ( int ratio , String inputResource , String outResource ) { } @ Override public void robPlayer ( HexLocation location , int victimIndex ) { } @ Override public void finishTurn ( ) { } @ Override public void buyDevCard ( ) { } @ Override public void playSoldierCard ( int victimIndex , HexLocation location ) { } @ Override public void playYearOfPlentyCard ( String resource1 , String resource2 ) { } @ Override public void playRoadCard ( EdgeLocation spot1 , EdgeLocation spot2 ) { } @ Override public void playMonopolyCard ( String resource ) { } @ Override public void playMonumentCard ( ) { } public LoginResponse login ( CredentialsParam params ) { } public LoginResponse register ( CredentialsParam params ) { } public StandardResponse joinGame ( JoinGameParam params ) { } public boolean isHasJoined ( ) { } public void setHasJoined ( boolean hasJoined ) { } public CreateGameResponse createGame ( CreateGameParam params ) { } public ListGamesResponse listGames ( ) { } public StandardResponse addAi ( AddAiParam input ) { } public ListAIResponse listAi ( ) { } public void resetGame ( ) { } public void updateGameModel ( ) { } public void update ( ) { } public RobPlayerInfo [ ] getRobPlayerInfoList ( HexLocation hexLoc ) { } public boolean checkGameFull ( ) { } public int getGameId ( ) { } public PlayerInfo [ ] getPlayerInfoList ( ) { } public boolean isGameFull ( ) { } public Player [ ] getPlayers ( ) { } No newline ; at end ; of file ; }

Fix:
if ( ( ( ( ! ( isPlayerTurn ( ) ) ) || ( hasPlayedDevCard ) ) || ( ! ( getState ( ) . equals ( "Playing" ) ) ) ) || ( ! ( game . getPlayer ( ) . getOldDevCards ( ) . hasDevCard ( devCard ) ) ) )