private List<ChessCoord> getPossibleCoords() {
        List<ChessCoord> result;
        if (!this.isActive()) {
            result = Collections.emptyList();
        } else {
            final int currentFile = this.getCoord().getFile();
            final int currentRank = this.getCoord().getRank();
            result = new LinkedList<ChessCoord>();

            for (KnightJump step : POSSIBLE_JUMPS) {
                final int file = currentFile + step.getFileJump();
                // First check whether the file valid
                if (ChessRules.fileWithinBounds(file)) {
                    // Now check for the ranks to be in bounds as well
                    for (int rankJump : step.getRankJumps()) {
                        final int rank = currentRank + rankJump;
                        if (ChessRules.rankWithinBounds(rank)) {
                            result.add(Coords.coord(file, rank));
                        }
                    }
                }
            }
        }
        return result;
    }