boolean isLegal(Move move) {
        return move == null ? false
                : (move.movingPiece(this).side() == turn()
                && move.destinationPiece(this).side() != turn()
                && !jumpingEnemy(move)
                && numOnLine(move) == move.length());
    }