code: public static void intercept(@This final Object runner, @SuperCall final Callable<?> proxy,
                      @Argument(0) final Object child,
                      @Argument(1) final RunNotifier notifier) throws Exception {
          
          Run.attachRunListeners(runner, notifier);
          
          synchronized(notifyMap) {
              String key = runner.toString();
              if (!notifyMap.containsKey(key)) {
                  notifyMap.put(key, Run.fireRunStarted(runner));
              }
          }
          
          try {
              Run.pushThreadRunner(runner);
              if (child instanceof FrameworkMethod) {
                  FrameworkMethod method = (FrameworkMethod) child;
                  
                  applyTimeout(method);
                  int count = RetryHandler.getMaxRetry(runner, method);
                  boolean isIgnored = (null != method.getAnnotation(Ignore.class));
                  
                  RunAnnouncer.newAtomicTest(runner, method);
                  
                  if (count == 0) {
                      LifecycleHooks.callProxy(proxy);
                  } else if (!isIgnored) {
                      RetryHandler.runChildWithRetry(runner, method, notifier, count);
                  }
              } else {
                  LifecycleHooks.callProxy(proxy);
              }
          } finally {
              Run.popThreadRunner();
          }
      }
docs: Interceptor for the {@link org.junit.runners.BlockJUnit4ClassRunner#runChild runChild} method.
  <p>
  <b>NOTE</b>: If the {@link RunnerWatcher#runStarted(Object)} event hasn't been fired yet for the specified
  JUnit test runner, the event will be fired by this interceptor.
  
  @param runner underlying test runner
  @param proxy callable proxy for the intercepted method
  @param child {@code ParentRunner} or {@code FrameworkMethod} object
  @param notifier run notifier through which events are published
  @throws Exception {@code anything} (exception thrown by the intercepted method)