@Override
 public boolean matches(Class<?> targetClass) {
   checkReadyToMatch();
   try {
     try {
       return this.pointcutExpression.couldMatchJoinPointsInType(targetClass);
     } catch (ReflectionWorldException ex) {
       logger.debug(
           "PointcutExpression matching rejected target class - trying fallback expression", ex);
       // Actually this is still a "maybe" - treat the pointcut as dynamic if we don't know enough
       // yet
       PointcutExpression fallbackExpression = getFallbackPointcutExpression(targetClass);
       if (fallbackExpression != null) {
         return fallbackExpression.couldMatchJoinPointsInType(targetClass);
       }
     }
   } catch (BCException ex) {
     logger.debug("PointcutExpression matching rejected target class", ex);
   }
   return false;
 }