Ссылка на конструктор для внутреннего класса завершается с VerifyError во время выполнения

Я создаю поставщика для внутреннего конструктора класса, используя лямбдуctx -> new SpectatorSwitcher(ctx), IntelliJ предложил мне изменить его наSpectatorSwitcher::new вместо. SpectatorSwitcher - это нестатический внутренний класс класса, в котором я работаю. Предлагаемый код компилируется нормально (с использованием maven), но я получаю следующее VerifyError при выполнении:

Exception in thread "main" java.lang.VerifyError: Bad type on operand stack
Exception Details:
  Location:
    Test.lambda$runTest$8(LTest$Worker;)V @2: invokedynamic
  Reason:
    Type 'Test$Worker' (current frame, stack[1]) is not assignable to 'Test'
  Current Frame:
    bci: @2
    flags: { }
    locals: { 'Test$Worker' }
    stack: { 'Test$Worker', 'Test$Worker' }
  Bytecode:
    0000000: 2a2a ba00 0b00 00b6 000c b1            

    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2688)
    at java.lang.Class.getMethod0(Class.java:2937)
    at java.lang.Class.getMethod(Class.java:1771)
    at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)

Почему javac / maven не завершается с ошибкой при компиляции, но все еще выдает неверный байт-код?

Редактировать: Проблема кажется гораздо более сложной, чем простой вызов, это код, необходимый для ее воспроизведения:

import java.util.function.Function;

/**
 * @author Yawkat
 */
public class Test {
    public static void main(String[] args) { new Test().runTest(); }

    private void runTest() {
        Worker worker = new Worker();
        run(() -> worker.print(field -> new SomeClass(field)));
        run(() -> worker.print(SomeClass::new));
    }

    private void run(Runnable runnable) {
        runnable.run();
    }

    private class SomeClass {
        final Object field;

        SomeClass(Object field) {
            this.field = field;
        }
    }

    private static class Worker {
        void print(Function<Object, Object> i) {
            System.out.println(i.apply(null));
        }
    }
}

Ответы на вопрос(1)

Ваш ответ на вопрос