private BoardPosition processPosition(Position position) { if (board.positionWasShotAt(position)) { if (board.positionIsTakenByShip(position)) { Ship ship = board.getShipAtPosition(position); if (ship.sunk()) { return BoardPosition.createShipSunk(); } return BoardPosition.createShipHit(); } return BoardPosition.createWaterHit(); } if (mask) { return BoardPosition.createUnknown(); } if (board.positionIsTakenByShip(position)) { return BoardPosition.createShip(); } return BoardPosition.createWater(); }