protected final List<Position> getNeighborPositions(final Position center) {
        final List<Position> neighborPositions = new LinkedList<Position>();

        final Integer x = center.getX();
        final Integer y = center.getY();

        for (Integer c = x - 1; c <= x + 1; c++) {
            for (Integer r = y - 1; r <= y + 1; r++) {
                if (c == x && r == y) {
                    continue;
                }

                if ((-1 < c && c < this.size) && (-1 < r && r < this.size)) {
                    neighborPositions.add(new Position(c, r));
                }
            }
        }

        return neighborPositions;

    }