@@ -22,34 +22,41 @@ */ package org.openjdk.bench.jdk.internal.jrtfs; import jdk.internal.jimage.ImageReader; import jdk.internal.jimage.ImageReader.Node; + import jdk.internal.jimage.PreviewMode; import org.openjdk.jmh.annotations.Benchmark; import org.openjdk.jmh.annotations.BenchmarkMode; import org.openjdk.jmh.annotations.Fork; import org.openjdk.jmh.annotations.Level; import org.openjdk.jmh.annotations.Measurement; import org.openjdk.jmh.annotations.Mode; import org.openjdk.jmh.annotations.OutputTimeUnit; + import org.openjdk.jmh.annotations.Param; import org.openjdk.jmh.annotations.Scope; import org.openjdk.jmh.annotations.Setup; import org.openjdk.jmh.annotations.State; import org.openjdk.jmh.annotations.TearDown; import org.openjdk.jmh.annotations.Warmup; import org.openjdk.jmh.infra.Blackhole; import java.io.IOException; - import java.nio.ByteOrder; import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; import java.util.List; + import java.util.Map; import java.util.Set; import java.util.concurrent.TimeUnit; + import java.util.regex.Matcher; + import java.util.regex.Pattern; import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; + import static java.util.stream.Collectors.groupingBy; + import static java.util.stream.Collectors.mapping; + import static java.util.stream.Collectors.toList; /// Benchmarks for ImageReader. See individual benchmarks for details on what they /// measure, and their potential applicability for real world conclusions. @BenchmarkMode(Mode.AverageTime) @Warmup(iterations = 5, timeUnit = TimeUnit.MILLISECONDS)
@@ -65,47 +72,64 @@ throw new IllegalStateException("Cannot locate jimage file for benchmark: " + SYSTEM_IMAGE_FILE); } } /// NOT annotated with `@State` since it needs to potentially be used as a - /// per-benchmark or a per-iteration state object. The subclasses provide + /// per-trial or a per-iteration state object. The subclasses provide /// any lifetime annotations that are needed. static class BaseState { protected Path copiedImageFile; - protected ByteOrder byteOrder; long count = 0; public void setUp() throws IOException { copiedImageFile = Files.createTempFile("copied_jimage", ""); - byteOrder = ByteOrder.nativeOrder(); Files.copy(SYSTEM_IMAGE_FILE, copiedImageFile, REPLACE_EXISTING); } public void tearDown() throws IOException { Files.deleteIfExists(copiedImageFile); System.err.println("Result: " + count); } } + /// A {@link Level#Trial per-trial} state which provides an image reader, + /// suitable for {@link Mode#AverageTime average time} benchmarks. @State(Scope.Benchmark) - public static class WarmStartWithImageReader extends BaseState { + public static class WarmStart extends BaseState { + @Param({"DISABLED", "ENABLED"}) + PreviewMode previewMode; ImageReader reader; @Setup(Level.Trial) public void setUp() throws IOException { super.setUp(); - reader = ImageReader.open(copiedImageFile, byteOrder); + reader = ImageReader.open(copiedImageFile, previewMode); } @TearDown(Level.Trial) public void tearDown() throws IOException { super.tearDown(); } } + @State(Scope.Benchmark) + public static class WarmStartWithCachedNodes extends WarmStart { + @Setup(Level.Trial) + public void setUp() throws IOException { + super.setUp(); + countAllNodes(reader, reader.findNode("/")); + } + } + + /// A {@link Level#Iteration per-iteration} state suitable for + /// {@link Mode#SingleShotTime single shot} benchmarks. Unlike + /// {@link WarmStart}, this state does not provide a reader instance. @State(Scope.Benchmark) public static class ColdStart extends BaseState { + @Param({"DISABLED", "ENABLED"}) + PreviewMode previewMode; + @Setup(Level.Iteration) public void setUp() throws IOException { super.setUp(); }
@@ -114,17 +138,17 @@ super.tearDown(); } } @State(Scope.Benchmark) - public static class ColdStartWithImageReader extends BaseState { + public static class ColdStartWithImageReader extends ColdStart { ImageReader reader; @Setup(Level.Iteration) public void setup() throws IOException { super.setUp(); - reader = ImageReader.open(copiedImageFile, byteOrder); + reader = ImageReader.open(copiedImageFile, previewMode); } @TearDown(Level.Iteration) public void tearDown() throws IOException { reader.close();
@@ -135,28 +159,67 @@ /// Benchmarks counting of all nodes in the system image *after* they have all /// been visited at least once. Image nodes should be cached after first use, /// so this benchmark should be fast and very stable. @Benchmark @BenchmarkMode(Mode.AverageTime) - public void warmCache_CountAllNodes(WarmStartWithImageReader state) throws IOException { + public void warmStart_CountAllNodes(WarmStartWithCachedNodes state) throws IOException { state.count = countAllNodes(state.reader, state.reader.findNode("/")); } + /// Benchmarks {@link ImageReader#containsResource(String, String)} when no + /// nodes have been cached in the {@link ImageReader}. In non-preview mode, + /// this should be identical to the case where nodes are cached (because the + /// cache isn't used) but in preview mode, the cache will be tested for + /// preview resources, and thus differ depending on whether nodes are present. + /// + /// This doesn't need to be a cold start because it never modifies the nodes + /// cache. + @Benchmark + @BenchmarkMode(Mode.AverageTime) + public void warmStart_ContainsResource_emptyNodeCache(WarmStart state) throws IOException { + state.count = countContainsResource(state.reader, ClassList.pathMap()); + } + + /// As above, but the nodes cache has been filled, giving preview mode a + /// different code path. + @Benchmark + @BenchmarkMode(Mode.AverageTime) + public void warmStart_ContainsResource_fullNodeCache(WarmStartWithCachedNodes state) throws IOException { + state.count = countContainsResource(state.reader, ClassList.pathMap()); + } + + /// As {@link #warmStart_ContainsResource_emptyNodeCache}, but tests + /// {@link ImageReader#findResourceNode(String, String)}. + @Benchmark + @BenchmarkMode(Mode.AverageTime) + public void warmStart_FindResourceNode_emptyNodeCache(WarmStart state) throws IOException { + state.count = countFindResourceNode(state.reader, ClassList.pathMap()); + } + + /// As {@link #warmStart_ContainsResource_fullNodeCache}, but tests + /// {@link ImageReader#findResourceNode(String, String)}. + @Benchmark + @BenchmarkMode(Mode.AverageTime) + public void warmStart_FindResourceNode_fullNodeCache(WarmStartWithCachedNodes state) throws IOException { + state.count = countFindResourceNode(state.reader, ClassList.pathMap()); + } + + /// Benchmarks counting of all nodes in the system image from a "cold start". This /// visits all nodes in depth-first order and counts them. /// /// This benchmark is not representative of any typical usage pattern, but can be /// used for comparisons between versions of `ImageReader`. @Benchmark @BenchmarkMode(Mode.SingleShotTime) public void coldStart_InitAndCount(ColdStart state) throws IOException { - try (var reader = ImageReader.open(state.copiedImageFile, state.byteOrder)) { + try (var reader = ImageReader.open(state.copiedImageFile, state.previewMode)) { state.count = countAllNodes(reader, reader.findNode("/")); } } - /// As above, but includes the time to initialize the `ImageReader`. + /// As above, but excludes the time to initialize the `ImageReader`. @Benchmark @BenchmarkMode(Mode.SingleShotTime) public void coldStart_CountOnly(ColdStartWithImageReader state) throws IOException { state.count = countAllNodes(state.reader, state.reader.findNode("/")); }
@@ -171,25 +234,25 @@ /// increase in the real-world startup time of javac. @Benchmark @BenchmarkMode(Mode.SingleShotTime) public void coldStart_LoadJavacInitClasses(Blackhole bh, ColdStart state) throws IOException { int errors = 0; - try (var reader = ImageReader.open(state.copiedImageFile, state.byteOrder)) { - for (String path : INIT_CLASSES) { + try (var reader = ImageReader.open(state.copiedImageFile, state.previewMode)) { + for (String path : ClassList.names()) { // Path determination isn't perfect so there can be a few "misses" in here. // Report the count of bad paths as the "result", which should be < 20 or so. Node node = reader.findNode(path); if (node != null) { bh.consume(reader.getResource(node)); } else { errors += 1; } } } - state.count = INIT_CLASSES.size(); + state.count = ClassList.count(); // Allow up to 2% missing classes before complaining. - if ((100 * errors) / INIT_CLASSES.size() >= 2) { + if ((100 * errors) / ClassList.count() >= 2) { reportMissingClassesAndFail(state, errors); } } static long countAllNodes(ImageReader reader, Node node) {
@@ -204,875 +267,934 @@ }).sum(); } return count; } + static long countContainsResource(ImageReader reader, Map<String, List<String>> modToPaths) + throws IOException { + long count = 0; + for (Map.Entry<String, List<String>> e : modToPaths.entrySet()) { + String mod = e.getKey(); + for (String path : e.getValue()) { + if (reader.containsResource(mod, path)) { + count++; + } + } + } + return count; + } + + static long countFindResourceNode(ImageReader reader, Map<String, List<String>> modToPaths) throws IOException { + long count = 0; + for (Map.Entry<String, List<String>> e : modToPaths.entrySet()) { + String mod = e.getKey(); + for (String path : e.getValue()) { + if (reader.findResourceNode(mod, path) != null) { + count++; + } + } + } + return count; + } + // Run if the INIT_CLASSES list below is sufficiently out-of-date. // DO NOT run this before the benchmark, as it will cache all the nodes! private static void reportMissingClassesAndFail(ColdStart state, int errors) throws IOException { List<String> missing = new ArrayList<>(errors); - try (var reader = ImageReader.open(state.copiedImageFile, state.byteOrder)) { - for (String path : INIT_CLASSES) { + try (var reader = ImageReader.open(state.copiedImageFile, state.previewMode)) { + for (String path : ClassList.names()) { if (reader.findNode(path) == null) { missing.add(path); } } } throw new IllegalStateException( String.format( "Too many missing classes (%d of %d) in the hardcoded benchmark list.\n" + "Please regenerate it according to instructions in the source code.\n" + "Missing classes:\n\t%s", - errors, INIT_CLASSES.size(), String.join("\n\t", missing))); + errors, ClassList.count(), String.join("\n\t", missing))); } - // Note: This list is inherently a little fragile and may end up being more - // trouble than it's worth to maintain. If it turns out that it needs to be - // regenerated often when this benchmark is run, then a new approach should - // be considered, such as: - // * Limit the list of classes to non-internal ones. - // * Calculate the list dynamically based on the running JVM. - // - // Created by running "java -verbose:class", throwing away anonymous inner - // classes and anything without a reliable name, and grouping by the stated - // source. It's not perfect, but it's representative. - // - // <jdk_root>/bin/java -verbose:class HelloWorld 2>&1 \ - // | fgrep '[class,load]' | cut -d' ' -f2 \ - // | tr '.' '/' \ - // | egrep -v '\$[0-9$]' \ - // | fgrep -v 'HelloWorld' \ - // | fgrep -v '/META-INF/preview/' \ - // | while read f ; do echo "${f}.class" ; done \ - // > initclasses.txt - // - // Output: - // java/lang/Object.class - // java/io/Serializable.class - // ... - // - // jimage list <jdk_root>/images/jdk/lib/modules \ - // | awk '/^Module: */ { MOD=$2 }; /^ */ { print "/modules/"MOD"/"$1 }' \ - // > fullpaths.txt - // - // Output: - // ... - // /modules/java.base/java/lang/Object.class - // /modules/java.base/java/lang/OutOfMemoryError.class - // ... - // - // while read c ; do grep "/$c" fullpaths.txt ; done < initclasses.txt \ - // | while read c ; do printf ' "%s",\n' "$c" ; done \ - // > initpaths.txt - // - // Output: - private static final Set<String> INIT_CLASSES = Set.of( - "/modules/java.base/java/lang/Object.class", - "/modules/java.base/java/io/Serializable.class", - "/modules/java.base/java/lang/Comparable.class", - "/modules/java.base/java/lang/CharSequence.class", - "/modules/java.base/java/lang/constant/Constable.class", - "/modules/java.base/java/lang/constant/ConstantDesc.class", - "/modules/java.base/java/lang/String.class", - "/modules/java.base/java/lang/reflect/AnnotatedElement.class", - "/modules/java.base/java/lang/reflect/GenericDeclaration.class", - "/modules/java.base/java/lang/reflect/Type.class", - "/modules/java.base/java/lang/invoke/TypeDescriptor.class", - "/modules/java.base/java/lang/invoke/TypeDescriptor$OfField.class", - "/modules/java.base/java/lang/Class.class", - "/modules/java.base/java/lang/Cloneable.class", - "/modules/java.base/java/lang/ClassLoader.class", - "/modules/java.base/java/lang/System.class", - "/modules/java.base/java/lang/Throwable.class", - "/modules/java.base/java/lang/Error.class", - "/modules/java.base/java/lang/Exception.class", - "/modules/java.base/java/lang/RuntimeException.class", - "/modules/java.base/java/security/ProtectionDomain.class", - "/modules/java.base/java/security/SecureClassLoader.class", - "/modules/java.base/java/lang/ReflectiveOperationException.class", - "/modules/java.base/java/lang/ClassNotFoundException.class", - "/modules/java.base/java/lang/Record.class", - "/modules/java.base/java/lang/LinkageError.class", - "/modules/java.base/java/lang/NoClassDefFoundError.class", - "/modules/java.base/java/lang/ClassCastException.class", - "/modules/java.base/java/lang/ArrayStoreException.class", - "/modules/java.base/java/lang/VirtualMachineError.class", - "/modules/java.base/java/lang/InternalError.class", - "/modules/java.base/java/lang/OutOfMemoryError.class", - "/modules/java.base/java/lang/StackOverflowError.class", - "/modules/java.base/java/lang/IllegalMonitorStateException.class", - "/modules/java.base/java/lang/ref/Reference.class", - "/modules/java.base/java/lang/IllegalCallerException.class", - "/modules/java.base/java/lang/ref/SoftReference.class", - "/modules/java.base/java/lang/ref/WeakReference.class", - "/modules/java.base/java/lang/ref/FinalReference.class", - "/modules/java.base/java/lang/ref/PhantomReference.class", - "/modules/java.base/java/lang/ref/Finalizer.class", - "/modules/java.base/java/lang/Runnable.class", - "/modules/java.base/java/lang/Thread.class", - "/modules/java.base/java/lang/Thread$FieldHolder.class", - "/modules/java.base/java/lang/Thread$Constants.class", - "/modules/java.base/java/lang/Thread$UncaughtExceptionHandler.class", - "/modules/java.base/java/lang/ThreadGroup.class", - "/modules/java.base/java/lang/BaseVirtualThread.class", - "/modules/java.base/java/lang/VirtualThread.class", - "/modules/java.base/java/lang/ThreadBuilders$BoundVirtualThread.class", - "/modules/java.base/java/util/Map.class", - "/modules/java.base/java/util/Dictionary.class", - "/modules/java.base/java/util/Hashtable.class", - "/modules/java.base/java/util/Properties.class", - "/modules/java.base/java/lang/Module.class", - "/modules/java.base/java/lang/reflect/AccessibleObject.class", - "/modules/java.base/java/lang/reflect/Member.class", - "/modules/java.base/java/lang/reflect/Field.class", - "/modules/java.base/java/lang/reflect/Parameter.class", - "/modules/java.base/java/lang/reflect/Executable.class", - "/modules/java.base/java/lang/reflect/Method.class", - "/modules/java.base/java/lang/reflect/Constructor.class", - "/modules/java.base/jdk/internal/vm/ContinuationScope.class", - "/modules/java.base/jdk/internal/vm/Continuation.class", - "/modules/java.base/jdk/internal/vm/StackChunk.class", - "/modules/java.base/jdk/internal/reflect/MethodAccessor.class", - "/modules/java.base/jdk/internal/reflect/MethodAccessorImpl.class", - "/modules/java.base/jdk/internal/reflect/ConstantPool.class", - "/modules/java.base/java/lang/annotation/Annotation.class", - "/modules/java.base/jdk/internal/reflect/CallerSensitive.class", - "/modules/java.base/jdk/internal/reflect/ConstructorAccessor.class", - "/modules/java.base/jdk/internal/reflect/ConstructorAccessorImpl.class", - "/modules/java.base/jdk/internal/reflect/DirectConstructorHandleAccessor$NativeAccessor.class", - "/modules/java.base/java/lang/invoke/MethodHandle.class", - "/modules/java.base/java/lang/invoke/DirectMethodHandle.class", - "/modules/java.base/java/lang/invoke/VarHandle.class", - "/modules/java.base/java/lang/invoke/MemberName.class", - "/modules/java.base/java/lang/invoke/ResolvedMethodName.class", - "/modules/java.base/java/lang/invoke/MethodHandleNatives.class", - "/modules/java.base/java/lang/invoke/LambdaForm.class", - "/modules/java.base/java/lang/invoke/TypeDescriptor$OfMethod.class", - "/modules/java.base/java/lang/invoke/MethodType.class", - "/modules/java.base/java/lang/BootstrapMethodError.class", - "/modules/java.base/java/lang/invoke/CallSite.class", - "/modules/java.base/jdk/internal/foreign/abi/NativeEntryPoint.class", - "/modules/java.base/jdk/internal/foreign/abi/ABIDescriptor.class", - "/modules/java.base/jdk/internal/foreign/abi/VMStorage.class", - "/modules/java.base/jdk/internal/foreign/abi/UpcallLinker$CallRegs.class", - "/modules/java.base/java/lang/invoke/ConstantCallSite.class", - "/modules/java.base/java/lang/invoke/MutableCallSite.class", - "/modules/java.base/java/lang/invoke/VolatileCallSite.class", - "/modules/java.base/java/lang/AssertionStatusDirectives.class", - "/modules/java.base/java/lang/Appendable.class", - "/modules/java.base/java/lang/AbstractStringBuilder.class", - "/modules/java.base/java/lang/StringBuffer.class", - "/modules/java.base/java/lang/StringBuilder.class", - "/modules/java.base/jdk/internal/misc/UnsafeConstants.class", - "/modules/java.base/jdk/internal/misc/Unsafe.class", - "/modules/java.base/jdk/internal/module/Modules.class", - "/modules/java.base/java/lang/AutoCloseable.class", - "/modules/java.base/java/io/Closeable.class", - "/modules/java.base/java/io/InputStream.class", - "/modules/java.base/java/io/ByteArrayInputStream.class", - "/modules/java.base/java/net/URL.class", - "/modules/java.base/java/lang/Enum.class", - "/modules/java.base/java/util/jar/Manifest.class", - "/modules/java.base/jdk/internal/loader/BuiltinClassLoader.class", - "/modules/java.base/jdk/internal/loader/ClassLoaders.class", - "/modules/java.base/jdk/internal/loader/ClassLoaders$AppClassLoader.class", - "/modules/java.base/jdk/internal/loader/ClassLoaders$PlatformClassLoader.class", - "/modules/java.base/java/security/CodeSource.class", - "/modules/java.base/java/util/concurrent/ConcurrentMap.class", - "/modules/java.base/java/util/AbstractMap.class", - "/modules/java.base/java/util/concurrent/ConcurrentHashMap.class", - "/modules/java.base/java/lang/Iterable.class", - "/modules/java.base/java/util/Collection.class", - "/modules/java.base/java/util/SequencedCollection.class", - "/modules/java.base/java/util/List.class", - "/modules/java.base/java/util/RandomAccess.class", - "/modules/java.base/java/util/AbstractCollection.class", - "/modules/java.base/java/util/AbstractList.class", - "/modules/java.base/java/util/ArrayList.class", - "/modules/java.base/java/lang/StackTraceElement.class", - "/modules/java.base/java/nio/Buffer.class", - "/modules/java.base/java/lang/StackWalker.class", - "/modules/java.base/java/lang/StackStreamFactory$AbstractStackWalker.class", - "/modules/java.base/java/lang/StackWalker$StackFrame.class", - "/modules/java.base/java/lang/ClassFrameInfo.class", - "/modules/java.base/java/lang/StackFrameInfo.class", - "/modules/java.base/java/lang/LiveStackFrame.class", - "/modules/java.base/java/lang/LiveStackFrameInfo.class", - "/modules/java.base/java/util/concurrent/locks/AbstractOwnableSynchronizer.class", - "/modules/java.base/java/lang/Boolean.class", - "/modules/java.base/java/lang/Character.class", - "/modules/java.base/java/lang/Number.class", - "/modules/java.base/java/lang/Float.class", - "/modules/java.base/java/lang/Double.class", - "/modules/java.base/java/lang/Byte.class", - "/modules/java.base/java/lang/Short.class", - "/modules/java.base/java/lang/Integer.class", - "/modules/java.base/java/lang/Long.class", - "/modules/java.base/java/lang/Void.class", - "/modules/java.base/java/util/Iterator.class", - "/modules/java.base/java/lang/reflect/RecordComponent.class", - "/modules/java.base/jdk/internal/vm/vector/VectorSupport.class", - "/modules/java.base/jdk/internal/vm/vector/VectorSupport$VectorPayload.class", - "/modules/java.base/jdk/internal/vm/vector/VectorSupport$Vector.class", - "/modules/java.base/jdk/internal/vm/vector/VectorSupport$VectorMask.class", - "/modules/java.base/jdk/internal/vm/vector/VectorSupport$VectorShuffle.class", - "/modules/java.base/jdk/internal/vm/FillerObject.class", - "/modules/java.base/java/lang/NullPointerException.class", - "/modules/java.base/java/lang/ArithmeticException.class", - "/modules/java.base/java/lang/IndexOutOfBoundsException.class", - "/modules/java.base/java/lang/ArrayIndexOutOfBoundsException.class", - "/modules/java.base/java/io/ObjectStreamField.class", - "/modules/java.base/java/util/Comparator.class", - "/modules/java.base/java/lang/String$CaseInsensitiveComparator.class", - "/modules/java.base/jdk/internal/misc/VM.class", - "/modules/java.base/java/lang/Module$ArchivedData.class", - "/modules/java.base/jdk/internal/misc/CDS.class", - "/modules/java.base/java/util/Set.class", - "/modules/java.base/java/util/ImmutableCollections$AbstractImmutableCollection.class", - "/modules/java.base/java/util/ImmutableCollections$AbstractImmutableSet.class", - "/modules/java.base/java/util/ImmutableCollections$Set12.class", - "/modules/java.base/java/util/Objects.class", - "/modules/java.base/java/util/ImmutableCollections.class", - "/modules/java.base/java/util/ImmutableCollections$AbstractImmutableList.class", - "/modules/java.base/java/util/ImmutableCollections$ListN.class", - "/modules/java.base/java/util/ImmutableCollections$SetN.class", - "/modules/java.base/java/util/ImmutableCollections$AbstractImmutableMap.class", - "/modules/java.base/java/util/ImmutableCollections$MapN.class", - "/modules/java.base/jdk/internal/access/JavaLangReflectAccess.class", - "/modules/java.base/java/lang/reflect/ReflectAccess.class", - "/modules/java.base/jdk/internal/access/SharedSecrets.class", - "/modules/java.base/jdk/internal/reflect/ReflectionFactory.class", - "/modules/java.base/java/io/ObjectStreamClass.class", - "/modules/java.base/java/lang/Math.class", - "/modules/java.base/jdk/internal/reflect/ReflectionFactory$Config.class", - "/modules/java.base/jdk/internal/access/JavaLangRefAccess.class", - "/modules/java.base/java/lang/ref/ReferenceQueue.class", - "/modules/java.base/java/lang/ref/ReferenceQueue$Null.class", - "/modules/java.base/java/lang/ref/ReferenceQueue$Lock.class", - "/modules/java.base/jdk/internal/access/JavaLangAccess.class", - "/modules/java.base/jdk/internal/util/SystemProps.class", - "/modules/java.base/jdk/internal/util/SystemProps$Raw.class", - "/modules/java.base/java/nio/charset/Charset.class", - "/modules/java.base/java/nio/charset/spi/CharsetProvider.class", - "/modules/java.base/sun/nio/cs/StandardCharsets.class", - "/modules/java.base/java/lang/StringLatin1.class", - "/modules/java.base/sun/nio/cs/HistoricallyNamedCharset.class", - "/modules/java.base/sun/nio/cs/Unicode.class", - "/modules/java.base/sun/nio/cs/UTF_8.class", - "/modules/java.base/java/util/HashMap.class", - "/modules/java.base/java/lang/StrictMath.class", - "/modules/java.base/jdk/internal/util/ArraysSupport.class", - "/modules/java.base/java/util/Map$Entry.class", - "/modules/java.base/java/util/HashMap$Node.class", - "/modules/java.base/java/util/LinkedHashMap$Entry.class", - "/modules/java.base/java/util/HashMap$TreeNode.class", - "/modules/java.base/java/lang/StringConcatHelper.class", - "/modules/java.base/java/lang/VersionProps.class", - "/modules/java.base/java/lang/Runtime.class", - "/modules/java.base/java/util/concurrent/locks/Lock.class", - "/modules/java.base/java/util/concurrent/locks/ReentrantLock.class", - "/modules/java.base/java/util/concurrent/ConcurrentHashMap$Segment.class", - "/modules/java.base/java/util/concurrent/ConcurrentHashMap$CounterCell.class", - "/modules/java.base/java/util/concurrent/ConcurrentHashMap$Node.class", - "/modules/java.base/java/util/concurrent/locks/LockSupport.class", - "/modules/java.base/java/util/concurrent/ConcurrentHashMap$ReservationNode.class", - "/modules/java.base/java/util/AbstractSet.class", - "/modules/java.base/java/util/HashMap$EntrySet.class", - "/modules/java.base/java/util/HashMap$HashIterator.class", - "/modules/java.base/java/util/HashMap$EntryIterator.class", - "/modules/java.base/jdk/internal/util/StaticProperty.class", - "/modules/java.base/java/io/FileInputStream.class", - "/modules/java.base/java/lang/System$In.class", - "/modules/java.base/java/io/FileDescriptor.class", - "/modules/java.base/jdk/internal/access/JavaIOFileDescriptorAccess.class", - "/modules/java.base/java/io/Flushable.class", - "/modules/java.base/java/io/OutputStream.class", - "/modules/java.base/java/io/FileOutputStream.class", - "/modules/java.base/java/lang/System$Out.class", - "/modules/java.base/java/io/FilterInputStream.class", - "/modules/java.base/java/io/BufferedInputStream.class", - "/modules/java.base/java/io/FilterOutputStream.class", - "/modules/java.base/java/io/PrintStream.class", - "/modules/java.base/java/io/BufferedOutputStream.class", - "/modules/java.base/java/io/Writer.class", - "/modules/java.base/java/io/OutputStreamWriter.class", - "/modules/java.base/sun/nio/cs/StreamEncoder.class", - "/modules/java.base/java/nio/charset/CharsetEncoder.class", - "/modules/java.base/sun/nio/cs/UTF_8$Encoder.class", - "/modules/java.base/java/nio/charset/CodingErrorAction.class", - "/modules/java.base/java/util/Arrays.class", - "/modules/java.base/java/nio/ByteBuffer.class", - "/modules/java.base/jdk/internal/misc/ScopedMemoryAccess.class", - "/modules/java.base/java/util/function/Function.class", - "/modules/java.base/jdk/internal/util/Preconditions.class", - "/modules/java.base/java/util/function/BiFunction.class", - "/modules/java.base/jdk/internal/access/JavaNioAccess.class", - "/modules/java.base/java/nio/HeapByteBuffer.class", - "/modules/java.base/java/nio/ByteOrder.class", - "/modules/java.base/java/io/BufferedWriter.class", - "/modules/java.base/java/lang/Terminator.class", - "/modules/java.base/jdk/internal/misc/Signal$Handler.class", - "/modules/java.base/jdk/internal/misc/Signal.class", - "/modules/java.base/java/util/Hashtable$Entry.class", - "/modules/java.base/jdk/internal/misc/Signal$NativeHandler.class", - "/modules/java.base/java/lang/Integer$IntegerCache.class", - "/modules/java.base/jdk/internal/misc/OSEnvironment.class", - "/modules/java.base/java/lang/Thread$State.class", - "/modules/java.base/java/lang/ref/Reference$ReferenceHandler.class", - "/modules/java.base/java/lang/Thread$ThreadIdentifiers.class", - "/modules/java.base/java/lang/ref/Finalizer$FinalizerThread.class", - "/modules/java.base/jdk/internal/ref/Cleaner.class", - "/modules/java.base/java/util/Collections.class", - "/modules/java.base/java/util/Collections$EmptySet.class", - "/modules/java.base/java/util/Collections$EmptyList.class", - "/modules/java.base/java/util/Collections$EmptyMap.class", - "/modules/java.base/java/lang/IllegalArgumentException.class", - "/modules/java.base/java/lang/invoke/MethodHandleStatics.class", - "/modules/java.base/java/lang/reflect/ClassFileFormatVersion.class", - "/modules/java.base/java/lang/CharacterData.class", - "/modules/java.base/java/lang/CharacterDataLatin1.class", - "/modules/java.base/jdk/internal/util/ClassFileDumper.class", - "/modules/java.base/java/util/HexFormat.class", - "/modules/java.base/java/lang/Character$CharacterCache.class", - "/modules/java.base/java/util/concurrent/atomic/AtomicInteger.class", - "/modules/java.base/jdk/internal/module/ModuleBootstrap.class", - "/modules/java.base/java/lang/module/ModuleDescriptor.class", - "/modules/java.base/java/lang/invoke/MethodHandles.class", - "/modules/java.base/java/lang/invoke/MemberName$Factory.class", - "/modules/java.base/jdk/internal/reflect/Reflection.class", - "/modules/java.base/java/lang/invoke/MethodHandles$Lookup.class", - "/modules/java.base/java/util/ImmutableCollections$MapN$MapNIterator.class", - "/modules/java.base/java/util/KeyValueHolder.class", - "/modules/java.base/sun/invoke/util/VerifyAccess.class", - "/modules/java.base/java/lang/reflect/Modifier.class", - "/modules/java.base/jdk/internal/access/JavaLangModuleAccess.class", - "/modules/java.base/java/io/File.class", - "/modules/java.base/java/io/DefaultFileSystem.class", - "/modules/java.base/java/io/FileSystem.class", - "/modules/java.base/java/io/UnixFileSystem.class", - "/modules/java.base/jdk/internal/util/DecimalDigits.class", - "/modules/java.base/jdk/internal/module/ModulePatcher.class", - "/modules/java.base/jdk/internal/module/ModuleBootstrap$IllegalNativeAccess.class", - "/modules/java.base/java/util/HashSet.class", - "/modules/java.base/jdk/internal/module/ModuleLoaderMap.class", - "/modules/java.base/jdk/internal/module/ModuleLoaderMap$Modules.class", - "/modules/java.base/jdk/internal/module/ModuleBootstrap$Counters.class", - "/modules/java.base/jdk/internal/module/ArchivedBootLayer.class", - "/modules/java.base/jdk/internal/module/ArchivedModuleGraph.class", - "/modules/java.base/jdk/internal/module/SystemModuleFinders.class", - "/modules/java.base/java/net/URI.class", - "/modules/java.base/jdk/internal/access/JavaNetUriAccess.class", - "/modules/java.base/jdk/internal/module/SystemModulesMap.class", - "/modules/java.base/jdk/internal/module/SystemModules.class", - "/modules/java.base/jdk/internal/module/ExplodedSystemModules.class", - "/modules/java.base/java/nio/file/Watchable.class", - "/modules/java.base/java/nio/file/Path.class", - "/modules/java.base/java/nio/file/FileSystems.class", - "/modules/java.base/sun/nio/fs/DefaultFileSystemProvider.class", - "/modules/java.base/java/nio/file/spi/FileSystemProvider.class", - "/modules/java.base/sun/nio/fs/AbstractFileSystemProvider.class", - "/modules/java.base/sun/nio/fs/UnixFileSystemProvider.class", - "/modules/java.base/sun/nio/fs/LinuxFileSystemProvider.class", - "/modules/java.base/java/nio/file/OpenOption.class", - "/modules/java.base/java/nio/file/StandardOpenOption.class", - "/modules/java.base/java/nio/file/FileSystem.class", - "/modules/java.base/sun/nio/fs/UnixFileSystem.class", - "/modules/java.base/sun/nio/fs/LinuxFileSystem.class", - "/modules/java.base/sun/nio/fs/UnixPath.class", - "/modules/java.base/sun/nio/fs/Util.class", - "/modules/java.base/java/lang/StringCoding.class", - "/modules/java.base/sun/nio/fs/UnixNativeDispatcher.class", - "/modules/java.base/jdk/internal/loader/BootLoader.class", - "/modules/java.base/java/lang/Module$EnableNativeAccess.class", - "/modules/java.base/jdk/internal/loader/NativeLibraries.class", - "/modules/java.base/jdk/internal/loader/ClassLoaderHelper.class", - "/modules/java.base/java/util/concurrent/ConcurrentHashMap$CollectionView.class", - "/modules/java.base/java/util/concurrent/ConcurrentHashMap$KeySetView.class", - "/modules/java.base/jdk/internal/loader/NativeLibraries$LibraryPaths.class", - "/modules/java.base/java/io/File$PathStatus.class", - "/modules/java.base/jdk/internal/loader/NativeLibraries$CountedLock.class", - "/modules/java.base/java/util/concurrent/locks/AbstractQueuedSynchronizer.class", - "/modules/java.base/java/util/concurrent/locks/ReentrantLock$Sync.class", - "/modules/java.base/java/util/concurrent/locks/ReentrantLock$NonfairSync.class", - "/modules/java.base/jdk/internal/loader/NativeLibraries$NativeLibraryContext.class", - "/modules/java.base/java/util/Queue.class", - "/modules/java.base/java/util/Deque.class", - "/modules/java.base/java/util/ArrayDeque.class", - "/modules/java.base/java/util/ArrayDeque$DeqIterator.class", - "/modules/java.base/jdk/internal/loader/NativeLibrary.class", - "/modules/java.base/jdk/internal/loader/NativeLibraries$NativeLibraryImpl.class", - "/modules/java.base/java/security/cert/Certificate.class", - "/modules/java.base/java/util/concurrent/ConcurrentHashMap$ValuesView.class", - "/modules/java.base/java/util/Enumeration.class", - "/modules/java.base/java/util/concurrent/ConcurrentHashMap$Traverser.class", - "/modules/java.base/java/util/concurrent/ConcurrentHashMap$BaseIterator.class", - "/modules/java.base/java/util/concurrent/ConcurrentHashMap$ValueIterator.class", - "/modules/java.base/java/nio/file/attribute/BasicFileAttributes.class", - "/modules/java.base/java/nio/file/attribute/PosixFileAttributes.class", - "/modules/java.base/sun/nio/fs/UnixFileAttributes.class", - "/modules/java.base/sun/nio/fs/UnixFileStoreAttributes.class", - "/modules/java.base/sun/nio/fs/UnixMountEntry.class", - "/modules/java.base/java/nio/file/CopyOption.class", - "/modules/java.base/java/nio/file/LinkOption.class", - "/modules/java.base/java/nio/file/Files.class", - "/modules/java.base/sun/nio/fs/NativeBuffers.class", - "/modules/java.base/java/lang/ThreadLocal.class", - "/modules/java.base/jdk/internal/misc/CarrierThreadLocal.class", - "/modules/java.base/jdk/internal/misc/TerminatingThreadLocal.class", - "/modules/java.base/java/lang/ThreadLocal$ThreadLocalMap.class", - "/modules/java.base/java/lang/ThreadLocal$ThreadLocalMap$Entry.class", - "/modules/java.base/java/util/IdentityHashMap.class", - "/modules/java.base/java/util/Collections$SetFromMap.class", - "/modules/java.base/java/util/IdentityHashMap$KeySet.class", - "/modules/java.base/sun/nio/fs/NativeBuffer.class", - "/modules/java.base/jdk/internal/ref/CleanerFactory.class", - "/modules/java.base/java/util/concurrent/ThreadFactory.class", - "/modules/java.base/java/lang/ref/Cleaner.class", - "/modules/java.base/jdk/internal/ref/CleanerImpl.class", - "/modules/java.base/jdk/internal/ref/CleanerImpl$CleanableList.class", - "/modules/java.base/jdk/internal/ref/CleanerImpl$CleanableList$Node.class", - "/modules/java.base/java/lang/ref/Cleaner$Cleanable.class", - "/modules/java.base/jdk/internal/ref/PhantomCleanable.class", - "/modules/java.base/jdk/internal/ref/CleanerImpl$CleanerCleanable.class", - "/modules/java.base/jdk/internal/misc/InnocuousThread.class", - "/modules/java.base/sun/nio/fs/NativeBuffer$Deallocator.class", - "/modules/java.base/jdk/internal/ref/CleanerImpl$PhantomCleanableRef.class", - "/modules/java.base/java/lang/module/ModuleFinder.class", - "/modules/java.base/jdk/internal/module/ModulePath.class", - "/modules/java.base/java/util/jar/Attributes$Name.class", - "/modules/java.base/java/lang/reflect/Array.class", - "/modules/java.base/jdk/internal/perf/PerfCounter.class", - "/modules/java.base/jdk/internal/perf/Perf.class", - "/modules/java.base/sun/nio/ch/DirectBuffer.class", - "/modules/java.base/java/nio/MappedByteBuffer.class", - "/modules/java.base/java/nio/DirectByteBuffer.class", - "/modules/java.base/java/nio/Bits.class", - "/modules/java.base/java/util/concurrent/atomic/AtomicLong.class", - "/modules/java.base/jdk/internal/misc/VM$BufferPool.class", - "/modules/java.base/java/nio/LongBuffer.class", - "/modules/java.base/java/nio/DirectLongBufferU.class", - "/modules/java.base/java/util/zip/ZipConstants.class", - "/modules/java.base/java/util/zip/ZipFile.class", - "/modules/java.base/java/util/jar/JarFile.class", - "/modules/java.base/java/util/BitSet.class", - "/modules/java.base/jdk/internal/access/JavaUtilZipFileAccess.class", - "/modules/java.base/jdk/internal/access/JavaUtilJarAccess.class", - "/modules/java.base/java/util/jar/JavaUtilJarAccessImpl.class", - "/modules/java.base/java/lang/Runtime$Version.class", - "/modules/java.base/java/util/ImmutableCollections$List12.class", - "/modules/java.base/java/util/Optional.class", - "/modules/java.base/java/nio/file/attribute/DosFileAttributes.class", - "/modules/java.base/java/nio/file/attribute/AttributeView.class", - "/modules/java.base/java/nio/file/attribute/FileAttributeView.class", - "/modules/java.base/java/nio/file/attribute/BasicFileAttributeView.class", - "/modules/java.base/java/nio/file/attribute/DosFileAttributeView.class", - "/modules/java.base/java/nio/file/attribute/UserDefinedFileAttributeView.class", - "/modules/java.base/sun/nio/fs/UnixFileAttributeViews.class", - "/modules/java.base/sun/nio/fs/DynamicFileAttributeView.class", - "/modules/java.base/sun/nio/fs/AbstractBasicFileAttributeView.class", - "/modules/java.base/sun/nio/fs/UnixFileAttributeViews$Basic.class", - "/modules/java.base/sun/nio/fs/UnixFileAttributes$UnixAsBasicFileAttributes.class", - "/modules/java.base/java/nio/file/DirectoryStream$Filter.class", - "/modules/java.base/java/nio/file/Files$AcceptAllFilter.class", - "/modules/java.base/java/nio/file/DirectoryStream.class", - "/modules/java.base/java/nio/file/SecureDirectoryStream.class", - "/modules/java.base/sun/nio/fs/UnixSecureDirectoryStream.class", - "/modules/java.base/sun/nio/fs/UnixDirectoryStream.class", - "/modules/java.base/java/util/concurrent/locks/ReadWriteLock.class", - "/modules/java.base/java/util/concurrent/locks/ReentrantReadWriteLock.class", - "/modules/java.base/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.class", - "/modules/java.base/java/util/concurrent/locks/ReentrantReadWriteLock$Sync.class", - "/modules/java.base/java/util/concurrent/locks/ReentrantReadWriteLock$FairSync.class", - "/modules/java.base/java/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter.class", - "/modules/java.base/java/util/concurrent/locks/ReentrantReadWriteLock$ReadLock.class", - "/modules/java.base/java/util/concurrent/locks/ReentrantReadWriteLock$WriteLock.class", - "/modules/java.base/sun/nio/fs/UnixDirectoryStream$UnixDirectoryIterator.class", - "/modules/java.base/java/nio/file/attribute/FileAttribute.class", - "/modules/java.base/sun/nio/fs/UnixFileModeAttribute.class", - "/modules/java.base/sun/nio/fs/UnixChannelFactory.class", - "/modules/java.base/sun/nio/fs/UnixChannelFactory$Flags.class", - "/modules/java.base/java/util/Collections$EmptyIterator.class", - "/modules/java.base/java/nio/channels/Channel.class", - "/modules/java.base/java/nio/channels/ReadableByteChannel.class", - "/modules/java.base/java/nio/channels/WritableByteChannel.class", - "/modules/java.base/java/nio/channels/ByteChannel.class", - "/modules/java.base/java/nio/channels/SeekableByteChannel.class", - "/modules/java.base/java/nio/channels/GatheringByteChannel.class", - "/modules/java.base/java/nio/channels/ScatteringByteChannel.class", - "/modules/java.base/java/nio/channels/InterruptibleChannel.class", - "/modules/java.base/java/nio/channels/spi/AbstractInterruptibleChannel.class", - "/modules/java.base/java/nio/channels/FileChannel.class", - "/modules/java.base/sun/nio/ch/FileChannelImpl.class", - "/modules/java.base/sun/nio/ch/NativeDispatcher.class", - "/modules/java.base/sun/nio/ch/FileDispatcher.class", - "/modules/java.base/sun/nio/ch/UnixFileDispatcherImpl.class", - "/modules/java.base/sun/nio/ch/FileDispatcherImpl.class", - "/modules/java.base/sun/nio/ch/IOUtil.class", - "/modules/java.base/sun/nio/ch/Interruptible.class", - "/modules/java.base/sun/nio/ch/NativeThreadSet.class", - "/modules/java.base/sun/nio/ch/FileChannelImpl$Closer.class", - "/modules/java.base/java/nio/channels/Channels.class", - "/modules/java.base/sun/nio/ch/Streams.class", - "/modules/java.base/sun/nio/ch/SelChImpl.class", - "/modules/java.base/java/nio/channels/NetworkChannel.class", - "/modules/java.base/java/nio/channels/SelectableChannel.class", - "/modules/java.base/java/nio/channels/spi/AbstractSelectableChannel.class", - "/modules/java.base/java/nio/channels/SocketChannel.class", - "/modules/java.base/sun/nio/ch/SocketChannelImpl.class", - "/modules/java.base/sun/nio/ch/ChannelInputStream.class", - "/modules/java.base/java/lang/invoke/LambdaMetafactory.class", - "/modules/java.base/java/util/function/Supplier.class", - "/modules/java.base/jdk/internal/util/ReferencedKeySet.class", - "/modules/java.base/jdk/internal/util/ReferencedKeyMap.class", - "/modules/java.base/jdk/internal/util/ReferenceKey.class", - "/modules/java.base/jdk/internal/util/StrongReferenceKey.class", - "/modules/java.base/java/lang/invoke/MethodTypeForm.class", - "/modules/java.base/jdk/internal/util/WeakReferenceKey.class", - "/modules/java.base/sun/invoke/util/Wrapper.class", - "/modules/java.base/sun/invoke/util/Wrapper$Format.class", - "/modules/java.base/java/lang/constant/ConstantDescs.class", - "/modules/java.base/java/lang/constant/ClassDesc.class", - "/modules/java.base/jdk/internal/constant/ClassOrInterfaceDescImpl.class", - "/modules/java.base/jdk/internal/constant/ArrayClassDescImpl.class", - "/modules/java.base/jdk/internal/constant/ConstantUtils.class", - "/modules/java.base/java/lang/constant/DirectMethodHandleDesc$Kind.class", - "/modules/java.base/java/lang/constant/MethodTypeDesc.class", - "/modules/java.base/jdk/internal/constant/MethodTypeDescImpl.class", - "/modules/java.base/java/lang/constant/MethodHandleDesc.class", - "/modules/java.base/java/lang/constant/DirectMethodHandleDesc.class", - "/modules/java.base/jdk/internal/constant/DirectMethodHandleDescImpl.class", - "/modules/java.base/java/lang/constant/DynamicConstantDesc.class", - "/modules/java.base/jdk/internal/constant/PrimitiveClassDescImpl.class", - "/modules/java.base/java/lang/constant/DynamicConstantDesc$AnonymousDynamicConstantDesc.class", - "/modules/java.base/java/lang/invoke/LambdaForm$NamedFunction.class", - "/modules/java.base/java/lang/invoke/DirectMethodHandle$Holder.class", - "/modules/java.base/sun/invoke/util/ValueConversions.class", - "/modules/java.base/java/lang/invoke/MethodHandleImpl.class", - "/modules/java.base/java/lang/invoke/Invokers.class", - "/modules/java.base/java/lang/invoke/LambdaForm$Kind.class", - "/modules/java.base/java/lang/NoSuchMethodException.class", - "/modules/java.base/java/lang/invoke/LambdaForm$BasicType.class", - "/modules/java.base/java/lang/classfile/TypeKind.class", - "/modules/java.base/java/lang/invoke/LambdaForm$Name.class", - "/modules/java.base/java/lang/invoke/LambdaForm$Holder.class", - "/modules/java.base/java/lang/invoke/InvokerBytecodeGenerator.class", - "/modules/java.base/java/lang/classfile/AnnotationElement.class", - "/modules/java.base/java/lang/classfile/Annotation.class", - "/modules/java.base/java/lang/classfile/constantpool/ConstantPool.class", - "/modules/java.base/java/lang/classfile/constantpool/ConstantPoolBuilder.class", - "/modules/java.base/jdk/internal/classfile/impl/TemporaryConstantPool.class", - "/modules/java.base/java/lang/classfile/constantpool/PoolEntry.class", - "/modules/java.base/java/lang/classfile/constantpool/AnnotationConstantValueEntry.class", - "/modules/java.base/java/lang/classfile/constantpool/Utf8Entry.class", - "/modules/java.base/jdk/internal/classfile/impl/AbstractPoolEntry.class", - "/modules/java.base/jdk/internal/classfile/impl/AbstractPoolEntry$Utf8EntryImpl.class", - "/modules/java.base/jdk/internal/classfile/impl/AbstractPoolEntry$Utf8EntryImpl$State.class", - "/modules/java.base/jdk/internal/classfile/impl/AnnotationImpl.class", - "/modules/java.base/java/lang/classfile/ClassFileElement.class", - "/modules/java.base/java/lang/classfile/Attribute.class", - "/modules/java.base/java/lang/classfile/ClassElement.class", - "/modules/java.base/java/lang/classfile/MethodElement.class", - "/modules/java.base/java/lang/classfile/FieldElement.class", - "/modules/java.base/java/lang/classfile/attribute/RuntimeVisibleAnnotationsAttribute.class", - "/modules/java.base/jdk/internal/classfile/impl/Util$Writable.class", - "/modules/java.base/jdk/internal/classfile/impl/AbstractElement.class", - "/modules/java.base/jdk/internal/classfile/impl/UnboundAttribute.class", - "/modules/java.base/jdk/internal/classfile/impl/UnboundAttribute$UnboundRuntimeVisibleAnnotationsAttribute.class", - "/modules/java.base/java/lang/classfile/Attributes.class", - "/modules/java.base/java/lang/classfile/AttributeMapper.class", - "/modules/java.base/jdk/internal/classfile/impl/AbstractAttributeMapper.class", - "/modules/java.base/jdk/internal/classfile/impl/AbstractAttributeMapper$RuntimeVisibleAnnotationsMapper.class", - "/modules/java.base/java/lang/classfile/AttributeMapper$AttributeStability.class", - "/modules/java.base/java/lang/invoke/MethodHandleImpl$Intrinsic.class", - "/modules/java.base/jdk/internal/classfile/impl/SplitConstantPool.class", - "/modules/java.base/java/lang/classfile/BootstrapMethodEntry.class", - "/modules/java.base/jdk/internal/classfile/impl/BootstrapMethodEntryImpl.class", - "/modules/java.base/jdk/internal/classfile/impl/EntryMap.class", - "/modules/java.base/jdk/internal/classfile/impl/Util.class", - "/modules/java.base/java/lang/classfile/constantpool/LoadableConstantEntry.class", - "/modules/java.base/java/lang/classfile/constantpool/ClassEntry.class", - "/modules/java.base/jdk/internal/classfile/impl/AbstractPoolEntry$AbstractRefEntry.class", - "/modules/java.base/jdk/internal/classfile/impl/AbstractPoolEntry$AbstractNamedEntry.class", - "/modules/java.base/jdk/internal/classfile/impl/AbstractPoolEntry$ClassEntryImpl.class", - "/modules/java.base/java/util/function/Consumer.class", - "/modules/java.base/java/lang/classfile/ClassFile.class", - "/modules/java.base/jdk/internal/classfile/impl/ClassFileImpl.class", - "/modules/java.base/java/lang/classfile/ClassFileBuilder.class", - "/modules/java.base/java/lang/classfile/ClassBuilder.class", - "/modules/java.base/jdk/internal/classfile/impl/AbstractDirectBuilder.class", - "/modules/java.base/jdk/internal/classfile/impl/DirectClassBuilder.class", - "/modules/java.base/jdk/internal/classfile/impl/AttributeHolder.class", - "/modules/java.base/java/lang/classfile/Superclass.class", - "/modules/java.base/jdk/internal/classfile/impl/SuperclassImpl.class", - "/modules/java.base/java/lang/classfile/attribute/SourceFileAttribute.class", - "/modules/java.base/jdk/internal/classfile/impl/UnboundAttribute$UnboundSourceFileAttribute.class", - "/modules/java.base/jdk/internal/classfile/impl/AbstractAttributeMapper$SourceFileMapper.class", - "/modules/java.base/jdk/internal/classfile/impl/BoundAttribute.class", - "/modules/java.base/java/lang/classfile/MethodBuilder.class", - "/modules/java.base/jdk/internal/classfile/impl/MethodInfo.class", - "/modules/java.base/jdk/internal/classfile/impl/TerminalMethodBuilder.class", - "/modules/java.base/jdk/internal/classfile/impl/DirectMethodBuilder.class", - "/modules/java.base/java/lang/classfile/constantpool/NameAndTypeEntry.class", - "/modules/java.base/jdk/internal/classfile/impl/AbstractPoolEntry$AbstractRefsEntry.class", - "/modules/java.base/jdk/internal/classfile/impl/AbstractPoolEntry$NameAndTypeEntryImpl.class", - "/modules/java.base/java/lang/classfile/constantpool/MemberRefEntry.class", - "/modules/java.base/java/lang/classfile/constantpool/FieldRefEntry.class", - "/modules/java.base/jdk/internal/classfile/impl/AbstractPoolEntry$AbstractMemberRefEntry.class", - "/modules/java.base/jdk/internal/classfile/impl/AbstractPoolEntry$FieldRefEntryImpl.class", - "/modules/java.base/java/lang/invoke/InvokerBytecodeGenerator$ClassData.class", - "/modules/java.base/java/lang/classfile/CodeBuilder.class", - "/modules/java.base/jdk/internal/classfile/impl/LabelContext.class", - "/modules/java.base/jdk/internal/classfile/impl/TerminalCodeBuilder.class", - "/modules/java.base/jdk/internal/classfile/impl/DirectCodeBuilder.class", - "/modules/java.base/java/lang/classfile/CodeElement.class", - "/modules/java.base/java/lang/classfile/PseudoInstruction.class", - "/modules/java.base/java/lang/classfile/instruction/CharacterRange.class", - "/modules/java.base/java/lang/classfile/instruction/LocalVariable.class", - "/modules/java.base/java/lang/classfile/instruction/LocalVariableType.class", - "/modules/java.base/jdk/internal/classfile/impl/DirectCodeBuilder$DeferredLabel.class", - "/modules/java.base/java/lang/classfile/BufWriter.class", - "/modules/java.base/jdk/internal/classfile/impl/BufWriterImpl.class", - "/modules/java.base/java/lang/classfile/Label.class", - "/modules/java.base/java/lang/classfile/instruction/LabelTarget.class", - "/modules/java.base/jdk/internal/classfile/impl/LabelImpl.class", - "/modules/java.base/sun/invoke/util/VerifyType.class", - "/modules/java.base/java/lang/classfile/Opcode.class", - "/modules/java.base/java/lang/classfile/Opcode$Kind.class", - "/modules/java.base/java/lang/classfile/constantpool/MethodRefEntry.class", - "/modules/java.base/jdk/internal/classfile/impl/AbstractPoolEntry$MethodRefEntryImpl.class", - "/modules/java.base/sun/invoke/empty/Empty.class", - "/modules/java.base/jdk/internal/classfile/impl/BytecodeHelpers.class", - "/modules/java.base/jdk/internal/classfile/impl/UnboundAttribute$AdHocAttribute.class", - "/modules/java.base/jdk/internal/classfile/impl/AbstractAttributeMapper$CodeMapper.class", - "/modules/java.base/java/lang/classfile/FieldBuilder.class", - "/modules/java.base/jdk/internal/classfile/impl/TerminalFieldBuilder.class", - "/modules/java.base/jdk/internal/classfile/impl/DirectFieldBuilder.class", - "/modules/java.base/java/lang/classfile/CustomAttribute.class", - "/modules/java.base/jdk/internal/classfile/impl/AnnotationReader.class", - "/modules/java.base/java/util/ListIterator.class", - "/modules/java.base/java/util/ImmutableCollections$ListItr.class", - "/modules/java.base/jdk/internal/classfile/impl/StackMapGenerator.class", - "/modules/java.base/jdk/internal/classfile/impl/StackMapGenerator$Frame.class", - "/modules/java.base/jdk/internal/classfile/impl/StackMapGenerator$Type.class", - "/modules/java.base/jdk/internal/classfile/impl/RawBytecodeHelper.class", - "/modules/java.base/jdk/internal/classfile/impl/RawBytecodeHelper$CodeRange.class", - "/modules/java.base/jdk/internal/classfile/impl/ClassHierarchyImpl.class", - "/modules/java.base/java/lang/classfile/ClassHierarchyResolver.class", - "/modules/java.base/jdk/internal/classfile/impl/ClassHierarchyImpl$ClassLoadingClassHierarchyResolver.class", - "/modules/java.base/jdk/internal/classfile/impl/ClassHierarchyImpl$CachedClassHierarchyResolver.class", - "/modules/java.base/java/lang/classfile/ClassHierarchyResolver$ClassHierarchyInfo.class", - "/modules/java.base/jdk/internal/classfile/impl/ClassHierarchyImpl$ClassHierarchyInfoImpl.class", - "/modules/java.base/java/lang/classfile/ClassReader.class", - "/modules/java.base/jdk/internal/classfile/impl/ClassReaderImpl.class", - "/modules/java.base/jdk/internal/util/ModifiedUtf.class", - "/modules/java.base/java/lang/invoke/MethodHandles$Lookup$ClassDefiner.class", - "/modules/java.base/java/lang/IncompatibleClassChangeError.class", - "/modules/java.base/java/lang/NoSuchMethodError.class", - "/modules/java.base/java/lang/invoke/BootstrapMethodInvoker.class", - "/modules/java.base/java/lang/invoke/AbstractValidatingLambdaMetafactory.class", - "/modules/java.base/java/lang/invoke/InnerClassLambdaMetafactory.class", - "/modules/java.base/java/lang/invoke/MethodHandleInfo.class", - "/modules/java.base/java/lang/invoke/InfoFromMemberName.class", - "/modules/java.base/java/util/ImmutableCollections$Access.class", - "/modules/java.base/jdk/internal/access/JavaUtilCollectionAccess.class", - "/modules/java.base/java/lang/classfile/Interfaces.class", - "/modules/java.base/jdk/internal/classfile/impl/InterfacesImpl.class", - "/modules/java.base/java/lang/invoke/TypeConvertingMethodAdapter.class", - "/modules/java.base/java/lang/invoke/DirectMethodHandle$Constructor.class", - "/modules/java.base/jdk/internal/access/JavaLangInvokeAccess.class", - "/modules/java.base/java/lang/invoke/VarHandle$AccessMode.class", - "/modules/java.base/java/lang/invoke/VarHandle$AccessType.class", - "/modules/java.base/java/lang/invoke/Invokers$Holder.class", - "/modules/java.base/jdk/internal/module/ModuleInfo.class", - "/modules/java.base/java/io/DataInput.class", - "/modules/java.base/java/io/DataInputStream.class", - "/modules/java.base/jdk/internal/module/ModuleInfo$CountingDataInput.class", - "/modules/java.base/sun/nio/ch/NativeThread.class", - "/modules/java.base/jdk/internal/misc/Blocker.class", - "/modules/java.base/sun/nio/ch/Util.class", - "/modules/java.base/sun/nio/ch/Util$BufferCache.class", - "/modules/java.base/sun/nio/ch/IOStatus.class", - "/modules/java.base/jdk/internal/util/ByteArray.class", - "/modules/java.base/java/lang/invoke/VarHandles.class", - "/modules/java.base/java/lang/invoke/VarHandleByteArrayAsShorts$ByteArrayViewVarHandle.class", - "/modules/java.base/java/lang/invoke/VarHandleByteArrayAsShorts$ArrayHandle.class", - "/modules/java.base/java/lang/invoke/VarHandleGuards.class", - "/modules/java.base/java/lang/invoke/VarForm.class", - "/modules/java.base/java/lang/invoke/VarHandleByteArrayAsChars$ByteArrayViewVarHandle.class", - "/modules/java.base/java/lang/invoke/VarHandleByteArrayAsChars$ArrayHandle.class", - "/modules/java.base/java/lang/invoke/VarHandleByteArrayAsInts$ByteArrayViewVarHandle.class", - "/modules/java.base/java/lang/invoke/VarHandleByteArrayAsInts$ArrayHandle.class", - "/modules/java.base/java/lang/invoke/VarHandleByteArrayAsFloats$ByteArrayViewVarHandle.class", - "/modules/java.base/java/lang/invoke/VarHandleByteArrayAsFloats$ArrayHandle.class", - "/modules/java.base/java/lang/invoke/VarHandleByteArrayAsLongs$ByteArrayViewVarHandle.class", - "/modules/java.base/java/lang/invoke/VarHandleByteArrayAsLongs$ArrayHandle.class", - "/modules/java.base/java/lang/invoke/VarHandleByteArrayAsDoubles$ByteArrayViewVarHandle.class", - "/modules/java.base/java/lang/invoke/VarHandleByteArrayAsDoubles$ArrayHandle.class", - "/modules/java.base/java/lang/invoke/VarHandle$AccessDescriptor.class", - "/modules/java.base/jdk/internal/module/ModuleInfo$ConstantPool.class", - "/modules/java.base/jdk/internal/module/ModuleInfo$ConstantPool$Entry.class", - "/modules/java.base/jdk/internal/module/ModuleInfo$ConstantPool$IndexEntry.class", - "/modules/java.base/java/nio/charset/StandardCharsets.class", - "/modules/java.base/sun/nio/cs/US_ASCII.class", - "/modules/java.base/sun/nio/cs/ISO_8859_1.class", - "/modules/java.base/sun/nio/cs/UTF_16BE.class", - "/modules/java.base/sun/nio/cs/UTF_16LE.class", - "/modules/java.base/sun/nio/cs/UTF_16.class", - "/modules/java.base/sun/nio/cs/UTF_32BE.class", - "/modules/java.base/sun/nio/cs/UTF_32LE.class", - "/modules/java.base/sun/nio/cs/UTF_32.class", - "/modules/java.base/jdk/internal/module/ModuleInfo$ConstantPool$ValueEntry.class", - "/modules/java.base/java/lang/module/ModuleDescriptor$Builder.class", - "/modules/java.base/java/lang/module/ModuleDescriptor$Modifier.class", - "/modules/java.base/java/lang/reflect/AccessFlag.class", - "/modules/java.base/java/lang/reflect/AccessFlag$Location.class", - "/modules/java.base/java/lang/module/ModuleDescriptor$Requires$Modifier.class", - "/modules/java.base/java/lang/module/ModuleDescriptor$Requires.class", - "/modules/java.base/java/util/HashMap$KeySet.class", - "/modules/java.base/java/util/HashMap$KeyIterator.class", - "/modules/java.base/jdk/internal/module/Checks.class", - "/modules/java.base/java/util/ArrayList$Itr.class", - "/modules/java.base/java/lang/module/ModuleDescriptor$Provides.class", - "/modules/java.base/java/util/Collections$UnmodifiableCollection.class", - "/modules/java.base/java/util/Collections$UnmodifiableSet.class", - "/modules/java.base/java/util/HashMap$Values.class", - "/modules/java.base/java/util/HashMap$ValueIterator.class", - "/modules/java.base/java/util/ImmutableCollections$SetN$SetNIterator.class", - "/modules/java.base/jdk/internal/module/ModuleInfo$Attributes.class", - "/modules/java.base/jdk/internal/module/ModuleReferences.class", - "/modules/java.base/java/lang/module/ModuleReader.class", - "/modules/java.base/sun/nio/fs/UnixUriUtils.class", - "/modules/java.base/java/net/URI$Parser.class", - "/modules/java.base/java/lang/module/ModuleReference.class", - "/modules/java.base/jdk/internal/module/ModuleReferenceImpl.class", - "/modules/java.base/java/lang/module/ModuleDescriptor$Exports.class", - "/modules/java.base/java/lang/module/ModuleDescriptor$Opens.class", - "/modules/java.base/sun/nio/fs/UnixException.class", - "/modules/java.base/java/io/IOException.class", - "/modules/java.base/jdk/internal/loader/ArchivedClassLoaders.class", - "/modules/java.base/jdk/internal/loader/ClassLoaders$BootClassLoader.class", - "/modules/java.base/java/lang/ClassLoader$ParallelLoaders.class", - "/modules/java.base/java/util/WeakHashMap.class", - "/modules/java.base/java/util/WeakHashMap$Entry.class", - "/modules/java.base/java/util/WeakHashMap$KeySet.class", - "/modules/java.base/java/security/Principal.class", - "/modules/java.base/jdk/internal/loader/URLClassPath.class", - "/modules/java.base/java/net/URLStreamHandlerFactory.class", - "/modules/java.base/java/net/URL$DefaultFactory.class", - "/modules/java.base/jdk/internal/access/JavaNetURLAccess.class", - "/modules/java.base/sun/net/www/ParseUtil.class", - "/modules/java.base/java/net/URLStreamHandler.class", - "/modules/java.base/sun/net/www/protocol/file/Handler.class", - "/modules/java.base/sun/net/util/IPAddressUtil.class", - "/modules/java.base/sun/net/util/IPAddressUtil$MASKS.class", - "/modules/java.base/sun/net/www/protocol/jar/Handler.class", - "/modules/java.base/jdk/internal/module/ServicesCatalog.class", - "/modules/java.base/jdk/internal/loader/AbstractClassLoaderValue.class", - "/modules/java.base/jdk/internal/loader/ClassLoaderValue.class", - "/modules/java.base/jdk/internal/loader/BuiltinClassLoader$LoadedModule.class", - "/modules/java.base/jdk/internal/module/DefaultRoots.class", - "/modules/java.base/java/util/Spliterator.class", - "/modules/java.base/java/util/HashMap$HashMapSpliterator.class", - "/modules/java.base/java/util/HashMap$ValueSpliterator.class", - "/modules/java.base/java/util/stream/StreamSupport.class", - "/modules/java.base/java/util/stream/BaseStream.class", - "/modules/java.base/java/util/stream/Stream.class", - "/modules/java.base/java/util/stream/PipelineHelper.class", - "/modules/java.base/java/util/stream/AbstractPipeline.class", - "/modules/java.base/java/util/stream/ReferencePipeline.class", - "/modules/java.base/java/util/stream/ReferencePipeline$Head.class", - "/modules/java.base/java/util/stream/StreamOpFlag.class", - "/modules/java.base/java/util/stream/StreamOpFlag$Type.class", - "/modules/java.base/java/util/stream/StreamOpFlag$MaskBuilder.class", - "/modules/java.base/java/util/EnumMap.class", - "/modules/java.base/java/lang/Class$ReflectionData.class", - "/modules/java.base/java/lang/Class$Atomic.class", - "/modules/java.base/java/lang/PublicMethods$MethodList.class", - "/modules/java.base/java/lang/PublicMethods$Key.class", - "/modules/java.base/sun/reflect/annotation/AnnotationParser.class", - "/modules/java.base/jdk/internal/reflect/MethodHandleAccessorFactory.class", - "/modules/java.base/jdk/internal/reflect/MethodHandleAccessorFactory$LazyStaticHolder.class", - "/modules/java.base/java/lang/invoke/BoundMethodHandle.class", - "/modules/java.base/java/lang/invoke/ClassSpecializer.class", - "/modules/java.base/java/lang/invoke/BoundMethodHandle$Specializer.class", - "/modules/java.base/jdk/internal/vm/annotation/Stable.class", - "/modules/java.base/java/lang/invoke/ClassSpecializer$SpeciesData.class", - "/modules/java.base/java/lang/invoke/BoundMethodHandle$SpeciesData.class", - "/modules/java.base/java/lang/invoke/ClassSpecializer$Factory.class", - "/modules/java.base/java/lang/invoke/BoundMethodHandle$Specializer$Factory.class", - "/modules/java.base/java/lang/invoke/SimpleMethodHandle.class", - "/modules/java.base/java/lang/NoSuchFieldException.class", - "/modules/java.base/java/lang/invoke/BoundMethodHandle$Species_L.class", - "/modules/java.base/java/lang/invoke/DirectMethodHandle$Accessor.class", - "/modules/java.base/java/lang/invoke/DelegatingMethodHandle.class", - "/modules/java.base/java/lang/invoke/DelegatingMethodHandle$Holder.class", - "/modules/java.base/java/lang/invoke/LambdaFormEditor.class", - "/modules/java.base/java/lang/invoke/LambdaFormEditor$TransformKey.class", - "/modules/java.base/java/lang/invoke/LambdaFormBuffer.class", - "/modules/java.base/java/lang/invoke/LambdaFormEditor$Transform.class", - "/modules/java.base/jdk/internal/reflect/DirectMethodHandleAccessor.class", - "/modules/java.base/java/util/stream/Collectors.class", - "/modules/java.base/java/util/stream/Collector$Characteristics.class", - "/modules/java.base/java/util/EnumSet.class", - "/modules/java.base/java/util/RegularEnumSet.class", - "/modules/java.base/java/util/stream/Collector.class", - "/modules/java.base/java/util/stream/Collectors$CollectorImpl.class", - "/modules/java.base/java/util/function/BiConsumer.class", - "/modules/java.base/java/lang/invoke/DirectMethodHandle$Interface.class", - "/modules/java.base/java/lang/classfile/constantpool/InterfaceMethodRefEntry.class", - "/modules/java.base/jdk/internal/classfile/impl/AbstractPoolEntry$InterfaceMethodRefEntryImpl.class", - "/modules/java.base/java/util/function/BinaryOperator.class", - "/modules/java.base/java/util/stream/ReduceOps.class", - "/modules/java.base/java/util/stream/TerminalOp.class", - "/modules/java.base/java/util/stream/ReduceOps$ReduceOp.class", - "/modules/java.base/java/util/stream/StreamShape.class", - "/modules/java.base/java/util/stream/Sink.class", - "/modules/java.base/java/util/stream/TerminalSink.class", - "/modules/java.base/java/util/stream/ReduceOps$AccumulatingSink.class", - "/modules/java.base/java/util/stream/ReduceOps$Box.class", - "/modules/java.base/java/util/HashMap$KeySpliterator.class", - "/modules/java.base/java/util/function/Predicate.class", - "/modules/java.base/java/util/stream/ReferencePipeline$StatelessOp.class", - "/modules/java.base/java/util/stream/Sink$ChainedReference.class", - "/modules/java.base/jdk/internal/module/ModuleResolution.class", - "/modules/java.base/java/util/stream/FindOps.class", - "/modules/java.base/java/util/stream/FindOps$FindSink.class", - "/modules/java.base/java/util/stream/FindOps$FindSink$OfRef.class", - "/modules/java.base/java/util/stream/FindOps$FindOp.class", - "/modules/java.base/java/util/Spliterators.class", - "/modules/java.base/java/util/Spliterators$IteratorSpliterator.class", - "/modules/java.base/java/lang/module/Configuration.class", - "/modules/java.base/java/lang/module/Resolver.class", - "/modules/java.base/java/lang/ModuleLayer.class", - "/modules/java.base/java/util/SequencedSet.class", - "/modules/java.base/java/util/LinkedHashSet.class", - "/modules/java.base/java/util/SequencedMap.class", - "/modules/java.base/java/util/LinkedHashMap.class", - "/modules/java.base/java/lang/module/ResolvedModule.class", - "/modules/java.base/jdk/internal/module/ModuleLoaderMap$Mapper.class", - "/modules/java.base/jdk/internal/loader/AbstractClassLoaderValue$Memoizer.class", - "/modules/java.base/jdk/internal/module/ServicesCatalog$ServiceProvider.class", - "/modules/java.base/java/util/concurrent/CopyOnWriteArrayList.class", - "/modules/java.base/java/lang/ModuleLayer$Controller.class", - "/modules/java.base/jdk/internal/module/ModuleBootstrap$SafeModuleFinder.class", - "/modules/java.base/jdk/internal/vm/ContinuationSupport.class", - "/modules/java.base/jdk/internal/vm/Continuation$Pinned.class", - "/modules/java.base/sun/launcher/LauncherHelper.class", - "/modules/java.base/sun/net/util/URLUtil.class", - "/modules/java.base/jdk/internal/loader/URLClassPath$Loader.class", - "/modules/java.base/jdk/internal/loader/URLClassPath$FileLoader.class", - "/modules/java.base/jdk/internal/loader/Resource.class", - "/modules/java.base/java/io/FileCleanable.class", - "/modules/java.base/java/security/SecureClassLoader$CodeSourceKey.class", - "/modules/java.base/java/security/PermissionCollection.class", - "/modules/java.base/java/security/Permissions.class", - "/modules/java.base/java/lang/NamedPackage.class", - "/modules/java.base/jdk/internal/misc/MethodFinder.class", - "/modules/java.base/java/lang/Readable.class", - "/modules/java.base/java/nio/CharBuffer.class", - "/modules/java.base/java/nio/HeapCharBuffer.class", - "/modules/java.base/java/nio/charset/CoderResult.class", - "/modules/java.base/java/util/IdentityHashMap$IdentityHashMapIterator.class", - "/modules/java.base/java/util/IdentityHashMap$KeyIterator.class", - "/modules/java.base/java/lang/Shutdown.class", - "/modules/java.base/java/lang/Shutdown$Lock.class"); + /// Note: This list is inherently a little fragile and may end up being more + /// trouble than it's worth to maintain. If it turns out that it needs to be + /// regenerated often when this benchmark is run, then a new approach should + /// be considered, such as: + /// * Limit the list of classes to non-internal ones. + /// * Calculate the list dynamically based on the running JVM. + /// * Build a custom jimage file similar to ImageReaderTest + private static final class ClassList { + /// Returns the names of resource nodes expected to be present in the + /// reader, excluding preview mode paths (i.e. "/META-INF/preview/"). + private static Set<String> names() { + return INIT_CLASSES; + } + + /// Returns the number of resources present. + private static int count() { + return INIT_CLASSES.size(); + } + + /// Returns the resource nodes represented as a map from module name to + /// resource path. This is suitable for testing functions like + /// {@link ImageReader#containsResource(String, String)} without the + /// overhead of splitting resource names during the trial. + private static Map<String, List<String>> pathMap() { + return MODULE_TO_PATHS; + } + + // Created by running "java -verbose:class", throwing away anonymous inner + // classes and anything without a reliable name, and grouping by the stated + // source. It's not perfect, but it's representative. + // + // <jdk_root>/bin/java -verbose:class HelloWorld 2>&1 \ + // | fgrep '[class,load]' | cut -d' ' -f2 \ + // | tr '.' '/' \ + // | egrep -v '\$[0-9$]' \ + // | fgrep -v 'HelloWorld' \ + // | fgrep -v '/META-INF/preview/' \ + // | while read f ; do echo "${f}.class" ; done \ + // > initclasses.txt + // + // Output: + // java/lang/Object.class + // java/io/Serializable.class + // ... + // + // jimage list <jdk_root>/images/jdk/lib/modules \ + // | awk '/^Module: */ { MOD=$2 }; /^ */ { print "/modules/"MOD"/"$1 }' \ + // > fullpaths.txt + // + // Output: + // ... + // /modules/java.base/java/lang/Object.class + // /modules/java.base/java/lang/OutOfMemoryError.class + // ... + // + // while read c ; do grep "/$c" fullpaths.txt ; done < initclasses.txt \ + // | while read c ; do printf ' "%s",\n' "$c" ; done \ + // > initpaths.txt + // + // Output: + private static final Set<String> INIT_CLASSES = Set.of( + "/modules/java.base/java/lang/Object.class", + "/modules/java.base/java/io/Serializable.class", + "/modules/java.base/java/lang/Comparable.class", + "/modules/java.base/java/lang/CharSequence.class", + "/modules/java.base/java/lang/constant/Constable.class", + "/modules/java.base/java/lang/constant/ConstantDesc.class", + "/modules/java.base/java/lang/String.class", + "/modules/java.base/java/lang/reflect/AnnotatedElement.class", + "/modules/java.base/java/lang/reflect/GenericDeclaration.class", + "/modules/java.base/java/lang/reflect/Type.class", + "/modules/java.base/java/lang/invoke/TypeDescriptor.class", + "/modules/java.base/java/lang/invoke/TypeDescriptor$OfField.class", + "/modules/java.base/java/lang/Class.class", + "/modules/java.base/java/lang/Cloneable.class", + "/modules/java.base/java/lang/ClassLoader.class", + "/modules/java.base/java/lang/System.class", + "/modules/java.base/java/lang/Throwable.class", + "/modules/java.base/java/lang/Error.class", + "/modules/java.base/java/lang/Exception.class", + "/modules/java.base/java/lang/RuntimeException.class", + "/modules/java.base/java/security/ProtectionDomain.class", + "/modules/java.base/java/security/SecureClassLoader.class", + "/modules/java.base/java/lang/ReflectiveOperationException.class", + "/modules/java.base/java/lang/ClassNotFoundException.class", + "/modules/java.base/java/lang/Record.class", + "/modules/java.base/java/lang/LinkageError.class", + "/modules/java.base/java/lang/NoClassDefFoundError.class", + "/modules/java.base/java/lang/ClassCastException.class", + "/modules/java.base/java/lang/ArrayStoreException.class", + "/modules/java.base/java/lang/VirtualMachineError.class", + "/modules/java.base/java/lang/InternalError.class", + "/modules/java.base/java/lang/OutOfMemoryError.class", + "/modules/java.base/java/lang/StackOverflowError.class", + "/modules/java.base/java/lang/IllegalMonitorStateException.class", + "/modules/java.base/java/lang/ref/Reference.class", + "/modules/java.base/java/lang/IllegalCallerException.class", + "/modules/java.base/java/lang/ref/SoftReference.class", + "/modules/java.base/java/lang/ref/WeakReference.class", + "/modules/java.base/java/lang/ref/FinalReference.class", + "/modules/java.base/java/lang/ref/PhantomReference.class", + "/modules/java.base/java/lang/ref/Finalizer.class", + "/modules/java.base/java/lang/Runnable.class", + "/modules/java.base/java/lang/Thread.class", + "/modules/java.base/java/lang/Thread$FieldHolder.class", + "/modules/java.base/java/lang/Thread$Constants.class", + "/modules/java.base/java/lang/Thread$UncaughtExceptionHandler.class", + "/modules/java.base/java/lang/ThreadGroup.class", + "/modules/java.base/java/lang/BaseVirtualThread.class", + "/modules/java.base/java/lang/VirtualThread.class", + "/modules/java.base/java/lang/ThreadBuilders$BoundVirtualThread.class", + "/modules/java.base/java/util/Map.class", + "/modules/java.base/java/util/Dictionary.class", + "/modules/java.base/java/util/Hashtable.class", + "/modules/java.base/java/util/Properties.class", + "/modules/java.base/java/lang/Module.class", + "/modules/java.base/java/lang/reflect/AccessibleObject.class", + "/modules/java.base/java/lang/reflect/Member.class", + "/modules/java.base/java/lang/reflect/Field.class", + "/modules/java.base/java/lang/reflect/Parameter.class", + "/modules/java.base/java/lang/reflect/Executable.class", + "/modules/java.base/java/lang/reflect/Method.class", + "/modules/java.base/java/lang/reflect/Constructor.class", + "/modules/java.base/jdk/internal/vm/ContinuationScope.class", + "/modules/java.base/jdk/internal/vm/Continuation.class", + "/modules/java.base/jdk/internal/vm/StackChunk.class", + "/modules/java.base/jdk/internal/reflect/MethodAccessor.class", + "/modules/java.base/jdk/internal/reflect/MethodAccessorImpl.class", + "/modules/java.base/jdk/internal/reflect/ConstantPool.class", + "/modules/java.base/java/lang/annotation/Annotation.class", + "/modules/java.base/jdk/internal/reflect/CallerSensitive.class", + "/modules/java.base/jdk/internal/reflect/ConstructorAccessor.class", + "/modules/java.base/jdk/internal/reflect/ConstructorAccessorImpl.class", + "/modules/java.base/jdk/internal/reflect/DirectConstructorHandleAccessor$NativeAccessor.class", + "/modules/java.base/java/lang/invoke/MethodHandle.class", + "/modules/java.base/java/lang/invoke/DirectMethodHandle.class", + "/modules/java.base/java/lang/invoke/VarHandle.class", + "/modules/java.base/java/lang/invoke/MemberName.class", + "/modules/java.base/java/lang/invoke/ResolvedMethodName.class", + "/modules/java.base/java/lang/invoke/MethodHandleNatives.class", + "/modules/java.base/java/lang/invoke/LambdaForm.class", + "/modules/java.base/java/lang/invoke/TypeDescriptor$OfMethod.class", + "/modules/java.base/java/lang/invoke/MethodType.class", + "/modules/java.base/java/lang/BootstrapMethodError.class", + "/modules/java.base/java/lang/invoke/CallSite.class", + "/modules/java.base/jdk/internal/foreign/abi/NativeEntryPoint.class", + "/modules/java.base/jdk/internal/foreign/abi/ABIDescriptor.class", + "/modules/java.base/jdk/internal/foreign/abi/VMStorage.class", + "/modules/java.base/jdk/internal/foreign/abi/UpcallLinker$CallRegs.class", + "/modules/java.base/java/lang/invoke/ConstantCallSite.class", + "/modules/java.base/java/lang/invoke/MutableCallSite.class", + "/modules/java.base/java/lang/invoke/VolatileCallSite.class", + "/modules/java.base/java/lang/AssertionStatusDirectives.class", + "/modules/java.base/java/lang/Appendable.class", + "/modules/java.base/java/lang/AbstractStringBuilder.class", + "/modules/java.base/java/lang/StringBuffer.class", + "/modules/java.base/java/lang/StringBuilder.class", + "/modules/java.base/jdk/internal/misc/UnsafeConstants.class", + "/modules/java.base/jdk/internal/misc/Unsafe.class", + "/modules/java.base/jdk/internal/module/Modules.class", + "/modules/java.base/java/lang/AutoCloseable.class", + "/modules/java.base/java/io/Closeable.class", + "/modules/java.base/java/io/InputStream.class", + "/modules/java.base/java/io/ByteArrayInputStream.class", + "/modules/java.base/java/net/URL.class", + "/modules/java.base/java/lang/Enum.class", + "/modules/java.base/java/util/jar/Manifest.class", + "/modules/java.base/jdk/internal/loader/BuiltinClassLoader.class", + "/modules/java.base/jdk/internal/loader/ClassLoaders.class", + "/modules/java.base/jdk/internal/loader/ClassLoaders$AppClassLoader.class", + "/modules/java.base/jdk/internal/loader/ClassLoaders$PlatformClassLoader.class", + "/modules/java.base/java/security/CodeSource.class", + "/modules/java.base/java/util/concurrent/ConcurrentMap.class", + "/modules/java.base/java/util/AbstractMap.class", + "/modules/java.base/java/util/concurrent/ConcurrentHashMap.class", + "/modules/java.base/java/lang/Iterable.class", + "/modules/java.base/java/util/Collection.class", + "/modules/java.base/java/util/SequencedCollection.class", + "/modules/java.base/java/util/List.class", + "/modules/java.base/java/util/RandomAccess.class", + "/modules/java.base/java/util/AbstractCollection.class", + "/modules/java.base/java/util/AbstractList.class", + "/modules/java.base/java/util/ArrayList.class", + "/modules/java.base/java/lang/StackTraceElement.class", + "/modules/java.base/java/nio/Buffer.class", + "/modules/java.base/java/lang/StackWalker.class", + "/modules/java.base/java/lang/StackStreamFactory$AbstractStackWalker.class", + "/modules/java.base/java/lang/StackWalker$StackFrame.class", + "/modules/java.base/java/lang/ClassFrameInfo.class", + "/modules/java.base/java/lang/StackFrameInfo.class", + "/modules/java.base/java/lang/LiveStackFrame.class", + "/modules/java.base/java/lang/LiveStackFrameInfo.class", + "/modules/java.base/java/util/concurrent/locks/AbstractOwnableSynchronizer.class", + "/modules/java.base/java/lang/Boolean.class", + "/modules/java.base/java/lang/Character.class", + "/modules/java.base/java/lang/Number.class", + "/modules/java.base/java/lang/Float.class", + "/modules/java.base/java/lang/Double.class", + "/modules/java.base/java/lang/Byte.class", + "/modules/java.base/java/lang/Short.class", + "/modules/java.base/java/lang/Integer.class", + "/modules/java.base/java/lang/Long.class", + "/modules/java.base/java/lang/Void.class", + "/modules/java.base/java/util/Iterator.class", + "/modules/java.base/java/lang/reflect/RecordComponent.class", + "/modules/java.base/jdk/internal/vm/vector/VectorSupport.class", + "/modules/java.base/jdk/internal/vm/vector/VectorSupport$VectorPayload.class", + "/modules/java.base/jdk/internal/vm/vector/VectorSupport$Vector.class", + "/modules/java.base/jdk/internal/vm/vector/VectorSupport$VectorMask.class", + "/modules/java.base/jdk/internal/vm/vector/VectorSupport$VectorShuffle.class", + "/modules/java.base/jdk/internal/vm/FillerObject.class", + "/modules/java.base/java/lang/NullPointerException.class", + "/modules/java.base/java/lang/ArithmeticException.class", + "/modules/java.base/java/lang/IndexOutOfBoundsException.class", + "/modules/java.base/java/lang/ArrayIndexOutOfBoundsException.class", + "/modules/java.base/java/io/ObjectStreamField.class", + "/modules/java.base/java/util/Comparator.class", + "/modules/java.base/java/lang/String$CaseInsensitiveComparator.class", + "/modules/java.base/jdk/internal/misc/VM.class", + "/modules/java.base/java/lang/Module$ArchivedData.class", + "/modules/java.base/jdk/internal/misc/CDS.class", + "/modules/java.base/java/util/Set.class", + "/modules/java.base/java/util/ImmutableCollections$AbstractImmutableCollection.class", + "/modules/java.base/java/util/ImmutableCollections$AbstractImmutableSet.class", + "/modules/java.base/java/util/ImmutableCollections$Set12.class", + "/modules/java.base/java/util/Objects.class", + "/modules/java.base/java/util/ImmutableCollections.class", + "/modules/java.base/java/util/ImmutableCollections$AbstractImmutableList.class", + "/modules/java.base/java/util/ImmutableCollections$ListN.class", + "/modules/java.base/java/util/ImmutableCollections$SetN.class", + "/modules/java.base/java/util/ImmutableCollections$AbstractImmutableMap.class", + "/modules/java.base/java/util/ImmutableCollections$MapN.class", + "/modules/java.base/jdk/internal/access/JavaLangReflectAccess.class", + "/modules/java.base/java/lang/reflect/ReflectAccess.class", + "/modules/java.base/jdk/internal/access/SharedSecrets.class", + "/modules/java.base/jdk/internal/reflect/ReflectionFactory.class", + "/modules/java.base/java/io/ObjectStreamClass.class", + "/modules/java.base/java/lang/Math.class", + "/modules/java.base/jdk/internal/reflect/ReflectionFactory$Config.class", + "/modules/java.base/jdk/internal/access/JavaLangRefAccess.class", + "/modules/java.base/java/lang/ref/ReferenceQueue.class", + "/modules/java.base/java/lang/ref/ReferenceQueue$Null.class", + "/modules/java.base/java/lang/ref/ReferenceQueue$Lock.class", + "/modules/java.base/jdk/internal/access/JavaLangAccess.class", + "/modules/java.base/jdk/internal/util/SystemProps.class", + "/modules/java.base/jdk/internal/util/SystemProps$Raw.class", + "/modules/java.base/java/nio/charset/Charset.class", + "/modules/java.base/java/nio/charset/spi/CharsetProvider.class", + "/modules/java.base/sun/nio/cs/StandardCharsets.class", + "/modules/java.base/java/lang/StringLatin1.class", + "/modules/java.base/sun/nio/cs/HistoricallyNamedCharset.class", + "/modules/java.base/sun/nio/cs/Unicode.class", + "/modules/java.base/sun/nio/cs/UTF_8.class", + "/modules/java.base/java/util/HashMap.class", + "/modules/java.base/java/lang/StrictMath.class", + "/modules/java.base/jdk/internal/util/ArraysSupport.class", + "/modules/java.base/java/util/Map$Entry.class", + "/modules/java.base/java/util/HashMap$Node.class", + "/modules/java.base/java/util/LinkedHashMap$Entry.class", + "/modules/java.base/java/util/HashMap$TreeNode.class", + "/modules/java.base/java/lang/StringConcatHelper.class", + "/modules/java.base/java/lang/VersionProps.class", + "/modules/java.base/java/lang/Runtime.class", + "/modules/java.base/java/util/concurrent/locks/Lock.class", + "/modules/java.base/java/util/concurrent/locks/ReentrantLock.class", + "/modules/java.base/java/util/concurrent/ConcurrentHashMap$Segment.class", + "/modules/java.base/java/util/concurrent/ConcurrentHashMap$CounterCell.class", + "/modules/java.base/java/util/concurrent/ConcurrentHashMap$Node.class", + "/modules/java.base/java/util/concurrent/locks/LockSupport.class", + "/modules/java.base/java/util/concurrent/ConcurrentHashMap$ReservationNode.class", + "/modules/java.base/java/util/AbstractSet.class", + "/modules/java.base/java/util/HashMap$EntrySet.class", + "/modules/java.base/java/util/HashMap$HashIterator.class", + "/modules/java.base/java/util/HashMap$EntryIterator.class", + "/modules/java.base/jdk/internal/util/StaticProperty.class", + "/modules/java.base/java/io/FileInputStream.class", + "/modules/java.base/java/lang/System$In.class", + "/modules/java.base/java/io/FileDescriptor.class", + "/modules/java.base/jdk/internal/access/JavaIOFileDescriptorAccess.class", + "/modules/java.base/java/io/Flushable.class", + "/modules/java.base/java/io/OutputStream.class", + "/modules/java.base/java/io/FileOutputStream.class", + "/modules/java.base/java/lang/System$Out.class", + "/modules/java.base/java/io/FilterInputStream.class", + "/modules/java.base/java/io/BufferedInputStream.class", + "/modules/java.base/java/io/FilterOutputStream.class", + "/modules/java.base/java/io/PrintStream.class", + "/modules/java.base/java/io/BufferedOutputStream.class", + "/modules/java.base/java/io/Writer.class", + "/modules/java.base/java/io/OutputStreamWriter.class", + "/modules/java.base/sun/nio/cs/StreamEncoder.class", + "/modules/java.base/java/nio/charset/CharsetEncoder.class", + "/modules/java.base/sun/nio/cs/UTF_8$Encoder.class", + "/modules/java.base/java/nio/charset/CodingErrorAction.class", + "/modules/java.base/java/util/Arrays.class", + "/modules/java.base/java/nio/ByteBuffer.class", + "/modules/java.base/jdk/internal/misc/ScopedMemoryAccess.class", + "/modules/java.base/java/util/function/Function.class", + "/modules/java.base/jdk/internal/util/Preconditions.class", + "/modules/java.base/java/util/function/BiFunction.class", + "/modules/java.base/jdk/internal/access/JavaNioAccess.class", + "/modules/java.base/java/nio/HeapByteBuffer.class", + "/modules/java.base/java/io/BufferedWriter.class", + "/modules/java.base/java/lang/Terminator.class", + "/modules/java.base/jdk/internal/misc/Signal$Handler.class", + "/modules/java.base/jdk/internal/misc/Signal.class", + "/modules/java.base/java/util/Hashtable$Entry.class", + "/modules/java.base/jdk/internal/misc/Signal$NativeHandler.class", + "/modules/java.base/java/lang/Integer$IntegerCache.class", + "/modules/java.base/jdk/internal/misc/OSEnvironment.class", + "/modules/java.base/java/lang/Thread$State.class", + "/modules/java.base/java/lang/ref/Reference$ReferenceHandler.class", + "/modules/java.base/java/lang/Thread$ThreadIdentifiers.class", + "/modules/java.base/java/lang/ref/Finalizer$FinalizerThread.class", + "/modules/java.base/jdk/internal/ref/Cleaner.class", + "/modules/java.base/java/util/Collections.class", + "/modules/java.base/java/util/Collections$EmptySet.class", + "/modules/java.base/java/util/Collections$EmptyList.class", + "/modules/java.base/java/util/Collections$EmptyMap.class", + "/modules/java.base/java/lang/IllegalArgumentException.class", + "/modules/java.base/java/lang/invoke/MethodHandleStatics.class", + "/modules/java.base/java/lang/reflect/ClassFileFormatVersion.class", + "/modules/java.base/java/lang/CharacterData.class", + "/modules/java.base/java/lang/CharacterDataLatin1.class", + "/modules/java.base/jdk/internal/util/ClassFileDumper.class", + "/modules/java.base/java/util/HexFormat.class", + "/modules/java.base/java/lang/Character$CharacterCache.class", + "/modules/java.base/java/util/concurrent/atomic/AtomicInteger.class", + "/modules/java.base/jdk/internal/module/ModuleBootstrap.class", + "/modules/java.base/java/lang/module/ModuleDescriptor.class", + "/modules/java.base/java/lang/invoke/MethodHandles.class", + "/modules/java.base/java/lang/invoke/MemberName$Factory.class", + "/modules/java.base/jdk/internal/reflect/Reflection.class", + "/modules/java.base/java/lang/invoke/MethodHandles$Lookup.class", + "/modules/java.base/java/util/ImmutableCollections$MapN$MapNIterator.class", + "/modules/java.base/java/util/KeyValueHolder.class", + "/modules/java.base/sun/invoke/util/VerifyAccess.class", + "/modules/java.base/java/lang/reflect/Modifier.class", + "/modules/java.base/jdk/internal/access/JavaLangModuleAccess.class", + "/modules/java.base/java/io/File.class", + "/modules/java.base/java/io/DefaultFileSystem.class", + "/modules/java.base/java/io/FileSystem.class", + "/modules/java.base/java/io/UnixFileSystem.class", + "/modules/java.base/jdk/internal/util/DecimalDigits.class", + "/modules/java.base/jdk/internal/module/ModulePatcher.class", + "/modules/java.base/jdk/internal/module/ModuleBootstrap$IllegalNativeAccess.class", + "/modules/java.base/java/util/HashSet.class", + "/modules/java.base/jdk/internal/module/ModuleLoaderMap.class", + "/modules/java.base/jdk/internal/module/ModuleLoaderMap$Modules.class", + "/modules/java.base/jdk/internal/module/ModuleBootstrap$Counters.class", + "/modules/java.base/jdk/internal/module/ArchivedBootLayer.class", + "/modules/java.base/jdk/internal/module/ArchivedModuleGraph.class", + "/modules/java.base/jdk/internal/module/SystemModuleFinders.class", + "/modules/java.base/java/net/URI.class", + "/modules/java.base/jdk/internal/access/JavaNetUriAccess.class", + "/modules/java.base/jdk/internal/module/SystemModulesMap.class", + "/modules/java.base/jdk/internal/module/SystemModules.class", + "/modules/java.base/jdk/internal/module/ExplodedSystemModules.class", + "/modules/java.base/java/nio/file/Watchable.class", + "/modules/java.base/java/nio/file/Path.class", + "/modules/java.base/java/nio/file/FileSystems.class", + "/modules/java.base/sun/nio/fs/DefaultFileSystemProvider.class", + "/modules/java.base/java/nio/file/spi/FileSystemProvider.class", + "/modules/java.base/sun/nio/fs/AbstractFileSystemProvider.class", + "/modules/java.base/sun/nio/fs/UnixFileSystemProvider.class", + "/modules/java.base/sun/nio/fs/LinuxFileSystemProvider.class", + "/modules/java.base/java/nio/file/OpenOption.class", + "/modules/java.base/java/nio/file/StandardOpenOption.class", + "/modules/java.base/java/nio/file/FileSystem.class", + "/modules/java.base/sun/nio/fs/UnixFileSystem.class", + "/modules/java.base/sun/nio/fs/LinuxFileSystem.class", + "/modules/java.base/sun/nio/fs/UnixPath.class", + "/modules/java.base/sun/nio/fs/Util.class", + "/modules/java.base/java/lang/StringCoding.class", + "/modules/java.base/sun/nio/fs/UnixNativeDispatcher.class", + "/modules/java.base/jdk/internal/loader/BootLoader.class", + "/modules/java.base/java/lang/Module$EnableNativeAccess.class", + "/modules/java.base/jdk/internal/loader/NativeLibraries.class", + "/modules/java.base/jdk/internal/loader/ClassLoaderHelper.class", + "/modules/java.base/java/util/concurrent/ConcurrentHashMap$CollectionView.class", + "/modules/java.base/java/util/concurrent/ConcurrentHashMap$KeySetView.class", + "/modules/java.base/jdk/internal/loader/NativeLibraries$LibraryPaths.class", + "/modules/java.base/java/io/File$PathStatus.class", + "/modules/java.base/jdk/internal/loader/NativeLibraries$CountedLock.class", + "/modules/java.base/java/util/concurrent/locks/AbstractQueuedSynchronizer.class", + "/modules/java.base/java/util/concurrent/locks/ReentrantLock$Sync.class", + "/modules/java.base/java/util/concurrent/locks/ReentrantLock$NonfairSync.class", + "/modules/java.base/jdk/internal/loader/NativeLibraries$NativeLibraryContext.class", + "/modules/java.base/java/util/Queue.class", + "/modules/java.base/java/util/Deque.class", + "/modules/java.base/java/util/ArrayDeque.class", + "/modules/java.base/java/util/ArrayDeque$DeqIterator.class", + "/modules/java.base/jdk/internal/loader/NativeLibrary.class", + "/modules/java.base/jdk/internal/loader/NativeLibraries$NativeLibraryImpl.class", + "/modules/java.base/java/security/cert/Certificate.class", + "/modules/java.base/java/util/concurrent/ConcurrentHashMap$ValuesView.class", + "/modules/java.base/java/util/Enumeration.class", + "/modules/java.base/java/util/concurrent/ConcurrentHashMap$Traverser.class", + "/modules/java.base/java/util/concurrent/ConcurrentHashMap$BaseIterator.class", + "/modules/java.base/java/util/concurrent/ConcurrentHashMap$ValueIterator.class", + "/modules/java.base/java/nio/file/attribute/BasicFileAttributes.class", + "/modules/java.base/java/nio/file/attribute/PosixFileAttributes.class", + "/modules/java.base/sun/nio/fs/UnixFileAttributes.class", + "/modules/java.base/sun/nio/fs/UnixFileStoreAttributes.class", + "/modules/java.base/sun/nio/fs/UnixMountEntry.class", + "/modules/java.base/java/nio/file/CopyOption.class", + "/modules/java.base/java/nio/file/LinkOption.class", + "/modules/java.base/java/nio/file/Files.class", + "/modules/java.base/sun/nio/fs/NativeBuffers.class", + "/modules/java.base/java/lang/ThreadLocal.class", + "/modules/java.base/jdk/internal/misc/CarrierThreadLocal.class", + "/modules/java.base/jdk/internal/misc/TerminatingThreadLocal.class", + "/modules/java.base/java/lang/ThreadLocal$ThreadLocalMap.class", + "/modules/java.base/java/lang/ThreadLocal$ThreadLocalMap$Entry.class", + "/modules/java.base/java/util/IdentityHashMap.class", + "/modules/java.base/java/util/Collections$SetFromMap.class", + "/modules/java.base/java/util/IdentityHashMap$KeySet.class", + "/modules/java.base/sun/nio/fs/NativeBuffer.class", + "/modules/java.base/jdk/internal/ref/CleanerFactory.class", + "/modules/java.base/java/util/concurrent/ThreadFactory.class", + "/modules/java.base/java/lang/ref/Cleaner.class", + "/modules/java.base/jdk/internal/ref/CleanerImpl.class", + "/modules/java.base/jdk/internal/ref/CleanerImpl$CleanableList.class", + "/modules/java.base/jdk/internal/ref/CleanerImpl$CleanableList$Node.class", + "/modules/java.base/java/lang/ref/Cleaner$Cleanable.class", + "/modules/java.base/jdk/internal/ref/PhantomCleanable.class", + "/modules/java.base/jdk/internal/ref/CleanerImpl$CleanerCleanable.class", + "/modules/java.base/jdk/internal/misc/InnocuousThread.class", + "/modules/java.base/sun/nio/fs/NativeBuffer$Deallocator.class", + "/modules/java.base/jdk/internal/ref/CleanerImpl$PhantomCleanableRef.class", + "/modules/java.base/java/lang/module/ModuleFinder.class", + "/modules/java.base/jdk/internal/module/ModulePath.class", + "/modules/java.base/java/util/jar/Attributes$Name.class", + "/modules/java.base/java/lang/reflect/Array.class", + "/modules/java.base/jdk/internal/perf/PerfCounter.class", + "/modules/java.base/jdk/internal/perf/Perf.class", + "/modules/java.base/sun/nio/ch/DirectBuffer.class", + "/modules/java.base/java/nio/MappedByteBuffer.class", + "/modules/java.base/java/nio/DirectByteBuffer.class", + "/modules/java.base/java/nio/Bits.class", + "/modules/java.base/java/util/concurrent/atomic/AtomicLong.class", + "/modules/java.base/jdk/internal/misc/VM$BufferPool.class", + "/modules/java.base/java/nio/LongBuffer.class", + "/modules/java.base/java/nio/DirectLongBufferU.class", + "/modules/java.base/java/util/zip/ZipConstants.class", + "/modules/java.base/java/util/zip/ZipFile.class", + "/modules/java.base/java/util/jar/JarFile.class", + "/modules/java.base/java/util/BitSet.class", + "/modules/java.base/jdk/internal/access/JavaUtilZipFileAccess.class", + "/modules/java.base/jdk/internal/access/JavaUtilJarAccess.class", + "/modules/java.base/java/util/jar/JavaUtilJarAccessImpl.class", + "/modules/java.base/java/lang/Runtime$Version.class", + "/modules/java.base/java/util/ImmutableCollections$List12.class", + "/modules/java.base/java/util/Optional.class", + "/modules/java.base/java/nio/file/attribute/DosFileAttributes.class", + "/modules/java.base/java/nio/file/attribute/AttributeView.class", + "/modules/java.base/java/nio/file/attribute/FileAttributeView.class", + "/modules/java.base/java/nio/file/attribute/BasicFileAttributeView.class", + "/modules/java.base/java/nio/file/attribute/DosFileAttributeView.class", + "/modules/java.base/java/nio/file/attribute/UserDefinedFileAttributeView.class", + "/modules/java.base/sun/nio/fs/UnixFileAttributeViews.class", + "/modules/java.base/sun/nio/fs/DynamicFileAttributeView.class", + "/modules/java.base/sun/nio/fs/AbstractBasicFileAttributeView.class", + "/modules/java.base/sun/nio/fs/UnixFileAttributeViews$Basic.class", + "/modules/java.base/sun/nio/fs/UnixFileAttributes$UnixAsBasicFileAttributes.class", + "/modules/java.base/java/nio/file/DirectoryStream$Filter.class", + "/modules/java.base/java/nio/file/Files$AcceptAllFilter.class", + "/modules/java.base/java/nio/file/DirectoryStream.class", + "/modules/java.base/java/nio/file/SecureDirectoryStream.class", + "/modules/java.base/sun/nio/fs/UnixSecureDirectoryStream.class", + "/modules/java.base/sun/nio/fs/UnixDirectoryStream.class", + "/modules/java.base/java/util/concurrent/locks/ReadWriteLock.class", + "/modules/java.base/java/util/concurrent/locks/ReentrantReadWriteLock.class", + "/modules/java.base/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.class", + "/modules/java.base/java/util/concurrent/locks/ReentrantReadWriteLock$Sync.class", + "/modules/java.base/java/util/concurrent/locks/ReentrantReadWriteLock$FairSync.class", + "/modules/java.base/java/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter.class", + "/modules/java.base/java/util/concurrent/locks/ReentrantReadWriteLock$ReadLock.class", + "/modules/java.base/java/util/concurrent/locks/ReentrantReadWriteLock$WriteLock.class", + "/modules/java.base/sun/nio/fs/UnixDirectoryStream$UnixDirectoryIterator.class", + "/modules/java.base/java/nio/file/attribute/FileAttribute.class", + "/modules/java.base/sun/nio/fs/UnixFileModeAttribute.class", + "/modules/java.base/sun/nio/fs/UnixChannelFactory.class", + "/modules/java.base/sun/nio/fs/UnixChannelFactory$Flags.class", + "/modules/java.base/java/util/Collections$EmptyIterator.class", + "/modules/java.base/java/nio/channels/Channel.class", + "/modules/java.base/java/nio/channels/ReadableByteChannel.class", + "/modules/java.base/java/nio/channels/WritableByteChannel.class", + "/modules/java.base/java/nio/channels/ByteChannel.class", + "/modules/java.base/java/nio/channels/SeekableByteChannel.class", + "/modules/java.base/java/nio/channels/GatheringByteChannel.class", + "/modules/java.base/java/nio/channels/ScatteringByteChannel.class", + "/modules/java.base/java/nio/channels/InterruptibleChannel.class", + "/modules/java.base/java/nio/channels/spi/AbstractInterruptibleChannel.class", + "/modules/java.base/java/nio/channels/FileChannel.class", + "/modules/java.base/sun/nio/ch/FileChannelImpl.class", + "/modules/java.base/sun/nio/ch/NativeDispatcher.class", + "/modules/java.base/sun/nio/ch/FileDispatcher.class", + "/modules/java.base/sun/nio/ch/UnixFileDispatcherImpl.class", + "/modules/java.base/sun/nio/ch/FileDispatcherImpl.class", + "/modules/java.base/sun/nio/ch/IOUtil.class", + "/modules/java.base/sun/nio/ch/Interruptible.class", + "/modules/java.base/sun/nio/ch/NativeThreadSet.class", + "/modules/java.base/sun/nio/ch/FileChannelImpl$Closer.class", + "/modules/java.base/java/nio/channels/Channels.class", + "/modules/java.base/sun/nio/ch/Streams.class", + "/modules/java.base/sun/nio/ch/SelChImpl.class", + "/modules/java.base/java/nio/channels/NetworkChannel.class", + "/modules/java.base/java/nio/channels/SelectableChannel.class", + "/modules/java.base/java/nio/channels/spi/AbstractSelectableChannel.class", + "/modules/java.base/java/nio/channels/SocketChannel.class", + "/modules/java.base/sun/nio/ch/SocketChannelImpl.class", + "/modules/java.base/sun/nio/ch/ChannelInputStream.class", + "/modules/java.base/java/lang/invoke/LambdaMetafactory.class", + "/modules/java.base/java/util/function/Supplier.class", + "/modules/java.base/jdk/internal/util/ReferencedKeySet.class", + "/modules/java.base/jdk/internal/util/ReferencedKeyMap.class", + "/modules/java.base/jdk/internal/util/ReferenceKey.class", + "/modules/java.base/jdk/internal/util/StrongReferenceKey.class", + "/modules/java.base/java/lang/invoke/MethodTypeForm.class", + "/modules/java.base/jdk/internal/util/WeakReferenceKey.class", + "/modules/java.base/sun/invoke/util/Wrapper.class", + "/modules/java.base/sun/invoke/util/Wrapper$Format.class", + "/modules/java.base/java/lang/constant/ConstantDescs.class", + "/modules/java.base/java/lang/constant/ClassDesc.class", + "/modules/java.base/jdk/internal/constant/ClassOrInterfaceDescImpl.class", + "/modules/java.base/jdk/internal/constant/ArrayClassDescImpl.class", + "/modules/java.base/jdk/internal/constant/ConstantUtils.class", + "/modules/java.base/java/lang/constant/DirectMethodHandleDesc$Kind.class", + "/modules/java.base/java/lang/constant/MethodTypeDesc.class", + "/modules/java.base/jdk/internal/constant/MethodTypeDescImpl.class", + "/modules/java.base/java/lang/constant/MethodHandleDesc.class", + "/modules/java.base/java/lang/constant/DirectMethodHandleDesc.class", + "/modules/java.base/jdk/internal/constant/DirectMethodHandleDescImpl.class", + "/modules/java.base/java/lang/constant/DynamicConstantDesc.class", + "/modules/java.base/jdk/internal/constant/PrimitiveClassDescImpl.class", + "/modules/java.base/java/lang/constant/DynamicConstantDesc$AnonymousDynamicConstantDesc.class", + "/modules/java.base/java/lang/invoke/LambdaForm$NamedFunction.class", + "/modules/java.base/java/lang/invoke/DirectMethodHandle$Holder.class", + "/modules/java.base/sun/invoke/util/ValueConversions.class", + "/modules/java.base/java/lang/invoke/MethodHandleImpl.class", + "/modules/java.base/java/lang/invoke/Invokers.class", + "/modules/java.base/java/lang/invoke/LambdaForm$Kind.class", + "/modules/java.base/java/lang/NoSuchMethodException.class", + "/modules/java.base/java/lang/invoke/LambdaForm$BasicType.class", + "/modules/java.base/java/lang/classfile/TypeKind.class", + "/modules/java.base/java/lang/invoke/LambdaForm$Name.class", + "/modules/java.base/java/lang/invoke/LambdaForm$Holder.class", + "/modules/java.base/java/lang/invoke/InvokerBytecodeGenerator.class", + "/modules/java.base/java/lang/classfile/AnnotationElement.class", + "/modules/java.base/java/lang/classfile/Annotation.class", + "/modules/java.base/java/lang/classfile/constantpool/ConstantPool.class", + "/modules/java.base/java/lang/classfile/constantpool/ConstantPoolBuilder.class", + "/modules/java.base/jdk/internal/classfile/impl/TemporaryConstantPool.class", + "/modules/java.base/java/lang/classfile/constantpool/PoolEntry.class", + "/modules/java.base/java/lang/classfile/constantpool/AnnotationConstantValueEntry.class", + "/modules/java.base/java/lang/classfile/constantpool/Utf8Entry.class", + "/modules/java.base/jdk/internal/classfile/impl/AbstractPoolEntry.class", + "/modules/java.base/jdk/internal/classfile/impl/AbstractPoolEntry$Utf8EntryImpl.class", + "/modules/java.base/jdk/internal/classfile/impl/AbstractPoolEntry$Utf8EntryImpl$State.class", + "/modules/java.base/jdk/internal/classfile/impl/AnnotationImpl.class", + "/modules/java.base/java/lang/classfile/ClassFileElement.class", + "/modules/java.base/java/lang/classfile/Attribute.class", + "/modules/java.base/java/lang/classfile/ClassElement.class", + "/modules/java.base/java/lang/classfile/MethodElement.class", + "/modules/java.base/java/lang/classfile/FieldElement.class", + "/modules/java.base/java/lang/classfile/attribute/RuntimeVisibleAnnotationsAttribute.class", + "/modules/java.base/jdk/internal/classfile/impl/Util$Writable.class", + "/modules/java.base/jdk/internal/classfile/impl/AbstractElement.class", + "/modules/java.base/jdk/internal/classfile/impl/UnboundAttribute.class", + "/modules/java.base/jdk/internal/classfile/impl/UnboundAttribute$UnboundRuntimeVisibleAnnotationsAttribute.class", + "/modules/java.base/java/lang/classfile/Attributes.class", + "/modules/java.base/java/lang/classfile/AttributeMapper.class", + "/modules/java.base/jdk/internal/classfile/impl/AbstractAttributeMapper.class", + "/modules/java.base/jdk/internal/classfile/impl/AbstractAttributeMapper$RuntimeVisibleAnnotationsMapper.class", + "/modules/java.base/java/lang/classfile/AttributeMapper$AttributeStability.class", + "/modules/java.base/java/lang/invoke/MethodHandleImpl$Intrinsic.class", + "/modules/java.base/jdk/internal/classfile/impl/SplitConstantPool.class", + "/modules/java.base/java/lang/classfile/BootstrapMethodEntry.class", + "/modules/java.base/jdk/internal/classfile/impl/BootstrapMethodEntryImpl.class", + "/modules/java.base/jdk/internal/classfile/impl/EntryMap.class", + "/modules/java.base/jdk/internal/classfile/impl/Util.class", + "/modules/java.base/java/lang/classfile/constantpool/LoadableConstantEntry.class", + "/modules/java.base/java/lang/classfile/constantpool/ClassEntry.class", + "/modules/java.base/jdk/internal/classfile/impl/AbstractPoolEntry$AbstractRefEntry.class", + "/modules/java.base/jdk/internal/classfile/impl/AbstractPoolEntry$AbstractNamedEntry.class", + "/modules/java.base/jdk/internal/classfile/impl/AbstractPoolEntry$ClassEntryImpl.class", + "/modules/java.base/java/util/function/Consumer.class", + "/modules/java.base/java/lang/classfile/ClassFile.class", + "/modules/java.base/jdk/internal/classfile/impl/ClassFileImpl.class", + "/modules/java.base/java/lang/classfile/ClassFileBuilder.class", + "/modules/java.base/java/lang/classfile/ClassBuilder.class", + "/modules/java.base/jdk/internal/classfile/impl/AbstractDirectBuilder.class", + "/modules/java.base/jdk/internal/classfile/impl/DirectClassBuilder.class", + "/modules/java.base/jdk/internal/classfile/impl/AttributeHolder.class", + "/modules/java.base/java/lang/classfile/Superclass.class", + "/modules/java.base/jdk/internal/classfile/impl/SuperclassImpl.class", + "/modules/java.base/java/lang/classfile/attribute/SourceFileAttribute.class", + "/modules/java.base/jdk/internal/classfile/impl/UnboundAttribute$UnboundSourceFileAttribute.class", + "/modules/java.base/jdk/internal/classfile/impl/AbstractAttributeMapper$SourceFileMapper.class", + "/modules/java.base/jdk/internal/classfile/impl/BoundAttribute.class", + "/modules/java.base/java/lang/classfile/MethodBuilder.class", + "/modules/java.base/jdk/internal/classfile/impl/MethodInfo.class", + "/modules/java.base/jdk/internal/classfile/impl/TerminalMethodBuilder.class", + "/modules/java.base/jdk/internal/classfile/impl/DirectMethodBuilder.class", + "/modules/java.base/java/lang/classfile/constantpool/NameAndTypeEntry.class", + "/modules/java.base/jdk/internal/classfile/impl/AbstractPoolEntry$AbstractRefsEntry.class", + "/modules/java.base/jdk/internal/classfile/impl/AbstractPoolEntry$NameAndTypeEntryImpl.class", + "/modules/java.base/java/lang/classfile/constantpool/MemberRefEntry.class", + "/modules/java.base/java/lang/classfile/constantpool/FieldRefEntry.class", + "/modules/java.base/jdk/internal/classfile/impl/AbstractPoolEntry$AbstractMemberRefEntry.class", + "/modules/java.base/jdk/internal/classfile/impl/AbstractPoolEntry$FieldRefEntryImpl.class", + "/modules/java.base/java/lang/invoke/InvokerBytecodeGenerator$ClassData.class", + "/modules/java.base/java/lang/classfile/CodeBuilder.class", + "/modules/java.base/jdk/internal/classfile/impl/LabelContext.class", + "/modules/java.base/jdk/internal/classfile/impl/TerminalCodeBuilder.class", + "/modules/java.base/jdk/internal/classfile/impl/DirectCodeBuilder.class", + "/modules/java.base/java/lang/classfile/CodeElement.class", + "/modules/java.base/java/lang/classfile/PseudoInstruction.class", + "/modules/java.base/java/lang/classfile/instruction/CharacterRange.class", + "/modules/java.base/java/lang/classfile/instruction/LocalVariable.class", + "/modules/java.base/java/lang/classfile/instruction/LocalVariableType.class", + "/modules/java.base/jdk/internal/classfile/impl/DirectCodeBuilder$DeferredLabel.class", + "/modules/java.base/java/lang/classfile/BufWriter.class", + "/modules/java.base/jdk/internal/classfile/impl/BufWriterImpl.class", + "/modules/java.base/java/lang/classfile/Label.class", + "/modules/java.base/java/lang/classfile/instruction/LabelTarget.class", + "/modules/java.base/jdk/internal/classfile/impl/LabelImpl.class", + "/modules/java.base/sun/invoke/util/VerifyType.class", + "/modules/java.base/java/lang/classfile/Opcode.class", + "/modules/java.base/java/lang/classfile/Opcode$Kind.class", + "/modules/java.base/java/lang/classfile/constantpool/MethodRefEntry.class", + "/modules/java.base/jdk/internal/classfile/impl/AbstractPoolEntry$MethodRefEntryImpl.class", + "/modules/java.base/sun/invoke/empty/Empty.class", + "/modules/java.base/jdk/internal/classfile/impl/BytecodeHelpers.class", + "/modules/java.base/jdk/internal/classfile/impl/UnboundAttribute$AdHocAttribute.class", + "/modules/java.base/jdk/internal/classfile/impl/AbstractAttributeMapper$CodeMapper.class", + "/modules/java.base/java/lang/classfile/FieldBuilder.class", + "/modules/java.base/jdk/internal/classfile/impl/TerminalFieldBuilder.class", + "/modules/java.base/jdk/internal/classfile/impl/DirectFieldBuilder.class", + "/modules/java.base/java/lang/classfile/CustomAttribute.class", + "/modules/java.base/jdk/internal/classfile/impl/AnnotationReader.class", + "/modules/java.base/java/util/ListIterator.class", + "/modules/java.base/java/util/ImmutableCollections$ListItr.class", + "/modules/java.base/jdk/internal/classfile/impl/StackMapGenerator.class", + "/modules/java.base/jdk/internal/classfile/impl/StackMapGenerator$Frame.class", + "/modules/java.base/jdk/internal/classfile/impl/StackMapGenerator$Type.class", + "/modules/java.base/jdk/internal/classfile/impl/RawBytecodeHelper.class", + "/modules/java.base/jdk/internal/classfile/impl/RawBytecodeHelper$CodeRange.class", + "/modules/java.base/jdk/internal/classfile/impl/ClassHierarchyImpl.class", + "/modules/java.base/java/lang/classfile/ClassHierarchyResolver.class", + "/modules/java.base/jdk/internal/classfile/impl/ClassHierarchyImpl$ClassLoadingClassHierarchyResolver.class", + "/modules/java.base/jdk/internal/classfile/impl/ClassHierarchyImpl$CachedClassHierarchyResolver.class", + "/modules/java.base/java/lang/classfile/ClassHierarchyResolver$ClassHierarchyInfo.class", + "/modules/java.base/jdk/internal/classfile/impl/ClassHierarchyImpl$ClassHierarchyInfoImpl.class", + "/modules/java.base/java/lang/classfile/ClassReader.class", + "/modules/java.base/jdk/internal/classfile/impl/ClassReaderImpl.class", + "/modules/java.base/jdk/internal/util/ModifiedUtf.class", + "/modules/java.base/java/lang/invoke/MethodHandles$Lookup$ClassDefiner.class", + "/modules/java.base/java/lang/IncompatibleClassChangeError.class", + "/modules/java.base/java/lang/NoSuchMethodError.class", + "/modules/java.base/java/lang/invoke/BootstrapMethodInvoker.class", + "/modules/java.base/java/lang/invoke/AbstractValidatingLambdaMetafactory.class", + "/modules/java.base/java/lang/invoke/InnerClassLambdaMetafactory.class", + "/modules/java.base/java/lang/invoke/MethodHandleInfo.class", + "/modules/java.base/java/lang/invoke/InfoFromMemberName.class", + "/modules/java.base/java/util/ImmutableCollections$Access.class", + "/modules/java.base/jdk/internal/access/JavaUtilCollectionAccess.class", + "/modules/java.base/java/lang/classfile/Interfaces.class", + "/modules/java.base/jdk/internal/classfile/impl/InterfacesImpl.class", + "/modules/java.base/java/lang/invoke/TypeConvertingMethodAdapter.class", + "/modules/java.base/java/lang/invoke/DirectMethodHandle$Constructor.class", + "/modules/java.base/jdk/internal/access/JavaLangInvokeAccess.class", + "/modules/java.base/java/lang/invoke/VarHandle$AccessMode.class", + "/modules/java.base/java/lang/invoke/VarHandle$AccessType.class", + "/modules/java.base/java/lang/invoke/Invokers$Holder.class", + "/modules/java.base/jdk/internal/module/ModuleInfo.class", + "/modules/java.base/java/io/DataInput.class", + "/modules/java.base/java/io/DataInputStream.class", + "/modules/java.base/jdk/internal/module/ModuleInfo$CountingDataInput.class", + "/modules/java.base/sun/nio/ch/NativeThread.class", + "/modules/java.base/jdk/internal/misc/Blocker.class", + "/modules/java.base/sun/nio/ch/Util.class", + "/modules/java.base/sun/nio/ch/Util$BufferCache.class", + "/modules/java.base/sun/nio/ch/IOStatus.class", + "/modules/java.base/jdk/internal/util/ByteArray.class", + "/modules/java.base/java/lang/invoke/VarHandles.class", + "/modules/java.base/java/lang/invoke/VarHandleByteArrayAsShorts$ByteArrayViewVarHandle.class", + "/modules/java.base/java/lang/invoke/VarHandleByteArrayAsShorts$ArrayHandle.class", + "/modules/java.base/java/lang/invoke/VarHandleGuards.class", + "/modules/java.base/java/lang/invoke/VarForm.class", + "/modules/java.base/java/lang/invoke/VarHandleByteArrayAsChars$ByteArrayViewVarHandle.class", + "/modules/java.base/java/lang/invoke/VarHandleByteArrayAsChars$ArrayHandle.class", + "/modules/java.base/java/lang/invoke/VarHandleByteArrayAsInts$ByteArrayViewVarHandle.class", + "/modules/java.base/java/lang/invoke/VarHandleByteArrayAsInts$ArrayHandle.class", + "/modules/java.base/java/lang/invoke/VarHandleByteArrayAsFloats$ByteArrayViewVarHandle.class", + "/modules/java.base/java/lang/invoke/VarHandleByteArrayAsFloats$ArrayHandle.class", + "/modules/java.base/java/lang/invoke/VarHandleByteArrayAsLongs$ByteArrayViewVarHandle.class", + "/modules/java.base/java/lang/invoke/VarHandleByteArrayAsLongs$ArrayHandle.class", + "/modules/java.base/java/lang/invoke/VarHandleByteArrayAsDoubles$ByteArrayViewVarHandle.class", + "/modules/java.base/java/lang/invoke/VarHandleByteArrayAsDoubles$ArrayHandle.class", + "/modules/java.base/java/lang/invoke/VarHandle$AccessDescriptor.class", + "/modules/java.base/jdk/internal/module/ModuleInfo$ConstantPool.class", + "/modules/java.base/jdk/internal/module/ModuleInfo$ConstantPool$Entry.class", + "/modules/java.base/jdk/internal/module/ModuleInfo$ConstantPool$IndexEntry.class", + "/modules/java.base/java/nio/charset/StandardCharsets.class", + "/modules/java.base/sun/nio/cs/US_ASCII.class", + "/modules/java.base/sun/nio/cs/ISO_8859_1.class", + "/modules/java.base/sun/nio/cs/UTF_16BE.class", + "/modules/java.base/sun/nio/cs/UTF_16LE.class", + "/modules/java.base/sun/nio/cs/UTF_16.class", + "/modules/java.base/sun/nio/cs/UTF_32BE.class", + "/modules/java.base/sun/nio/cs/UTF_32LE.class", + "/modules/java.base/sun/nio/cs/UTF_32.class", + "/modules/java.base/jdk/internal/module/ModuleInfo$ConstantPool$ValueEntry.class", + "/modules/java.base/java/lang/module/ModuleDescriptor$Builder.class", + "/modules/java.base/java/lang/module/ModuleDescriptor$Modifier.class", + "/modules/java.base/java/lang/reflect/AccessFlag.class", + "/modules/java.base/java/lang/reflect/AccessFlag$Location.class", + "/modules/java.base/java/lang/module/ModuleDescriptor$Requires$Modifier.class", + "/modules/java.base/java/lang/module/ModuleDescriptor$Requires.class", + "/modules/java.base/java/util/HashMap$KeySet.class", + "/modules/java.base/java/util/HashMap$KeyIterator.class", + "/modules/java.base/jdk/internal/module/Checks.class", + "/modules/java.base/java/util/ArrayList$Itr.class", + "/modules/java.base/java/lang/module/ModuleDescriptor$Provides.class", + "/modules/java.base/java/util/Collections$UnmodifiableCollection.class", + "/modules/java.base/java/util/Collections$UnmodifiableSet.class", + "/modules/java.base/java/util/HashMap$Values.class", + "/modules/java.base/java/util/HashMap$ValueIterator.class", + "/modules/java.base/java/util/ImmutableCollections$SetN$SetNIterator.class", + "/modules/java.base/jdk/internal/module/ModuleInfo$Attributes.class", + "/modules/java.base/jdk/internal/module/ModuleReferences.class", + "/modules/java.base/java/lang/module/ModuleReader.class", + "/modules/java.base/sun/nio/fs/UnixUriUtils.class", + "/modules/java.base/java/net/URI$Parser.class", + "/modules/java.base/java/lang/module/ModuleReference.class", + "/modules/java.base/jdk/internal/module/ModuleReferenceImpl.class", + "/modules/java.base/java/lang/module/ModuleDescriptor$Exports.class", + "/modules/java.base/java/lang/module/ModuleDescriptor$Opens.class", + "/modules/java.base/sun/nio/fs/UnixException.class", + "/modules/java.base/java/io/IOException.class", + "/modules/java.base/jdk/internal/loader/ArchivedClassLoaders.class", + "/modules/java.base/jdk/internal/loader/ClassLoaders$BootClassLoader.class", + "/modules/java.base/java/lang/ClassLoader$ParallelLoaders.class", + "/modules/java.base/java/util/WeakHashMap.class", + "/modules/java.base/java/util/WeakHashMap$Entry.class", + "/modules/java.base/java/util/WeakHashMap$KeySet.class", + "/modules/java.base/java/security/Principal.class", + "/modules/java.base/jdk/internal/loader/URLClassPath.class", + "/modules/java.base/java/net/URLStreamHandlerFactory.class", + "/modules/java.base/java/net/URL$DefaultFactory.class", + "/modules/java.base/jdk/internal/access/JavaNetURLAccess.class", + "/modules/java.base/sun/net/www/ParseUtil.class", + "/modules/java.base/java/net/URLStreamHandler.class", + "/modules/java.base/sun/net/www/protocol/file/Handler.class", + "/modules/java.base/sun/net/util/IPAddressUtil.class", + "/modules/java.base/sun/net/util/IPAddressUtil$MASKS.class", + "/modules/java.base/sun/net/www/protocol/jar/Handler.class", + "/modules/java.base/jdk/internal/module/ServicesCatalog.class", + "/modules/java.base/jdk/internal/loader/AbstractClassLoaderValue.class", + "/modules/java.base/jdk/internal/loader/ClassLoaderValue.class", + "/modules/java.base/jdk/internal/loader/BuiltinClassLoader$LoadedModule.class", + "/modules/java.base/jdk/internal/module/DefaultRoots.class", + "/modules/java.base/java/util/Spliterator.class", + "/modules/java.base/java/util/HashMap$HashMapSpliterator.class", + "/modules/java.base/java/util/HashMap$ValueSpliterator.class", + "/modules/java.base/java/util/stream/StreamSupport.class", + "/modules/java.base/java/util/stream/BaseStream.class", + "/modules/java.base/java/util/stream/Stream.class", + "/modules/java.base/java/util/stream/PipelineHelper.class", + "/modules/java.base/java/util/stream/AbstractPipeline.class", + "/modules/java.base/java/util/stream/ReferencePipeline.class", + "/modules/java.base/java/util/stream/ReferencePipeline$Head.class", + "/modules/java.base/java/util/stream/StreamOpFlag.class", + "/modules/java.base/java/util/stream/StreamOpFlag$Type.class", + "/modules/java.base/java/util/stream/StreamOpFlag$MaskBuilder.class", + "/modules/java.base/java/util/EnumMap.class", + "/modules/java.base/java/lang/Class$ReflectionData.class", + "/modules/java.base/java/lang/Class$Atomic.class", + "/modules/java.base/java/lang/PublicMethods$MethodList.class", + "/modules/java.base/java/lang/PublicMethods$Key.class", + "/modules/java.base/sun/reflect/annotation/AnnotationParser.class", + "/modules/java.base/jdk/internal/reflect/MethodHandleAccessorFactory.class", + "/modules/java.base/jdk/internal/reflect/MethodHandleAccessorFactory$LazyStaticHolder.class", + "/modules/java.base/java/lang/invoke/BoundMethodHandle.class", + "/modules/java.base/java/lang/invoke/ClassSpecializer.class", + "/modules/java.base/java/lang/invoke/BoundMethodHandle$Specializer.class", + "/modules/java.base/jdk/internal/vm/annotation/Stable.class", + "/modules/java.base/java/lang/invoke/ClassSpecializer$SpeciesData.class", + "/modules/java.base/java/lang/invoke/BoundMethodHandle$SpeciesData.class", + "/modules/java.base/java/lang/invoke/ClassSpecializer$Factory.class", + "/modules/java.base/java/lang/invoke/BoundMethodHandle$Specializer$Factory.class", + "/modules/java.base/java/lang/invoke/SimpleMethodHandle.class", + "/modules/java.base/java/lang/NoSuchFieldException.class", + "/modules/java.base/java/lang/invoke/BoundMethodHandle$Species_L.class", + "/modules/java.base/java/lang/invoke/DirectMethodHandle$Accessor.class", + "/modules/java.base/java/lang/invoke/DelegatingMethodHandle.class", + "/modules/java.base/java/lang/invoke/DelegatingMethodHandle$Holder.class", + "/modules/java.base/java/lang/invoke/LambdaFormEditor.class", + "/modules/java.base/java/lang/invoke/LambdaFormEditor$TransformKey.class", + "/modules/java.base/java/lang/invoke/LambdaFormBuffer.class", + "/modules/java.base/java/lang/invoke/LambdaFormEditor$Transform.class", + "/modules/java.base/jdk/internal/reflect/DirectMethodHandleAccessor.class", + "/modules/java.base/java/util/stream/Collectors.class", + "/modules/java.base/java/util/stream/Collector$Characteristics.class", + "/modules/java.base/java/util/EnumSet.class", + "/modules/java.base/java/util/RegularEnumSet.class", + "/modules/java.base/java/util/stream/Collector.class", + "/modules/java.base/java/util/stream/Collectors$CollectorImpl.class", + "/modules/java.base/java/util/function/BiConsumer.class", + "/modules/java.base/java/lang/invoke/DirectMethodHandle$Interface.class", + "/modules/java.base/java/lang/classfile/constantpool/InterfaceMethodRefEntry.class", + "/modules/java.base/jdk/internal/classfile/impl/AbstractPoolEntry$InterfaceMethodRefEntryImpl.class", + "/modules/java.base/java/util/function/BinaryOperator.class", + "/modules/java.base/java/util/stream/ReduceOps.class", + "/modules/java.base/java/util/stream/TerminalOp.class", + "/modules/java.base/java/util/stream/ReduceOps$ReduceOp.class", + "/modules/java.base/java/util/stream/StreamShape.class", + "/modules/java.base/java/util/stream/Sink.class", + "/modules/java.base/java/util/stream/TerminalSink.class", + "/modules/java.base/java/util/stream/ReduceOps$AccumulatingSink.class", + "/modules/java.base/java/util/stream/ReduceOps$Box.class", + "/modules/java.base/java/util/HashMap$KeySpliterator.class", + "/modules/java.base/java/util/function/Predicate.class", + "/modules/java.base/java/util/stream/ReferencePipeline$StatelessOp.class", + "/modules/java.base/java/util/stream/Sink$ChainedReference.class", + "/modules/java.base/jdk/internal/module/ModuleResolution.class", + "/modules/java.base/java/util/stream/FindOps.class", + "/modules/java.base/java/util/stream/FindOps$FindSink.class", + "/modules/java.base/java/util/stream/FindOps$FindSink$OfRef.class", + "/modules/java.base/java/util/stream/FindOps$FindOp.class", + "/modules/java.base/java/util/Spliterators.class", + "/modules/java.base/java/util/Spliterators$IteratorSpliterator.class", + "/modules/java.base/java/lang/module/Configuration.class", + "/modules/java.base/java/lang/module/Resolver.class", + "/modules/java.base/java/lang/ModuleLayer.class", + "/modules/java.base/java/util/SequencedSet.class", + "/modules/java.base/java/util/LinkedHashSet.class", + "/modules/java.base/java/util/SequencedMap.class", + "/modules/java.base/java/util/LinkedHashMap.class", + "/modules/java.base/java/lang/module/ResolvedModule.class", + "/modules/java.base/jdk/internal/module/ModuleLoaderMap$Mapper.class", + "/modules/java.base/jdk/internal/loader/AbstractClassLoaderValue$Memoizer.class", + "/modules/java.base/jdk/internal/module/ServicesCatalog$ServiceProvider.class", + "/modules/java.base/java/util/concurrent/CopyOnWriteArrayList.class", + "/modules/java.base/java/lang/ModuleLayer$Controller.class", + "/modules/java.base/jdk/internal/module/ModuleBootstrap$SafeModuleFinder.class", + "/modules/java.base/jdk/internal/vm/ContinuationSupport.class", + "/modules/java.base/jdk/internal/vm/Continuation$Pinned.class", + "/modules/java.base/sun/launcher/LauncherHelper.class", + "/modules/java.base/sun/net/util/URLUtil.class", + "/modules/java.base/jdk/internal/loader/URLClassPath$Loader.class", + "/modules/java.base/jdk/internal/loader/URLClassPath$FileLoader.class", + "/modules/java.base/jdk/internal/loader/Resource.class", + "/modules/java.base/java/io/FileCleanable.class", + "/modules/java.base/java/security/SecureClassLoader$CodeSourceKey.class", + "/modules/java.base/java/security/PermissionCollection.class", + "/modules/java.base/java/security/Permissions.class", + "/modules/java.base/java/lang/NamedPackage.class", + "/modules/java.base/jdk/internal/misc/MethodFinder.class", + "/modules/java.base/java/lang/Readable.class", + "/modules/java.base/java/nio/CharBuffer.class", + "/modules/java.base/java/nio/HeapCharBuffer.class", + "/modules/java.base/java/nio/charset/CoderResult.class", + "/modules/java.base/java/util/IdentityHashMap$IdentityHashMapIterator.class", + "/modules/java.base/java/util/IdentityHashMap$KeyIterator.class", + "/modules/java.base/java/lang/Shutdown.class", + "/modules/java.base/java/lang/Shutdown$Lock.class"); + + private static final Pattern SPLIT_MODULE_AND_PATH = Pattern.compile("/modules/([^/]+)/(.*)"); + + private static final Map<String, List<String>> MODULE_TO_PATHS = INIT_CLASSES.stream() + .map(name -> { + Matcher m = SPLIT_MODULE_AND_PATH.matcher(name); + if (!m.matches()) { + throw new IllegalArgumentException("Bad resource name: " + name); + } + return m.toMatchResult(); + }) + .collect(groupingBy(m -> m.group(1), mapping(m -> m.group(2), toList()))); + } }