diff --git a/docgen/pom.xml b/docgen/pom.xml
new file mode 100644
index 00000000..3bde7f77
--- /dev/null
+++ b/docgen/pom.xml
@@ -0,0 +1,53 @@
+
+
+ 4.0.0
+
+
+ tech.picnic.error-prone-support
+ error-prone-support
+ 0.3.1-SNAPSHOT
+
+
+ docgen
+
+ Picnic :: Error Prone Support :: Docgen
+ Docgen.
+
+
+
+ ${groupId.error-prone}
+ error_prone_annotations
+ provided
+
+
+ ${groupId.error-prone}
+ error_prone_check_api
+
+
+ ${groupId.error-prone}
+ error_prone_core
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+
+
+ com.google.auto.service
+ auto-service-annotations
+ provided
+
+
+ com.google.auto.value
+ auto-value-annotations
+
+
+ com.google.code.findbugs
+ jsr305
+ provided
+
+
+ com.google.guava
+ guava
+
+
+
diff --git a/docgen/src/main/java/tech/picnic/errorprone/plugin/BugPatternExtractor.java b/docgen/src/main/java/tech/picnic/errorprone/plugin/BugPatternExtractor.java
new file mode 100644
index 00000000..d80c4581
--- /dev/null
+++ b/docgen/src/main/java/tech/picnic/errorprone/plugin/BugPatternExtractor.java
@@ -0,0 +1,25 @@
+package tech.picnic.errorprone.plugin;
+
+import com.google.errorprone.BugPattern;
+import com.google.errorprone.VisitorState;
+import com.sun.source.tree.ClassTree;
+import com.sun.source.util.TaskEvent;
+import java.util.Arrays;
+import tech.picnic.errorprone.plugin.models.BugPatternData;
+
+public final class BugPatternExtractor implements DocExtractor {
+ @Override
+ public BugPatternData extractData(ClassTree tree, TaskEvent taskEvent, VisitorState state) {
+ BugPattern annotation = taskEvent.getTypeElement().getAnnotation(BugPattern.class);
+ return BugPatternData.create(
+ taskEvent.getTypeElement().getSimpleName().toString(),
+ Arrays.toString(annotation.altNames()),
+ annotation.linkType(),
+ annotation.link(),
+ Arrays.toString(annotation.tags()),
+ annotation.summary(),
+ annotation.explanation(),
+ annotation.severity(),
+ annotation.disableable());
+ }
+}
diff --git a/docgen/src/main/java/tech/picnic/errorprone/plugin/BugPatternTestsExtractor.java b/docgen/src/main/java/tech/picnic/errorprone/plugin/BugPatternTestsExtractor.java
new file mode 100644
index 00000000..12bbe1cf
--- /dev/null
+++ b/docgen/src/main/java/tech/picnic/errorprone/plugin/BugPatternTestsExtractor.java
@@ -0,0 +1,103 @@
+package tech.picnic.errorprone.plugin;
+
+import static com.google.errorprone.matchers.Matchers.allOf;
+import static com.google.errorprone.matchers.Matchers.hasAnnotation;
+import static com.google.errorprone.matchers.Matchers.instanceMethod;
+
+import com.google.errorprone.VisitorState;
+import com.google.errorprone.annotations.Var;
+import com.google.errorprone.matchers.Matcher;
+import com.google.errorprone.util.ASTHelpers;
+import com.sun.source.tree.ClassTree;
+import com.sun.source.tree.ExpressionTree;
+import com.sun.source.tree.MethodInvocationTree;
+import com.sun.source.tree.MethodTree;
+import com.sun.source.util.TaskEvent;
+import com.sun.source.util.TreeScanner;
+import java.util.ArrayList;
+import java.util.List;
+import tech.picnic.errorprone.plugin.models.BugPatternReplacementTestData;
+import tech.picnic.errorprone.plugin.models.BugPatternTestData;
+
+/** XXX: Write this. */
+// XXX: Take into account `expectUnchanged()`.
+public final class BugPatternTestsExtractor implements DocExtractor {
+ private static final Matcher JUNIT_TEST_METHOD =
+ allOf(hasAnnotation("org.junit.jupiter.api.Test"));
+ private static final Matcher IDENTIFICATION_SOURCE_LINES =
+ instanceMethod()
+ .onDescendantOf("com.google.errorprone.CompilationTestHelper")
+ .named("addSourceLines");
+ private static final Matcher REPLACEMENT_INPUT =
+ instanceMethod()
+ .onDescendantOf("com.google.errorprone.BugCheckerRefactoringTestHelper")
+ .named("addInputLines");
+ private static final Matcher REPLACEMENT_OUTPUT =
+ instanceMethod()
+ .onDescendantOf("com.google.errorprone.BugCheckerRefactoringTestHelper.ExpectOutput")
+ .named("addOutputLines");
+
+ @Override
+ public BugPatternTestData extractData(ClassTree tree, TaskEvent taskEvent, VisitorState state) {
+ String name = tree.getSimpleName().toString().replace("Test", "");
+ ScanBugCheckerTestData scanner = new ScanBugCheckerTestData(state);
+
+ tree.getMembers().stream()
+ .filter(MethodTree.class::isInstance)
+ .map(MethodTree.class::cast)
+ .filter(m -> JUNIT_TEST_METHOD.matches(m, state))
+ .forEach(m -> scanner.scan(m, null));
+
+ return BugPatternTestData.create(
+ name, scanner.getIdentificationTests(), scanner.getReplacementTests());
+ }
+
+ private static final class ScanBugCheckerTestData extends TreeScanner {
+ private final VisitorState state;
+ private final List identificationTests = new ArrayList<>();
+ private final List replacementTests = new ArrayList<>();
+
+ // XXX: Using this output field is a bit hacky. Come up with a better solution.
+ @Var private String output;
+
+ ScanBugCheckerTestData(VisitorState state) {
+ this.state = state;
+ }
+
+ public List getIdentificationTests() {
+ return identificationTests;
+ }
+
+ public List getReplacementTests() {
+ return replacementTests;
+ }
+
+ @Override
+ public Void visitMethodInvocation(MethodInvocationTree node, Void unused) {
+ if (IDENTIFICATION_SOURCE_LINES.matches(node, state)) {
+ identificationTests.add(getSourceLines(node));
+ } else if (REPLACEMENT_INPUT.matches(node, state)) {
+ replacementTests.add(BugPatternReplacementTestData.create(getSourceLines(node), output));
+ } else if (REPLACEMENT_OUTPUT.matches(node, state)) {
+ output = getSourceLines(node);
+ }
+ return super.visitMethodInvocation(node, unused);
+ }
+
+ private String getSourceLines(MethodInvocationTree tree) {
+ List extends ExpressionTree> sourceLines =
+ tree.getArguments().subList(1, tree.getArguments().size());
+ StringBuilder source = new StringBuilder();
+
+ for (ExpressionTree sourceLine : sourceLines) {
+ Object value = ASTHelpers.constValue(sourceLine);
+ if (value == null) {
+ return "";
+ }
+ source.append(value).append('\n');
+ }
+
+ return source.toString();
+ }
+ }
+}
diff --git a/docgen/src/main/java/tech/picnic/errorprone/plugin/DocExtractor.java b/docgen/src/main/java/tech/picnic/errorprone/plugin/DocExtractor.java
new file mode 100644
index 00000000..06421b8e
--- /dev/null
+++ b/docgen/src/main/java/tech/picnic/errorprone/plugin/DocExtractor.java
@@ -0,0 +1,9 @@
+package tech.picnic.errorprone.plugin;
+
+import com.google.errorprone.VisitorState;
+import com.sun.source.tree.ClassTree;
+import com.sun.source.util.TaskEvent;
+
+public interface DocExtractor {
+ T extractData(ClassTree tree, TaskEvent taskEvent, VisitorState state);
+}
diff --git a/docgen/src/main/java/tech/picnic/errorprone/plugin/DocType.java b/docgen/src/main/java/tech/picnic/errorprone/plugin/DocType.java
new file mode 100644
index 00000000..5f1e391f
--- /dev/null
+++ b/docgen/src/main/java/tech/picnic/errorprone/plugin/DocType.java
@@ -0,0 +1,25 @@
+package tech.picnic.errorprone.plugin;
+
+public enum DocType {
+ BUG_PATTERN("bug-pattern", new BugPatternExtractor()),
+ BUG_PATTERN_TEST("bug-pattern-test", new BugPatternTestsExtractor()),
+ // REFASTER("refaster", new RefasterExtractor()),
+ REFASTER_TEMPLATE_TEST_INPUT("refaster-test-input", new RefasterTestExtractor()),
+ REFASTER_TEMPLATE_TEST_OUTPUT("refaster-test-output", new RefasterTestExtractor());
+
+ private final String outputFileNamePrefix;
+ private final DocExtractor> docExtractor;
+
+ DocType(String outputFileNamePrefix, DocExtractor> docExtractor) {
+ this.outputFileNamePrefix = outputFileNamePrefix;
+ this.docExtractor = docExtractor;
+ }
+
+ public String getOutputFileNamePrefix() {
+ return outputFileNamePrefix;
+ }
+
+ public DocExtractor> getDocExtractor() {
+ return docExtractor;
+ }
+}
diff --git a/docgen/src/main/java/tech/picnic/errorprone/plugin/Docgen.java b/docgen/src/main/java/tech/picnic/errorprone/plugin/Docgen.java
new file mode 100644
index 00000000..8af9e3ed
--- /dev/null
+++ b/docgen/src/main/java/tech/picnic/errorprone/plugin/Docgen.java
@@ -0,0 +1,21 @@
+package tech.picnic.errorprone.plugin;
+
+import com.google.auto.service.AutoService;
+import com.sun.source.util.JavacTask;
+import com.sun.source.util.Plugin;
+import com.sun.tools.javac.api.BasicJavacTask;
+
+/** XXX: Write. */
+@AutoService(Plugin.class)
+public final class Docgen implements Plugin {
+ @Override
+ public String getName() {
+ return getClass().getSimpleName();
+ }
+
+ @Override
+ public void init(JavacTask javacTask, String... args) {
+ javacTask.addTaskListener(
+ new DocgenTaskListener(((BasicJavacTask) javacTask).getContext(), args[0]));
+ }
+}
diff --git a/docgen/src/main/java/tech/picnic/errorprone/plugin/DocgenTaskListener.java b/docgen/src/main/java/tech/picnic/errorprone/plugin/DocgenTaskListener.java
new file mode 100644
index 00000000..5182c240
--- /dev/null
+++ b/docgen/src/main/java/tech/picnic/errorprone/plugin/DocgenTaskListener.java
@@ -0,0 +1,117 @@
+package tech.picnic.errorprone.plugin;
+
+import static tech.picnic.errorprone.plugin.DocType.BUG_PATTERN;
+import static tech.picnic.errorprone.plugin.DocType.BUG_PATTERN_TEST;
+import static tech.picnic.errorprone.plugin.DocType.REFASTER_TEMPLATE_TEST_INPUT;
+import static tech.picnic.errorprone.plugin.DocType.REFASTER_TEMPLATE_TEST_OUTPUT;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.google.errorprone.BugPattern;
+import com.google.errorprone.VisitorState;
+import com.google.errorprone.util.ASTHelpers;
+import com.sun.source.tree.ClassTree;
+import com.sun.source.tree.VariableTree;
+import com.sun.source.util.TaskEvent;
+import com.sun.source.util.TaskListener;
+import com.sun.tools.javac.api.JavacTrees;
+import com.sun.tools.javac.util.Context;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.Optional;
+import javax.tools.JavaFileObject;
+
+/** XXX: Write this. */
+final class DocgenTaskListener implements TaskListener {
+ private final Context context;
+
+ private final String basePath;
+
+ private final VisitorState state;
+
+ private final ObjectMapper mapper =
+ new ObjectMapper()
+ .setVisibility(PropertyAccessor.FIELD, Visibility.ANY)
+ .configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false)
+ .configure(JsonGenerator.Feature.AUTO_CLOSE_TARGET, false);
+
+ DocgenTaskListener(Context context, String path) {
+ this.context = context;
+ this.basePath = path.substring(path.indexOf('=') + 1) + "/docs";
+ this.state = VisitorState.createForUtilityPurposes(context);
+
+ // XXX: Move this somewhere else?
+ try {
+ Files.createDirectories(Paths.get(basePath));
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ @SuppressWarnings("SystemOut")
+ public void finished(TaskEvent taskEvent) {
+ ClassTree tree = JavacTrees.instance(context).getTree(taskEvent.getTypeElement());
+ JavaFileObject sourceFile = taskEvent.getSourceFile();
+ if (tree == null || sourceFile == null || taskEvent.getKind() != TaskEvent.Kind.ANALYZE) {
+ return;
+ }
+
+ getDocType(tree, sourceFile)
+ .ifPresent(
+ docType ->
+ writeToFile(
+ docType.getDocExtractor().extractData(tree, taskEvent, state),
+ docType.getOutputFileNamePrefix(),
+ getSimpleClassName(sourceFile.getName())));
+ }
+
+ private static Optional getDocType(ClassTree tree, JavaFileObject sourceFile) {
+ if (isBugPattern(tree)) {
+ return Optional.of(BUG_PATTERN);
+ } else if (isBugPatternTest(tree)) {
+ return Optional.of(BUG_PATTERN_TEST);
+ } else if (sourceFile.getName().contains("TestInput")) {
+ return Optional.of(REFASTER_TEMPLATE_TEST_INPUT);
+ } else if (sourceFile.getName().contains("TestOutput")) {
+ return Optional.of(REFASTER_TEMPLATE_TEST_OUTPUT);
+ }
+ return Optional.empty();
+ }
+
+ private void writeToFile(T data, String fileName, String name) {
+ File file = new File(basePath + "/" + fileName + "-" + name + ".json");
+ // XXX: Use Path instead of File.
+
+ try (FileWriter fileWriter = new FileWriter(file, true)) {
+ mapper.writeValue(fileWriter, data);
+ fileWriter.write("\n");
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private static boolean isBugPattern(ClassTree tree) {
+ return ASTHelpers.hasDirectAnnotationWithSimpleName(tree, BugPattern.class.getSimpleName());
+ }
+
+ private static boolean isBugPatternTest(ClassTree tree) {
+ return tree.getSimpleName().toString().endsWith("Test")
+ && tree.getMembers().stream()
+ .filter(VariableTree.class::isInstance)
+ .map(VariableTree.class::cast)
+ .anyMatch(vt -> vt.getType().toString().equals("BugCheckerRefactoringTestHelper"));
+ }
+
+ private static String getSimpleClassName(String path) {
+ int index = path.lastIndexOf('/');
+ String fileName = path.substring(index + 1);
+ return fileName.replace(".java", "");
+ }
+}
diff --git a/docgen/src/main/java/tech/picnic/errorprone/plugin/RefasterTestExtractor.java b/docgen/src/main/java/tech/picnic/errorprone/plugin/RefasterTestExtractor.java
new file mode 100644
index 00000000..91019f22
--- /dev/null
+++ b/docgen/src/main/java/tech/picnic/errorprone/plugin/RefasterTestExtractor.java
@@ -0,0 +1,35 @@
+package tech.picnic.errorprone.plugin;
+
+import static com.google.common.collect.ImmutableList.toImmutableList;
+
+import com.google.common.collect.ImmutableList;
+import com.google.errorprone.VisitorState;
+import com.sun.source.tree.ClassTree;
+import com.sun.source.tree.MethodTree;
+import com.sun.source.util.TaskEvent;
+import tech.picnic.errorprone.plugin.models.RefasterTemplateCollectionTestData;
+import tech.picnic.errorprone.plugin.models.RefasterTemplateTestData;
+
+public final class RefasterTestExtractor
+ implements DocExtractor {
+ @Override
+ public RefasterTemplateCollectionTestData extractData(
+ ClassTree tree, TaskEvent taskEvent, VisitorState state) {
+ String templateCollectionName = tree.getSimpleName().toString().replace("Test", "");
+ boolean isInput = taskEvent.getSourceFile().getName().contains("Input");
+
+ ImmutableList templateTests =
+ tree.getMembers().stream()
+ .filter(MethodTree.class::isInstance)
+ .map(MethodTree.class::cast)
+ .filter(m -> m.getName().toString().startsWith("test"))
+ .map(
+ m ->
+ RefasterTemplateTestData.create(
+ m.getName().toString().replace("test", ""), m.toString()))
+ .collect(toImmutableList());
+
+ return RefasterTemplateCollectionTestData.create(
+ templateCollectionName, isInput, templateTests);
+ }
+}
diff --git a/docgen/src/main/java/tech/picnic/errorprone/plugin/models/BugPatternData.java b/docgen/src/main/java/tech/picnic/errorprone/plugin/models/BugPatternData.java
new file mode 100644
index 00000000..b943e151
--- /dev/null
+++ b/docgen/src/main/java/tech/picnic/errorprone/plugin/models/BugPatternData.java
@@ -0,0 +1,44 @@
+package tech.picnic.errorprone.plugin.models;
+
+import com.google.auto.value.AutoValue;
+import com.google.errorprone.BugPattern.LinkType;
+import com.google.errorprone.BugPattern.SeverityLevel;
+
+/** XXX: Write. */
+// XXX: What about `SuppressionAnnotations` and `DocumentSuppression`?
+@AutoValue
+public abstract class BugPatternData {
+ public static BugPatternData create(
+ String name,
+ String altNames,
+ LinkType linkType,
+ String link,
+ String tags,
+ String summary,
+ String explanation,
+ SeverityLevel severityLevel,
+ boolean disableable) {
+ return new AutoValue_BugPatternData(
+ name, altNames, linkType, link, tags, summary, explanation, severityLevel, disableable);
+ }
+
+ abstract String name();
+
+ // XXX: Should be `String[]`.
+ abstract String altNames();
+
+ abstract LinkType linkType();
+
+ abstract String link();
+
+ // XXX: Should be `String[]`.
+ abstract String tags();
+
+ abstract String summary();
+
+ abstract String explanation();
+
+ abstract SeverityLevel severityLevel();
+
+ abstract boolean disableable();
+}
diff --git a/docgen/src/main/java/tech/picnic/errorprone/plugin/models/BugPatternReplacementTestData.java b/docgen/src/main/java/tech/picnic/errorprone/plugin/models/BugPatternReplacementTestData.java
new file mode 100644
index 00000000..21d462ce
--- /dev/null
+++ b/docgen/src/main/java/tech/picnic/errorprone/plugin/models/BugPatternReplacementTestData.java
@@ -0,0 +1,17 @@
+package tech.picnic.errorprone.plugin.models;
+
+import com.google.auto.value.AutoValue;
+import javax.annotation.Nullable;
+
+@AutoValue
+public abstract class BugPatternReplacementTestData {
+ public static BugPatternReplacementTestData create(String inputLines, String outputLines) {
+ return new AutoValue_BugPatternReplacementTestData(inputLines, outputLines);
+ }
+
+ @Nullable
+ abstract String inputLines();
+
+ @Nullable
+ abstract String outputLines();
+}
diff --git a/docgen/src/main/java/tech/picnic/errorprone/plugin/models/BugPatternTestData.java b/docgen/src/main/java/tech/picnic/errorprone/plugin/models/BugPatternTestData.java
new file mode 100644
index 00000000..88be798c
--- /dev/null
+++ b/docgen/src/main/java/tech/picnic/errorprone/plugin/models/BugPatternTestData.java
@@ -0,0 +1,23 @@
+package tech.picnic.errorprone.plugin.models;
+
+import com.google.auto.value.AutoValue;
+import java.util.List;
+import javax.annotation.Nullable;
+
+@AutoValue
+public abstract class BugPatternTestData {
+ public static BugPatternTestData create(
+ String name,
+ List identificationTests,
+ List replacementTests) {
+ return new AutoValue_BugPatternTestData(name, identificationTests, replacementTests);
+ }
+
+ abstract String name();
+
+ @Nullable
+ abstract List identificationTests();
+
+ @Nullable
+ abstract List replacementTests();
+}
diff --git a/docgen/src/main/java/tech/picnic/errorprone/plugin/models/RefasterTemplateCollectionData.java b/docgen/src/main/java/tech/picnic/errorprone/plugin/models/RefasterTemplateCollectionData.java
new file mode 100644
index 00000000..1d5d82d7
--- /dev/null
+++ b/docgen/src/main/java/tech/picnic/errorprone/plugin/models/RefasterTemplateCollectionData.java
@@ -0,0 +1,24 @@
+package tech.picnic.errorprone.plugin.models;
+
+import com.google.auto.value.AutoValue;
+import java.util.List;
+
+/**
+ * Object containing all data related to a Refaster template collection. This is solely used for
+ * serialization.
+ */
+@AutoValue
+public abstract class RefasterTemplateCollectionData {
+ public static RefasterTemplateCollectionData create(
+ String name, String description, String link, List templates) {
+ return new AutoValue_RefasterTemplateCollectionData(name, description, link, templates);
+ }
+
+ abstract String name();
+
+ abstract String description();
+
+ abstract String link();
+
+ abstract List templates();
+}
diff --git a/docgen/src/main/java/tech/picnic/errorprone/plugin/models/RefasterTemplateCollectionTestData.java b/docgen/src/main/java/tech/picnic/errorprone/plugin/models/RefasterTemplateCollectionTestData.java
new file mode 100644
index 00000000..3919d761
--- /dev/null
+++ b/docgen/src/main/java/tech/picnic/errorprone/plugin/models/RefasterTemplateCollectionTestData.java
@@ -0,0 +1,19 @@
+package tech.picnic.errorprone.plugin.models;
+
+import com.google.auto.value.AutoValue;
+import java.util.List;
+
+@AutoValue
+public abstract class RefasterTemplateCollectionTestData {
+ public static RefasterTemplateCollectionTestData create(
+ String templateCollection, boolean isInput, List templatesTests) {
+ return new AutoValue_RefasterTemplateCollectionTestData(
+ templateCollection, isInput, templatesTests);
+ }
+
+ abstract String templateCollection();
+
+ abstract boolean isInput();
+
+ abstract List templateTests();
+}
diff --git a/docgen/src/main/java/tech/picnic/errorprone/plugin/models/RefasterTemplateData.java b/docgen/src/main/java/tech/picnic/errorprone/plugin/models/RefasterTemplateData.java
new file mode 100644
index 00000000..97a82389
--- /dev/null
+++ b/docgen/src/main/java/tech/picnic/errorprone/plugin/models/RefasterTemplateData.java
@@ -0,0 +1,20 @@
+package tech.picnic.errorprone.plugin.models;
+
+import com.google.auto.value.AutoValue;
+import com.google.errorprone.BugPattern.SeverityLevel;
+
+@AutoValue
+public abstract class RefasterTemplateData {
+ public static RefasterTemplateData create(
+ String name, String description, String link, SeverityLevel severityLevel) {
+ return new AutoValue_RefasterTemplateData(name, description, link, severityLevel);
+ }
+
+ abstract String name();
+
+ abstract String description();
+
+ abstract String link();
+
+ abstract SeverityLevel severityLevel();
+}
diff --git a/docgen/src/main/java/tech/picnic/errorprone/plugin/models/RefasterTemplateTestData.java b/docgen/src/main/java/tech/picnic/errorprone/plugin/models/RefasterTemplateTestData.java
new file mode 100644
index 00000000..ceaded61
--- /dev/null
+++ b/docgen/src/main/java/tech/picnic/errorprone/plugin/models/RefasterTemplateTestData.java
@@ -0,0 +1,14 @@
+package tech.picnic.errorprone.plugin.models;
+
+import com.google.auto.value.AutoValue;
+
+@AutoValue
+public abstract class RefasterTemplateTestData {
+ public static RefasterTemplateTestData create(String templateName, String templateTestContent) {
+ return new AutoValue_RefasterTemplateTestData(templateName, templateTestContent);
+ }
+
+ abstract String templateName();
+
+ abstract String templateTestContent();
+}
diff --git a/docgen/src/main/java/tech/picnic/errorprone/plugin/package-info.java b/docgen/src/main/java/tech/picnic/errorprone/plugin/package-info.java
new file mode 100644
index 00000000..4fea2123
--- /dev/null
+++ b/docgen/src/main/java/tech/picnic/errorprone/plugin/package-info.java
@@ -0,0 +1,4 @@
+/** A Java compiler plugin that XXX: fill in. */
+@com.google.errorprone.annotations.CheckReturnValue
+@javax.annotation.ParametersAreNonnullByDefault
+package tech.picnic.errorprone.plugin;
diff --git a/error-prone-contrib/pom.xml b/error-prone-contrib/pom.xml
index e8681ecd..1e5396bd 100644
--- a/error-prone-contrib/pom.xml
+++ b/error-prone-contrib/pom.xml
@@ -238,4 +238,33 @@
+
+
+
+ docgen
+
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+ 3.3.0
+
+
+ add-test-source
+
+ add-test-source
+
+ generate-test-sources
+
+
+ src/test/resources
+
+
+
+
+
+
+
+
+
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJBigDecimalRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJBigDecimalRulesTestInput.java
similarity index 95%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJBigDecimalRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJBigDecimalRulesTestInput.java
index 6f33a5c2..e111d792 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJBigDecimalRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJBigDecimalRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.data.Offset.offset;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJBigIntegerRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJBigIntegerRulesTestInput.java
similarity index 97%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJBigIntegerRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJBigIntegerRulesTestInput.java
index b3feb861..baa7439b 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJBigIntegerRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJBigIntegerRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.data.Offset.offset;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJBooleanRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJBooleanRulesTestInput.java
similarity index 96%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJBooleanRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJBooleanRulesTestInput.java
index 4993f7c7..4479f41d 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJBooleanRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJBooleanRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJByteRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJByteRulesTestInput.java
similarity index 96%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJByteRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJByteRulesTestInput.java
index 2db99cbb..1b2daf9e 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJByteRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJByteRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.data.Offset.offset;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJCharSequenceRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJCharSequenceRulesTestInput.java
similarity index 93%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJCharSequenceRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJCharSequenceRulesTestInput.java
index e45d056c..882f42d7 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJCharSequenceRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJCharSequenceRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJComparableRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJComparableRulesTestInput.java
similarity index 95%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJComparableRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJComparableRulesTestInput.java
index 6863c8b8..69a130fb 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJComparableRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJComparableRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJDoubleRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJDoubleRulesTestInput.java
similarity index 96%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJDoubleRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJDoubleRulesTestInput.java
index 232265e9..ac61e060 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJDoubleRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJDoubleRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.data.Offset.offset;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJEnumerableRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJEnumerableRulesTestInput.java
similarity index 95%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJEnumerableRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJEnumerableRulesTestInput.java
index 7157710f..4057829b 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJEnumerableRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJEnumerableRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJFloatRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJFloatRulesTestInput.java
similarity index 96%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJFloatRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJFloatRulesTestInput.java
index caaa12de..fef1509d 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJFloatRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJFloatRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.data.Offset.offset;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJIntegerRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJIntegerRulesTestInput.java
similarity index 96%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJIntegerRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJIntegerRulesTestInput.java
index 9c69c87c..d39044ec 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJIntegerRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJIntegerRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.data.Offset.offset;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJLongRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJLongRulesTestInput.java
similarity index 96%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJLongRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJLongRulesTestInput.java
index 7c3bcc4e..ea662b7b 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJLongRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJLongRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.data.Offset.offset;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJMapRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJMapRulesTestInput.java
similarity index 93%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJMapRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJMapRulesTestInput.java
index 064430f6..a6fc4cdd 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJMapRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJMapRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJNumberRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJNumberRulesTestInput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJNumberRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJNumberRulesTestInput.java
index 7b3d027d..f15be74e 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJNumberRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJNumberRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJObjectRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJObjectRulesTestInput.java
similarity index 94%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJObjectRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJObjectRulesTestInput.java
index ce373065..9416a92a 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJObjectRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJObjectRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJOptionalRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJOptionalRulesTestInput.java
similarity index 97%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJOptionalRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJOptionalRulesTestInput.java
index e337bfb1..f353c257 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJOptionalRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJOptionalRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJPrimitiveRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJPrimitiveRulesTestInput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJPrimitiveRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJPrimitiveRulesTestInput.java
index d4740aae..2d156b96 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJPrimitiveRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJPrimitiveRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJShortRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJShortRulesTestInput.java
similarity index 96%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJShortRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJShortRulesTestInput.java
index 6114d861..83597a24 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJShortRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJShortRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.data.Offset.offset;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJStringRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJStringRulesTestInput.java
similarity index 94%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJStringRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJStringRulesTestInput.java
index 7efb588d..f7147e97 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJStringRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJStringRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJThrowingCallableRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJThrowingCallableRulesTestInput.java
similarity index 99%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJThrowingCallableRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJThrowingCallableRulesTestInput.java
index 3dc64aea..b922cb5d 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJThrowingCallableRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssertJThrowingCallableRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
import static org.assertj.core.api.Assertions.assertThatIOException;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssortedRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssortedRulesTestInput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssortedRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssortedRulesTestInput.java
index 6c1398a3..3e4841a3 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssortedRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/AssortedRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static com.google.common.collect.ImmutableSet.toImmutableSet;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/BigDecimalRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/BigDecimalRulesTestInput.java
similarity index 94%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/BigDecimalRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/BigDecimalRulesTestInput.java
index 37db5459..2731ec3b 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/BigDecimalRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/BigDecimalRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import com.google.common.collect.ImmutableSet;
import java.math.BigDecimal;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/CollectionRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/CollectionRulesTestInput.java
similarity index 99%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/CollectionRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/CollectionRulesTestInput.java
index c5c3f686..527b991a 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/CollectionRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/CollectionRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ComparatorRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ComparatorRulesTestInput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ComparatorRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ComparatorRulesTestInput.java
index 961a5f21..66e37bd5 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ComparatorRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ComparatorRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static java.util.Comparator.naturalOrder;
import static java.util.Comparator.reverseOrder;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/DoubleStreamRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/DoubleStreamRulesTestInput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/DoubleStreamRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/DoubleStreamRulesTestInput.java
index 9c35f9c6..0283dd0b 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/DoubleStreamRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/DoubleStreamRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Streams;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/EqualityRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/EqualityRulesTestInput.java
similarity index 97%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/EqualityRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/EqualityRulesTestInput.java
index e887e5a0..68802743 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/EqualityRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/EqualityRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import com.google.common.collect.BoundType;
import com.google.common.collect.ImmutableSet;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableListMultimapRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ImmutableListMultimapRulesTestInput.java
similarity index 99%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableListMultimapRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ImmutableListMultimapRulesTestInput.java
index 287e550a..4b4c567c 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableListMultimapRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ImmutableListMultimapRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static com.google.common.collect.ImmutableListMultimap.flatteningToImmutableListMultimap;
import static com.google.common.collect.ImmutableListMultimap.toImmutableListMultimap;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableListRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ImmutableListRulesTestInput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableListRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ImmutableListRulesTestInput.java
index 8a8623f0..cdf827d7 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableListRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ImmutableListRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static com.google.common.collect.ImmutableList.toImmutableList;
import static java.util.Comparator.naturalOrder;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableMapRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ImmutableMapRulesTestInput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableMapRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ImmutableMapRulesTestInput.java
index b4cd5f95..f72cbfd2 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableMapRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ImmutableMapRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static com.google.common.collect.ImmutableMap.toImmutableMap;
import static java.util.function.Function.identity;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableMultisetRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ImmutableMultisetRulesTestInput.java
similarity index 97%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableMultisetRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ImmutableMultisetRulesTestInput.java
index efeeb2db..f7d66341 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableMultisetRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ImmutableMultisetRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static com.google.common.collect.ImmutableMultiset.toImmutableMultiset;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableSetMultimapRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ImmutableSetMultimapRulesTestInput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableSetMultimapRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ImmutableSetMultimapRulesTestInput.java
index 8ac65425..cb4a7a86 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableSetMultimapRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ImmutableSetMultimapRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static com.google.common.collect.ImmutableSetMultimap.flatteningToImmutableSetMultimap;
import static com.google.common.collect.ImmutableSetMultimap.toImmutableSetMultimap;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableSetRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ImmutableSetRulesTestInput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableSetRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ImmutableSetRulesTestInput.java
index 9a457ff0..6aad3d13 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableSetRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ImmutableSetRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static com.google.common.collect.ImmutableSet.toImmutableSet;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableSortedMapRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ImmutableSortedMapRulesTestInput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableSortedMapRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ImmutableSortedMapRulesTestInput.java
index 45fef73d..6bc64d32 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableSortedMapRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ImmutableSortedMapRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static com.google.common.collect.ImmutableSortedMap.toImmutableSortedMap;
import static java.util.Comparator.naturalOrder;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableSortedMultisetRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ImmutableSortedMultisetRulesTestInput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableSortedMultisetRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ImmutableSortedMultisetRulesTestInput.java
index 0906733c..b047f243 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableSortedMultisetRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ImmutableSortedMultisetRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static com.google.common.collect.ImmutableSortedMultiset.toImmutableSortedMultiset;
import static java.util.Comparator.naturalOrder;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableSortedSetRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ImmutableSortedSetRulesTestInput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableSortedSetRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ImmutableSortedSetRulesTestInput.java
index a1d8f80f..58d5b3e3 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableSortedSetRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ImmutableSortedSetRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static com.google.common.collect.ImmutableSortedSet.toImmutableSortedSet;
import static java.util.Comparator.naturalOrder;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/IntStreamRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/IntStreamRulesTestInput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/IntStreamRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/IntStreamRulesTestInput.java
index 32458e2b..36300167 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/IntStreamRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/IntStreamRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Streams;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/JUnitRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/JUnitRulesTestInput.java
similarity index 89%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/JUnitRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/JUnitRulesTestInput.java
index 25ebb0d5..2fcd949a 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/JUnitRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/JUnitRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import com.google.common.collect.ImmutableSet;
import org.junit.jupiter.params.provider.Arguments;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/LongStreamRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/LongStreamRulesTestInput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/LongStreamRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/LongStreamRulesTestInput.java
index 3909ce3d..64f2830a 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/LongStreamRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/LongStreamRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Streams;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/MapEntryRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/MapEntryRulesTestInput.java
similarity index 96%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/MapEntryRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/MapEntryRulesTestInput.java
index 99b40dd7..441c64ef 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/MapEntryRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/MapEntryRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Maps;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/MockitoRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/MockitoRulesTestInput.java
similarity index 92%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/MockitoRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/MockitoRulesTestInput.java
index 667bd220..8beab544 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/MockitoRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/MockitoRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/MultimapRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/MultimapRulesTestInput.java
similarity index 94%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/MultimapRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/MultimapRulesTestInput.java
index d11347fa..1110e3ca 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/MultimapRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/MultimapRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ImmutableSetMultimap;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/NullRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/NullRulesTestInput.java
similarity index 94%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/NullRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/NullRulesTestInput.java
index 9163673a..c3f92b68 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/NullRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/NullRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import com.google.common.base.MoreObjects;
import com.google.common.collect.ImmutableSet;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/OptionalRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/OptionalRulesTestInput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/OptionalRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/OptionalRulesTestInput.java
index d06d9da7..65474868 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/OptionalRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/OptionalRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Streams;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/PrimitiveRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/PrimitiveRulesTestInput.java
similarity index 96%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/PrimitiveRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/PrimitiveRulesTestInput.java
index c3b5d3d5..0407a0a6 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/PrimitiveRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/PrimitiveRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import com.google.common.collect.ImmutableSet;
import com.google.common.primitives.Ints;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ReactorRulesTestInput.java
similarity index 99%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ReactorRulesTestInput.java
index cbf5cc88..3cb821ba 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/ReactorRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/RxJava2AdapterRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/RxJava2AdapterRulesTestInput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/RxJava2AdapterRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/RxJava2AdapterRulesTestInput.java
index 5562a671..e77d5182 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/RxJava2AdapterRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/RxJava2AdapterRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import com.google.common.collect.ImmutableSet;
import io.reactivex.BackpressureStrategy;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/StreamRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/StreamRulesTestInput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/StreamRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/StreamRulesTestInput.java
index 67911c45..fda3991b 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/StreamRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/StreamRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static java.util.Comparator.comparingInt;
import static java.util.Comparator.reverseOrder;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/StringRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/StringRulesTestInput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/StringRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/StringRulesTestInput.java
index f70407c0..b2748aa4 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/StringRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/StringRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static java.nio.charset.StandardCharsets.UTF_8;
import static java.util.stream.Collectors.joining;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/TestNGToAssertJRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/TestNGToAssertJRulesTestInput.java
similarity index 99%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/TestNGToAssertJRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/TestNGToAssertJRulesTestInput.java
index 91e7999b..bc47d5a6 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/TestNGToAssertJRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/TestNGToAssertJRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertEqualsNoOrder;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/TimeRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/TimeRulesTestInput.java
similarity index 99%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/TimeRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/TimeRulesTestInput.java
index b813403c..bec25c7c 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/TimeRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/TimeRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import com.google.common.collect.ImmutableSet;
import java.time.Clock;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/WebClientRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/WebClientRulesTestInput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/WebClientRulesTestInput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/WebClientRulesTestInput.java
index 61a0cd2d..838a14d8 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/WebClientRulesTestInput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/input/WebClientRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.input;
import static org.springframework.http.HttpMethod.GET;
import static org.springframework.http.HttpMethod.HEAD;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJBigDecimalRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJBigDecimalRulesTestOutput.java
similarity index 95%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJBigDecimalRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJBigDecimalRulesTestOutput.java
index 9fc72e7b..9e85ae55 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJBigDecimalRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJBigDecimalRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.data.Offset.offset;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJBigIntegerRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJBigIntegerRulesTestOutput.java
similarity index 97%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJBigIntegerRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJBigIntegerRulesTestOutput.java
index ea2fa457..0166a726 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJBigIntegerRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJBigIntegerRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.data.Offset.offset;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJBooleanRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJBooleanRulesTestOutput.java
similarity index 96%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJBooleanRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJBooleanRulesTestOutput.java
index e7d11d1e..869205d2 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJBooleanRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJBooleanRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJByteRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJByteRulesTestOutput.java
similarity index 96%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJByteRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJByteRulesTestOutput.java
index 5f740bde..5f8266f2 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJByteRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJByteRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.data.Offset.offset;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJCharSequenceRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJCharSequenceRulesTestOutput.java
similarity index 93%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJCharSequenceRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJCharSequenceRulesTestOutput.java
index 50f906a5..d177d9a6 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJCharSequenceRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJCharSequenceRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJComparableRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJComparableRulesTestOutput.java
similarity index 95%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJComparableRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJComparableRulesTestOutput.java
index a7378f52..c0a1c476 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJComparableRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJComparableRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJDoubleRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJDoubleRulesTestOutput.java
similarity index 96%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJDoubleRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJDoubleRulesTestOutput.java
index 62acf54d..08171003 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJDoubleRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJDoubleRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.data.Offset.offset;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJEnumerableRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJEnumerableRulesTestOutput.java
similarity index 95%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJEnumerableRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJEnumerableRulesTestOutput.java
index 2f676a8e..f6677ce7 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJEnumerableRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJEnumerableRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJFloatRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJFloatRulesTestOutput.java
similarity index 96%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJFloatRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJFloatRulesTestOutput.java
index e2c4fd0f..a6e07392 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJFloatRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJFloatRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.data.Offset.offset;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJIntegerRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJIntegerRulesTestOutput.java
similarity index 95%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJIntegerRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJIntegerRulesTestOutput.java
index 495cf185..886fe256 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJIntegerRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJIntegerRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.data.Offset.offset;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJLongRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJLongRulesTestOutput.java
similarity index 95%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJLongRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJLongRulesTestOutput.java
index 81692bf1..abd16ebb 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJLongRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJLongRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.data.Offset.offset;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJMapRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJMapRulesTestOutput.java
similarity index 93%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJMapRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJMapRulesTestOutput.java
index a5e58f23..f5b778a9 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJMapRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJMapRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJNumberRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJNumberRulesTestOutput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJNumberRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJNumberRulesTestOutput.java
index e141a907..15eb44da 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJNumberRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJNumberRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJObjectRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJObjectRulesTestOutput.java
similarity index 93%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJObjectRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJObjectRulesTestOutput.java
index 0af2474f..4276e8e9 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJObjectRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJObjectRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJOptionalRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJOptionalRulesTestOutput.java
similarity index 97%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJOptionalRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJOptionalRulesTestOutput.java
index e0ec8549..f6fd23b3 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJOptionalRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJOptionalRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJPrimitiveRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJPrimitiveRulesTestOutput.java
similarity index 99%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJPrimitiveRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJPrimitiveRulesTestOutput.java
index e556908b..7793e0a2 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJPrimitiveRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJPrimitiveRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJShortRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJShortRulesTestOutput.java
similarity index 96%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJShortRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJShortRulesTestOutput.java
index 463bea8e..2f51a53a 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJShortRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJShortRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.data.Offset.offset;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJStringRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJStringRulesTestOutput.java
similarity index 94%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJStringRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJStringRulesTestOutput.java
index f0d8293b..bf432d88 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJStringRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJStringRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJThrowingCallableRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJThrowingCallableRulesTestOutput.java
similarity index 99%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJThrowingCallableRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJThrowingCallableRulesTestOutput.java
index c00ed335..6e20dde4 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssertJThrowingCallableRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssertJThrowingCallableRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
import static org.assertj.core.api.Assertions.assertThatIOException;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssortedRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssortedRulesTestOutput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssortedRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssortedRulesTestOutput.java
index 7a9a91cb..dd52fb83 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/AssortedRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/AssortedRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static com.google.common.collect.ImmutableSet.toImmutableSet;
import static com.google.common.collect.Sets.toImmutableEnumSet;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/BigDecimalRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/BigDecimalRulesTestOutput.java
similarity index 93%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/BigDecimalRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/BigDecimalRulesTestOutput.java
index 8be65ad5..b13310ea 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/BigDecimalRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/BigDecimalRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import com.google.common.collect.ImmutableSet;
import java.math.BigDecimal;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/CollectionRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/CollectionRulesTestOutput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/CollectionRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/CollectionRulesTestOutput.java
index 7d580729..2cd84aa8 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/CollectionRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/CollectionRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ComparatorRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ComparatorRulesTestOutput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ComparatorRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ComparatorRulesTestOutput.java
index b2a54f06..8dcc8efc 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ComparatorRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ComparatorRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static java.util.Comparator.naturalOrder;
import static java.util.Comparator.reverseOrder;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/DoubleStreamRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/DoubleStreamRulesTestOutput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/DoubleStreamRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/DoubleStreamRulesTestOutput.java
index 0f5c7db8..4b564cf4 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/DoubleStreamRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/DoubleStreamRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Streams;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/EqualityRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/EqualityRulesTestOutput.java
similarity index 97%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/EqualityRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/EqualityRulesTestOutput.java
index b3aa3024..aa18f672 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/EqualityRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/EqualityRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import com.google.common.collect.BoundType;
import com.google.common.collect.ImmutableSet;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableListMultimapRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ImmutableListMultimapRulesTestOutput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableListMultimapRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ImmutableListMultimapRulesTestOutput.java
index cfed18e6..b1060344 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableListMultimapRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ImmutableListMultimapRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static com.google.common.collect.ImmutableListMultimap.flatteningToImmutableListMultimap;
import static com.google.common.collect.ImmutableListMultimap.toImmutableListMultimap;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableListRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ImmutableListRulesTestOutput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableListRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ImmutableListRulesTestOutput.java
index 6a026f8c..dec36a19 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableListRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ImmutableListRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static com.google.common.collect.ImmutableList.toImmutableList;
import static com.google.common.collect.ImmutableSet.toImmutableSet;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableMapRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ImmutableMapRulesTestOutput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableMapRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ImmutableMapRulesTestOutput.java
index 4c1ddf94..10ad6fa7 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableMapRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ImmutableMapRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static com.google.common.collect.ImmutableMap.toImmutableMap;
import static java.util.function.Function.identity;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableMultisetRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ImmutableMultisetRulesTestOutput.java
similarity index 96%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableMultisetRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ImmutableMultisetRulesTestOutput.java
index 297b3167..053dc716 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableMultisetRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ImmutableMultisetRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static com.google.common.collect.ImmutableMultiset.toImmutableMultiset;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableSetMultimapRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ImmutableSetMultimapRulesTestOutput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableSetMultimapRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ImmutableSetMultimapRulesTestOutput.java
index 5f358443..b4f99172 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableSetMultimapRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ImmutableSetMultimapRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static com.google.common.collect.ImmutableSetMultimap.flatteningToImmutableSetMultimap;
import static com.google.common.collect.ImmutableSetMultimap.toImmutableSetMultimap;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableSetRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ImmutableSetRulesTestOutput.java
similarity index 97%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableSetRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ImmutableSetRulesTestOutput.java
index 21e612a3..172640f8 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableSetRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ImmutableSetRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static com.google.common.collect.ImmutableSet.toImmutableSet;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableSortedMapRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ImmutableSortedMapRulesTestOutput.java
similarity index 97%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableSortedMapRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ImmutableSortedMapRulesTestOutput.java
index 9955c0c5..903bfbd3 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableSortedMapRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ImmutableSortedMapRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static com.google.common.collect.ImmutableSortedMap.toImmutableSortedMap;
import static java.util.Comparator.naturalOrder;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableSortedMultisetRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ImmutableSortedMultisetRulesTestOutput.java
similarity index 97%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableSortedMultisetRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ImmutableSortedMultisetRulesTestOutput.java
index ffcba293..440e2232 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableSortedMultisetRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ImmutableSortedMultisetRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static com.google.common.collect.ImmutableSortedMultiset.toImmutableSortedMultiset;
import static java.util.Comparator.naturalOrder;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableSortedSetRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ImmutableSortedSetRulesTestOutput.java
similarity index 97%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableSortedSetRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ImmutableSortedSetRulesTestOutput.java
index 5fa58dbb..60d1b6fb 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ImmutableSortedSetRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ImmutableSortedSetRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static com.google.common.collect.ImmutableSortedSet.toImmutableSortedSet;
import static java.util.Comparator.naturalOrder;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/IntStreamRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/IntStreamRulesTestOutput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/IntStreamRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/IntStreamRulesTestOutput.java
index c75ce7bb..7ca37e48 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/IntStreamRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/IntStreamRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Streams;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/JUnitRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/JUnitRulesTestOutput.java
similarity index 90%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/JUnitRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/JUnitRulesTestOutput.java
index 45dba93b..f4edac88 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/JUnitRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/JUnitRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static org.junit.jupiter.params.provider.Arguments.arguments;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/LongStreamRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/LongStreamRulesTestOutput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/LongStreamRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/LongStreamRulesTestOutput.java
index b585534a..3981b0a6 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/LongStreamRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/LongStreamRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Streams;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/MapEntryRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/MapEntryRulesTestOutput.java
similarity index 96%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/MapEntryRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/MapEntryRulesTestOutput.java
index 39cfa9c2..d8294aaa 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/MapEntryRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/MapEntryRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static java.util.Map.Entry.comparingByKey;
import static java.util.Map.Entry.comparingByValue;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/MockitoRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/MockitoRulesTestOutput.java
similarity index 92%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/MockitoRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/MockitoRulesTestOutput.java
index 292faf35..3c4405e6 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/MockitoRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/MockitoRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/MultimapRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/MultimapRulesTestOutput.java
similarity index 94%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/MultimapRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/MultimapRulesTestOutput.java
index 417de18a..e2871f4f 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/MultimapRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/MultimapRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ImmutableSetMultimap;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/NullRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/NullRulesTestOutput.java
similarity index 94%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/NullRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/NullRulesTestOutput.java
index 4867d008..735bfbb7 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/NullRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/NullRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static java.util.Objects.requireNonNullElse;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/OptionalRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/OptionalRulesTestOutput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/OptionalRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/OptionalRulesTestOutput.java
index e20f6b4a..b08c9aa7 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/OptionalRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/OptionalRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static com.google.common.collect.Streams.stream;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/PrimitiveRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/PrimitiveRulesTestOutput.java
similarity index 96%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/PrimitiveRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/PrimitiveRulesTestOutput.java
index a9d675f0..f328ba8a 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/PrimitiveRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/PrimitiveRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import com.google.common.collect.ImmutableSet;
import com.google.common.primitives.Ints;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ReactorRulesTestOutput.java
similarity index 99%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ReactorRulesTestOutput.java
index 94daf79e..ff6e522d 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/ReactorRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static com.google.common.collect.MoreCollectors.toOptional;
import static java.util.function.Function.identity;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/RxJava2AdapterRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/RxJava2AdapterRulesTestOutput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/RxJava2AdapterRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/RxJava2AdapterRulesTestOutput.java
index 6a088d14..af7bc997 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/RxJava2AdapterRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/RxJava2AdapterRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import com.google.common.collect.ImmutableSet;
import io.reactivex.BackpressureStrategy;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/StreamRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/StreamRulesTestOutput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/StreamRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/StreamRulesTestOutput.java
index 87e76195..3ed5be74 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/StreamRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/StreamRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static java.util.Comparator.comparingInt;
import static java.util.Comparator.naturalOrder;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/StringRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/StringRulesTestOutput.java
similarity index 97%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/StringRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/StringRulesTestOutput.java
index 723cfe3c..a665e070 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/StringRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/StringRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static java.nio.charset.StandardCharsets.UTF_8;
import static java.util.stream.Collectors.joining;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/TestNGToAssertJRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/TestNGToAssertJRulesTestOutput.java
similarity index 99%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/TestNGToAssertJRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/TestNGToAssertJRulesTestOutput.java
index ba9ad9a4..788b1b77 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/TestNGToAssertJRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/TestNGToAssertJRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static com.google.common.collect.ImmutableList.copyOf;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/TimeRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/TimeRulesTestOutput.java
similarity index 98%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/TimeRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/TimeRulesTestOutput.java
index 2e411bcc..5a5f6eb7 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/TimeRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/TimeRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import com.google.common.collect.ImmutableSet;
import java.time.Clock;
diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/WebClientRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/WebClientRulesTestOutput.java
similarity index 97%
rename from error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/WebClientRulesTestOutput.java
rename to error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/WebClientRulesTestOutput.java
index fcdbf4c2..038da194 100644
--- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/WebClientRulesTestOutput.java
+++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/output/WebClientRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refasterrules;
+package tech.picnic.errorprone.refasterrules.output;
import static org.springframework.http.HttpMethod.GET;
import static org.springframework.http.HttpMethod.HEAD;
diff --git a/pom.xml b/pom.xml
index 84a6a557..86e8a3b7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -39,6 +39,7 @@
+ docgen
error-prone-contrib
refaster-compiler
refaster-runner
@@ -1311,6 +1312,31 @@
+
+ docgen
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+
+ ${project.groupId}
+ docgen
+ ${project.version}
+
+
+
+ -Xplugin:Docgen -XdocsOutputDirectory=${project.build.directory}
+
+
+
+
+
+
+
error-prone-fork
diff --git a/refaster-test-support/src/main/java/tech/picnic/errorprone/refaster/test/RefasterRuleCollection.java b/refaster-test-support/src/main/java/tech/picnic/errorprone/refaster/test/RefasterRuleCollection.java
index daf2d525..b3672045 100644
--- a/refaster-test-support/src/main/java/tech/picnic/errorprone/refaster/test/RefasterRuleCollection.java
+++ b/refaster-test-support/src/main/java/tech/picnic/errorprone/refaster/test/RefasterRuleCollection.java
@@ -21,6 +21,7 @@ import com.google.common.collect.Sets;
import com.google.errorprone.BugCheckerRefactoringTestHelper;
import com.google.errorprone.BugPattern;
import com.google.errorprone.ErrorProneFlags;
+import com.google.errorprone.FileObjects;
import com.google.errorprone.SubContext;
import com.google.errorprone.VisitorState;
import com.google.errorprone.bugpatterns.BugChecker;
@@ -38,6 +39,7 @@ import com.sun.source.util.TreeScanner;
import com.sun.tools.javac.tree.EndPosTable;
import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
import com.sun.tools.javac.util.Position;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -45,6 +47,7 @@ import java.util.Optional;
import java.util.Set;
import java.util.regex.Pattern;
import javax.annotation.Nullable;
+import javax.tools.JavaFileObject;
import tech.picnic.errorprone.refaster.runner.CodeTransformers;
import tech.picnic.errorprone.refaster.runner.Refaster;
@@ -120,10 +123,23 @@ public final class RefasterRuleCollection extends BugChecker implements Compilat
public static void validate(Class> clazz) {
String className = clazz.getSimpleName();
+ JavaFileObject inputFile =
+ FileObjects.forResource(clazz, "input/" + className + "TestInput.java");
+ JavaFileObject outputFile =
+ FileObjects.forResource(clazz, "output/" + className + "TestOutput.java");
+
+ String inputContent, outputContent;
+ try {
+ inputContent = inputFile.getCharContent(true).toString();
+ outputContent = outputFile.getCharContent(true).toString();
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+
BugCheckerRefactoringTestHelper.newInstance(RefasterRuleCollection.class, clazz)
.setArgs(ImmutableList.of("-XepOpt:" + RULE_COLLECTION_FLAG + '=' + className))
- .addInput(className + "TestInput.java")
- .addOutput(className + "TestOutput.java")
+ .addInputLines(inputFile.getName(), inputContent.replace(".input", ""))
+ .addOutputLines(outputFile.getName(), outputContent.replace(".output", ""))
.doTest(TEXT_MATCH);
}
diff --git a/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/MatchInWrongMethodRulesTestInput.java b/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/input/MatchInWrongMethodRulesTestInput.java
similarity index 83%
rename from refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/MatchInWrongMethodRulesTestInput.java
rename to refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/input/MatchInWrongMethodRulesTestInput.java
index d2c20630..d347b574 100644
--- a/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/MatchInWrongMethodRulesTestInput.java
+++ b/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/input/MatchInWrongMethodRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refaster.test;
+package tech.picnic.errorprone.refaster.test.input;
/** Code to test the Refaster rules from {@link MatchInWrongMethodRules}. */
final class MatchInWrongMethodRulesTest implements RefasterRuleCollectionTestCase {
diff --git a/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/MethodWithoutPrefixRulesTestInput.java b/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/input/MethodWithoutPrefixRulesTestInput.java
similarity index 89%
rename from refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/MethodWithoutPrefixRulesTestInput.java
rename to refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/input/MethodWithoutPrefixRulesTestInput.java
index 466d8f89..7adad092 100644
--- a/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/MethodWithoutPrefixRulesTestInput.java
+++ b/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/input/MethodWithoutPrefixRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refaster.test;
+package tech.picnic.errorprone.refaster.test.input;
import com.google.common.collect.ImmutableSet;
diff --git a/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/MisnamedTestClassRulesTestInput.java b/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/input/MisnamedTestClassRulesTestInput.java
similarity index 83%
rename from refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/MisnamedTestClassRulesTestInput.java
rename to refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/input/MisnamedTestClassRulesTestInput.java
index 6838452d..f971fe69 100644
--- a/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/MisnamedTestClassRulesTestInput.java
+++ b/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/input/MisnamedTestClassRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refaster.test;
+package tech.picnic.errorprone.refaster.test.input;
/** Code to test the Refaster rules from {@link MisnamedTestClassRules}. */
final class IncorrectNameRulesTest implements RefasterRuleCollectionTestCase {
diff --git a/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/MissingTestAndWrongTestRulesTestInput.java b/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/input/MissingTestAndWrongTestRulesTestInput.java
similarity index 84%
rename from refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/MissingTestAndWrongTestRulesTestInput.java
rename to refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/input/MissingTestAndWrongTestRulesTestInput.java
index 745aa424..00c1a018 100644
--- a/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/MissingTestAndWrongTestRulesTestInput.java
+++ b/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/input/MissingTestAndWrongTestRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refaster.test;
+package tech.picnic.errorprone.refaster.test.input;
/** Code to test the Refaster rules from {@link MissingTestAndWrongTestRules}. */
final class MissingTestAndWrongTestRulesTest implements RefasterRuleCollectionTestCase {
diff --git a/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/PartialTestMatchRulesTestInput.java b/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/input/PartialTestMatchRulesTestInput.java
similarity index 84%
rename from refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/PartialTestMatchRulesTestInput.java
rename to refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/input/PartialTestMatchRulesTestInput.java
index 8024281c..2dfcae45 100644
--- a/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/PartialTestMatchRulesTestInput.java
+++ b/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/input/PartialTestMatchRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refaster.test;
+package tech.picnic.errorprone.refaster.test.input;
/** Code to test the Refaster rules from {@link PartialTestMatchRules}. */
final class PartialTestMatchRulesTest implements RefasterRuleCollectionTestCase {
diff --git a/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/RuleWithoutTestRulesTestInput.java b/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/input/RuleWithoutTestRulesTestInput.java
similarity index 81%
rename from refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/RuleWithoutTestRulesTestInput.java
rename to refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/input/RuleWithoutTestRulesTestInput.java
index 229d574f..6fd82e9d 100644
--- a/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/RuleWithoutTestRulesTestInput.java
+++ b/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/input/RuleWithoutTestRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refaster.test;
+package tech.picnic.errorprone.refaster.test.input;
/** Code to test the Refaster rules from {@link RuleWithoutTestRules}. */
final class RuleWithoutTestRulesTest implements RefasterRuleCollectionTestCase {
diff --git a/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/ValidRulesTestInput.java b/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/input/ValidRulesTestInput.java
similarity index 94%
rename from refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/ValidRulesTestInput.java
rename to refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/input/ValidRulesTestInput.java
index 8752bc0f..68ae6cb6 100644
--- a/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/ValidRulesTestInput.java
+++ b/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/input/ValidRulesTestInput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refaster.test;
+package tech.picnic.errorprone.refaster.test.input;
import com.google.common.base.Strings;
import com.google.common.collect.ImmutableSet;
diff --git a/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/MatchInWrongMethodRulesTestOutput.java b/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/output/MatchInWrongMethodRulesTestOutput.java
similarity index 92%
rename from refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/MatchInWrongMethodRulesTestOutput.java
rename to refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/output/MatchInWrongMethodRulesTestOutput.java
index 83f191d3..c6a0088b 100644
--- a/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/MatchInWrongMethodRulesTestOutput.java
+++ b/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/output/MatchInWrongMethodRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refaster.test;
+package tech.picnic.errorprone.refaster.test.output;
/** Code to test the Refaster rules from {@link MatchInWrongMethodRules}. */
final class MatchInWrongMethodRulesTest implements RefasterRuleCollectionTestCase {
diff --git a/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/MethodWithoutPrefixRulesTestOutput.java b/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/output/MethodWithoutPrefixRulesTestOutput.java
similarity index 91%
rename from refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/MethodWithoutPrefixRulesTestOutput.java
rename to refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/output/MethodWithoutPrefixRulesTestOutput.java
index 74d509e4..0c12a285 100644
--- a/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/MethodWithoutPrefixRulesTestOutput.java
+++ b/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/output/MethodWithoutPrefixRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refaster.test;
+package tech.picnic.errorprone.refaster.test.output;
import com.google.common.collect.ImmutableSet;
diff --git a/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/MisnamedTestClassRulesTestOutput.java b/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/output/MisnamedTestClassRulesTestOutput.java
similarity index 87%
rename from refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/MisnamedTestClassRulesTestOutput.java
rename to refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/output/MisnamedTestClassRulesTestOutput.java
index 38ff3fcc..9890d449 100644
--- a/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/MisnamedTestClassRulesTestOutput.java
+++ b/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/output/MisnamedTestClassRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refaster.test;
+package tech.picnic.errorprone.refaster.test.output;
/** Code to test the Refaster rules from {@link MisnamedTestClassRules}. */
/* ERROR: Class should be named `MisnamedTestClassRulesTest`. */
diff --git a/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/MissingTestAndWrongTestRulesTestOutput.java b/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/output/MissingTestAndWrongTestRulesTestOutput.java
similarity index 94%
rename from refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/MissingTestAndWrongTestRulesTestOutput.java
rename to refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/output/MissingTestAndWrongTestRulesTestOutput.java
index 7c9336d3..ef753f93 100644
--- a/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/MissingTestAndWrongTestRulesTestOutput.java
+++ b/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/output/MissingTestAndWrongTestRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refaster.test;
+package tech.picnic.errorprone.refaster.test.output;
/** Code to test the Refaster rules from {@link MissingTestAndWrongTestRules}. */
final class MissingTestAndWrongTestRulesTest implements RefasterRuleCollectionTestCase {
diff --git a/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/PartialTestMatchRulesTestOutput.java b/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/output/PartialTestMatchRulesTestOutput.java
similarity index 89%
rename from refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/PartialTestMatchRulesTestOutput.java
rename to refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/output/PartialTestMatchRulesTestOutput.java
index 091ed9f0..bfaf6062 100644
--- a/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/PartialTestMatchRulesTestOutput.java
+++ b/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/output/PartialTestMatchRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refaster.test;
+package tech.picnic.errorprone.refaster.test.output;
/** Code to test the Refaster rules from {@link PartialTestMatchRules}. */
final class PartialTestMatchRulesTest implements RefasterRuleCollectionTestCase {
diff --git a/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/RuleWithoutTestRulesTestOutput.java b/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/output/RuleWithoutTestRulesTestOutput.java
similarity index 87%
rename from refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/RuleWithoutTestRulesTestOutput.java
rename to refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/output/RuleWithoutTestRulesTestOutput.java
index 15f89cd4..67fcefa7 100644
--- a/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/RuleWithoutTestRulesTestOutput.java
+++ b/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/output/RuleWithoutTestRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refaster.test;
+package tech.picnic.errorprone.refaster.test.output;
/** Code to test the Refaster rules from {@link RuleWithoutTestRules}. */
final class RuleWithoutTestRulesTest implements RefasterRuleCollectionTestCase {
diff --git a/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/ValidRulesTestOutput.java b/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/output/ValidRulesTestOutput.java
similarity index 93%
rename from refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/ValidRulesTestOutput.java
rename to refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/output/ValidRulesTestOutput.java
index 1822797c..c6ee84c8 100644
--- a/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/ValidRulesTestOutput.java
+++ b/refaster-test-support/src/test/resources/tech/picnic/errorprone/refaster/test/output/ValidRulesTestOutput.java
@@ -1,4 +1,4 @@
-package tech.picnic.errorprone.refaster.test;
+package tech.picnic.errorprone.refaster.test.output;
import static com.google.common.base.Strings.isNullOrEmpty;