private void addPossibleTakingMove(final List<Move> moveList,
            final int targetFile, final boolean isPromoting) {
        if (ChessRules.fileWithinBounds(targetFile)) {
            final ChessCoord tarCoord = Coords.coord(targetFile, this
                    .getCoord().getRank() + this.rankStep);
            final Piece targetCoordPiece = this.getPos().getPieceAt(tarCoord);
            // Check whether there is an opposing piece at the target
            // coordinate.
            if (targetCoordPiece != null
                    && (!this.getColor().equals(targetCoordPiece.getColor()))) {
                if (isPromoting) {
                    addPromotionMoves(moveList, tarCoord);
                } else {
                    moveList.add(new SimpleTakingMove(this.getCoord(), tarCoord));
                }
            }
            // Also check for en passant moves.
            else if (this.getCoord().getRank() == this.enPassantRank
                    && this.getPos().getEnpassantFile() == targetFile) {
                moveList.add(new EnPassantMove(this.getCoord(), tarCoord));
            }
        }
    }