@Override
    protected void compute() {
        if (numbers.size() < 300) {
            for (int i = 0; i < numbers.size(); i++) {
                numbers.set(i, Math.pow(numbers.get(i), 2));
            }
            return;
        }

        int middle = numbers.size() / 2;

        SquareTaskForkJoin left = new SquareTaskForkJoin(numbers.subList(0, middle));
        SquareTaskForkJoin right = new SquareTaskForkJoin(numbers.subList(middle, numbers.size()));

        invokeAll((RecursiveAction)left, (RecursiveAction)right);
    }