You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@netbeans.apache.org by GitBox <gi...@apache.org> on 2018/08/24 17:59:24 UTC

[GitHub] jlahoda closed pull request #1: Cleaning up command line Jackpot, trying to fix build and support for…

jlahoda closed pull request #1: Cleaning up command line Jackpot, trying to fix build and support for…
URL: https://github.com/apache/incubator-netbeans-jackpot30/pull/1
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..baf9ed4
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,27 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+language: java
+jdk:
+  - openjdk10
+before_script:
+  - wget 'http://www.apache.org/dyn/closer.lua?action=download&filename=incubator/netbeans/incubating-netbeans-java/incubating-9.0/incubating-netbeans-java-9.0-bin.zip' -O /tmp/incubating-netbeans-java-9.0-bin.zip
+  - (cd $HOME; unzip /tmp/incubating-netbeans-java-9.0-bin.zip)
+  - unset _JAVA_OPTIONS
+script:
+  - export JDK10=$JAVA_HOME
+  - jdk_switcher use oraclejdk8
+  - (cd cmdline; ant -Dnbplatform.default.harness.dir=$HOME/netbeans/harness -DNETBEANS_PLATFORM=$HOME/netbeans -DJDK10=$JDK10 build-and-test)
diff --git a/DISCLAIMER b/DISCLAIMER
new file mode 100644
index 0000000..d6f7fea
--- /dev/null
+++ b/DISCLAIMER
@@ -0,0 +1,8 @@
+Apache NetBeans is an effort undergoing incubation at The Apache Software
+Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of
+all newly accepted projects until a further review indicates that the
+infrastructure, communications, and decision making process have stabilized in
+a manner consistent with other successful ASF projects. While incubation
+status is not necessarily a reflection of the completeness or stability of the
+code, it does indicate that the project has yet to be fully endorsed by the
+ASF.
diff --git a/cmdline/README.md b/cmdline/README.md
new file mode 100644
index 0000000..d73ccd9
--- /dev/null
+++ b/cmdline/README.md
@@ -0,0 +1,61 @@
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+
+# Apache NetBeans Jackpot
+
+This tool allows to run NetBeans Java code checker without the NetBeans IDE. This includes running the custom Java hints specified in META-INF/upgrade/*.hint.
+
+### Requirements
+
+#### To Build
+
+* NetBeans 9.0
+* JDK 8 and JDK 10
+* bash
+* ant 1.9.9 or above
+
+#### To Run
+
+* JDK 10
+
+### Building
+
+Build using:
+
+```
+$ ant -DNETBEANS_PLATFORM=<path-to-NetBeans-9.0> -DJDK10=<path-to-JDK-10> build-and-test
+```
+
+The built product is in tool/build/jackpot.
+
+### Running
+
+Run using:
+
+```
+$ jackpot <options> <files-to-inspect>
+```
+
+To get help on the options, run:
+
+```
+$ jackpot --help
+```
diff --git a/cmdline/ant/nbproject/project.properties b/cmdline/ant/nbproject/project.properties
index 3bac6fe..af74793 100644
--- a/cmdline/ant/nbproject/project.properties
+++ b/cmdline/ant/nbproject/project.properties
@@ -53,8 +53,8 @@ javac.compilerargs=
 javac.deprecation=false
 javac.processorpath=\
     ${javac.classpath}
-javac.source=1.6
-javac.target=1.6
+javac.source=1.8
+javac.target=1.8
 javac.test.classpath=\
     ${javac.classpath}:\
     ${build.classes.dir}:\
diff --git a/cmdline/ap/build.xml b/cmdline/ap/build.xml
deleted file mode 100644
index ff578b4..0000000
--- a/cmdline/ap/build.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
-<!-- for some information on what you could do (e.g. targets to override). -->
-<!-- If you delete this file and reopen the project it will be recreated. -->
-<project name="org.netbeans.modules.jackpot30.ap" default="netbeans" basedir=".">
-    <description>Builds, tests, and runs the project org.netbeans.modules.jackpot30.ap.</description>
-    <import file="nbproject/build-impl.xml"/>
-    <property name="bootclasspath.prepend" value="" />
-    <import file="${suite.dir}/../findbugs-import.xml"/>
-
-    <target name="-check-lib-exists" depends="files-init">
-        <condition property="jackpot.lib.exists" value="true">
-            <available file="${build.dir}/jackpot-ap-lib.jar" />
-        </condition>
-    </target>
-    <target name="build-init" depends="harness.build-init,-check-lib-exists" unless="jackpot.lib.exists">
-        <mkdir dir="${build.dir}/" />
-        <ant dir="../lib" target="test" inheritall="false" inheritrefs="false">
-            <property name="test.config.standalone.includes" value="org/netbeans/modules/jackpot30/cmdline/lib/CreateAPLibJar.class"/>
-            <property name="test.config" value="standalone"/>
-            <property name="test-unit-sys-prop.outputDir" location="${build.dir}/" />
-        </ant>
-    </target>
-    <target name="build-ap-jar" depends="compile">
-        <delete dir="${build.dir}/temp-unpack" failonerror="false"/>
-        <mkdir dir="${build.dir}/temp-unpack" />
-        <unjar src="${build.dir}/jackpot-ap-lib.jar" dest="${build.dir}/temp-unpack" />
-        <copy todir="${build.dir}/temp-unpack">
-            <fileset dir="${build.classes.dir}"/>
-        </copy>
-        <jar destfile="${build.dir}/jackpot-ap.jar" basedir="${build.dir}/temp-unpack" />
-    </target>
-</project>
diff --git a/cmdline/ap/manifest.mf b/cmdline/ap/manifest.mf
deleted file mode 100644
index b85e04a..0000000
--- a/cmdline/ap/manifest.mf
+++ /dev/null
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-AutoUpdate-Show-In-Client: true
-OpenIDE-Module: org.netbeans.modules.jackpot30.ap
-OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/jackpot30/ap/Bundle.properties
-OpenIDE-Module-Specification-Version: 1.0
-
diff --git a/cmdline/ap/nbproject/build-impl.xml b/cmdline/ap/nbproject/build-impl.xml
deleted file mode 100644
index ec47f9a..0000000
--- a/cmdline/ap/nbproject/build-impl.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<!--
-*** GENERATED FROM project.xml - DO NOT EDIT  ***
-***         EDIT ../build.xml INSTEAD         ***
--->
-<project name="org.netbeans.modules.jackpot30.ap-impl" basedir="..">
-    <fail message="Please build using Ant 1.7.1 or higher.">
-        <condition>
-            <not>
-                <antversion atleast="1.7.1"/>
-            </not>
-        </condition>
-    </fail>
-    <property file="nbproject/private/suite-private.properties"/>
-    <property file="nbproject/suite.properties"/>
-    <fail unless="suite.dir">You must set 'suite.dir' to point to your containing module suite</fail>
-    <property file="${suite.dir}/nbproject/private/platform-private.properties"/>
-    <property file="${suite.dir}/nbproject/platform.properties"/>
-    <macrodef name="property" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="name"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{name}" value="${@{value}}"/>
-        </sequential>
-    </macrodef>
-    <macrodef name="evalprops" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="property"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{property}" value="@{value}"/>
-        </sequential>
-    </macrodef>
-    <property file="${user.properties.file}"/>
-    <nbmproject2:property name="harness.dir" value="nbplatform.${nbplatform.active}.harness.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:property name="nbplatform.active.dir" value="nbplatform.${nbplatform.active}.netbeans.dest.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:evalprops property="cluster.path.evaluated" value="${cluster.path}" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <fail message="Path to 'platform' cluster missing in $${cluster.path} property or using corrupt Netbeans Platform (missing harness).">
-        <condition>
-            <not>
-                <contains string="${cluster.path.evaluated}" substring="platform"/>
-            </not>
-        </condition>
-    </fail>
-    <import file="${harness.dir}/build.xml"/>
-</project>
diff --git a/cmdline/ap/nbproject/genfiles.properties b/cmdline/ap/nbproject/genfiles.properties
deleted file mode 100644
index d5ce80d..0000000
--- a/cmdline/ap/nbproject/genfiles.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-build.xml.data.CRC32=abf35b3d
-build.xml.script.CRC32=434ef419
-build.xml.stylesheet.CRC32=a56c6a5b@2.70
-# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
-# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=abf35b3d
-nbproject/build-impl.xml.script.CRC32=dd901283
-nbproject/build-impl.xml.stylesheet.CRC32=238281d1@2.70
diff --git a/cmdline/ap/nbproject/project.properties b/cmdline/ap/nbproject/project.properties
deleted file mode 100644
index 5df14d8..0000000
--- a/cmdline/ap/nbproject/project.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-javac.source=1.7
-javac.compilerargs=-Xlint -Xlint:-serial
-cp.extra=build/jackpot-ap-lib.jar:${tools.jar}
diff --git a/cmdline/ap/nbproject/project.xml b/cmdline/ap/nbproject/project.xml
deleted file mode 100644
index 7d1cf58..0000000
--- a/cmdline/ap/nbproject/project.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project xmlns="http://www.netbeans.org/ns/project/1">
-    <type>org.netbeans.modules.apisupport.project</type>
-    <configuration>
-        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
-            <code-name-base>org.netbeans.modules.jackpot30.ap</code-name-base>
-            <suite-component/>
-            <module-dependencies/>
-            <test-dependencies>
-                <test-type>
-                    <name>unit</name>
-                    <test-dependency>
-                        <code-name-base>org.netbeans.libs.junit4</code-name-base>
-                        <compile-dependency/>
-                    </test-dependency>
-                    <test-dependency>
-                        <code-name-base>org.netbeans.modules.jackpot30.test.borrowed</code-name-base>
-                        <compile-dependency/>
-                    </test-dependency>
-                    <test-dependency>
-                        <code-name-base>org.netbeans.modules.nbjunit</code-name-base>
-                        <recursive/>
-                        <compile-dependency/>
-                    </test-dependency>
-                </test-type>
-            </test-dependencies>
-            <public-packages/>
-        </data>
-    </configuration>
-</project>
diff --git a/cmdline/ap/nbproject/suite.properties b/cmdline/ap/nbproject/suite.properties
deleted file mode 100644
index 5f42472..0000000
--- a/cmdline/ap/nbproject/suite.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-suite.dir=${basedir}/..
diff --git a/cmdline/ap/src/META-INF/services/javax.annotation.processing.Processor b/cmdline/ap/src/META-INF/services/javax.annotation.processing.Processor
deleted file mode 100644
index cc27238..0000000
--- a/cmdline/ap/src/META-INF/services/javax.annotation.processing.Processor
+++ /dev/null
@@ -1,17 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-org.netbeans.modules.jackpot30.ap.ProcessorImpl
diff --git a/cmdline/ap/src/org/netbeans/modules/jackpot30/ap/Bundle.properties b/cmdline/ap/src/org/netbeans/modules/jackpot30/ap/Bundle.properties
deleted file mode 100644
index dad9c0c..0000000
--- a/cmdline/ap/src/org/netbeans/modules/jackpot30/ap/Bundle.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-OpenIDE-Module-Name=Jackpot 3.0 Annotation Processing
diff --git a/cmdline/build.xml b/cmdline/build.xml
index c8b5032..033893e 100644
--- a/cmdline/build.xml
+++ b/cmdline/build.xml
@@ -22,5 +22,49 @@
 <project name="cmdline" basedir=".">
     <description>Builds the module suite cmdline.</description>
     <import file="nbproject/build-impl.xml"/>
-    <import file="../suite-common.xml"/>
+<!--    <import file="../suite-common.xml"/>-->
+
+    <!-- copied (and adjusted) from suite.xml: -->
+    <target name="test" depends="build" description="Runs tests for all modules in the suite.">
+        <sortsuitemodules unsortedmodules="${modules}" sortedmodulesproperty="modules.test.sorted" sorttests="true"/>
+        <subant target="test" buildpath="${modules.test.sorted}" inheritrefs="false" inheritall="false">
+            <property name="cluster.path.evaluated" value="${cluster.path.evaluated}"/> <!-- Just for speed of pre-7.0 projects -->
+            <property name="harness.taskdefs.done" value="${harness.taskdefs.done}"/> <!-- optimization -->
+        </subant>
+    </target>
+
+    <target name="build-source-dist">
+        <mkdir dir="build" />
+        <zip file="build/incubating-apache-netbeans-jackpot-${version}.zip">
+            <zipfileset dir="." />
+            <zipfileset dir=".." includes="DISCLAIMER" fullpath="DISCLAIMER"/>
+            <zipfileset dir=".." includes="LICENSE" fullpath="LICENSE"/>
+            <zipfileset dir=".." includes="NOTICE" fullpath="NOTICE"/>
+        </zip>
+    </target>
+
+    <target name="build-and-test">
+        <ant dir="${basedir}" inheritAll="false" inheritRefs="false">
+            <property name="nbplatform.default.harness.dir" value="${NETBEANS_PLATFORM}/harness" />
+            <property name="nbplatform.default.netbeans.dest.dir" value="${NETBEANS_PLATFORM}" />
+            <property name="test.run.args" value="--add-exports=jdk.javadoc/com.sun.tools.javadoc.main=ALL-UNNAMED" />
+            <property name="test.nbjdk.home" value="${JDK10}" />
+            <target name="clean" />
+            <target name="build" />
+            <target name="test" />
+        </ant>
+        <ant dir="${basedir}/tool" target="create-standalone-tool" inheritAll="false" inheritRefs="false">
+            <property name="nbplatform.default.harness.dir" value="${NETBEANS_PLATFORM}/harness" />
+            <property name="nbplatform.default.netbeans.dest.dir" value="${NETBEANS_PLATFORM}" />
+            <property name="continue.after.failing.tests" value="false" />
+            <property name="test.run.args" value="--add-exports=jdk.javadoc/com.sun.tools.javadoc.main=ALL-UNNAMED" />
+            <property name="test.nbjdk.home" value="${JDK10}" />
+        </ant>
+        <property environment="env"/>
+        <exec executable="build/test/scripted/run" dir="tool" failonerror="true">
+            <env key="JAVA_HOME" path="${JDK10}" />
+            <env key="PATH" path="${JDK10}/bin:${env.PATH}" />
+        </exec>
+    </target>
+
 </project>
diff --git a/cmdline/compiler/antsrc/org/netbeans/modules/jackpot30/compiler/ant/JackpotCompiler.java b/cmdline/compiler/antsrc/org/netbeans/modules/jackpot30/compiler/ant/JackpotCompiler.java
deleted file mode 100644
index 11e2302..0000000
--- a/cmdline/compiler/antsrc/org/netbeans/modules/jackpot30/compiler/ant/JackpotCompiler.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.netbeans.modules.jackpot30.compiler.ant;
-
-import java.lang.reflect.Field;
-import java.net.URL;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.taskdefs.Javac;
-import org.apache.tools.ant.taskdefs.compilers.JavacExternal;
-import org.apache.tools.ant.types.Commandline;
-import org.apache.tools.ant.types.Commandline.Argument;
-import org.netbeans.modules.jackpot30.compiler.HintsAnnotationProcessing;
-import org.netbeans.modules.jackpot30.compiler.IndexingAnnotationProcessor;
-import org.openide.util.Exceptions;
-
-/**
- *
- * @author lahvac
- */
-public class JackpotCompiler extends JavacExternal {
-
-    @Override
-    public boolean execute() throws BuildException {
-        try {
-            Field forkField = Javac.class.getDeclaredField("fork");
-
-            forkField.setAccessible(true);
-            forkField.set(getJavac(), true);
-        } catch (IllegalArgumentException ex) {
-            Exceptions.printStackTrace(ex);
-        } catch (IllegalAccessException ex) {
-            Exceptions.printStackTrace(ex);
-        } catch (NoSuchFieldException ex) {
-            Exceptions.printStackTrace(ex);
-        } catch (SecurityException ex) {
-            Exceptions.printStackTrace(ex);
-        }
-        
-        return super.execute();
-    }
-
-    @Override
-    protected Commandline setupJavacCommandlineSwitches(Commandline cmd, boolean useDebugLevel) {
-        super.setupJavacCommandlineSwitches(cmd, useDebugLevel);
-
-        URL jackpotCompiler = HintsAnnotationProcessing.class.getProtectionDomain().getCodeSource().getLocation();
-        String jackpotCompilerPath = jackpotCompiler.getPath();
-        Argument arg = cmd.createArgument(true);
-        List<String> options = new LinkedList<String>();
-        StringBuilder enabledHintsProp = new StringBuilder();
-
-        options.addAll(HintsAnnotationProcessing.OPTIONS);
-        options.addAll(IndexingAnnotationProcessor.OPTIONS);
-
-        for (String prop : options) {
-            String val = getProject().getProperty(prop);
-
-            if (val != null) {
-                enabledHintsProp.append(" -A").append(prop).append("=").append(val);
-            }
-        }
-
-        arg.setLine("-J-Xbootclasspath/p:" + jackpotCompilerPath + " -Xjcov -J-Xmx256m" + enabledHintsProp); //XXX: Xmx!
-
-        return cmd;
-    }
-
-
-}
diff --git a/cmdline/compiler/build.xml b/cmdline/compiler/build.xml
deleted file mode 100644
index b097688..0000000
--- a/cmdline/compiler/build.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
-<!-- for some information on what you could do (e.g. targets to override). -->
-<!-- If you delete this file and reopen the project it will be recreated. -->
-<project name="org.netbeans.modules.jackpot30.compiler" default="netbeans" basedir=".">
-    <description>Builds, tests, and runs the project org.netbeans.modules.jackpot30.compiler.</description>
-    <import file="nbproject/build-impl.xml"/>
-    <import file="${suite.dir}/../findbugs-import.xml"/>
-
-    <target name="ant" depends="init,jar">
-        <mkdir dir="build/antclasses"/>
-        <javac srcdir="antsrc" destdir="build/antclasses" source="1.5" target="1.5" debug="true" deprecation="true">
-            <classpath>
-                <path refid="cp"/>
-                <pathelement location="${ant.jar}"/>
-                <pathelement location="${tools.jar}"/>
-                <pathelement location="${cluster}/modules/${code.name.base.dashes}.jar"/>
-            </classpath>
-            <compilerarg line="-proc:none" />
-        </javac>
-        <copy todir="build/antclasses">
-            <fileset dir="antsrc" excludes="${jar-excludes}"/>
-        </copy>
-        <property name="ant.library.target.dir" value="${cluster}/antextra" />
-        <mkdir dir="${ant.library.target.dir}"/>
-        <jar jarfile="${ant.library.target.dir}/${code.name.base.dashes}.jar" compress="false">
-            <fileset dir="build/antclasses"/>
-        </jar>
-    </target>
-
-    <target name="copy-to-hudson" depends="create-standalone-compiler">
-        <mkdir dir="${hudson.compiler.dir}" /> <!--only to be sure, should exist-->
-        <copy file="${build.classes.dir}/../jackpotc/ant-jackpotc.jar" todir="${hudson.compiler.dir}"/>
-        <copy file="${build.classes.dir}/../jackpotc/jackpotc.jar" todir="${hudson.compiler.dir}"/>
-    </target>
-
-    <target name="create-standalone-compiler" depends="init,ant">
-        <mkdir dir="${build.classes.dir}/../jackpotc" />
-        <copy file="${ant.library.target.dir}/${code.name.base.dashes}.jar" tofile="${build.classes.dir}/../jackpotc/ant-jackpotc.jar"/>
-        <copy todir="${build.classes.dir}/../jackpotc">
-            <fileset dir="scripts"/>
-        </copy>
-        <chmod dir="${build.classes.dir}/../jackpotc" perm="ugo+x" includes="jackpotc"/>
-        <ant target="test" inheritall="false" inheritrefs="false">
-            <property name="test.config.standalone.includes" value="org/netbeans/modules/jackpot30/compiler/CreateStandaloneCompilerJar.class"/>
-            <property name="test.config" value="standalone"/>
-            <property name="test-unit-sys-prop.outputDir" location="${build.classes.dir}/../jackpotc" />
-        </ant>
-        <zip destfile="${build.classes.dir}/../jackpotc.zip">
-            <zipfileset file="${build.classes.dir}/../jackpotc/jackpotc" filemode="755" fullpath="jackpotc/jackpotc"/>
-            <zipfileset dir="${build.classes.dir}/../jackpotc" prefix="jackpotc">
-                <exclude name="hints" />
-                <exclude name="jackpotc" />
-            </zipfileset>
-        </zip>
-    </target>
-
-    <target name="clean" depends="init,projectized-common.clean">
-        <delete file="${hudson.compiler.dir}/ant-jackpotc.jar"/>
-        <delete file="${hudson.compiler.dir}/jackpotc.jar"/>
-    </target>
-
-    <target name="netbeans-extra" depends="ant"/>
-    
-    <target name="test-build" depends="projectized-common.test-build,-prepare-scripted-tests" />
-    <target name="build-init" depends="harness.build-init">
-        <condition property="run.bootclasspath.prepend" value="${bootclasspath.prepend}">
-            <istrue value="${requires.nb.javac}"/>
-        </condition>
-    </target>
-    
-</project>
diff --git a/cmdline/compiler/manifest.mf b/cmdline/compiler/manifest.mf
deleted file mode 100644
index fa5d74e..0000000
--- a/cmdline/compiler/manifest.mf
+++ /dev/null
@@ -1,5 +0,0 @@
-Manifest-Version: 1.0
-OpenIDE-Module: org.netbeans.modules.jackpot30.compiler
-OpenIDE-Module-Implementation-Version: 1
-OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/jackpot30/compiler/Bundle.properties
-
diff --git a/cmdline/compiler/nbproject/build-impl.xml b/cmdline/compiler/nbproject/build-impl.xml
deleted file mode 100644
index e091de5..0000000
--- a/cmdline/compiler/nbproject/build-impl.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<!--
-*** GENERATED FROM project.xml - DO NOT EDIT  ***
-***         EDIT ../build.xml INSTEAD         ***
--->
-<project name="org.netbeans.modules.jackpot30.compiler-impl" basedir="..">
-    <fail message="Please build using Ant 1.7.1 or higher.">
-        <condition>
-            <not>
-                <antversion atleast="1.7.1"/>
-            </not>
-        </condition>
-    </fail>
-    <property file="nbproject/private/suite-private.properties"/>
-    <property file="nbproject/suite.properties"/>
-    <fail unless="suite.dir">You must set 'suite.dir' to point to your containing module suite</fail>
-    <property file="${suite.dir}/nbproject/private/platform-private.properties"/>
-    <property file="${suite.dir}/nbproject/platform.properties"/>
-    <macrodef name="property" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="name"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{name}" value="${@{value}}"/>
-        </sequential>
-    </macrodef>
-    <macrodef name="evalprops" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="property"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{property}" value="@{value}"/>
-        </sequential>
-    </macrodef>
-    <property file="${user.properties.file}"/>
-    <nbmproject2:property name="harness.dir" value="nbplatform.${nbplatform.active}.harness.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:property name="nbplatform.active.dir" value="nbplatform.${nbplatform.active}.netbeans.dest.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:evalprops property="cluster.path.evaluated" value="${cluster.path}" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <fail message="Path to 'platform' cluster missing in $${cluster.path} property or using corrupt Netbeans Platform (missing harness).">
-        <condition>
-            <not>
-                <contains string="${cluster.path.evaluated}" substring="platform"/>
-            </not>
-        </condition>
-    </fail>
-    <import file="${harness.dir}/build.xml"/>
-</project>
diff --git a/cmdline/compiler/nbproject/genfiles.properties b/cmdline/compiler/nbproject/genfiles.properties
deleted file mode 100644
index a7015e0..0000000
--- a/cmdline/compiler/nbproject/genfiles.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-build.xml.data.CRC32=bbccd04c
-build.xml.script.CRC32=3d84c86a
-build.xml.stylesheet.CRC32=79c3b980@1.33
-# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
-# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=bd5c4e9e
-nbproject/build-impl.xml.script.CRC32=64f6fe95
-nbproject/build-impl.xml.stylesheet.CRC32=238281d1@2.70
diff --git a/cmdline/compiler/nbproject/project.properties b/cmdline/compiler/nbproject/project.properties
deleted file mode 100644
index e0f6a71..0000000
--- a/cmdline/compiler/nbproject/project.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-ant.jar=${ant.core.lib}
-is.autoload=true
-javac.source=1.6
-javac.compilerargs=-Xlint -Xlint:-serial
-spec.version.base=1.16.0
-requires.nb.javac=true
-spec.version.base=1.16.0
-hudson.compiler.dir=../../server/hudson/data/compiler
diff --git a/cmdline/compiler/nbproject/project.xml b/cmdline/compiler/nbproject/project.xml
deleted file mode 100644
index 9078a42..0000000
--- a/cmdline/compiler/nbproject/project.xml
+++ /dev/null
@@ -1,315 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project xmlns="http://www.netbeans.org/ns/project/1">
-    <type>org.netbeans.modules.apisupport.project</type>
-    <configuration>
-        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
-            <code-name-base>org.netbeans.modules.jackpot30.compiler</code-name-base>
-            <suite-component/>
-            <module-dependencies>
-                <dependency>
-                    <code-name-base>org.netbeans.api.annotations.common</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <specification-version>1.4</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.api.java.classpath</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <specification-version>1.20</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.lib.nbjavac</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <implementation-version/>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.libs.javacapi</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>0.9.0.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.libs.javacimpl</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <implementation-version/>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.modules.diff</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <implementation-version/>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.modules.editor.mimelookup</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <specification-version>1.12</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.modules.jackpot30.indexing</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <implementation-version/>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.modules.jackpot30.remoting.api</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.modules.java.hints</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <implementation-version/>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.modules.java.hints.declarative</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <implementation-version/>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.modules.java.lexer</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <specification-version>1.6</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.modules.java.preprocessorbridge</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <implementation-version/>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.modules.java.source</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <implementation-version/>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.modules.java.source.base</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <implementation-version/>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.modules.lexer</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>2</release-version>
-                        <specification-version>1.31.0.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.modules.parsing.api</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <implementation-version/>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.modules.parsing.indexing</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <implementation-version/>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.modules.refactoring.api</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.22</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.spi.editor.hints</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>0-1</release-version>
-                        <specification-version>1.8.1.7.2</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.spi.java.hints</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <implementation-version/>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.filesystems</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.25.0.1.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.text</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>6.24</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.util</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>8.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.util.lookup</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>8.1</specification-version>
-                    </run-dependency>
-                </dependency>
-            </module-dependencies>
-            <test-dependencies>
-                <test-type>
-                    <name>unit</name>
-                    <test-dependency>
-                        <code-name-base>org.netbeans.bootstrap</code-name-base>
-                        <compile-dependency/>
-                    </test-dependency>
-                    <test-dependency>
-                        <code-name-base>org.netbeans.core.startup</code-name-base>
-                        <compile-dependency/>
-                    </test-dependency>
-                    <test-dependency>
-                        <code-name-base>org.netbeans.insane</code-name-base>
-                        <compile-dependency/>
-                    </test-dependency>
-                    <test-dependency>
-                        <code-name-base>org.netbeans.libs.junit4</code-name-base>
-                        <compile-dependency/>
-                    </test-dependency>
-                    <test-dependency>
-                        <code-name-base>org.netbeans.modules.classfile</code-name-base>
-                        <compile-dependency/>
-                    </test-dependency>
-                    <test-dependency>
-                        <code-name-base>org.netbeans.modules.editor.document</code-name-base>
-                        <compile-dependency/>
-                    </test-dependency>
-                    <test-dependency>
-                        <code-name-base>org.netbeans.modules.editor.mimelookup.impl</code-name-base>
-                        <compile-dependency/>
-                    </test-dependency>
-                    <test-dependency>
-                        <code-name-base>org.netbeans.modules.jackpot30.cmdline.lib</code-name-base>
-                        <recursive/>
-                        <compile-dependency/>
-                        <test/>
-                    </test-dependency>
-                    <test-dependency>
-                        <code-name-base>org.netbeans.modules.jackpot30.test.borrowed</code-name-base>
-                        <recursive/>
-                        <compile-dependency/>
-                    </test-dependency>
-                    <test-dependency>
-                        <code-name-base>org.netbeans.modules.java.hints</code-name-base>
-                        <compile-dependency/>
-                    </test-dependency>
-                    <test-dependency>
-                        <code-name-base>org.netbeans.modules.masterfs</code-name-base>
-                        <compile-dependency/>
-                    </test-dependency>
-                    <test-dependency>
-                        <code-name-base>org.netbeans.modules.nbjunit</code-name-base>
-                        <compile-dependency/>
-                    </test-dependency>
-                    <test-dependency>
-                        <code-name-base>org.netbeans.modules.parsing.nb</code-name-base>
-                        <compile-dependency/>
-                    </test-dependency>
-                    <test-dependency>
-                        <code-name-base>org.netbeans.modules.projectapi.nb</code-name-base>
-                        <compile-dependency/>
-                    </test-dependency>
-                    <test-dependency>
-                        <code-name-base>org.netbeans.modules.projectui</code-name-base>
-                        <compile-dependency/>
-                    </test-dependency>
-                </test-type>
-            </test-dependencies>
-            <public-packages/>
-            <extra-compilation-unit>
-                <package-root>antsrc</package-root>
-                <classpath>${module.classpath}:${ant.jar}:${tools.jar}:${cluster}/modules/${code.name.base.dashes}.jar</classpath>
-                <built-to>build/antclasses</built-to>
-                <built-to>${cluster}/ant/extra/${code.name.base.dashes}.jar</built-to>
-            </extra-compilation-unit>
-        </data>
-    </configuration>
-</project>
diff --git a/cmdline/compiler/nbproject/suite.properties b/cmdline/compiler/nbproject/suite.properties
deleted file mode 100644
index 5f42472..0000000
--- a/cmdline/compiler/nbproject/suite.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-suite.dir=${basedir}/..
diff --git a/cmdline/compiler/scripts/README b/cmdline/compiler/scripts/README
deleted file mode 100644
index 71930f7..0000000
--- a/cmdline/compiler/scripts/README
+++ /dev/null
@@ -1,32 +0,0 @@
-Standalone Jackpot 3.0
-----------------------
-
-The standalone Jackpot 3.0 compiler is a javac replacement that not only compiles
-the given source files, but also runs any specified Jackpot rules. When the Jackpot
-rule has a fix, the fix is applied and a patch file is created in the source output
-directory in META-INF/upgrade/upgrade.diff.
-
-There are three sources of Jackpot rules to run:
-1) .hint files found on classpath and source path. By default, any .hint file found on
-class and source path in META-INF/upgrade is interpreted as a Jackpot rule and performed.
-Use "-Ajackpot30_enable_cp_hints=true/false" to enable/disable running the rules and
-"-Ajackpot30_apply_cp_hints=true/false" to enable/disable application of the primary
-fixes of the rules.
-2) custom rule files passed from command line using "-Ajackpot30_extra_hints=<files".
-3) NetBeans hints (disabled by default)
-
-Running jackpotc from command line
-----------------------------------
-
-jackpotc script can be used as a replacement of javac. Pass the above arguments to
-control which rules should or should not be run.
-
-Limitations:
--"-sourcepath" argument must be provided
--"-J" arguments are not supported
-
-Running jackpotc from ant
--------------------------
-
-Start ant using "ant -lib <directory-containing-jackpotc> -Dbuild.compiler=org.netbeans.modules.jackpot30.compiler.ant.JackpotCompiler".
-The "-A" parameters need to be passed using -D instead of -A.
diff --git a/cmdline/compiler/scripts/jackpotc b/cmdline/compiler/scripts/jackpotc
deleted file mode 100755
index 88ab1d2..0000000
--- a/cmdline/compiler/scripts/jackpotc
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-java -Xbootclasspath/p:`dirname $0`/jackpotc.jar com.sun.tools.javac.Main -Xjcov "$@"
diff --git a/cmdline/compiler/src/org/netbeans/api/java/source/CompilationInfoHack.java b/cmdline/compiler/src/org/netbeans/api/java/source/CompilationInfoHack.java
deleted file mode 100644
index 1eba1ca..0000000
--- a/cmdline/compiler/src/org/netbeans/api/java/source/CompilationInfoHack.java
+++ /dev/null
@@ -1,258 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.netbeans.api.java.source;
-
-import com.sun.source.tree.CompilationUnitTree;
-import com.sun.source.tree.Tree;
-import com.sun.source.util.JavacTask;
-import com.sun.source.util.TreePath;
-import com.sun.source.util.Trees;
-import com.sun.tools.javac.api.JavacTaskImpl;
-import com.sun.tools.javac.api.JavacTrees;
-import com.sun.tools.javac.code.Source;
-import com.sun.tools.javac.model.JavacElements;
-import com.sun.tools.javac.model.JavacTypes;
-import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
-import com.sun.tools.javac.util.Context;
-import java.io.IOException;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import javax.lang.model.SourceVersion;
-import javax.lang.model.element.Element;
-import javax.lang.model.element.TypeElement;
-import javax.lang.model.util.Elements;
-import javax.lang.model.util.Types;
-import javax.swing.text.BadLocationException;
-import javax.swing.text.Document;
-import javax.tools.Diagnostic;
-import org.netbeans.api.java.lexer.JavaTokenId;
-import org.netbeans.api.java.source.JavaSource.Phase;
-import org.netbeans.api.lexer.TokenHierarchy;
-import org.netbeans.modules.java.source.parsing.CompilationInfoImpl;
-import org.netbeans.modules.java.source.parsing.HackAccessor;
-import org.netbeans.modules.java.source.save.ElementOverlay;
-import org.netbeans.modules.parsing.api.Snapshot;
-import org.netbeans.modules.parsing.api.SnapshotHack;
-import org.openide.filesystems.FileObject;
-import org.openide.filesystems.URLMapper;
-import org.openide.util.Exceptions;
-
-/**
- *
- * @author lahvac
- */
-public class CompilationInfoHack extends WorkingCopy {
-
-    private final Context context;
-    private final ClasspathInfo cpInfo;
-    private FileObject file;
-    private String text;
-    private TokenHierarchy<?> th;
-    private final CompilationUnitTree cut;
-    private PositionConverter conv;
-    
-    public CompilationInfoHack(Context context, ClasspathInfo cpInfo, JCCompilationUnit cut) {
-        super(HackAccessor.createCII(cpInfo), ElementOverlay.getOrCreateOverlay());
-        this.context = context;
-        this.cpInfo = cpInfo;
-        try {
-            this.file = URLMapper.findFileObject(cut.sourcefile.toUri().toURL());
-            this.text = cut.sourcefile.getCharContent(false).toString();
-            this.th = TokenHierarchy.create(text, JavaTokenId.language());
-
-            conv = new PositionConverter(SnapshotHack.create(text));
-        } catch (IllegalArgumentException ex) {
-            Exceptions.printStackTrace(ex);
-        } catch (IOException ex) {
-            Exceptions.printStackTrace(ex);
-        }
-        this.cut = cut;
-
-        try {
-            Field javacTask = CompilationInfoImpl.class.getDeclaredField("javacTask");
-
-            javacTask.setAccessible(true);
-
-            JavacTask prevTask = context.get(JavacTask.class);
-
-            try {
-                context.put(JavacTask.class, (JavacTask) null);
-                javacTask.set(this.impl, new JavacTaskImpl(context) {});
-            } finally {
-                context.put(JavacTask.class, (JavacTask) null);
-                context.put(JavacTask.class, prevTask);
-            }
-
-            Method init = WorkingCopy.class.getDeclaredMethod("init");
-
-            init.setAccessible(true);
-            init.invoke(this);
-        } catch (InvocationTargetException ex) {
-            Exceptions.printStackTrace(ex);
-        } catch (NoSuchMethodException ex) {
-            Exceptions.printStackTrace(ex);
-        } catch (IllegalArgumentException ex) {
-            Exceptions.printStackTrace(ex);
-        } catch (IllegalAccessException ex) {
-            Exceptions.printStackTrace(ex);
-        } catch (NoSuchFieldException ex) {
-            Exceptions.printStackTrace(ex);
-        } catch (SecurityException ex) {
-            Exceptions.printStackTrace(ex);
-        }
-    }
-
-    @Override
-    public TreePath getChangedTree() {
-        return null;
-    }
-
-    @Override
-    public ClasspathInfo getClasspathInfo() {
-        return cpInfo;
-    }
-
-    @Override
-    public CompilationUnitTree getCompilationUnit() {
-        return cut;
-    }
-
-    @Override
-    public List<Diagnostic> getDiagnostics() {
-        //could be enabled if necessary:
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Document getDocument() throws IOException {
-        return null;
-    }
-
-    @Override
-    public synchronized ElementUtilities getElementUtilities() {
-        return super.getElementUtilities();
-    }
-
-    @Override
-    public Elements getElements() {
-        return JavacElements.instance(context);
-    }
-
-    @Override
-    public FileObject getFileObject() {
-        return file;
-    }
-
-    public CompilationInfoImpl getImpl() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public JavaSource getJavaSource() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Phase getPhase() {
-        return Phase.RESOLVED;
-    }
-
-    @Override
-    public PositionConverter getPositionConverter() {
-        return conv;
-    }
-
-    @Override
-    public Snapshot getSnapshot() {
-        return org.netbeans.modules.parsing.api.Source.create(file).createSnapshot();
-    }
-
-    @Override
-    public SourceVersion getSourceVersion() {
-        return Source.toSourceVersion(Source.instance(context));
-    }
-
-    @Override
-    public String getText() {
-        return text;
-    }
-
-    @Override
-    public TokenHierarchy<?> getTokenHierarchy() {
-        return th;
-    }
-
-    @Override
-    public List<? extends TypeElement> getTopLevelElements() throws IllegalStateException {
-        final List<TypeElement> result = new ArrayList<TypeElement>();
-        CompilationUnitTree cu = getCompilationUnit();
-        if (cu == null) {
-            return null;
-        }
-        final Trees trees = getTrees();
-        assert trees != null;
-        List<? extends Tree> typeDecls = cu.getTypeDecls();
-        TreePath cuPath = new TreePath(cu);
-        for( Tree t : typeDecls ) {
-            TreePath p = new TreePath(cuPath,t);
-            Element e = trees.getElement(p);
-            if ( e != null && ( e.getKind().isClass() || e.getKind().isInterface() ) ) {
-                result.add((TypeElement)e);
-            }
-        }
-        return Collections.unmodifiableList(result);
-    }
-
-    @Override
-    public synchronized TreeUtilities getTreeUtilities() {
-        return super.getTreeUtilities();
-    }
-
-    @Override
-    public Trees getTrees() {
-        return JavacTrees.instance(context);
-    }
-
-    @Override
-    public synchronized TypeUtilities getTypeUtilities() {
-        return super.getTypeUtilities();
-    }
-
-    @Override
-    public Types getTypes() {
-        return JavacTypes.instance(context);
-    }
-
-    public Context getContext() {
-        return context;
-    }
-
-    public ModificationResult computeResult() throws IOException, BadLocationException {
-        ModificationResult mr = new ModificationResult();
-
-        mr.diffs.put(getFileObject(), getChanges(new HashMap<Object, int[]>()));
-
-        return mr;
-    }
-}
diff --git a/cmdline/compiler/src/org/netbeans/modules/jackpot30/compiler/AbstractHintsAnnotationProcessing.java b/cmdline/compiler/src/org/netbeans/modules/jackpot30/compiler/AbstractHintsAnnotationProcessing.java
deleted file mode 100644
index 8ac2a98..0000000
--- a/cmdline/compiler/src/org/netbeans/modules/jackpot30/compiler/AbstractHintsAnnotationProcessing.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.netbeans.modules.jackpot30.compiler;
-
-import java.util.Set;
-import javax.annotation.processing.ProcessingEnvironment;
-import org.netbeans.api.java.source.CompilationInfoHack;
-
-/**
- *
- * @author lahvac
- */
-public abstract class AbstractHintsAnnotationProcessing {
-
-    protected abstract boolean initialize(ProcessingEnvironment processingEnv);
-
-    protected abstract void doProcess(CompilationInfoHack info, ProcessingEnvironment processingEnv, Reporter reporter);
-
-    protected abstract void finish();
-
-    protected abstract Set<String> getSupportedOptions();
-
-    protected static interface Reporter {
-        public void warning(int offset, String message);
-    }
-
-}
diff --git a/cmdline/compiler/src/org/netbeans/modules/jackpot30/compiler/Bundle.properties b/cmdline/compiler/src/org/netbeans/modules/jackpot30/compiler/Bundle.properties
deleted file mode 100644
index cae8c29..0000000
--- a/cmdline/compiler/src/org/netbeans/modules/jackpot30/compiler/Bundle.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#
-OpenIDE-Module-Name=Jackpot 3.0 Standalone Compiler
diff --git a/cmdline/compiler/src/org/netbeans/modules/jackpot30/compiler/CompilerResourcesImpl.java b/cmdline/compiler/src/org/netbeans/modules/jackpot30/compiler/CompilerResourcesImpl.java
deleted file mode 100644
index 7974915..0000000
--- a/cmdline/compiler/src/org/netbeans/modules/jackpot30/compiler/CompilerResourcesImpl.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.netbeans.modules.jackpot30.compiler;
-
-import java.util.Arrays;
-import java.util.Enumeration;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-/**
- *
- * @author lahvac
- */
-public class CompilerResourcesImpl extends ResourceBundle {
-
-    private final ResourceBundle delegate;
-
-    public CompilerResourcesImpl() {
-        String baseName = getClass().getName();
-
-        delegate = CompilerResourcesImpl.getBundle(baseName, Control.getControl(Arrays.asList("java.properties")));
-    }
-
-    @Override
-    protected Object handleGetObject(String key) {
-        try {
-            return delegate.getObject(key);
-        } catch (MissingResourceException ex) {
-            return null;
-        }
-    }
-
-    @Override
-    public Enumeration<String> getKeys() {
-        return delegate.getKeys();
-    }
-
-}
diff --git a/cmdline/compiler/src/org/netbeans/modules/jackpot30/compiler/HintsAnnotationProcessing.java b/cmdline/compiler/src/org/netbeans/modules/jackpot30/compiler/HintsAnnotationProcessing.java
deleted file mode 100644
index a867c71..0000000
--- a/cmdline/compiler/src/org/netbeans/modules/jackpot30/compiler/HintsAnnotationProcessing.java
+++ /dev/null
@@ -1,329 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.netbeans.modules.jackpot30.compiler;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.regex.Pattern;
-import javax.annotation.processing.ProcessingEnvironment;
-import javax.swing.text.BadLocationException;
-import javax.tools.Diagnostic.Kind;
-import javax.tools.FileObject;
-import javax.tools.StandardLocation;
-import org.netbeans.api.java.source.ClasspathInfo.PathKind;
-import org.netbeans.api.java.source.CompilationInfoHack;
-import org.netbeans.api.java.source.ModificationResult;
-import org.netbeans.modules.jackpot30.indexing.batch.BatchUtilities;
-import org.netbeans.modules.java.hints.declarative.DeclarativeHintRegistry;
-import org.netbeans.modules.java.hints.jackpot.spi.HintsRunner;
-import org.netbeans.modules.java.hints.providers.spi.HintDescription;
-import org.netbeans.modules.java.hints.providers.spi.HintMetadata;
-import org.netbeans.modules.java.hints.spiimpl.JavaFixImpl;
-import org.netbeans.modules.java.hints.spiimpl.RulesManager;
-import org.netbeans.modules.java.hints.spiimpl.Utilities;
-import org.netbeans.modules.java.hints.spiimpl.options.HintsSettings;
-import org.netbeans.modules.parsing.impl.indexing.CacheFolder;
-import org.netbeans.modules.refactoring.spi.RefactoringElementImplementation;
-import org.netbeans.spi.editor.hints.ErrorDescription;
-import org.netbeans.spi.editor.hints.Fix;
-import org.netbeans.spi.editor.hints.Severity;
-import org.netbeans.spi.java.hints.Hint;
-import org.netbeans.spi.java.hints.HintSeverity;
-import org.openide.filesystems.FileUtil;
-import org.openide.util.Exceptions;
-import org.openide.util.lookup.ServiceProvider;
-
-/**
- *
- * @author lahvac
- */
-@ServiceProvider(service=AbstractHintsAnnotationProcessing.class)
-public class HintsAnnotationProcessing extends AbstractHintsAnnotationProcessing {
-
-    static final String CLASSPATH_HINTS_ENABLE = "jackpot30_enable_cp_hints";
-    static final String CLASSPATH_HINTS_FIXES_ENABLE = "jackpot30_apply_cp_hints";
-    static final String HARDCODED_HINTS_ENABLE = "jackpot30_enabled_hc_hints";
-    static final String HARDCODED_HINTS_FIXES_ENABLE = "jackpot30_apply_hc_hints";
-    static final String EXTRA_HINTS = "jackpot30_extra_hints";
-
-    public static final Set<String> OPTIONS = Collections.unmodifiableSet(new HashSet<String>(Arrays.asList(
-        CLASSPATH_HINTS_ENABLE, CLASSPATH_HINTS_FIXES_ENABLE,
-        HARDCODED_HINTS_ENABLE,
-        HARDCODED_HINTS_FIXES_ENABLE,
-        EXTRA_HINTS
-    )));
-
-    private Writer diff;
-
-    @Override
-    protected boolean initialize(ProcessingEnvironment processingEnv) {
-        try {
-            File tmp = File.createTempFile("jackpot30", null);
-
-            tmp.delete();
-            tmp.mkdirs();
-            tmp.deleteOnExit();
-
-            tmp = FileUtil.normalizeFile(tmp);
-            FileUtil.refreshFor(tmp.getParentFile());
-
-            org.openide.filesystems.FileObject tmpFO = FileUtil.toFileObject(tmp);
-
-            if (tmpFO == null) {
-                return false;
-            }
-
-            CacheFolder.setCacheFolder(tmpFO);
-        } catch (IOException ex) {
-            ex.printStackTrace();
-        }
-
-        return true;
-    }
-
-    @Override
-    protected void doProcess(CompilationInfoHack info, ProcessingEnvironment processingEnv, Reporter reporter) {
-        Set<HintDescription> hardCodedHints = new LinkedHashSet<HintDescription>();
-
-        for (Collection<? extends HintDescription> v : RulesManager.getInstance().readHints(null, null, null).values()) {
-            hardCodedHints.addAll(v);
-        }
-
-        ContainsChecker<String> enabledHints = getEnabledHardcodedHints(processingEnv);
-
-        for (Iterator<HintDescription> it = hardCodedHints.iterator(); it.hasNext(); ) {
-            HintMetadata current = it.next().getMetadata();
-
-            if (   (current.kind == Hint.Kind.INSPECTION)
-                && enabledHints.contains(current.id)) {
-                continue;
-            }
-
-            it.remove();
-        }
-
-        ContainsChecker<String> enabledApplyHints = getApplyHardcodedFixes(processingEnv);
-
-        List<HintDescription> hintDescriptions = new LinkedList<HintDescription>(hardCodedHints);
-
-        if (isEnabled(processingEnv, CLASSPATH_HINTS_ENABLE)) {
-            hintDescriptions.addAll(new LinkedList<HintDescription>(Utilities.listClassPathHints(Collections.singleton(info.getClasspathInfo().getClassPath(PathKind.SOURCE)), Collections.singleton(info.getClasspathInfo().getClassPath(PathKind.COMPILE)))));
-        }
-
-        boolean applyCPHints = isEnabled(processingEnv, CLASSPATH_HINTS_FIXES_ENABLE);
-
-        Collection<? extends HintDescription> extraHints = getExtraHints(processingEnv);
-
-        hintDescriptions.addAll(extraHints);
-
-        Map<HintDescription, List<ErrorDescription>> hints = HintsRunner.computeErrors(info, hintDescriptions, new AtomicBoolean());
-
-        try {
-            boolean fixPerformed = false;
-
-            for (Entry<HintDescription, List<ErrorDescription>> e : hints.entrySet()) {
-                boolean applyFix = hardCodedHints.contains(e.getKey()) ? enabledApplyHints.contains(e.getKey().getMetadata().id) : extraHints.contains(e.getKey()) ? true : applyCPHints;
-
-                for (ErrorDescription ed : e.getValue()) {
-                    reporter.warning(ed.getRange().getBegin().getOffset(), ed.getDescription());
-
-                    if (!applyFix) continue;
-
-                    Fix f = ed.getFixes().getFixes().get(0);
-
-                    if (!(f instanceof JavaFixImpl)) {
-                        reporter.warning(ed.getRange().getBegin().getOffset(), "Cannot apply primary fix (not a JavaFix)");
-                        continue;
-                    }
-
-                    JavaFixImpl jfi = (JavaFixImpl) f;
-
-                    try {
-                        JavaFixImpl.Accessor.INSTANCE.process(jfi.jf, info, false, null, new ArrayList<RefactoringElementImplementation>());
-                    } catch (Exception ex) {
-                        Exceptions.printStackTrace(ex);
-                    }
-
-                    fixPerformed = true;
-                }
-            }
-
-            if (fixPerformed) {
-                ModificationResult mr = info.computeResult();
-
-                if (diff == null) {
-                    FileObject upgradeDiffFO = processingEnv.getFiler().createResource(StandardLocation.SOURCE_OUTPUT, "", "META-INF/upgrade/upgrade.diff");
-
-                    diff = new OutputStreamWriter(upgradeDiffFO.openOutputStream());
-                }
-
-                BatchUtilities.exportDiff(mr, null, diff);
-            }
-        } catch (IOException ex) {
-            Exceptions.printStackTrace(ex);
-        } catch (BadLocationException ex) {
-            Exceptions.printStackTrace(ex);
-        }
-    }
-
-    @Override
-    protected void finish() {
-        if (diff != null) {
-            try {
-                diff.close();
-            } catch (IOException ex) {
-                Exceptions.printStackTrace(ex);
-            }
-        }
-
-        diff = null;
-    }
-
-    @Override
-    public Set<String> getSupportedOptions() {
-        return OPTIONS;
-    }
-
-    private boolean isEnabled(ProcessingEnvironment processingEnv, String key) {
-        if (processingEnv.getOptions().containsKey(key)) {
-            return Boolean.valueOf(processingEnv.getOptions().get(key));
-        }
-
-        return true;
-    }
-
-    private ContainsChecker<String> getApplyHardcodedFixes(ProcessingEnvironment processingEnv) {
-        if (processingEnv.getOptions().containsKey(HARDCODED_HINTS_FIXES_ENABLE)) {
-            String toSplit = processingEnv.getOptions().get(HARDCODED_HINTS_FIXES_ENABLE);
-
-            if (toSplit == null) {
-                return new HardcodedContainsChecker<String>(false);
-            }
-
-            return new SetBasedContainsChecker<String>(new HashSet<String>(Arrays.asList(toSplit.split(":"))));
-        }
-
-        return new HardcodedContainsChecker<String>(true);
-    }
-
-    private ContainsChecker<String> getEnabledHardcodedHints(ProcessingEnvironment processingEnv) {
-        if (processingEnv.getOptions().containsKey(HARDCODED_HINTS_ENABLE)) {
-            String toSplit = processingEnv.getOptions().get(HARDCODED_HINTS_ENABLE);
-
-            if (toSplit == null) {
-                return new HardcodedContainsChecker<String>(false);
-            }
-            if ("all".equals(toSplit)) {
-                return new HardcodedContainsChecker<String>(true);
-            }
-            if ("defaults".equals(toSplit)) {
-                return new SettingsBasedChecker();
-            }
-
-            return new SetBasedContainsChecker<String>(new HashSet<String>(Arrays.asList(toSplit.split(":"))));
-        }
-
-        return new HardcodedContainsChecker<String>(false);
-    }
-
-    private interface ContainsChecker<T> {
-        public boolean contains(T t);
-    }
-
-    private static final class SetBasedContainsChecker<T> implements ContainsChecker<T> {
-        private final Set<T> set;
-        public SetBasedContainsChecker(Set<T> set) {
-            this.set = set;
-        }
-        public boolean contains(T t) {
-            return set.contains(t);
-        }
-    }
-
-    private static final class HardcodedContainsChecker<T> implements ContainsChecker<T> {
-        private final boolean result;
-        public HardcodedContainsChecker(boolean result) {
-            this.result = result;
-        }
-        public boolean contains(T t) {
-            return result;
-        }
-    }
-
-    private static final class SettingsBasedChecker implements ContainsChecker<String> {
-        private static final Set<String> enabled = new HashSet<String>();
-        public SettingsBasedChecker() {
-            HintsSettings hintsSettings = HintsSettings.getGlobalSettings();
-            for (HintMetadata hm : RulesManager.getInstance().readHints(null, null, null).keySet()) {
-                if (   hintsSettings.isEnabled(hm)
-                    && hintsSettings.getSeverity(hm) != Severity.HINT) {
-                    enabled.add(hm.id);
-                }
-            }
-        }
-        public boolean contains(String t) {
-            return enabled.contains(t);
-        }
-    }
-
-    private Collection<? extends HintDescription> getExtraHints(ProcessingEnvironment processingEnv) {
-        if (processingEnv.getOptions().containsKey(EXTRA_HINTS)) {
-            String toSplit = processingEnv.getOptions().get(EXTRA_HINTS);
-
-            if (toSplit == null || toSplit.length() == 0) {
-                return Collections.emptyList();
-            }
-
-            List<HintDescription> result = new LinkedList<HintDescription>();
-
-            for (String part : toSplit.split(Pattern.quote(System.getProperty("path.separator")))) {
-                File resolved = FileUtil.normalizeFile(new File(part).getAbsoluteFile());
-
-                if (!resolved.isFile()) {
-                    processingEnv.getMessager().printMessage(Kind.WARNING, "Cannot resolve hint file: " + part);
-                    continue;
-                }
-
-                for (Collection<? extends HintDescription> v : DeclarativeHintRegistry.parseHintFile(FileUtil.toFileObject(resolved)).values()) {
-                    result.addAll(v);
-                }
-            }
-
-            return result;
-        }
-
-        return Collections.emptyList();
-    }
-
-}
diff --git a/cmdline/compiler/src/org/netbeans/modules/jackpot30/compiler/HintsAnnotationProcessingImpl.java b/cmdline/compiler/src/org/netbeans/modules/jackpot30/compiler/HintsAnnotationProcessingImpl.java
deleted file mode 100644
index ef33258..0000000
--- a/cmdline/compiler/src/org/netbeans/modules/jackpot30/compiler/HintsAnnotationProcessingImpl.java
+++ /dev/null
@@ -1,263 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.netbeans.modules.jackpot30.compiler;
-
-import com.sun.source.util.JavacTask;
-import com.sun.source.util.TaskEvent;
-import com.sun.source.util.TaskListener;
-import com.sun.source.util.TreePath;
-import com.sun.source.util.Trees;
-import com.sun.tools.javac.api.JavacTrees;
-import com.sun.tools.javac.api.MultiTaskListener;
-import com.sun.tools.javac.comp.Resolve;
-import com.sun.tools.javac.jvm.Gen;
-import com.sun.tools.javac.parser.ParserFactory;
-import com.sun.tools.javac.processing.JavacProcessingEnvironment;
-import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
-import com.sun.tools.javac.util.Context;
-import com.sun.tools.javac.util.Context.Key;
-import com.sun.tools.javac.util.Log;
-import com.sun.tools.javac.util.Options;
-import java.io.File;
-import java.lang.reflect.Field;
-import java.net.URL;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-import javax.annotation.processing.AbstractProcessor;
-import javax.annotation.processing.ProcessingEnvironment;
-import javax.annotation.processing.Processor;
-import javax.annotation.processing.RoundEnvironment;
-import javax.annotation.processing.SupportedAnnotationTypes;
-import javax.lang.model.SourceVersion;
-import javax.lang.model.element.TypeElement;
-import javax.lang.model.util.ElementFilter;
-import javax.tools.Diagnostic.Kind;
-import javax.tools.JavaFileManager;
-import javax.tools.JavaFileObject;
-import javax.tools.StandardJavaFileManager;
-import javax.tools.StandardLocation;
-import org.netbeans.api.java.classpath.ClassPath;
-import org.netbeans.api.java.source.ClasspathInfo;
-import org.netbeans.api.java.source.CompilationInfoHack;
-import org.netbeans.lib.nbjavac.services.NBParserFactory;
-import org.netbeans.lib.nbjavac.services.NBResolve;
-import org.netbeans.modules.jackpot30.compiler.AbstractHintsAnnotationProcessing.Reporter;
-import org.netbeans.spi.java.classpath.support.ClassPathSupport;
-import org.openide.filesystems.FileUtil;
-import org.openide.util.Lookup;
-import org.openide.util.lookup.ServiceProvider;
-
-/**
- *
- * @author lahvac
- */
-@SupportedAnnotationTypes("*")
-@ServiceProvider(service=Processor.class)
-public final class HintsAnnotationProcessingImpl extends AbstractProcessor {
-
-    private final Collection<String> seenTypes = new LinkedList<String>();
-    private final Collection<AbstractHintsAnnotationProcessing> processors = new LinkedList<AbstractHintsAnnotationProcessing>();
-
-    @Override
-    public synchronized void init(ProcessingEnvironment processingEnv) {
-        super.init(processingEnv);
-
-        for (AbstractHintsAnnotationProcessing p : Lookup.getDefault().lookupAll(AbstractHintsAnnotationProcessing.class)) {
-            if (p.initialize(processingEnv)) {
-                processors.add(p);
-            }
-        }
-
-        if (processors.isEmpty()) {
-            return;
-        }
-
-        if (!(processingEnv instanceof JavacProcessingEnvironment)) {
-            throw new UnsupportedOperationException("Not a JavacProcessingEnvironment");
-        }
-
-        Context c = ((JavacProcessingEnvironment) processingEnv).getContext();
-        
-        MultiTaskListener.instance(c).add(new TaskListenerImpl());
-    }
-
-    @Override
-    public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
-        for (TypeElement type : ElementFilter.typesIn(roundEnv.getRootElements())) {
-            seenTypes.add(type.getQualifiedName().toString());
-        }
-
-        if (roundEnv.processingOver()) {
-            try {
-                //XXX: workarounding a bug in CRTable (see HintsAnnotationProcessingTest.testCRTable):
-                Context c = ((JavacProcessingEnvironment) processingEnv).getContext();
-                Options.instance(c).remove("-Xjcov");
-                Field f = Gen.class.getDeclaredField("genCrt");
-                f.setAccessible(true);
-                f.set(Gen.instance(c), false);
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-        return false;
-    }
-
-    private void doProcessing(TypeElement type) {
-        if (!seenTypes.remove(type.getQualifiedName().toString())) return;
-        
-        Context c = ((JavacProcessingEnvironment) processingEnv).getContext();
-        StandardJavaFileManager s = (StandardJavaFileManager) c.get(JavaFileManager.class);
-        ClassPath boot = computeClassPath(s, StandardLocation.PLATFORM_CLASS_PATH);
-        ClassPath compile = computeClassPath(s, StandardLocation.CLASS_PATH);
-        ClassPath source = computeClassPath(s, StandardLocation.SOURCE_PATH);
-        Trees trees = JavacTrees.instance(c);
-        final Log log = Log.instance(c);
-        final Key<ParserFactory> key = ParserFactoryKeyAccessor.getContextKey();
-        ParserFactory origParserFactory = c.get(key);
-        c.put(key, (ParserFactory) null);
-        NBParserFactory.preRegister(c);
-        final Key<Resolve> resolveKey = ResolveKeyAccessor.getContextKey();
-        Resolve origResolve = c.get(resolveKey);
-        c.put(resolveKey, (Resolve) null);
-        NBResolve.preRegister(c);
-
-        try {
-            TreePath elTree = trees.getPath(type);
-            JCCompilationUnit cut = (JCCompilationUnit) elTree.getCompilationUnit();
-
-            if (!cut.sourcefile.toUri().isAbsolute()) {
-                processingEnv.getMessager().printMessage(Kind.NOTE, "Not an absolute URI: " + cut.sourcefile.toUri().toASCIIString(), type);
-                return ; //XXX
-            }
-
-            CompilationInfoHack info = new CompilationInfoHack(c, ClasspathInfo.create(boot, compile, source), cut);
-            JavaFileObject origSourceFile = log.currentSourceFile();
-
-            try {
-                log.useSource(cut.sourcefile);
-
-                for (AbstractHintsAnnotationProcessing p : processors) {
-                    p.doProcess(info, processingEnv, new Reporter() {
-                        @Override public void warning(int offset, String message) {
-                            log.warning(offset, "proc.messager", message);
-                        }
-                    });
-                }
-            } finally {
-                log.useSource(origSourceFile);
-            }
-        } finally {
-            if (seenTypes.isEmpty()) {
-                for (AbstractHintsAnnotationProcessing p : processors) {
-                    p.finish();
-                }
-            }
-
-            c.put(key, (ParserFactory) null);
-            c.put(key, origParserFactory);
-            c.put(resolveKey, (Resolve) null);
-            c.put(resolveKey, origResolve);
-        }
-    }
-
-    @Override
-    public SourceVersion getSupportedSourceVersion() {
-        return SourceVersion.latest();
-    }
-
-    @Override
-    public Set<String> getSupportedOptions() {
-        Set<String> options = new HashSet<String>();
-
-        for (AbstractHintsAnnotationProcessing p : Lookup.getDefault().lookupAll(AbstractHintsAnnotationProcessing.class)) {
-            options.addAll(p.getSupportedOptions());
-        }
-
-        return options;
-    }
-
-    private static ClassPath computeClassPath(StandardJavaFileManager m, StandardLocation kind) {
-        List<URL> urls = new LinkedList<URL>();
-        Iterable<? extends File> files = m.getLocation(kind);
-
-        if (files != null) {
-            for (File f : files) {
-                urls.add(FileUtil.urlForArchiveOrDir(FileUtil.normalizeFile(f.getAbsoluteFile())));
-            }
-        }
-
-        return ClassPathSupport.createClassPath(urls.toArray(new URL[0]));
-    }
-
-    private final class TaskListenerImpl implements TaskListener {
-
-        public TaskListenerImpl() { }
-
-        @Override
-        public void started(TaskEvent te) {
-        }
-
-        @Override
-        public void finished(TaskEvent te) {
-            if (te.getKind() == TaskEvent.Kind.ANALYZE) {
-                TypeElement toProcess = te.getTypeElement();
-
-                assert toProcess != null;
-                doProcessing(toProcess);
-            }
-        }
-
-    }
-
-    private static final class ParserFactoryKeyAccessor extends ParserFactory {
-        ParserFactoryKeyAccessor() {
-            super(null);
-        }
-        public static Key<ParserFactory> getContextKey() {
-            return parserFactoryKey;
-        }
-    }
-
-    private static final class ResolveKeyAccessor extends Resolve {
-        ResolveKeyAccessor() {
-            super(null);
-        }
-        public static Key<Resolve> getContextKey() {
-            return resolveKey;
-        }
-    }
-
-    static {
-        try {
-            ClassLoader l = HintsAnnotationProcessingImpl.class.getClassLoader();
-
-            if (l == null) {
-                l = ClassLoader.getSystemClassLoader();
-            }
-
-            l.setClassAssertionStatus("org.netbeans.api.java.source.CompilationInfo", false);
-        } catch (Throwable t) {
-            t.printStackTrace();
-        }
-    }
-
-}
diff --git a/cmdline/compiler/src/org/netbeans/modules/jackpot30/compiler/IndexingAnnotationProcessor.java b/cmdline/compiler/src/org/netbeans/modules/jackpot30/compiler/IndexingAnnotationProcessor.java
deleted file mode 100644
index b5b9000..0000000
--- a/cmdline/compiler/src/org/netbeans/modules/jackpot30/compiler/IndexingAnnotationProcessor.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.netbeans.modules.jackpot30.compiler;
-
-import com.sun.source.tree.MemberSelectTree;
-import com.sun.source.tree.Tree;
-import com.sun.source.tree.Tree.Kind;
-import com.sun.source.util.Trees;
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import javax.annotation.processing.ProcessingEnvironment;
-import javax.tools.Diagnostic;
-import org.netbeans.api.java.source.ClasspathInfo.PathKind;
-import org.netbeans.api.java.source.CompilationInfoHack;
-import org.netbeans.modules.jackpot30.indexing.index.Indexer;
-import org.netbeans.modules.java.preprocessorbridge.spi.JavaIndexerPlugin;
-import org.netbeans.modules.parsing.impl.indexing.CacheFolder;
-import org.netbeans.modules.parsing.impl.indexing.FileObjectIndexable;
-import org.netbeans.modules.parsing.impl.indexing.SPIAccessor;
-import org.openide.filesystems.FileObject;
-import org.openide.filesystems.FileUtil;
-import org.openide.util.Exceptions;
-import org.openide.util.Lookup;
-import org.openide.util.lookup.Lookups;
-import org.openide.util.lookup.ServiceProvider;
-
-/**
- *
- * @author lahvac
- */
-@ServiceProvider(service=AbstractHintsAnnotationProcessing.class)
-public class IndexingAnnotationProcessor extends AbstractHintsAnnotationProcessing {
-
-    static final String CACHE_ROOT = "jackpot30_cache_root";
-    static final String SOURCE_ROOT = "jackpot30_root";
-    static final String INDEXED_FILES = "jackpot30_indexed_files";
-
-    public static final Set<String> OPTIONS = Collections.unmodifiableSet(new HashSet<String>(Arrays.asList(
-            CACHE_ROOT,
-            SOURCE_ROOT,
-            INDEXED_FILES
-    )));
-
-    private boolean enabled;
-    private Map<FileObject, JavaIndexerPlugin> writers;
-
-    @Override
-    protected boolean initialize(ProcessingEnvironment processingEnv) {
-        String cacheRoot = processingEnv.getOptions().get(CACHE_ROOT);
-
-        if (cacheRoot == null) return false;
-
-        enabled = true;
-
-        File cache = new File(cacheRoot);
-        cache.mkdirs();
-
-        cache = FileUtil.normalizeFile(cache);
-        FileUtil.refreshFor(cache.getParentFile());
-        CacheFolder.setCacheFolder(FileUtil.toFileObject(cache));
-
-        writers = new HashMap<FileObject, JavaIndexerPlugin>();
-
-        return true;
-    }
-
-    @Override
-    protected void doProcess(CompilationInfoHack info, ProcessingEnvironment processingEnv, Reporter reporter) {
-        try {
-            if (!enabled) return;
-
-            FileObject root;
-
-            if (processingEnv.getOptions().containsKey(SOURCE_ROOT)) {
-                File rootFile = new File(processingEnv.getOptions().get(SOURCE_ROOT));
-
-                root = FileUtil.toFileObject(FileUtil.normalizeFile(rootFile));
-
-                if (root == null) {
-                    processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, "Specified root (" + rootFile.getAbsolutePath() + ") does not exist");
-                    return;
-                }
-            } else {
-                root = info.getClasspathInfo().getClassPath(PathKind.SOURCE).findOwnerRoot(info.getFileObject());
-                
-                if (root == null) {
-                    //try to find the source path from the package clause:
-                    root = info.getFileObject().getParent();
-
-                    if (info.getCompilationUnit().getPackageName() != null) {
-                        Tree t = info.getCompilationUnit().getPackageName();
-
-                        while (t.getKind() == Kind.MEMBER_SELECT) {
-                            root = root.getParent();
-                            t = ((MemberSelectTree) t).getExpression();
-                        }
-
-                        root = root.getParent();
-                    }
-                }
-            }
-
-            JavaIndexerPlugin w = writers.get(root);
-            URL sourceRoot = root.toURL();
-
-            if (w == null) {
-                writers.put(root, w = new Indexer.FactoryImpl().create(sourceRoot, Indexer.resolveCacheFolder(sourceRoot)));
-            }
-            
-            Lookup services = Lookups.fixed(processingEnv.getElementUtils(), processingEnv.getTypeUtils(), Trees.instance(processingEnv));
-
-            w.process(info.getCompilationUnit(), SPIAccessor.getInstance().create(new FileObjectIndexable(root, info.getFileObject())), services);
-        } catch (IOException ex) {
-            Exceptions.printStackTrace(ex);
-        }
-    }
-
-    @Override
-    protected void finish() {
-        if (!enabled) return;
-
-        for (JavaIndexerPlugin w : writers.values()) {
-            w.finish();
-        }
-
-        writers = null;
-    }
-
-    @Override
-    public Set<String> getSupportedOptions() {
-        return OPTIONS;
-    }
-
-}
diff --git a/cmdline/compiler/src/org/netbeans/modules/java/source/parsing/HackAccessor.java b/cmdline/compiler/src/org/netbeans/modules/java/source/parsing/HackAccessor.java
deleted file mode 100644
index fdb24a0..0000000
--- a/cmdline/compiler/src/org/netbeans/modules/java/source/parsing/HackAccessor.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.netbeans.modules.java.source.parsing;
-
-import org.netbeans.api.java.source.ClasspathInfo;
-
-/**
- *
- * @author lahvac
- */
-public class HackAccessor {
-
-    public static CompilationInfoImpl createCII(ClasspathInfo cpInfo) {
-        return new CompilationInfoImpl(cpInfo);
-    }
-
-}
diff --git a/cmdline/compiler/src/org/netbeans/modules/parsing/api/SnapshotHack.java b/cmdline/compiler/src/org/netbeans/modules/parsing/api/SnapshotHack.java
deleted file mode 100644
index e21a3ad..0000000
--- a/cmdline/compiler/src/org/netbeans/modules/parsing/api/SnapshotHack.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.netbeans.modules.parsing.api;
-
-import org.netbeans.api.editor.mimelookup.MimePath;
-
-/**
- *
- * @author lahvac
- */
-public class SnapshotHack {
-
-    public static Snapshot create(String text) {
-        return Snapshot.create(text, new int[0], null, MimePath.get("text/x-java"), new int[][] {new int[] {0, 0}}, new int[][] {new int[] {0, 0}});
-    }
-
-}
diff --git a/cmdline/compiler/test/scripted/config b/cmdline/compiler/test/scripted/config
deleted file mode 100755
index 86358e9..0000000
--- a/cmdline/compiler/test/scripted/config
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-TOOL_NAME=jackpotc
-
-run_tool() {
-    "${TOOL_NAME}"/"${TOOL_NAME}" -sourcepath src -d build "$@"
-}
diff --git a/cmdline/compiler/test/scripted/test-ant-1 b/cmdline/compiler/test/scripted/test-ant-1
deleted file mode 100755
index f205b57..0000000
--- a/cmdline/compiler/test/scripted/test-ant-1
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/bin/bash
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-perform_test() {
-    create_file src/test/Test.java <<EOF
-package test;
-public class Test {
-    private void test() {
-        Character.toLowerCase('a');
-    }
-}
-EOF
-
-    create_file src/META-INF/upgrade/test.hint <<EOF
-'test':
-java.lang.Character.toLowerCase(\$1) :: \$1 instanceof char => java.lang.Character.toUpperCase($1) ;;
-EOF
-
-    create_file build.xml <<EOF
-<project name="test">
-    <target name="compile">
-        <javac srcdir="src"
-               destdir="build"/>
-    </target>
-</project>
-EOF
-
-    ant -lib $WORK_DIR/jackpotc -Dbuild.compiler=org.netbeans.modules.jackpot30.compiler.ant.JackpotCompiler compile
-
-    assert_file_content build/META-INF/upgrade/upgrade.diff <<EOF
---- $WORK_DIR/src/test/Test.java
-+++ $WORK_DIR/src/test/Test.java
-@@ -1,6 +1,6 @@
- package test;
- public class Test {
-     private void test() {
--        Character.toLowerCase('a');
-+        Character.toUpperCase();
-     }
- }
-EOF
-}
-
-. `dirname $0`/harness
diff --git a/cmdline/compiler/test/scripted/test-ant-with-params b/cmdline/compiler/test/scripted/test-ant-with-params
deleted file mode 100755
index bce000b..0000000
--- a/cmdline/compiler/test/scripted/test-ant-with-params
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/bin/bash
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-perform_test() {
-    create_file src/test/Test.java <<EOF
-package test;
-public class Test {
-    private void test() {
-        Character.toLowerCase('a');
-    }
-}
-EOF
-
-    create_file test.h <<EOF
-'test':
-java.lang.Character.toLowerCase(\$1) :: \$1 instanceof char => java.lang.Character.toUpperCase($1) ;;
-EOF
-
-    create_file build.xml <<EOF
-<project name="test">
-    <target name="compile">
-        <javac srcdir="src"
-               destdir="build"/>
-    </target>
-</project>
-EOF
-
-    ant -lib $WORK_DIR/jackpotc -Dbuild.compiler=org.netbeans.modules.jackpot30.compiler.ant.JackpotCompiler -Djackpot30_extra_hints=test.h compile
-
-    assert_file_content build/META-INF/upgrade/upgrade.diff <<EOF
---- $WORK_DIR/src/test/Test.java
-+++ $WORK_DIR/src/test/Test.java
-@@ -1,6 +1,6 @@
- package test;
- public class Test {
-     private void test() {
--        Character.toLowerCase('a');
-+        Character.toUpperCase();
-     }
- }
-EOF
-}
-
-. `dirname $0`/harness
diff --git a/cmdline/compiler/test/scripted/test-cmdline-1 b/cmdline/compiler/test/scripted/test-cmdline-1
deleted file mode 100755
index 8f192dd..0000000
--- a/cmdline/compiler/test/scripted/test-cmdline-1
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/bin/bash
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-perform_test() {
-    create_file src/test/Test.java <<EOF
-package test;
-public class Test {
-    private void test() {
-        Character.toLowerCase('a');
-    }
-}
-EOF
-
-    create_file src/META-INF/upgrade/test.hint <<EOF
-'test':
-java.lang.Character.toLowerCase(\$1) :: \$1 instanceof char => java.lang.Character.toUpperCase($1) ;;
-EOF
-
-    run_tool src/test/Test.java
-
-    assert_file_content build/META-INF/upgrade/upgrade.diff <<EOF
---- $WORK_DIR/src/test/Test.java
-+++ $WORK_DIR/src/test/Test.java
-@@ -1,6 +1,6 @@
- package test;
- public class Test {
-     private void test() {
--        Character.toLowerCase('a');
-+        Character.toUpperCase();
-     }
- }
-EOF
-}
-
-. `dirname $0`/harness
diff --git a/cmdline/compiler/test/unit/src/org/netbeans/modules/jackpot30/compiler/CreateStandaloneCompilerJar.java b/cmdline/compiler/test/unit/src/org/netbeans/modules/jackpot30/compiler/CreateStandaloneCompilerJar.java
deleted file mode 100644
index 305811b..0000000
--- a/cmdline/compiler/test/unit/src/org/netbeans/modules/jackpot30/compiler/CreateStandaloneCompilerJar.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.netbeans.modules.jackpot30.compiler;
-
-import org.netbeans.modules.jackpot30.cmdline.lib.CreateStandaloneJar;
-import javax.annotation.processing.Processor;
-import org.netbeans.modules.jackpot30.cmdline.lib.StandaloneTools.UtilitiesSPIImpl;
-import org.netbeans.modules.java.hints.spiimpl.Utilities;
-
-/**
- *
- * @author lahvac
- */
-public class CreateStandaloneCompilerJar extends CreateStandaloneJar {
-
-    public CreateStandaloneCompilerJar(String name) {
-        super(name, "jackpotc");
-    }
-
-    @Override
-    protected Info computeInfo() {
-        return new Info().addAdditionalRoots(UtilitiesSPIImpl.class.getName(), "com.sun.tools.javac.Main", HintsAnnotationProcessing.class.getName(), HintsAnnotationProcessingImpl.class.getName(), IndexingAnnotationProcessor.class.getName())
-                         .addMetaInfRegistrations(new MetaInfRegistration(Utilities.SPI.class, UtilitiesSPIImpl.class))
-                         .addMetaInfRegistrations(new MetaInfRegistration(Processor.class, HintsAnnotationProcessingImpl.class))
-                         .addMetaInfRegistrationToCopy(AbstractHintsAnnotationProcessing.class.getName());
-    }
-
-}
diff --git a/cmdline/compiler/test/unit/src/org/netbeans/modules/jackpot30/compiler/CreateStandaloneCompilerJarTest.java b/cmdline/compiler/test/unit/src/org/netbeans/modules/jackpot30/compiler/CreateStandaloneCompilerJarTest.java
deleted file mode 100644
index 8895477..0000000
--- a/cmdline/compiler/test/unit/src/org/netbeans/modules/jackpot30/compiler/CreateStandaloneCompilerJarTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.netbeans.modules.jackpot30.compiler;
-
-import java.io.File;
-import junit.extensions.TestSetup;
-import junit.framework.Test;
-import org.netbeans.junit.NbTestCase;
-import org.netbeans.junit.NbTestSuite;
-
-/**
- *
- * @author lahvac
- */
-public class CreateStandaloneCompilerJarTest extends NbTestCase {
-
-    public CreateStandaloneCompilerJarTest(String name) {
-        super(name);
-    }
-
-    public static Test suite() {
-        NbTestSuite suite = new NbTestSuite();
-        
-        suite.addTestSuite(HintsAnnotationProcessingTest.class);
-        suite.addTestSuite(IndexingAnnotationProcessorTest.class);
-
-        return new TestSetup(suite) {
-            private File compiler;
-            private File hintsList;
-            protected void setUp() throws Exception {
-                compiler = File.createTempFile("jackpotc", ".jar");
-                hintsList = File.createTempFile("hints", "list");
-
-//                if (!compiler.canRead()) {
-                    new CreateStandaloneCompilerJar("").createCompiler(compiler, hintsList);
-//                }
-                System.setProperty("test.javacJar", compiler.getAbsolutePath());
-            }
-            protected void tearDown() {
-                compiler.delete();
-                hintsList.delete();
-                compiler = null;
-                hintsList = null;
-            }
-        };
-    }
-
-}
diff --git a/cmdline/compiler/test/unit/src/org/netbeans/modules/jackpot30/compiler/HintsAnnotationProcessingTest.java b/cmdline/compiler/test/unit/src/org/netbeans/modules/jackpot30/compiler/HintsAnnotationProcessingTest.java
deleted file mode 100644
index 1c3cfce..0000000
--- a/cmdline/compiler/test/unit/src/org/netbeans/modules/jackpot30/compiler/HintsAnnotationProcessingTest.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.netbeans.modules.jackpot30.compiler;
-
-import java.io.File;
-import java.util.Collections;
-import javax.lang.model.type.TypeMirror;
-import org.netbeans.spi.editor.hints.ErrorDescription;
-import org.netbeans.spi.java.hints.ErrorDescriptionFactory;
-import org.netbeans.spi.java.hints.Hint;
-import org.netbeans.spi.java.hints.HintContext;
-import org.netbeans.spi.java.hints.JavaFix;
-import org.netbeans.spi.java.hints.JavaFixUtilities;
-import org.netbeans.spi.java.hints.TriggerPattern;
-
-/**
- *
- * @author lahvac
- */
-public class HintsAnnotationProcessingTest extends HintsAnnotationProcessingTestBase {
-
-    public HintsAnnotationProcessingTest(String name) {
-        super(name);
-    }
-
-    public void testRunCompiler1() throws Exception {
-        String golden =
-                "--- {0}/src/test/Test.java\n" +
-                "+++ {0}/src/test/Test.java\n" +
-                "@@ -1 +1 @@\n" +
-                "-package test; public class Test {private void test(java.io.File f) {f.isDirectory();}}\n" +
-                "+package test; public class Test {private void test(java.io.File f) {!f.isFile();}}\n";
-
-        doRunCompiler(golden, "src/test/Test.java",
-                              "package test; public class Test {private void test(java.io.File f) {f.isDirectory();}}\n",
-                              "src/META-INF/upgrade/joFile.hint",
-                              "'test':\n$1.isDirectory() :: $1 instanceof java.io.File => !$1.isFile();;",
-                              null,
-                              "-A" + HintsAnnotationProcessing.CLASSPATH_HINTS_ENABLE + "=true",
-                              "-A" + HintsAnnotationProcessing.CLASSPATH_HINTS_FIXES_ENABLE + "=true");
-    }
-
-    public void testRunCompiler2() throws Exception {
-        String golden =
-                "--- {0}/src/test/Test.java\n" +
-                "+++ {0}/src/test/Test.java\n" +
-                "@@ -1 +1 @@\n" +
-                "-package test; public class Test {private void test() {Character.toLowerCase('a');}}\n" +
-                "+package test; public class Test {private void test() {Character.toUpperCase('a');}}\n";
-
-        doRunCompiler(golden, "src/test/Test.java",
-                              "package test; public class Test {private void test() {Character.toLowerCase('a');}}\n",
-                              "src/META-INF/upgrade/joFile.hint",
-                              "'test':\njava.lang.Character.toLowerCase($1) :: $1 instanceof char => java.lang.Character.toUpperCase($1) ;;",
-                              null,
-                              "-A" + HintsAnnotationProcessing.CLASSPATH_HINTS_ENABLE + "=true",
-                              "-A" + HintsAnnotationProcessing.CLASSPATH_HINTS_FIXES_ENABLE + "=true");
-    }
-
-    public void testRunCompilerMulti() throws Exception {
-        String golden =
-                "--- {0}/src/test/Test.java\n" +
-                "+++ {0}/src/test/Test.java\n" +
-                "@@ -1 +1 @@\n" +
-                "-package test; public class Test {private void test() {Character.toLowerCase('a'); Dep.test();}}\n" +
-                "+package test; public class Test {private void test() {Character.toUpperCase('a'); Dep.test();}}\n" +
-                "--- {0}/src/test/Dep.java\n" +
-                "+++ {0}/src/test/Dep.java\n" +
-                "@@ -1 +1 @@\n" +
-                "-package test; public class Dep {static void test() {Character.toLowerCase('a');}}\n" +
-                "+package test; public class Dep {static void test() {Character.toUpperCase('a');}}\n";
-
-        doRunCompiler(golden, "src/test/Test.java",
-                              "package test; public class Test {private void test() {Character.toLowerCase('a'); Dep.test();}}\n",
-                              "src/test/Dep.java",
-                              "package test; public class Dep {static void test() {Character.toLowerCase('a');}}\n",
-                              "src/META-INF/upgrade/joFile.hint",
-                              "'test':\njava.lang.Character.toLowerCase($1) :: $1 instanceof char => java.lang.Character.toUpperCase($1) ;;",
-                              null,
-                              "-A" + HintsAnnotationProcessing.CLASSPATH_HINTS_ENABLE + "=true",
-                              "-A" + HintsAnnotationProcessing.CLASSPATH_HINTS_FIXES_ENABLE + "=true");
-    }
-
-//    public void testNPEFromAttribute() throws Exception {//TODO: does not reproduce the problem - likely caused by null Env<AttrContext> for annonymous innerclasses
-//        String golden = null;
-//
-//        doRunCompiler(golden, "src/test/Test.java",
-//                              "package test; public class Test {private void test() {new Runnable() {public void run() {int i = 0; System.err.println(i);}};}}\n",
-//                              "src/META-INF/upgrade/joFile.hint",
-//                              "'test':\njava.lang.Character.toLowerCase($1) :: $1 instanceof char => java.lang.Character.toUpperCase($1) ;;");
-//    }
-
-    public void testTreesCleaning1() throws Exception {
-        String golden = null;
-
-        doRunCompiler(golden, "src/test/Test.java",
-                              "package test; public class Test {private void test() {java.util.Collections.<String>emptyList();}}\n",
-                              "src/META-INF/upgrade/joFile.hint",
-                              "'test':\njava.lang.Character.toLowerCase($1) :: $1 instanceof char => java.lang.Character.toUpperCase($1) ;;");
-    }
-
-    public void testTreesCleaning2() throws Exception {
-        String golden = null;
-
-        doRunCompiler(golden, "src/test/Test.java",
-                              "package test; public class Test {enum A { B; A() {}} }\n",
-                              "src/META-INF/upgrade/joFile.hint",
-                              "'test':\njava.lang.Character.toLowerCase($1) :: $1 instanceof char => java.lang.Character.toUpperCase($1) ;;");
-    }
-
-    public void testTreesCleaningEnumTooMuch() throws Exception {
-        String golden = null;
-
-        doRunCompiler(golden, "src/test/Test.java",
-                              "package test; public class Test {enum A { B; private final int i; A() {this(1);} A(int i) {this.i = i;}} }\n",
-                              "src/META-INF/upgrade/joFile.hint",
-                              "'test':\njava.lang.Character.toLowerCase($1) :: $1 instanceof char => java.lang.Character.toUpperCase($1) ;;");
-    }
-
-    public void testTreesCleaningEnum3() throws Exception {
-        String golden = null;
-
-        doRunCompiler(golden, "src/test/Test.java",
-                              "package test; public class Test {enum A { B(\"a\"){public String toString() {return null;} }; A(String str) {}} }\n",
-                              "src/META-INF/upgrade/joFile.hint",
-                              "'test':\njava.lang.Character.toLowerCase($1) :: $1 instanceof char => java.lang.Character.toUpperCase($1) ;;");
-    }
-
-    public void testCRTable() throws Exception {
-        String golden = null;
-
-        doRunCompiler(golden, "src/test/Test.java",
-                              "package test; public class Test {private void test() {Integer i = 0; i++;}}\n",
-                              "src/META-INF/upgrade/joFile.hint",
-                              "'test':\njava.lang.Character.toLowerCase($1) :: $1 instanceof char => java.lang.Character.toUpperCase($1) ;;");
-    }
-
-    public void testCodeAPI() throws Exception {
-        String golden = "--- {0}/src/test/Test.java\n"+
-                        "+++ {0}/src/test/Test.java\n"+
-                        "@@ -1,2 +1,2 @@\n"+
-                        "-package test; public class Test {private void test() {Integer i = 0; if (i == null && null == i) System.err.println(i);\n"+
-                        "+package test; public class Test {private void test() {Integer i = 0; if (i == null) System.err.println(i);\n"+
-                        " }}\n";
-        doRunCompiler(golden, "src/test/Test.java",
-                              "package test; public class Test {private void test() {Integer i = 0; if (i == null && null == i) System.err.println(i);\n}}\n",
-                              null,
-                              "-A" + HintsAnnotationProcessing.HARDCODED_HINTS_ENABLE + "=test-hint");
-    }
-
-    public void testExtraHints() throws Exception {
-        String golden =
-                "--- {0}/src/test/Test.java\n" +
-                "+++ {0}/src/test/Test.java\n" +
-                "@@ -1 +1 @@\n" +
-                "-package test; public class Test {private void test() {Character.toLowerCase('a');}}\n" +
-                "+package test; public class Test {private void test() {Character.toUpperCase('a');}}\n";
-
-        doRunCompiler(golden, "src/test/Test.java",
-                              "package test; public class Test {private void test() {Character.toLowerCase('a');}}\n",
-                              "extra.hint",
-                              "'test':\njava.lang.Character.toLowerCase($1) :: $1 instanceof char => java.lang.Character.toUpperCase($1) ;;",
-                              null,
-                              "-A" + HintsAnnotationProcessing.EXTRA_HINTS + "=extra.hint");
-
-    }
-    public void testHintsOnClassPath() throws Exception {
-        String golden =
-                "--- {0}/src/test/Test.java\n" +
-                "+++ {0}/src/test/Test.java\n" +
-                "@@ -1 +1 @@\n" +
-                "-package test; public class Test {private void test() {Character.toLowerCase('a');}}\n" +
-                "+package test; public class Test {private void test() {Character.toUpperCase('a');}}\n";
-
-        doRunCompiler(golden, "src/test/Test.java",
-                              "package test; public class Test {private void test() {Character.toLowerCase('a');}}\n",
-                              "comp/META-INF/upgrade/joFile.hint",
-                              "'test':\njava.lang.Character.toLowerCase($1) :: $1 instanceof char => java.lang.Character.toUpperCase($1) ;;",
-                              null,
-                              "-classpath",
-                              "comp",
-                              "-A" + HintsAnnotationProcessing.CLASSPATH_HINTS_ENABLE + "=true",
-                              "-A" + HintsAnnotationProcessing.CLASSPATH_HINTS_FIXES_ENABLE + "=true");
-    }
-
-    public void testNoDebugInfo() throws Exception {
-        String golden =
-                "--- {0}/src/test/Test.java\n" +
-                "+++ {0}/src/test/Test.java\n" +
-                "@@ -1 +1 @@\n" +
-                "-package test; public class Test {private void test(java.io.File f) {f.isDirectory();}}\n" +
-                "+package test; public class Test {private void test(java.io.File f) {!f.isFile();}}\n";
-
-        doRunCompiler(golden, "src/test/Test.java",
-                              "package test; public class Test {private void test(java.io.File f) {f.isDirectory();}}\n",
-                              "src/META-INF/upgrade/joFile.hint",
-                              "'test':\n$1.isDirectory() :: $1 instanceof java.io.File => !$1.isFile();;",
-                              null,
-                              "-g:none",
-                              "-A" + HintsAnnotationProcessing.CLASSPATH_HINTS_ENABLE + "=true",
-                              "-A" + HintsAnnotationProcessing.CLASSPATH_HINTS_FIXES_ENABLE + "=true");
-    }
-
-    private void doRunCompiler(String goldenDiff, String... fileContentAndExtraOptions) throws Exception {
-        runCompiler(fileContentAndExtraOptions);
-
-        File diff = new File(sourceOutput, "META-INF/upgrade/upgrade.diff");
-        String diffText = readFully(diff);
-
-        goldenDiff = goldenDiff != null ? goldenDiff.replace("{0}", workDir.getAbsolutePath()) : null;
-        assertEquals(goldenDiff, diffText);
-    }
-
-    @Hint(displayName="test", description="test", category="general", id="test-hint")
-    @TriggerPattern("$1 == null && null == $1")
-    public static ErrorDescription codeHint(HintContext ctx) {
-        return ErrorDescriptionFactory.forName(ctx, ctx.getPath(), "test", JavaFixUtilities.rewriteFix(ctx, "test", ctx.getPath(), "$1 == null"));
-    }
-
-}
diff --git a/cmdline/compiler/test/unit/src/org/netbeans/modules/jackpot30/compiler/HintsAnnotationProcessingTestBase.java b/cmdline/compiler/test/unit/src/org/netbeans/modules/jackpot30/compiler/HintsAnnotationProcessingTestBase.java
deleted file mode 100644
index e31486b..0000000
--- a/cmdline/compiler/test/unit/src/org/netbeans/modules/jackpot30/compiler/HintsAnnotationProcessingTestBase.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.netbeans.modules.jackpot30.compiler;
-
-import com.sun.tools.javac.Main;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.Reader;
-import java.io.Writer;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-import org.netbeans.junit.NbTestCase;
-import org.openide.filesystems.FileUtil;
-import org.openide.util.Exceptions;
-
-/**
- *
- * @author lahvac
- */
-public class HintsAnnotationProcessingTestBase extends NbTestCase {
-
-    public HintsAnnotationProcessingTestBase(String name) {
-        super(name);
-    }
-
-    protected File workDir;
-    protected File src;
-    protected File sourceOutput;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        clearWorkDir();
-
-        workDir = getWorkDir();
-        sourceOutput = new File(workDir, "src-out");
-        sourceOutput.mkdirs();
-        src = new File(workDir, "src");
-        src.mkdirs();
-    }
-
-    protected void runCompiler(String... fileContentAndExtraOptions) throws Exception {
-        List<String> fileAndContent = new LinkedList<String>();
-        List<String> extraOptions = new LinkedList<String>();
-        List<String> fileContentAndExtraOptionsList = Arrays.asList(fileContentAndExtraOptions);
-        int nullPos = fileContentAndExtraOptionsList.indexOf(null);
-
-        if (nullPos == (-1)) {
-            fileAndContent = fileContentAndExtraOptionsList;
-            extraOptions = Collections.emptyList();
-        } else {
-            fileAndContent = fileContentAndExtraOptionsList.subList(0, nullPos);
-            extraOptions = fileContentAndExtraOptionsList.subList(nullPos + 1, fileContentAndExtraOptionsList.size());
-        }
-
-        assertTrue(fileAndContent.size() % 2 == 0);
-
-        List<String> options = new LinkedList<String>();
-
-        for (int cntr = 0; cntr < fileAndContent.size(); cntr += 2) {
-            String file = createAndFill(fileAndContent.get(cntr), fileAndContent.get(cntr + 1)).getAbsolutePath();
-
-            if (file.endsWith(".java")) {
-                options.add(file);
-            }
-        }
-
-        if (!extraOptions.contains("-sourcepath")) {
-            options.add("-sourcepath");
-            options.add(src.getAbsolutePath());
-        }
-        
-        options.add("-s");
-        options.add(sourceOutput.getAbsolutePath());
-        options.add("-source");
-        options.add("1.7");
-        options.add("-Xjcov");
-
-        for (String eo : extraOptions) {
-            options.add(eo.replace("${workdir}", workDir.getAbsolutePath()));
-        }
-
-        reallyRunCompiler(workDir, options.toArray(new String[0]));
-    }
-
-    protected void reallyRunCompiler(File workDir, String... params) throws Exception {
-        String javacJar = System.getProperty("test.javacJar");
-
-        if (javacJar == null) {
-            String oldUserDir = System.getProperty("user.dir");
-
-            System.setProperty("user.dir", workDir.getAbsolutePath());
-
-            try {
-                assertEquals(0, Main.compile(params));
-            } finally {
-                System.setProperty("user.dir", oldUserDir);
-            }
-        } else {
-            File compiler = new File(javacJar);
-
-            assertTrue(compiler.exists());
-
-            List<String> ll = new LinkedList<String>();
-
-            ll.add("java");
-//            ll.add("-Xdebug");
-//            ll.add("-Xrunjdwp:transport=dt_socket,suspend=y,server=y,address=8889");
-            ll.add("-Xbootclasspath/p:" + compiler.getAbsolutePath());
-            ll.add("com.sun.tools.javac.Main");
-            ll.addAll(Arrays.asList(params));
-
-            try {
-                Process p = Runtime.getRuntime().exec(ll.toArray(new String[0]), null, workDir);
-
-                new CopyStream(p.getInputStream(), System.out).start();
-                new CopyStream(p.getErrorStream(), System.err).start();
-
-                assertEquals(0, p.waitFor());
-            } catch (Throwable t) {
-                throw new IOException(t);
-            }
-        }
-    }
-
-    private static final class CopyStream extends Thread {
-        private final InputStream ins;
-        private final OutputStream out;
-
-        public CopyStream(InputStream ins, OutputStream out) {
-            this.ins = ins;
-            this.out = out;
-        }
-
-        @Override
-        public void run() {
-            try {
-                FileUtil.copy(ins, out);
-            } catch (IOException ex) {
-                Exceptions.printStackTrace(ex);
-            } finally {
-                try {
-                    ins.close();
-                } catch (IOException ex) {
-                    Exceptions.printStackTrace(ex);
-                }
-            }
-        }
-
-    }
-
-    private File createAndFill(String path, String content) throws IOException {
-        File source = new File(workDir, path);
-
-        source.getParentFile().mkdirs();
-        
-        Writer out = new OutputStreamWriter(new FileOutputStream(source));
-
-        out.write(content);
-
-        out.close();
-
-        return source;
-    }
-
-    protected static String readFully(File file) throws IOException {
-        if (!file.canRead()) return null;
-        StringBuilder res = new StringBuilder();
-        Reader in = new InputStreamReader(new FileInputStream(file));
-        int read;
-        
-        while ((read = in.read()) != (-1)) {
-            res.append((char) read);
-        }
-
-        return res.toString();
-    }
-
-}
diff --git a/cmdline/compiler/test/unit/src/org/netbeans/modules/jackpot30/compiler/IndexingAnnotationProcessorTest.java b/cmdline/compiler/test/unit/src/org/netbeans/modules/jackpot30/compiler/IndexingAnnotationProcessorTest.java
deleted file mode 100644
index 018ffec..0000000
--- a/cmdline/compiler/test/unit/src/org/netbeans/modules/jackpot30/compiler/IndexingAnnotationProcessorTest.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.netbeans.modules.jackpot30.compiler;
-
-import java.io.File;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicBoolean;
-import org.netbeans.api.java.source.ClasspathInfo;
-import org.netbeans.api.java.source.CompilationController;
-import org.netbeans.api.java.source.JavaSource;
-import org.netbeans.api.java.source.Task;
-import org.netbeans.modules.jackpot30.indexing.index.IndexQuery;
-import org.netbeans.modules.java.hints.declarative.Hacks;
-import org.netbeans.modules.java.hints.spiimpl.pm.BulkSearch;
-import org.netbeans.modules.parsing.impl.indexing.CacheFolder;
-import org.openide.filesystems.FileUtil;
-
-/**
- *
- * @author lahvac
- */
-public class IndexingAnnotationProcessorTest extends HintsAnnotationProcessingTestBase {
-    public IndexingAnnotationProcessorTest(String name) {
-        super(name);
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        cache = new File(workDir, "cache");
-        CacheFolder.setCacheFolder(FileUtil.createFolder(cache));
-    }
-
-    private File cache;
-
-    public void testSimpleIndexing() throws Exception {
-        runCompiler("src/test/Test1.java",
-                    "package test; public class Test1 { private void test() { java.io.File f = null; f.isDirectory(); } }",
-                    "src/test/Test2.java",
-                    "package test; public class Test2 { private void test() { new javax.swing.ImageIcon((byte[]) null); } }",
-                    null,
-                    "-A" + IndexingAnnotationProcessor.CACHE_ROOT + "=" + cache.getAbsolutePath());
-
-        String[] patterns = new String[]{
-            "$1.isDirectory()",
-            "new ImageIcon($1)"
-        };
-
-        verifyIndex(patterns, "test/Test1.java", "test/Test2.java");
-    }
-
-    public void testNoSourcePath() throws Exception {
-        runCompiler("src/test/Test1.java",
-                    "package test; public class Test1 { private void test() { java.io.File f = null; f.isDirectory(); } }",
-                    "src/test/Test2.java",
-                    "package test; public class Test2 { private void test() { new javax.swing.ImageIcon((byte[]) null); } }",
-                    null,
-                    "-A" + IndexingAnnotationProcessor.CACHE_ROOT + "=" + cache.getAbsolutePath(),
-                    "-sourcepath",
-                    "");
-
-        String[] patterns = new String[]{
-            "$1.isDirectory()",
-            "new ImageIcon($1)"
-        };
-
-        verifyIndex(patterns, "test/Test1.java", "test/Test2.java");
-    }
-
-    private void verifyIndex(final String[] patterns, String... containedIn) throws Exception {
-        ClasspathInfo cpInfo = Hacks.createUniversalCPInfo();
-        final Set<String> real = new HashSet<String>();
-
-        JavaSource.create(cpInfo).runUserActionTask(new Task<CompilationController>() {
-            public void run(CompilationController parameter) throws Exception {
-                real.addAll(IndexQuery.open(src.toURI().toURL()).findCandidates(BulkSearch.getDefault().create(parameter, new AtomicBoolean(), patterns)));
-            }
-        }, true);
-
-        Set<String> golden = new HashSet<String>(Arrays.asList(containedIn));
-
-        assertEquals(golden, real);
-    }
-}
diff --git a/cmdline/lib/build.xml b/cmdline/lib/build.xml
index b5b2701..7b17037 100644
--- a/cmdline/lib/build.xml
+++ b/cmdline/lib/build.xml
@@ -22,7 +22,7 @@
 <project name="org.netbeans.modules.jackpot30.compiler" default="netbeans" basedir=".">
     <description>Builds, tests, and runs the project org.netbeans.modules.jackpot30.compiler.</description>
     <import file="nbproject/build-impl.xml"/>
-    <import file="${suite.dir}/../findbugs-import.xml"/>
+    <!--<import file="${suite.dir}/../findbugs-import.xml"/>-->
 
     <target name="create-cmdline-lib" depends="init">
         <mkdir dir="${build.classes.dir}/../lib" />
diff --git a/cmdline/lib/nbproject/project.properties b/cmdline/lib/nbproject/project.properties
index aea31b2..78f7f90 100644
--- a/cmdline/lib/nbproject/project.properties
+++ b/cmdline/lib/nbproject/project.properties
@@ -16,5 +16,4 @@
 is.autoload=true
 javac.source=1.7
 javac.compilerargs=-Xlint -Xlint:-serial
-requires.nb.javac=true
 spec.version.base=1.16.0
diff --git a/cmdline/lib/nbproject/project.xml b/cmdline/lib/nbproject/project.xml
index e151cb7..bbc68bc 100644
--- a/cmdline/lib/nbproject/project.xml
+++ b/cmdline/lib/nbproject/project.xml
@@ -92,14 +92,6 @@
                         <specification-version>1.6</specification-version>
                     </run-dependency>
                 </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.modules.jackpot30.remoting.api</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
                 <dependency>
                     <code-name-base>org.netbeans.modules.java.hints</code-name-base>
                     <run-dependency>
@@ -236,20 +228,15 @@
                         <compile-dependency/>
                     </test-dependency>
                     <test-dependency>
-                        <code-name-base>org.netbeans.modules.jackpot30.common</code-name-base>
-                        <compile-dependency/>
-                    </test-dependency>
-                    <test-dependency>
-                        <code-name-base>org.netbeans.modules.jackpot30.test.borrowed</code-name-base>
-                        <recursive/>
+                        <code-name-base>org.netbeans.modules.java.hints</code-name-base>
                         <compile-dependency/>
                     </test-dependency>
                     <test-dependency>
-                        <code-name-base>org.netbeans.modules.java.hints</code-name-base>
+                        <code-name-base>org.netbeans.modules.java.hints.declarative</code-name-base>
                         <compile-dependency/>
                     </test-dependency>
                     <test-dependency>
-                        <code-name-base>org.netbeans.modules.java.hints.declarative</code-name-base>
+                        <code-name-base>org.netbeans.modules.java.j2seplatform</code-name-base>
                         <compile-dependency/>
                     </test-dependency>
                     <test-dependency>
diff --git a/cmdline/lib/src/org/netbeans/modules/jackpot30/cmdline/lib/DumpHints.java b/cmdline/lib/src/org/netbeans/modules/jackpot30/cmdline/lib/DumpHints.java
index 485ba83..db46a0e 100644
--- a/cmdline/lib/src/org/netbeans/modules/jackpot30/cmdline/lib/DumpHints.java
+++ b/cmdline/lib/src/org/netbeans/modules/jackpot30/cmdline/lib/DumpHints.java
@@ -22,7 +22,7 @@
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
-import org.codeviation.pojson.Pojson;
+//import org.codeviation.pojson.Pojson;
 import org.netbeans.modules.java.hints.providers.spi.HintMetadata;
 import org.netbeans.modules.java.hints.spiimpl.RulesManager;
 
@@ -33,21 +33,22 @@
 public class DumpHints {
 
     public static String dumpHints() {
-        List<Map<String, String>> data = new LinkedList<Map<String, String>>();
-
-        for (HintMetadata hm : RulesManager.getInstance().readHints(null, null, null).keySet()) {
-            Map<String, String> hintData = new HashMap<String, String>();
-
-            hintData.put("id", hm.id);
-            hintData.put("category", hm.category);
-            hintData.put("displayName", hm.displayName);
-            hintData.put("description", hm.description);
-            hintData.put("enabled", Boolean.toString(hm.enabled));
-
-            data.add(hintData);
-        }
-
-        return Pojson.save(data);
+//        List<Map<String, String>> data = new LinkedList<Map<String, String>>();
+//
+//        for (HintMetadata hm : RulesManager.getInstance().readHints(null, null, null).keySet()) {
+//            Map<String, String> hintData = new HashMap<String, String>();
+//
+//            hintData.put("id", hm.id);
+//            hintData.put("category", hm.category);
+//            hintData.put("displayName", hm.displayName);
+//            hintData.put("description", hm.description);
+//            hintData.put("enabled", Boolean.toString(hm.enabled));
+//
+//            data.add(hintData);
+//        }
+//
+//        return Pojson.save(data);
+        throw new IllegalStateException();
     }
 
     public static void main(String[] args) {
diff --git a/cmdline/lib/src/org/netbeans/modules/jackpot30/cmdline/lib/StandaloneTools.java b/cmdline/lib/src/org/netbeans/modules/jackpot30/cmdline/lib/StandaloneTools.java
index 298e569..6dcfa74 100644
--- a/cmdline/lib/src/org/netbeans/modules/jackpot30/cmdline/lib/StandaloneTools.java
+++ b/cmdline/lib/src/org/netbeans/modules/jackpot30/cmdline/lib/StandaloneTools.java
@@ -65,6 +65,9 @@
 import org.openide.util.NbPreferences.Provider;
 import org.openide.util.lookup.Lookups;
 import org.openide.util.lookup.ServiceProvider;
+import org.openide.xml.EntityCatalog;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
 
 /**XXX: should not include JavaCustomIndexer for tools that do not strictly require it
  *
@@ -235,15 +238,13 @@ private static FileSystem createDefaultFS() {
                 List<URL> layers = new LinkedList<URL>();
                 boolean found = false;
 
-                for (Enumeration<URL> en = Thread.currentThread().getContextClassLoader().getResources("META-INF/generated-layer.xml"); en.hasMoreElements();) {
+                for (Enumeration<URL> en = RepositoryImpl.class.getClassLoader().getResources("META-INF/generated-layer.xml"); en.hasMoreElements();) {
                     found = true;
                     layers.add(en.nextElement());
                 }
 
                 assert found;
 
-                System.err.println("layers=" + layers);
-                
                 XMLFileSystem xmlFS = new XMLFileSystem();
 
                 xmlFS.setXmlUrls(layers.toArray(new URL[0]));
@@ -262,39 +263,11 @@ private static FileSystem createDefaultFS() {
 
         @Override
         public ClasspathInfo createUniversalCPInfo() {
-            return ClasspathInfo.create(sysProp2CP("sun.boot.class.path"), ClassPath.EMPTY, ClassPath.EMPTY);
+            return ClasspathInfo.create(Utils.createDefaultBootClassPath(), ClassPath.EMPTY, ClassPath.EMPTY);
         }
 
     }
 
-    //Copied from FallbackDefaultJavaPlatform:
-    private static ClassPath sysProp2CP(String propname) {
-        String sbcp = System.getProperty(propname);
-        if (sbcp == null) {
-            return null;
-        }
-        List<URL> roots = new ArrayList<URL>();
-        StringTokenizer tok = new StringTokenizer(sbcp, File.pathSeparator);
-        while (tok.hasMoreTokens()) {
-            File f = new File(tok.nextToken());
-            if (!f.exists()) {
-                continue;
-            }
-            f = FileUtil.normalizeFile(f);
-            URL u;
-            try {
-                u = f.toURI().toURL();
-            } catch (MalformedURLException x) {
-                throw new AssertionError(x);
-            }
-            if (FileUtil.isArchiveFile(u)) {
-                u = FileUtil.getArchiveRoot(u);
-            }
-            roots.add(u);
-        }
-        return ClassPathSupport.createClassPath(roots.toArray(new URL[roots.size()]));
-    }
-
     @ServiceProvider(service=MIMEResolver.class)
     public static final class JavaMimeResolver extends MIMEResolver {
 
@@ -355,4 +328,17 @@ public void removePropertyChangeListener(PropertyChangeListener listener) {
         }
 
     }
+
+    @ServiceProvider(service=EntityCatalog.class, position=100)
+    public static final class EntityCatalogImpl extends EntityCatalog {
+
+        @Override
+        public InputSource resolveEntity(String arg0, String arg1) throws SAXException, IOException {
+            if ("-//NetBeans//DTD Tool Configuration 1.0//EN".equals(arg0)) {
+                return new InputSource(EntityCatalogImpl.class.getResourceAsStream("/org/netbeans/modules/editor/tools/storage/ToolConfiguration-1_0.dtd"));
+            }
+            return null;
+        }
+
+    }
 }
diff --git a/cmdline/lib/src/org/netbeans/modules/jackpot30/cmdline/lib/Utils.java b/cmdline/lib/src/org/netbeans/modules/jackpot30/cmdline/lib/Utils.java
index 0bddeba..36ecc04 100644
--- a/cmdline/lib/src/org/netbeans/modules/jackpot30/cmdline/lib/Utils.java
+++ b/cmdline/lib/src/org/netbeans/modules/jackpot30/cmdline/lib/Utils.java
@@ -18,10 +18,27 @@
  */
 package org.netbeans.modules.jackpot30.cmdline.lib;
 
+import java.io.File;
+import java.lang.reflect.InvocationTargetException;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.regex.Pattern;
+import org.netbeans.api.annotations.common.NonNull;
+import org.netbeans.api.java.classpath.ClassPath;
 import org.netbeans.modules.java.hints.providers.spi.HintDescription;
+import org.netbeans.spi.java.classpath.PathResourceImplementation;
+import org.netbeans.spi.java.classpath.support.ClassPathSupport;
+import org.openide.filesystems.FileObject;
+import org.openide.filesystems.FileUtil;
+import org.openide.filesystems.URLMapper;
+import org.openide.util.BaseUtilities;
 
 /**
  *
@@ -68,4 +85,76 @@ public static String categoryName(String id, Map<String, String> id2DisplayName)
         put("!=", "not_equals");
     }};
 
+    //copied from BootClassPathUtil:
+    public static ClassPath createDefaultBootClassPath() {
+        String cp = System.getProperty("sun.boot.class.path");
+        if (cp != null) {
+            List<URL> urls = new ArrayList<>();
+            String[] paths = cp.split(Pattern.quote(System.getProperty("path.separator")));
+            for (String path : paths) {
+                File f = new File(path);
+
+                if (!f.canRead())
+                    continue;
+
+                FileObject fo = FileUtil.toFileObject(f);
+                if (FileUtil.isArchiveFile(fo)) {
+                    fo = FileUtil.getArchiveRoot(fo);
+                }
+                if (fo != null) {
+                    urls.add(fo.toURL());
+                }
+            }
+            return ClassPathSupport.createClassPath((URL[])urls.toArray(new URL[0]));
+        } else {
+            try {
+                Class.forName("org.netbeans.ProxyURLStreamHandlerFactory").getMethod("register")
+                                                                          .invoke(null);
+            } catch (ClassNotFoundException | NoSuchMethodException |
+                     SecurityException | IllegalAccessException |
+                    IllegalArgumentException | InvocationTargetException ex) {
+                throw new IllegalStateException(ex);
+            }
+            final List<PathResourceImplementation> modules = new ArrayList<>();
+            final File installDir = new File(System.getProperty("java.home"));
+            final URI imageURI = getImageURI(installDir);
+            try {
+                final FileObject jrtRoot = URLMapper.findFileObject(imageURI.toURL());
+                final FileObject root = getModulesRoot(jrtRoot);
+                for (FileObject module : root.getChildren()) {
+                    modules.add(ClassPathSupport.createResource(module.toURL()));
+                }
+            } catch (MalformedURLException e) {
+                throw new IllegalStateException(e);
+            }
+            if (modules.isEmpty()) {
+                throw new IllegalStateException("No modules!");
+            }
+            return ClassPathSupport.createClassPath(modules);
+        }
+    }
+
+    private static final String PROTOCOL = "nbjrt"; //NOI18N
+
+    private static URI getImageURI(@NonNull final File jdkHome) {
+        try {
+            return new URI(String.format(
+                "%s:%s!/%s",  //NOI18N
+                PROTOCOL,
+                BaseUtilities.toURI(jdkHome).toString(),
+                ""));
+        } catch (URISyntaxException e) {
+            throw new IllegalStateException();
+        }
+    }
+
+    @NonNull
+    private static FileObject getModulesRoot(@NonNull final FileObject jrtRoot) {
+        final FileObject modules = jrtRoot.getFileObject("modules");    //NOI18N
+        //jimage v1 - modules are located in the root
+        //jimage v2 - modules are located in "modules" folder
+        return modules == null ?
+            jrtRoot :
+            modules;
+    }
 }
diff --git a/cmdline/lib/test/unit/src/org/netbeans/modules/jackpot30/cmdline/lib/CreateStandaloneJar.java b/cmdline/lib/test/unit/src/org/netbeans/modules/jackpot30/cmdline/lib/CreateStandaloneJar.java
index 34d32ff..c8a023e 100644
--- a/cmdline/lib/test/unit/src/org/netbeans/modules/jackpot30/cmdline/lib/CreateStandaloneJar.java
+++ b/cmdline/lib/test/unit/src/org/netbeans/modules/jackpot30/cmdline/lib/CreateStandaloneJar.java
@@ -18,8 +18,6 @@
  */
 package org.netbeans.modules.jackpot30.cmdline.lib;
 
-import com.sun.source.tree.Tree;
-import com.sun.tools.javac.api.JavacTool;
 import java.io.BufferedWriter;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -31,6 +29,7 @@
 import java.io.UnsupportedEncodingException;
 import java.io.Writer;
 import java.net.URL;
+import java.net.URLStreamHandlerFactory;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -45,7 +44,6 @@
 import java.util.Set;
 import java.util.TreeMap;
 import java.util.jar.JarOutputStream;
-import java.util.jar.Manifest;
 import java.util.regex.Pattern;
 import java.util.zip.ZipEntry;
 import org.apache.lucene.analysis.tokenattributes.OffsetAttributeImpl;
@@ -57,11 +55,12 @@
 import org.netbeans.modules.classfile.ClassName;
 import org.netbeans.modules.editor.mimelookup.MimeLookupCacheSPI;
 import org.netbeans.modules.editor.mimelookup.SharedMimeLookupCache;
+import org.netbeans.modules.editor.tools.storage.api.ToolPreferences;
 import org.netbeans.modules.jackpot30.cmdline.lib.StandaloneTools.ActiveDocumentProviderImpl;
 import org.netbeans.modules.jackpot30.cmdline.lib.StandaloneTools.EditorMimeTypesImplementationImpl;
+import org.netbeans.modules.jackpot30.cmdline.lib.StandaloneTools.EntityCatalogImpl;
 import org.netbeans.modules.jackpot30.cmdline.lib.StandaloneTools.JavaMimeResolver;
 import org.netbeans.modules.jackpot30.cmdline.lib.StandaloneTools.RepositoryImpl;
-import org.netbeans.modules.jackpot30.common.api.IndexAccess;
 import org.netbeans.modules.java.classpath.DefaultGlobalPathRegistryImplementation;
 import org.netbeans.modules.java.hints.StandardJavacWarnings.CompilerSettingsImpl;
 import org.netbeans.modules.java.hints.declarative.DeclarativeHintRegistry;
@@ -73,8 +72,16 @@
 import org.netbeans.modules.java.hints.spiimpl.RulesManager;
 import org.netbeans.modules.java.hints.spiimpl.RulesManagerImpl;
 import org.netbeans.modules.java.hints.spiimpl.Utilities.SPI;
+import org.netbeans.modules.java.j2seplatform.platformdefinition.jrtfs.NBJRTURLMapper;
+import org.netbeans.modules.java.j2seplatform.platformdefinition.jrtfs.NBJRTURLStreamHandler;
 import org.netbeans.modules.java.source.DefaultPositionRefProvider;
 import org.netbeans.modules.java.source.PositionRefProvider;
+import org.netbeans.modules.java.source.indexing.JavaCustomIndexer.CompileWorkerProvider;
+import org.netbeans.modules.java.source.indexing.JavaCustomIndexer.DefaultCompileWorkerProvider;
+import org.netbeans.modules.java.source.parsing.JavacParser;
+import org.netbeans.modules.java.source.parsing.JavacParser.ContextEnhancer;
+import org.netbeans.modules.java.source.parsing.JavacParser.VanillaJavacContextEnhancer;
+import org.netbeans.modules.java.source.parsing.ModuleOraculum;
 import org.netbeans.modules.java.source.tasklist.CompilerSettings;
 import org.netbeans.modules.openide.util.DefaultMutexImplementation;
 import org.netbeans.modules.openide.util.NbMutexEventProvider;
@@ -88,8 +95,10 @@
 import org.netbeans.spi.editor.mimelookup.MimeDataProvider;
 import org.netbeans.spi.java.classpath.GlobalPathRegistryImplementation;
 import org.netbeans.spi.java.hints.Hint;
+import org.netbeans.spi.java.queries.CompilerOptionsQueryImplementation;
 import org.netbeans.spi.project.ProjectManagerImplementation;
 import org.openide.filesystems.MIMEResolver;
+import org.openide.filesystems.Repository;
 import org.openide.util.NbCollections;
 import org.openide.util.NbPreferences.Provider;
 import org.openide.util.spi.MutexEventProvider;
@@ -177,12 +186,12 @@ public void createCompiler(File targetCompilerFile, File targetHintsFile) throws
             Class<?> clazz = Class.forName(fqn, false, this.getClass().getClassLoader());
 
             if (    clazz.getProtectionDomain().getCodeSource() == null
-                && !clazz.getName().startsWith("com.sun.source")
-                && !clazz.getName().startsWith("com.sun.javadoc")
-                && !clazz.getName().startsWith("com.sun.tools")
-                && !clazz.getName().startsWith("javax.tools")
-                && !clazz.getName().startsWith("javax.annotation.processing")
-                && !clazz.getName().startsWith("javax.lang.model")) {
+                || clazz.getName().startsWith("com.sun.source")
+                || clazz.getName().startsWith("com.sun.javadoc")
+                || clazz.getName().startsWith("com.sun.tools")
+                || clazz.getName().startsWith("javax.tools")
+                || clazz.getName().startsWith("javax.annotation.processing")
+                || clazz.getName().startsWith("javax.lang.model")) {
                 //probably platform class:
                 continue;
             }
@@ -279,6 +288,14 @@ public InputSource resolveEntity(String publicId, String systemId) throws SAXExc
         registrations.add(new MetaInfRegistration(CompilerSettings.class.getName(), CompilerSettingsImpl.class.getName()));
         registrations.add(new MetaInfRegistration(MutexImplementation.class.getName(), DefaultMutexImplementation.class.getName()));
         registrations.add(new MetaInfRegistration(MutexEventProvider.class.getName(), NbMutexEventProvider.class.getName()));
+        registrations.add(new MetaInfRegistration(CompilerOptionsQueryImplementation.class.getName(), ModuleOraculum.class.getName()));
+        registrations.add(new MetaInfRegistration(URLStreamHandlerFactory.class.getName(), NBJRTURLStreamHandler.FactoryImpl.class.getName()));
+        registrations.add(new MetaInfRegistration(ContextEnhancer.class.getName(), JavacParser.VanillaJavacContextEnhancer.class.getName()));
+        registrations.add(new MetaInfRegistration(Repository.class.getName(), RepositoryImpl.class.getName()));
+        registrations.add(new MetaInfRegistration(RulesManager.class.getName(), RulesManagerImpl.class.getName()));
+        registrations.add(new MetaInfRegistration(EntityCatalog.class.getName(), EntityCatalogImpl.class.getName()));
+        registrations.add(new MetaInfRegistration(CompileWorkerProvider.class.getName(), DefaultCompileWorkerProvider.class.getName()));
+
         registrations.addAll(info.metaInf);
 
         Map<String, Collection<MetaInfRegistration>> api2Registrations = new HashMap<String, Collection<MetaInfRegistration>>();
@@ -496,7 +513,6 @@ private static String escapeJavaxLang(Info info, String fileName) throws Unsuppo
             "org.netbeans.core.NbLoaderPool",
             "org.netbeans.core.startup.preferences.PreferencesProviderImpl",
             "org.netbeans.modules.java.platform.DefaultJavaPlatformProvider",
-            IndexAccess.class.getName(),
             RulesManagerImpl.class.getName(),
             
             "com.sun.tools.javac.resources.compiler",
@@ -507,8 +523,6 @@ private static String escapeJavaxLang(Info info, String fileName) throws Unsuppo
 
 
             , "org.netbeans.modules.java.hints.legacy.spi.RulesManager$HintProviderImpl"
-            , Tree.class.getName()
-            ,JavacTool.class.getName()
             ,JavaMimeResolver.class.getName()
             , "org.netbeans.api.java.source.support.OpenedEditors",
             SharedMimeLookupCache.class.getName(),
@@ -520,7 +534,14 @@ private static String escapeJavaxLang(Info info, String fileName) throws Unsuppo
             NbMutexEventProvider.class.getName(),
             DefaultMutexImplementation.class.getName(),
             Utils.class.getName(),
-            IndexerControl.class.getName()
+            IndexerControl.class.getName(),
+            ModuleOraculum.class.getName(),
+            ToolPreferences.class.getName(),
+            NBJRTURLStreamHandler.FactoryImpl.class.getName(),
+            NBJRTURLMapper.class.getName(),
+            VanillaJavacContextEnhancer.class.getName(),
+            EntityCatalogImpl.class.getName(),
+            DefaultCompileWorkerProvider.class.getName()
         ));
 
     private static final Set<String> COPY_REGISTRATION = new HashSet<String>(Arrays.<String>asList(
@@ -529,7 +550,6 @@ private static String escapeJavaxLang(Info info, String fileName) throws Unsuppo
             "org.openide.util.Lookup",
             "org.netbeans.modules.openide.util.PreferencesProvider",
             ClassPathBasedHintProvider.class.getName(),
-            IndexAccess.class.getName(),
             RulesManager.class.getName(),
             MimeLookupCacheSPI.class.getName(),
             EnvironmentFactory.class.getName(),
@@ -539,21 +559,12 @@ private static String escapeJavaxLang(Info info, String fileName) throws Unsuppo
         ));
 
     private static final Set<String> RESOURCES = new HashSet<String>(Arrays.asList(
-        "com/sun/tools/javac/resources/javac_zh_CN.properties",
-        "com/sun/tools/javac/resources/compiler_ja.properties",
-        "com/sun/tools/javac/resources/compiler_zh_CN.properties",
-        "com/sun/tools/javac/resources/legacy.properties",
-        "com/sun/tools/javac/resources/compiler.properties",
-        "com/sun/tools/javac/resources/javac_ja.properties",
-        "com/sun/tools/javac/resources/javac.properties",
-        "com/sun/tools/javadoc/resources/javadoc.properties",
-        "com/sun/tools/javadoc/resources/javadoc_ja.properties",
-        "com/sun/tools/javadoc/resources/javadoc_zh_CN.properties",
         "org/netbeans/modules/java/source/resources/icons/error-badge.gif",
         "org/netbeans/modules/java/source/resources/layer.xml",
         "org/netbeans/modules/java/j2seproject/ui/resources/brokenProjectBadge.gif",
         "org/netbeans/modules/java/j2seproject/ui/resources/compileOnSaveDisabledBadge.gif",
-        "org/netbeans/modules/parsing/impl/resources/error-badge.gif"
+        "org/netbeans/modules/parsing/impl/resources/error-badge.gif",
+        "org/netbeans/modules/editor/tools/storage/ToolConfiguration-1_0.dtd"
     ));
 
 }
diff --git a/cmdline/maven/pom.xml b/cmdline/maven/pom.xml
index 3dca82f..474d465 100644
--- a/cmdline/maven/pom.xml
+++ b/cmdline/maven/pom.xml
@@ -21,7 +21,7 @@
 
   <groupId>org.netbeans.modules.jackpot30</groupId>
   <artifactId>jackpot30-maven-plugin</artifactId>
-  <version>1.0-SNAPSHOT</version>
+  <version>9.0-SNAPSHOT</version>
   <packaging>maven-plugin</packaging>
 
   <name>Jackpot 3.0 Command Line Tool Maven Bridge</name>
@@ -41,7 +41,7 @@
     <dependency>
       <groupId>org.netbeans.modules.jackpot30</groupId>
       <artifactId>tool</artifactId>
-      <version>7.3-SNAPSHOT</version>
+      <version>9.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>junit</groupId>
diff --git a/cmdline/nbproject/platform.properties b/cmdline/nbproject/platform.properties
index ef77a7e..a143850 100644
--- a/cmdline/nbproject/platform.properties
+++ b/cmdline/nbproject/platform.properties
@@ -15,25 +15,13 @@
 
 cluster.path=\
     ${nbplatform.active.dir}/apisupport:\
-    ${nbplatform.active.dir}/cnd:\
-    ${nbplatform.active.dir}/dlight:\
-    ${nbplatform.active.dir}/enterprise:\
+    ${nbplatform.active.dir}/extide:\
     ${nbplatform.active.dir}/harness:\
     ${nbplatform.active.dir}/ide:\
-    ${nbplatform.active.dir}/extide:\
     ${nbplatform.active.dir}/java:\
     ${nbplatform.active.dir}/nb:\
     ${nbplatform.active.dir}/platform:\
     ${nbplatform.active.dir}/profiler:\
-    ${nbplatform.active.dir}/websvccommon:\
-    ../borrowedtests/build/cluster:\
-    ../remoting/ide/build/cluster:\
-    ../language/ide/build/cluster:\
-    ../remoting/common/build/cluster
-extcluster.../language/ide/build/cluster.javadoc=
-extcluster.../language/ide/build/cluster.sources=
-extcluster.../remoting/common/build/cluster.javadoc=
-extcluster.../remoting/common/build/cluster.sources=
-extcluster.../remoting/ide/build/cluster.javadoc=
-extcluster.../remoting/ide/build/cluster.sources=
+    ${nbplatform.active.dir}/websvccommon
+nbjdk.active=default
 nbplatform.active=default
diff --git a/cmdline/nbproject/project.properties b/cmdline/nbproject/project.properties
index de70cb3..3585040 100644
--- a/cmdline/nbproject/project.properties
+++ b/cmdline/nbproject/project.properties
@@ -15,11 +15,7 @@
 
 modules=\
     ${project.org.netbeans.modules.jackpot30.cmdline.lib}:\
-    ${project.org.netbeans.modules.jackpot30.compiler}:\
-    ${project.org.netbeans.modules.jackpot30.cmdline}:\
-    ${project.org.netbeans.modules.jackpot30.ap}
-project.org.netbeans.modules.jackpot30.ap=ap
+    ${project.org.netbeans.modules.jackpot30.cmdline}
 project.org.netbeans.modules.jackpot30.cmdline=tool
 project.org.netbeans.modules.jackpot30.cmdline.lib=lib
-project.org.netbeans.modules.jackpot30.compiler=compiler
 
diff --git a/cmdline/tool/build.xml b/cmdline/tool/build.xml
index 595fc0f..191c89d 100644
--- a/cmdline/tool/build.xml
+++ b/cmdline/tool/build.xml
@@ -22,7 +22,21 @@
 <project name="org.netbeans.modules.jackpot30.cmdline" default="netbeans" basedir=".">
     <description>Builds, tests, and runs the project org.netbeans.modules.jackpot30.cmdline.</description>
     <import file="nbproject/build-impl.xml"/>
-    <import file="${suite.dir}/../findbugs-import.xml"/>
+    <!--<import file="${suite.dir}/../findbugs-import.xml"/>-->
+
+    <target name="-check-joptsimple">
+        <condition property="has.joptsimple">
+            <available file="lib/jopt-simple-3.2.jar" />
+        </condition>
+    </target>
+
+    <target name="-download-joptsimple" depends="-check-joptsimple" unless="has.joptsimple">
+        <mkdir dir="lib" />
+        <get src="http://central.maven.org/maven2/net/sf/jopt-simple/jopt-simple/3.2/jopt-simple-3.2.jar"
+             dest="lib/jopt-simple-3.2.jar" usetimestamp="true"/>
+    </target>
+
+    <target name="build-init" depends="harness.build-init,-download-joptsimple" />
 
     <target name="create-standalone-tool" depends="init,netbeans">
         <mkdir dir="${build.classes.dir}/../jackpot" />
@@ -49,5 +63,22 @@
     </target>
     
     <target name="test-build" depends="projectized-common.test-build,-prepare-scripted-tests" />
-    
+
+    <target name="-prepare-scripted-tests" depends="-check-scripted-tests" if="has.scripted.tests">
+        <mkdir dir="build/test/scripted" />
+        <copy todir="build/test/scripted">
+            <fileset dir="test/scripted"/>
+        </copy>
+        <copy todir="build/test/scripted">
+            <fileset dir="../test/scripted"/>
+        </copy>
+        <chmod dir="build/test/scripted" perm="u+x" includes="**/*" />
+    </target>
+
+    <target name="-check-scripted-tests" depends="build-init">
+        <condition property="has.scripted.tests" value="true">
+            <available file="test/scripted/config" />
+        </condition>
+    </target>
+
 </project>
diff --git a/cmdline/tool/nbproject/project.properties b/cmdline/tool/nbproject/project.properties
index 1a7c0b9..2c863ee 100644
--- a/cmdline/tool/nbproject/project.properties
+++ b/cmdline/tool/nbproject/project.properties
@@ -13,9 +13,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-javac.source=1.7
+javac.source=1.8
 javac.compilerargs=-Xlint -Xlint:-serial
-cp.extra=../../lib/jopt-simple/jopt-simple-3.2.jar
+cp.extra=lib/jopt-simple-3.2.jar:${tools.jar}
 spec.version.base=1.16.0
 test.timeout=6000000
-requires.nb.javac=true
diff --git a/cmdline/tool/nbproject/project.xml b/cmdline/tool/nbproject/project.xml
index 2aed2e3..0cced1a 100644
--- a/cmdline/tool/nbproject/project.xml
+++ b/cmdline/tool/nbproject/project.xml
@@ -91,23 +91,15 @@
                     </run-dependency>
                 </dependency>
                 <dependency>
-                    <code-name-base>org.netbeans.modules.jackpot30.cmdline.lib</code-name-base>
+                    <code-name-base>org.netbeans.modules.editor.tools.storage</code-name-base>
                     <build-prerequisite/>
                     <compile-dependency/>
                     <run-dependency>
-                        <implementation-version/>
+                        <specification-version>1.10</specification-version>
                     </run-dependency>
                 </dependency>
                 <dependency>
-                    <code-name-base>org.netbeans.modules.jackpot30.indexing</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <implementation-version/>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.modules.jackpot30.ui</code-name-base>
+                    <code-name-base>org.netbeans.modules.jackpot30.cmdline.lib</code-name-base>
                     <build-prerequisite/>
                     <compile-dependency/>
                     <run-dependency>
@@ -360,10 +352,6 @@
                         <compile-dependency/>
                         <test/>
                     </test-dependency>
-                    <test-dependency>
-                        <code-name-base>org.netbeans.modules.jackpot30.test.borrowed</code-name-base>
-                        <compile-dependency/>
-                    </test-dependency>
                     <test-dependency>
                         <code-name-base>org.netbeans.modules.java.freeform</code-name-base>
                         <recursive/>
diff --git a/cmdline/tool/scripts/jackpot b/cmdline/tool/scripts/jackpot
index a8a9073..39995c1 100755
--- a/cmdline/tool/scripts/jackpot
+++ b/cmdline/tool/scripts/jackpot
@@ -18,4 +18,4 @@
 
 JACKPOT_JAR=`readlink -f "$0"`
 JACKPOT_JAR=`dirname "$JACKPOT_JAR"`/jackpot.jar
-java -classpath `dirname "$JACKPOT_JAR"`/jackpot.jar org.netbeans.modules.jackpot30.cmdline.Main "$@"
+java --add-exports jdk.javadoc/com.sun.tools.javadoc.main=ALL-UNNAMED -classpath `dirname "$JACKPOT_JAR"`/jackpot.jar org.netbeans.modules.jackpot30.cmdline.Main "$@"
diff --git a/cmdline/tool/src/org/netbeans/modules/jackpot30/cmdline/Main.java b/cmdline/tool/src/org/netbeans/modules/jackpot30/cmdline/Main.java
index c830dcb..39d995a 100644
--- a/cmdline/tool/src/org/netbeans/modules/jackpot30/cmdline/Main.java
+++ b/cmdline/tool/src/org/netbeans/modules/jackpot30/cmdline/Main.java
@@ -28,8 +28,13 @@
 import java.io.IOException;
 import java.io.OutputStreamWriter;
 import java.io.PrintStream;
+import java.io.UncheckedIOException;
 import java.io.Writer;
+import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -45,12 +50,15 @@
 import java.util.Set;
 import java.util.TreeSet;
 import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicReference;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import java.util.prefs.AbstractPreferences;
 import java.util.prefs.BackingStoreException;
 import java.util.prefs.Preferences;
 import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+import javax.lang.model.SourceVersion;
 import javax.swing.JCheckBox;
 import javax.swing.JDialog;
 import javax.swing.JOptionPane;
@@ -65,16 +73,18 @@
 import org.netbeans.api.java.classpath.GlobalPathRegistry;
 import org.netbeans.api.java.source.CompilationController;
 import org.netbeans.api.java.source.ModificationResult;
-import org.netbeans.core.startup.MainLookup;
+import org.netbeans.modules.editor.tools.storage.api.ToolPreferences;
 import org.netbeans.modules.jackpot30.cmdline.lib.Utils;
-import org.netbeans.modules.jackpot30.ui.settings.XMLHintPreferences;
+//import org.netbeans.modules.jackpot30.ui.settings.XMLHintPreferences;
 import org.netbeans.modules.java.hints.declarative.DeclarativeHintRegistry;
 import org.netbeans.modules.java.hints.declarative.test.TestParser;
 import org.netbeans.modules.java.hints.declarative.test.TestParser.TestCase;
 import org.netbeans.modules.java.hints.declarative.test.TestPerformer;
+import org.netbeans.modules.java.hints.declarative.test.TestPerformer.TestClassPathProvider;
 import org.netbeans.modules.java.hints.jackpot.spi.PatternConvertor;
 import org.netbeans.modules.java.hints.providers.spi.HintDescription;
 import org.netbeans.modules.java.hints.providers.spi.HintMetadata;
+import org.netbeans.modules.java.hints.providers.spi.HintMetadata.Options;
 import org.netbeans.modules.java.hints.spiimpl.MessageImpl;
 import org.netbeans.modules.java.hints.spiimpl.RulesManager;
 import org.netbeans.modules.java.hints.spiimpl.batch.BatchSearch;
@@ -97,12 +107,15 @@
 import org.netbeans.spi.editor.hints.Fix;
 import org.netbeans.spi.editor.hints.Severity;
 import org.netbeans.spi.java.classpath.ClassPathProvider;
+import org.netbeans.spi.java.classpath.PathResourceImplementation;
 import org.netbeans.spi.java.classpath.support.ClassPathSupport;
 import org.netbeans.spi.java.hints.Hint.Kind;
 import org.netbeans.spi.java.queries.SourceLevelQueryImplementation2;
 import org.openide.filesystems.FileObject;
 import org.openide.filesystems.FileStateInvalidException;
 import org.openide.filesystems.FileUtil;
+import org.openide.filesystems.URLMapper;
+import org.openide.util.BaseUtilities;
 import org.openide.util.Exceptions;
 import org.openide.util.Lookup;
 import org.openide.util.Pair;
@@ -129,6 +142,12 @@ public static void main(String... args) throws IOException, ClassNotFoundExcepti
     }
 
     public static int compile(String... args) throws IOException, ClassNotFoundException {
+        try {
+            Class.forName("javax.lang.model.element.ModuleElement");
+        } catch (ClassNotFoundException ex) {
+            System.err.println("Error: no suitable javac found, please run on JDK 10+.");
+            return 1;
+        }
         System.setProperty("netbeans.user", "/tmp/tmp-foo");
 
         OptionParser parser = new OptionParser();
@@ -276,14 +295,16 @@ public static int compile(String... args) throws IOException, ClassNotFoundExcep
             boolean apply;
             boolean runDeclarative;
             boolean runDeclarativeTests;
+            boolean useDefaultEnabledSetting;
 
             if (parsed.has(configFile)) {
-                Preferences settingsFromConfigFile;
-                settingsFromConfigFile = XMLHintPreferences.from(parsed.valueOf(configFile));
-                hintSettingsPreferences = settingsFromConfigFile.node("settings");
-                apply = settingsFromConfigFile.getBoolean("apply", false);
-                runDeclarative = settingsFromConfigFile.getBoolean("runDeclarative", true);
-                runDeclarativeTests = settingsFromConfigFile.getBoolean("runDeclarativeTests", false);
+                ToolPreferences toolPrefs = ToolPreferences.from(parsed.valueOf(configFile).toURI());
+                hintSettingsPreferences = toolPrefs.getPreferences("hints", "text/x-java");
+                Preferences toolSettings = toolPrefs.getPreferences("standalone", "text/x-java");
+                apply = toolSettings.getBoolean("apply", false);
+                runDeclarative = toolSettings.getBoolean("runDeclarative", true);
+                runDeclarativeTests = toolSettings.getBoolean("runDeclarativeTests", false);
+                useDefaultEnabledSetting = true; //TODO: read from the configuration file?
                 if (parsed.has(hint)) {
                     System.err.println("cannot specify --hint and --config-file together");
                     return 1;
@@ -296,6 +317,7 @@ public static int compile(String... args) throws IOException, ClassNotFoundExcep
                 apply = false;
                 runDeclarative = true;
                 runDeclarativeTests = parsed.has(RUN_TESTS);
+                useDefaultEnabledSetting = false;
             }
 
             if (parsed.has(config) && !parsed.has(hint)) {
@@ -312,7 +334,7 @@ public static int compile(String... args) throws IOException, ClassNotFoundExcep
             GroupResult result = GroupResult.NOTHING_TO_DO;
 
             try (Writer outS = parsed.has(out) ? new BufferedWriter(new OutputStreamWriter(new FileOutputStream(parsed.valueOf(out)))) : null) {
-                GlobalConfiguration globalConfig = new GlobalConfiguration(hintSettingsPreferences, apply, runDeclarative, runDeclarativeTests, parsed.valueOf(hint), parsed.valueOf(hintFile), outS, parsed.has(OPTION_FAIL_ON_WARNINGS));
+                GlobalConfiguration globalConfig = new GlobalConfiguration(hintSettingsPreferences, apply, runDeclarative, runDeclarativeTests, useDefaultEnabledSetting, parsed.valueOf(hint), parsed.valueOf(hintFile), outS, parsed.has(OPTION_FAIL_ON_WARNINGS));
 
                 for (RootConfiguration groupConfig : groups) {
                     result = result.join(handleGroup(groupConfig, progress, globalConfig, parsed.valuesOf(config)));
@@ -401,7 +423,7 @@ private static GroupResult handleGroup(RootConfiguration rootConfiguration, Prog
 
         ProgressHandleWrapper progress = w.startNextPartWithEmbedding(1);
         Preferences settings = globalConfig.configurationPreferences != null ? globalConfig.configurationPreferences : new MemoryPreferences();
-        HintsSettings hintSettings = HintsSettings.createPreferencesBasedHintsSettings(settings, false, null);
+        HintsSettings hintSettings = HintsSettings.createPreferencesBasedHintsSettings(settings, globalConfig.useDefaultEnabledSetting, null);
 
         if (globalConfig.hint != null) {
             hints = findHints(rootConfiguration.sourceCP, rootConfiguration.binaryCP, globalConfig.hint, hintSettings);
@@ -504,29 +526,38 @@ private static GroupResult handleGroup(RootConfiguration rootConfiguration, Prog
             new SourceLevelQueryImpl(rootConfiguration.sourceCP, sourceLevel)
         };
 
-        try {
-            for (Object toRegister : register2Lookup) {
-                MainLookup.register(toRegister);
-            }
+        GroupResult[] result = new GroupResult[1];
 
-            if (globalConfig.apply) {
-                apply(hints, rootConfiguration.rootFolders.toArray(new Folder[0]), progress, hintSettings, globalConfig.out);
+        Lookups.executeWith(new ProxyLookup(Lookups.fixed(register2Lookup), Lookup.getDefault()), () -> {
+            try {
+                Field implementations = ClassPath.class.getDeclaredField("implementations");
+                implementations.setAccessible(true);
+                AtomicReference r = (AtomicReference) implementations.get(null);
+                r.set(null);
+            } catch (Throwable t) {
+                throw new IllegalStateException(t);
+            }
 
-                return GroupResult.SUCCESS; //TODO: WarningsAndErrors?
-            } else {
-                findOccurrences(hints, rootConfiguration.rootFolders.toArray(new Folder[0]), progress, hintSettings, wae);
+            try {
+                if (globalConfig.apply) {
+                    apply(hints, rootConfiguration.rootFolders.toArray(new Folder[0]), progress, hintSettings, globalConfig.out);
 
-                if (wae.errors != 0 || (wae.warnings != 0 && globalConfig.failOnWarnings)) {
-                    return GroupResult.FAILURE;
+                    result[0] = GroupResult.SUCCESS; //TODO: WarningsAndErrors?
                 } else {
-                    return GroupResult.SUCCESS;
+                    findOccurrences(hints, rootConfiguration.rootFolders.toArray(new Folder[0]), progress, hintSettings, wae);
+
+                    if (wae.errors != 0 || (wae.warnings != 0 && globalConfig.failOnWarnings)) {
+                        result[0] = GroupResult.FAILURE;
+                    } else {
+                        result[0] = GroupResult.SUCCESS;
+                    }
                 }
+            } catch (IOException t) {
+                throw new UncheckedIOException(t);
             }
-        } finally {
-            for (Object toUnRegister : register2Lookup) {
-                MainLookup.unregister(toUnRegister);
-            }
-        }
+        });
+
+        return result[0];
     }
 
     private static class MemoryPreferences extends AbstractPreferences {
@@ -655,7 +686,8 @@ public GroupResult join(GroupResult other) {
 
         for (Entry<HintMetadata, ? extends Collection<? extends HintDescription>> entry: all.entrySet()) {
             if (hardcoded.containsKey(entry.getKey())) {
-                if (toEnableIn.isEnabled(entry.getKey())) {
+                if (toEnableIn.isEnabled(entry.getKey()) && entry.getKey().kind == Kind.INSPECTION && !entry.getKey().options.contains(Options.NO_BATCH)) {
+                    System.err.println("enabled:" + entry.getKey().displayName);
                     descs.addAll(entry.getValue());
                 }
             } else {
@@ -684,6 +716,9 @@ private static void findOccurrences(Iterable<? extends HintDescription> descs, F
         BatchSearch.getVerifiedSpans(occurrences, w, new VerifiedSpansCallBack() {
             @Override public void groupStarted() {}
             @Override public boolean spansVerified(CompilationController wc, Resource r, Collection<? extends ErrorDescription> hints) throws Exception {
+                hints = hints.stream()
+                             .sorted((ed1, ed2) -> ed1.getRange().getBegin().getOffset() - ed2.getRange().getBegin().getOffset())
+                             .collect(Collectors.toList());
                 for (ErrorDescription ed : hints) {
                     print(ed, wae, id2DisplayName);
                 }
@@ -735,7 +770,8 @@ private static void apply(Iterable<? extends HintDescription> descs, Folder[] so
 
         if (out != null) {
             for (ModificationResult mr : diffs) {
-                org.netbeans.modules.jackpot30.indexing.batch.BatchUtilities.exportDiff(mr, null, out);
+                //XXX:
+//                org.netbeans.modules.jackpot30.indexing.batch.BatchUtilities.exportDiff(mr, null, out);
             }
         } else {
             for (ModificationResult mr : diffs) {
@@ -756,35 +792,6 @@ private static void printHints(ClassPath sourceFrom, ClassPath binaryFrom) throw
         }
     }
 
-    private static ClassPath createDefaultBootClassPath() throws IOException {
-        try {
-            String cp = System.getProperty("sun.boot.class.path");
-            List<URL> urls = new ArrayList<URL>();
-            String[] paths = cp.split(Pattern.quote(System.getProperty("path.separator")));
-
-            for (String path : paths) {
-                File f = new File(path);
-
-                if (!f.canRead())
-                    continue;
-
-                FileObject fo = FileUtil.toFileObject(FileUtil.normalizeFile(f));
-
-                if (FileUtil.isArchiveFile(fo)) {
-                    fo = FileUtil.getArchiveRoot(fo);
-                }
-
-                if (fo != null) {
-                    urls.add(fo.getURL());
-                }
-            }
-
-            return ClassPathSupport.createClassPath(urls.toArray(new URL[0]));
-        } catch (FileStateInvalidException e) {
-            throw e;
-        }
-    }
-
     private static ClassPath createClassPath(Iterable<? extends File> roots, ClassPath def) {
         if (roots == null) return def;
 
@@ -798,37 +805,37 @@ private static ClassPath createClassPath(Iterable<? extends File> roots, ClassPa
     }
 
     private static void showGUICustomizer(File settingsFile, ClassPath binaryCP, ClassPath sourceCP) throws IOException, BackingStoreException {
-        GlobalPathRegistry.getDefault().register(ClassPath.COMPILE, new ClassPath[] {binaryCP});
-        GlobalPathRegistry.getDefault().register(ClassPath.SOURCE, new ClassPath[] {sourceCP});
-        ClassPathBasedHintWrapper hints = new ClassPathBasedHintWrapper();
-        final Preferences p = XMLHintPreferences.from(settingsFile);
-        JPanel hintPanel = new HintsPanel(p.node("settings"), hints, true);
-        final JCheckBox runDeclarativeHints = new JCheckBox("Always Run Declarative Rules");
-
-        runDeclarativeHints.setToolTipText("Always run the declarative rules found on classpath? (Only those selected above will be run when unchecked.)");
-        runDeclarativeHints.setSelected(p.getBoolean("runDeclarative", true));
-        runDeclarativeHints.addActionListener(new ActionListener() {
-            @Override public void actionPerformed(ActionEvent e) {
-                p.putBoolean("runDeclarative", runDeclarativeHints.isSelected());
-            }
-        });
-
-        JPanel customizer = new JPanel(new BorderLayout());
-
-        customizer.add(hintPanel, BorderLayout.CENTER);
-        customizer.add(runDeclarativeHints, BorderLayout.SOUTH);
-        JOptionPane jop = new JOptionPane(customizer, JOptionPane.PLAIN_MESSAGE);
-        JDialog dialog = jop.createDialog("Select Hints");
-
-        jop.selectInitialValue();
-        dialog.setVisible(true);
-        dialog.dispose();
-
-        Object result = jop.getValue();
-
-        if (result.equals(JOptionPane.OK_OPTION)) {
-            p.flush();
-        }
+//        GlobalPathRegistry.getDefault().register(ClassPath.COMPILE, new ClassPath[] {binaryCP});
+//        GlobalPathRegistry.getDefault().register(ClassPath.SOURCE, new ClassPath[] {sourceCP});
+//        ClassPathBasedHintWrapper hints = new ClassPathBasedHintWrapper();
+//        final Preferences p = XMLHintPreferences.from(settingsFile);
+//        JPanel hintPanel = new HintsPanel(p.node("settings"), hints, true);
+//        final JCheckBox runDeclarativeHints = new JCheckBox("Always Run Declarative Rules");
+//
+//        runDeclarativeHints.setToolTipText("Always run the declarative rules found on classpath? (Only those selected above will be run when unchecked.)");
+//        runDeclarativeHints.setSelected(p.getBoolean("runDeclarative", true));
+//        runDeclarativeHints.addActionListener(new ActionListener() {
+//            @Override public void actionPerformed(ActionEvent e) {
+//                p.putBoolean("runDeclarative", runDeclarativeHints.isSelected());
+//            }
+//        });
+//
+//        JPanel customizer = new JPanel(new BorderLayout());
+//
+//        customizer.add(hintPanel, BorderLayout.CENTER);
+//        customizer.add(runDeclarativeHints, BorderLayout.SOUTH);
+//        JOptionPane jop = new JOptionPane(customizer, JOptionPane.PLAIN_MESSAGE);
+//        JDialog dialog = jop.createDialog("Select Hints");
+//
+//        jop.selectInitialValue();
+//        dialog.setVisible(true);
+//        dialog.dispose();
+//
+//        Object result = jop.getValue();
+//
+//        if (result.equals(JOptionPane.OK_OPTION)) {
+//            p.flush();
+//        }
     }
 
     static String[] splitGroupArg(String arg) {
@@ -889,7 +896,7 @@ public RootConfiguration(OptionSet parsed, GroupOptions groupOptions) throws IOE
                 }
             }
 
-            this.bootCP = createClassPath(parsed.has(groupOptions.bootclasspath) ? parsed.valuesOf(groupOptions.bootclasspath) : null, createDefaultBootClassPath());
+            this.bootCP = createClassPath(parsed.has(groupOptions.bootclasspath) ? parsed.valuesOf(groupOptions.bootclasspath) : null, Utils.createDefaultBootClassPath());
             this.compileCP = createClassPath(parsed.has(groupOptions.classpath) ? parsed.valuesOf(groupOptions.classpath) : null, ClassPath.EMPTY);
             this.sourceCP = createClassPath(parsed.has(groupOptions.sourcepath) ? parsed.valuesOf(groupOptions.sourcepath) : null, ClassPathSupport.createClassPath(roots.toArray(new FileObject[0])));
             this.binaryCP = ClassPathSupport.createProxyClassPath(bootCP, compileCP);
@@ -903,16 +910,18 @@ public RootConfiguration(OptionSet parsed, GroupOptions groupOptions) throws IOE
         private final boolean apply;
         private final boolean runDeclarative;
         private final boolean runDeclarativeTests;
+        private final boolean useDefaultEnabledSetting;
         private final String hint;
         private final File hintFile;
         private final Writer out;
         private final boolean failOnWarnings;
 
-        public GlobalConfiguration(Preferences configurationPreferences, boolean apply, boolean runDeclarative, boolean runDeclarativeTests, String hint, File hintFile, Writer out, boolean failOnWarnings) {
+        public GlobalConfiguration(Preferences configurationPreferences, boolean apply, boolean runDeclarative, boolean runDeclarativeTests, boolean useDefaultEnabledSetting, String hint, File hintFile, Writer out, boolean failOnWarnings) {
             this.configurationPreferences = configurationPreferences;
             this.apply = apply;
             this.runDeclarative = runDeclarative;
             this.runDeclarativeTests = runDeclarativeTests;
+            this.useDefaultEnabledSetting = useDefaultEnabledSetting;
             this.hint = hint;
             this.hintFile = hintFile;
             this.out = out;
@@ -1067,4 +1076,27 @@ private void doUpdate(boolean moveCaret) {
 
     }
 
+    @ServiceProvider(service=ClassPathProvider.class, position=9999/*DefaultClassPathProvider has 10000*/)
+    public static final class BCPFallBack implements ClassPathProvider {
+
+        @Override
+        public ClassPath findClassPath(FileObject file, String type) {
+            //hack, TestClassPathProvider does not have a reasonable position:
+            for (ClassPathProvider p : Lookup.getDefault().lookupAll(ClassPathProvider.class)) {
+                if (p instanceof TestClassPathProvider) {
+                    ClassPath cp = ((TestClassPathProvider) p).findClassPath(file, type);
+
+                    if (cp != null) {
+                        return cp;
+                    }
+                }
+            }
+
+            if (ClassPath.BOOT.equals(type)) {
+                return Utils.createDefaultBootClassPath();
+            }
+            return null;
+        }
+    
+    }
 }
diff --git a/cmdline/ap/src/org/netbeans/modules/jackpot30/ap/ProcessorImpl.java b/cmdline/tool/src/org/netbeans/modules/jackpot30/cmdline/ProcessorImpl.java
similarity index 53%
rename from cmdline/ap/src/org/netbeans/modules/jackpot30/ap/ProcessorImpl.java
rename to cmdline/tool/src/org/netbeans/modules/jackpot30/cmdline/ProcessorImpl.java
index 8e479ae..74784bc 100644
--- a/cmdline/ap/src/org/netbeans/modules/jackpot30/ap/ProcessorImpl.java
+++ b/cmdline/tool/src/org/netbeans/modules/jackpot30/cmdline/ProcessorImpl.java
@@ -16,21 +16,31 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.netbeans.modules.jackpot30.ap;
+package org.netbeans.modules.jackpot30.cmdline;
 
 import com.sun.source.tree.CompilationUnitTree;
 import com.sun.source.tree.Tree;
+import com.sun.source.util.JavacTask;
 import com.sun.source.util.SourcePositions;
+import com.sun.source.util.TaskEvent;
+import com.sun.source.util.TaskListener;
 import com.sun.source.util.TreePath;
 import com.sun.source.util.TreePathScanner;
 import com.sun.source.util.Trees;
+import com.sun.tools.javac.comp.Resolve;
+import com.sun.tools.javac.util.Context;
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
 import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.net.MalformedURLException;
+import java.net.URI;
 import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -44,7 +54,6 @@
 import java.util.logging.Logger;
 import java.util.prefs.AbstractPreferences;
 import java.util.prefs.BackingStoreException;
-import java.util.prefs.Preferences;
 import javax.annotation.processing.AbstractProcessor;
 import javax.annotation.processing.RoundEnvironment;
 import javax.annotation.processing.SupportedAnnotationTypes;
@@ -71,11 +80,12 @@
 import org.netbeans.modules.java.hints.spiimpl.options.HintsSettings;
 import org.netbeans.modules.parsing.impl.indexing.CacheFolder;
 import org.netbeans.spi.editor.hints.ErrorDescription;
-import org.netbeans.spi.editor.hints.Severity;
 import org.netbeans.spi.java.classpath.support.ClassPathSupport;
+import org.netbeans.spi.java.hints.Hint;
 import org.openide.filesystems.FileObject;
 import org.openide.filesystems.FileUtil;
 import org.openide.filesystems.URLMapper;
+import org.openide.util.Exceptions;
 import org.openide.util.Lookup;
 
 /**
@@ -87,144 +97,162 @@
 public class ProcessorImpl extends AbstractProcessor {
 
     public static final String CONFIGURATION_OPTION = "hintsConfiguration";
-    private final Map<URL, String> sources = new HashMap<>();
+    private final Map<URL, CompilationUnitTree> sources = new HashMap<>();
+    private static final Logger TOP_LOGGER = Logger.getLogger("");
 
     @Override
     public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
-        final Trees trees = Trees.instance(processingEnv);
 
         if (!roundEnv.processingOver()) {
+            Trees trees = Trees.instance(processingEnv);
             for (Element root : roundEnv.getRootElements()) {
                 TypeElement outtermost = outtermostType(root);
                 TreePath path = trees.getPath(outtermost);
-
                 if (path == null) {
                     //TODO: log
                     continue;
                 }
-
                 try {
-                    sources.put(path.getCompilationUnit().getSourceFile().toUri().toURL(), outtermost.getQualifiedName().toString());
+                    sources.put(path.getCompilationUnit().getSourceFile().toUri().toURL(), path.getCompilationUnit());
                 } catch (MalformedURLException ex) {
                     processingEnv.getMessager().printMessage(Kind.ERROR, "Unexpected exception: " + ex.getMessage());
                     Logger.getLogger(ProcessorImpl.class.getName()).log(Level.SEVERE, null, ex);
                 }
             }
         } else {
-            try {
-                Field contextField = processingEnv.getClass().getDeclaredField("context");
-                contextField.setAccessible(true);
-                Object context = contextField.get(processingEnv);
-                Method get = context.getClass().getDeclaredMethod("get", Class.class);
-                JavaFileManager fileManager = (JavaFileManager) get.invoke(context, JavaFileManager.class);
-
-                if (!(fileManager instanceof StandardJavaFileManager)) {
-                    processingEnv.getMessager().printMessage(Kind.ERROR, "The file manager is not a StandardJavaFileManager, cannot run Jackpot 3.0.");
-                    return false;
+            JavacTask.instance(processingEnv).addTaskListener(new TaskListener() {
+                @Override
+                public void started(TaskEvent e) {}
+                @Override
+                public void finished(TaskEvent evt) {
+                    if (evt.getKind() == TaskEvent.Kind.ENTER) {
+                        runHints();
+                    }
                 }
 
-                setupCache();
+            });
+        }
 
-                StandardJavaFileManager sfm = (StandardJavaFileManager) fileManager;
+        return false;
+    }
 
-                ClassPath bootCP = toClassPath(sfm.getLocation(StandardLocation.PLATFORM_CLASS_PATH));
-                ClassPath compileCP = toClassPath(sfm.getLocation(StandardLocation.CLASS_PATH));
-                Iterable<? extends File> sourcePathLocation = sfm.getLocation(StandardLocation.SOURCE_PATH);
-                ClassPath sourceCP = sourcePathLocation != null ? toClassPath(sourcePathLocation) : inferSourcePath();
+    private void runHints() {
+        Trees trees = Trees.instance(processingEnv);
+        Level originalLoggerLevel = TOP_LOGGER.getLevel();
+        Path toDelete = null;
+        try {
+            TOP_LOGGER.setLevel(Level.OFF);
+            System.setProperty("RepositoryUpdate.increasedLogLevel", "OFF");
+            Field contextField = processingEnv.getClass().getDeclaredField("context");
+            contextField.setAccessible(true);
+            Object context = contextField.get(processingEnv);
+            Method get = context.getClass().getDeclaredMethod("get", Class.class);
+            JavaFileManager fileManager = (JavaFileManager) get.invoke(context, JavaFileManager.class);
+
+            if (!(fileManager instanceof StandardJavaFileManager)) {
+                processingEnv.getMessager().printMessage(Kind.ERROR, "The file manager is not a StandardJavaFileManager, cannot run Jackpot 3.0.");
+                return ;
+            }
 
-                final Map<FileObject, String> sourceFiles = new HashMap<>();
+            setupCache();
 
-                for (Entry<URL, String> e : sources.entrySet()) {
-                    FileObject fo = URLMapper.findFileObject(e.getKey());
-                    if (fo == null) {
-                        //XXX:
-                        return false;
-                    }
-                    sourceFiles.put(fo, e.getValue());
-                }
+            StandardJavaFileManager sfm = (StandardJavaFileManager) fileManager;
+
+            ClassPath bootCP = /*XXX*/Utils.createDefaultBootClassPath();//toClassPath(sfm.getLocation(StandardLocation.PLATFORM_CLASS_PATH));
+            ClassPath compileCP = toClassPath(sfm.getLocation(StandardLocation.CLASS_PATH));
+            Iterable<? extends File> sourcePathLocation = sfm.getLocation(StandardLocation.SOURCE_PATH);
+            ClassPath sourceCP = sourcePathLocation != null ? toClassPath(sourcePathLocation) : inferSourcePath();
 
-                final Map<HintMetadata, ? extends Collection<? extends HintDescription>> allHints = RulesManager.getInstance().readHints(null, Arrays.asList(bootCP, compileCP, sourceCP), new AtomicBoolean());
-                List<HintDescription> hints = new ArrayList<>();
-                for (Collection<? extends HintDescription> v : allHints.values()) {
-                    hints.addAll(v);
+            final Map<FileObject, CompilationUnitTree> sourceFiles = new HashMap<>();
+
+            for (Entry<URL, CompilationUnitTree> e : sources.entrySet()) {
+                FileObject fo = URLMapper.findFileObject(e.getKey());
+                if (fo == null) {
+                    //XXX:
+                    return ;
                 }
-                final Map<String, String> id2DisplayName = Utils.computeId2DisplayName(hints);
-                final Map<HintMetadata, ? extends Collection<? extends HintDescription>> hardcodedHints = RulesManager.getInstance().readHints(null, null, new AtomicBoolean());
-                final HintsSettings settings;
-                String configurationFileLoc = processingEnv.getOptions().get(CONFIGURATION_OPTION);
-                File configurationFile = configurationFileLoc != null ? new File(configurationFileLoc) : null;
-
-                if (configurationFile == null || !configurationFile.canRead()) {
-                    settings = new HintsSettings() {
-
-                        @Override
-                        public boolean isEnabled(HintMetadata hm) {
-                            return !hardcodedHints.containsKey(hm) ? hm.enabled : false;
-                        }
+                sourceFiles.put(fo, e.getValue());
+            }
 
-                        @Override
-                        public void setEnabled(HintMetadata hm, boolean bln) {
-                            throw new UnsupportedOperationException();
-                        }
+            URI settingsURI;
+            String configurationFileLoc = processingEnv.getOptions().get(CONFIGURATION_OPTION);
+            File configurationFile = configurationFileLoc != null ? new File(configurationFileLoc) : null;
+
+            if (configurationFile == null || !configurationFile.canRead()) {
+                URL cfg = ProcessorImpl.class.getResource("/org/netbeans/modules/jackpot30/cmdline/cfg_hints.xml");
+                Path tmp = Files.createTempFile("cfg_hints", "xml"); //TODO: delete
+                try (InputStream cfgIn = cfg.openStream();
+                     OutputStream out = Files.newOutputStream(tmp)) {
+                    int read;
+                    while ((read = cfgIn.read()) != (-1))
+                        out.write(read);
+                }
+                settingsURI = tmp.toUri();
+                toDelete = tmp;
+            } else {
+                settingsURI = configurationFile.toURI();
+            }
 
-                        @Override
-                        public Preferences getHintPreferences(HintMetadata hm) {
-                            return new DummyPreferences(null, "");
-                        }
+            HintsSettings settings = HintsSettings.createPreferencesBasedHintsSettings(ToolPreferences.from(settingsURI).getPreferences("hints", "text/x-java"), true, null);
 
-                        @Override
-                        public Severity getSeverity(HintMetadata hm) {
-                            return hm.severity;
-                        }
+            final Map<HintMetadata, ? extends Collection<? extends HintDescription>> allHints = RulesManager.getInstance().readHints(null, Arrays.asList(bootCP, compileCP, sourceCP), new AtomicBoolean());
+            List<HintDescription> hints = new ArrayList<>();
 
-                        @Override
-                        public void setSeverity(HintMetadata hm, Severity svrt) {
-                            throw new UnsupportedOperationException();
-                        }
-                    };
-                } else {
-                    settings = HintsSettings.createPreferencesBasedHintsSettings(ToolPreferences.from(configurationFile.toURI()).getPreferences("hints", "text/x-java"), true, null);
+            for (Entry<HintMetadata, ? extends Collection<? extends HintDescription>> e : allHints.entrySet()) {
+                if (settings.isEnabled(e.getKey()) && e.getKey().kind == Hint.Kind.INSPECTION && !e.getKey().options.contains(HintMetadata.Options.NO_BATCH)) {
+                    hints.addAll(e.getValue());
                 }
+            }
+            final Map<String, String> id2DisplayName = Utils.computeId2DisplayName(hints);
+            ClasspathInfo cpInfo = new ClasspathInfo.Builder(bootCP).setClassPath(compileCP).setSourcePath(sourceCP).setModuleBootPath(bootCP).build();
 
-                ClasspathInfo cpInfo = ClasspathInfo.create(bootCP, compileCP, sourceCP);
+            JavaSource.create(cpInfo, sourceFiles.keySet()).runUserActionTask(new Task<CompilationController>() {
 
-                JavaSource.create(cpInfo, sourceFiles.keySet()).runUserActionTask(new Task<CompilationController>() {
+                @Override
+                public void run(CompilationController parameter) throws Exception {
+                    if (parameter.toPhase(JavaSource.Phase.RESOLVED).compareTo(JavaSource.Phase.RESOLVED) < 0) {
+                        return;
+                    }
 
-                    @Override
-                    public void run(CompilationController parameter) throws Exception {
-                        if (parameter.toPhase(JavaSource.Phase.RESOLVED).compareTo(JavaSource.Phase.RESOLVED) < 0) {
-                            return;
-                        }
+                    List<ErrorDescription> eds = new HintsInvoker(settings, /*XXX*/new AtomicBoolean()).computeHints(parameter, hints);
 
-                        List<ErrorDescription> eds = new HintsInvoker(settings, /*XXX*/new AtomicBoolean()).computeHints(parameter);
-
-                        if (eds != null) {
-                            for (ErrorDescription ed : eds) {
-                                String outtermost = sourceFiles.get(ed.getFile());
-                                TypeElement type = processingEnv.getElementUtils().getTypeElement(outtermost); //XXX: package-info!!!
-                                TreePath typePath = trees.getPath(type);
-                                TreePath posPath = pathFor(typePath.getCompilationUnit(), trees.getSourcePositions(), ed.getRange().getBegin().getOffset());
-                                String category = Utils.categoryName(ed.getId(), id2DisplayName);
-                                Kind diagKind;
-                                switch (ed.getSeverity()) {
-                                    case ERROR: diagKind = Kind.ERROR; break;
-                                    case VERIFIER:
-                                    case WARNING: diagKind = Kind.WARNING; break;
-                                    case HINT:
-                                    default: diagKind = Kind.NOTE; break;
-                                }
-                                trees.printMessage(diagKind, category + ed.getDescription(), posPath.getLeaf(), posPath.getCompilationUnit());
+                    if (eds != null) {
+                        //TODO: sort errors!!!
+                        for (ErrorDescription ed : eds) {
+                            CompilationUnitTree originalUnit = sourceFiles.get(ed.getFile());
+                            if (originalUnit == null) {
+                                //XXX: log properly!!!
+                                continue;
+                            }
+                            TreePath posPath = pathFor(originalUnit, trees.getSourcePositions(), ed.getRange().getBegin().getOffset());
+                            String category = Utils.categoryName(ed.getId(), id2DisplayName);
+                            Kind diagKind;
+                            switch (ed.getSeverity()) {
+                                case ERROR: diagKind = Kind.ERROR; break;
+                                case VERIFIER:
+                                case WARNING: diagKind = Kind.WARNING; break;
+                                case HINT:
+                                default: diagKind = Kind.NOTE; break;
                             }
+                            trees.printMessage(diagKind, category + ed.getDescription(), posPath.getLeaf(), posPath.getCompilationUnit());
                         }
                     }
-                }, true);
-            } catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException | NoSuchMethodException | InvocationTargetException | IOException ex) {
-                processingEnv.getMessager().printMessage(Kind.ERROR, "Unexpected exception: " + ex.getMessage());
-                Logger.getLogger(ProcessorImpl.class.getName()).log(Level.SEVERE, null, ex);
+                }
+            }, true);
+        } catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException | NoSuchMethodException | InvocationTargetException | IOException ex) {
+            processingEnv.getMessager().printMessage(Kind.ERROR, "Unexpected exception: " + ex.getMessage());
+            Logger.getLogger(ProcessorImpl.class.getName()).log(Level.SEVERE, null, ex);
+        } finally {
+            TOP_LOGGER.setLevel(originalLoggerLevel);
+            if (toDelete != null) {
+                try {
+                    Files.delete(toDelete);
+                } catch (IOException ex) {
+                    processingEnv.getMessager().printMessage(Kind.ERROR, "Unexpected exception: " + ex.getMessage());
+                    Logger.getLogger(ProcessorImpl.class.getName()).log(Level.SEVERE, null, ex);
+                }
             }
         }
-
-        return false;
     }
 
     private static ClassPath toClassPath(Iterable<? extends File> files) throws MalformedURLException {
@@ -257,9 +285,11 @@ private void setupCache() throws IOException {
     }
 
     private TypeElement outtermostType(Element el) {
-        while (el.getEnclosingElement().getKind() != ElementKind.PACKAGE) { //XXX: package-info!
+        while (/*XXX: package/module-info!*/el.getEnclosingElement() != null && el.getEnclosingElement().getKind() != ElementKind.PACKAGE) {
             el = el.getEnclosingElement();
         }
+        if (el.getKind() == ElementKind.PACKAGE || el.getKind().name().equals("MODULE"))
+            return null;
         return (TypeElement) el;
     }
 
@@ -292,13 +322,14 @@ public Void scan(Tree tree, Void p) {
     private ClassPath inferSourcePath() {
         if (sources.isEmpty())
             return ClassPath.EMPTY;
-        Entry<URL, String> e = sources.entrySet().iterator().next();
+        Entry<URL, CompilationUnitTree> e = sources.entrySet().iterator().next();
         FileObject sourceRoot = URLMapper.findFileObject(e.getKey());
         if (sourceRoot == null) {
             //unexpected
             return ClassPath.EMPTY;
         }
-        for (String part : e.getValue().split("\\.")) {
+        sourceRoot = sourceRoot.getParent();
+        for (String part : e.getValue().getPackageName().toString().split("\\.")) {
             sourceRoot = sourceRoot.getParent();
         }
         return ClassPathSupport.createClassPath(sourceRoot);
@@ -319,6 +350,15 @@ public SourceVersion getSupportedSourceVersion() {
         }
     }
 
+    private static final class ModuleAndClass {
+        public final String module;
+        public final String name;
+        public ModuleAndClass(String module, String name) {
+            this.module = module;
+            this.name = name;
+        }
+    }
+
     private static final class DummyPreferences extends AbstractPreferences {
 
         private final Map<String, String> values = new HashMap<>();
diff --git a/cmdline/tool/src/org/netbeans/modules/jackpot30/cmdline/cfg_hints.xml b/cmdline/tool/src/org/netbeans/modules/jackpot30/cmdline/cfg_hints.xml
new file mode 100644
index 0000000..76c8954
--- /dev/null
+++ b/cmdline/tool/src/org/netbeans/modules/jackpot30/cmdline/cfg_hints.xml
@@ -0,0 +1,241 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE configuration PUBLIC "-//NetBeans//DTD Tool Configuration 1.0//EN" "http://www.netbeans.org/dtds/ToolConfiguration-1_0.dtd">
+<configuration>
+    <tool kind="hints" type="text/x-java">
+        <node name="org.netbeans.modules.java.hints.IncompatibleMask">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.ShiftOutOfRange">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.PointlessBitwiseExpression">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.ClassStructure.finalPrivateMethod">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.jdk.ConvertToStringSwitch">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.perf.SizeEqualsZero">
+            <attribute name="check.not.equals" value="true"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.finalize.FinalizeDeclared">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="o.n.m.j2ee.jpa.verification.NoIdClassOnEntitySubclass">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="Javac_canUseDiamond">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.apisupport.hints.HelpCtxHint">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="o.n.m.j2ee.jpa.verification.IdClassOverridesEqualsAndHashCode">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.jdk.UnnecessaryBoxing.run">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="o.n.m.j2ee.jpa.verification.HasNoArgConstructor">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="o.n.m.j2ee.jpa.verification.QueriesProperlyDefined">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.jdk.JoinCatches">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="Imports_DEFAULT_PACKAGE">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.errors.ErrorFixesFakeHintCREATE_FINAL_FIELD_CTOR">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.suggestions.ConstantNameHint">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="o.n.m.j2ee.jpa.verification.OnlyEntityOrMappedSuperclassCanUseIdClass">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.ExportNonAccessibleElement">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="Imports_EXCLUDED">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="o.n.m.j2ee.jpa.verification.ValidAttributes">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="o.n.m.j2ee.jpa.verification.IdDefinedInHierarchy">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.SuspiciousNamesCombination">
+            <attribute name="groups" value="x, width|y, height"/>
+        </node>
+        <node name="o.n.m.j2ee.jpa.verification.NonFinalClass">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.jdk.IndexOfToContains">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.LoggerNotStaticFinal">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.errors.ErrorFixesFakeHintSURROUND_WITH_TRY_CATCH">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.jackpot.hintsimpl.LoggerStringConcat">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.jdk.UseSpecificCatch">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="o.n.m.j2ee.jpa.verification.PublicClass">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.MultipleLoggers">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="EmptyStatements_WHILE_LOOP">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="create-javadoc">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.suggestions.ConvertIfToSwitch">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.perf.Tiny.constantIntern">
+            <attribute name="enabled" value="true"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.testing.Tiny.assertEqualsForArrays">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.jdk.ConvertToARM">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="EmptyStatements_DO_WHILE_LOOP">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.StaticNonFinalUsedInInitialization">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.testing.Tiny.incovertibleTypes">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="o.n.m.j2ee.jpa.verification.JPAAnnotsOnlyOnAccesor">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="o.n.m.j2ee.jpa.verification.LegalCombinationOfAnnotations">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.bugs.NPECheck">
+            <attribute name="unboxing-unknown" value="false"/>
+            <attribute name="enable-for-fields" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.jdk.IteratorToFor">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="o.n.m.j2ee.jpa.verification.ValidPrimaryTableName">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.testing.Tiny.mismatchedConstantVSReal">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="EmptyStatements_FOR_LOOP">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="o.n.m.j2ee.jpa.verification.SerializableClass">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="o.n.m.j2ee.jpa.verification.PersistenceUnitPresent">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="EmptyStatements_BLOCK">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.finalize.FinalizeDoesNotCallSuper">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="Javac_canUseLambda">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.perf.Tiny.getClassInsteadOfDotClass">
+            <attribute name="enabled" value="true"/>
+        </node>
+        <node name="Imports_SAME_PACKAGE">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="Imports_UNUSED">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="Inspection.hint">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.errors.ErrorFixesFakeHintCREATE_LOCAL_VARIABLE">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.apisupport.hints.UseNbBundleMessages">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.LeakingThisInConstructor">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.InitializerCanBeStatic">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.OverridableMethodCallInConstructor">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="o.n.m.j2ee.jpa.verification.UniqueEntityName">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.errors.ErrorFixesFakeHintIMPORT_CLASS">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.jdk.ConvertToVarHint">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="o.n.m.j2ee.jpa.verification.TopLevelClass">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.ObsoleteCollection">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.jdk.ConvertVarToExplicitType">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.finalize.CallFinalize">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.jdk.UnnecessaryUnboxing">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="o.n.m.j2ee.jpa.verification.JPQLValidation">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="MAVEN_SEARCH_HINT">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.jdk.AnnotationProcessors.oGSA">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="o.n.m.j2ee.jpa.verification.ConsistentAccessType">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="error-in-javadoc">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.AddOverrideAnnotation">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="AnnotationAsSuperInterface">
+            <attribute name="enabled" value="false"/>
+        </node>
+        <node name="org.netbeans.modules.java.hints.perf.Tiny.stringEqualsEmpty">
+            <attribute name="enabled" value="true"/>
+        </node>
+    </tool>
+</configuration>
diff --git a/cmdline/tool/test/unit/src/org/netbeans/modules/jackpot30/cmdline/CreateTool.java b/cmdline/tool/test/unit/src/org/netbeans/modules/jackpot30/cmdline/CreateTool.java
index 9388d1f..1418643 100644
--- a/cmdline/tool/test/unit/src/org/netbeans/modules/jackpot30/cmdline/CreateTool.java
+++ b/cmdline/tool/test/unit/src/org/netbeans/modules/jackpot30/cmdline/CreateTool.java
@@ -19,6 +19,8 @@
 package org.netbeans.modules.jackpot30.cmdline;
 
 import java.util.regex.Pattern;
+import javax.annotation.processing.Processor;
+import org.netbeans.modules.jackpot30.cmdline.Main.BCPFallBack;
 import org.netbeans.modules.jackpot30.cmdline.lib.CreateStandaloneJar;
 import org.netbeans.modules.jackpot30.cmdline.lib.CreateStandaloneJar.Info;
 import org.netbeans.modules.java.hints.declarative.PatternConvertorImpl;
@@ -27,6 +29,7 @@
 import org.netbeans.modules.java.j2seproject.J2SEProject;
 import org.netbeans.modules.java.platform.DefaultJavaPlatformProvider;
 import org.netbeans.modules.project.ui.OpenProjectsTrampolineImpl;
+import org.netbeans.spi.java.classpath.ClassPathProvider;
 
 /**
  *
@@ -40,13 +43,14 @@ public CreateTool(String name) {
 
     @Override
     protected Info computeInfo() {
-        return new Info().addAdditionalRoots(Main.class.getName(), DeclarativeHintsTestBase.class.getName(), OpenProjectsTrampolineImpl.class.getName(), J2SEProject.class.getName(), DefaultJavaPlatformProvider.class.getName(), PatternConvertorImpl.class.getName())
-                         .addAdditionalResources("org/netbeans/modules/java/hints/resources/Bundle.properties", "org/netbeans/modules/java/hints/declarative/resources/Bundle.properties")
+        return new Info().addAdditionalRoots(Main.class.getName(), DeclarativeHintsTestBase.class.getName(), OpenProjectsTrampolineImpl.class.getName(), J2SEProject.class.getName(), DefaultJavaPlatformProvider.class.getName(), PatternConvertorImpl.class.getName(), ProcessorImpl.class.getName(), BCPFallBack.class.getName())
+                         .addAdditionalResources("org/netbeans/modules/java/hints/resources/Bundle.properties", "org/netbeans/modules/java/hints/declarative/resources/Bundle.properties", "org/netbeans/modules/jackpot30/cmdline/cfg_hints.xml")
                          .addAdditionalLayers("org/netbeans/modules/java/hints/resources/layer.xml", "org/netbeans/modules/java/hints/declarative/resources/layer.xml")
                          .addMetaInfRegistrations(new MetaInfRegistration(org.netbeans.modules.project.uiapi.OpenProjectsTrampoline.class, OpenProjectsTrampolineImpl.class))
+                         .addMetaInfRegistrations(new MetaInfRegistration(Processor.class, ProcessorImpl.class))
+                         .addMetaInfRegistrations(new MetaInfRegistration(ClassPathProvider.class.getName(), BCPFallBack.class.getName(), 9999))
                          .addMetaInfRegistrationToCopy(PatternConvertor.class.getName())
-                         .addExcludePattern(Pattern.compile("junit\\.framework\\..*"))
-                         .setEscapeJavaxLang();
+                         .addExcludePattern(Pattern.compile("junit\\.framework\\..*"));
     }
 
 }
diff --git a/cmdline/tool/test/unit/src/org/netbeans/modules/jackpot30/cmdline/CreateToolProcessorTest.java b/cmdline/tool/test/unit/src/org/netbeans/modules/jackpot30/cmdline/CreateToolProcessorTest.java
new file mode 100644
index 0000000..49f55ee
--- /dev/null
+++ b/cmdline/tool/test/unit/src/org/netbeans/modules/jackpot30/cmdline/CreateToolProcessorTest.java
@@ -0,0 +1,137 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.netbeans.modules.jackpot30.cmdline;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Arrays;
+import java.util.LinkedList;
+import java.util.List;
+import junit.extensions.TestSetup;
+import junit.framework.Test;
+import org.netbeans.junit.NbTestSuite;
+import org.openide.filesystems.FileUtil;
+import org.openide.util.Exceptions;
+
+/**
+ *
+ * @author lahvac
+ */
+public class CreateToolProcessorTest extends ProcessorImplTest {
+
+    public CreateToolProcessorTest(String name) {
+        super(name);
+    }
+
+    private static File compiler;
+
+    @Override
+    protected void reallyRunCompiler(File workDir, int exitcode, String[] output, String... params) throws Exception {
+        assertNotNull(compiler);
+        List<String> ll = new LinkedList<String>();
+        ll.addAll(Utils.findJavacLauncher());
+
+//        ll.add("-J-Xdebug");
+//        ll.add("-J-Xrunjdwp:transport=dt_socket,suspend=y,server=y,address=8889");
+
+        ll.add("-classpath"); ll.add(compiler.getAbsolutePath());
+        ll.addAll(Arrays.asList(params));
+        System.err.println("ll=" + ll);
+        try {
+            Process p = Runtime.getRuntime().exec(ll.toArray(new String[0]), null, workDir);
+            CopyStream outCopy = new CopyStream(p.getInputStream(), output, 0);
+            CopyStream errCopy = new CopyStream(p.getErrorStream(), output, 1);
+
+            outCopy.start();
+            errCopy.start();
+
+            assertEquals(exitcode, p.waitFor());
+
+            outCopy.doJoin();
+            errCopy.doJoin();
+        } catch (Throwable t) {
+            throw new IOException(t);
+        }
+    }
+
+    private static final class CopyStream extends Thread {
+        private final InputStream ins;
+        private final ByteArrayOutputStream out;
+        private final String[] target;
+        private final int targetIndex;
+
+        public CopyStream(InputStream ins, String[] target, int targetIndex) {
+            this.ins = ins;
+            this.out = new ByteArrayOutputStream();
+            this.target = target;
+            this.targetIndex = targetIndex;
+        }
+
+        @Override
+        public void run() {
+            try {
+                FileUtil.copy(ins, out);
+            } catch (IOException ex) {
+                Exceptions.printStackTrace(ex);
+            } finally {
+                try {
+                    ins.close();
+                } catch (IOException ex) {
+                    Exceptions.printStackTrace(ex);
+                }
+            }
+        }
+
+        public void doJoin() throws InterruptedException, IOException {
+            join(60000);
+            out.close();
+            target[targetIndex] = new String(out.toByteArray());
+        }
+
+    }
+
+    public static Test suite() {
+        NbTestSuite suite = new NbTestSuite();
+
+        suite.addTestSuite(CreateToolProcessorTest.class);
+
+        return new TestSetup(suite) {
+            private File hintsList;
+            protected void setUp() throws Exception {
+                compiler = File.createTempFile("jackpot", ".jar");
+//                compiler = new File("/tmp/jackpot.jar");
+                hintsList = File.createTempFile("hints", "list");
+
+//                if (!compiler.canRead()) {
+                    new CreateTool("").createCompiler(compiler, hintsList);
+//                }
+            }
+            protected void tearDown() {
+                compiler.delete();
+                hintsList.delete();
+                compiler = null;
+                hintsList = null;
+            }
+        };
+    }
+
+}
diff --git a/cmdline/tool/test/unit/src/org/netbeans/modules/jackpot30/cmdline/CreateToolTest.java b/cmdline/tool/test/unit/src/org/netbeans/modules/jackpot30/cmdline/CreateToolTest.java
index 6db5b71..2e3fe02 100644
--- a/cmdline/tool/test/unit/src/org/netbeans/modules/jackpot30/cmdline/CreateToolTest.java
+++ b/cmdline/tool/test/unit/src/org/netbeans/modules/jackpot30/cmdline/CreateToolTest.java
@@ -23,7 +23,6 @@
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.OutputStream;
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -54,8 +53,8 @@ public CreateToolTest(String name) {
     protected void reallyRunCompiler(File workingDir, int exitcode, String[] output, String... params) throws Exception {
         assertNotNull(compiler);
         List<String> ll = new LinkedList<String>();
-        ll.add("java");
-        ll.add("-Xbootclasspath/p:" + compiler.getAbsolutePath());
+        ll.addAll(Utils.findJavaLauncher());
+        ll.add("-classpath"); ll.add(compiler.getAbsolutePath());
 
 //        ll.add("-Xdebug");
 //        ll.add("-Xrunjdwp:transport=dt_socket,suspend=y,server=y,address=8889");
@@ -85,7 +84,7 @@ protected void reallyRunCompiler(File workingDir, int exitcode, String[] output,
     @Override
     protected void runAndTest(File classes) throws Exception {
         List<String> ll = new LinkedList<String>();
-        ll.add("java");
+        ll.addAll(Utils.findJavaLauncher());
         ll.add("-classpath");
         ll.add(compiler.getAbsolutePath() + File.pathSeparator + classes.getAbsolutePath() + File.pathSeparator + new File(JUnitCore.class.getProtectionDomain().getCodeSource().getLocation().toURI()).getAbsolutePath() + File.pathSeparator + new File(Condition.class.getProtectionDomain().getCodeSource().getLocation().toURI()).getAbsolutePath());
 
diff --git a/cmdline/tool/test/unit/src/org/netbeans/modules/jackpot30/cmdline/MainTest.java b/cmdline/tool/test/unit/src/org/netbeans/modules/jackpot30/cmdline/MainTest.java
index ed7bfbf..f8db885 100644
--- a/cmdline/tool/test/unit/src/org/netbeans/modules/jackpot30/cmdline/MainTest.java
+++ b/cmdline/tool/test/unit/src/org/netbeans/modules/jackpot30/cmdline/MainTest.java
@@ -21,9 +21,7 @@
 
 import java.io.ByteArrayOutputStream;
 import java.io.File;
-import java.io.FileOutputStream;
 import java.io.IOException;
-import java.io.InputStream;
 import java.io.PrintStream;
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -38,9 +36,7 @@
 import javax.tools.SimpleJavaFileObject;
 import javax.tools.ToolProvider;
 import org.junit.runner.Result;
-import org.netbeans.api.java.source.TestUtilities;
 import org.netbeans.junit.NbTestCase;
-import org.openide.filesystems.FileUtil;
 
 /**XXX: should also test error conditions
  *
@@ -195,11 +191,51 @@ public void testConfigurationFile() throws Exception {
                       "}\n",
                       "settings.xml",
                       "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
-                      "<hints apply=\"true\">\n" +
-                      "    <settings>\n" +
-                      "        <org.netbeans.modules.java.hints.perf.SizeEqualsZero check.not.equals=\"false\" enabled=\"true\" hintSeverity=\"VERIFIER\"/>\n" +
-                      "    </settings>\n" +
-                      "</hints>\n",
+                      "<!DOCTYPE configuration PUBLIC \"-//NetBeans//DTD Tool Configuration 1.0//EN\" \"http://www.netbeans.org/dtds/ToolConfiguration-1_0.dtd\">\n" +
+                      "<configuration>\n" +
+                      "    <tool kind=\"hints\" type=\"text/x-java\">\n" +
+                      "        <node name=\"org.netbeans.modules.java.hints.perf.SizeEqualsZero\">\n" +
+                      "            <attribute name=\"enabled\" value=\"true\"/>\n" +
+                      "        </node>\n" +
+                      "    </tool>\n" +
+                      "    <tool kind=\"standalone\" type=\"text/x-java\">\n" +
+                      "        <attribute name=\"apply\" value=\"true\"/>\n" +
+                      "    </tool>\n" +
+                      "</configuration>\n",
+                      null,
+                      "--config-file",
+                      "${workdir}/settings.xml",
+                      "--source",
+                      "1.6");
+    }
+
+    public void testConfigurationFileDisable() throws Exception {
+        String golden =
+            "package test;\n" +
+            "public class Test {\n" +
+            "    private void test(java.util.Collection c) {\n" +
+            "        boolean b = c.size() == 0;\n" +
+            "    }\n" +
+            "}\n";
+
+        doRunCompiler(golden,
+                      null,
+                      null,
+                      "src/test/Test.java",
+                      golden,
+                      "settings.xml",
+                      "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+                      "<!DOCTYPE configuration PUBLIC \"-//NetBeans//DTD Tool Configuration 1.0//EN\" \"http://www.netbeans.org/dtds/ToolConfiguration-1_0.dtd\">\n" +
+                      "<configuration>\n" +
+                      "    <tool kind=\"hints\" type=\"text/x-java\">\n" +
+                      "        <node name=\"org.netbeans.modules.java.hints.perf.SizeEqualsZero\">\n" +
+                      "            <attribute name=\"enabled\" value=\"false\"/>\n" +
+                      "        </node>\n" +
+                      "    </tool>\n" +
+                      "    <tool kind=\"standalone\" type=\"text/x-java\">\n" +
+                      "        <attribute name=\"apply\" value=\"true\"/>\n" +
+                      "    </tool>\n" +
+                      "</configuration>\n",
                       null,
                       "--config-file",
                       "${workdir}/settings.xml",
@@ -230,11 +266,17 @@ public void testConfigurationFileCmdLineOverride() throws Exception {
                       "}\n",
                       "settings.xml",
                       "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
-                      "<hints apply=\"true\">\n" +
-                      "    <settings>\n" +
-                      "        <org.netbeans.modules.java.hints.perf.SizeEqualsZero check.not.equals=\"false\" enabled=\"true\" hintSeverity=\"VERIFIER\"/>\n" +
-                      "    </settings>\n" +
-                      "</hints>\n",
+                      "<!DOCTYPE configuration PUBLIC \"-//NetBeans//DTD Tool Configuration 1.0//EN\" \"http://www.netbeans.org/dtds/ToolConfiguration-1_0.dtd\">\n" +
+                      "<configuration>\n" +
+                      "    <tool kind=\"hints\" type=\"text/x-java\">\n" +
+                      "        <node name=\"org.netbeans.modules.java.hints.perf.SizeEqualsZero\">\n" +
+                      "            <attribute name=\"enabled\" value=\"true\"/>\n" +
+                      "        </node>\n" +
+                      "    </tool>\n" +
+                      "    <tool kind=\"standalone\" type=\"text/x-java\">\n" +
+                      "        <attribute name=\"apply\" value=\"true\"/>\n" +
+                      "    </tool>\n" +
+                      "</configuration>\n",
                       null,
                       "--config-file",
                       "${workdir}/settings.xml",
@@ -299,11 +341,66 @@ public void testConfigurationFileDeclarative1() throws Exception {
                       "$c.size() <= 0 :: $c instanceof java.util.Collection => $c.isEmpty();;\n",
                       "settings.xml",
                       "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
-                      "<hints apply=\"true\" runDeclarative=\"false\">\n" +
-                      "    <settings>\n" +
-                      "        <test1.hint enabled=\"true\"/>\n" +
-                      "    </settings>\n" +
-                      "</hints>\n",
+                      "<!DOCTYPE configuration PUBLIC \"-//NetBeans//DTD Tool Configuration 1.0//EN\" \"http://www.netbeans.org/dtds/ToolConfiguration-1_0.dtd\">\n" +
+                      "<configuration>\n" +
+                      "    <tool kind=\"hints\" type=\"text/x-java\">\n" +
+                      "        <node name=\"org.netbeans.modules.java.hints.perf.SizeEqualsZero\">\n" +
+                      "            <attribute name=\"enabled\" value=\"false\"/>\n" +
+                      "        </node>\n" +
+                      "        <node name=\"test1.hint\">\n" +
+                      "            <attribute name=\"enabled\" value=\"true\"/>\n" +
+                      "        </node>\n" +
+                      "    </tool>\n" +
+                      "    <tool kind=\"standalone\" type=\"text/x-java\">\n" +
+                      "        <attribute name=\"apply\" value=\"true\"/>\n" +
+                      "        <attribute name=\"runDeclarative\" value=\"false\"/>\n" +
+                      "    </tool>\n" +
+                      "</configuration>\n",
+                      null,
+                      "--config-file",
+                      "${workdir}/settings.xml",
+                      "--source",
+                      "1.6");
+    }
+
+    public void testConfigurationFileDeclarative1a() throws Exception {
+        String code =
+            "package test;\n" +
+            "public class Test {\n" +
+            "    private void test(java.util.Collection c) {\n" +
+            "        boolean b1 = c.size() == 0;\n" +
+            "        boolean b2 = c.size() <= 0;\n" +
+            "    }\n" +
+            "}\n";
+
+        doRunCompiler(code,
+                      "${workdir}/src/test/Test.java:4: warning: [test1] test1\n" +
+                      "        boolean b1 = c.size() == 0;\n" +
+                      "                     ^\n",
+                      null,
+                      "src/test/Test.java",
+                      code,
+                      "META-INF/upgrade/test1.hint",
+                      "$c.size() == 0 :: $c instanceof java.util.Collection => $c.isEmpty();;\n",
+                      "META-INF/upgrade/test2.hint",
+                      "$c.size() <= 0 :: $c instanceof java.util.Collection => $c.isEmpty();;\n",
+                      "settings.xml",
+                      "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+                      "<!DOCTYPE configuration PUBLIC \"-//NetBeans//DTD Tool Configuration 1.0//EN\" \"http://www.netbeans.org/dtds/ToolConfiguration-1_0.dtd\">\n" +
+                      "<configuration>\n" +
+                      "    <tool kind=\"hints\" type=\"text/x-java\">\n" +
+                      "        <node name=\"org.netbeans.modules.java.hints.perf.SizeEqualsZero\">\n" +
+                      "            <attribute name=\"enabled\" value=\"false\"/>\n" +
+                      "        </node>\n" +
+                      "        <node name=\"test1.hint\">\n" +
+                      "            <attribute name=\"enabled\" value=\"true\"/>\n" +
+                      "        </node>\n" +
+                      "    </tool>\n" +
+                      "    <tool kind=\"standalone\" type=\"text/x-java\">\n" +
+                      "        <attribute name=\"apply\" value=\"false\"/>\n" +
+                      "        <attribute name=\"runDeclarative\" value=\"false\"/>\n" +
+                      "    </tool>\n" +
+                      "</configuration>\n",
                       null,
                       "--config-file",
                       "${workdir}/settings.xml",
@@ -338,11 +435,21 @@ public void testConfigurationFileDeclarative2() throws Exception {
                       "$c.size() <= 0 :: $c instanceof java.util.Collection => $c.isEmpty();;\n",
                       "settings.xml",
                       "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
-                      "<hints apply=\"true\" runDeclarative=\"true\">\n" +
-                      "    <settings>\n" +
-                      "        <test1.hint enabled=\"true\"/>\n" +
-                      "    </settings>\n" +
-                      "</hints>\n",
+                      "<!DOCTYPE configuration PUBLIC \"-//NetBeans//DTD Tool Configuration 1.0//EN\" \"http://www.netbeans.org/dtds/ToolConfiguration-1_0.dtd\">\n" +
+                      "<configuration>\n" +
+                      "    <tool kind=\"hints\" type=\"text/x-java\">\n" +
+                      "        <node name=\"org.netbeans.modules.java.hints.perf.SizeEqualsZero\">\n" +
+                      "            <attribute name=\"enabled\" value=\"false\"/>\n" +
+                      "        </node>\n" +
+                      "        <node name=\"test1.hint\">\n" +
+                      "            <attribute name=\"enabled\" value=\"true\"/>\n" +
+                      "        </node>\n" +
+                      "    </tool>\n" +
+                      "    <tool kind=\"standalone\" type=\"text/x-java\">\n" +
+                      "        <attribute name=\"apply\" value=\"true\"/>\n" +
+                      "        <attribute name=\"runDeclarative\" value=\"true\"/>\n" +
+                      "    </tool>\n" +
+                      "</configuration>\n",
                       null,
                       "--config-file",
                       "${workdir}/settings.xml",
@@ -517,6 +624,10 @@ public void testNoHintsFoundWithGroups() throws Exception {
     }
 
     public void testAutomaticTestRun() throws Exception {
+        if (System.getProperty("sun.boot.class.path") != null) {
+            //TODO XXX: this test does not pass on JDK 8
+            return ;
+        }
         class Config {
             private final String commandLineOption;
             private final int result;
@@ -667,10 +778,7 @@ public void testLambda() throws Exception {
 
     public void testMethodRef() throws Exception {
         doRunCompiler(null,
-                      equivalentValidator("${workdir}/src/test/Test.java:8: warning: [test] test\n" +
-                                          "        I3 i3b = String::new;\n" +
-                                          "                 ^\n" +
-                                          "${workdir}/src/test/Test.java:4: warning: [test] test\n" +
+                      equivalentValidator("${workdir}/src/test/Test.java:4: warning: [test] test\n" +
                                           "        Runnable r = Test::m1;\n" +
                                           "                     ^\n" +
                                           "${workdir}/src/test/Test.java:5: warning: [test] test\n" +
@@ -681,6 +789,9 @@ public void testMethodRef() throws Exception {
                                           "                ^\n" +
                                           "${workdir}/src/test/Test.java:7: warning: [test] test\n" +
                                           "        I3 i3a = String::toLowerCase;\n" +
+                                          "                 ^\n" +
+                                          "${workdir}/src/test/Test.java:8: warning: [test] test\n" +
+                                          "        I3 i3b = String::new;\n" +
                                           "                 ^\n"),
                       equivalentValidator(""),
                       "src/META-INF/upgrade/test.hint",
@@ -752,7 +863,7 @@ private void doRunCompiler(Validator fileContentValidator, Validator stdOutValid
 
             target.getParentFile().mkdirs();
             
-            TestUtilities.copyStringToFile(target, fileAndContent.get(cntr + 1));
+            Utils.copyStringToFile(target, fileAndContent.get(cntr + 1));
         }
 
         File wd = getWorkDir();
@@ -761,8 +872,11 @@ private void doRunCompiler(Validator fileContentValidator, Validator stdOutValid
         List<String> options = new LinkedList<String>();
         boolean appendPath = true;
 
+        File cache = new File(getWorkDir(), "cache");
+
         options.add("--cache");
-        options.add("/tmp/cachex");
+        options.add(cache.getAbsolutePath());
+
         for (String extraOption : extraOptions) {
             if (extraOption == DONT_APPEND_PATH) {
                 appendPath = false;
@@ -782,7 +896,7 @@ private void doRunCompiler(Validator fileContentValidator, Validator stdOutValid
         reallyRunCompiler(wd, exitcode, output, options.toArray(new String[0]));
 
         if (fileContentValidator != null) {
-            fileContentValidator.validate(TestUtilities.copyFileToString(source));
+            fileContentValidator.validate(Utils.copyFileToString(source));
         }
         if (stdOutValidator != null) {
             stdOutValidator.validate(output[0].replaceAll(Pattern.quote(wd.getAbsolutePath()), Matcher.quoteReplacement("${workdir}")));
@@ -839,7 +953,7 @@ public void testRunTest() throws Exception {
         File classes = new File(wd, "classes");
 
         classes.mkdirs();
-        TestUtilities.copyStringToFile(new File(classes, "h.hint"), "$1.equals(\"\") :: $1 instanceof java.lang.String => $1.isEmpty();;");
+        Utils.copyStringToFile(new File(classes, "h.hint"), "$1.equals(\"\") :: $1 instanceof java.lang.String => $1.isEmpty();;");
 
         String test = "%%TestCase pos\n" +
                       "package test;\n" +
@@ -861,9 +975,9 @@ public void testRunTest() throws Exception {
                       "public class Test {{\n" +
                       " System.err.println(\"a\".isEmpty());\n" +
                       "}}\n";
-        TestUtilities.copyStringToFile(new File(classes, "h.test"), test);
+        Utils.copyStringToFile(new File(classes, "h.test"), test);
 
-        List<String> options = Arrays.asList("-d", classes.getAbsolutePath());
+        List<String> options = Arrays.asList("-d", classes.getAbsolutePath(), "-source", "8", "-target", "8");
         List<SourceFO> files = Arrays.asList(new SourceFO("DoRunTests.java", CODE_RUN_DECLARATIVE));
 
         assertTrue(ToolProvider.getSystemJavaCompiler().getTask(null, null, null, options, null, files).call());
@@ -871,6 +985,12 @@ public void testRunTest() throws Exception {
         runAndTest(classes);
     }
 
+    @Override
+    protected void setUp() throws Exception {
+        clearWorkDir();
+        super.setUp();
+    }
+
     private static final class SourceFO extends SimpleJavaFileObject {
 
         private final String code;
diff --git a/cmdline/ap/test/unit/src/org/netbeans/modules/jackpot30/ap/ProcessorImplTest.java b/cmdline/tool/test/unit/src/org/netbeans/modules/jackpot30/cmdline/ProcessorImplTest.java
similarity index 83%
rename from cmdline/ap/test/unit/src/org/netbeans/modules/jackpot30/ap/ProcessorImplTest.java
rename to cmdline/tool/test/unit/src/org/netbeans/modules/jackpot30/cmdline/ProcessorImplTest.java
index eb64413..88c68fd 100644
--- a/cmdline/ap/test/unit/src/org/netbeans/modules/jackpot30/ap/ProcessorImplTest.java
+++ b/cmdline/tool/test/unit/src/org/netbeans/modules/jackpot30/cmdline/ProcessorImplTest.java
@@ -16,11 +16,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.netbeans.modules.jackpot30.ap;
+package org.netbeans.modules.jackpot30.cmdline;
 
 import com.sun.tools.javac.Main;
+import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
 import java.io.PrintStream;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -31,8 +34,8 @@
 import java.util.regex.Pattern;
 import static junit.framework.TestCase.assertEquals;
 import static junit.framework.TestCase.assertTrue;
-import org.netbeans.api.java.source.TestUtilities;
 import org.netbeans.junit.NbTestCase;
+import org.openide.filesystems.FileUtil;
 
 /**
  *
@@ -46,7 +49,13 @@ public ProcessorImplTest(String name) {
 
     public void testHardcoded1() throws Exception {
         doRunCompiler("",
-                      "",
+                      "${workdir}/src/test/Test.java:4: warning: [Usage_of_size_equals_0] Usage of .size() == 0 can be replaced with .isEmpty()\n" +
+                      "        boolean b1 = c.size() == 0;\n" +
+                      "                      ^\n" +
+                      "${workdir}/src/test/Test.java:5: warning: [Usage_of_size_equals_0] Usage of .size() == 0 can be replaced with .isEmpty()\n" +
+                      "\tboolean b2 = c.size() == 0;\n" +
+                      "\t              ^\n" +
+                      "2 warnings\n",
                       "src/test/Test.java",
                       "package test;\n" +
                       "public class Test {\n" +
@@ -83,6 +92,9 @@ public void testHardcodedWithConfiguration() throws Exception {
                       "<!DOCTYPE configuration PUBLIC \"-//NetBeans//DTD Tool Configuration 1.0//EN\" \"http://www.netbeans.org/dtds/ToolConfiguration-1_0.dtd\">\n" +
                       "<configuration>\n" +
                       "    <tool kind=\"hints\" type=\"text/x-java\">\n" +
+                      "        <node name=\"org.netbeans.modules.java.hints.jdk.ConvertToVarHint\">\n" +
+                      "            <attribute name=\"enabled\" value=\"false\"/>\n" +
+                      "        </node>\n" +
                       "    </tool>\n" +
                       "</configuration>\n",
                       null,
@@ -104,13 +116,14 @@ public void testCustomWithSourcePath() throws Exception {
                       "src/test/Test.java",
                       "package test;\n" +
                       "public class Test {\n" +
-                      "    private void test(java.util.Collection c) {\n" +
+                      "    private void test(Test c) {\n" +
                       "        boolean b1 = c.size() == 0;\n" +
                       "\tboolean b2 = c.size() == 0;\n" +
                       "    }\n" +
+                      "    public int size() { return 0; }\n" +
                       "}\n",
                       "src/META-INF/upgrade/test.hint",
-                      "$coll.size() == 0 :: $coll instanceof java.util.Collection;;\n",
+                      "$coll.size() == 0 :: $coll test.Test;;\n",
                       null,
                       "-source",
                       "7",
@@ -131,13 +144,14 @@ public void testCustomWithOutSourcePath() throws Exception {
                       "src/test/Test.java",
                       "package test;\n" +
                       "public class Test {\n" +
-                      "    private void test(java.util.Collection c) {\n" +
+                      "    private void test(Test c) {\n" +
                       "        boolean b1 = c.size() == 0;\n" +
                       "\tboolean b2 = c.size() == 0;\n" +
                       "    }\n" +
+                      "    public int size() { return 0; }\n" +
                       "}\n",
                       "src/META-INF/upgrade/test.hint",
-                      "$coll.size() == 0 :: $coll instanceof java.util.Collection;;\n",
+                      "$coll.size() == 0 :: $coll test.Test;;\n",
                       null,
                       "-source",
                       "7",
@@ -164,12 +178,15 @@ private void doRunCompiler(String stdOut, String stdErr, String... fileContentAn
 
         List<String> params = new ArrayList<>();
 
+        params.add("-processor");
+        params.add(ProcessorImpl.class.getName());
+
         for (int cntr = 0; cntr < fileAndContent.size(); cntr += 2) {
             File target = new File(getWorkDir(), fileAndContent.get(cntr));
 
             target.getParentFile().mkdirs();
 
-            TestUtilities.copyStringToFile(target, fileAndContent.get(cntr + 1));
+            Utils.copyStringToFile(target, fileAndContent.get(cntr + 1));
 
             if (target.getName().endsWith(".java"))
                 params.add(target.getAbsolutePath());
@@ -179,7 +196,7 @@ private void doRunCompiler(String stdOut, String stdErr, String... fileContentAn
 
         File wd = getWorkDir();
         String[] output = new String[2];
-        reallyRunCompiler(wd, output, params.toArray(new String[0]));
+        reallyRunCompiler(wd, 0, output, params.toArray(new String[0]));
 
         if (stdOut != null) {
             assertEquals(stdOut, output[0].replaceAll(Pattern.quote(wd.getAbsolutePath()), Matcher.quoteReplacement("${workdir}")));
@@ -190,7 +207,7 @@ private void doRunCompiler(String stdOut, String stdErr, String... fileContentAn
         }
     }
 
-    protected void reallyRunCompiler(File workDir, String[] output, String... params) throws Exception {
+    protected void reallyRunCompiler(File workDir, int exitcode, String[] output, String... params) throws Exception {
         String oldUserDir = System.getProperty("user.dir");
 
         System.setProperty("user.dir", workDir.getAbsolutePath());
@@ -204,7 +221,7 @@ protected void reallyRunCompiler(File workDir, String[] output, String... params
         System.setErr(new PrintStream(errData, true, "UTF-8"));
 
         try {
-            assertEquals(0, Main.compile(params));
+            assertEquals(exitcode, Main.compile(params));
         } finally {
             System.setProperty("user.dir", oldUserDir);
             System.out.close();
diff --git a/cmdline/tool/test/unit/src/org/netbeans/modules/jackpot30/cmdline/Utils.java b/cmdline/tool/test/unit/src/org/netbeans/modules/jackpot30/cmdline/Utils.java
new file mode 100644
index 0000000..4d5db0c
--- /dev/null
+++ b/cmdline/tool/test/unit/src/org/netbeans/modules/jackpot30/cmdline/Utils.java
@@ -0,0 +1,99 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.netbeans.modules.jackpot30.cmdline;
+
+import java.io.ByteArrayInputStream;
+import java.io.EOFException;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.util.Arrays;
+import java.util.List;
+import static junit.framework.TestCase.assertNotNull;
+import org.openide.filesystems.FileUtil;
+
+public class Utils {
+
+    public static List<String> findJavaLauncher() {
+        String javaHome = System.getProperty("java.home");
+        
+        if (System.getProperty("sun.boot.class.path") != null) {
+            //JDK 8:
+            final String nbJavacPath = System.getProperty("nb.javac.path");
+            assertNotNull("Path to nb-javac must be set in the 'nb.javac.path' property!", nbJavacPath);
+            return Arrays.asList(javaHome + "/bin/java",
+                                 "-Xbootclasspath/p:" + nbJavacPath);
+        } else {
+            //JDK 9+:
+            return Arrays.asList(javaHome + "/bin/java",
+                                 "--add-exports=jdk.javadoc/com.sun.tools.javadoc.main=ALL-UNNAMED",
+                                 "--add-opens=java.base/java.net=ALL-UNNAMED", //stream handler factory
+                                 "--add-opens=java.desktop/sun.awt=ALL-UNNAMED" //org.openide.util.RequestProcessor$TopLevelThreadGroup to method sun.awt.AppContext.getAppContext()
+            );
+        }
+    }
+
+    public static List<String> findJavacLauncher() {
+        String javaHome = System.getProperty("java.home");
+        
+        if (System.getProperty("sun.boot.class.path") != null) {
+            //JDK 8:
+            final String nbJavacPath = System.getProperty("nb.javac.path");
+            assertNotNull("Path to nb-javac must be set in the 'nb.javac.path' property!", nbJavacPath);
+            return Arrays.asList(javaHome + "/../bin/javac",
+                                 "-J-Xbootclasspath/p:" + nbJavacPath);
+        } else {
+            //JDK 9+:
+            return Arrays.asList(javaHome + "/bin/javac",
+                                 "-J--add-exports=jdk.javadoc/com.sun.tools.javadoc.main=ALL-UNNAMED",
+                                 "-J--add-opens=java.base/java.net=ALL-UNNAMED", //stream handler factory
+                                 "-J--add-opens=java.desktop/sun.awt=ALL-UNNAMED", //org.openide.util.RequestProcessor$TopLevelThreadGroup to method sun.awt.AppContext.getAppContext()
+                                 "-J--add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED", //Illegal reflective access by org.netbeans.modules.jackpot30.cmdline.ProcessorImpl to field com.sun.tools.javac.processing.JavacProcessingEnvironment.context
+                                 "-J--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED" //Illegal reflective access by org.netbeans.modules.jackpot30.cmdline.ProcessorImpl to method com.sun.tools.javac.util.Context.get(java.lang.Class)
+            );
+        }
+    }
+
+    //from TestUtilities:
+    public final static File copyStringToFile (File f, String content) throws Exception {
+        FileOutputStream os = new FileOutputStream(f);
+        InputStream is = new ByteArrayInputStream(content.getBytes("UTF-8"));
+
+        FileUtil.copy(is, os);
+
+        os.close ();
+        is.close();
+
+        return f;
+
+    }
+    
+    public final static String copyFileToString (java.io.File f) throws java.io.IOException {
+        int s = (int)f.length ();
+        byte[] data = new byte[s];
+        int len = new FileInputStream (f).read (data);
+
+        if (len != s)
+            throw new EOFException("truncated file");
+
+        return new String (data);
+    }
+
+}


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@netbeans.apache.org
For additional commands, e-mail: notifications-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists