Request (final String suiteName, Class<?>[] classes, Map<String, Set<String>> classMethods, Class<?> category) { boolean canUseSuiteMethod = canUseSuiteMethod(classMethods); try { if (category != null) { try { Class.forName("org.junit.experimental.categories.Categories"); } catch (ClassNotFoundException e) { throw new RuntimeException("Categories are not available"); } } Runner suite; if (canUseSuiteMethod) { try { Class.forName("org.junit.experimental.categories.Categories"); suite = new IdeaSuite48(collectWrappedRunners(classes), suiteName, category); } catch (ClassNotFoundException e) { suite = new IdeaSuite(collectWrappedRunners(classes), suiteName); } } else { final AllDefaultPossibilitiesBuilder builder = new AllDefaultPossibilitiesBuilder(canUseSuiteMethod); try { Class.forName("org.junit.experimental.categories.Categories"); suite = new IdeaSuite48(builder, classes, suiteName, category); } catch (ClassNotFoundException e) { suite = new IdeaSuite(builder, classes, suiteName); } } return Request.runner(suite); } catch (InitializationError e) { throw new RuntimeException(e); } }