Como o java implementa fechamentos de classe interna?

Em Java, uma classe interna anônima pode se referir a variáveis em seu escopo local:

public class A {
    public void method() {
        final int i = 0;

        doStuff(new Action() {
            public void doAction() {
                Console.printf(i);   // or whatever
            }
        });
    }
}

Minha pergunta é como isso é realmente implementado? Comoi chegar ao interior anônimodoAction implementação e por que tem que serfinal?

questionAnswers(3)

yourAnswerToTheQuestion