private ArrayList<Dot> findAvailableDots(Dot dot, Capture capture) {
        ArrayList<Dot> result = new ArrayList<Dot>();
        // converts "i" into dots coordinates, starting from from the top dot,
        // counterclockwise
        int x = dot.getX() + 1;
        int y = dot.getY() - 1;
        for(int i = 0; i < 8; i++){
            x += delta(i + 6);
            y += delta(i);
            if ((x < size) && (x >= 0) && (y < size) && (y >= 0) && (dots[x][y] != null)) {
                if (dot.isSamePlayer(dots[x][y]) && availableLine(dot, dots[x][y]) && !capture.isUsedWithoutStartDot(dots[x][y])) {
                    result.add(dots[x][y]);
                }
            }
        }
        return result;
    }