<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <!-- This parent is requirements for deploy of artifacts to maven central -->
  <parent>
    <groupId>org.sonatype.oss</groupId>
    <artifactId>oss-parent</artifactId>
    <version>9</version>
  </parent>

  <groupId>com.puppycrawl.tools</groupId>
  <artifactId>checkstyle</artifactId>
  <version>10.8.1</version>
  <packaging>jar</packaging>

  <name>checkstyle</name>
  <description>
    Checkstyle is a development tool to help programmers write Java code
    that adheres to a coding standard
  </description>
  <url>https://checkstyle.org/</url>
  <inceptionYear>2001</inceptionYear>
  <licenses>
    <license>
      <name>LGPL-2.1+</name>
      <url>http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt</url>
    </license>
  </licenses>

  <developers>
    <developer>
      <id>romani</id>
      <name>Roman Ivanov</name>
      <roles>
        <role>project admin, lead developer</role>
      </roles>
    </developer>
    <developer>
      <id>rnveach</id>
      <name>Richard Veach</name>
      <roles>
        <role>project admin, developer</role>
      </roles>
    </developer>
    <developer>
      <id>pbludov</id>
      <name>Pavel Bludov</name>
      <roles>
        <role>developer</role>
      </roles>
    </developer>
    <developer>
      <id>strkkk</id>
      <name>Andrei Paikin</name>
      <roles>
        <role>developer</role>
      </roles>
    </developer>
    <developer>
      <id>nick-mancuso</id>
      <name>Nick Mancuso</name>
      <roles>
        <role>developer</role>
      </roles>
    </developer>
    <developer>
      <id>sabaka</id>
      <name>Ilja Dubinin</name>
      <roles>
        <role>former developer</role>
      </roles>
    </developer>
    <developer>
      <id>MEZk</id>
      <name>Andrei Selkin</name>
      <roles>
        <role>former developer</role>
      </roles>
    </developer>
    <developer>
      <id>Vladlis</id>
      <name>Vladislav Lisetskii</name>
      <roles>
        <role>former developer</role>
      </roles>
    </developer>
    <developer>
      <id>oburn</id>
      <name>Oliver Burn</name>
      <roles>
        <role>founder (retired)</role>
      </roles>
    </developer>
    <developer>
      <id>mkordas</id>
      <name>Michał Kordas</name>
      <roles>
        <role>former developer</role>
      </roles>
    </developer>
    <developer>
      <id>rdiachenko</id>
      <name>Ruslan Diachenko</name>
      <roles>
        <role>former developer</role>
      </roles>
    </developer>
    <developer>
      <id>baratali</id>
      <name>Baratali Izmailov</name>
      <roles>
        <role>former developer</role>
      </roles>
    </developer>
    <developer>
      <id>daniilyar</id>
      <name>Daniil Yaroslavtsev</name>
      <roles>
        <role>former developer</role>
      </roles>
    </developer>
    <developer>
      <id>moradan</id>
      <name>Ivan Sopov</name>
      <roles>
        <role>former developer</role>
      </roles>
    </developer>
    <developer>
      <id>lkuehne</id>
      <name>Lars Kühne</name>
      <roles>
        <role>former developer</role>
      </roles>
    </developer>
    <developer>
      <id>rickgiles</id>
      <name>Rick Giles</name>
      <roles>
        <role>former developer</role>
      </roles>
    </developer>
    <developer>
      <id>o_sukhodolsky</id>
      <name>Oleg Sukhodolsky</name>
      <roles>
        <role>former developer</role>
      </roles>
    </developer>
    <developer>
      <id>mstudman</id>
      <name>Michael Studman</name>
      <roles>
        <role>former developer</role>
      </roles>
    </developer>
    <developer>
      <id>tschneeberger</id>
      <name>Travis Schneeberger</name>
      <roles>
        <role>former developer</role>
      </roles>
    </developer>
  </developers>
  <contributors>
    <contributor>
      <url>https://github.com/checkstyle/checkstyle/graphs/contributors</url>
    </contributor>
  </contributors>

  <mailingLists>
    <mailingList>
      <name>checkstyle</name>
      <archive>https://groups.google.com/forum/#!forum/checkstyle</archive>
      <subscribe>mailto:checkstyle%2Bsubscribe@googlegroups.com</subscribe>
      <unsubscribe>mailto:checkstyle%2Bunsubscribe@googlegroups.com</unsubscribe>
      <post>mailto:checkstyle@googlegroups.com</post>
    </mailingList>
    <mailingList>
      <name>checkstyle-devel</name>
      <archive>https://groups.google.com/forum/#!forum/checkstyle-devel</archive>
      <subscribe>mailto:checkstyle-devel%2Bsubscribe@googlegroups.com</subscribe>
      <unsubscribe>mailto:checkstyle-devel%2Bunsubscribe@googlegroups.com</unsubscribe>
      <post>mailto:checkstyle-devel@googlegroups.com</post>
    </mailingList>
  </mailingLists>

  <scm>
    <connection>scm:git:git@github.com:checkstyle/checkstyle.git</connection>
    <developerConnection>scm:git:git@github.com:checkstyle/checkstyle.git</developerConnection>
    <url>https://github.com/checkstyle/checkstyle</url>
  </scm>
  <issueManagement>
    <system>GitHub Issues</system>
    <url>https://github.com/checkstyle/checkstyle/issues</url>
  </issueManagement>
  <ciManagement>
    <system>travis</system>
    <url>https://travis-ci.org/checkstyle/checkstyle</url>
  </ciManagement>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <surefire.options />
    <projectVersion>${project.version}</projectVersion>
    <antlr4.version>4.11.1</antlr4.version>
    <maven.site.plugin.version>3.12.1</maven.site.plugin.version>
    <maven.spotbugs.plugin.version>4.7.3.0</maven.spotbugs.plugin.version>
    <maven.pmd.plugin.version>3.20.0</maven.pmd.plugin.version>
    <pmd.version>6.54.0</pmd.version>
    <maven.jacoco.plugin.version>0.8.8</maven.jacoco.plugin.version>
    <mockito.version>5.1.1</mockito.version>
    <saxon.version>12.0</saxon.version>
    <maven.checkstyle.plugin.version>3.2.0</maven.checkstyle.plugin.version>
    <maven.sevntu.checkstyle.plugin.version>1.44.1</maven.sevntu.checkstyle.plugin.version>
    <maven.sevntu-checkstyle-check.checkstyle.version>
      10.4
    </maven.sevntu-checkstyle-check.checkstyle.version>
    <maven.versions.plugin.version>2.14.2</maven.versions.plugin.version>
    <maven.compiler.plugin.version>3.10.1</maven.compiler.plugin.version>
    <java.version>11</java.version>
    <pitest.plugin.version>1.11.0</pitest.plugin.version>
    <pitest.plugin.timeout.factor>10</pitest.plugin.timeout.factor>
    <pitest.plugin.output.formats>HTML,XML</pitest.plugin.output.formats>
    <pitest.plugin.timeout.constant>50000</pitest.plugin.timeout.constant>
    <pitest.plugin.threads>4</pitest.plugin.threads>
    <pitest.junit5.plugin.version>1.1.2</pitest.junit5.plugin.version>
    <pitest.accelerator.junit5.plugin.version>1.0.4</pitest.accelerator.junit5.plugin.version>
    <sonar.test.exclusions>**/test/resources/**/*,**/it/resources/**/*</sonar.test.exclusions>
    <junit.version>5.9.2</junit.version>
    <forbiddenapis.version>3.4</forbiddenapis.version>
    <json-schema-validator.version>1.2.0</json-schema-validator.version>
    <error-prone.version>2.18.0</error-prone.version>
    <checkerframework.version>3.27.0</checkerframework.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>info.picocli</groupId>
      <artifactId>picocli</artifactId>
      <version>4.7.1</version>
    </dependency>
    <dependency>
      <groupId>org.antlr</groupId>
      <artifactId>antlr4-runtime</artifactId>
      <version>${antlr4.version}</version>
    </dependency>
    <dependency>
      <groupId>commons-beanutils</groupId>
      <artifactId>commons-beanutils</artifactId>
      <version>1.9.4</version>
    </dependency>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>31.1-jre</version>
      <exclusions>
        <exclusion>
          <groupId>org.checkerframework</groupId>
          <artifactId>checker-qual</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.ant</groupId>
      <artifactId>ant</artifactId>
      <version>1.10.13</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.reflections</groupId>
      <artifactId>reflections</artifactId>
      <version>0.10.2</version>
    </dependency>

    <!-- test scope stuff -->
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-api</artifactId>
      <version>${junit.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-engine</artifactId>
      <version>${junit.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.itsallcode</groupId>
      <artifactId>junit5-system-extensions</artifactId>
      <version>1.2.0</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit-pioneer</groupId>
      <artifactId>junit-pioneer</artifactId>
      <version>2.0.0</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.tngtech.archunit</groupId>
      <artifactId>archunit-junit5</artifactId>
      <version>1.0.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.github.caciocavallosilano</groupId>
      <artifactId>cacio-tta</artifactId>
      <version>1.11</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>com.jidesoft</groupId>
          <artifactId>jide-oss</artifactId>
        </exclusion>
        <exclusion>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.assertj</groupId>
          <artifactId>assertj-swing-junit</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>com.google.truth</groupId>
      <artifactId>truth</artifactId>
      <version>1.1.3</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>nl.jqno.equalsverifier</groupId>
      <artifactId>equalsverifier</artifactId>
      <version>3.14</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-inline</artifactId>
      <version>${mockito.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.11.0</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jgit</groupId>
      <artifactId>org.eclipse.jgit</artifactId>
      <version>6.5.0.202303070854-r</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-simple</artifactId>
      <version>2.0.6</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.jacoco</groupId>
      <artifactId>org.jacoco.agent</artifactId>
      <version>${maven.jacoco.plugin.version}</version>
      <classifier>runtime</classifier>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>de.thetaphi</groupId>
      <artifactId>forbiddenapis</artifactId>
      <version>${forbiddenapis.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>net.sf.saxon</groupId>
      <artifactId>Saxon-HE</artifactId>
      <version>${saxon.version}</version>
      <exclusions>
        <exclusion>
          <groupId>com.ibm.icu</groupId>
          <artifactId>icu4j</artifactId>
        </exclusion>
        <exclusion>
          <groupId>xml-apis</groupId>
          <artifactId>xml-apis</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.checkerframework</groupId>
      <artifactId>checker-qual</artifactId>
      <version>${checkerframework.version}</version>
    </dependency>
  </dependencies>

  <!-- that repositories are required for testing plugin's snapshot version -->
  <pluginRepositories>
    <pluginRepository>
      <id>nexus-codehaus-snapshot</id>
      <name>Codehaus Snapshots</name>
      <url>https://oss.sonatype.org/content/repositories/codehaus-snapshots/</url>
    </pluginRepository>
  </pluginRepositories>

  <build>
    <pluginManagement>
      <plugins>
        <!-- from super-pom https://maven.apache.org/ref/3.5.2/maven-model-builder/super-pom.html
             BEGIN -->
        <!-- we need to override just make "mvn versions:plugin-updates-report"
             see no old versions -->
        <plugin>
          <artifactId>maven-antrun-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>3.5.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>3.5.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-release-plugin</artifactId>
          <!-- version is same as in supper-pom as it is better to use same version
               as in sonatype-nexus-staging -->
          <version>2.1</version>
        </plugin>
        <!-- from super-pom END -->
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>exec-maven-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>sonar-maven-plugin</artifactId>
          <version>3.9.1.2184</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-shade-plugin</artifactId>
          <version>3.4.1</version>
        </plugin>
        <plugin>
          <groupId>org.pitest</groupId>
          <artifactId>pitest-maven</artifactId>
          <version>${pitest.plugin.version}</version>
          <dependencies>
            <dependency>
              <groupId>com.groupcdg.pitest</groupId>
              <artifactId>pitest-accelerator-junit5</artifactId>
              <version>${pitest.accelerator.junit5.plugin.version}</version>
            </dependency>
            <dependency>
              <groupId>org.pitest</groupId>
              <artifactId>pitest-junit5-plugin</artifactId>
              <version>${pitest.junit5.plugin.version}</version>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>3.5.0</version>
          <configuration>
            <!-- Exclude generated sources. -->
            <excludePackageNames>
              com.puppycrawl.tools.checkstyle.grammar.java:
              com.puppycrawl.tools.checkstyle.grammar.javadoc:
            </excludePackageNames>
            <source>${java.version}</source>
            <show>private</show>
            <failOnError>true</failOnError>
            <failOnWarnings>true</failOnWarnings>
            <linksource>true</linksource>
            <tags>
              <tag>
                <name>noinspection</name>
                <placement>X</placement>
              </tag>
              <tag>
                <name>noinspectionreason</name>
                <placement>X</placement>
              </tag>
            </tags>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-pmd-plugin</artifactId>
          <version>${maven.pmd.plugin.version}</version>
          <configuration>
            <analysisCache>true</analysisCache>
            <targetJdk>${java.version}</targetJdk>
            <minimumTokens>20</minimumTokens>
            <skipEmptyReport>false</skipEmptyReport>
            <failOnViolation>true</failOnViolation>
            <printFailingErrors>true</printFailingErrors>
            <includeTests>true</includeTests>
            <rulesets>
              <ruleset>config/pmd-main.xml</ruleset>
              <ruleset>config/pmd-test.xml</ruleset>
            </rulesets>
            <excludeRoots>
              <excludeRoot>src/it/resources</excludeRoot>
              <excludeRoot>src/test/resources</excludeRoot>
              <excludeRoot>target/generated-sources/antlr</excludeRoot>
              <excludeRoot>
                target/generated-sources/antlr/com/puppycrawl/tools/checkstyle/grammar/javadoc
              </excludeRoot>
            </excludeRoots>
          </configuration>
          <dependencies>
            <dependency>
              <groupId>net.sourceforge.pmd</groupId>
              <artifactId>pmd-java</artifactId>
              <version>${pmd.version}</version>
            </dependency>
            <dependency>
              <groupId>net.sourceforge.pmd</groupId>
              <artifactId>pmd-core</artifactId>
              <version>${pmd.version}</version>
            </dependency>
            <dependency>
              <groupId>net.sourceforge.pmd</groupId>
              <artifactId>pmd-javascript</artifactId>
              <version>${pmd.version}</version>
            </dependency>
            <dependency>
              <groupId>net.sourceforge.pmd</groupId>
              <artifactId>pmd-jsp</artifactId>
              <version>${pmd.version}</version>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <groupId>com.github.spotbugs</groupId>
          <artifactId>spotbugs-maven-plugin</artifactId>
          <version>${maven.spotbugs.plugin.version}</version>
          <configuration>
            <effort>Max</effort>
            <threshold>Low</threshold>
            <excludeFilterFile>config/spotbugs-exclude.xml</excludeFilterFile>
            <spotbugsXmlOutputDirectory>target/spotbugsreports</spotbugsXmlOutputDirectory>
            <plugins>
              <plugin>
                <groupId>com.mebigfatguy.sb-contrib</groupId>
                <artifactId>sb-contrib</artifactId>
                <version>7.4.7</version>
              </plugin>
            </plugins>
          </configuration>
        </plugin>

        <!-- This plugin's configuration is used to store Eclipse
             m2e settings only. It has no influence on the Maven build itself.
        -->
        <plugin>
          <groupId>org.eclipse.m2e</groupId>
          <artifactId>lifecycle-mapping</artifactId>
          <version>1.0.0</version>
          <configuration>
            <lifecycleMappingMetadata>
              <pluginExecutions>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <versionRange>[1.0,)</versionRange>
                    <goals>
                      <goal>run</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <execute />
                  </action>
                </pluginExecution>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.antlr</groupId>
                    <artifactId>antlr4-maven-plugin</artifactId>
                    <versionRange>[4.2,)</versionRange>
                    <goals>
                      <goal>antlr4</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <execute>
                      <runOnIncremental>true</runOnIncremental>
                    </execute>
                  </action>
                </pluginExecution>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <versionRange>[1.2,)</versionRange>
                    <goals>
                      <goal>enforce</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore />
                  </action>
                </pluginExecution>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>tidy-maven-plugin</artifactId>
                    <versionRange>1.1.0</versionRange>
                    <goals>
                      <goal>check</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <execute />
                  </action>
                </pluginExecution>
              </pluginExecutions>
            </lifecycleMappingMetadata>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.gaul</groupId>
        <artifactId>modernizer-maven-plugin</artifactId>
        <version>2.5.0</version>
        <configuration>
          <javaVersion>${java.version}</javaVersion>
          <includeTestClasses>false</includeTestClasses>
        </configuration>
        <executions>
          <execution>
            <id>modernizer</id>
            <phase>verify</phase>
            <goals>
              <goal>modernizer</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-clean-plugin</artifactId>
        <version>3.2.0</version>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>tidy-maven-plugin</artifactId>
        <version>1.2.0</version>
        <executions>
          <execution>
            <id>validate</id>
            <phase>validate</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.3.0</version>
        <executions>
          <execution>
            <id>copy-resources</id>
            <phase>pre-site</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${basedir}/target/site/dtds</outputDirectory>
              <resources>
                <resource>
                  <directory>src/main/resources/com/puppycrawl/tools/checkstyle</directory>
                  <includes>
                    <include>*.dtd</include>
                  </includes>
                </resource>
                <resource>
                  <directory>
                    src/main/resources/com/puppycrawl/tools/checkstyle/checks/imports
                  </directory>
                  <includes>
                    <include>*.dtd</include>
                  </includes>
                </resource>
              </resources>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>${maven.compiler.plugin.version}</version>
        <configuration>
          <source>${java.version}</source>
          <target>${java.version}</target>
          <compilerArgs>
            <arg>-Xpkginfo:always</arg>
          </compilerArgs>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-install-plugin</artifactId>
        <version>3.1.0</version>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <executions>
          <execution>
            <phase>process-classes</phase>
            <goals>
              <goal>java</goal>
            </goals>
            <configuration>
              <classpathScope>compile</classpathScope>
              <mainClass>com.puppycrawl.tools.checkstyle.JavadocPropertiesGenerator</mainClass>
              <arguments>
                <argument>
                  ${project.build.sourceDirectory}/com/puppycrawl/tools/checkstyle/api/TokenTypes.java
                </argument>
                <argument>--destfile</argument>
                <argument>
                  ${project.build.outputDirectory}/com/puppycrawl/tools/checkstyle/api/tokentypes.properties
                </argument>
              </arguments>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-deploy-plugin</artifactId>
        <version>3.1.0</version>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>versions-maven-plugin</artifactId>
        <version>${maven.versions.plugin.version}</version>
        <configuration>
          <generateBackupPoms>false</generateBackupPoms>
          <rulesUri>file://${basedir}/config/version-number-rules.xml</rulesUri>
          <formats>
            <format>xml</format>
            <format>html</format>
          </formats>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>${maven.jacoco.plugin.version}</version>
        <executions>
          <execution>
            <id>default-instrument</id>
            <goals>
              <goal>instrument</goal>
            </goals>
            <phase>test-compile</phase>
          </execution>
          <execution>
            <id>default-restore-instrumented-classes</id>
            <goals>
              <goal>restore-instrumented-classes</goal>
            </goals>
          </execution>
          <execution>
            <id>default-report</id>
            <phase>site</phase>
            <goals>
              <goal>report</goal>
            </goals>
          </execution>
          <execution>
            <id>default-check</id>
            <goals>
              <goal>check</goal>
            </goals>
            <configuration>
              <rules>
                <rule>
                  <element>CLASS</element>
                  <excludes>
                    <!-- Parser related classes -->
                    <exclude>
                      com.puppycrawl.tools.checkstyle.grammar.java.JavaLanguageParser*
                    </exclude>
                    <exclude>
                      com.puppycrawl.tools.checkstyle.grammar.java.JavaLanguageLexer
                    </exclude>
                    <exclude>
                      com.puppycrawl.tools.checkstyle.CheckstyleParserErrorStrategy
                    </exclude>
                    <exclude>
                      com.puppycrawl.tools.checkstyle.grammar.javadoc.JavadocParser*
                    </exclude>
                    <exclude>com.puppycrawl.tools.checkstyle.grammar.javadoc.JavadocLexer</exclude>
                    <exclude>
                      com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocMethodCheck
                    </exclude>
                    <exclude>
                      com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocMethodCheck.RegularClass
                    </exclude>
                    <!-- Swing related classes -->
                    <exclude>com.puppycrawl.tools.checkstyle.gui.BaseCellEditor</exclude>
                    <exclude>com.puppycrawl.tools.checkstyle.gui.CodeSelector</exclude>
                    <exclude>
                             com.puppycrawl.tools.checkstyle.gui.ListToTreeSelectionModelWrapper
                    </exclude>
                    <exclude>com.puppycrawl.tools.checkstyle.gui.ParseTreeTableModel</exclude>
                    <exclude>com.puppycrawl.tools.checkstyle.gui.TreeTable</exclude>
                    <exclude>
                             com.puppycrawl.tools.checkstyle.gui.TreeTable.TreeTableCellEditor
                    </exclude>
                    <exclude>com.puppycrawl.tools.checkstyle.gui.TreeTableCellRenderer</exclude>
                    <exclude>com.puppycrawl.tools.checkstyle.gui.TreeTableModelAdapter</exclude>
                    <exclude>
                             com.puppycrawl.tools.checkstyle.gui.TreeTableModelAdapter.UpdatingTreeModelListener
                    </exclude>
                    <!-- Metadata Generator related classes -->
                    <exclude>com.puppycrawl.tools.checkstyle.meta.ModuleDetails*</exclude>
                    <exclude>com.puppycrawl.tools.checkstyle.meta.JavadocMetadataScraper*</exclude>
                    <exclude>com.puppycrawl.tools.checkstyle.meta.XmlMeta*</exclude>
                  </excludes>
                  <limits>
                    <limit>
                      <counter>LINE</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>1.00</minimum>
                    </limit>
                    <limit>
                      <counter>BRANCH</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>1.00</minimum>
                    </limit>
                  </limits>
                </rule>
                <rule>
                  <element>CLASS</element>
                  <includes>
                    <include>com.puppycrawl.tools.checkstyle.gui.BaseCellEditor</include>
                  </includes>
                  <limits>
                    <limit>
                      <counter>LINE</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.09</minimum>
                    </limit>
                    <limit>
                      <counter>BRANCH</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.00</minimum>
                    </limit>
                  </limits>
                </rule>
                <rule>
                  <element>CLASS</element>
                  <includes>
                    <include>com.puppycrawl.tools.checkstyle.gui.CodeSelector</include>
                  </includes>
                  <limits>
                    <limit>
                      <counter>LINE</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.91</minimum>
                    </limit>
                    <limit>
                      <counter>BRANCH</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.50</minimum>
                    </limit>
                  </limits>
                </rule>
                <rule>
                  <element>CLASS</element>
                  <includes>
                    <include>
                      com.puppycrawl.tools.checkstyle.gui.ListToTreeSelectionModelWrapper
                    </include>
                  </includes>
                  <limits>
                    <limit>
                      <counter>LINE</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.74</minimum>
                    </limit>
                    <limit>
                      <counter>BRANCH</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.35</minimum>
                    </limit>
                  </limits>
                </rule>
                <rule>
                  <element>CLASS</element>
                  <includes>
                    <include>
                      com.puppycrawl.tools.checkstyle.gui.ParseTreeTableModel
                    </include>
                  </includes>
                  <limits>
                    <limit>
                      <counter>LINE</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.79</minimum>
                    </limit>
                    <limit>
                      <counter>BRANCH</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.83</minimum>
                    </limit>
                  </limits>
                </rule>
                <rule>
                  <element>CLASS</element>
                  <includes>
                    <include>com.puppycrawl.tools.checkstyle.gui.TreeTable</include>
                  </includes>
                  <limits>
                    <limit>
                      <counter>LINE</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.89</minimum>
                    </limit>
                    <limit>
                      <counter>BRANCH</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.54</minimum>
                    </limit>
                  </limits>
                </rule>
                <rule>
                  <element>CLASS</element>
                  <includes>
                    <include>com.puppycrawl.tools.checkstyle.gui.TreeTable.TreeTableCellEditor</include>
                  </includes>
                  <limits>
                    <limit>
                      <counter>LINE</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.06</minimum>
                    </limit>
                    <limit>
                      <counter>BRANCH</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.00</minimum>
                    </limit>
                  </limits>
                </rule>
                <rule>
                  <element>CLASS</element>
                  <includes>
                    <include>com.puppycrawl.tools.checkstyle.gui.TreeTableCellRenderer</include>
                  </includes>
                  <limits>
                    <limit>
                      <counter>LINE</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.46</minimum>
                    </limit>
                    <limit>
                      <counter>BRANCH</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.20</minimum>
                    </limit>
                  </limits>
                </rule>
                <rule>
                  <element>CLASS</element>
                  <includes>
                    <include>com.puppycrawl.tools.checkstyle.gui.TreeTableModelAdapter</include>
                  </includes>
                  <limits>
                    <limit>
                      <counter>LINE</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.64</minimum>
                    </limit>
                    <limit>
                      <counter>BRANCH</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>1.00</minimum>
                    </limit>
                  </limits>
                </rule>
                <rule>
                  <element>CLASS</element>
                  <includes>
                    <include>
                      com.puppycrawl.tools.checkstyle.gui.TreeTableModelAdapter.UpdatingTreeModelListener
                    </include>
                  </includes>
                  <limits>
                    <limit>
                      <counter>LINE</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.45</minimum>
                    </limit>
                    <limit>
                      <counter>BRANCH</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>1.00</minimum>
                    </limit>
                  </limits>
                </rule>
                <rule>
                  <element>CLASS</element>
                  <includes>
                    <include>
                      com.puppycrawl.tools.checkstyle.grammar.java.JavaLanguageParser
                    </include>
                  </includes>
                  <limits>
                    <limit>
                      <counter>LINE</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.82</minimum>
                    </limit>
                    <limit>
                      <counter>BRANCH</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.71</minimum>
                    </limit>
                  </limits>
                </rule>
                <rule>
                  <element>CLASS</element>
                  <includes>
                    <include>com.puppycrawl.tools.checkstyle.grammar.java.JavaLanguageLexer</include>
                  </includes>
                  <limits>
                    <limit>
                      <counter>LINE</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.81</minimum>
                    </limit>
                    <limit>
                      <counter>BRANCH</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.79</minimum>
                    </limit>
                  </limits>
                </rule>
                <rule>
                  <element>CLASS</element>
                  <includes>
                    <include>
                      com.puppycrawl.tools.checkstyle.grammar.javadoc.JavadocParser
                    </include>
                  </includes>
                  <limits>
                    <limit>
                      <counter>LINE</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.57</minimum>
                    </limit>
                    <limit>
                      <counter>BRANCH</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.48</minimum>
                    </limit>
                  </limits>
                </rule>
                <rule>
                  <element>CLASS</element>
                  <includes>
                    <include>com.puppycrawl.tools.checkstyle.grammar.javadoc.JavadocLexer</include>
                  </includes>
                  <limits>
                    <limit>
                      <counter>LINE</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.84</minimum>
                    </limit>
                    <limit>
                      <counter>BRANCH</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.64</minimum>
                    </limit>
                  </limits>
                </rule>
                <rule>
                  <element>CLASS</element>
                  <includes>
                    <include>
                      com.puppycrawl.tools.checkstyle.CheckstyleParserErrorStrategy
                    </include>
                  </includes>
                  <limits>
                    <limit>
                      <counter>LINE</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.50</minimum>
                    </limit>
                    <limit>
                      <counter>BRANCH</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>1.00</minimum>
                    </limit>
                  </limits>
                </rule>
                <rule>
                  <element>CLASS</element>
                  <includes>
                    <include>
                      com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocMethodCheck
                    </include>
                  </includes>
                  <limits>
                    <limit>
                      <counter>LINE</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.98</minimum>
                    </limit>
                    <limit>
                      <counter>BRANCH</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.94</minimum>
                    </limit>
                  </limits>
                </rule>
                <rule>
                  <element>CLASS</element>
                  <includes>
                    <include>
                      com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocMethodCheck.RegularClass
                    </include>
                  </includes>
                  <limits>
                    <limit>
                      <counter>LINE</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.70</minimum>
                    </limit>
                    <limit>
                      <counter>BRANCH</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.00</minimum>
                    </limit>
                  </limits>
                </rule>
                <!-- Metadata Generator related classes, temporary limits for
                https://github.com/checkstyle/checkstyle/issues/8761, needs to be revisited -->
                <rule>
                  <element>CLASS</element>
                  <includes>
                    <include>
                      com.puppycrawl.tools.checkstyle.meta.JavadocMetadataScraper
                    </include>
                  </includes>
                  <limits>
                    <limit>
                      <counter>LINE</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.98</minimum>
                    </limit>
                    <limit>
                      <counter>BRANCH</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.95</minimum>
                    </limit>
                  </limits>
                </rule>
                <rule>
                  <element>CLASS</element>
                  <includes>
                    <include>
                      com.puppycrawl.tools.checkstyle.meta.XmlMetaWriter
                    </include>
                  </includes>
                  <limits>
                    <limit>
                      <counter>LINE</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.91</minimum>
                    </limit>
                    <limit>
                      <counter>BRANCH</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.77</minimum>
                    </limit>
                  </limits>
                </rule>
                <rule>
                  <element>CLASS</element>
                  <includes>
                    <include>
                      com.puppycrawl.tools.checkstyle.meta.XmlMetaReader
                    </include>
                  </includes>
                  <limits>
                    <limit>
                      <counter>LINE</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.95</minimum>
                    </limit>
                    <limit>
                      <counter>BRANCH</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.93</minimum>
                    </limit>
                  </limits>
                </rule>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.sonatype.plugins</groupId>
        <artifactId>nexus-staging-maven-plugin</artifactId>
        <version>1.6.13</version>
        <extensions>true</extensions>
        <configuration>
          <!-- serverId is ID of a <server> section from Maven's settings.xml
               to pick authentication information from
          -->
          <serverId>sonatype-nexus-staging</serverId>
          <nexusUrl>https://oss.sonatype.org/</nexusUrl>
          <autoReleaseAfterClose>true</autoReleaseAfterClose>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <version>${maven.site.plugin.version}</version>
        <configuration>
          <xdocDirectory>${basedir}/src/xdocs</xdocDirectory>
          <validate>true</validate>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>3.2.1</version>
        <executions>
          <execution>
            <id>enforce-versions</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireJavaVersion>
                  <version>${java.version}</version>
                </requireJavaVersion>
                <requireMavenVersion>
                  <version>3.3.9</version>
                </requireMavenVersion>
                <dependencyConvergence />
                <!-- we can not use this as it require same version for all dependencies -->
                <!--
                <enforceBytecodeVersion>
                  <maxJdkVersion>1.8</maxJdkVersion>
                </enforceBytecodeVersion>
                -->
              </rules>
            </configuration>
          </execution>
        </executions>
        <!-- if we activate enforceBytecodeVersion rule, this dependency become required -->
        <!--
        <dependencies>
          <dependency>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>extra-enforcer-rules</artifactId>
            <version>1.0-beta-2</version>
            <scope>compile</scope>
          </dependency>
        </dependencies>
        -->
      </plugin>

      <!-- Generate the ANTLRv4 grammar -->
      <plugin>
        <groupId>org.antlr</groupId>
        <artifactId>antlr4-maven-plugin</artifactId>
        <version>${antlr4.version}</version>
        <configuration>
          <visitor>true</visitor>
          <listener>false</listener>
          <sourceDirectory>${basedir}/src/main/resources/</sourceDirectory>
          <outputDirectory>${project.build.directory}/generated-sources/antlr/</outputDirectory>
          <includes>
            <include>com/puppycrawl/tools/checkstyle/grammar/javadoc/*.g4</include>
            <include>com/puppycrawl/tools/checkstyle/grammar/java/*.g4</include>
          </includes>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>antlr4</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>3.3.0</version>
        <executions>
          <execution>
            <id>add-source</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>add-source</goal>
            </goals>
            <configuration>
              <sources>
                <source>${project.build.directory}/generated-sources/antlr/</source>
              </sources>
            </configuration>
          </execution>
          <execution>
            <id>add-test-source</id>
            <phase>process-resources</phase>
            <goals>
              <goal>add-test-source</goal>
            </goals>
            <configuration>
              <sources>
                <source>src/test/resources</source>
              </sources>
            </configuration>
          </execution>
          <execution>
            <id>add-it-test-source</id>
            <phase>process-resources</phase>
            <goals>
              <goal>add-test-source</goal>
            </goals>
            <configuration>
              <sources>
                <source>src/it/java</source>
              </sources>
            </configuration>
          </execution>
          <execution>
            <id>add-it-test-resource</id>
            <phase>process-resources</phase>
            <goals>
              <goal>add-test-source</goal>
            </goals>
            <configuration>
              <sources>
                <source>src/it/resources</source>
              </sources>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <version>2.22.2</version>
        <configuration>
          <includes>
            <include>com/google/**/*.java</include>
            <include>org/checkstyle/**/*.java</include>
          </includes>
        </configuration>
        <executions>
          <execution>
            <id>integration-test</id>
            <goals>
              <goal>integration-test</goal>
            </goals>
          </execution>
          <execution>
            <id>verify</id>
            <goals>
              <goal>verify</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <!-- Used to set custom properties -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.22.2</version>
        <configuration>
          <argLine>-Dfile.encoding=UTF-8 @{surefire.options}</argLine>
          <systemPropertyVariables>
            <jacoco-agent.destfile>${project.build.directory}/jacoco.exec</jacoco-agent.destfile>
            <!-- Virtual AWT driver for GUI unit tests -->
            <awt.toolkit>com.github.caciocavallosilano.cacio.ctc.CTCToolkit</awt.toolkit>
            <java.awt.headless>false</java.awt.headless>
            <java.awt.graphicsenv>
              com.github.caciocavallosilano.cacio.ctc.CTCGraphicsEnvironment
            </java.awt.graphicsenv>
          </systemPropertyVariables>
          <additionalClasspathElements>
            <additionalClasspathElement>
              src/test/resources-noncompilable
            </additionalClasspathElement>
          </additionalClasspathElements>
          <includes>
            <include>com/puppycrawl/**/*.java</include>
          </includes>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <id>ant-phase-verify</id>
            <phase>verify</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <target>
                <property name="mvn.project.build.directory" value="${project.build.directory}" />
                <property name="mvn.runtime_classpath" refid="maven.runtime.classpath" />
                <ant antfile="config/ant-phase-verify.xml" />
              </target>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <!-- Ensure the manifest has all the gory details -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.3.0</version>
        <configuration>
          <archive>
            <manifest>
              <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
              <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
            </manifest>
          </archive>
          <excludes>
            <exclude>**/Input*.*</exclude>
            <exclude>**/Expected*.*</exclude>
          </excludes>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>test-jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <!-- Generate test sources as well as main sources. -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>3.2.1</version>
        <executions>
          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>test-jar</goal>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-eclipse-plugin</artifactId>
        <version>2.10</version>
        <configuration>
          <downloadSources>true</downloadSources>
          <downloadJavadocs>true</downloadJavadocs>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <executions>
          <execution>
            <phase>verify</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>com.github.spotbugs</groupId>
        <artifactId>spotbugs-maven-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>xml-maven-plugin</artifactId>
        <version>1.0.2</version>
        <executions>
          <execution>
            <goals>
              <goal>validate</goal>
              <goal>check-format</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <catalogHandling>strict</catalogHandling>
          <!-- We need to exclude some files, so the default configuration is not suitable. -->
          <useDefaultFormatFileSet>false</useDefaultFormatFileSet>
          <formatFileSets>
            <formatFileSet>
              <directory>.</directory>
              <includes>
                <include>**/*.xml</include>
                <include>**/*.xsd</include>
                <include>**/*.xml.vm</include>
              </includes>
              <excludes>
                <!-- The <b>{</b> tag requires more indentation than the enclosing <pre> tag,
                     which results in too much indentation to the right -->
                <exclude>src/xdocs/property_types.xml</exclude>
                <!-- Temporary files -->
                <exclude>target/**</exclude>
                <exclude>.ci-temp/**</exclude>
                <!-- Specially crafted test files -->
                <exclude>src/test/resources/**</exclude>
                <!-- Generated files -->
                <exclude>src/xdocs/releasenotes.xml</exclude>
                <exclude>src/xdocs/releasenotes_old*.xml</exclude>
                <exclude>src/main/resources/com/puppycrawl/tools/checkstyle/meta/**</exclude>
              </excludes>
            </formatFileSet>
          </formatFileSets>
          <validationSets>
            <validationSet>
              <dir>config</dir>
              <excludes>
                <exclude>java.header</exclude>
                <exclude>java-regexp.header</exclude>
                <exclude>org.eclipse.jdt.core.prefs</exclude>
                <exclude>intellij-idea-inspections.properties</exclude>
                <exclude>markdownlint.rb</exclude>
                <exclude>signatures.txt</exclude>
                <exclude>signatures-test.txt</exclude>
                <exclude>codenarc-rules.groovy.txt</exclude>
                <exclude>archunit-store/**</exclude>
                <exclude>jsoref-spellchecker/**</exclude>
                <exclude>projects-to-test/**</exclude>
                <exclude>yamllint.yaml</exclude>
              </excludes>
            </validationSet>
            <validationSet>
              <validating>true</validating>
              <dir>src/site/resources/files</dir>
            </validationSet>
            <validationSet>
              <validating>true</validating>
              <dir>src/site</dir>
              <includes>
                <include>site.xml</include>
              </includes>
              <systemId>config/decoration-1.8.0.xsd</systemId>
            </validationSet>
            <validationSet>
              <validating>true</validating>
              <dir>src/test/resources</dir>
              <includes>
                <include>
                  com/puppycrawl/tools/checkstyle/packagenamesloader/InputPackageNamesLoaderFile.xml
                </include>
                <include>
                  com/puppycrawl/tools/checkstyle/treewalker/InputTreeWalkerNotJava.xml
                </include>
              </includes>
            </validationSet>
            <validationSet>
              <validating>true</validating>
              <dir>src/main/resources</dir>
              <includes>
                <include>google_checks.xml</include>
                <include>sun_checks.xml</include>
              </includes>
            </validationSet>
          </validationSets>
          <catalogs>
            <catalog>config/catalog.xml</catalog>
          </catalogs>
        </configuration>
      </plugin>

      <plugin>
        <groupId>de.thetaphi</groupId>
        <artifactId>forbiddenapis</artifactId>
        <version>${forbiddenapis.version}</version>
        <configuration>
          <targetVersion>${java.version}</targetVersion>
          <failOnUnsupportedJava>false</failOnUnsupportedJava>
          <bundledSignatures>
            <bundledSignature>jdk-unsafe</bundledSignature>
            <bundledSignature>jdk-deprecated</bundledSignature>
            <bundledSignature>jdk-system-out</bundledSignature>
            <bundledSignature>jdk-non-portable</bundledSignature>
          </bundledSignatures>
        </configuration>
        <executions>
          <execution>
            <id>forbiddenapis-main</id>
            <phase>verify</phase>
            <goals>
              <goal>check</goal>
            </goals>
            <configuration>
              <signaturesFiles>
                <signaturesFile>${basedir}/config/signatures.txt</signaturesFile>
              </signaturesFiles>
              <excludes>
                <!-- system-out is ok there, that is CLI -->
                <exclude>**/Main.class</exclude>
                <exclude>**/Main$CliOptions.class</exclude>
                <exclude>**/JavadocPropertiesGenerator.class</exclude>
                <!-- generated classes, unfortunately use problematic api -->
                <exclude>**/JavadocParser.class</exclude>
                <!-- reason at https://github.com/checkstyle/checkstyle/issues/7759 -->
                <exclude>**/RegexpCheck.class</exclude>
                <!-- no code in file, no AST to log -->
                <exclude>**/NoCodeInFileCheck.class</exclude>
                <!-- until https://github.com/checkstyle/checkstyle/issues/5770 -->
                <exclude>**/AbstractJavadocCheck.class</exclude>
                <exclude>**/AtclauseOrderCheck.class</exclude>
                <exclude>**/JavadocBlockTagLocationCheck.class</exclude>
                <exclude>**/JavadocMethodCheck.class</exclude>
                <exclude>**/JavadocMissingLeadingAsteriskCheck.class</exclude>
                <exclude>**/JavadocMissingWhitespaceAfterAsteriskCheck.class</exclude>
                <exclude>**/JavadocParagraphCheck.class</exclude>
                <exclude>**/JavadocStyleCheck.class</exclude>
                <exclude>**/JavadocTagContinuationIndentationCheck.class</exclude>
                <exclude>**/JavadocTypeCheck.class</exclude>
                <exclude>**/MissingDeprecatedCheck.class</exclude>
                <exclude>**/NonEmptyAtclauseDescriptionCheck.class</exclude>
                <exclude>**/RequireEmptyLineBeforeBlockTagGroupCheck.class</exclude>
                <exclude>**/SingleLineJavadocCheck.class</exclude>
                <exclude>**/SummaryJavadocCheck.class</exclude>
                <exclude>**/WriteTagCheck.class</exclude>
                <exclude>**/JavadocMetadataScraper.class</exclude>
              </excludes>
            </configuration>
          </execution>
          <execution>
            <id>forbiddenapis-test</id>
            <phase>verify</phase>
            <goals>
              <goal>testCheck</goal>
            </goals>
            <configuration>
              <signaturesFiles>
                <signaturesFile>${basedir}/config/signatures-test.txt</signaturesFile>
              </signaturesFiles>
              <excludes>
                <exclude>**/Input*</exclude>
                <!-- usage of system output by design -->
                <exclude>**/MainTest.class</exclude>
                <!-- tests need forbidden apis to test the main code fully -->
                <exclude>**/XpathFileGeneratorAuditListenerTest.class</exclude>
                <exclude>**/AllChecksTest.class</exclude>
                <!-- Needed for testing deprecated API. -->
                <exclude>**/DefaultConfigurationTest.class</exclude>
                <!-- is not Check or Filter, it is internal module -->
                <exclude>**/MetadataGeneratorUtilTest.class</exclude>

                <!-- Inline Config cannot be supported, bdd need support for other comment types -->
                <exclude>**/UniquePropertiesCheckTest.class</exclude>
                <exclude>**/OrderedPropertiesCheckTest.class</exclude>

                <!-- some tests are not for java files, need support of different header comment -->
                <exclude>**/RegexpMultilineCheckTest.class</exclude>
                <exclude>**/RegexpCheckTest.class</exclude>

                <!-- input files are not java files, bdd need support for other comment types -->
                <exclude>**/SuppressWithPlainTextCommentFilterTest.class</exclude>
                <exclude>**/NewlineAtEndOfFileCheckTest.class</exclude>

                <!-- stay in old way as format of input files is very special -->
                <exclude>**/IndentationCheckTest.class</exclude>

                <!-- two methods use old method as Input file must be completely empty -->
                <exclude>**/NoCodeInFileCheckTest.class</exclude>

                <!-- content of file does not matter at all -->
                <exclude>**/RegexpOnFilenameCheckTest.class</exclude>

                <!-- all bellow until https://github.com/checkstyle/checkstyle/issues/11446 -->

                <!-- usage of custom internal module, 'execute' method should be used -->
                <exclude>**/FileSetCheckTest.class</exclude>
                <exclude>**/AbstractFileSetCheckTest.class</exclude>

                <exclude>**/DetailAstImplTest.class</exclude>

                <exclude>**/TreeWalkerTest.class</exclude>

                <exclude>**/CheckerTest.class</exclude>

                <exclude>**/AllBlockCommentsTest.class</exclude>

                <!-- test needs to be updated -->
                <exclude>**/SuppressionCommentFilterTest.class</exclude>

                <!-- due to https://github.com/checkstyle/checkstyle/issues/11846 -->
                <exclude>**/EmptyLineSeparatorCheckTest.class</exclude>

                <!-- content header is conflicting with Input inline header -->
                <exclude>**/HeaderCheckTest.class</exclude>
                <!-- content header is conflicting with Input inline header -->
                <exclude>**/RegexpHeaderCheckTest.class</exclude>

                <!-- test should be updated -->
                <exclude>**/AbstractCheckTest.class</exclude>

                <!-- tests need to be updated -->
                <exclude>**/SuppressWithNearbyCommentFilterTest.class</exclude>

                <!-- this class contain forbidden verify method -->
                <exclude>**/AbstractModuleTestSupport.class</exclude>

                <!-- tests should be updated -->
                <exclude>**/AbstractJavadocCheckTest.class</exclude>
              </excludes>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>edu.illinois</groupId>
        <artifactId>nondex-maven-plugin</artifactId>
        <version>2.1.1</version>
      </plugin>

      <plugin>
        <groupId>com.groupon.maven.plugin.json</groupId>
        <artifactId>json-schema-validator</artifactId>
        <version>${json-schema-validator.version}</version>
        <executions>
          <execution>
            <phase>verify</phase>
            <goals>
              <goal>validate</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <validations>
            <validation>
              <directory>${basedir}/src/test/resources/com/puppycrawl/tools/checkstyle/sariflogger</directory>
              <jsonSchema>https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Documents/CommitteeSpecifications/2.1.0/sarif-schema-2.1.0.json</jsonSchema>
              <includes>
                <include>**/*.sarif</include>
              </includes>
            </validation>
          </validations>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <reporting>
    <plugins>
      <plugin>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <version>3.4.2</version>
      </plugin>

      <plugin>
        <artifactId>maven-javadoc-plugin</artifactId>
        <reportSets>
          <reportSet>
            <id>default</id>
            <reports>
              <report>javadoc</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>

      <plugin>
        <groupId>com.github.sevntu-checkstyle</groupId>
        <artifactId>dsm-maven-plugin</artifactId>
        <version>2.2.0</version>
        <configuration>
          <obfuscatePackageNames>true</obfuscatePackageNames>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-report-plugin</artifactId>
        <version>2.22.2</version>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jxr-plugin</artifactId>
        <version>3.3.0</version>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>jdepend-maven-plugin</artifactId>
        <version>2.0</version>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>taglist-maven-plugin</artifactId>
        <version>3.0.0</version>
        <configuration>
          <excludes>**/*/checks/TodoCommentCheck.java</excludes>
          <tagListOptions>
            <tagClasses>
              <tagClass>
                <displayName>Todo Work</displayName>
                <tags>
                  <tag>
                    <matchString>todo</matchString>
                    <matchType>ignoreCase</matchType>
                  </tag>
                  <tag>
                    <matchString>FIXME</matchString>
                    <matchType>exact</matchType>
                  </tag>
                </tags>
              </tagClass>
            </tagClasses>
          </tagListOptions>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>${maven.pmd.plugin.version}</version>
        <reportSets>
          <reportSet>
            <reports>
              <report>pmd</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>

      <plugin>
        <groupId>com.github.spotbugs</groupId>
        <artifactId>spotbugs-maven-plugin</artifactId>
        <version>${maven.spotbugs.plugin.version}</version>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>versions-maven-plugin</artifactId>
        <version>${maven.versions.plugin.version}</version>
        <reportSets>
          <reportSet>
            <reports>
              <report>dependency-updates-report</report>
              <report>plugin-updates-report</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>

      <!-- this report should be created last -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-linkcheck-plugin</artifactId>
        <version>1.2</version>
        <configuration>
          <httpMethod>GET</httpMethod>
          <timeout>6000</timeout>
          <httpFollowRedirect>false</httpFollowRedirect>
          <forceSite>false</forceSite>
          <!-- To resolve redirection violation, to find new target url, use:
              URL=https://www.cs.....
              curl -s -I $URL -L | awk '/Location: (.*)/ {print $2}' | tail -n 1
          -->
          <excludedPages>
            <excludedPage>dependencies.html</excludedPage>
            <excludedPage>jacoco/**</excludedPage>
            <excludedPage>dsm/**</excludedPage>
            <excludedPage>xref/**</excludedPage>
            <excludedPage>xref-test/**</excludedPage>
            <excludedPage>pmd.html</excludedPage>
            <excludedPage>surefire-report.html</excludedPage>
            <!-- Excluded due to checkstyle's issue #549
                 until http://jira.codehaus.org/browse/MTAGLIST-69 will be fixed -->
            <excludedPage>taglist.html</excludedPage>
            <!-- styleguides are copies as-is to cache state we support -->
            <excludedPage>styleguides/**</excludedPage>
          </excludedPages>
          <excludedHttpStatusErrors>
            <excludedHttpStatusError>401</excludedHttpStatusError>
          </excludedHttpStatusErrors>
          <excludedLinks>
            <excludedLink>reports/google-style/guava</excludedLink>
            <excludedLink>reports/javadoc/openjdk8</excludedLink>
            <!-- posting to the mailing list "checkstyle-announce" is private -->
            <excludedLink>privilege of admins</excludedLink>
            <!-- this page is not yet created when linkcheck executed -->
            <excludedLink>project-info.html</excludedLink>
            <!-- this page is not yet created when linkcheck executed -->
            <excludedLink>project-reports.html</excludedLink>
            <!-- redirects to US page, it is better to stay international -->
            <excludedLink>https://paypal.com/</excludedLink>
            <!-- temporal suppress till plugin update link in his source -->
            <excludedLink>http://www.mojohaus.org/exec-maven-plugin</excludedLink>
            <excludedLink>http://www.mojohaus.org/versions-maven-plugin</excludedLink>
            <!-- SSL -->
            <excludedLink>https://travis-ci.org/</excludedLink>
            <excludedLink>https://travis-ci.org/checkstyle/checkstyle</excludedLink>
            <excludedLink>https://coveralls.io/r/checkstyle/checkstyle</excludedLink>

            <!-- we did too many requests to GitHub,
                 now GitHub reject all requests "429 Too Many Requests" -->
            <excludedLink>https://github.com/*</excludedLink>
            <!-- redirects to US page, it is better to stay international -->
            <excludedLink>https://help.github.com/*</excludedLink>
            <excludedLink>http://search.maven.org/*</excludedLink>
            <!-- codehaus does not exist anymore -->
            <excludedLink>http://sonar-plugins.codehaus.org/maven-report</excludedLink>
            <excludedLink>
              http://www.mojohaus.org/sonar-maven-plugin/sonar-maven-plugin
            </excludedLink>
            <!-- Excluded due to Maven Codehaus Plugin's issue #4:
                 https://github.com/mojohaus/mojohaus.github.io/issues/4 -->
            <excludedLink>http://mojo.codehaus.org/antlr-maven-plugin</excludedLink>
            <!-- Excluded due to Maven JDepend Plugin's issue #2:
                 https://github.com/mojohaus/jdepend-maven-plugin/issues/2 -->
            <excludedLink>http://mojo.codehaus.org/jdepend-maven-plugin</excludedLink>
            <!-- Excluded due to Maven Taglist Plugin's issue #3:
                 https://github.com/mojohaus/taglist-maven-plugin/issues/3 -->
            <excludedLink>http://mojo.codehaus.org/taglist-maven-plugin</excludedLink>
            <!-- Excluded due to Maven ANTLR4 Plugin's issue #978:
                 https://github.com/antlr/antlr4/issues/978 -->
            <excludedLink>https://www.antlr.org/antlr4-maven-plugin/</excludedLink>
            <!-- Excluded due to Maven Release Plugin's issue #919:
                 https://issues.apache.org/jira/browse/MRELEASE-919 -->
            <excludedLink>https://maven.apache.org/plugins/maven-release-plugin/</excludedLink>
            <!-- permanent java.net.UnknownHostException : -->
            <excludedLink>http://jacoco-maven-plugin/</excludedLink>
            <!-- Excluded till https://issues.sonatype.org/browse/NEXUS-9643 -->
            <excludedLink>
              http://www.sonatype.com/public-parent/nexus-maven-plugins/nexus-staging/nexus-staging-maven-plugin/
            </excludedLink>

            <!-- Excluded due to linkcheck's issue #22:
                 https://issues.apache.org/jira/browse/MLINKCHECK-22 -->
            <excludedLink>https://twitter.com/checkstyle_java/</excludedLink>
            <!-- linkcheck plugin can not resolve &amps; inside url -->
            <excludedLink>https://flattr.com/submit/</excludedLink>
            <!-- 403 forbidden for linkcheck, works in the browser -->
            <excludedLink>https://button.flattr.com/flattr-badge-large.png</excludedLink>
            <!-- Too unstable sites to keep validate them -->
            <excludedLink>http://tide.olympe.in/*</excludedLink>
            <excludedLink>http://dl.acm.org/*</excludedLink>
            <!-- permanent SSLException -->
            <excludedLink>https://git-scm.com</excludedLink>
            <!-- I do not know how to resolve this "302 Found" response -->
            <excludedLink>https://plus.google.com/+CheckstyleJava</excludedLink>
            <!-- 302 redirect to
             https://marketplace.atlassian.com/apps/1214095/checkstyles-for-bitbucket-server/version-history
             this link does not look like permanent, it is better to keep the existing link -->
            <excludedLink>
              https://marketplace.atlassian.com/apps/1214095/checkstyles-for-bitbucket-server
            </excludedLink>
            <!-- 403 forbidden -->
            <excludedLink>https://oss.sonatype.org/content/repositories/snapshots/</excludedLink>
            <!-- link is valid but permanent "SocketTimeoutException : Read timed out" -->
            <excludedLink>https://wiki.jenkins.io/display/JENKINS/Checkstyle+Plugin</excludedLink>
            <!-- 403 forbidden for linkcheck, works in the browser -->
            <excludedLink>https://gradle.org</excludedLink>
            <!-- 403 forbidden for linkcheck, works in the browser -->
            <excludedLink>
              https://docs.gradle.org/current/userguide/checkstyle_plugin.html
            </excludedLink>
            <!-- ConnectTimeoutException -->
            <excludedLink>https://www.w3.org/TR/*</excludedLink>
            <!-- very frequent SocketTimeoutException : Read timed out -->
            <excludedLink>https://maven.apache.org/*</excludedLink>
            <!-- very frequent SocketTimeoutException : Read timed out -->
            <excludedLink>https://www.bountysource.com/*</excludedLink>
            <excludedLink>https://api.bountysource.com/*</excludedLink>
            <!-- This URL become to require to log in first to see content -->
            <excludedLink>https://bitbucket.org/atlassian/bamboo-checkstyle-plugin</excludedLink>
            <!-- link works but plugin's request always result in 404 -->
            <excludedLink>https://www.manning.com/books/java-development-with-ant</excludedLink>
            <!-- permanent 403, but it works fine out of plugin execution -->
            <excludedLink>https://opencollective.com/*</excludedLink>
            <!-- 405 Not Allowed, link present in generated website only -->
            <excludedLink>https://oss.sonatype.org/service/local/staging/deploy/maven2/</excludedLink>
            <!-- site is too unstable, it might improve in future -->
            <excludedLink>https://freedomsponsors.org/*</excludedLink>
            <!-- site works fine in browser but for plugin always return 500  -->
            <excludedLink>https://liberapay.com/checkstyle/</excludedLink>
            <!-- CertPathValidatorException: validity check failed  -->
            <excludedLink>https://www.jarchitect.com</excludedLink>
            <!-- until new plugins are released to generate link with https -->
            <excludedLink>http://maven.apache.org/plugins/maven-release-plugin/</excludedLink>
            <excludedLink>http://maven.apache.org/plugins/maven-deploy-plugin/</excludedLink>
            <excludedLink>http://maven.apache.org/plugins/maven-eclipse-plugin/</excludedLink>
            <excludedLink>http://maven.apache.org/plugins/maven-install-plugin/</excludedLink>
            <excludedLink>http://maven.apache.org/plugins/maven-linkcheck-plugin/</excludedLink>
            <!-- until new plugins are released to generate link with trailing '/' -->
            <excludedLink>https://www.mojohaus.org/exec-maven-plugin</excludedLink>
            <!-- permanent 403 -->
            <excludedLink>https://www.ej-technologies.com/*</excludedLink>
            <excludedLink>https://travis-ci.com/</excludedLink>
            <!-- permanent 403 -->
            <excludedLink>https://docs.github.com/en/rest/checks</excludedLink>
            <excludedLink>https://www.ietf.org/rfc/rfc4627.txt</excludedLink>
            <excludedLink>https://liberapay.com/assets/widgets/donate.svg</excludedLink>
            <excludedLink>https://maven-doccheck.sourceforge.net/</excludedLink>
            <excludedLink>http://jdee.sourceforge.net/</excludedLink>
            <excludedLink>https://qalab.sourceforge.net/</excludedLink>
            <excludedLink>https://saxon.sourceforge.net/saxon7.1/expressions.html</excludedLink>
            <!-- until https://github.com/checkstyle/checkstyle/issues/11754 -->
            <excludedLink>https://checkstyle.sourceforge.io/version/6.18</excludedLink>
          </excludedLinks>
        </configuration>
      </plugin>

    </plugins>
  </reporting>

  <profiles>

    <profile>
      <!-- To be used during development. Run the command -->
      <!-- mvn -Pno-validations site -->
      <id>no-validations</id>
      <properties>
        <skipTests>true</skipTests>
        <checkstyle.ant.skip>true</checkstyle.ant.skip>
        <pmd.skip>true</pmd.skip>
        <spotbugs.skip>true</spotbugs.skip>
        <xml.skip>true</xml.skip>
        <forbiddenapis.skip>true</forbiddenapis.skip>
        <jacoco.skip>true</jacoco.skip>
        <maven.javadoc.skip>true</maven.javadoc.skip>
        <linkcheck.skip>true</linkcheck.skip>
        <jdepend.skip>true</jdepend.skip>
        <modernizer.skip>true</modernizer.skip>
        <tidy.skip>true</tidy.skip>
      </properties>
      <build>
        <plugins>
          <!-- disable json validation plugin since it has no cli property for disable -->
          <plugin>
            <groupId>com.groupon.maven.plugin.json</groupId>
            <artifactId>json-schema-validator</artifactId>
            <version>${json-schema-validator.version}</version>
            <executions>
              <execution>
                <phase>none</phase>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!-- this must stay as a separate profile as the build plugin has a similar run,
         but with different dependencies. Maven does not allow 2 similar plugin runs
         and wrongly combines the 2 which can fail with breaking changes. -->
    <profile>
      <id>sevntu</id>
      <properties>
        <checkstyle.ant.skip>false</checkstyle.ant.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
              <!-- disable non-profile run -->
              <execution>
                <id>ant-phase-verify</id>
                <phase>none</phase>
              </execution>
              <!-- profile run -->
              <execution>
                <id>ant-phase-verify-sevntu</id>
                <phase>verify</phase>
                <goals>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <target>
                    <property name="mvn.project.build.directory" value="${project.build.directory}" />
                    <ant antfile="config/ant-phase-verify-sevntu.xml" />
                  </target>
                </configuration>
              </execution>
            </executions>
            <dependencies>
              <dependency>
                <groupId>com.puppycrawl.tools</groupId>
                <artifactId>checkstyle</artifactId>
                <version>${maven.sevntu-checkstyle-check.checkstyle.version}</version>
              </dependency>
              <dependency>
                <groupId>com.github.sevntu-checkstyle</groupId>
                <artifactId>sevntu-checks</artifactId>
                <version>${maven.sevntu.checkstyle.plugin.version}</version>
              </dependency>
            </dependencies>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <!-- To be used during development. Run the command -->
      <!-- mvn -Passembly,no-validations package -->
      <id>assembly</id>
      <properties>
        <maven.site.skip>true</maven.site.skip>
        <assembly.skipAssembly>true</assembly.skipAssembly>
      </properties>

      <build>
        <plugins>
          <!-- Generates the site, which is required for assembly -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-site-plugin</artifactId>
            <version>${maven.site.plugin.version}</version>
            <executions>
              <execution>
                <id>gen-site</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>site</goal>
                </goals>
              </execution>
            </executions>
          </plugin>

          <!-- Creates the all-inclusive uber jar -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>shade</goal>
                </goals>
                <configuration>
                  <filters>
                    <filter>
                      <artifact>*:*</artifact>
                      <excludes>
                        <exclude>META-INF/*.SF</exclude>
                        <exclude>META-INF/*.DSA</exclude>
                        <exclude>META-INF/*.RSA</exclude>
                      </excludes>
                    </filter>
                  </filters>
                  <createDependencyReducedPom>false</createDependencyReducedPom>
                  <shadedArtifactAttached>true</shadedArtifactAttached>
                  <shadedClassifierName>all</shadedClassifierName>
                  <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                      <mainClass>com.puppycrawl.tools.checkstyle.Main</mainClass>
                    </transformer>
                  </transformers>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <!-- Creates the binary and source distributions -->
          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
              <descriptors>
                <descriptor>config/assembly-bin.xml</descriptor>
                <descriptor>config/assembly-src.xml</descriptor>
              </descriptors>
              <tarLongFileMode>gnu</tarLongFileMode>
            </configuration>
            <executions>
              <execution>
                <id>make-bundle</id>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
              </execution>
            </executions>
          </plugin>

          <!-- disable json validation plugin since it has no cli property for disable -->
          <plugin>
            <groupId>com.groupon.maven.plugin.json</groupId>
            <artifactId>json-schema-validator</artifactId>
            <version>${json-schema-validator.version}</version>
            <executions>
              <execution>
                <phase>none</phase>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>

    </profile>

    <profile>
      <id>sonar</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>sonar-maven-plugin</artifactId>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>error-prone-compile</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>${maven.compiler.plugin.version}</version>
            <executions>
              <!-- Skip the default-compile execution as we don't want to execute the compile goal twice -->
              <execution>
                <id>default-compile</id>
                <phase>compile</phase>
                <goals>
                  <goal>compile</goal>
                </goals>
                <configuration>
                  <skipMain>true</skipMain>
                </configuration>
              </execution>
              <execution>
                <id>error-prone-compile</id>
                <phase>compile</phase>
                <goals>
                  <goal>compile</goal>
                </goals>
                <configuration>
                  <failOnError>false</failOnError>
                  <source>${java.version}</source>
                  <target>${java.version}</target>
                  <compilerArgs>
                    <arg>-Xpkginfo:always</arg>
                    <arg>-XDcompilePolicy=simple</arg>
                    <arg>
                      -Xplugin:ErrorProne
                    </arg>
                  </compilerArgs>
                  <annotationProcessorPaths>
                    <path>
                      <groupId>com.google.errorprone</groupId>
                      <artifactId>error_prone_core</artifactId>
                      <version>${error-prone.version}</version>
                    </path>
                  </annotationProcessorPaths>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>error-prone-test-compile</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>${maven.compiler.plugin.version}</version>
            <executions>
              <!-- Skip the default-testCompile execution as we don't want to execute the testCompile goal twice -->
              <execution>
                <id>default-testCompile</id>
                <phase>test-compile</phase>
                <goals>
                  <goal>testCompile</goal>
                </goals>
                <configuration>
                  <skip>true</skip>
                </configuration>
              </execution>
              <execution>
                <id>error-prone-test-compile</id>
                <phase>test-compile</phase>
                <goals>
                  <goal>testCompile</goal>
                </goals>
                <configuration>
                  <failOnError>false</failOnError>
                  <source>${java.version}</source>
                  <target>${java.version}</target>
                  <compilerArgs>
                    <arg>-Xpkginfo:always</arg>
                    <arg>-XDcompilePolicy=simple</arg>
                    <arg>
                      -Xplugin:ErrorProne \
                      -XepExcludedPaths:.*[\\/]resources[\\/].*
                    </arg>
                  </compilerArgs>
                  <annotationProcessorPaths>
                    <path>
                      <groupId>com.google.errorprone</groupId>
                      <artifactId>error_prone_core</artifactId>
                      <version>${error-prone.version}</version>
                    </path>
                  </annotationProcessorPaths>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!-- Use only with GPG v2.1+ -->
    <profile>
      <id>gpgv2</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
            <version>3.0.1</version>
            <configuration>
              <gpgArguments>
                <arg>--pinentry-mode</arg>
                <arg>loopback</arg>
              </gpgArguments>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!-- Start Checker Framework profiles -->
    <profile>
      <id>checker-nullness-optional-interning</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>${maven.compiler.plugin.version}</version>
            <configuration>
              <!-- Must fork or else JVM arguments are ignored. -->
              <fork>true</fork>
              <failOnError>false</failOnError>
              <meminitial>1024m</meminitial>
              <maxmem>4048m</maxmem>
              <compilerArguments>
                <Xmaxerrs>10000</Xmaxerrs>
                <Xmaxwarns>10000</Xmaxwarns>
              </compilerArguments>
              <annotationProcessorPaths>
                <path>
                  <groupId>org.checkerframework</groupId>
                  <artifactId>checker</artifactId>
                  <version>${checkerframework.version}</version>
                </path>
              </annotationProcessorPaths>
              <annotationProcessors>
                <annotationProcessor>org.checkerframework.checker.nullness.NullnessChecker</annotationProcessor>
                <annotationProcessor>org.checkerframework.checker.optional.OptionalChecker</annotationProcessor>
                <annotationProcessor>org.checkerframework.checker.interning.InterningChecker</annotationProcessor>
              </annotationProcessors>
              <compilerArgs combine.children="append">
                <!-- -Awarns turns type-checking errors into warnings. -->
                <arg>-Awarns</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg>
                <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg>
              </compilerArgs>
            </configuration>
          </plugin>
        </plugins>
      </build>
      <properties>
        <!-- Needed for animal-sniffer-maven-plugin version 1.19 (version 1.20 is fixed). -->
        <animal.sniffer.skip>true</animal.sniffer.skip>
      </properties>
      <dependencies>
        <dependency>
          <groupId>org.checkerframework</groupId>
          <artifactId>checker</artifactId>
          <version>${checkerframework.version}</version>
        </dependency>
      </dependencies>
    </profile>

    <profile>
      <id>checker-methods-resource-fenum</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>${maven.compiler.plugin.version}</version>
            <configuration>
              <!-- Must fork or else JVM arguments are ignored. -->
              <fork>true</fork>
              <failOnError>false</failOnError>
              <meminitial>1024m</meminitial>
              <maxmem>4048m</maxmem>
              <compilerArguments>
                <Xmaxerrs>10000</Xmaxerrs>
                <Xmaxwarns>10000</Xmaxwarns>
              </compilerArguments>
              <annotationProcessorPaths>
                <path>
                  <groupId>org.checkerframework</groupId>
                  <artifactId>checker</artifactId>
                  <version>${checkerframework.version}</version>
                </path>
              </annotationProcessorPaths>
              <annotationProcessors>
                <annotationProcessor>org.checkerframework.checker.calledmethods.CalledMethodsChecker</annotationProcessor>
                <annotationProcessor>org.checkerframework.checker.resourceleak.ResourceLeakChecker</annotationProcessor>
                <annotationProcessor>org.checkerframework.checker.fenum.FenumChecker</annotationProcessor>
              </annotationProcessors>
              <compilerArgs combine.children="append">
                <!-- -Awarns turns type-checking errors into warnings. -->
                <arg>-Awarns</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg>
                <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg>
              </compilerArgs>
            </configuration>
          </plugin>
        </plugins>
      </build>
      <properties>
        <!-- Needed for animal-sniffer-maven-plugin version 1.19 (version 1.20 is fixed). -->
        <animal.sniffer.skip>true</animal.sniffer.skip>
      </properties>
      <dependencies>
        <dependency>
          <groupId>org.checkerframework</groupId>
          <artifactId>checker</artifactId>
          <version>${checkerframework.version}</version>
        </dependency>
      </dependencies>
    </profile>

    <profile>
      <id>checker-lock-tainting</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>${maven.compiler.plugin.version}</version>
            <configuration>
              <!-- Must fork or else JVM arguments are ignored. -->
              <fork>true</fork>
              <failOnError>false</failOnError>
              <meminitial>1024m</meminitial>
              <maxmem>4048m</maxmem>
              <compilerArguments>
                <Xmaxerrs>10000</Xmaxerrs>
                <Xmaxwarns>10000</Xmaxwarns>
              </compilerArguments>
              <annotationProcessorPaths>
                <path>
                  <groupId>org.checkerframework</groupId>
                  <artifactId>checker</artifactId>
                  <version>${checkerframework.version}</version>
                </path>
              </annotationProcessorPaths>
              <annotationProcessors>
                <annotationProcessor>org.checkerframework.checker.lock.LockChecker</annotationProcessor>
                <annotationProcessor>org.checkerframework.checker.tainting.TaintingChecker</annotationProcessor>
              </annotationProcessors>
              <compilerArgs combine.children="append">
                <!-- -Awarns turns type-checking errors into warnings. -->
                <arg>-Awarns</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg>
                <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg>
              </compilerArgs>
            </configuration>
          </plugin>
        </plugins>
      </build>
      <properties>
        <!-- Needed for animal-sniffer-maven-plugin version 1.19 (version 1.20 is fixed). -->
        <animal.sniffer.skip>true</animal.sniffer.skip>
      </properties>
      <dependencies>
        <dependency>
          <groupId>org.checkerframework</groupId>
          <artifactId>checker</artifactId>
          <version>${checkerframework.version}</version>
        </dependency>
      </dependencies>
    </profile>

    <profile>
      <id>checker-index</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>${maven.compiler.plugin.version}</version>
            <configuration>
              <!-- Must fork or else JVM arguments are ignored. -->
              <fork>true</fork>
              <failOnError>false</failOnError>
              <meminitial>1024m</meminitial>
              <maxmem>4048m</maxmem>
              <compilerArguments>
                <Xmaxerrs>10000</Xmaxerrs>
                <Xmaxwarns>10000</Xmaxwarns>
              </compilerArguments>
              <annotationProcessorPaths>
                <path>
                  <groupId>org.checkerframework</groupId>
                  <artifactId>checker</artifactId>
                  <version>${checkerframework.version}</version>
                </path>
              </annotationProcessorPaths>
              <annotationProcessors>
                <annotationProcessor>org.checkerframework.checker.index.IndexChecker</annotationProcessor>
              </annotationProcessors>
              <compilerArgs combine.children="append">
                <!-- -Awarns turns type-checking errors into warnings. -->
                <arg>-Awarns</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg>
                <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg>
              </compilerArgs>
            </configuration>
          </plugin>
        </plugins>
      </build>
      <properties>
        <!-- Needed for animal-sniffer-maven-plugin version 1.19 (version 1.20 is fixed). -->
        <animal.sniffer.skip>true</animal.sniffer.skip>
      </properties>
      <dependencies>
        <dependency>
          <groupId>org.checkerframework</groupId>
          <artifactId>checker</artifactId>
          <version>${checkerframework.version}</version>
        </dependency>
      </dependencies>
    </profile>

    <profile>
      <id>checker-formatter</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>${maven.compiler.plugin.version}</version>
            <configuration>
              <!-- Must fork or else JVM arguments are ignored. -->
              <fork>true</fork>
              <failOnError>false</failOnError>
              <meminitial>1024m</meminitial>
              <maxmem>4048m</maxmem>
              <compilerArguments>
                <Xmaxerrs>10000</Xmaxerrs>
                <Xmaxwarns>10000</Xmaxwarns>
              </compilerArguments>
              <annotationProcessorPaths>
                <path>
                  <groupId>org.checkerframework</groupId>
                  <artifactId>checker</artifactId>
                  <version>${checkerframework.version}</version>
                </path>
              </annotationProcessorPaths>
              <annotationProcessors>
                <annotationProcessor>org.checkerframework.checker.formatter.FormatterChecker</annotationProcessor>
                <annotationProcessor>org.checkerframework.checker.i18nformatter.I18nFormatterChecker</annotationProcessor>
              </annotationProcessors>
              <compilerArgs combine.children="append">
                <!-- -Awarns turns type-checking errors into warnings. -->
                <arg>-Awarns</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg>
                <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg>
              </compilerArgs>
            </configuration>
          </plugin>
        </plugins>
      </build>
      <properties>
        <!-- Needed for animal-sniffer-maven-plugin version 1.19 (version 1.20 is fixed). -->
        <animal.sniffer.skip>true</animal.sniffer.skip>
      </properties>
      <dependencies>
        <dependency>
          <groupId>org.checkerframework</groupId>
          <artifactId>checker</artifactId>
          <version>${checkerframework.version}</version>
        </dependency>
      </dependencies>
    </profile>

    <profile>
      <id>checker-signature-gui-units-init</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>${maven.compiler.plugin.version}</version>
            <configuration>
              <!-- Must fork or else JVM arguments are ignored. -->
              <fork>true</fork>
              <failOnError>false</failOnError>
              <meminitial>1024m</meminitial>
              <maxmem>4048m</maxmem>
              <compilerArguments>
                <Xmaxerrs>10000</Xmaxerrs>
                <Xmaxwarns>10000</Xmaxwarns>
              </compilerArguments>
              <annotationProcessorPaths>
                <path>
                  <groupId>org.checkerframework</groupId>
                  <artifactId>checker</artifactId>
                  <version>${checkerframework.version}</version>
                </path>
              </annotationProcessorPaths>
              <annotationProcessors>
                <annotationProcessor>org.checkerframework.checker.signature.SignatureChecker</annotationProcessor>
                <annotationProcessor>org.checkerframework.checker.guieffect.GuiEffectChecker</annotationProcessor>
                <annotationProcessor>org.checkerframework.checker.units.UnitsChecker</annotationProcessor>
                <annotationProcessor>org.checkerframework.common.initializedfields.InitializedFieldsChecker</annotationProcessor>
              </annotationProcessors>
              <compilerArgs combine.children="append">
                <!-- -Awarns turns type-checking errors into warnings. -->
                <arg>-Awarns</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg>
                <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg>
              </compilerArgs>
            </configuration>
          </plugin>
        </plugins>
      </build>
      <properties>
        <!-- Needed for animal-sniffer-maven-plugin version 1.19 (version 1.20 is fixed). -->
        <animal.sniffer.skip>true</animal.sniffer.skip>
      </properties>
      <dependencies>
        <dependency>
          <groupId>org.checkerframework</groupId>
          <artifactId>checker</artifactId>
          <version>${checkerframework.version}</version>
        </dependency>
      </dependencies>
    </profile>

    <profile>
      <id>checker-regex-property-key-compiler-message</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>${maven.compiler.plugin.version}</version>
            <configuration>
              <!-- Must fork or else JVM arguments are ignored. -->
              <fork>true</fork>
              <failOnError>false</failOnError>
              <meminitial>1024m</meminitial>
              <maxmem>4048m</maxmem>
              <compilerArguments>
                <Xmaxerrs>10000</Xmaxerrs>
                <Xmaxwarns>10000</Xmaxwarns>
              </compilerArguments>
              <annotationProcessorPaths>
                <path>
                  <groupId>org.checkerframework</groupId>
                  <artifactId>checker</artifactId>
                  <version>${checkerframework.version}</version>
                </path>
              </annotationProcessorPaths>
              <annotationProcessors>
                <annotationProcessor>org.checkerframework.checker.regex.RegexChecker</annotationProcessor>
                <annotationProcessor>org.checkerframework.checker.propkey.PropertyKeyChecker</annotationProcessor>
                <annotationProcessor>org.checkerframework.checker.compilermsgs.CompilerMessagesChecker</annotationProcessor>
              </annotationProcessors>
              <compilerArgs combine.children="append">
                <!-- -Awarns turns type-checking errors into warnings. -->
                <arg>-Awarns</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg>
                <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg>
              </compilerArgs>
            </configuration>
          </plugin>
        </plugins>
      </build>
      <properties>
        <!-- Needed for animal-sniffer-maven-plugin version 1.19 (version 1.20 is fixed). -->
        <animal.sniffer.skip>true</animal.sniffer.skip>
      </properties>
      <dependencies>
        <dependency>
          <groupId>org.checkerframework</groupId>
          <artifactId>checker</artifactId>
          <version>${checkerframework.version}</version>
        </dependency>
      </dependencies>
    </profile>

    <profile>
      <id>checker-purity-value-returns</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>${maven.compiler.plugin.version}</version>
            <configuration>
              <!-- Must fork or else JVM arguments are ignored. -->
              <fork>true</fork>
              <failOnError>false</failOnError>
              <meminitial>1024m</meminitial>
              <maxmem>4048m</maxmem>
              <compilerArguments>
                <Xmaxerrs>10000</Xmaxerrs>
                <Xmaxwarns>10000</Xmaxwarns>
              </compilerArguments>
              <annotationProcessorPaths>
                <path>
                  <groupId>org.checkerframework</groupId>
                  <artifactId>checker</artifactId>
                  <version>${checkerframework.version}</version>
                </path>
              </annotationProcessorPaths>
              <annotationProcessors>
                <annotationProcessor>org.checkerframework.framework.util.PurityChecker</annotationProcessor>
                <annotationProcessor>org.checkerframework.common.value.ValueChecker</annotationProcessor>
                <annotationProcessor>org.checkerframework.common.returnsreceiver.ReturnsReceiverChecker</annotationProcessor>
              </annotationProcessors>
              <compilerArgs combine.children="append">
                <!-- -Awarns turns type-checking errors into warnings. -->
                <arg>-Awarns</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg>
                <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg>
              </compilerArgs>
            </configuration>
          </plugin>
        </plugins>
      </build>
      <properties>
        <!-- Needed for animal-sniffer-maven-plugin version 1.19 (version 1.20 is fixed). -->
        <animal.sniffer.skip>true</animal.sniffer.skip>
      </properties>
      <dependencies>
        <dependency>
          <groupId>org.checkerframework</groupId>
          <artifactId>checker</artifactId>
          <version>${checkerframework.version}</version>
        </dependency>
      </dependencies>
    </profile>
    <!-- End Checker Framework profiles -->

    <profile>
      <id>pitest-misc</id>
      <properties>
        <jacoco.skip>true</jacoco.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <mutators>
                <mutator>CONDITIONALS_BOUNDARY</mutator>
                <mutator>CONSTRUCTOR_CALLS</mutator>
                <mutator>INCREMENTS</mutator>
                <!-- Read reason of disablement at https://github.com/checkstyle/checkstyle/issues/11895 -->
                <!-- <mutator>INLINE_CONSTS</mutator> -->
                <mutator>INVERT_NEGS</mutator>
                <mutator>MATH</mutator>
                <mutator>NEGATE_CONDITIONALS</mutator>
                <mutator>NON_VOID_METHOD_CALLS</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_IF</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_IF</mutator>
                <mutator>VOID_METHOD_CALLS</mutator>
                <mutator>EXPERIMENTAL_ARGUMENT_PROPAGATION</mutator>
                <mutator>EXPERIMENTAL_BIG_DECIMAL</mutator>
                <mutator>EXPERIMENTAL_BIG_INTEGER</mutator>
                <mutator>EXPERIMENTAL_MEMBER_VARIABLE</mutator>
                <mutator>EXPERIMENTAL_NAKED_RECEIVER</mutator>
                <mutator>REMOVE_INCREMENTS</mutator>
                <mutator>EXPERIMENTAL_SWITCH</mutator>
                <mutator>REMOVE_SWITCH</mutator>
                <mutator>FALSE_RETURNS</mutator>
                <mutator>TRUE_RETURNS</mutator>
                <mutator>EMPTY_RETURNS</mutator>
                <mutator>NULL_RETURNS</mutator>
                <mutator>PRIMITIVE_RETURNS</mutator>
              </mutators>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.ArrayTypeStyleCheck*</param>
                <param>
                  com.puppycrawl.tools.checkstyle.checks.AvoidEscapedUnicodeCharactersCheck*
                </param>
                <param>com.puppycrawl.tools.checkstyle.checks.DescendantTokenCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.LineSeparatorOption*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.NewlineAtEndOfFileCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.NoCodeInFileCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.OrderedPropertiesCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.OuterTypeFilenameCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.SuppressWarningsHolder*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.TodoCommentCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.TrailingCommentCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.TranslationCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.UncommentedMainCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.UniquePropertiesCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.UpperEllCheck*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.ArrayTypeStyleCheckTest</param>
                <param>
                  com.puppycrawl.tools.checkstyle.checks.AvoidEscapedUnicodeCharactersCheckTest
                </param>
                <param>com.puppycrawl.tools.checkstyle.checks.DescendantTokenCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.FinalParametersCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.NewlineAtEndOfFileCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.NoCodeInFileCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.OrderedPropertiesCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.OuterTypeFilenameCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.SuppressWarningsHolderTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.TodoCommentCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.TrailingCommentCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.TranslationCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.UncommentedMainCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.UniquePropertiesCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.UpperEllCheckTest</param>
                <!-- needed for SuppressWarningsFilter -->
                <param>com.puppycrawl.tools.checkstyle.filters.SuppressWarningsFilterTest</param>
              </targetTests>
              <excludedMethods>
                <!-- destroy method was added in case module had to free up resources
                before ending, but currently it does ThreadLocal cleanup,
                to satisfy sonar violation. But right now checkstyle is not multi threading tool.
                Ones we start multi-threading implementation we should remove this exclude.
                If we remove this destroy we would have to remove all of them as they are chained
                together, so we just exclude it from pitest check. -->
                <param>destroy</param>
              </excludedMethods>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>98</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
              <outputFormats>${pitest.plugin.output.formats}</outputFormats>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-annotation</id>
      <properties>
        <jacoco.skip>true</jacoco.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <mutators>
                <mutator>CONDITIONALS_BOUNDARY</mutator>
                <mutator>CONSTRUCTOR_CALLS</mutator>
                <mutator>INCREMENTS</mutator>
                <!-- Read reason of disablement at https://github.com/checkstyle/checkstyle/issues/11895 -->
                <!-- <mutator>INLINE_CONSTS</mutator> -->
                <mutator>INVERT_NEGS</mutator>
                <mutator>MATH</mutator>
                <mutator>NEGATE_CONDITIONALS</mutator>
                <mutator>NON_VOID_METHOD_CALLS</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_IF</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_IF</mutator>
                <mutator>VOID_METHOD_CALLS</mutator>
                <mutator>EXPERIMENTAL_ARGUMENT_PROPAGATION</mutator>
                <mutator>EXPERIMENTAL_BIG_DECIMAL</mutator>
                <mutator>EXPERIMENTAL_BIG_INTEGER</mutator>
                <mutator>EXPERIMENTAL_MEMBER_VARIABLE</mutator>
                <mutator>EXPERIMENTAL_NAKED_RECEIVER</mutator>
                <mutator>REMOVE_INCREMENTS</mutator>
                <mutator>EXPERIMENTAL_SWITCH</mutator>
                <mutator>REMOVE_SWITCH</mutator>
                <mutator>FALSE_RETURNS</mutator>
                <mutator>TRUE_RETURNS</mutator>
                <mutator>EMPTY_RETURNS</mutator>
                <mutator>NULL_RETURNS</mutator>
                <mutator>PRIMITIVE_RETURNS</mutator>
              </mutators>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.annotation.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.annotation.*</param>
              </targetTests>
              <excludedTestClasses>
                <param>*.Input*</param>
              </excludedTestClasses>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>100</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
              <outputFormats>${pitest.plugin.output.formats}</outputFormats>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-blocks</id>
      <properties>
        <jacoco.skip>true</jacoco.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <mutators>
                <mutator>CONDITIONALS_BOUNDARY</mutator>
                <mutator>CONSTRUCTOR_CALLS</mutator>
                <mutator>INCREMENTS</mutator>
                <!-- Read reason of disablement at https://github.com/checkstyle/checkstyle/issues/11895 -->
                <!-- <mutator>INLINE_CONSTS</mutator> -->
                <mutator>INVERT_NEGS</mutator>
                <mutator>MATH</mutator>
                <mutator>NEGATE_CONDITIONALS</mutator>
                <mutator>NON_VOID_METHOD_CALLS</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_IF</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_IF</mutator>
                <mutator>VOID_METHOD_CALLS</mutator>
                <mutator>EXPERIMENTAL_ARGUMENT_PROPAGATION</mutator>
                <mutator>EXPERIMENTAL_BIG_DECIMAL</mutator>
                <mutator>EXPERIMENTAL_BIG_INTEGER</mutator>
                <mutator>EXPERIMENTAL_MEMBER_VARIABLE</mutator>
                <mutator>EXPERIMENTAL_NAKED_RECEIVER</mutator>
                <mutator>REMOVE_INCREMENTS</mutator>
                <mutator>EXPERIMENTAL_SWITCH</mutator>
                <mutator>REMOVE_SWITCH</mutator>
                <mutator>FALSE_RETURNS</mutator>
                <mutator>TRUE_RETURNS</mutator>
                <mutator>EMPTY_RETURNS</mutator>
                <mutator>NULL_RETURNS</mutator>
                <mutator>PRIMITIVE_RETURNS</mutator>
              </mutators>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.blocks.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.blocks.*</param>
              </targetTests>
              <excludedTestClasses>
                <param>*.Input*</param>
              </excludedTestClasses>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>100</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
              <outputFormats>${pitest.plugin.output.formats}</outputFormats>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-coding-1</id>
      <properties>
        <jacoco.skip>true</jacoco.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <mutators>
                <mutator>CONDITIONALS_BOUNDARY</mutator>
                <mutator>CONSTRUCTOR_CALLS</mutator>
                <mutator>INCREMENTS</mutator>
                <!-- Read reason of disablement at https://github.com/checkstyle/checkstyle/issues/11895 -->
                <!-- <mutator>INLINE_CONSTS</mutator> -->
                <mutator>INVERT_NEGS</mutator>
                <mutator>MATH</mutator>
                <mutator>NEGATE_CONDITIONALS</mutator>
                <mutator>NON_VOID_METHOD_CALLS</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_IF</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_IF</mutator>
                <mutator>VOID_METHOD_CALLS</mutator>
                <mutator>EXPERIMENTAL_ARGUMENT_PROPAGATION</mutator>
                <mutator>EXPERIMENTAL_BIG_DECIMAL</mutator>
                <mutator>EXPERIMENTAL_BIG_INTEGER</mutator>
                <mutator>EXPERIMENTAL_MEMBER_VARIABLE</mutator>
                <mutator>EXPERIMENTAL_NAKED_RECEIVER</mutator>
                <mutator>REMOVE_INCREMENTS</mutator>
                <mutator>EXPERIMENTAL_SWITCH</mutator>
                <mutator>REMOVE_SWITCH</mutator>
                <mutator>FALSE_RETURNS</mutator>
                <mutator>TRUE_RETURNS</mutator>
                <mutator>EMPTY_RETURNS</mutator>
                <mutator>NULL_RETURNS</mutator>
                <mutator>PRIMITIVE_RETURNS</mutator>
              </mutators>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.AbstractSuperCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.ArrayTrailingCommaCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.AvoidDoubleBraceInitializationCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.AvoidInlineConditionalsCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.AvoidNoArgumentSuperConstructorCallCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.CovariantEqualsCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.DeclarationOrderCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.DefaultComesLastCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.EmptyStatementCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.EqualsAvoidNullCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.EqualsHashCodeCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.IllegalCatchCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.IllegalThrowsCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.IllegalTokenCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.VariableDeclarationUsageDistanceCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.UnnecessaryParenthesesCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.SuperCloneCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.SuperFinalizeCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.PackageDeclarationCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.ParameterAssignmentCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.ReturnCountCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.SimplifyBooleanExpressionCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.SimplifyBooleanReturnCheck*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.ArrayTrailingCommaCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.AvoidDoubleBraceInitializationCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.AvoidInlineConditionalsCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.AvoidNoArgumentSuperConstructorCallCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.CovariantEqualsCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.DeclarationOrderCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.DefaultComesLastCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.EmptyStatementCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.EqualsAvoidNullCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.EqualsHashCodeCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.ExplicitInitializationCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.FallThroughCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.IllegalCatchCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.IllegalThrowsCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.IllegalTokenCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.VariableDeclarationUsageDistanceCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.UnnecessaryParenthesesCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.SuperCloneCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.SuperFinalizeCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.PackageDeclarationCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.ParameterAssignmentCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.ReturnCountCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.SimplifyBooleanExpressionCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.SimplifyBooleanReturnCheckTest</param>
              </targetTests>
              <excludedTestClasses>
                <param>*.Input*</param>
              </excludedTestClasses>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>98</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
              <outputFormats>${pitest.plugin.output.formats}</outputFormats>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-coding-2</id>
      <properties>
        <jacoco.skip>true</jacoco.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <mutators>
                <mutator>CONDITIONALS_BOUNDARY</mutator>
                <mutator>CONSTRUCTOR_CALLS</mutator>
                <mutator>INCREMENTS</mutator>
                <!-- Read reason of disablement at https://github.com/checkstyle/checkstyle/issues/11895 -->
                <!-- <mutator>INLINE_CONSTS</mutator> -->
                <mutator>INVERT_NEGS</mutator>
                <mutator>MATH</mutator>
                <mutator>NEGATE_CONDITIONALS</mutator>
                <mutator>NON_VOID_METHOD_CALLS</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_IF</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_IF</mutator>
                <mutator>VOID_METHOD_CALLS</mutator>
                <mutator>EXPERIMENTAL_ARGUMENT_PROPAGATION</mutator>
                <mutator>EXPERIMENTAL_BIG_DECIMAL</mutator>
                <mutator>EXPERIMENTAL_BIG_INTEGER</mutator>
                <mutator>EXPERIMENTAL_MEMBER_VARIABLE</mutator>
                <mutator>EXPERIMENTAL_NAKED_RECEIVER</mutator>
                <mutator>REMOVE_INCREMENTS</mutator>
                <mutator>EXPERIMENTAL_SWITCH</mutator>
                <mutator>REMOVE_SWITCH</mutator>
                <mutator>FALSE_RETURNS</mutator>
                <mutator>TRUE_RETURNS</mutator>
                <mutator>EMPTY_RETURNS</mutator>
                <mutator>NULL_RETURNS</mutator>
                <mutator>PRIMITIVE_RETURNS</mutator>
              </mutators>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.FinalLocalVariableCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.HiddenFieldCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.IllegalInstantiationCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.InnerAssignmentCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.MagicNumberCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.MatchXpathCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.MissingCtorCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.MissingSwitchDefaultCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.MultipleStringLiteralsCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.MultipleVariableDeclarationsCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.NestedForDepthCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.NestedIfDepthCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.NestedTryDepthCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.IllegalTokenTextCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.IllegalTypeCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.UnnecessarySemicolonInTryWithResourcesCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.UnusedLocalVariableCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.OneStatementPerLineCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.FallThroughCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.NoArrayTrailingCommaCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.NoCloneCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.NoEnumTrailingCommaCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.NoFinalizerCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.OverloadMethodsDeclarationOrderCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.StringLiteralEqualityCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.ExplicitInitializationCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.UnnecessarySemicolonAfterOuterTypeDeclarationCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.UnnecessarySemicolonAfterTypeMemberDeclarationCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.UnnecessarySemicolonInEnumerationCheck*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.FinalLocalVariableCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.HiddenFieldCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.IllegalInstantiationCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.InnerAssignmentCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.MagicNumberCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.MatchXpathCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.MissingCtorCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.MissingSwitchDefaultCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.MultipleStringLiteralsCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.MultipleVariableDeclarationsCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.NestedForDepthCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.NestedIfDepthCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.NestedTryDepthCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.IllegalTokenTextCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.IllegalTypeCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.UnnecessarySemicolonInTryWithResourcesCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.UnusedLocalVariableCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.OneStatementPerLineCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.FallThroughCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.NoArrayTrailingCommaCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.NoCloneCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.NoEnumTrailingCommaCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.NoFinalizerCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.OverloadMethodsDeclarationOrderCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.StringLiteralEqualityCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.ExplicitInitializationCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.UnnecessarySemicolonAfterOuterTypeDeclarationCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.UnnecessarySemicolonAfterTypeMemberDeclarationCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.UnnecessarySemicolonInEnumerationCheckTest</param>
              </targetTests>
              <excludedTestClasses>
                <param>*.Input*</param>
              </excludedTestClasses>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>98</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
              <outputFormats>${pitest.plugin.output.formats}</outputFormats>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-coding-require-this-check</id>
      <properties>
        <jacoco.skip>true</jacoco.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <mutators>
                <mutator>CONDITIONALS_BOUNDARY</mutator>
                <mutator>CONSTRUCTOR_CALLS</mutator>
                <mutator>INCREMENTS</mutator>
                <!-- Read reason of disablement at https://github.com/checkstyle/checkstyle/issues/11895 -->
                <!-- <mutator>INLINE_CONSTS</mutator> -->
                <mutator>INVERT_NEGS</mutator>
                <mutator>MATH</mutator>
                <mutator>NEGATE_CONDITIONALS</mutator>
                <mutator>NON_VOID_METHOD_CALLS</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_IF</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_IF</mutator>
                <mutator>VOID_METHOD_CALLS</mutator>
                <mutator>EXPERIMENTAL_ARGUMENT_PROPAGATION</mutator>
                <mutator>EXPERIMENTAL_BIG_DECIMAL</mutator>
                <mutator>EXPERIMENTAL_BIG_INTEGER</mutator>
                <mutator>EXPERIMENTAL_MEMBER_VARIABLE</mutator>
                <mutator>EXPERIMENTAL_NAKED_RECEIVER</mutator>
                <mutator>REMOVE_INCREMENTS</mutator>
                <mutator>EXPERIMENTAL_SWITCH</mutator>
                <mutator>REMOVE_SWITCH</mutator>
                <mutator>FALSE_RETURNS</mutator>
                <mutator>TRUE_RETURNS</mutator>
                <mutator>EMPTY_RETURNS</mutator>
                <mutator>NULL_RETURNS</mutator>
                <mutator>PRIMITIVE_RETURNS</mutator>
              </mutators>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.RequireThisCheck*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.coding.RequireThisCheckTest</param>
              </targetTests>
              <excludedTestClasses>
                <param>*.Input*</param>
              </excludedTestClasses>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>100</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
              <outputFormats>${pitest.plugin.output.formats}</outputFormats>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-design</id>
      <properties>
        <jacoco.skip>true</jacoco.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <mutators>
                <mutator>CONDITIONALS_BOUNDARY</mutator>
                <mutator>CONSTRUCTOR_CALLS</mutator>
                <mutator>INCREMENTS</mutator>
                <!-- Read reason of disablement at https://github.com/checkstyle/checkstyle/issues/11895 -->
                <!-- <mutator>INLINE_CONSTS</mutator> -->
                <mutator>INVERT_NEGS</mutator>
                <mutator>MATH</mutator>
                <mutator>NEGATE_CONDITIONALS</mutator>
                <mutator>NON_VOID_METHOD_CALLS</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_IF</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_IF</mutator>
                <mutator>VOID_METHOD_CALLS</mutator>
                <mutator>EXPERIMENTAL_ARGUMENT_PROPAGATION</mutator>
                <mutator>EXPERIMENTAL_BIG_DECIMAL</mutator>
                <mutator>EXPERIMENTAL_BIG_INTEGER</mutator>
                <mutator>EXPERIMENTAL_MEMBER_VARIABLE</mutator>
                <mutator>EXPERIMENTAL_NAKED_RECEIVER</mutator>
                <mutator>REMOVE_INCREMENTS</mutator>
                <mutator>EXPERIMENTAL_SWITCH</mutator>
                <mutator>REMOVE_SWITCH</mutator>
                <mutator>FALSE_RETURNS</mutator>
                <mutator>TRUE_RETURNS</mutator>
                <mutator>EMPTY_RETURNS</mutator>
                <mutator>NULL_RETURNS</mutator>
                <mutator>PRIMITIVE_RETURNS</mutator>
              </mutators>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.design.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.design.*</param>
              </targetTests>
              <excludedTestClasses>
                <param>*.Input*</param>
              </excludedTestClasses>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>100</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
              <outputFormats>${pitest.plugin.output.formats}</outputFormats>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-header</id>
      <properties>
        <jacoco.skip>true</jacoco.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <mutators>
                <mutator>CONDITIONALS_BOUNDARY</mutator>
                <mutator>CONSTRUCTOR_CALLS</mutator>
                <mutator>INCREMENTS</mutator>
                <!-- Read reason of disablement at https://github.com/checkstyle/checkstyle/issues/11895 -->
                <!-- <mutator>INLINE_CONSTS</mutator> -->
                <mutator>INVERT_NEGS</mutator>
                <mutator>MATH</mutator>
                <mutator>NEGATE_CONDITIONALS</mutator>
                <mutator>NON_VOID_METHOD_CALLS</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_IF</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_IF</mutator>
                <mutator>VOID_METHOD_CALLS</mutator>
                <mutator>EXPERIMENTAL_ARGUMENT_PROPAGATION</mutator>
                <mutator>EXPERIMENTAL_BIG_DECIMAL</mutator>
                <mutator>EXPERIMENTAL_BIG_INTEGER</mutator>
                <mutator>EXPERIMENTAL_MEMBER_VARIABLE</mutator>
                <mutator>EXPERIMENTAL_NAKED_RECEIVER</mutator>
                <mutator>REMOVE_INCREMENTS</mutator>
                <mutator>EXPERIMENTAL_SWITCH</mutator>
                <mutator>REMOVE_SWITCH</mutator>
                <mutator>FALSE_RETURNS</mutator>
                <mutator>TRUE_RETURNS</mutator>
                <mutator>EMPTY_RETURNS</mutator>
                <mutator>NULL_RETURNS</mutator>
                <mutator>PRIMITIVE_RETURNS</mutator>
              </mutators>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.header.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.header.*</param>
              </targetTests>
              <excludedTestClasses>
                <param>*.Input*</param>
              </excludedTestClasses>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>97</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
              <outputFormats>${pitest.plugin.output.formats}</outputFormats>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-imports</id>
      <properties>
        <jacoco.skip>true</jacoco.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <mutators>
                <mutator>CONDITIONALS_BOUNDARY</mutator>
                <mutator>CONSTRUCTOR_CALLS</mutator>
                <mutator>INCREMENTS</mutator>
                <!-- Read reason of disablement at https://github.com/checkstyle/checkstyle/issues/11895 -->
                <!-- <mutator>INLINE_CONSTS</mutator> -->
                <mutator>INVERT_NEGS</mutator>
                <mutator>MATH</mutator>
                <mutator>NEGATE_CONDITIONALS</mutator>
                <mutator>NON_VOID_METHOD_CALLS</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_IF</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_IF</mutator>
                <mutator>VOID_METHOD_CALLS</mutator>
                <mutator>EXPERIMENTAL_ARGUMENT_PROPAGATION</mutator>
                <mutator>EXPERIMENTAL_BIG_DECIMAL</mutator>
                <mutator>EXPERIMENTAL_BIG_INTEGER</mutator>
                <mutator>EXPERIMENTAL_MEMBER_VARIABLE</mutator>
                <mutator>EXPERIMENTAL_NAKED_RECEIVER</mutator>
                <mutator>REMOVE_INCREMENTS</mutator>
                <mutator>EXPERIMENTAL_SWITCH</mutator>
                <mutator>REMOVE_SWITCH</mutator>
                <mutator>FALSE_RETURNS</mutator>
                <mutator>TRUE_RETURNS</mutator>
                <mutator>EMPTY_RETURNS</mutator>
                <mutator>NULL_RETURNS</mutator>
                <mutator>PRIMITIVE_RETURNS</mutator>
              </mutators>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.imports.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.imports.*</param>
              </targetTests>
              <excludedTestClasses>
                <param>*.Input*</param>
              </excludedTestClasses>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>98</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
              <outputFormats>${pitest.plugin.output.formats}</outputFormats>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-indentation</id>
      <properties>
        <jacoco.skip>true</jacoco.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <mutators>
                <mutator>CONDITIONALS_BOUNDARY</mutator>
                <mutator>CONSTRUCTOR_CALLS</mutator>
                <mutator>FALSE_RETURNS</mutator>
                <mutator>INCREMENTS</mutator>
                <mutator>INVERT_NEGS</mutator>
                <mutator>MATH</mutator>
                <mutator>NEGATE_CONDITIONALS</mutator>
                <!-- result in 53 extra survived items, too much to keep in ignore list -->
                <!-- <mutator>REMOVE_CONDITIONALS</mutator> -->
                <mutator>TRUE_RETURNS</mutator>
                <mutator>VOID_METHOD_CALLS</mutator>
              </mutators>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.indentation.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.indentation.*</param>
              </targetTests>
              <excludedTestClasses>
                <param>*.Input*</param>
              </excludedTestClasses>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>97</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
              <outputFormats>${pitest.plugin.output.formats}</outputFormats>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-javadoc</id>
      <properties>
        <jacoco.skip>true</jacoco.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <mutators>
                <mutator>CONDITIONALS_BOUNDARY</mutator>
                <mutator>CONSTRUCTOR_CALLS</mutator>
                <mutator>INCREMENTS</mutator>
                <!-- Read reason of disablement at https://github.com/checkstyle/checkstyle/issues/11895 -->
                <!-- <mutator>INLINE_CONSTS</mutator> -->
                <mutator>INVERT_NEGS</mutator>
                <mutator>MATH</mutator>
                <mutator>NEGATE_CONDITIONALS</mutator>
                <mutator>NON_VOID_METHOD_CALLS</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_IF</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_IF</mutator>
                <mutator>VOID_METHOD_CALLS</mutator>
                <mutator>EXPERIMENTAL_ARGUMENT_PROPAGATION</mutator>
                <mutator>EXPERIMENTAL_BIG_DECIMAL</mutator>
                <mutator>EXPERIMENTAL_BIG_INTEGER</mutator>
                <mutator>EXPERIMENTAL_MEMBER_VARIABLE</mutator>
                <mutator>EXPERIMENTAL_NAKED_RECEIVER</mutator>
                <mutator>REMOVE_INCREMENTS</mutator>
                <mutator>EXPERIMENTAL_SWITCH</mutator>
                <mutator>REMOVE_SWITCH</mutator>
                <mutator>FALSE_RETURNS</mutator>
                <mutator>TRUE_RETURNS</mutator>
                <mutator>EMPTY_RETURNS</mutator>
                <mutator>NULL_RETURNS</mutator>
                <mutator>PRIMITIVE_RETURNS</mutator>
              </mutators>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.javadoc.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.javadoc.*</param>
                <!-- JavadocMetadataScraper extends AbstractJavadocCheck -->
                <param>com.puppycrawl.tools.checkstyle.meta.JavadocMetadataScraperTest</param>
              </targetTests>
              <excludedTestClasses>
                <param>*.Input*</param>
              </excludedTestClasses>
              <excludedMethods>
                <!-- destroy method was added in case module had to free up resources
                before ending, but currently it does ThreadLocal cleanup,
                to satisfy sonar violation. But right now checkstyle is not multi threading tool.
                Ones we start multi-threading implementation we should remove this exclude.
                If we remove this destroy we would have to remove all of them as they are chained
                together, so we just exclude it from pitest check. -->
                <param>destroy</param>
              </excludedMethods>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>96</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
              <outputFormats>${pitest.plugin.output.formats}</outputFormats>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-metrics</id>
      <properties>
        <jacoco.skip>true</jacoco.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <mutators>
                <mutator>CONDITIONALS_BOUNDARY</mutator>
                <mutator>CONSTRUCTOR_CALLS</mutator>
                <mutator>INCREMENTS</mutator>
                <!-- Read reason of disablement at https://github.com/checkstyle/checkstyle/issues/11895 -->
                <!-- <mutator>INLINE_CONSTS</mutator> -->
                <mutator>INVERT_NEGS</mutator>
                <mutator>MATH</mutator>
                <mutator>NEGATE_CONDITIONALS</mutator>
                <mutator>NON_VOID_METHOD_CALLS</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_IF</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_IF</mutator>
                <mutator>VOID_METHOD_CALLS</mutator>
                <mutator>EXPERIMENTAL_ARGUMENT_PROPAGATION</mutator>
                <mutator>EXPERIMENTAL_BIG_DECIMAL</mutator>
                <mutator>EXPERIMENTAL_BIG_INTEGER</mutator>
                <mutator>EXPERIMENTAL_MEMBER_VARIABLE</mutator>
                <mutator>EXPERIMENTAL_NAKED_RECEIVER</mutator>
                <mutator>REMOVE_INCREMENTS</mutator>
                <mutator>EXPERIMENTAL_SWITCH</mutator>
                <mutator>REMOVE_SWITCH</mutator>
                <mutator>FALSE_RETURNS</mutator>
                <mutator>TRUE_RETURNS</mutator>
                <mutator>EMPTY_RETURNS</mutator>
                <mutator>NULL_RETURNS</mutator>
                <mutator>PRIMITIVE_RETURNS</mutator>
              </mutators>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.metrics.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.metrics.*</param>
              </targetTests>
              <excludedTestClasses>
                <param>*.Input*</param>
              </excludedTestClasses>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>100</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
              <outputFormats>${pitest.plugin.output.formats}</outputFormats>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-modifier</id>
      <properties>
        <jacoco.skip>true</jacoco.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <mutators>
                <mutator>CONDITIONALS_BOUNDARY</mutator>
                <mutator>CONSTRUCTOR_CALLS</mutator>
                <mutator>INCREMENTS</mutator>
                <!-- Read reason of disablement at https://github.com/checkstyle/checkstyle/issues/11895 -->
                <!-- <mutator>INLINE_CONSTS</mutator> -->
                <mutator>INVERT_NEGS</mutator>
                <mutator>MATH</mutator>
                <mutator>NEGATE_CONDITIONALS</mutator>
                <mutator>NON_VOID_METHOD_CALLS</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_IF</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_IF</mutator>
                <mutator>VOID_METHOD_CALLS</mutator>
                <mutator>EXPERIMENTAL_ARGUMENT_PROPAGATION</mutator>
                <mutator>EXPERIMENTAL_BIG_DECIMAL</mutator>
                <mutator>EXPERIMENTAL_BIG_INTEGER</mutator>
                <mutator>EXPERIMENTAL_MEMBER_VARIABLE</mutator>
                <mutator>EXPERIMENTAL_NAKED_RECEIVER</mutator>
                <mutator>REMOVE_INCREMENTS</mutator>
                <mutator>EXPERIMENTAL_SWITCH</mutator>
                <mutator>REMOVE_SWITCH</mutator>
                <mutator>FALSE_RETURNS</mutator>
                <mutator>TRUE_RETURNS</mutator>
                <mutator>EMPTY_RETURNS</mutator>
                <mutator>NULL_RETURNS</mutator>
                <mutator>PRIMITIVE_RETURNS</mutator>
              </mutators>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.modifier.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.modifier.*</param>
              </targetTests>
              <excludedTestClasses>
                <param>*.Input*</param>
              </excludedTestClasses>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>100</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
              <outputFormats>${pitest.plugin.output.formats}</outputFormats>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-naming</id>
      <properties>
        <jacoco.skip>true</jacoco.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <mutators>
                <mutator>CONDITIONALS_BOUNDARY</mutator>
                <mutator>CONSTRUCTOR_CALLS</mutator>
                <mutator>INCREMENTS</mutator>
                <!-- Read reason of disablement at https://github.com/checkstyle/checkstyle/issues/11895 -->
                <!-- <mutator>INLINE_CONSTS</mutator> -->
                <mutator>INVERT_NEGS</mutator>
                <mutator>MATH</mutator>
                <mutator>NEGATE_CONDITIONALS</mutator>
                <mutator>NON_VOID_METHOD_CALLS</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_IF</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_IF</mutator>
                <mutator>VOID_METHOD_CALLS</mutator>
                <mutator>EXPERIMENTAL_ARGUMENT_PROPAGATION</mutator>
                <mutator>EXPERIMENTAL_BIG_DECIMAL</mutator>
                <mutator>EXPERIMENTAL_BIG_INTEGER</mutator>
                <mutator>EXPERIMENTAL_MEMBER_VARIABLE</mutator>
                <mutator>EXPERIMENTAL_NAKED_RECEIVER</mutator>
                <mutator>REMOVE_INCREMENTS</mutator>
                <mutator>EXPERIMENTAL_SWITCH</mutator>
                <mutator>REMOVE_SWITCH</mutator>
                <mutator>FALSE_RETURNS</mutator>
                <mutator>TRUE_RETURNS</mutator>
                <mutator>EMPTY_RETURNS</mutator>
                <mutator>NULL_RETURNS</mutator>
                <mutator>PRIMITIVE_RETURNS</mutator>
              </mutators>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.naming.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.naming.*</param>
              </targetTests>
              <excludedTestClasses>
                <param>*.Input*</param>
              </excludedTestClasses>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>100</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
              <outputFormats>${pitest.plugin.output.formats}</outputFormats>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-regexp</id>
      <properties>
        <jacoco.skip>true</jacoco.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <mutators>
                <mutator>CONDITIONALS_BOUNDARY</mutator>
                <mutator>CONSTRUCTOR_CALLS</mutator>
                <mutator>INCREMENTS</mutator>
                <!-- Read reason of disablement at https://github.com/checkstyle/checkstyle/issues/11895 -->
                <!-- <mutator>INLINE_CONSTS</mutator> -->
                <mutator>INVERT_NEGS</mutator>
                <mutator>MATH</mutator>
                <mutator>NEGATE_CONDITIONALS</mutator>
                <mutator>NON_VOID_METHOD_CALLS</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_IF</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_IF</mutator>
                <mutator>VOID_METHOD_CALLS</mutator>
                <mutator>EXPERIMENTAL_ARGUMENT_PROPAGATION</mutator>
                <mutator>EXPERIMENTAL_BIG_DECIMAL</mutator>
                <mutator>EXPERIMENTAL_BIG_INTEGER</mutator>
                <mutator>EXPERIMENTAL_MEMBER_VARIABLE</mutator>
                <mutator>EXPERIMENTAL_NAKED_RECEIVER</mutator>
                <mutator>REMOVE_INCREMENTS</mutator>
                <mutator>EXPERIMENTAL_SWITCH</mutator>
                <mutator>REMOVE_SWITCH</mutator>
                <mutator>FALSE_RETURNS</mutator>
                <mutator>TRUE_RETURNS</mutator>
                <mutator>EMPTY_RETURNS</mutator>
                <mutator>NULL_RETURNS</mutator>
                <mutator>PRIMITIVE_RETURNS</mutator>
              </mutators>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.regexp.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.regexp.*</param>
              </targetTests>
              <excludedTestClasses>
                <param>*.Input*</param>
              </excludedTestClasses>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>98</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
              <outputFormats>${pitest.plugin.output.formats}</outputFormats>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-sizes</id>
      <properties>
        <jacoco.skip>true</jacoco.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <mutators>
                <mutator>CONDITIONALS_BOUNDARY</mutator>
                <mutator>CONSTRUCTOR_CALLS</mutator>
                <mutator>INCREMENTS</mutator>
                <!-- Read reason of disablement at https://github.com/checkstyle/checkstyle/issues/11895 -->
                <!-- <mutator>INLINE_CONSTS</mutator> -->
                <mutator>INVERT_NEGS</mutator>
                <mutator>MATH</mutator>
                <mutator>NEGATE_CONDITIONALS</mutator>
                <mutator>NON_VOID_METHOD_CALLS</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_IF</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_IF</mutator>
                <mutator>VOID_METHOD_CALLS</mutator>
                <mutator>EXPERIMENTAL_ARGUMENT_PROPAGATION</mutator>
                <mutator>EXPERIMENTAL_BIG_DECIMAL</mutator>
                <mutator>EXPERIMENTAL_BIG_INTEGER</mutator>
                <mutator>EXPERIMENTAL_MEMBER_VARIABLE</mutator>
                <mutator>EXPERIMENTAL_NAKED_RECEIVER</mutator>
                <mutator>REMOVE_INCREMENTS</mutator>
                <mutator>EXPERIMENTAL_SWITCH</mutator>
                <mutator>REMOVE_SWITCH</mutator>
                <mutator>FALSE_RETURNS</mutator>
                <mutator>TRUE_RETURNS</mutator>
                <mutator>EMPTY_RETURNS</mutator>
                <mutator>NULL_RETURNS</mutator>
                <mutator>PRIMITIVE_RETURNS</mutator>
              </mutators>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.sizes.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.sizes.*</param>
              </targetTests>
              <excludedTestClasses>
                <param>*.Input*</param>
              </excludedTestClasses>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>100</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
              <outputFormats>${pitest.plugin.output.formats}</outputFormats>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-whitespace</id>
      <properties>
        <jacoco.skip>true</jacoco.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <mutators>
                <mutator>CONDITIONALS_BOUNDARY</mutator>
                <mutator>CONSTRUCTOR_CALLS</mutator>
                <mutator>INCREMENTS</mutator>
                <!-- Read reason of disablement at https://github.com/checkstyle/checkstyle/issues/11895 -->
                <!-- <mutator>INLINE_CONSTS</mutator> -->
                <mutator>INVERT_NEGS</mutator>
                <mutator>MATH</mutator>
                <mutator>NEGATE_CONDITIONALS</mutator>
                <mutator>NON_VOID_METHOD_CALLS</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_IF</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_IF</mutator>
                <mutator>VOID_METHOD_CALLS</mutator>
                <mutator>EXPERIMENTAL_ARGUMENT_PROPAGATION</mutator>
                <mutator>EXPERIMENTAL_BIG_DECIMAL</mutator>
                <mutator>EXPERIMENTAL_BIG_INTEGER</mutator>
                <mutator>EXPERIMENTAL_MEMBER_VARIABLE</mutator>
                <mutator>EXPERIMENTAL_NAKED_RECEIVER</mutator>
                <mutator>REMOVE_INCREMENTS</mutator>
                <mutator>EXPERIMENTAL_SWITCH</mutator>
                <mutator>REMOVE_SWITCH</mutator>
                <mutator>FALSE_RETURNS</mutator>
                <mutator>TRUE_RETURNS</mutator>
                <mutator>EMPTY_RETURNS</mutator>
                <mutator>NULL_RETURNS</mutator>
                <mutator>PRIMITIVE_RETURNS</mutator>
              </mutators>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.checks.whitespace.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.checks.whitespace.*</param>
              </targetTests>
              <excludedTestClasses>
                <param>*.Input*</param>
              </excludedTestClasses>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>100</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
              <outputFormats>${pitest.plugin.output.formats}</outputFormats>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <!-- Non-checks code profiles -->
    <profile>
      <id>pitest-ant</id>
      <properties>
        <jacoco.skip>true</jacoco.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <mutators>
                <mutator>CONDITIONALS_BOUNDARY</mutator>
                <mutator>CONSTRUCTOR_CALLS</mutator>
                <mutator>INCREMENTS</mutator>
                <!-- Read reason of disablement at https://github.com/checkstyle/checkstyle/issues/11895 -->
                <!-- <mutator>INLINE_CONSTS</mutator> -->
                <mutator>INVERT_NEGS</mutator>
                <mutator>MATH</mutator>
                <mutator>NEGATE_CONDITIONALS</mutator>
                <mutator>NON_VOID_METHOD_CALLS</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_IF</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_IF</mutator>
                <mutator>VOID_METHOD_CALLS</mutator>
                <mutator>EXPERIMENTAL_ARGUMENT_PROPAGATION</mutator>
                <mutator>EXPERIMENTAL_BIG_DECIMAL</mutator>
                <mutator>EXPERIMENTAL_BIG_INTEGER</mutator>
                <mutator>EXPERIMENTAL_MEMBER_VARIABLE</mutator>
                <mutator>EXPERIMENTAL_NAKED_RECEIVER</mutator>
                <mutator>REMOVE_INCREMENTS</mutator>
                <mutator>EXPERIMENTAL_SWITCH</mutator>
                <mutator>REMOVE_SWITCH</mutator>
                <mutator>FALSE_RETURNS</mutator>
                <mutator>TRUE_RETURNS</mutator>
                <mutator>EMPTY_RETURNS</mutator>
                <mutator>NULL_RETURNS</mutator>
                <mutator>PRIMITIVE_RETURNS</mutator>
              </mutators>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.ant.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.ant.*</param>
              </targetTests>
              <excludedTestClasses>
                <param>*.Input*</param>
              </excludedTestClasses>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>92</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
              <outputFormats>${pitest.plugin.output.formats}</outputFormats>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-packagenamesloader</id>
      <properties>
        <jacoco.skip>true</jacoco.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <mutators>
                <mutator>CONDITIONALS_BOUNDARY</mutator>
                <mutator>CONSTRUCTOR_CALLS</mutator>
                <mutator>INCREMENTS</mutator>
                <!-- Read reason of disablement at https://github.com/checkstyle/checkstyle/issues/11895 -->
                <!-- <mutator>INLINE_CONSTS</mutator> -->
                <mutator>INVERT_NEGS</mutator>
                <mutator>MATH</mutator>
                <mutator>NEGATE_CONDITIONALS</mutator>
                <mutator>NON_VOID_METHOD_CALLS</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_IF</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_IF</mutator>
                <mutator>VOID_METHOD_CALLS</mutator>
                <mutator>EXPERIMENTAL_ARGUMENT_PROPAGATION</mutator>
                <mutator>EXPERIMENTAL_BIG_DECIMAL</mutator>
                <mutator>EXPERIMENTAL_BIG_INTEGER</mutator>
                <mutator>EXPERIMENTAL_MEMBER_VARIABLE</mutator>
                <mutator>EXPERIMENTAL_NAKED_RECEIVER</mutator>
                <mutator>REMOVE_INCREMENTS</mutator>
                <mutator>EXPERIMENTAL_SWITCH</mutator>
                <mutator>REMOVE_SWITCH</mutator>
                <mutator>FALSE_RETURNS</mutator>
                <mutator>TRUE_RETURNS</mutator>
                <mutator>EMPTY_RETURNS</mutator>
                <mutator>NULL_RETURNS</mutator>
                <mutator>PRIMITIVE_RETURNS</mutator>
              </mutators>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.PackageNamesLoader*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.PackageNamesLoaderTest</param>
              </targetTests>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>90</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
              <outputFormats>${pitest.plugin.output.formats}</outputFormats>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-common</id>
      <properties>
        <jacoco.skip>true</jacoco.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <mutators>
                <mutator>CONDITIONALS_BOUNDARY</mutator>
                <mutator>CONSTRUCTOR_CALLS</mutator>
                <mutator>INCREMENTS</mutator>
                <!-- Read reason of disablement at https://github.com/checkstyle/checkstyle/issues/11895 -->
                <!-- <mutator>INLINE_CONSTS</mutator> -->
                <mutator>INVERT_NEGS</mutator>
                <mutator>MATH</mutator>
                <mutator>NEGATE_CONDITIONALS</mutator>
                <mutator>NON_VOID_METHOD_CALLS</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_IF</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_IF</mutator>
                <mutator>VOID_METHOD_CALLS</mutator>
                <mutator>EXPERIMENTAL_ARGUMENT_PROPAGATION</mutator>
                <mutator>EXPERIMENTAL_BIG_DECIMAL</mutator>
                <mutator>EXPERIMENTAL_BIG_INTEGER</mutator>
                <mutator>EXPERIMENTAL_MEMBER_VARIABLE</mutator>
                <mutator>EXPERIMENTAL_NAKED_RECEIVER</mutator>
                <mutator>REMOVE_INCREMENTS</mutator>
                <mutator>EXPERIMENTAL_SWITCH</mutator>
                <mutator>REMOVE_SWITCH</mutator>
                <mutator>FALSE_RETURNS</mutator>
                <mutator>TRUE_RETURNS</mutator>
                <mutator>EMPTY_RETURNS</mutator>
                <mutator>NULL_RETURNS</mutator>
                <mutator>PRIMITIVE_RETURNS</mutator>
              </mutators>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.AuditEventDefaultFormatter*</param>
                <param>com.puppycrawl.tools.checkstyle.ConfigurationLoader*</param>
                <param>com.puppycrawl.tools.checkstyle.DefaultConfiguration*</param>
                <param>com.puppycrawl.tools.checkstyle.DefaultContext*</param>
                <param>com.puppycrawl.tools.checkstyle.DefaultLogger*</param>
                <param>com.puppycrawl.tools.checkstyle.Definitions*</param>
                <param>com.puppycrawl.tools.checkstyle.LocalizedMessage*</param>
                <param>com.puppycrawl.tools.checkstyle.XMLLogger*</param>
                <param>com.puppycrawl.tools.checkstyle.SarifLogger*</param>
                <param>com.puppycrawl.tools.checkstyle.MetadataGeneratorLogger*</param>
                <param>com.puppycrawl.tools.checkstyle.PackageObjectFactory*</param>
                <param>com.puppycrawl.tools.checkstyle.PropertiesExpander*</param>
                <param>com.puppycrawl.tools.checkstyle.PropertyCacheFile*</param>
                <param>com.puppycrawl.tools.checkstyle.Checker*</param>
                <param>com.puppycrawl.tools.checkstyle.ThreadModeSettings*</param>
                <param>com.puppycrawl.tools.checkstyle.grammar.CrAwareLexerSimulator*</param>
                <!-- interfaces -->
                <param>com.puppycrawl.tools.checkstyle.AuditEventFormatter*</param>
                <param>com.puppycrawl.tools.checkstyle.XdocsPropertyType*</param>
                <param>com.puppycrawl.tools.checkstyle.PropertyType*</param>
                <param>com.puppycrawl.tools.checkstyle.FileStatefulCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.ModuleFactory*</param>
                <param>com.puppycrawl.tools.checkstyle.PropertyResolver*</param>
                <param>com.puppycrawl.tools.checkstyle.StatelessCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.TreeWalkerFilter*</param>
                <param>com.puppycrawl.tools.checkstyle.GlobalStatefulCheck*</param>
                <param>com.puppycrawl.tools.checkstyle.grammar.CommentListener*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.AuditEventDefaultFormatterTest</param>
                <param>com.puppycrawl.tools.checkstyle.XdocsPropertyTypeTest</param>
                <param>com.puppycrawl.tools.checkstyle.ConfigurationLoaderTest</param>
                <param>com.puppycrawl.tools.checkstyle.DefaultConfigurationTest</param>
                <param>com.puppycrawl.tools.checkstyle.DefaultLoggerTest</param>
                <param>com.puppycrawl.tools.checkstyle.DefinitionsTest</param>
                <param>com.puppycrawl.tools.checkstyle.LocalizedMessageTest</param>
                <param>com.puppycrawl.tools.checkstyle.XMLLoggerTest</param>
                <param>com.puppycrawl.tools.checkstyle.SarifLoggerTest</param>
                <param>com.puppycrawl.tools.checkstyle.MetadataGeneratorLoggerTest</param>
                <param>com.puppycrawl.tools.checkstyle.PackageObjectFactoryTest</param>
                <param>com.puppycrawl.tools.checkstyle.PropertiesExpanderTest</param>
                <param>com.puppycrawl.tools.checkstyle.PropertyCacheFileTest</param>
                <param>com.puppycrawl.tools.checkstyle.CheckerTest</param>
                <param>com.puppycrawl.tools.checkstyle.ThreadModeSettingsTest</param>
                <param>com.puppycrawl.tools.checkstyle.grammar.CrAwareLexerSimulatorTest</param>
                <param>com.puppycrawl.tools.checkstyle.grammar.javadoc.JavadocParseTreeTest</param>
                <!-- this test is required for Checker -->
                <param>com.puppycrawl.tools.checkstyle.filefilters.BeforeExecutionExclusionFileFilterTest</param>
                <!-- This test is the primary user of metadataGeneratorLogger -->
                <param>com.puppycrawl.tools.checkstyle.meta.MetadataGeneratorUtilTest</param>
              </targetTests>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>96</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
              <outputFormats>${pitest.plugin.output.formats}</outputFormats>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-common-2</id>
      <properties>
        <jacoco.skip>true</jacoco.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <mutators>
                <mutator>CONDITIONALS_BOUNDARY</mutator>
                <mutator>CONSTRUCTOR_CALLS</mutator>
                <mutator>INCREMENTS</mutator>
                <!-- Read reason of disablement at https://github.com/checkstyle/checkstyle/issues/11895 -->
                <!-- <mutator>INLINE_CONSTS</mutator> -->
                <mutator>INVERT_NEGS</mutator>
                <mutator>MATH</mutator>
                <mutator>NEGATE_CONDITIONALS</mutator>
                <mutator>NON_VOID_METHOD_CALLS</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_IF</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_IF</mutator>
                <mutator>VOID_METHOD_CALLS</mutator>
                <mutator>EXPERIMENTAL_ARGUMENT_PROPAGATION</mutator>
                <mutator>EXPERIMENTAL_BIG_DECIMAL</mutator>
                <mutator>EXPERIMENTAL_BIG_INTEGER</mutator>
                <mutator>EXPERIMENTAL_MEMBER_VARIABLE</mutator>
                <mutator>EXPERIMENTAL_NAKED_RECEIVER</mutator>
                <mutator>REMOVE_INCREMENTS</mutator>
                <mutator>EXPERIMENTAL_SWITCH</mutator>
                <mutator>REMOVE_SWITCH</mutator>
                <mutator>FALSE_RETURNS</mutator>
                <mutator>TRUE_RETURNS</mutator>
                <mutator>EMPTY_RETURNS</mutator>
                <mutator>NULL_RETURNS</mutator>
                <mutator>PRIMITIVE_RETURNS</mutator>
              </mutators>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.DetailAstImpl*</param>
                <param>com.puppycrawl.tools.checkstyle.JavadocPropertiesGenerator*</param>
                <param>com.puppycrawl.tools.checkstyle.XmlLoader*</param>
                <param>com.puppycrawl.tools.checkstyle.JavaParser*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.DetailAstImplTest</param>
                <param>com.puppycrawl.tools.checkstyle.JavadocPropertiesGeneratorTest</param>
                <param>com.puppycrawl.tools.checkstyle.XmlLoaderTest</param>
                <param>com.puppycrawl.tools.checkstyle.JavaParserTest</param>
                <param>com.puppycrawl.tools.checkstyle.MainTest</param>
                <param>com.puppycrawl.tools.checkstyle.utils.CheckUtilTest</param>
                <!-- these tests are required for xml loader -->
                <param>com.puppycrawl.tools.checkstyle.filters.SuppressionsLoaderTest</param>
                <param>com.puppycrawl.tools.checkstyle.ConfigurationLoaderTest</param>
              </targetTests>
              <excludedMethods>
                <!-- cause of https://github.com/checkstyle/checkstyle/issues/3605 -->
                <param>setFeaturesBySystemProperty</param>
              </excludedMethods>
              <avoidCallsTo>
                <!-- cause of https://github.com/checkstyle/checkstyle/issues/3605 -->
                <avoidCallsTo>
                  com.puppycrawl.tools.checkstyle.XmlLoader$LoadExternalDtdFeatureProvider
                </avoidCallsTo>
              </avoidCallsTo>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>96</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
              <outputFormats>${pitest.plugin.output.formats}</outputFormats>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-main</id>
      <properties>
        <jacoco.skip>true</jacoco.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <mutators>
                <mutator>CONDITIONALS_BOUNDARY</mutator>
                <mutator>CONSTRUCTOR_CALLS</mutator>
                <mutator>INCREMENTS</mutator>
                <!-- Read reason of disablement at https://github.com/checkstyle/checkstyle/issues/11895 -->
                <!-- <mutator>INLINE_CONSTS</mutator> -->
                <mutator>INVERT_NEGS</mutator>
                <mutator>MATH</mutator>
                <mutator>NEGATE_CONDITIONALS</mutator>
                <mutator>NON_VOID_METHOD_CALLS</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_IF</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_IF</mutator>
                <mutator>VOID_METHOD_CALLS</mutator>
                <mutator>EXPERIMENTAL_ARGUMENT_PROPAGATION</mutator>
                <mutator>EXPERIMENTAL_BIG_DECIMAL</mutator>
                <mutator>EXPERIMENTAL_BIG_INTEGER</mutator>
                <mutator>EXPERIMENTAL_MEMBER_VARIABLE</mutator>
                <mutator>EXPERIMENTAL_NAKED_RECEIVER</mutator>
                <mutator>REMOVE_INCREMENTS</mutator>
                <mutator>EXPERIMENTAL_SWITCH</mutator>
                <mutator>REMOVE_SWITCH</mutator>
                <mutator>FALSE_RETURNS</mutator>
                <mutator>TRUE_RETURNS</mutator>
                <mutator>EMPTY_RETURNS</mutator>
                <mutator>NULL_RETURNS</mutator>
                <mutator>PRIMITIVE_RETURNS</mutator>
              </mutators>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.Main*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.MainTest</param>
              </targetTests>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>99</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
              <outputFormats>${pitest.plugin.output.formats}</outputFormats>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-tree-walker</id>
      <properties>
        <jacoco.skip>true</jacoco.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <mutators>
                <mutator>CONDITIONALS_BOUNDARY</mutator>
                <mutator>CONSTRUCTOR_CALLS</mutator>
                <mutator>INCREMENTS</mutator>
                <!-- Read reason of disablement at https://github.com/checkstyle/checkstyle/issues/11895 -->
                <!-- <mutator>INLINE_CONSTS</mutator> -->
                <mutator>INVERT_NEGS</mutator>
                <mutator>MATH</mutator>
                <mutator>NEGATE_CONDITIONALS</mutator>
                <mutator>NON_VOID_METHOD_CALLS</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_IF</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_IF</mutator>
                <mutator>VOID_METHOD_CALLS</mutator>
                <mutator>EXPERIMENTAL_ARGUMENT_PROPAGATION</mutator>
                <mutator>EXPERIMENTAL_BIG_DECIMAL</mutator>
                <mutator>EXPERIMENTAL_BIG_INTEGER</mutator>
                <mutator>EXPERIMENTAL_MEMBER_VARIABLE</mutator>
                <mutator>EXPERIMENTAL_NAKED_RECEIVER</mutator>
                <mutator>REMOVE_INCREMENTS</mutator>
                <mutator>EXPERIMENTAL_SWITCH</mutator>
                <mutator>REMOVE_SWITCH</mutator>
                <mutator>FALSE_RETURNS</mutator>
                <mutator>TRUE_RETURNS</mutator>
                <mutator>EMPTY_RETURNS</mutator>
                <mutator>NULL_RETURNS</mutator>
                <mutator>PRIMITIVE_RETURNS</mutator>
              </mutators>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.JavadocDetailNodeParser*</param>
                <param>com.puppycrawl.tools.checkstyle.DetailNodeTreeStringPrinter*</param>
                <param>com.puppycrawl.tools.checkstyle.AstTreeStringPrinter*</param>
                <param>com.puppycrawl.tools.checkstyle.SuppressionsStringPrinter*</param>
                <param>com.puppycrawl.tools.checkstyle.TreeWalker*</param>
                <param>com.puppycrawl.tools.checkstyle.TreeWalkerAuditEvent*</param>
                <param>com.puppycrawl.tools.checkstyle.CheckstyleParserErrorStrategy*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.DetailNodeTreeStringPrinterTest</param>
                <param>com.puppycrawl.tools.checkstyle.AstTreeStringPrinterTest</param>
                <param>com.puppycrawl.tools.checkstyle.SuppressionsStringPrinterTest</param>
                <param>com.puppycrawl.tools.checkstyle.TreeWalkerTest</param>
                <param>
                  com.puppycrawl.tools.checkstyle.checks.coding.PackageDeclarationCheckTest
                </param>
                <param>com.puppycrawl.tools.checkstyle.checks.imports.ImportControlCheckTest</param>
                <param>
                  com.puppycrawl.tools.checkstyle.checks.indentation.IndentationCheckTest
                </param>
                <param>com.puppycrawl.tools.checkstyle.checks.javadoc.*</param>
                <param>
                  com.puppycrawl.tools.checkstyle.checks.metrics.ClassDataAbstractionCouplingCheckTest
                </param>
                <param>com.puppycrawl.tools.checkstyle.checks.naming.TypeNameCheckTest</param>
                <param>
                  com.puppycrawl.tools.checkstyle.checks.regexp.RegexpSinglelineJavaCheckTest
                </param>
                <param>com.puppycrawl.tools.checkstyle.checks.sizes.MethodCountCheckTest</param>
                <param>
                  com.puppycrawl.tools.checkstyle.checks.whitespace.SingleSpaceSeparatorCheckTest
                </param>
                <param>
                  com.puppycrawl.tools.checkstyle.checks.whitespace.EmptyLineSeparatorCheckTest
                </param>
                <param>com.puppycrawl.tools.checkstyle.filters.SuppressionCommentFilterTest</param>
              </targetTests>
              <excludedTestClasses>
                <param>*.Input*</param>
              </excludedTestClasses>
              <excludedMethods>
                <!-- destroy method was added in case module had to free up resources
                before ending, but currently it does ThreadLocal cleanup,
                to satisfy sonar violation. But right now checkstyle is not multi threading tool.
                Ones we start multi-threading implementation we should remove this exclude.
                If we remove this destroy we would have to remove all of them as they are chained
                together, so we just exclude it from pitest check. -->
                <param>destroy</param>
              </excludedMethods>
              <avoidCallsTo>
                <!-- CheckstyleParserErrorStrategy calls super to handle
                error which always results in throwing exception. There is no clear way to kill
                mutation on it as mutation is only looking at the non-existent return value. -->
                <avoidCallsTo>
                  org.antlr.v4.runtime.BailErrorStrategy
                </avoidCallsTo>
              </avoidCallsTo>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>98</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
              <outputFormats>${pitest.plugin.output.formats}</outputFormats>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-api</id>
      <properties>
        <jacoco.skip>true</jacoco.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <mutators>
                <mutator>CONDITIONALS_BOUNDARY</mutator>
                <mutator>CONSTRUCTOR_CALLS</mutator>
                <mutator>INCREMENTS</mutator>
                <!-- Read reason of disablement at https://github.com/checkstyle/checkstyle/issues/11895 -->
                <!-- <mutator>INLINE_CONSTS</mutator> -->
                <mutator>INVERT_NEGS</mutator>
                <mutator>MATH</mutator>
                <mutator>NEGATE_CONDITIONALS</mutator>
                <mutator>NON_VOID_METHOD_CALLS</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_IF</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_IF</mutator>
                <mutator>VOID_METHOD_CALLS</mutator>
                <mutator>EXPERIMENTAL_ARGUMENT_PROPAGATION</mutator>
                <mutator>EXPERIMENTAL_BIG_DECIMAL</mutator>
                <mutator>EXPERIMENTAL_BIG_INTEGER</mutator>
                <mutator>EXPERIMENTAL_MEMBER_VARIABLE</mutator>
                <mutator>EXPERIMENTAL_NAKED_RECEIVER</mutator>
                <mutator>REMOVE_INCREMENTS</mutator>
                <mutator>EXPERIMENTAL_SWITCH</mutator>
                <mutator>REMOVE_SWITCH</mutator>
                <mutator>FALSE_RETURNS</mutator>
                <mutator>TRUE_RETURNS</mutator>
                <mutator>EMPTY_RETURNS</mutator>
                <mutator>NULL_RETURNS</mutator>
                <mutator>PRIMITIVE_RETURNS</mutator>
              </mutators>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.api.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.api.*</param>
                <!-- 1% mutation in FullIdent -->
                <param>com.puppycrawl.tools.checkstyle.checks.coding.UnusedLocalVariableCheckTest</param>
                <!-- 1% mutation in CheckUtil -->
                <param>com.puppycrawl.tools.checkstyle.checks.OuterTypeFilenameCheckTest</param>
                <param>org.checkstyle.suppressionxpathfilter.XpathRegressionUnusedLocalVariableTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.javadoc.SummaryJavadocCheckTest</param>
                <param>org.checkstyle.suppressionxpathfilter.XpathRegressionJavadocMethodTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocMethodCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.filters.SuppressWithPlainTextCommentFilterTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.whitespace.FileTabCharacterCheckTest</param>
                <param>com.puppycrawl.tools.checkstyle.checks.NewlineAtEndOfFileCheckTest</param>
                <!-- kills mutation in AutomaticBean -->
                <param>com.puppycrawl.tools.checkstyle.checks.naming.ParameterNameCheckTest</param>
                <!-- kills mutation in AutomaticBean -->
                <param>com.puppycrawl.tools.checkstyle.checks.coding.IllegalTypeCheckTest</param>
              </targetTests>
              <excludedTestClasses>
                <param>*.Input*</param>
              </excludedTestClasses>
              <excludedMethods>
                <!-- destroy method was added in case module had to free up resources
                before ending, but currently it does ThreadLocal cleanup,
                to satisfy sonar violation. But right now checkstyle is not multi threading tool.
                Ones we start multi-threading implementation we should remove this exclude.
                If we remove this destroy we would have to remove all of them as they are chained
                together, so we just exclude it from pitest check. -->
                <param>destroy</param>
              </excludedMethods>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>97</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
              <outputFormats>${pitest.plugin.output.formats}</outputFormats>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-filters</id>
      <properties>
        <jacoco.skip>true</jacoco.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <mutators>
                <mutator>CONDITIONALS_BOUNDARY</mutator>
                <mutator>CONSTRUCTOR_CALLS</mutator>
                <mutator>INCREMENTS</mutator>
                <!-- Read reason of disablement at https://github.com/checkstyle/checkstyle/issues/11895 -->
                <!-- <mutator>INLINE_CONSTS</mutator> -->
                <mutator>INVERT_NEGS</mutator>
                <mutator>MATH</mutator>
                <mutator>NEGATE_CONDITIONALS</mutator>
                <mutator>NON_VOID_METHOD_CALLS</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_IF</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_IF</mutator>
                <mutator>VOID_METHOD_CALLS</mutator>
                <mutator>EXPERIMENTAL_ARGUMENT_PROPAGATION</mutator>
                <mutator>EXPERIMENTAL_BIG_DECIMAL</mutator>
                <mutator>EXPERIMENTAL_BIG_INTEGER</mutator>
                <mutator>EXPERIMENTAL_MEMBER_VARIABLE</mutator>
                <mutator>EXPERIMENTAL_NAKED_RECEIVER</mutator>
                <mutator>REMOVE_INCREMENTS</mutator>
                <mutator>EXPERIMENTAL_SWITCH</mutator>
                <mutator>REMOVE_SWITCH</mutator>
                <mutator>FALSE_RETURNS</mutator>
                <mutator>TRUE_RETURNS</mutator>
                <mutator>EMPTY_RETURNS</mutator>
                <mutator>NULL_RETURNS</mutator>
                <mutator>PRIMITIVE_RETURNS</mutator>
              </mutators>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.filefilters.*</param>
                <param>com.puppycrawl.tools.checkstyle.filters.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.filefilters.*</param>
                <param>com.puppycrawl.tools.checkstyle.filters.*</param>
              </targetTests>
              <excludedTestClasses>
                <param>*.Input*</param>
              </excludedTestClasses>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>94</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
              <outputFormats>${pitest.plugin.output.formats}</outputFormats>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-utils</id>
      <properties>
        <jacoco.skip>true</jacoco.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <mutators>
                <mutator>CONDITIONALS_BOUNDARY</mutator>
                <mutator>CONSTRUCTOR_CALLS</mutator>
                <mutator>INCREMENTS</mutator>
                <!-- Read reason of disablement at https://github.com/checkstyle/checkstyle/issues/11895 -->
                <!-- <mutator>INLINE_CONSTS</mutator> -->
                <mutator>INVERT_NEGS</mutator>
                <mutator>MATH</mutator>
                <mutator>NEGATE_CONDITIONALS</mutator>
                <mutator>NON_VOID_METHOD_CALLS</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_IF</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_IF</mutator>
                <mutator>VOID_METHOD_CALLS</mutator>
                <mutator>EXPERIMENTAL_ARGUMENT_PROPAGATION</mutator>
                <mutator>EXPERIMENTAL_BIG_DECIMAL</mutator>
                <mutator>EXPERIMENTAL_BIG_INTEGER</mutator>
                <mutator>EXPERIMENTAL_MEMBER_VARIABLE</mutator>
                <mutator>EXPERIMENTAL_NAKED_RECEIVER</mutator>
                <mutator>REMOVE_INCREMENTS</mutator>
                <mutator>EXPERIMENTAL_SWITCH</mutator>
                <mutator>REMOVE_SWITCH</mutator>
                <mutator>FALSE_RETURNS</mutator>
                <mutator>TRUE_RETURNS</mutator>
                <mutator>EMPTY_RETURNS</mutator>
                <mutator>NULL_RETURNS</mutator>
                <mutator>PRIMITIVE_RETURNS</mutator>
              </mutators>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.utils.*</param>
              </targetClasses>
              <excludedMethods>
                <!-- unkilled in generated code https://github.com/hcoles/pitest/issues/255 -->
                <param>isFileExists</param>
              </excludedMethods>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.utils.*</param>
                <!-- 12% mutation in CommonUtil,
                     3% coverage in CommonUtil, 2% coverage in JavadocUtil -->
                <param>com.puppycrawl.tools.checkstyle.AstTreeStringPrinterTest</param>
                <!-- 1% mutation in CommonUtil.getUriByFilename -->
                <param>com.puppycrawl.tools.checkstyle.ConfigurationLoaderTest</param>
                <!-- 2% mutation in CommonUtil -->
                <param>com.puppycrawl.tools.checkstyle.DetailNodeTreeStringPrinterTest</param>
                <!-- ModuleReflectionUtil -->
                <param>com.puppycrawl.tools.checkstyle.PackageObjectFactoryTest</param>
                <!-- 3% coverage in BlockCommentPosition,
                     11% mutation in JavadocUtil, 10% coverage in JavadocUtil, ScopeUtil -->
                <param>
                  com.puppycrawl.tools.checkstyle.checks.javadoc.AbstractJavadocCheckTest
                </param>
                <param>
                  com.puppycrawl.tools.checkstyle.checks.AvoidEscapedUnicodeCharactersCheckTest
                </param>
                <param>
                  com.puppycrawl.tools.checkstyle.checks.whitespace.SingleSpaceSeparatorCheckTest
                </param>
                <!-- 35% coverage, 29% mutation in CodePointUtil -->
                <param>
                  com.puppycrawl.tools.checkstyle.checks.whitespace.SeparatorWrapCheckTest
                </param>
                <!-- 2% mutation in ScopeUtil -->
                <param>
                  com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocStyleCheckTest
                </param>
                <param>
                  com.puppycrawl.tools.checkstyle.checks.javadoc.SingleLineJavadocCheckTest
                </param>
                <param>
                  com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocVariableCheckTest
                </param>
                <!-- 1% mutation in ScopeUtil -->
                <param>
                  com.puppycrawl.tools.checkstyle.checks.coding.DeclarationOrderCheckTest
                </param>
                <!-- TokenUtil#asBitSet -->
                <param>
                  com.puppycrawl.tools.checkstyle.checks.coding.MagicNumberCheckTest
                </param>
                <param>
                  com.puppycrawl.tools.checkstyle.checks.coding.MultipleStringLiteralsCheckTest
                </param>
                <param>
                  com.puppycrawl.tools.checkstyle.checks.coding.IllegalThrowsCheckTest
                </param>
                <param>
                  com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocMethodCheckTest
                </param>
                <param>
                  com.puppycrawl.tools.checkstyle.checks.OuterTypeFilenameCheckTest
                </param>
                <param>
                  com.puppycrawl.tools.checkstyle.checks.coding.UnusedLocalVariableCheckTest
                </param>
                <param>
                  com.puppycrawl.tools.checkstyle.checks.design.FinalClassCheckTest
                </param>
              </targetTests>
              <excludedTestClasses>
                <param>*.Input*</param>
              </excludedTestClasses>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>96</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
              <outputFormats>${pitest.plugin.output.formats}</outputFormats>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-gui</id>
      <properties>
        <jacoco.skip>true</jacoco.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <mutators>
                <mutator>CONDITIONALS_BOUNDARY</mutator>
                <mutator>CONSTRUCTOR_CALLS</mutator>
                <mutator>FALSE_RETURNS</mutator>
                <mutator>INCREMENTS</mutator>
                <mutator>INVERT_NEGS</mutator>
                <mutator>MATH</mutator>
                <mutator>NEGATE_CONDITIONALS</mutator>
                <mutator>REMOVE_CONDITIONALS</mutator>
                <mutator>TRUE_RETURNS</mutator>
                <mutator>VOID_METHOD_CALLS</mutator>
              </mutators>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.gui.*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.gui.*</param>
              </targetTests>
              <excludedTestClasses>
                <param>*.Input*</param>
              </excludedTestClasses>
              <coverageThreshold>40</coverageThreshold>
              <mutationThreshold>29</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
              <outputFormats>${pitest.plugin.output.formats}</outputFormats>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>eclipse-compiler</id>
      <dependencies>
        <dependency>
          <groupId>org.eclipse.jdt</groupId>
          <artifactId>org.eclipse.jdt.annotation</artifactId>
          <version>2.2.700</version>
        </dependency>
      </dependencies>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <configuration>
              <executable>.ci/eclipse-compiler-javac.sh</executable>
              <classpathScope>test</classpathScope>
              <arguments>
                <classpath />
                <argument>${java.version}</argument>
              </arguments>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-xpath</id>
      <properties>
        <jacoco.skip>true</jacoco.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <mutators>
                <mutator>CONDITIONALS_BOUNDARY</mutator>
                <mutator>CONSTRUCTOR_CALLS</mutator>
                <mutator>INCREMENTS</mutator>
                <!-- Read reason of disablement at https://github.com/checkstyle/checkstyle/issues/11895 -->
                <!-- <mutator>INLINE_CONSTS</mutator> -->
                <mutator>INVERT_NEGS</mutator>
                <mutator>MATH</mutator>
                <mutator>NEGATE_CONDITIONALS</mutator>
                <mutator>NON_VOID_METHOD_CALLS</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_IF</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_IF</mutator>
                <mutator>VOID_METHOD_CALLS</mutator>
                <mutator>EXPERIMENTAL_ARGUMENT_PROPAGATION</mutator>
                <mutator>EXPERIMENTAL_BIG_DECIMAL</mutator>
                <mutator>EXPERIMENTAL_BIG_INTEGER</mutator>
                <mutator>EXPERIMENTAL_MEMBER_VARIABLE</mutator>
                <mutator>EXPERIMENTAL_NAKED_RECEIVER</mutator>
                <mutator>REMOVE_INCREMENTS</mutator>
                <mutator>EXPERIMENTAL_SWITCH</mutator>
                <mutator>REMOVE_SWITCH</mutator>
                <mutator>FALSE_RETURNS</mutator>
                <mutator>TRUE_RETURNS</mutator>
                <mutator>EMPTY_RETURNS</mutator>
                <mutator>NULL_RETURNS</mutator>
                <mutator>PRIMITIVE_RETURNS</mutator>
              </mutators>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.xpath.*</param>
                <param>com.puppycrawl.tools.checkstyle.XpathFileGeneratorAuditListener*</param>
                <param>com.puppycrawl.tools.checkstyle.XpathFileGeneratorAstFilter*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.xpath.*</param>
                <param>com.puppycrawl.tools.checkstyle.XpathFileGeneratorAuditListenerTest</param>
                <param>com.puppycrawl.tools.checkstyle.XpathFileGeneratorAstFilterTest</param>
              </targetTests>
              <excludedTestClasses>
                <param>*.Input*</param>
              </excludedTestClasses>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>98</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
              <outputFormats>${pitest.plugin.output.formats}</outputFormats>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>pitest-java-ast-visitor</id>
      <properties>
        <jacoco.skip>true</jacoco.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <version>${pitest.plugin.version}</version>
            <configuration>
              <mutators>
                <mutator>CONDITIONALS_BOUNDARY</mutator>
                <mutator>CONSTRUCTOR_CALLS</mutator>
                <mutator>INCREMENTS</mutator>
                <!-- Read reason of disablement at https://github.com/checkstyle/checkstyle/issues/11895 -->
                <!-- <mutator>INLINE_CONSTS</mutator> -->
                <mutator>INVERT_NEGS</mutator>
                <mutator>MATH</mutator>
                <mutator>NEGATE_CONDITIONALS</mutator>
                <mutator>NON_VOID_METHOD_CALLS</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_EQUAL_IF</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_ELSE</mutator>
                <mutator>REMOVE_CONDITIONALS_ORDER_IF</mutator>
                <mutator>VOID_METHOD_CALLS</mutator>
                <mutator>EXPERIMENTAL_ARGUMENT_PROPAGATION</mutator>
                <mutator>EXPERIMENTAL_BIG_DECIMAL</mutator>
                <mutator>EXPERIMENTAL_BIG_INTEGER</mutator>
                <mutator>EXPERIMENTAL_MEMBER_VARIABLE</mutator>
                <mutator>EXPERIMENTAL_NAKED_RECEIVER</mutator>
                <mutator>REMOVE_INCREMENTS</mutator>
                <mutator>EXPERIMENTAL_SWITCH</mutator>
                <mutator>REMOVE_SWITCH</mutator>
                <mutator>FALSE_RETURNS</mutator>
                <mutator>TRUE_RETURNS</mutator>
                <mutator>EMPTY_RETURNS</mutator>
                <mutator>NULL_RETURNS</mutator>
                <mutator>PRIMITIVE_RETURNS</mutator>
              </mutators>
              <targetClasses>
                <param>com.puppycrawl.tools.checkstyle.JavaAstVisitor*</param>
              </targetClasses>
              <targetTests>
                <param>com.puppycrawl.tools.checkstyle.grammar.*</param>
                <param>com.puppycrawl.tools.checkstyle.JavaAstVisitorTest</param>
              </targetTests>
              <excludedTestClasses>
                <param>*.Input*</param>
              </excludedTestClasses>
              <coverageThreshold>100</coverageThreshold>
              <mutationThreshold>100</mutationThreshold>
              <timeoutFactor>${pitest.plugin.timeout.factor}</timeoutFactor>
              <timeoutConstant>${pitest.plugin.timeout.constant}</timeoutConstant>
              <threads>${pitest.plugin.threads}</threads>
              <outputFormats>${pitest.plugin.output.formats}</outputFormats>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
