docs: public InternalRunner create(Class<?> klass, Supplier<MockitoTestListener> listenerSupplier) throws InvocationTargetException {
          try {
              String runnerClassName = "org.mockito.internal.runners.DefaultInternalRunner";
              //Warning: I'm using String literal on purpose!
              //When JUnit is not on classpath, we want the code to throw exception here so that we can catch it
              //If we statically link the class, we will get Error when class is loaded
              return new RunnerProvider().newInstance(runnerClassName, klass, listenerSupplier);
          } catch (InvocationTargetException e) {
              if (!hasTestMethods(klass)) {
                  throw new MockitoException(
                      "\n" +
                      "\n" +
                      "No tests found in " + klass.getSimpleName() + "\n" +
                      "Is the method annotated with @Test?\n" +
                      "Is the method public?\n"
                      , e);
              }
              throw e;
          } catch (Throwable t) {
              throw new MockitoException(
                      "\n" +
                      "\n" +
                      "MockitoRunner can only be used with JUnit 4.5 or higher.\n" +
                      "You can upgrade your JUnit version or write your own Runner (please consider contributing your runner to the Mockito community).\n" +
                      "Bear in mind that you can still enjoy all features of the framework without using runners (they are completely optional).\n" +
                      "If you get this error despite using JUnit 4.5 or higher then please report this error to the mockito mailing list.\n"
                      , t);
          }
      }