public void genLegalDestsSaveKing(Piece king, Piece threat)
	{
		if ((isBlack() ? mBoard.getGame().getBlackRules() : mBoard.getGame().getWhiteRules()).objectivePiece(isBlack()) == this)
			return;
		if (king == null)
			return;
		Iterator<Square> oldLegalDests = getLegalDests().iterator();
		Square sq = null;

		if (mIsCaptured)
			return;

		List<Square> legalDests = Lists.newArrayList();
		setLegalDests(legalDests);

		while (oldLegalDests.hasNext())
		{
			sq = oldLegalDests.next();

			if (threat.isBlockable(sq, king))
				getLegalDests().add(sq);
			else if (sq.equals(threat.getSquare()))
				getLegalDests().add(sq);
		}
	}