Всем доброго времени суток! Стал глубже копать разновидности классов и написал код, который содержит класс. Этот класс содержит метод main() и статический вложенный класс. Статический вложенный класс содержит метод. Метод создает локальный класс. Локальный класс имеет метод, который создает анонимный класс обрамляющего класса (сильно сомневаюсь, что подобные извращения имеют место в практике программирования, но чисто спортивного интереса ради решил помудрить, так что просьба — не бросаться камнями. Раньше времени, во всяком случае). Упрощенно это выглядит так: Вложенные, локальные и анонимные классы - 1

class Outer { // ОБРАМЛЯЮЩИЙ КЛАСС
    static class Inner { // СТАТИЧЕСКИЙ ВЛОЖЕННЫЙ КЛАСС
        int doInnerThings() { // ЛОКАЛЬНЫЙ МЕТОД ВНУТРЕННЕГО КЛАССА
            class LocalInner { // ВНУТРЕННИЙ ЛОКАЛЬНЫЙ КЛАСС
                int doLocalInnerThings() { // МЕТОД ЛОКАЛЬНОГО КЛАССА
                    new Outer(5) {}; // ВНУТРЕННИЙ ЛОКАЛЬНЫЙ АНОНИМНЫЙ КЛАСС
                }
            }
        }
    }
}
Цель: создать переменную в анонимном классе, используя обрамляющий супер-класс, и "перебросить" аргумент этой переменной вплоть до внутреннего класса, присвоив его переменной внутреннего класса, соответственно. Ниже приведен чуть расширенный код, с моими набросками.

class Outer { // ОБРАМЛЯЮЩИЙ КЛАСС
    int outerValue = 0;

    Outer(int a)
    {
        this.outerValue = a*a;
    }

    int getValue() {
        return outerValue;
    }

    static class Inner { // ВНУТРЕННИЙ СТАТИЧЕСКИЙ КЛАСС
        public  int innerValue = doInnerThings();

        int doInnerThings() {
            final int innerValue = 0; // КАК ПЕРЕДАТЬ ЗНАЧЕНИЕ ЭТОЙ ПЕРЕМЕННОЙ ИЗ КЛАССА НИЖЕ?

            class LocalInner { // ЛОКАЛЬНЫЙ КЛАСС
                final public int localInnerValue;

                LocalInner() {
                    localInnerValue = doLocalInnerThings();
                }

                int doLocalInnerThings() {
                    final int[] localInnerAnonValue = {0};

                    new Outer(5) { // АНОНИМНЫЙ КЛАСС
                        @Override
                        int getValue()
                        {
                            localInnerAnonValue[0] = super.getValue();
                            return localInnerAnonValue[0];
                        }
                    };
                    
                    return localInnerAnonValue[0];
                }

                int getlocalInnerValue() {
                    return this.localInnerValue;
                }
            }

            return innerValue;
        }
    }

    public static void main(String[] args) {
        Outer.Inner test = new Outer.Inner();
        System.out.println(test.innerValue);
    }
}
Проблема: метод int doInnerThings()Не могу присвоить переменной этого метода innerValue значение переменной localInnerValue" из локального класса LocalInner. Буду рад помощи! :)