Porque meta-programação deve ser fácil.

Extensão

Agora que você conhece o Mirror, talvez você queira um pouco mais.

Reflection Providers

Basicamente todo o trabalho sujo é feito por uma coleção de interfaces que chamamos de Reflection Providers. Esse é o núcleo real do Mirror. Atualmente temos apenas net.vidageek.mirror.provider.java.PureJavaReflectionProvider, que usa apenas a Java Reflection API. Mas você pode simplesmente implementar net.vidageek.mirror.provider.ReflectionProvider para ter mais controle sobre o que está acontecendo. Na verdade, net.vidageek.mirror.provider.ReflectionProvider é apenas um grande wrapper para interfaces mais específicas: Mas como você faz para que o Mirror use seu Reflection Provider? De uma olhada em Extensão -> Configuração.

Sun Reflection Provider

Existe uma implementação de ReflectionProvider que depende de algumas classes insternas da VM da Sun para acelerar as operações de reflection por ignorar as checagens de segurança. Este provider pode ser 25% mais rápido que o provider padrão dependendo de como você usa o Mirror. Aviso! Este provider provavelmente só funciona nas versões 1.5 e 1.6 das JVMs da Sun. Existem duas formas de utilizar este provider:
new Mirror(new Sun15ReflectionProvider());
Ou adicionar a seguinte linha ao seu mirror.properties:
provider.class = net.vidageek.mirror.provider.sun15.Sun15ReflectionProvider

Configuração

Existem duas formas de configurar o Mirror. Você pode instanciar Mirror passando um net.vidageek.mirror.provider.ReflectionProvider :
new Mirror(new FakeReflectionProvider());
Ou você pode deixar que o mirror leia um arquivo de configuração (mirror.properties) que deve ficar na pasta raiz do seu projeto. Por enquanto, a única chave aceita neste arquivo de configuração é a seguinte: Um exemplo:
provider.class = net.vidageek.mirror.fake.FakeProvider
Apenas para lembrar, nenhuma configuração é necessária para usar o Mirror. Ele vai funcionar bem sem ela. Apenas use-a quando "bem" não for suficiente para suas necessidades.