@@ -0,0 +1,2107 @@
+package de.skuzzle.semantic;%0A%0Aimport static org.junit.jupiter.api.Assertions.assertEquals;%0A%0Aimport java.io.IOException;%0Aimport java.io.InputStream;%0Aimport java.io.UncheckedIOException;%0Aimport java.nio.file.Files;%0Aimport java.nio.file.Path;%0Aimport java.nio.file.Paths;%0Aimport java.nio.file.StandardOpenOption;%0Aimport java.util.stream.Stream;%0A%0Aimport org.junit.jupiter.api.Test;%0A%0Apublic class Java6CompatibilityTest %7B%0A%0A    @Test%0A    void testAllClassFilesAreCompatibleWithJava6() throws Exception %7B%0A        final int java6 = 0x32;%0A        allClassFiles()%0A                .filter(cf -%3E !isModuleInfo(cf))%0A                .forEach(cf -%3E testClassFileForJavaVersion(cf, java6));%0A    %7D%0A%0A    @Test%0A    void testModuleInfoIsCompatibleWithJava9() throws Exception %7B%0A        final int java9 = 0x35;%0A        allClassFiles()%0A                .filter(this::isModuleInfo)%0A                .forEach(mi -%3E testClassFileForJavaVersion(mi, java9));%0A    %7D%0A%0A    private boolean isModuleInfo(Path path) %7B%0A        return path.getFileName().toString().equals(%22module-info.class%22);%0A    %7D%0A%0A    private Stream%3CPath%3E allClassFiles() throws IOException %7B%0A        final Path targetFolder = Paths.get(%22./target/classes%22);%0A        return Files.find(targetFolder, Integer.MAX_VALUE,%0A                (path, bfa) -%3E path.getFileName().toString().endsWith(%22.class%22));%0A    %7D%0A%0A    private void testClassFileForJavaVersion(Path path, int expectedClassFileVersion) %7B%0A        final int%5B%5D expectedSequence = %7B 0xCA, 0xFE, 0xBA, 0xBE, 0, 0, 0, expectedClassFileVersion %7D;%0A%0A        try (InputStream in = Files.newInputStream(path, StandardOpenOption.READ)) %7B%0A            for (int i = 0; i %3C expectedSequence.length; ++i) %7B%0A                final int expected = expectedSequence%5Bi%5D;%0A                final int actual = in.read();%0A                assertEquals(expected, actual,%0A                        String.format(%22Class file %25s: Expected byte %25d at index %25d but found %25d%22, path, expected, i,%0A                                actual));%0A            %7D%0A        %7D catch (final IOException e) %7B%0A            throw new UncheckedIOException(e);%0A        %7D%0A    %7D%0A%7D%0A

Add test to ensure java6 compatibility