Index: trunk/test/unit/org/openstreetmap/josm/TestUtils.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/TestUtils.java	(revision 14781)
+++ trunk/test/unit/org/openstreetmap/josm/TestUtils.java	(revision 14782)
@@ -30,4 +30,5 @@
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ThreadPoolExecutor;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -55,5 +56,4 @@
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.WikiReader;
-import org.reflections.Reflections;
 
 import com.github.tomakehurst.wiremock.WireMockServer;
@@ -62,4 +62,7 @@
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+import io.github.classgraph.ClassGraph;
+import io.github.classgraph.ClassInfoList;
+import io.github.classgraph.ScanResult;
 import mockit.integration.TestRunnerDecorator;
 
@@ -571,5 +574,9 @@
      */
     public static <T> Set<Class<? extends T>> getJosmSubtypes(Class<T> superClass) {
-        return new Reflections("org.openstreetmap.josm").getSubTypesOf(superClass);
+        try (ScanResult scan = new ClassGraph().whitelistPackages("org.openstreetmap.josm").ignoreClassVisibility().scan()) {
+            Function<String, ClassInfoList> lambda = superClass.isInterface() ? scan::getClassesImplementing : scan::getSubclasses;
+            return lambda.apply(superClass.getName())
+                    .asMap().values().stream().map(x -> x.loadClass(superClass)).collect(Collectors.toSet());
+        }
     }
 
