public int assessMateOrStalemate(Figure fig, XY to, int checkOutput) {
		int output = CORRECT_MOVE;
		XY origXY = fig.getXY();
		Owner o = fig.getRank().getOwner();
		moveWithoutTrace(fig, to);
		for (XY xy : xyOfSides.get(o.oppositeOwner())) {
			output = checkInAssessMateOrStalemate(xy);
			if (output != CHECK_TO_CURRENT_SIDE)
				break;
		}
		moveWithoutTrace(fig, origXY);
		if (output == CHECK_TO_CURRENT_SIDE) {
			// mate or stalemate to awaiting side
			if (checkOutput == CORRECT_MOVE) {
				output = DRAW_STALEMATE;
			} else {
				output = (o == Owner.WHITE) ? CHECKMATE_TO_BLACK : CHECKMATE_TO_WHITE;
			}
		}
		return output;
		
	}