package test;

public aspect Profiling {
       pointcut profile(): execution(* *.*(..)) ;

       private pointcut scope() :
                       if(condition())
                       //&& !(execution(* *.condition())) <- uncomment and infinite loop disappears
                       && !cflow(execution(* *.condition()));

       public static boolean condition(){
               return (Math.random()<2); //always true
       }
       before(): profile() && scope() {
               System.out.println("Entering method "+thisJoinPointStaticPart.getSignature());
       }
}