execução vs. ligar para o ponto de junção

Eu tenho duas classes de aspecto diferentes para contar o número de chamadas de método não estático para uma execução de um programa de teste. O primeiro aspecto conta métodos em pontos de junção de "chamada":

pointcut methodCalls() : call (!static * test..*(..));
before(): methodCalls() {
        counter.methodCallCounter();
}

enquanto o segundo aspecto conta métodos em pontos de junção "execução":

pointcut methodCalls() : execution (!static * test..*(..));
before(): methodCalls() {
        counter.methodCallCounter();
}

methodCallCounter () é um método estático na classe de contador.

O número de chamadas de método para um pequeno programa de teste é o mesmo. Mas quando eu mudo o programa de teste com um programa maior, o número de chamadas de método na segunda classe de aspecto (com ponto de execução) é maior que o número de chamadas de método na classe de aspecto com o ponto de chamada. Isso é razoável, já que o ponto de junção de chamadas não seleciona as chamadas feitas com super e, portanto, não as conta.

No entanto, encontrei um caso em que, para a execução específica do programa, o número de chamadas de método não estático na classe de aspecto com "call pointcut" era maior que o número de chamadas de método na classe de aspecto com "execution pointcut". Não consigo encontrar nenhuma interpretação porque isso está acontecendo. Qualquer pensamento sobre o motivo da segunda situação é apreciado.

questionAnswers(1)

yourAnswerToTheQuestion