//VariableInitializer[preceding-sibling::VariableDeclaratorId[1]/@TypeInferred="false"]
-//PrimaryExpression[not(PrimarySuffix)]
-[not(ancestor::ArgumentList)]
-/PrimaryPrefix/AllocationExpression[ClassOrInterfaceType[@AnonymousClass='false']/TypeArguments//ReferenceType[not(.//TypeArguments)]]
+(
+//VariableInitializer[preceding-sibling::VariableDeclaratorId[1]/@TypeInferred=false()]
|
-//StatementExpression[AssignmentOperator][PrimaryExpression/PrimaryPrefix[not(Expression)]]
-//PrimaryExpression[not(PrimarySuffix)]
-[not(ancestor::ArgumentList)]
-/PrimaryPrefix/AllocationExpression[ClassOrInterfaceType[@AnonymousClass='false']/TypeArguments//ReferenceType[not(.//TypeArguments)]]
+//StatementExpression[AssignmentOperator and PrimaryExpression/PrimaryPrefix[not(Expression)]]
+)
+/Expression/PrimaryExpression[not(PrimarySuffix) and not(ancestor::ArgumentList)]
+/PrimaryPrefix
+/AllocationExpression
+ [@AnonymousClass=false()]
+ [ClassOrInterfaceType/TypeArguments[@Diamond=false() and not(TypeArgument//TypeArguments)]]
+ [not(ArrayDimsAndInits)]
Example(s):
@@ -4517,7 +4525,7 @@ by the rule
diff --git a/pmd_rules_java_design.html b/pmd_rules_java_design.html
index 7718905040..c6c106cdfd 100644
--- a/pmd_rules_java_design.html
+++ b/pmd_rules_java_design.html
@@ -1300,6 +1300,12 @@
+
+
+
Main Landing page
+
+
+
@@ -3928,7 +3934,7 @@ remember to add a private constructor to prevent instantiation.
diff --git a/pmd_rules_java_documentation.html b/pmd_rules_java_documentation.html
index 6bb3a088e2..8b8f00a896 100644
--- a/pmd_rules_java_documentation.html
+++ b/pmd_rules_java_documentation.html
@@ -1300,6 +1300,12 @@
+
+
+
Main Landing page
+
+
+
@@ -1706,7 +1712,7 @@ empty methods.
diff --git a/pmd_rules_java_errorprone.html b/pmd_rules_java_errorprone.html
index 9d9e66da64..03e95b6dd3 100644
--- a/pmd_rules_java_errorprone.html
+++ b/pmd_rules_java_errorprone.html
@@ -1300,6 +1300,12 @@
+
+
+
Main Landing page
+
+
+
@@ -5190,7 +5196,7 @@ Thread.currentThread().getContextClassLoader() instead.
diff --git a/pmd_rules_java_multithreading.html b/pmd_rules_java_multithreading.html
index 53732deb0b..1384f96e10 100644
--- a/pmd_rules_java_multithreading.html
+++ b/pmd_rules_java_multithreading.html
@@ -1300,6 +1300,12 @@
+
+
+
Main Landing page
+
+
+
@@ -1856,7 +1862,7 @@ one is chosen. The thread chosen is arbitrary; thus its usually safer to call n
diff --git a/pmd_rules_java_performance.html b/pmd_rules_java_performance.html
index 30ae8d9643..c8b479e143 100644
--- a/pmd_rules_java_performance.html
+++ b/pmd_rules_java_performance.html
@@ -1300,6 +1300,12 @@
+
+
+
Main Landing page
+
+
+
@@ -2400,7 +2406,7 @@ or StringBuffer.toString().length() == …
diff --git a/pmd_rules_java_security.html b/pmd_rules_java_security.html
index ceef06ebdb..e91269f62e 100644
--- a/pmd_rules_java_security.html
+++ b/pmd_rules_java_security.html
@@ -1300,6 +1300,12 @@
+
+
+
Main Landing page
+
+
+
@@ -1445,7 +1451,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_jsp.html b/pmd_rules_jsp.html
index 4f5d8437f0..321fd331f0 100644
--- a/pmd_rules_jsp.html
+++ b/pmd_rules_jsp.html
@@ -1300,6 +1300,12 @@
+
+
+
Main Landing page
+
+
+
@@ -1456,7 +1462,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_jsp_bestpractices.html b/pmd_rules_jsp_bestpractices.html
index a0a056c277..7c5ea78015 100644
--- a/pmd_rules_jsp_bestpractices.html
+++ b/pmd_rules_jsp_bestpractices.html
@@ -1300,6 +1300,12 @@
+
+
+
Main Landing page
+
+
+
@@ -1487,7 +1493,7 @@ little other purpose. Consider switching to JSP comments.
diff --git a/pmd_rules_jsp_codestyle.html b/pmd_rules_jsp_codestyle.html
index b04850de69..89dead1387 100644
--- a/pmd_rules_jsp_codestyle.html
+++ b/pmd_rules_jsp_codestyle.html
@@ -1300,6 +1300,12 @@
+
+
+
Main Landing page
+
+
+
@@ -1404,7 +1410,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_jsp_design.html b/pmd_rules_jsp_design.html
index 171eead3b4..65522ea3fe 100644
--- a/pmd_rules_jsp_design.html
+++ b/pmd_rules_jsp_design.html
@@ -1300,6 +1300,12 @@
+
+
+
Main Landing page
+
+
+
@@ -1495,7 +1501,7 @@ onload=calcDays;
diff --git a/pmd_rules_jsp_errorprone.html b/pmd_rules_jsp_errorprone.html
index 7aa9a6bdc8..6fd270eb21 100644
--- a/pmd_rules_jsp_errorprone.html
+++ b/pmd_rules_jsp_errorprone.html
@@ -1300,6 +1300,12 @@
+
+
+
Main Landing page
+
+
+
@@ -1416,7 +1422,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_jsp_security.html b/pmd_rules_jsp_security.html
index 266d7d6c05..63b583c2ae 100644
--- a/pmd_rules_jsp_security.html
+++ b/pmd_rules_jsp_security.html
@@ -1300,6 +1300,12 @@
+
+
+
Main Landing page
+
+
+
@@ -1437,7 +1443,7 @@ ${fn:escapeXml(expression)}
<!-- instead, escape it --&g
diff --git a/pmd_rules_modelica.html b/pmd_rules_modelica.html
index bd5e06d10c..b405ad5021 100644
--- a/pmd_rules_modelica.html
+++ b/pmd_rules_modelica.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1405,7 +1411,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_modelica_bestpractices.html b/pmd_rules_modelica_bestpractices.html
index 4e87948031..5f49a5222f 100644
--- a/pmd_rules_modelica_bestpractices.html
+++ b/pmd_rules_modelica_bestpractices.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1479,7 +1485,7 @@ end Example;
diff --git a/pmd_rules_plsql.html b/pmd_rules_plsql.html
index 7974e73a00..9c97cf0dbd 100644
--- a/pmd_rules_plsql.html
+++ b/pmd_rules_plsql.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1485,7 +1491,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_plsql_bestpractices.html b/pmd_rules_plsql_bestpractices.html
index f1ec958b4f..121104e36b 100644
--- a/pmd_rules_plsql_bestpractices.html
+++ b/pmd_rules_plsql_bestpractices.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1445,7 +1451,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_plsql_codestyle.html b/pmd_rules_plsql_codestyle.html
index 5640ef6780..24abfa65c3 100644
--- a/pmd_rules_plsql_codestyle.html
+++ b/pmd_rules_plsql_codestyle.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1729,7 +1735,7 @@ https://docs.oracle.com/cd/B28359_01/appdev.111/b28370/static.htm#BABIIHBJ
diff --git a/pmd_rules_plsql_design.html b/pmd_rules_plsql_design.html
index d7a705d506..cc0f417df9 100644
--- a/pmd_rules_plsql_design.html
+++ b/pmd_rules_plsql_design.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -2369,7 +2375,7 @@ have more fine grained objects.
diff --git a/pmd_rules_plsql_errorprone.html b/pmd_rules_plsql_errorprone.html
index 20d94562af..e4447ecc9e 100644
--- a/pmd_rules_plsql_errorprone.html
+++ b/pmd_rules_plsql_errorprone.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1514,7 +1520,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_pom.html b/pmd_rules_pom.html
index 99075eb275..436e2db2a0 100644
--- a/pmd_rules_pom.html
+++ b/pmd_rules_pom.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1418,7 +1424,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_pom_errorprone.html b/pmd_rules_pom_errorprone.html
index f5422eac46..53cfc35461 100644
--- a/pmd_rules_pom_errorprone.html
+++ b/pmd_rules_pom_errorprone.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1485,7 +1491,7 @@ By far the most common problem is the use of ${project.version} in a BOM or pare
diff --git a/pmd_rules_scala.html b/pmd_rules_scala.html
index 658fa38ca3..c46c0db421 100644
--- a/pmd_rules_scala.html
+++ b/pmd_rules_scala.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1398,7 +1404,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_vf.html b/pmd_rules_vf.html
index f801b462f4..f2049e7780 100644
--- a/pmd_rules_vf.html
+++ b/pmd_rules_vf.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1418,7 +1424,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_vf_security.html b/pmd_rules_vf_security.html
index 2807f1f475..70891cb7ad 100644
--- a/pmd_rules_vf_security.html
+++ b/pmd_rules_vf_security.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1423,7 +1429,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_vm.html b/pmd_rules_vm.html
index 2dc21304b8..223131f58c 100644
--- a/pmd_rules_vm.html
+++ b/pmd_rules_vm.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1439,7 +1445,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_vm_bestpractices.html b/pmd_rules_vm_bestpractices.html
index e73bc5221f..de64431b63 100644
--- a/pmd_rules_vm_bestpractices.html
+++ b/pmd_rules_vm_bestpractices.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1413,7 +1419,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_vm_design.html b/pmd_rules_vm_design.html
index 8e17bb119e..3cd67ffce1 100644
--- a/pmd_rules_vm_design.html
+++ b/pmd_rules_vm_design.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1527,7 +1533,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_vm_errorprone.html b/pmd_rules_vm_errorprone.html
index ded1147870..cc5c13c6aa 100644
--- a/pmd_rules_vm_errorprone.html
+++ b/pmd_rules_vm_errorprone.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1413,7 +1419,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_xml.html b/pmd_rules_xml.html
index 1c0d84eee4..4ac1157aa4 100644
--- a/pmd_rules_xml.html
+++ b/pmd_rules_xml.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1417,7 +1423,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_xml_errorprone.html b/pmd_rules_xml_errorprone.html
index 2127be1063..8531fc3a75 100644
--- a/pmd_rules_xml_errorprone.html
+++ b/pmd_rules_xml_errorprone.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1417,7 +1423,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_xsl.html b/pmd_rules_xsl.html
index 94e78c38b4..0fb8015a86 100644
--- a/pmd_rules_xsl.html
+++ b/pmd_rules_xsl.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1425,7 +1431,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_xsl_codestyle.html b/pmd_rules_xsl_codestyle.html
index a09230c9bb..4486cd89b2 100644
--- a/pmd_rules_xsl_codestyle.html
+++ b/pmd_rules_xsl_codestyle.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1408,7 +1414,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_xsl_performance.html b/pmd_rules_xsl_performance.html
index 2e812a591a..71309fce08 100644
--- a/pmd_rules_xsl_performance.html
+++ b/pmd_rules_xsl_performance.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1451,7 +1457,7 @@ cutting through 100% of the document.
diff --git a/pmd_userdocs_best_practices.html b/pmd_userdocs_best_practices.html
index ec05bb3df6..78c8212353 100644
--- a/pmd_userdocs_best_practices.html
+++ b/pmd_userdocs_best_practices.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1420,7 +1426,7 @@ and soon you’ll be fixing problems much faster.
diff --git a/pmd_userdocs_cli_reference.html b/pmd_userdocs_cli_reference.html
index 7ba39ee986..ebef4f114e 100644
--- a/pmd_userdocs_cli_reference.html
+++ b/pmd_userdocs_cli_reference.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -2140,7 +2146,7 @@ which can be specified with the -property
diff --git a/pmd_userdocs_configuring_rules.html b/pmd_userdocs_configuring_rules.html
index f4483ef4fd..a1e576ecdb 100644
--- a/pmd_userdocs_configuring_rules.html
+++ b/pmd_userdocs_configuring_rules.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1446,7 +1452,7 @@ will cause the rule to be ignored.
diff --git a/pmd_userdocs_cpd.html b/pmd_userdocs_cpd.html
index 6b29547045..1136689d77 100644
--- a/pmd_userdocs_cpd.html
+++ b/pmd_userdocs_cpd.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -2399,7 +2405,7 @@ the comment based approach will be extended to those of them that can support it
diff --git a/pmd_userdocs_extending_defining_properties.html b/pmd_userdocs_extending_defining_properties.html
index 2872353d21..ae36b706bc 100644
--- a/pmd_userdocs_extending_defining_properties.html
+++ b/pmd_userdocs_extending_defining_properties.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1596,7 +1602,7 @@ are supported.
diff --git a/pmd_userdocs_extending_designer_reference.html b/pmd_userdocs_extending_designer_reference.html
index b2c421ab3b..fbd0fae435 100644
--- a/pmd_userdocs_extending_designer_reference.html
+++ b/pmd_userdocs_extending_designer_reference.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1635,7 +1641,7 @@ The available language modules are those on the classpath of the app’s JVM. Th
diff --git a/pmd_userdocs_extending_metrics_howto.html b/pmd_userdocs_extending_metrics_howto.html
index 81d34adb7f..c845a09c26 100644
--- a/pmd_userdocs_extending_metrics_howto.html
+++ b/pmd_userdocs_extending_metrics_howto.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1721,7 +1727,7 @@ classes. Here’s the default behaviour by language and type of metric:
diff --git a/pmd_userdocs_extending_rule_guidelines.html b/pmd_userdocs_extending_rule_guidelines.html
index 67614d7cdb..baf6ed7cef 100644
--- a/pmd_userdocs_extending_rule_guidelines.html
+++ b/pmd_userdocs_extending_rule_guidelines.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1425,7 +1431,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_userdocs_extending_testing.html b/pmd_userdocs_extending_testing.html
index cb40195e5f..e352e1fde1 100644
--- a/pmd_userdocs_extending_testing.html
+++ b/pmd_userdocs_extending_testing.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1692,7 +1698,7 @@ will be executed twice.
diff --git a/pmd_userdocs_extending_writing_java_rules.html b/pmd_userdocs_extending_writing_java_rules.html
index 87e5d9572e..24b9fa7c81 100644
--- a/pmd_userdocs_extending_writing_java_rules.html
+++ b/pmd_userdocs_extending_writing_java_rules.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1553,7 +1559,7 @@ the file
diff --git a/pmd_userdocs_extending_writing_pmd_rules.html b/pmd_userdocs_extending_writing_pmd_rules.html
index e317b1a8fc..35bb2f8ce8 100644
--- a/pmd_userdocs_extending_writing_pmd_rules.html
+++ b/pmd_userdocs_extending_writing_pmd_rules.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1417,7 +1423,7 @@ your rule
diff --git a/pmd_userdocs_extending_writing_rules_intro.html b/pmd_userdocs_extending_writing_rules_intro.html
index 63cdd26a51..a39c758344 100644
--- a/pmd_userdocs_extending_writing_rules_intro.html
+++ b/pmd_userdocs_extending_writing_rules_intro.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1529,7 +1535,7 @@ your rule
diff --git a/pmd_userdocs_extending_writing_xpath_rules.html b/pmd_userdocs_extending_writing_xpath_rules.html
index 361714f83a..e244a7d87c 100644
--- a/pmd_userdocs_extending_writing_xpath_rules.html
+++ b/pmd_userdocs_extending_writing_xpath_rules.html
@@ -1300,6 +1300,12 @@
+
+
+ Main Landing page
+
+
+
@@ -1797,7 +1803,7 @@ deprecated and whose usages should be replaced with uses of
diff --git a/pmd_userdocs_extending_your_first_rule.html b/pmd_userdocs_extending_your_first_rule.html
index 84a7992b65..b7d22e6f2e 100644
--- a/pmd_userdocs_extending_your_first_rule.html
+++ b/pmd_userdocs_extending_your_first_rule.html
@@ -1300,6 +1300,12 @@
+
+
+ Incremental analysis is enabled automatically once a location to store the cache has been defined.
From command-line that is done through the -cache
argument, but support for the feature is
available for tools integrating PMD such as Ant,
-Maven, and Gradle.
+The cache file consists of a header and a body. The header stores the information which is used to decided
+whether the whole cache file is valid or not (see above). The following information is stored:
+
+The body contains an entry for every file that has been analyzed. For every file, the following information
+is stored:
+
+You can think of the cache as a Map where the filepath is used as the key
+and the violations found in previous runs are the value.
+
+The cache is in the end just a file with serialized data (binary). The implementation is
+FileAnalysisCache
.
+
+When analyzing a file, PMD records the checksum of the file content and stores this
+together with the violations in the cache file. When running PMD with the cache file,
+PMD looks up the file in the cache and compares the checksums.
+If the checksums match, then the file is not even parsed, the rules
+are not executed and the violations for this file are entirely used from the cache.
+If the checksum doesn’t match, then the cached violations are discarded (if there are any)
+and the file is fully processed: the file is parsed and all the rules are run for it.
+After we are done, the cache is updated with the new violations.
+
+This is possible. As long as the same PMD version and same ruleset is used on both branches.
+Also note, that if the branch uses a different dependencies, the auxclasspath is different on both
+classes, which invalidates the cache completely. If you project uses e.g. Maven for dependency
+management and your branch uses different dependencies (either different version or completely different
+artifacts), then the auxclasspath is changed.
+
+If files have been renamed on the branch, these files will be analyzed again since PMD uses
+the file names to assign existing rule violations from the cache. Also, if the full path name
+of the file changes, because the other branch is checked out at a different location, then all
+the cached files don’t match.
+
+Apart from these restrictions, PMD will only analyze files that changed between runs.
+If your previous run was on branch A and then you run on branch B using the same cache file,
+it will only look at files that are different between the 2 branches.
+
+This is only possible, if the other machine uses the exact same path names. That means that
+your project needs to be checked out into the same directory structure.
+
+Additionally, all the other restrictions apply (same PMD version, same ruleset, same auxclasspath,
+same execution classpath).
+
+