Extract "validation" tests into separate modules (#711)

diff --git a/.appveyor.yml b/.appveyor.yml
index 7ab0b10..d8efac6 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -11,7 +11,7 @@
 
 build_script:
   # Maven 3.3.9 requires Java >= 7, but generation of Javadocs requires Java <= 6 (https://github.com/jacoco/jacoco/issues/110)
-  - mvn -V -B -e verify -Djdk.version=1.6 --toolchains=.travis\appveyor-toolchains.xml
+  - mvn -V -B -e verify -Djdk.version=6 --toolchains=.travis\appveyor-toolchains.xml
 
 artifacts:
   - path: jacoco\target\*.zip
diff --git a/.travis.sh b/.travis.sh
index d01ac83..ffeff4c 100755
--- a/.travis.sh
+++ b/.travis.sh
@@ -43,20 +43,19 @@
   fi
 }
 
+# Preinstalled JDKs:
+ls -lA /usr/lib/jvm/
+
+
 case "$JDK" in
 5)
   install_jdk $JDK5_URL false
   ;;
-6 | 7)
-  ;;
-8)
+6 | 7 | 8)
   jdk_switcher /usr/lib/jvm/java-8-oracle
   ;;
-8-ea)
-  install_jdk $JDK8_EA_URL
-  ;;
 9)
-  install_jdk $JDK9_URL
+  jdk_switcher /usr/lib/jvm/java-9-oracle
   ;;
 10)
   install_jdk $JDK10_URL
@@ -69,7 +68,6 @@
 export MAVEN_SKIP_RC=true
 
 # Build:
-# TODO(Godin): see https://github.com/jacoco/jacoco/issues/300 about "bytecode.version"
 case "$JDK" in
 5)
   if [[ ${TRAVIS_PULL_REQUEST} == 'false' && ${TRAVIS_BRANCH} == 'master' ]]
@@ -78,25 +76,14 @@
     git fetch --unshallow
 
     # goal "deploy:deploy" used directly instead of "deploy" phase to avoid pollution of Maven repository by "install" phase
-    mvn -V -B -e -f org.jacoco.build verify sonar:sonar deploy:deploy -DdeployAtEnd -Djdk.version=1.5 --toolchains=./.travis/toolchains.xml --settings=./.travis/settings.xml -Dsonar.host.url=${SONARQUBE_URL} -Dsonar.login=${SONARQUBE_TOKEN}
+    mvn -V -B -e -f org.jacoco.build verify sonar:sonar deploy:deploy -DdeployAtEnd -Djdk.version=5 --toolchains=./.travis/toolchains.xml --settings=./.travis/settings.xml -Dsonar.host.url=${SONARQUBE_URL} -Dsonar.login=${SONARQUBE_TOKEN}
     python ./.travis/trigger-site-deployment.py
   else
-    mvn -V -B -e verify -Djdk.version=1.5 --toolchains=./.travis/toolchains.xml
+    mvn -V -B -e verify -Djdk.version=5 --toolchains=./.travis/toolchains.xml
   fi
   ;;
-6)
-  mvn -V -B -e verify -Djdk.version=1.6 -Dbytecode.version=1.6 --toolchains=./.travis/travis-toolchains.xml
-  ;;
-7)
-  mvn -V -B -e verify -Djdk.version=1.7 -Dbytecode.version=1.7 --toolchains=./.travis/travis-toolchains.xml
-  ;;
-8 | 8-ea)
-  mvn -V -B -e verify -Dbytecode.version=1.8 -Decj=${ECJ:-}
-  ;;
-9)
-  export MAVEN_OPTS="-Djavax.net.ssl.trustStore=/etc/ssl/certs/java/cacerts"
-  mvn -V -B -e verify -Dbytecode.version=1.9 \
-    -Dinvoker.mavenOpts="-Djavax.net.ssl.trustStore=/etc/ssl/certs/java/cacerts"
+6 | 7 | 8 | 9)
+  mvn -V -B -e verify -Djdk.version=${JDK} -Dbytecode.version=${JDK} -Decj=${ECJ:-} --toolchains=./.travis/travis-toolchains.xml
   ;;
 10)
   mvn -V -B -e verify -Dbytecode.version=10
diff --git a/.travis/appveyor-toolchains.xml b/.travis/appveyor-toolchains.xml
index 6e91e4b..79fae7d 100644
--- a/.travis/appveyor-toolchains.xml
+++ b/.travis/appveyor-toolchains.xml
@@ -1,15 +1,17 @@
 <?xml version="1.0" encoding="UTF8"?>
 <toolchains xmlns="http://maven.apache.org/TOOLCHAINS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/TOOLCHAINS/1.1.0 http://maven.apache.org/xsd/toolchains-1.1.0.xsd">
+
   <toolchain>
     <type>jdk</type>
     <provides>
       <id>java16</id>
-      <version>1.6</version>
+      <version>6</version>
       <vendor>oracle</vendor>
     </provides>
     <configuration>
       <jdkHome>C:\Program Files\Java\jdk1.6.0</jdkHome>
     </configuration>
   </toolchain>
+
 </toolchains>
diff --git a/.travis/toolchains.xml b/.travis/toolchains.xml
index 59383f3..dcf1b8c 100644
--- a/.travis/toolchains.xml
+++ b/.travis/toolchains.xml
@@ -1,15 +1,17 @@
 <?xml version="1.0" encoding="UTF8"?>
 <toolchains xmlns="http://maven.apache.org/TOOLCHAINS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/TOOLCHAINS/1.1.0 http://maven.apache.org/xsd/toolchains-1.1.0.xsd">
+
   <toolchain>
     <type>jdk</type>
     <provides>
       <id>java15</id>
-      <version>1.5</version>
+      <version>5</version>
       <vendor>sun</vendor>
     </provides>
     <configuration>
       <jdkHome>/tmp/jdk/5</jdkHome>
     </configuration>
   </toolchain>
+
 </toolchains>
diff --git a/.travis/travis-toolchains.xml b/.travis/travis-toolchains.xml
index 7a50a3c..8079e74 100644
--- a/.travis/travis-toolchains.xml
+++ b/.travis/travis-toolchains.xml
@@ -1,22 +1,45 @@
 <?xml version="1.0" encoding="UTF8"?>
 <toolchains xmlns="http://maven.apache.org/TOOLCHAINS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/TOOLCHAINS/1.1.0 http://maven.apache.org/xsd/toolchains-1.1.0.xsd">
+
   <toolchain>
     <type>jdk</type>
     <provides>
-      <version>1.6</version>
+      <version>6</version>
     </provides>
     <configuration>
       <jdkHome>/usr/lib/jvm/java-6-openjdk-amd64</jdkHome>
     </configuration>
   </toolchain>
+
   <toolchain>
     <type>jdk</type>
     <provides>
-      <version>1.7</version>
+      <version>7</version>
     </provides>
     <configuration>
       <jdkHome>/usr/lib/jvm/java-7-openjdk-amd64</jdkHome>
     </configuration>
   </toolchain>
+
+  <toolchain>
+    <type>jdk</type>
+    <provides>
+      <version>8</version>
+    </provides>
+    <configuration>
+      <jdkHome>/usr/lib/jvm/java-8-oracle</jdkHome>
+    </configuration>
+  </toolchain>
+
+  <toolchain>
+    <type>jdk</type>
+    <provides>
+      <version>9</version>
+    </provides>
+    <configuration>
+      <jdkHome>/usr/lib/jvm/java-9-oracle</jdkHome>
+    </configuration>
+  </toolchain>
+
 </toolchains>
diff --git a/jacoco-maven-plugin.test/it/it-java9/pom.xml b/jacoco-maven-plugin.test/it/it-java9/pom.xml
index a0511f8..7750356 100644
--- a/jacoco-maven-plugin.test/it/it-java9/pom.xml
+++ b/jacoco-maven-plugin.test/it/it-java9/pom.xml
@@ -28,7 +28,8 @@
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-compiler-plugin</artifactId>
         <configuration>
-          <target>1.9</target>
+          <source>9</source>
+          <target>9</target>
         </configuration>
       </plugin>
       <plugin>
diff --git a/org.jacoco.build/pom.xml b/org.jacoco.build/pom.xml
index 16e6a5c..02dc806 100644
--- a/org.jacoco.build/pom.xml
+++ b/org.jacoco.build/pom.xml
@@ -130,8 +130,9 @@
     <jacoco.home.url>http://www.jacoco.org/jacoco</jacoco.home.url>
     <copyright.years>${project.inceptionYear}, 2018</copyright.years>
 
-    <maven.compiler.source>1.5</maven.compiler.source>
-    <maven.compiler.target>1.5</maven.compiler.target>
+    <bytecode.version>1.5</bytecode.version>
+    <maven.compiler.source>${bytecode.version}</maven.compiler.source>
+    <maven.compiler.target>${bytecode.version}</maven.compiler.target>
 
     <jvm.args></jvm.args>
     <argLine>${jvm.args}</argLine>
@@ -674,7 +675,18 @@
   </build>
 
   <profiles>
-    <!-- This profile is used to launch tests with different JDK versions. -->
+    <profile>
+      <id>maven-jdk9</id>
+      <activation>
+        <jdk>[9,)</jdk>
+      </activation>
+      <properties>
+        <!-- http://openjdk.java.net/jeps/182 -->
+        <bytecode.version>6</bytecode.version>
+      </properties>
+    </profile>
+
+    <!-- This profile enables use of JDK from Maven Toolchains -->
     <profile>
       <id>integration-tests</id>
       <activation>
@@ -708,21 +720,17 @@
       </build>
     </profile>
 
-    <!-- This profile is used to launch tests with compilation into specific bytecode version. -->
+    <!--
+    Following profiles enable compilation into bytecode version 9
+    when requested "bytecode.version" greater than 9,
+    because this is maximum that can be processed by
+    maven-shade-plugin (https://issues.apache.org/jira/browse/MSHADE-289)
+    and maven-plugin-plugin (https://issues.apache.org/jira/browse/MPLUGIN-335),
+    This is overridden for tests.
+    -->
+
     <profile>
-      <id>bytecode</id>
-      <activation>
-        <property>
-          <name>bytecode.version</name>
-        </property>
-      </activation>
-      <properties>
-        <maven.compiler.source>${bytecode.version}</maven.compiler.source>
-        <maven.compiler.target>${bytecode.version}</maven.compiler.target>
-      </properties>
-    </profile>
-    <profile>
-      <id>java10-validation</id>
+      <id>java10-bytecode</id>
       <activation>
         <property>
           <name>bytecode.version</name>
@@ -730,19 +738,40 @@
         </property>
       </activation>
       <properties>
-        <!--
-        Compile into bytecode version 9 by default,
-        because bytecode version 10 can't be processed by
-        maven-shade-plugin (https://issues.apache.org/jira/browse/MSHADE-289)
-        and maven-plugin-plugin (https://issues.apache.org/jira/browse/MPLUGIN-335),
-        this is overridden for tests
-        -->
-        <maven.compiler.source>1.9</maven.compiler.source>
-        <maven.compiler.target>1.9</maven.compiler.target>
+        <maven.compiler.source>9</maven.compiler.source>
+        <maven.compiler.target>9</maven.compiler.target>
       </properties>
     </profile>
 
-    <!-- This profile is used for compilation with ECJ. -->
+    <profile>
+      <id>java11-bytecode</id>
+      <activation>
+        <property>
+          <name>bytecode.version</name>
+          <value>11</value>
+        </property>
+      </activation>
+      <properties>
+        <maven.compiler.source>9</maven.compiler.source>
+        <maven.compiler.target>9</maven.compiler.target>
+      </properties>
+    </profile>
+
+    <profile>
+      <id>java12-bytecode</id>
+      <activation>
+        <property>
+          <name>bytecode.version</name>
+          <value>12</value>
+        </property>
+      </activation>
+      <properties>
+        <maven.compiler.source>9</maven.compiler.source>
+        <maven.compiler.target>9</maven.compiler.target>
+      </properties>
+    </profile>
+
+    <!-- This profile enables use of ECJ -->
     <profile>
       <id>ecj</id>
       <activation>
@@ -758,6 +787,8 @@
             <version>3.6.0</version>
             <configuration>
               <compilerId>eclipse</compilerId>
+              <source>1.8</source>
+              <target>1.8</target>
             </configuration>
             <dependencies>
               <dependency>
@@ -776,12 +807,16 @@
       </build>
     </profile>
 
+    <!--
+    Profiles for different JDK versions:
+    -->
+
     <profile>
-      <id>jdk16</id>
+      <id>jdk6</id>
       <activation>
         <property>
           <name>jdk.version</name>
-          <value>1.6</value>
+          <value>6</value>
         </property>
       </activation>
       <properties>
@@ -790,11 +825,11 @@
     </profile>
 
     <profile>
-      <id>jdk17</id>
+      <id>jdk7</id>
       <activation>
         <property>
           <name>jdk.version</name>
-          <value>1.7</value>
+          <value>7</value>
         </property>
       </activation>
       <properties>
@@ -803,11 +838,11 @@
     </profile>
 
     <profile>
-      <id>jdk18</id>
+      <id>jdk8</id>
       <activation>
         <property>
           <name>jdk.version</name>
-          <value>1.8</value>
+          <value>8</value>
         </property>
       </activation>
       <properties>
@@ -820,15 +855,55 @@
       <activation>
         <property>
           <name>jdk.version</name>
-          <value>1.9</value>
+          <value>9</value>
         </property>
       </activation>
       <properties>
-        <jvm.args>-XX:-FailOverToOldVerifier -Xverify:all</jvm.args>
+        <bytecode.version>6</bytecode.version>
       </properties>
     </profile>
 
     <profile>
+      <id>jdk10</id>
+      <activation>
+        <property>
+          <name>jdk.version</name>
+          <value>10</value>
+        </property>
+      </activation>
+      <properties>
+        <bytecode.version>6</bytecode.version>
+      </properties>
+    </profile>
+
+    <profile>
+      <id>jdk11</id>
+      <activation>
+        <property>
+          <name>jdk.version</name>
+          <value>11</value>
+        </property>
+      </activation>
+      <properties>
+        <bytecode.version>6</bytecode.version>
+      </properties>
+    </profile>
+
+    <profile>
+      <id>jdk12</id>
+      <activation>
+        <property>
+          <name>jdk.version</name>
+          <value>12</value>
+        </property>
+      </activation>
+      <properties>
+        <bytecode.version>6</bytecode.version>
+      </properties>
+    </profile>
+
+    <!-- This profile enables generation of JARs with sources and javadocs -->
+    <profile>
       <id>sources</id>
       <activation>
         <file>
diff --git a/org.jacoco.core.test.validation.java5/.classpath b/org.jacoco.core.test.validation.java5/.classpath
new file mode 100644
index 0000000..ebe550b
--- /dev/null
+++ b/org.jacoco.core.test.validation.java5/.classpath
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/classes" path="src">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.jacoco.core.test.validation.java5/.project b/org.jacoco.core.test.validation.java5/.project
new file mode 100644
index 0000000..cfbae43
--- /dev/null
+++ b/org.jacoco.core.test.validation.java5/.project
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.jacoco.core.test.validation.java5</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+	<linkedResources>
+		<link>
+			<name>.settings</name>
+			<type>2</type>
+			<locationURI>PARENT-1-PROJECT_LOC/org.jacoco.core.test/.settings</locationURI>
+		</link>
+	</linkedResources>
+</projectDescription>
diff --git a/org.jacoco.core.test.validation.java5/pom.xml b/org.jacoco.core.test.validation.java5/pom.xml
new file mode 100644
index 0000000..241dbc3
--- /dev/null
+++ b/org.jacoco.core.test.validation.java5/pom.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright (c) 2009, 2018 Mountainminds GmbH & Co. KG and Contributors
+   All rights reserved. This program and the accompanying materials
+   are made available under the terms of the Eclipse Public License v1.0
+   which accompanies this distribution, and is available at
+   http://www.eclipse.org/legal/epl-v10.html
+
+   Contributors:
+      Evgeny Mandrikov - initial API and implementation
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.jacoco</groupId>
+    <artifactId>org.jacoco.core.test.validation</artifactId>
+    <version>0.8.2-SNAPSHOT</version>
+    <relativePath>../org.jacoco.core.test.validation</relativePath>
+  </parent>
+
+  <artifactId>org.jacoco.core.test.validation.java5</artifactId>
+
+  <name>JaCoCo :: Test :: Core :: Validation Java 5</name>
+
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>org.jacoco.core.test</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/filter/ConstructorTest.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/filter/ConstructorTest.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/filter/ConstructorTest.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/filter/ConstructorTest.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/filter/EnumConstructorTest.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/filter/EnumConstructorTest.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/filter/EnumConstructorTest.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/filter/EnumConstructorTest.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/filter/EnumSwitchTest.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/filter/EnumSwitchTest.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/filter/EnumSwitchTest.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/filter/EnumSwitchTest.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/filter/FinallyTest.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/filter/FinallyTest.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/filter/FinallyTest.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/filter/FinallyTest.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/filter/SynchronizedTest.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/filter/SynchronizedTest.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/filter/SynchronizedTest.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/filter/SynchronizedTest.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/filter/SyntheticTest.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/filter/SyntheticTest.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/filter/SyntheticTest.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/filter/SyntheticTest.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/filter/targets/Constructor.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/filter/targets/Constructor.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/filter/targets/Constructor.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/filter/targets/Constructor.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/filter/targets/EnumConstructor.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/filter/targets/EnumConstructor.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/filter/targets/EnumConstructor.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/filter/targets/EnumConstructor.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/filter/targets/EnumSwitch.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/filter/targets/EnumSwitch.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/filter/targets/EnumSwitch.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/filter/targets/EnumSwitch.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/filter/targets/Finally.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/filter/targets/Finally.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/filter/targets/Finally.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/filter/targets/Finally.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/filter/targets/Synchronized.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/filter/targets/Synchronized.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/filter/targets/Synchronized.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/filter/targets/Synchronized.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/filter/targets/Synthetic.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/filter/targets/Synthetic.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/filter/targets/Synthetic.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/filter/targets/Synthetic.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/AnnotationInitializerTest.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/AnnotationInitializerTest.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/AnnotationInitializerTest.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/AnnotationInitializerTest.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/BadCycleClassTest.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/BadCycleClassTest.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/BadCycleClassTest.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/BadCycleClassTest.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/BooleanExpressionsTest.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/BooleanExpressionsTest.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/BooleanExpressionsTest.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/BooleanExpressionsTest.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/ClassFileVersionsTest.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/ClassFileVersionsTest.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/ClassFileVersionsTest.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/ClassFileVersionsTest.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/ClassInitializerTest.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/ClassInitializerTest.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/ClassInitializerTest.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/ClassInitializerTest.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/ControlStructuresTest.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/ControlStructuresTest.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/ControlStructuresTest.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/ControlStructuresTest.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/CyclomaticComplexityTest.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/CyclomaticComplexityTest.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/CyclomaticComplexityTest.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/CyclomaticComplexityTest.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/EnumImplicitMethodsTest.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/EnumImplicitMethodsTest.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/EnumImplicitMethodsTest.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/EnumImplicitMethodsTest.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/ExceptionsTest.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/ExceptionsTest.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/ExceptionsTest.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/ExceptionsTest.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/ExplicitInitialFrameTest.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/ExplicitInitialFrameTest.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/ExplicitInitialFrameTest.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/ExplicitInitialFrameTest.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/FieldInitializationInTwoConstructorsTest.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/FieldInitializationInTwoConstructorsTest.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/FieldInitializationInTwoConstructorsTest.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/FieldInitializationInTwoConstructorsTest.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/FramesTest.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/FramesTest.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/FramesTest.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/FramesTest.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/ImplicitDefaultConstructorTest.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/ImplicitDefaultConstructorTest.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/ImplicitDefaultConstructorTest.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/ImplicitDefaultConstructorTest.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/ImplicitFieldInitializationTest.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/ImplicitFieldInitializationTest.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/ImplicitFieldInitializationTest.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/ImplicitFieldInitializationTest.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/InterfaceClassInitializerTest.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/InterfaceClassInitializerTest.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/InterfaceClassInitializerTest.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/InterfaceClassInitializerTest.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/PrivateEmptyDefaultConstructorTest.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/PrivateEmptyDefaultConstructorTest.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/PrivateEmptyDefaultConstructorTest.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/PrivateEmptyDefaultConstructorTest.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/ProbesBeforeSuperConstructorTest.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/ProbesBeforeSuperConstructorTest.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/ProbesBeforeSuperConstructorTest.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/ProbesBeforeSuperConstructorTest.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/ResizeInstructionsTest.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/ResizeInstructionsTest.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/ResizeInstructionsTest.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/ResizeInstructionsTest.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/StructuredLockingTest.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/StructuredLockingTest.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/StructuredLockingTest.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/StructuredLockingTest.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/AnnotationInitializer.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/targets/AnnotationInitializer.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/AnnotationInitializer.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/targets/AnnotationInitializer.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/BadCycleClass.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/targets/BadCycleClass.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/BadCycleClass.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/targets/BadCycleClass.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/EnumImplicitMethods.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/targets/EnumImplicitMethods.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/EnumImplicitMethods.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/targets/EnumImplicitMethods.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target01.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/targets/Target01.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target01.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/targets/Target01.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target02.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/targets/Target02.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target02.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/targets/Target02.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target03.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/targets/Target03.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target03.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/targets/Target03.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target04.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/targets/Target04.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target04.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/targets/Target04.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target05.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/targets/Target05.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target05.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/targets/Target05.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target06.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/targets/Target06.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target06.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/targets/Target06.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target07.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/targets/Target07.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target07.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/targets/Target07.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target08.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/targets/Target08.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target08.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/targets/Target08.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target09.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/targets/Target09.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target09.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/targets/Target09.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target10.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/targets/Target10.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target10.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/targets/Target10.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target11.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/targets/Target11.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target11.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/targets/Target11.java
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target12.java b/org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/targets/Target12.java
similarity index 100%
rename from org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target12.java
rename to org.jacoco.core.test.validation.java5/src/org/jacoco/core/test/validation/targets/Target12.java
diff --git a/org.jacoco.core.test.validation.java7/.classpath b/org.jacoco.core.test.validation.java7/.classpath
new file mode 100644
index 0000000..c60c5da
--- /dev/null
+++ b/org.jacoco.core.test.validation.java7/.classpath
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/classes" path="src">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.jacoco.core.test.validation.java7/.project b/org.jacoco.core.test.validation.java7/.project
new file mode 100644
index 0000000..5ce971f
--- /dev/null
+++ b/org.jacoco.core.test.validation.java7/.project
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.jacoco.core.test.validation.java7</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+	<linkedResources>
+		<link>
+			<name>.settings</name>
+			<type>2</type>
+			<locationURI>PARENT-1-PROJECT_LOC/org.jacoco.core.test/.settings</locationURI>
+		</link>
+	</linkedResources>
+</projectDescription>
diff --git a/org.jacoco.core.test.validation.java7/pom.xml b/org.jacoco.core.test.validation.java7/pom.xml
new file mode 100644
index 0000000..d213654
--- /dev/null
+++ b/org.jacoco.core.test.validation.java7/pom.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright (c) 2009, 2018 Mountainminds GmbH & Co. KG and Contributors
+   All rights reserved. This program and the accompanying materials
+   are made available under the terms of the Eclipse Public License v1.0
+   which accompanies this distribution, and is available at
+   http://www.eclipse.org/legal/epl-v10.html
+
+   Contributors:
+      Evgeny Mandrikov - initial API and implementation
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.jacoco</groupId>
+    <artifactId>org.jacoco.core.test.validation</artifactId>
+    <version>0.8.2-SNAPSHOT</version>
+    <relativePath>../org.jacoco.core.test.validation</relativePath>
+  </parent>
+
+  <artifactId>org.jacoco.core.test.validation.java7</artifactId>
+
+  <name>JaCoCo :: Test :: Core :: Validation Java 7</name>
+
+  <properties>
+    <bytecode.version>7</bytecode.version>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>org.jacoco.core.test</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/org.jacoco.core.test/src-java7/org/jacoco/core/test/filter/StringSwitchTest.java b/org.jacoco.core.test.validation.java7/src/org/jacoco/core/test/filter/StringSwitchTest.java
similarity index 97%
rename from org.jacoco.core.test/src-java7/org/jacoco/core/test/filter/StringSwitchTest.java
rename to org.jacoco.core.test.validation.java7/src/org/jacoco/core/test/filter/StringSwitchTest.java
index eefff0f..1518135 100644
--- a/org.jacoco.core.test/src-java7/org/jacoco/core/test/filter/StringSwitchTest.java
+++ b/org.jacoco.core.test.validation.java7/src/org/jacoco/core/test/filter/StringSwitchTest.java
@@ -23,7 +23,7 @@
 public class StringSwitchTest extends ValidationTestBase {
 
 	public StringSwitchTest() {
-		super("src-java7", StringSwitch.class);
+		super(StringSwitch.class);
 	}
 
 	/**
diff --git a/org.jacoco.core.test/src-java7/org/jacoco/core/test/filter/TryWithResourcesTest.java b/org.jacoco.core.test.validation.java7/src/org/jacoco/core/test/filter/TryWithResourcesTest.java
similarity index 98%
rename from org.jacoco.core.test/src-java7/org/jacoco/core/test/filter/TryWithResourcesTest.java
rename to org.jacoco.core.test.validation.java7/src/org/jacoco/core/test/filter/TryWithResourcesTest.java
index ddafd69..fe44116 100644
--- a/org.jacoco.core.test/src-java7/org/jacoco/core/test/filter/TryWithResourcesTest.java
+++ b/org.jacoco.core.test.validation.java7/src/org/jacoco/core/test/filter/TryWithResourcesTest.java
@@ -23,7 +23,7 @@
 public class TryWithResourcesTest extends ValidationTestBase {
 
 	public TryWithResourcesTest() {
-		super("src-java7", TryWithResources.class);
+		super(TryWithResources.class);
 	}
 
 	/**
diff --git a/org.jacoco.core.test/src-java7/org/jacoco/core/test/filter/targets/StringSwitch.java b/org.jacoco.core.test.validation.java7/src/org/jacoco/core/test/filter/targets/StringSwitch.java
similarity index 100%
rename from org.jacoco.core.test/src-java7/org/jacoco/core/test/filter/targets/StringSwitch.java
rename to org.jacoco.core.test.validation.java7/src/org/jacoco/core/test/filter/targets/StringSwitch.java
diff --git a/org.jacoco.core.test/src-java7/org/jacoco/core/test/filter/targets/TryWithResources.java b/org.jacoco.core.test.validation.java7/src/org/jacoco/core/test/filter/targets/TryWithResources.java
similarity index 100%
rename from org.jacoco.core.test/src-java7/org/jacoco/core/test/filter/targets/TryWithResources.java
rename to org.jacoco.core.test.validation.java7/src/org/jacoco/core/test/filter/targets/TryWithResources.java
diff --git a/org.jacoco.core.test.validation.java8/.classpath b/org.jacoco.core.test.validation.java8/.classpath
new file mode 100644
index 0000000..9f0c38b
--- /dev/null
+++ b/org.jacoco.core.test.validation.java8/.classpath
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/classes" path="src">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.jacoco.core.test.validation.java8/.project b/org.jacoco.core.test.validation.java8/.project
new file mode 100644
index 0000000..deab0f7
--- /dev/null
+++ b/org.jacoco.core.test.validation.java8/.project
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.jacoco.core.test.validation.java8</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+	<linkedResources>
+		<link>
+			<name>.settings</name>
+			<type>2</type>
+			<locationURI>PARENT-1-PROJECT_LOC/org.jacoco.core.test/.settings</locationURI>
+		</link>
+	</linkedResources>
+</projectDescription>
diff --git a/org.jacoco.core.test.validation.java8/pom.xml b/org.jacoco.core.test.validation.java8/pom.xml
new file mode 100644
index 0000000..b682ab8
--- /dev/null
+++ b/org.jacoco.core.test.validation.java8/pom.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright (c) 2009, 2018 Mountainminds GmbH & Co. KG and Contributors
+   All rights reserved. This program and the accompanying materials
+   are made available under the terms of the Eclipse Public License v1.0
+   which accompanies this distribution, and is available at
+   http://www.eclipse.org/legal/epl-v10.html
+
+   Contributors:
+      Evgeny Mandrikov - initial API and implementation
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.jacoco</groupId>
+    <artifactId>org.jacoco.core.test.validation</artifactId>
+    <version>0.8.2-SNAPSHOT</version>
+    <relativePath>../org.jacoco.core.test.validation</relativePath>
+  </parent>
+
+  <artifactId>org.jacoco.core.test.validation.java8</artifactId>
+
+  <name>JaCoCo :: Test :: Core :: Validation Java 8</name>
+
+  <properties>
+    <bytecode.version>8</bytecode.version>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>org.jacoco.core.test</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/AnnotationOnLocalVariableTest.java b/org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/AnnotationOnLocalVariableTest.java
similarity index 94%
rename from org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/AnnotationOnLocalVariableTest.java
rename to org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/AnnotationOnLocalVariableTest.java
index 6472049..64e8faf 100644
--- a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/AnnotationOnLocalVariableTest.java
+++ b/org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/AnnotationOnLocalVariableTest.java
@@ -22,7 +22,7 @@
 public class AnnotationOnLocalVariableTest extends ValidationTestBase {
 
 	public AnnotationOnLocalVariableTest() {
-		super("src-java8", AnnotationOnLocalVariableTarget.class);
+		super(AnnotationOnLocalVariableTarget.class);
 	}
 
 	@Test
diff --git a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/BadCycleInterfaceTest.java b/org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/BadCycleInterfaceTest.java
similarity index 97%
rename from org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/BadCycleInterfaceTest.java
rename to org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/BadCycleInterfaceTest.java
index fdd7e00..a8ab672 100644
--- a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/BadCycleInterfaceTest.java
+++ b/org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/BadCycleInterfaceTest.java
@@ -21,7 +21,7 @@
 public class BadCycleInterfaceTest extends ValidationTestBase {
 
 	public BadCycleInterfaceTest() throws Exception {
-		super("src-java8", BadCycleInterface.class);
+		super(BadCycleInterface.class);
 	}
 
 	@Test
diff --git a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/BootstrapMethodReferenceTest.java b/org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/BootstrapMethodReferenceTest.java
similarity index 100%
rename from org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/BootstrapMethodReferenceTest.java
rename to org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/BootstrapMethodReferenceTest.java
diff --git a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/InterfaceDefaultMethodsTest.java b/org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/InterfaceDefaultMethodsTest.java
similarity index 94%
rename from org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/InterfaceDefaultMethodsTest.java
rename to org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/InterfaceDefaultMethodsTest.java
index 5699851..4611d78 100644
--- a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/InterfaceDefaultMethodsTest.java
+++ b/org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/InterfaceDefaultMethodsTest.java
@@ -21,7 +21,7 @@
 public class InterfaceDefaultMethodsTest extends ValidationTestBase {
 
 	public InterfaceDefaultMethodsTest() {
-		super("src-java8", InterfaceDefaultMethodsTarget.class);
+		super(InterfaceDefaultMethodsTarget.class);
 	}
 
 	@Test
diff --git a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/InterfaceOnlyDefaultMethodsTest.java b/org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/InterfaceOnlyDefaultMethodsTest.java
similarity index 94%
rename from org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/InterfaceOnlyDefaultMethodsTest.java
rename to org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/InterfaceOnlyDefaultMethodsTest.java
index e572c63..bbb7f0e 100644
--- a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/InterfaceOnlyDefaultMethodsTest.java
+++ b/org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/InterfaceOnlyDefaultMethodsTest.java
@@ -21,7 +21,7 @@
 public class InterfaceOnlyDefaultMethodsTest extends ValidationTestBase {
 
 	public InterfaceOnlyDefaultMethodsTest() {
-		super("src-java8", InterfaceOnlyDefaultMethodsTarget.class);
+		super(InterfaceOnlyDefaultMethodsTarget.class);
 	}
 
 	@Test
diff --git a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/LambdaExpressionsTest.java b/org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/LambdaExpressionsTest.java
similarity index 95%
rename from org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/LambdaExpressionsTest.java
rename to org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/LambdaExpressionsTest.java
index 2e8da87..f134499 100644
--- a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/LambdaExpressionsTest.java
+++ b/org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/LambdaExpressionsTest.java
@@ -21,7 +21,7 @@
 public class LambdaExpressionsTest extends ValidationTestBase {
 
 	public LambdaExpressionsTest() {
-		super("src-java8", LambdaExpressionsTarget.class);
+		super(LambdaExpressionsTarget.class);
 	}
 
 	@Test
diff --git a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/LambdaInInterfaceTest.java b/org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/LambdaInInterfaceTest.java
similarity index 95%
rename from org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/LambdaInInterfaceTest.java
rename to org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/LambdaInInterfaceTest.java
index afa2e98..759a78f 100644
--- a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/LambdaInInterfaceTest.java
+++ b/org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/LambdaInInterfaceTest.java
@@ -21,7 +21,7 @@
 public class LambdaInInterfaceTest extends ValidationTestBase {
 
 	public LambdaInInterfaceTest() {
-		super("src-java8", LambdaInInterfaceTarget.class);
+		super(LambdaInInterfaceTarget.class);
 	}
 
 	@Override
diff --git a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/AnnotationOnLocalVariableTarget.java b/org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/targets/AnnotationOnLocalVariableTarget.java
similarity index 100%
rename from org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/AnnotationOnLocalVariableTarget.java
rename to org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/targets/AnnotationOnLocalVariableTarget.java
diff --git a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/BadCycleInterface.java b/org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/targets/BadCycleInterface.java
similarity index 100%
rename from org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/BadCycleInterface.java
rename to org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/targets/BadCycleInterface.java
diff --git a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/InterfaceDefaultMethodsTarget.java b/org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/targets/InterfaceDefaultMethodsTarget.java
similarity index 100%
rename from org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/InterfaceDefaultMethodsTarget.java
rename to org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/targets/InterfaceDefaultMethodsTarget.java
diff --git a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/InterfaceOnlyDefaultMethodsTarget.java b/org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/targets/InterfaceOnlyDefaultMethodsTarget.java
similarity index 100%
rename from org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/InterfaceOnlyDefaultMethodsTarget.java
rename to org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/targets/InterfaceOnlyDefaultMethodsTarget.java
diff --git a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/LambdaExpressionsTarget.java b/org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/targets/LambdaExpressionsTarget.java
similarity index 100%
rename from org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/LambdaExpressionsTarget.java
rename to org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/targets/LambdaExpressionsTarget.java
diff --git a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/LambdaInInterfaceTarget.java b/org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/targets/LambdaInInterfaceTarget.java
similarity index 100%
rename from org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/LambdaInInterfaceTarget.java
rename to org.jacoco.core.test.validation.java8/src/org/jacoco/core/test/validation/targets/LambdaInInterfaceTarget.java
diff --git a/org.jacoco.core.test.validation/.project b/org.jacoco.core.test.validation/.project
new file mode 100644
index 0000000..576c614
--- /dev/null
+++ b/org.jacoco.core.test.validation/.project
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.jacoco.core.test.validation</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+	</natures>
+	<linkedResources>
+		<link>
+			<name>.settings</name>
+			<type>2</type>
+			<locationURI>PARENT-1-PROJECT_LOC/org.jacoco.core.test/.settings</locationURI>
+		</link>
+	</linkedResources>
+</projectDescription>
diff --git a/org.jacoco.core.test.validation/pom.xml b/org.jacoco.core.test.validation/pom.xml
new file mode 100644
index 0000000..691de9a
--- /dev/null
+++ b/org.jacoco.core.test.validation/pom.xml
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright (c) 2009, 2018 Mountainminds GmbH & Co. KG and Contributors
+   All rights reserved. This program and the accompanying materials
+   are made available under the terms of the Eclipse Public License v1.0
+   which accompanies this distribution, and is available at
+   http://www.eclipse.org/legal/epl-v10.html
+
+   Contributors:
+      Evgeny Mandrikov - initial API and implementation
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.jacoco</groupId>
+    <artifactId>org.jacoco.tests</artifactId>
+    <version>0.8.2-SNAPSHOT</version>
+    <relativePath>../org.jacoco.tests</relativePath>
+  </parent>
+
+  <artifactId>org.jacoco.core.test.validation</artifactId>
+  <packaging>pom</packaging>
+
+  <name>JaCoCo :: Test :: Core :: Validation</name>
+
+  <modules>
+    <module>../org.jacoco.core.test.validation.java5</module>
+  </modules>
+
+  <properties>
+    <jacoco.skip>true</jacoco.skip>
+  </properties>
+
+  <profiles>
+    <profile>
+      <id>java5-bytecode</id>
+      <activation>
+        <property>
+          <name>bytecode.version</name>
+          <value>5</value>
+        </property>
+      </activation>
+    </profile>
+
+    <profile>
+      <id>jdk5</id>
+      <activation>
+        <property>
+          <name>jdk.version</name>
+          <value>5</value>
+        </property>
+      </activation>
+    </profile>
+
+    <profile>
+      <id>java6-bytecode</id>
+      <activation>
+        <property>
+          <name>bytecode.version</name>
+          <value>6</value>
+        </property>
+      </activation>
+    </profile>
+
+    <profile>
+      <id>jdk6</id>
+      <activation>
+        <property>
+          <name>jdk.version</name>
+          <value>6</value>
+        </property>
+      </activation>
+    </profile>
+
+    <profile>
+      <id>java7-bytecode</id>
+      <activation>
+        <property>
+          <name>bytecode.version</name>
+          <value>7</value>
+        </property>
+      </activation>
+      <modules>
+        <module>../org.jacoco.core.test.validation.java7</module>
+      </modules>
+    </profile>
+
+    <profile>
+      <id>jdk7</id>
+      <activation>
+        <property>
+          <name>jdk.version</name>
+          <value>7</value>
+        </property>
+      </activation>
+      <modules>
+        <module>../org.jacoco.core.test.validation.java7</module>
+      </modules>
+    </profile>
+
+    <profile>
+      <id>java8-bytecode</id>
+      <activation>
+        <activeByDefault>true</activeByDefault>
+        <property>
+          <name>bytecode.version</name>
+          <value>8</value>
+        </property>
+      </activation>
+      <modules>
+        <module>../org.jacoco.core.test.validation.java7</module>
+        <module>../org.jacoco.core.test.validation.java8</module>
+      </modules>
+    </profile>
+
+    <profile>
+      <id>java10-bytecode</id>
+      <activation>
+        <property>
+          <name>bytecode.version</name>
+          <value>10</value>
+        </property>
+      </activation>
+      <properties>
+        <!-- see respective profile in org.jacoco.build about this override -->
+        <maven.compiler.source>10</maven.compiler.source>
+        <maven.compiler.target>10</maven.compiler.target>
+      </properties>
+      <modules>
+        <module>../org.jacoco.core.test.validation.java7</module>
+        <module>../org.jacoco.core.test.validation.java8</module>
+      </modules>
+    </profile>
+
+    <profile>
+      <id>java11-bytecode</id>
+      <activation>
+        <property>
+          <name>bytecode.version</name>
+          <value>11</value>
+        </property>
+      </activation>
+      <properties>
+        <!-- see respective profile in org.jacoco.build about this override -->
+        <maven.compiler.source>11</maven.compiler.source>
+        <maven.compiler.target>11</maven.compiler.target>
+      </properties>
+      <modules>
+        <module>../org.jacoco.core.test.validation.java7</module>
+        <module>../org.jacoco.core.test.validation.java8</module>
+      </modules>
+    </profile>
+
+    <profile>
+      <id>java12-bytecode</id>
+      <activation>
+        <property>
+          <name>bytecode.version</name>
+          <value>12</value>
+        </property>
+      </activation>
+      <properties>
+        <!-- see respective profile in org.jacoco.build about this override -->
+        <maven.compiler.source>12</maven.compiler.source>
+        <maven.compiler.target>12</maven.compiler.target>
+      </properties>
+      <modules>
+        <module>../org.jacoco.core.test.validation.java7</module>
+        <module>../org.jacoco.core.test.validation.java8</module>
+      </modules>
+    </profile>
+  </profiles>
+
+</project>
diff --git a/org.jacoco.core.test/pom.xml b/org.jacoco.core.test/pom.xml
index 0c6a492..9e80508 100644
--- a/org.jacoco.core.test/pom.xml
+++ b/org.jacoco.core.test/pom.xml
@@ -46,139 +46,4 @@
     </dependency>
   </dependencies>
 
-  <profiles>
-    <profile>
-      <id>java7-validation</id>
-      <activation>
-        <property>
-          <name>bytecode.version</name>
-          <value>1.7</value>
-        </property>
-      </activation>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>org.codehaus.mojo</groupId>
-            <artifactId>build-helper-maven-plugin</artifactId>
-            <executions>
-              <execution>
-                <id>add-source</id>
-                <phase>generate-sources</phase>
-                <goals>
-                  <goal>add-source</goal>
-                </goals>
-                <configuration>
-                  <sources>
-                    <source>src-java7</source>
-                  </sources>
-                </configuration>
-              </execution>
-            </executions>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-    <profile>
-      <id>java8-validation</id>
-      <activation>
-        <property>
-          <name>bytecode.version</name>
-          <value>1.8</value>
-        </property>
-      </activation>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>org.codehaus.mojo</groupId>
-            <artifactId>build-helper-maven-plugin</artifactId>
-            <executions>
-              <execution>
-                <id>add-source</id>
-                <phase>generate-sources</phase>
-                <goals>
-                  <goal>add-source</goal>
-                </goals>
-                <configuration>
-                  <sources>
-                    <source>src-java7</source>
-                    <source>src-java8</source>
-                  </sources>
-                </configuration>
-              </execution>
-            </executions>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-    <profile>
-      <id>java9-validation</id>
-      <activation>
-        <!-- for some reason activation should be presented here, even if already defined in parent -->
-        <property>
-          <name>bytecode.version</name>
-          <value>1.9</value>
-        </property>
-      </activation>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>org.codehaus.mojo</groupId>
-            <artifactId>build-helper-maven-plugin</artifactId>
-            <executions>
-              <execution>
-                <id>add-source</id>
-                <phase>generate-sources</phase>
-                <goals>
-                  <goal>add-source</goal>
-                </goals>
-                <configuration>
-                  <sources>
-                    <source>src-java7</source>
-                    <source>src-java8</source>
-                  </sources>
-                </configuration>
-              </execution>
-            </executions>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-    <profile>
-      <id>java10-validation</id>
-      <activation>
-        <!-- for some reason activation should be presented here, even if already defined in parent -->
-        <property>
-          <name>bytecode.version</name>
-          <value>10</value>
-        </property>
-      </activation>
-      <properties>
-        <maven.compiler.target>10</maven.compiler.target>
-      </properties>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>org.codehaus.mojo</groupId>
-            <artifactId>build-helper-maven-plugin</artifactId>
-            <executions>
-              <execution>
-                <id>add-source</id>
-                <phase>generate-sources</phase>
-                <goals>
-                  <goal>add-source</goal>
-                </goals>
-                <configuration>
-                  <sources>
-                    <source>src-java7</source>
-                    <source>src-java8</source>
-                  </sources>
-                </configuration>
-              </execution>
-            </executions>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-  </profiles>
-
 </project>
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/ValidationTestBase.java b/org.jacoco.core.test/src/org/jacoco/core/test/validation/ValidationTestBase.java
index 6ab5859..b285384 100644
--- a/org.jacoco.core.test/src/org/jacoco/core/test/validation/ValidationTestBase.java
+++ b/org.jacoco.core.test/src/org/jacoco/core/test/validation/ValidationTestBase.java
@@ -51,8 +51,6 @@
 		STATUS_NAME[ICounter.PARTLY_COVERED] = "PARTLY_COVERED";
 	}
 
-	private final String srcFolder;
-
 	private final Class<?> target;
 
 	private ISourceFileCoverage sourceCoverage;
@@ -61,20 +59,15 @@
 
 	private InstrumentingLoader loader;
 
-	protected ValidationTestBase(final String srcFolder, final Class<?> target) {
-		this.srcFolder = srcFolder;
-		this.target = target;
-	}
-
 	protected ValidationTestBase(final Class<?> target) {
-		this("src", target);
+		this.target = target;
 	}
 
 	@Before
 	public void setup() throws Exception {
 		final ExecutionDataStore store = execute();
 		analyze(store);
-		source = Source.getSourceFor(srcFolder, target);
+		source = Source.getSourceFor("src", target);
 	}
 
 	private ExecutionDataStore execute() throws Exception {
diff --git a/org.jacoco.doc/docroot/doc/build.html b/org.jacoco.doc/docroot/doc/build.html
index 3a125e0..987fcc6 100644
--- a/org.jacoco.doc/docroot/doc/build.html
+++ b/org.jacoco.doc/docroot/doc/build.html
@@ -6,6 +6,21 @@
   <link rel="stylesheet" href="resources/doc.css" charset="UTF-8" type="text/css" />
   <link rel="stylesheet" href="../coverage/jacoco-resources/prettify.css" charset="UTF-8" type="text/css" />
   <link rel="shortcut icon" href="resources/report.gif" type="image/gif" />
+  <style>
+    table, th, td {
+      border-collapse: collapse;
+      padding: 3px;
+    }
+    table tbody tr td:nth-child(2) {
+      border-right: #b0b0b0 3px solid;
+    }
+    th {
+      background-color:#e0e0e0;
+    }
+    table tbody td:hover {
+      background: #f0f0d0;
+    }
+  </style>
   <script type="text/javascript" src="../coverage/jacoco-resources/prettify.js"></script>
   <title>JaCoCo - Build</title>
 </head>
@@ -24,9 +39,9 @@
   The JaCoCo build is based on <a href="http://maven.apache.org/">Maven</a> and
   can be locally executed on every machine with a proper
   <a href="environment.html">environment setup</a>. In particular you need at
-  least <a href="http://maven.apache.org/">Maven 3.3.9</a> installation.
-  Developers are encouraged to run the build before every commit to ensure
-  consistency of the source tree.
+  least <a href="http://maven.apache.org/">Maven 3.3.9</a> and JDK 8
+  installations. Developers are encouraged to run the build before every commit
+  to ensure consistency of the source tree.
 </p>
 
 
@@ -63,92 +78,62 @@
 </pre>
 
 
-<h2>Testing with different JDKs</h2>
+<h2>Compilation and testing with different JDKs</h2>
 
 <p>
-  Target Java version for JaCoCo builds is 1.5, however for verification
-  purposes you can execute tests using other versions. In order to do so, first
-  you should create file <code>toolchains.xml</code> in <code>~/.m2/</code>
-  directory. Here is an example of such file. For more information see
+  By default for compilation and execution of tests will be used JDK that runs
+  Maven. Alternatively you can use JDK from
   <a href="http://maven.apache.org/guides/mini/guide-using-toolchains.html">Maven
-  Guide to Using Toolchains</a>. 
+  Toolchains</a> by setting property <code>jdk.version</code>.
 </p>
 
-<pre class="source lang-xml linenums">
-&lt;?xml version="1.0" encoding="UTF8"?&gt;
-&lt;toolchains&gt;
-  &lt;toolchain&gt;
-    &lt;type&gt;jdk&lt;/type&gt;
-    &lt;provides&gt;
-      &lt;id&gt;java15&lt;/id&gt;
-      &lt;version&gt;1.5&lt;/version&gt;
-      &lt;vendor&gt;sun&lt;/vendor&gt;
-    &lt;/provides&gt;
-    &lt;configuration&gt;
-      &lt;jdkHome&gt;/usr/lib/jvm/sun-jdk-1.5&lt;/jdkHome&gt;
-    &lt;/configuration&gt;
-  &lt;/toolchain&gt;
-  &lt;toolchain&gt;
-    &lt;type&gt;jdk&lt;/type&gt;
-    &lt;provides&gt;
-      &lt;id&gt;java16&lt;/id&gt;
-      &lt;version&gt;1.6&lt;/version&gt;
-      &lt;vendor&gt;sun&lt;/vendor&gt;
-    &lt;/provides&gt;
-    &lt;configuration&gt;
-      &lt;jdkHome&gt;/usr/lib/jvm/sun-jdk-1.6&lt;/jdkHome&gt;
-    &lt;/configuration&gt;
-  &lt;/toolchain&gt;
-  &lt;toolchain&gt;
-    &lt;type&gt;jdk&lt;/type&gt;
-    &lt;provides&gt;
-      &lt;id&gt;java17&lt;/id&gt;
-      &lt;version&gt;1.7&lt;/version&gt;
-      &lt;vendor&gt;sun&lt;/vendor&gt;
-    &lt;/provides&gt;
-    &lt;configuration&gt;
-      &lt;jdkHome&gt;/usr/lib/jvm/sun-jdk-1.7&lt;/jdkHome&gt;
-    &lt;/configuration&gt;
-  &lt;/toolchain&gt;
-  &lt;toolchain&gt;
-    &lt;type&gt;jdk&lt;/type&gt;
-    &lt;provides&gt;
-      &lt;id&gt;java18&lt;/id&gt;
-      &lt;version&gt;1.8&lt;/version&gt;
-      &lt;vendor&gt;sun&lt;/vendor&gt;
-    &lt;/provides&gt;
-    &lt;configuration&gt;
-      &lt;jdkHome&gt;/usr/lib/jvm/sun-jdk-1.8&lt;/jdkHome&gt;
-    &lt;/configuration&gt;
-  &lt;/toolchain&gt;
-  &lt;toolchain&gt;
-    &lt;type&gt;jdk&lt;/type&gt;
-    &lt;provides&gt;
-      &lt;id&gt;java19&lt;/id&gt;
-      &lt;version&gt;1.9&lt;/version&gt;
-      &lt;vendor&gt;sun&lt;/vendor&gt;
-    &lt;/provides&gt;
-    &lt;configuration&gt;
-      &lt;jdkHome&gt;/usr/lib/jvm/sun-jdk-1.9&lt;/jdkHome&gt;
-    &lt;/configuration&gt;
-  &lt;/toolchain&gt;
-&lt;/toolchains&gt;
-</pre>
+<p>
+  Following table shows how modules will be compiled depending on version of JDK:
+</p>
+
+<table>
+  <thead>
+  <tr>
+    <th></th>
+    <th>JDK 5</th>
+    <th>JDK 6</th>
+    <th>JDK 7</th>
+    <th>JDK 8</th>
+    <th>JDK 9</th>
+    <th>JDK 10</th>
+  </tr>
+  </thead>
+  <tbody>
+  <tr>
+    <th>org.jacoco.core.test.validation.java7</th>
+    <td colspan="2">excluded from build</td>
+    <td colspan="4">compiled into bytecode version 51 (Java 7)</td>
+  </tr>
+  <tr>
+    <th>org.jacoco.core.test.validation.java8</th>
+    <td colspan="3">excluded from build</td>
+    <td colspan="3">compiled into bytecode version 52 (Java 8)</td>
+  </tr>
+  <tr>
+    <th>all other modules</th>
+    <td colspan="4">compiled into bytecode version 49 (Java 5)</td>
+    <td colspan="2">compiled into bytecode version 50 (Java 6)</td>
+  </tr>
+  </tbody>
+</table>
 
 <p>
-  Now you should be able to execute maven build with specified version of JDK:
+  Alternatively you can specify bytecode version for all modules using property
+  <code>bytecode.version</code>.
+</p>
+
+<p>
+  For example to use JDK 10 from Maven Toolchains and compile all modules
+  into bytecode version 53 (Java 9):
 </p>
 
 <pre>
-  mvn clean install -Djdk.version=<i>version</i>
-</pre>
-
-<p>
-  Location of <code>toolchains.xml</code> can be set via an option:
-</p>
-
-<pre>
-  mvn --toolchains <i>path</i> clean install -Djdk.version=<i>version</i>
+  mvn clean install -Djdk.version=10 -Dbytecode.version=9
 </pre>
 
 <p>
@@ -160,20 +145,17 @@
 </pre>
 
 <p>
-  In addition JaCoCo can be compiled for higher class file versions than 1.5
-  specifying the property <code>bytecode.version</code>. Note that in this case
-  the version of the JVM running Maven must be at least the version of the
-  specified bytecode version as this JVM is also running the tests. Combining
-  these options JaCoCo is regularly tested with the following setups:
+  Combining these options JaCoCo is regularly tested with the following setups:
 </p>
 
 <ul>
-  <li>Maven with 1.5 JDK: <code>mvn clean install -Djdk.version=1.5 -Dbytecode.version=1.5</code></li>
-  <li>Maven with 1.6 JDK: <code>mvn clean install -Djdk.version=1.6 -Dbytecode.version=1.6</code></li>
-  <li>Maven with 1.7 JDK: <code>mvn clean install -Djdk.version=1.7 -Dbytecode.version=1.7</code></li>
-  <li>Maven with 1.8 JDK: <code>mvn clean install -Djdk.version=1.8 -Dbytecode.version=1.8</code></li>
-  <li>Maven with 1.8 JDK: <code>mvn clean install -Djdk.version=1.8 -Dbytecode.version=1.8 -Decj</code></li>
-  <li>Maven with 1.9 JDK: <code>mvn clean install -Djdk.version=1.9 -Dbytecode.version=1.9</code></li>
+  <li><code>mvn clean install -Djdk.version=5 -Dbytecode.version=5</code></li>
+  <li><code>mvn clean install -Djdk.version=6 -Dbytecode.version=6</code></li>
+  <li><code>mvn clean install -Djdk.version=7 -Dbytecode.version=7</code></li>
+  <li><code>mvn clean install -Djdk.version=8 -Dbytecode.version=8</code></li>
+  <li><code>mvn clean install -Djdk.version=8 -Dbytecode.version=8 -Decj</code></li>
+  <li><code>mvn clean install -Djdk.version=9 -Dbytecode.version=9</code></li>
+  <li><code>mvn clean install -Djdk.version=10 -Dbytecode.version=10</code></li>
 </ul>
 
 
diff --git a/org.jacoco.doc/docroot/doc/changes.html b/org.jacoco.doc/docroot/doc/changes.html
index 02dc8cb..daca307 100644
--- a/org.jacoco.doc/docroot/doc/changes.html
+++ b/org.jacoco.doc/docroot/doc/changes.html
@@ -49,6 +49,8 @@
   <li>Improved error message when already instrumented classes are used for
       instrumentation or analysis
       (GitHub <a href="https://github.com/jacoco/jacoco/issues/703">#703</a>).</li>
+  <li>JaCoCo build now requires at least Maven 3.3.9 and JDK 8
+      (GitHub <a href="https://github.com/jacoco/jacoco/issues/711">#711</a>).</li>
 </ul>
 
 <h3>API Changes</h3>
diff --git a/org.jacoco.doc/docroot/doc/environment.html b/org.jacoco.doc/docroot/doc/environment.html
index bcc5953..2a303d8 100644
--- a/org.jacoco.doc/docroot/doc/environment.html
+++ b/org.jacoco.doc/docroot/doc/environment.html
@@ -66,16 +66,16 @@
 <h3>JRE/JDK</h3>
 
 <p>
-  The minimum supported JRE version for JaCoCo is Java 1.5. To guarantee
-  compatibility JaCoCo builds should always be executed against Java 1.5 JDK. In
-  addition we run builds with 1.6, 1.7, 1.8 and 1.9 JDKs.
+  The minimum supported JRE version for JaCoCo is Java 5. To guarantee
+  compatibility JaCoCo release builds should always be executed using JDK 5.
+  In addition we run builds with 6, 7, 8, 9 and 10 JDKs.
 </p>
 
 <h3>Build</h3>
 
 <p>
   The JaCoCo build is based on <a href="http://maven.apache.org/">Maven</a>
-  and requires at least Maven 3.3.9.
+  and requires at least Maven 3.3.9 and JDK 8.
   See the <a href="build.html">build description</a> for details.
 </p>
 
diff --git a/org.jacoco.tests/pom.xml b/org.jacoco.tests/pom.xml
index 7f07117..8e49ba7 100644
--- a/org.jacoco.tests/pom.xml
+++ b/org.jacoco.tests/pom.xml
@@ -27,6 +27,7 @@
 
   <modules>
     <module>../org.jacoco.core.test</module>
+    <module>../org.jacoco.core.test.validation</module>
     <module>../org.jacoco.report.test</module>
     <module>../org.jacoco.agent.rt.test</module>
     <module>../org.jacoco.agent.test</module>