Como instrumentar métodos java?

Eu quero escrever um agente java simples que pode imprimir o nome de um método chamado pelo programa java instrumentado.

Por exemplo, meu programa java que eu quero instrumentar é:

public class TestInstr {

public static void sayHello() {
    System.out.println("Hello !");
}

public static void main(String args[]) {
    sayHello();
    sayHello();
    sayHello();
 }

}

Eu gostaria de mostrar algo assim:

method sayHello has been called
Hello !
method sayHello has been called
Hello !
method sayHello has been called
Hello !

Obrigado pela ajuda!

questionAnswers(5)

yourAnswerToTheQuestion