LogWrapper - Log qualquer método, de qualquer Instância

Blz pessoal?

Decidi brincar um pouco com reflexão e uma API chamada CGLIB (Code Generation Library) e acabei criando um pacote que consegue pegar uma instância qualquer e a devolve encapsulada com características de log de método, bem prático.

Por exemplo (apenas ilustrativo):

Quero logar tudo o que acontece com uma instância da ArrayList (que podemos supor que não temos acesso a seu código fonte), para logá-la, basta “envolvermos” a instância verdadeira de ArrayList em um LogWrapper.enableTrace e pronto! Saberemos tudo o q se passa internamente com a instância de ArrayList.

List<String> myList = LogWrapper.enableTrace(new ArrayList<String>(), log, Level.INFO);
myList.add("It's a test");
myList.add("and another test");

O código acima gerará a seguinte saída:

[Thread[main,5,main]] java.util.ArrayList.add("It's a test")	  # add method call (with argument)
[Thread[main,5,main]] java.util.ArrayList.ensureCapacity(1)		  # ensureCapacity call (called internally by add)
[Thread[main,5,main]] return: [null]							  # return of ensureCapacity (void)
[Thread[main,5,main]] return: [true]							  # return of add (true)
[Thread[main,5,main]] java.util.ArrayList.add("and another test") # the same process again...
[Thread[main,5,main]] java.util.ArrayList.ensureCapacity(2)
[Thread[main,5,main]] return: [null]
[Thread[main,5,main]] return: [true]

Caso tenham interesse, há mais detalhes no meu blog e o pacote pode ser baixado no GitHub.