public static boolean isMoveChessmen(final ChessBoardEntity b, final ChessmenEntity c, final PositionEntity p, final boolean promote) {
		boolean result = false;
		do {
			if (null == c || null == p) {
				break;
			}

			if (!c.isPlayer()) {
				// ̋𑀍삵悤Ƃ܂B
				break;
			}
			if (!c.isBoard()) {
				// Տ̋ł͂܂B
				break;
			}
			if (0 > p.getX() || 9 <= p.getX() || 0 > p.getY() || 9 <= p.getY()) {
				// Ք͈͊Ow肳܂B
				break;
			}
			if (!JchessRule.isMove(c.getType(), p.getX() - c.getPosition().getX(), p.getY() - c.getPosition().getY(), c.isPromote())) {
				// ̋ł͈ړoȂʒuw肳܂B
				break;
			}
			if (!isSkipMove(b, c, p)) {
				// ړrɋ݂܂B
				break;
			}

			ChessmenEntity cto = getChessmen(b, p);
			if (null != cto) {
				if (cto.isPlayer()) {
					// ̈ʒuɂ͊Ɏ݂܂B
					break;
				}
			}

			if (promote) {
				if (2 < p.getY()) {
					// ̏ꏊł͐邱Ƃ͏o܂B
					break;
				}
				if (c.isPromote()) {
					// ɐĂ܂B
					break;
				}
			}

			result = true;
		} while (false);
		return result;
	}