private Result checkForResult(CoinColor moveDoneBy) {
		List<Move> m=(moveDoneBy==CoinColor.WHITE?black_king:white_king).getPossibleMoves(this);	
		if(m.isEmpty())
		{
			Iterator<Coin> coinIterator=getCoinIterator();
			boolean hasNoLegalMoves=true;
			while(coinIterator.hasNext()){
				Coin c=coinIterator.next();
				if(c!=null&&c!=Coin.Empty&&c.getColor()!=moveDoneBy&&!c.getPossibleMoves(this).isEmpty())
				{
					hasNoLegalMoves=false;
					break;
				}
			}
			if(checkKingIsSafe(moveDoneBy==CoinColor.WHITE?CoinColor.BLACK:CoinColor.WHITE)){
				if(hasNoLegalMoves) return Result.DRAW_STALEMATE;
			}
			else if(hasNoLegalMoves){
			return moveDoneBy==CoinColor.WHITE?Result.WHITE_WINS_BY_CHECKMATE:Result.BLACK_WINS_BY_CHECKMATE;
			}
		}
		return null;
	}